From 49ff68d82af059d3bc890d1d3bfd7599bcd332fe Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 27 Jun 2024 18:54:42 -0400 Subject: [PATCH 001/213] Chainlink: Chainlink OCR Rewards (#255) --- ...nlink_ethereum_ocr_operator_admin_meta.sql | 159 ++++++++++++++++++ ...ct_chainlink_ethereum_ocr_reward_daily.sql | 75 +++++++++ ...nlink_ethereum_ocr_reward_evt_transfer.sql | 27 +++ ...ethereum_ocr_reward_evt_transfer_daily.sql | 25 +++ ..._ethereum_ocr_reward_transmission_logs.sql | 25 +++ 5 files changed, 311 insertions(+) create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..e40fd400 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql @@ -0,0 +1,159 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ocr_operator_admin_meta", + ) +}} + +{% set a01node = '01Node' %} +{% set tsystems = 'Deutsche Telekom MMS' %} +{% set alphachain = 'Alpha Chain' %} +{% set artifact = 'Artifact' %} +{% set bharvest = 'B Harvest' %} +{% set blockdaemon = 'Blockdaemon' %} +{% set blocksizecapital = 'Blocksize Capital' %} +{% set certusone = 'Certus One' %} +{% set chainlayer = 'Chainlayer' %} +{% set chainlink = 'Chainlink' %} +{% set chorusone = 'Chorus One' %} +{% set coinbase = 'Coinbase' %} +{% set cosmostation = 'Cosmostation' %} +{% set cryptomanufaktur = 'CryptoManufaktur' %} +{% set dmakers = 'dMakers' %} +{% set dextrac = 'DexTrac' %} +{% set dxfeed = 'dxFeed' %} +{% set easy2stake = 'Easy 2 stake' %} +{% set everstake = 'Everstake' %} +{% set fiews = 'Fiews' %} +{% set figmentnetworks = 'Figment Networks' %} +{% set frameworkventures = 'Framework Ventures' %} +{% set honeycomb = 'Honeycomb.market' %} +{% set huobi = 'Huobi' %} +{% set infinitystones = 'Infinity Stones' %} +{% set infura = 'Infura' %} +{% set inotel = 'Inotel' %} +{% set kaiko = 'Kaiko' %} +{% set kyber = 'Kyber' %} +{% set kytzu = 'Kytzu' %} +{% set lexisnexis = 'LexisNexis' %} +{% set linkforest = 'LinkForest' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set matrixedlink = 'Matrixed.Link' %} +{% set newroad = 'Newroad Network' %} +{% set nomics = 'Nomics.com' %} +{% set northwestnodes = 'NorthWest Nodes' %} +{% set omniscience = 'Omniscience' %} +{% set onchaintech = 'On-chain Tech' %} +{% set orionmoney = 'Orion.Money' %} +{% set p2porg = 'P2P.org' %} +{% set paradigm = 'Paradigm Citadel' %} +{% set piertwo = 'Pier Two' %} +{% set prophet = 'Prophet' %} +{% set rhino = 'RHINO' %} +{% set simplyvc = 'Simply VC' %} +{% set snzpool = 'SNZPool' %} +{% set stakefish = 'stake.fish' %} +{% set stakesystems = 'Stake Systems' %} +{% set staked = 'Staked' %} +{% set stakin = 'Stakin' %} +{% set stakingfacilities = 'Staking Facilities' %} +{% set swisscom = 'Swisscom' %} +{% set syncnode = 'SyncNode' %} +{% set thenetworkfirm = 'The Network Firm' %} +{% set tiingo = 'Tiingo' %} +{% set validationcloud = 'Validation Cloud' %} +{% set vulcan = 'Vulcan Link' %} +{% set wetez = 'Wetez' %} +{% set xbto = 'XBTO' %} +{% set youbi = 'Youbi' %} +{% set ztake = 'Ztake.org' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0x7A30E4B6307c0Db7AeF247A656b44d888B23a2DC', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0x89177B9c203bA0A9294aecf2f3806d98907bec6f', '{{tsystems}}'), + ('0xa5D0084A766203b463b3164DFc49D91509C12daB', '{{alphachain}}'), + ('0xfA3430d84324ABC9ac8AAf30B2D26260F5172ad0', '{{alphachain}}'), + ('0xba8Bcb4EB9a90D5A0eAe0098496703b49f909cB2', '{{artifact}}'), + ('0x6cDC3Efa3bAa392fAF3E5c1Ca802E15B6185E0e8', '{{bharvest}}'), + ('0x3615Fa045f00ae0eD60Dc0141911757c2AdC5E03', '{{blockdaemon}}'), + ('0x7CC60c9C24E9A290Db55b1017AF477E5c87a7550', '{{blocksizecapital}}'), + ('0xdF0df748c782f0B9A52aEcb223Bf60e23f261283', '{{certusone}}'), + ('0x8D689476EB446a1FB0065bFFAc32398Ed7F89165', '{{certusone}}'), + ('0x9D219125a0CE10241b4eC1280c2F880475f172f1', '{{chainlayer}}'), + ('0x56aCCE2EE3f86c0057C4ddfa7Bba1C8D99c83565', '{{chainlink}}'), + ('0x304D69727DD28ad6E1aa2c01Db301dB556C7b725', '{{chainlink}}'), + ('0x29fC5aACd613410b68c9c08d4e1656e3c890E482', '{{chorusone}}'), + ('0xb44A46a7B245D82e15F07Cb352Fd5f1d3dBF65F6', '{{coinbase}}'), + ('0x1B17eB8FAE3C28CB2463235F9D407b527ba4e6Dd', '{{cosmostation}}'), + ('0x59eCf48345A221E0731E785ED79eD40d0A94E2A5', '{{cryptomanufaktur}}'), + ('0x3b74c27115965ba74D695E3AEdb615F991F3f310', '{{dmakers}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0xb284a468522663F6219f2912ca10145B52b13503', '{{dxfeed}}'), + ('0x991812566f6E14897Fc1e401D24de19845c0442f', '{{dxfeed}}'), + ('0xFdC770353dC0bFCE80a17Ab8a6a2E7d80590f1Ba', '{{easy2stake}}'), + ('0x039fDFDb14911608a34eBCDa6009a80EF5D16e50', '{{everstake}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0x95c98112bd9635A3159518401Ae227D5a296e994', '{{figmentnetworks}}'), + ('0x6eF38c3d1D85B710A9e160aD41B912Cb8CAc2589', '{{frameworkventures}}'), + ('0x47adCDcaA250C257C6e4db6dD091C6A6739333C9', '{{honeycomb}}'), + ('0xC65c57A04e2cD361E7049f6c182ce1b62c7A92b3', '{{huobi}}'), + ('0xDFBfB73f3013bc1584CcAa0CD2D9621194aEd29B', '{{infinitystones}}'), + ('0xe6B12850b3979C50d221fb84d40FB94AeFBaB867', '{{infura}}'), + ('0xdD831352762e9de7ad5a264990e1bB9F87A6Fc21', '{{inotel}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0xaA71518e7895C933f60EB2F02359cC40Ad6ef670', '{{kaiko}}'), + ('0xAb5176dd2891dC01f5f8EC786263d85ee0690eC2', '{{kaiko}}'), + ('0x54919167e0389b07a99e7cE9F66F1fd9f8C75d77', '{{kyber}}'), + ('0x001E0d294383d5b4136476648aCc8D04a6461Ae3', '{{kytzu}}'), + ('0x57F7f85C151A8A96CC20fEa6a43622334C335fe4', '{{kytzu}}'), + ('0x098a4C7ceCbfb8534e5Ab3f9c8F6C87845Fc5109', '{{lexisnexis}}'), + ('0x4564A9c6061f6f1F2Eadb954B1b3C241D2DC984e', '{{linkforest}}'), + ('0x69f0fB5f300C45AfEbBBCd85E930EDBB142c0D48', '{{linkforest}}'), + ('0xD48fc6E2B73C2988fA50C994181C0CdCa850D62a', '{{linkforest}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xCa878CF4a27690637c07B39ae06D26f7679Be4FC', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0xe9E11963f61322299f9919ff1dda01a825E82dBC', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x4dc81f63CB356c1420D4620414f366794072A3a8', '{{matrixedlink}}'), + ('0xAB35418fB9f8B13E3e6857c36A0769b9F94a87EC', '{{newroad}}'), + ('0x425f682362b2b1032A212226a474Fa7D3703f2a8', '{{nomics}}'), + ('0x0921E157b690c4F89F7C2a210cFd8bF3964F6776', '{{northwestnodes}}'), + ('0x47044eE2F23001F8a03FB2f7d2ce6645aDA4D12A', '{{omniscience}}'), + ('0x70Ba986EF5a805A7019415eDF342eD4365331fF1', '{{omniscience}}'), + ('0x35DaC078fC9E6e45d89a6CBc78A776BA719b485D', '{{onchaintech}}'), + ('0xE2063AA95B35f8121A5E2f58BfE6a985270ABA77', '{{orionmoney}}'), + ('0xa0181758B14EfB2DAdfec66d58251Ae631e2B942', '{{orionmoney}}'), + ('0xCDa423ee5A7A886eF113b181469581306fC8B607', '{{p2porg}}'), + ('0xB45A43e998286ab3Be4106b4c381f01dccE772a4', '{{p2porg}}'), + ('0xfb390441fF968F7569cd6F3CF01cb7214DFeed31', '{{paradigm}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0xBDB624CD1051F687f116bB0c642330B2aBdfcc06', '{{prophet}}'), + ('0xDA80050Ed4F50033949608208f79EE43Ab91dF55', '{{rhino}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x9cCbFD17FA284f36c2ff503546160B256d1CD3D1', '{{snzpool}}'), + ('0x21F1dB6E4B5e1dF5c68bC1dfB58c28942Ed4737D', '{{stakefish}}'), + ('0x61C808D82A3Ac53231750daDc13c777b59310bD9', '{{stakefish}}'), + ('0xA68F8E34B775aA1f0c0E9028b13BdB481eCf486c', '{{stakesystems}}'), + ('0x87BCD34B45784081fda93a10797e2dB51B8466Aa', '{{staked}}'), + ('0x5823D12aD85Ef11f4e5508AB3559a37D87CF507A', '{{stakin}}'), + ('0xdD4Bc51496dc93A0c47008E820e0d80745476f22', '{{stakingfacilities}}'), + ('0xcc3F2FB70B5941FBdB9F97fD6Df6997A01229ecE', '{{swisscom}}'), + ('0xC51D3470693BC049809A1c515606124c7C75908d', '{{syncnode}}'), + ('0x7c9998a91AEA813Ea8340b47B27259D74896d136', '{{thenetworkfirm}}'), + ('0xfAE26207ab74ee528214ee92f94427f8Cdbb6A32', '{{tiingo}}'), + ('0x183A96629fF566e7AA8AfA38980Cd037EB40A59A', '{{validationcloud}}'), + ('0x7D0f8dd25135047967bA6C50309b567957dd52c3', '{{vulcan}}'), + ('0x4E28977d71f148ae2c523e8Aa4b6F3071d81Add1', '{{vulcan}}'), + ('0x111f1B41f702c20707686769a4b7f25c56C533B2', '{{wetez}}'), + ('0x0b16EC1044F60F03B0e815f863bd4d27638cbD0A', '{{xbto}}'), + ('0x3331452b9D6f76E35951f3B8C5881D5801f08612', '{{youbi}}'), + ('0x41EdD305eABFd3497C98341F8D0849F3C520b896', '{{ztake}}'), + ('0xC8c30Fa803833dD1Fd6DBCDd91Ed0b301EFf87cF', '{{ztake}}'), + ('0x9d69B0fcbcf9a7e513E947Cd7ce2019904e2E764', '{{ztake}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql new file mode 100644 index 00000000..8d3947f4 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql @@ -0,0 +1,75 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ocr_reward_daily", + ) +}} +with + admin_address_meta as ( + select distinct admin_address + from {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily + ) + , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , link_usd_daily_expanded_by_admin_address as ( + select + date as date_start + , price as usd_amount + , admin_address + from link_usd_daily + cross join admin_address_meta + order by + date_start + , admin_address + ) + , payment_meta as ( + select + date_start + , link_usd_daily_expanded_by_admin_address.admin_address as admin_address + , usd_amount + , ( + select + MAX(ocr_reward_evt_transfer_daily.date_start) + from + {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily + where ocr_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start + and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as prev_payment_date + , ( + select + min(ocr_reward_evt_transfer_daily.date_start) + from {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily + where ocr_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start + and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as next_payment_date + from link_usd_daily_expanded_by_admin_address + order by + 1, 2 + ) + , ocr_reward_daily as ( + select + payment_meta.date_start + , cast(date_trunc('month', payment_meta.date_start) as date) as date_month + , payment_meta.admin_address + , ocr_operator_admin_meta.operator_name + , COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + from payment_meta + left join {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily + on payment_meta.next_payment_date = ocr_reward_evt_transfer_daily.date_start + and lower(payment_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) + left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) + order by date_start + ) +select + 'ethereum' as chain + , date_start + , date_month + , admin_address + , operator_name + , token_amount + , usd_amount +from ocr_reward_daily +order by 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql new file mode 100644 index 00000000..2de91a51 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ocr_reward_evt_transfer", + ) +}} + + +select + 'ethereum' as chain + , reward_evt_transfer.to_address as admin_address + , max(operator_name) as operator_name + , max(reward_evt_transfer.block_timestamp) as evt_block_time + , max(reward_evt_transfer.amount) as token_value +from ethereum_flipside.core.ez_token_transfers reward_evt_transfer +right join {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }} ocr_reward_transmission_logs + on lower(ocr_reward_transmission_logs.contract_address) = lower(reward_evt_transfer.from_address) +left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta + on lower(ocr_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) +where lower(reward_evt_transfer.from_address) in (select lower(contract_address) from {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }}) +GROUP BY + reward_evt_transfer.tx_hash + , reward_evt_transfer.event_index + , reward_evt_transfer.to_address \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql new file mode 100644 index 00000000..fbd0725c --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql @@ -0,0 +1,25 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ocr_reward_evt_transfer_daily", + ) +}} + + +select + 'ethereum' as chain + , evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , ocr_reward_evt_transfer.admin_address as admin_address + , max(ocr_reward_evt_transfer.operator_name) as operator_name + , sum(token_value) as token_amount +from + {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer')}} ocr_reward_evt_transfer + left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer.admin_address) +group by + 2, 4 +order by + 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..8cd01c68 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql @@ -0,0 +1,25 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ocr_reward_transmission_logs", + ) +}} + +select + 'ethereum' as chain + , block_timestamp + , block_number + , tx_hash + , contract_address + , event_index + , event_name + , decoded_log + , tx_status +from ethereum_flipside.core.ez_decoded_event_logs +where topics[0]::string = '0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6' +{% if is_incremental() %} + and block_timestamp >= (select dateadd('day', -1, max(block_timestamp)) from {{ this }}) +{% endif %} \ No newline at end of file From 0bf087a1d3ad50489e6a667c90b2eb7fec027f28 Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Thu, 27 Jun 2024 19:43:25 -0400 Subject: [PATCH 002/213] Evm new balances tables (#256) --- .../arbitrum/agg_arbitrum_stablecoin_balances.sql | 9 +++++++++ .../avalanche/agg_avalanche_stablecoin_balances.sql | 9 +++++++++ .../agg_base_daily_stablecoin_metrics_breakdown.sql | 0 .../{ethereum => base}/agg_base_stablecoin_balances.sql | 0 models/staging/blast/agg_blast_stablecoin_balances.sql | 9 +++++++++ models/staging/bsc/agg_bsc_stablecoin_balances.sql | 9 +++++++++ .../optimism/agg_optimism_stablecoin_balances.sql | 9 +++++++++ .../staging/polygon/agg_polygon_stablecoin_balances.sql | 9 +++++++++ models/staging/tron/agg_tron_stablecoin_balances.sql | 9 +++++++++ 9 files changed, 63 insertions(+) create mode 100644 models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql create mode 100644 models/staging/avalanche/agg_avalanche_stablecoin_balances.sql rename models/staging/{ethereum => base}/agg_base_daily_stablecoin_metrics_breakdown.sql (100%) rename models/staging/{ethereum => base}/agg_base_stablecoin_balances.sql (100%) create mode 100644 models/staging/blast/agg_blast_stablecoin_balances.sql create mode 100644 models/staging/bsc/agg_bsc_stablecoin_balances.sql create mode 100644 models/staging/optimism/agg_optimism_stablecoin_balances.sql create mode 100644 models/staging/polygon/agg_polygon_stablecoin_balances.sql create mode 100644 models/staging/tron/agg_tron_stablecoin_balances.sql diff --git a/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql b/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql new file mode 100644 index 00000000..4405d4ce --- /dev/null +++ b/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("arbitrum") }} diff --git a/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql b/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql new file mode 100644 index 00000000..b0a5a988 --- /dev/null +++ b/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("avalanche") }} diff --git a/models/staging/ethereum/agg_base_daily_stablecoin_metrics_breakdown.sql b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql similarity index 100% rename from models/staging/ethereum/agg_base_daily_stablecoin_metrics_breakdown.sql rename to models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql diff --git a/models/staging/ethereum/agg_base_stablecoin_balances.sql b/models/staging/base/agg_base_stablecoin_balances.sql similarity index 100% rename from models/staging/ethereum/agg_base_stablecoin_balances.sql rename to models/staging/base/agg_base_stablecoin_balances.sql diff --git a/models/staging/blast/agg_blast_stablecoin_balances.sql b/models/staging/blast/agg_blast_stablecoin_balances.sql new file mode 100644 index 00000000..28edc881 --- /dev/null +++ b/models/staging/blast/agg_blast_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("blast") }} diff --git a/models/staging/bsc/agg_bsc_stablecoin_balances.sql b/models/staging/bsc/agg_bsc_stablecoin_balances.sql new file mode 100644 index 00000000..a8e97b05 --- /dev/null +++ b/models/staging/bsc/agg_bsc_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("bsc") }} diff --git a/models/staging/optimism/agg_optimism_stablecoin_balances.sql b/models/staging/optimism/agg_optimism_stablecoin_balances.sql new file mode 100644 index 00000000..a604ab9c --- /dev/null +++ b/models/staging/optimism/agg_optimism_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("optimism") }} diff --git a/models/staging/polygon/agg_polygon_stablecoin_balances.sql b/models/staging/polygon/agg_polygon_stablecoin_balances.sql new file mode 100644 index 00000000..8229b4c3 --- /dev/null +++ b/models/staging/polygon/agg_polygon_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("polygon") }} diff --git a/models/staging/tron/agg_tron_stablecoin_balances.sql b/models/staging/tron/agg_tron_stablecoin_balances.sql new file mode 100644 index 00000000..b2ac5583 --- /dev/null +++ b/models/staging/tron/agg_tron_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("tron") }} From 0b9aaf88defb6a91ee0551d5e734569cb151bd3f Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Thu, 27 Jun 2024 20:30:30 -0400 Subject: [PATCH 003/213] Use new warehouses for balances computation so we don't max out warehouse concurrency limit (#257) --- models/staging/optimism/agg_optimism_stablecoin_balances.sql | 2 +- models/staging/polygon/agg_polygon_stablecoin_balances.sql | 2 +- models/staging/tron/agg_tron_stablecoin_balances.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/models/staging/optimism/agg_optimism_stablecoin_balances.sql b/models/staging/optimism/agg_optimism_stablecoin_balances.sql index a604ab9c..a55bc13e 100644 --- a/models/staging/optimism/agg_optimism_stablecoin_balances.sql +++ b/models/staging/optimism/agg_optimism_stablecoin_balances.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="BALANCES_LG_2", ) }} diff --git a/models/staging/polygon/agg_polygon_stablecoin_balances.sql b/models/staging/polygon/agg_polygon_stablecoin_balances.sql index 8229b4c3..fe76a02e 100644 --- a/models/staging/polygon/agg_polygon_stablecoin_balances.sql +++ b/models/staging/polygon/agg_polygon_stablecoin_balances.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="BALANCES_LG_2", ) }} diff --git a/models/staging/tron/agg_tron_stablecoin_balances.sql b/models/staging/tron/agg_tron_stablecoin_balances.sql index b2ac5583..5ee57837 100644 --- a/models/staging/tron/agg_tron_stablecoin_balances.sql +++ b/models/staging/tron/agg_tron_stablecoin_balances.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="BALANCES_LG_2", ) }} From c5daf18c14ac29e4dd91383707a691b536c969c7 Mon Sep 17 00:00:00 2001 From: alexwes Date: Thu, 27 Jun 2024 21:19:49 -0400 Subject: [PATCH 004/213] adding vrf fees models (#258) --- ...ainlink_ethereum_vrf_request_fulfilled.sql | 32 ++++++++++++++++++ ...k_ethereum_vrf_request_fulfilled_daily.sql | 21 ++++++++++++ ...t_chainlink_ethereum_vrf_rewards_daily.sql | 33 +++++++++++++++++++ ..._ethereum_vrf_v1_random_fulfilled_logs.sql | 17 ++++++++++ ...nk_ethereum_vrf_v1_random_request_logs.sql | 19 +++++++++++ ..._ethereum_vrf_v2_random_fulfilled_logs.sql | 18 ++++++++++ 6 files changed, 140 insertions(+) create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql create mode 100644 models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql new file mode 100644 index 00000000..a686851a --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql @@ -0,0 +1,32 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_request_fulfilled", + ) +}} + + +SELECT + 'ethereum' as blockchain, + MAX(CAST(v1_request.fee AS double))/1e18 AS token_value, + MAX(v1_fulfilled.block_timestamp) as evt_block_time +FROM + {{ ref('fact_chainlink_ethereum_vrf_v1_random_request_logs') }} v1_request + INNER JOIN {{ ref('fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs') }} v1_fulfilled + ON v1_fulfilled.request_id = v1_request.request_id + GROUP BY + v1_request.tx_hash +UNION + +SELECT + 'ethereum' as blockchain, + MAX(CAST(v2_fulfilled.payment as double))/1e18 AS token_value, + MAX(v2_fulfilled.block_timestamp) as evt_block_time +FROM + {{ ref('fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs') }} v2_fulfilled + GROUP BY + v2_fulfilled.tx_hash, + v2_fulfilled.event_index \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql new file mode 100644 index 00000000..735cebdd --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql @@ -0,0 +1,21 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_request_fulfilled_daily", + ) +}} + + +SELECT + 'ethereum' as blockchain, + cast(date_trunc('day', evt_block_time) AS date) AS date_start, + SUM(token_value) as token_amount +FROM + {{ref('fact_chainlink_ethereum_vrf_request_fulfilled')}} vrf_request_fulfilled +GROUP BY + 2 +ORDER BY + 2 \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql new file mode 100644 index 00000000..3ffee266 --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_rewards_daily", + ) +}} + +WITH + link_usd_daily AS ( + {{get_coingecko_price_with_latest("chainlink")}} + ), + vrf_reward_daily AS ( + SELECT + vrf_daily.date_start, + COALESCE(vrf_daily.token_amount, 0) as token_amount, + COALESCE(vrf_daily.token_amount * lud.price, 0) as usd_amount + FROM + {{ref('fact_chainlink_ethereum_vrf_request_fulfilled_daily')}} vrf_daily + LEFT JOIN link_usd_daily lud ON lud.date = vrf_daily.date_start + ORDER BY date_start + ) +SELECT + 'ethereum' as blockchain, + date_start as date, + token_amount, + usd_amount +FROM + vrf_reward_daily +ORDER BY + 2 \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql new file mode 100644 index 00000000..7c655c1d --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_v1_random_fulfilled_logs", + ) +}} + +select + block_timestamp, + tx_hash, + GET_PATH(decoded_log, 'requestId') as request_id +from ethereum_flipside.core.ez_decoded_event_logs +where event_name = 'RandomnessRequestFulfilled' +and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql new file mode 100644 index 00000000..e21b2389 --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_v1_random_request_logs", + ) +}} + +select + block_timestamp, + tx_hash, + origin_from_address as tx_from, + CAST(GET_PATH(decoded_log,'fee') as double) as fee, + GET_PATH(decoded_log, 'requestID') as request_id +from ethereum_flipside.core.ez_decoded_event_logs +where event_name = 'RandomnessRequest' +and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql new file mode 100644 index 00000000..3bd44869 --- /dev/null +++ b/models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_v2_random_fulfilled_logs", + ) +}} + +select + block_timestamp, + tx_hash, + event_index, + GET_PATH(decoded_log, 'payment') as payment +from ethereum_flipside.core.ez_decoded_event_logs +where event_name = 'RandomWordsFulfilled' +and contract_address = '0x271682deb8c4e0901d1a1550ad2e64d568e69909' \ No newline at end of file From a3cdc251a7d7822a0b165ffd714c14ad47196982 Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Fri, 28 Jun 2024 12:03:15 -0400 Subject: [PATCH 005/213] Update unique key for Base (#260) --- .../base/agg_base_daily_stablecoin_metrics_breakdown.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql index bca1e689..9c39b780 100644 --- a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql @@ -1,7 +1,7 @@ {{ config( materialized="incremental", - unique_key=["date", "symbol", "from_address"], + unique_key=["date", "contract_address", "from_address"], snowflake_warehouse="BALANCES_LG", ) }} From 2e5ae9dc83bf7d25b2d5ce5c13e8d3084d8c7e59 Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Fri, 28 Jun 2024 14:19:35 -0400 Subject: [PATCH 006/213] Add metrics breakdown table for EVM chains (#259) --- .../dimensions/contracts/dim_base_contract_addresses.sql | 2 +- .../contracts/dim_blast_contract_addresses.sql | 8 ++++++++ .../dimensions/contracts/dim_bsc_contract_addresses.sql | 8 ++++++++ .../agg_arbitrum_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ .../agg_avalanche_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ .../agg_blast_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ .../bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ .../agg_optimism_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ .../agg_polygon_daily_stablecoin_metrics_breakdown.sql | 9 +++++++++ 9 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 models/dimensions/contracts/dim_blast_contract_addresses.sql create mode 100644 models/dimensions/contracts/dim_bsc_contract_addresses.sql create mode 100644 models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql diff --git a/models/dimensions/contracts/dim_base_contract_addresses.sql b/models/dimensions/contracts/dim_base_contract_addresses.sql index 309e139e..2fbe3ef5 100644 --- a/models/dimensions/contracts/dim_base_contract_addresses.sql +++ b/models/dimensions/contracts/dim_base_contract_addresses.sql @@ -5,4 +5,4 @@ ) }} -{{distinct_contract_addresses("base")}} \ No newline at end of file +{{distinct_contract_addresses("base")}} diff --git a/models/dimensions/contracts/dim_blast_contract_addresses.sql b/models/dimensions/contracts/dim_blast_contract_addresses.sql new file mode 100644 index 00000000..bf1419a0 --- /dev/null +++ b/models/dimensions/contracts/dim_blast_contract_addresses.sql @@ -0,0 +1,8 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="BLAST" + ) +}} + +{{distinct_contract_addresses("blast")}} diff --git a/models/dimensions/contracts/dim_bsc_contract_addresses.sql b/models/dimensions/contracts/dim_bsc_contract_addresses.sql new file mode 100644 index 00000000..4155ec02 --- /dev/null +++ b/models/dimensions/contracts/dim_bsc_contract_addresses.sql @@ -0,0 +1,8 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="BSC" + ) +}} + +{{distinct_contract_addresses("bsc")}} diff --git a/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql b/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..0a95d9d6 --- /dev/null +++ b/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("arbitrum") }} diff --git a/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql b/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..56a9bf83 --- /dev/null +++ b/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG_2", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("avalanche") }} diff --git a/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql b/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..fa85c865 --- /dev/null +++ b/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG_2", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("blast") }} diff --git a/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql b/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..06951b30 --- /dev/null +++ b/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("bsc") }} diff --git a/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql b/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..e65a842b --- /dev/null +++ b/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG_2", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("optimism") }} diff --git a/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql b/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..fe333011 --- /dev/null +++ b/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="BALANCES_LG_2", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("polygon") }} From ada6354bdba25bd34b84c4cb1dc503727887f5fc Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Fri, 28 Jun 2024 15:17:11 -0400 Subject: [PATCH 007/213] Increase time window of Near DAU adjusted calc (#263) --- macros/metrics/get_fundamental_data_for_chain.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/metrics/get_fundamental_data_for_chain.sql b/macros/metrics/get_fundamental_data_for_chain.sql index 8b38315d..78071af5 100644 --- a/macros/metrics/get_fundamental_data_for_chain.sql +++ b/macros/metrics/get_fundamental_data_for_chain.sql @@ -16,7 +16,7 @@ truncated_near_fact_txns as ( select * from near_flipside.core.fact_transactions - where block_timestamp > current_date() - interval '60 days' + where block_timestamp > current_date() - interval '300 days' ), fact_transactions_delegate_extracted as ( select From 12011131d6f1deeef693182bf96960b6d70f864f Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:58:59 -0400 Subject: [PATCH 008/213] Chainlink: Adding Chainlink Models (#261) --- ...dim_chainlink_ethereum_automation_meta.sql | 68 ++++ ...im_chainlink_ethereum_ccip_onramp_meta.sql | 33 ++ ...dim_chainlink_ethereum_ccip_token_meta.sql | 18 + ...link_ethereum_ocr_operator_admin_meta.sql} | 2 +- ..._ethereum_price_feeds_oracle_addresses.sql | 366 ++++++++++++++++++ ...hainlink_ethereum_automation_performed.sql | 23 ++ ...nk_ethereum_automation_performed_daily.sql | 22 ++ ...nlink_ethereum_automation_reward_daily.sql | 35 ++ ...ereum_automation_upkeep_performed_logs.sql | 22 ++ ...t_chainlink_ethereum_ccip_reward_daily.sql | 55 +++ ...chainlink_ethereum_ccip_send_requested.sql | 50 +++ ...ink_ethereum_ccip_send_requested_daily.sql | 22 ++ ...k_ethereum_ccip_send_requested_logs_v1.sql | 27 ++ ...ethereum_ccip_send_requested_logs_v1_2.sql | 27 ++ ...act_chainlink_ethereum_fm_reward_daily.sql | 76 ++++ ...inlink_ethereum_fm_reward_evt_transfer.sql | 23 ++ ..._ethereum_fm_reward_evt_transfer_daily.sql | 23 ++ ...ct_chainlink_ethereum_ocr_reward_daily.sql | 2 +- ...nlink_ethereum_ocr_reward_evt_transfer.sql | 2 +- ...ethereum_ocr_reward_evt_transfer_daily.sql | 2 +- ...act_chainlink_ethereum_staking_rewards.sql | 64 +++ 21 files changed, 958 insertions(+), 4 deletions(-) create mode 100644 models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql create mode 100644 models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql rename models/projects/chainlink/prod_raw/{fact_chainlink_ethereum_ocr_operator_admin_meta.sql => dim_chainlink_ethereum_ocr_operator_admin_meta.sql} (99%) create mode 100644 models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_staking_rewards.sql diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql new file mode 100644 index 00000000..b2ea5729 --- /dev/null +++ b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql @@ -0,0 +1,68 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_ethereum_automation_meta" + ) +}} + +{% set _01node = '01node' %} +{% set alphachain = 'alphachain' %} +{% set anyblock = 'anyblock' %} +{% set chainlayer = 'chainlayer' %} +{% set cryptomanufaktur = 'cryptomanufaktur' %} +{% set dextrac = 'dextrac' %} +{% set fiews = 'fiews' %} +{% set inotel = 'inotel' %} +{% set linkforest = 'linkforest' %} +{% set linkpool = 'linkpool' %} +{% set linkriver = 'linkriver' %} +{% set piertwo = 'piertwo' %} +{% set simplyvc = 'simplyvc' %} +{% set snzpool = 'snzpool' %} +{% set syncnode = 'syncnode' %} + +SELECT + 'ethereum' AS blockchain, + operator_name, + keeper_address +FROM (VALUES + ('{{_01node}}', '0x5428D5Ef94E5998d39613ADCf2f523Cee6f6fb45'), + ('{{_01node}}', '0x4b247AFfe9c4CE6bF05e4A3204ea261288bB4156'), + ('{{alphachain}}', '0x18cBe724E7C248cdA2803F48D1EA6d019623b5cC'), + ('{{alphachain}}', '0xB9B28c3341A88005E421612996BD69A86550909d'), + ('{{anyblock}}', '0xa7b2Cf222d287D568E24085E514d4b197759394f'), + ('{{anyblock}}', '0x0CE0d98B1FFC1E670e4A68a4B809733884C43174'), + ('{{chainlayer}}', '0x72855d64b7EB20379cbd9AB826c0a35DCE33f375'), + ('{{chainlayer}}', '0xaEDcB41619D651dcB0ACF7652127Fc1C66776136'), + ('{{chainlayer}}', '0xA6723Be6bbf6991c8b2dd56e38b82fe2a945aadc'), + ('{{cryptomanufaktur}}', '0x3824b7a9C6d4Ea93456DF9B07df4fFDB37FFBcbf'), + ('{{cryptomanufaktur}}', '0x7cb9ff1Ad03DB9D6CCBF99c2A1da872218467612'), + ('{{dextrac}}', '0x33512418380F170e5752Fc233F1326f3e805eA62'), + ('{{dextrac}}', '0x79A4e2666554bF0d47854df60dEaA2636c3E7423'), + ('{{fiews}}', '0x98924befaA16b607b3E168b6C57C9528AF5CC076'), + ('{{fiews}}', '0x354B6380aD551B805d4910FF1827FC71102dDBCd'), + ('{{fiews}}', '0x4ef3c3dC7fBd1eda22e6F85241Bd22f2C2013721'), + ('{{inotel}}', '0x083b4cC0DB892160DC5928066D294ba8D4220830'), + ('{{inotel}}', '0x8Ad2f5C3e80db1B1e60c13F1D68Fb71807E665DA'), + ('{{inotel}}', '0x476e1Cd47944E6EC43B1Fdae606C312544C79569'), + ('{{linkforest}}', '0x5C581b8c0961F93543112bf1Ffa27C1cA166e0e5'), + ('{{linkforest}}', '0x6E0BD9b8AD35fDc17a6DEf7CF81B5067B7FaA72f'), + ('{{linkforest}}', '0x9ae266Da46F55b48bD85B18B441FEC15ca07Eb8b'), + ('{{linkpool}}', '0x836cDB9041b442c11c85442A4E5a87aB3dcc0a5F'), + ('{{linkpool}}', '0xFc79eB954321f2e63E29AcbCd46e0e63374923ff'), + ('{{linkpool}}', '0x72B8fD3eb0c08275b8B60F96aAb0C8a50Cb80EcA'), + ('{{linkriver}}', '0xE48f40fBc76cbA315F99Fd5Ba08AfA2f00B8E074'), + ('{{linkriver}}', '0xd835f40d4719d96E7a000003276786f8Ab50a4A7'), + ('{{linkriver}}', '0x31DB4c2360d0fE6881c9015b11a93f4E7e78a3b0'), + ('{{piertwo}}', '0x5Cc9b29c498cE52D6aFEFE1AAB7dEbf54A71E754'), + ('{{simplyvc}}', '0xF12571de5A310008F1B7490F1aAf52de11325cC8'), + ('{{simplyvc}}', '0x77d189d2fD02053978B2E0dc959A6A5536084813'), + ('{{simplyvc}}', '0xf8AF3C8D4CEaf3c5a94Fa1a9384a0ef197FD50e5'), + ('{{snzpool}}', '0x0Fd40853B3B8c7805158b862B76B35A2a27B596A'), + ('{{snzpool}}', '0xaD221f4A2D705CDe03c594beab517CecBDA6727d'), + ('{{syncnode}}', '0x86C5d9efB1377DbA0535Cf944Bd6F5736c4290cB'), + ('{{syncnode}}', '0xA6dBdafa187eDDc4D7A9D8E6B9A2D3F46ee30d24') +) a (operator_name, keeper_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql new file mode 100644 index 00000000..7fd8327f --- /dev/null +++ b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_ethereum_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES +('optimism', '0xCC19bC4D43d17eB6859F0d22BA300967C97780b0', '3734403246176062136', 'v1.0.0') +, ('polygon', '0x0f27c8532457b66D6037141DEB0ed479Dad04B3c', '4051577828743386545', 'v1.0.0') +, ('arbitrum', '0x333f976915195ba9044fD0cd603cEcE936f6264e', '4949039107694359620', 'v1.0.0') +, ('avalanche_c', '0xd0B5Fc9790a6085b048b8Aa1ED26ca2b3b282CF2', '6433500567565415381', 'v1.0.0') +, ('base', '0xe2Eb229e88F56691e96bb98256707Bc62160FE73', '15971525489660198786', 'v1.0.0') +, ('bnb', '0xdF1d7FD22aC3aB5171E275796f123224039f3b24', '11344663589394136015', 'v1.0.0') +, ('optimism', '0x86B47d8411006874eEf8E4584BdFD7be8e5549d1', '3734403246176062136', 'v1.2.0') +, ('polygon', '0x35F0ca9Be776E4B38659944c257bDd0ba75F1B8B', '4051577828743386545', 'v1.2.0') +, ('arbitrum', '0x925228D7B82d883Dde340A55Fe8e6dA56244A22C', '4949039107694359620', 'v1.2.0') +, ('avalanche_c', '0x3df8dAe2d123081c4D5E946E655F7c109B9Dd630', '6433500567565415381', 'v1.2.0') +, ('base', '0xe2c2AB221AA0b957805f229d2AA57fBE2f4dADf7', '15971525489660198786', 'v1.2.0') +, ('bnb', '0x91D25A56Db77aD5147437d8B83Eb563D46eBFa69', '11344663589394136015', 'v1.2.0') +, ('wemix', '0xCbE7e5DA76dC99Ac317adF6d99137005FDA4E2C4', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql new file mode 100644 index 00000000..347aec04 --- /dev/null +++ b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_ethereum_ccip_token_meta", + ) +}} + +select + 'ethereum' as chain + , token_contract + , token_symbol +FROM (VALUES + ('0x514910771AF9Ca656af840dff83E8264EcF986CA', 'LINK'), + ('0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', 'WETH') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ocr_operator_admin_meta.sql similarity index 99% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql rename to models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ocr_operator_admin_meta.sql index e40fd400..15c8d58b 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_operator_admin_meta.sql +++ b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ocr_operator_admin_meta.sql @@ -4,7 +4,7 @@ snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", - alias="fact_ethereum_ocr_operator_admin_meta", + alias="dim_ethereum_ocr_operator_admin_meta" ) }} diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..e619c3a9 --- /dev/null +++ b/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql @@ -0,0 +1,366 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_ethereum_price_feeds_oracle_addresses", + ) +}} + +{% set aapl_usd = 'AAPL / USD' %} +{% set aave_usd = 'AAVE / USD' %} +{% set alcx_usd = 'ALCX / USD' %} +{% set ape_eth = 'APE / ETH' %} +{% set ape_usd = 'APE / USD' %} +{% set apy_tvl = 'APY TVL' %} +{% set atom_eth = 'ATOM / ETH' %} +{% set atom_usd = 'ATOM / USD' %} +{% set audio_usd = 'AUDIO / USD' %} +{% set axs_eth = 'AXS / ETH' %} +{% set azuki_floor_price_eth = 'Azuki Floor Price / ETH' %} +{% set bal_usd = 'BAL / USD' %} +{% set band_eth = 'BAND / ETH' %} +{% set bat_eth = 'BAT / ETH' %} +{% set bat_usd = 'BAT / USD' %} +{% set beanz_official_floor_price = 'BEANZ Official Floor Price' %} +{% set bit_usd = 'BIT / USD' %} +{% set bnb_usd = 'BNB / USD' %} +{% set bond_eth = 'BOND / ETH' %} +{% set boring_usd = 'BORING / USD' %} +{% set btc_usd = 'BTC / USD' %} +{% set btc_interest_rate_benchmark_curve_1_day = 'BTC Interest Rate Benchmark Curve 1 Day' %} +{% set btc_interest_rate_benchmark_curve_1_month = 'BTC Interest Rate Benchmark Curve 1 Month' %} +{% set btc_interest_rate_benchmark_curve_1_week = 'BTC Interest Rate Benchmark Curve 1 Week' %} +{% set btc_interest_rate_benchmark_curve_2_month = 'BTC Interest Rate Benchmark Curve 2 Month' %} +{% set btc_interest_rate_benchmark_curve_2_week = 'BTC Interest Rate Benchmark Curve 2 Week' %} +{% set btc_interest_rate_benchmark_curve_3_month = 'BTC Interest Rate Benchmark Curve 3 Month' %} +{% set btc_interest_rate_benchmark_curve_3_week = 'BTC Interest Rate Benchmark Curve 3 Week' %} +{% set btc_interest_rate_benchmark_curve_4_month = 'BTC Interest Rate Benchmark Curve 4 Month' %} +{% set btc_interest_rate_benchmark_curve_5_month = 'BTC Interest Rate Benchmark Curve 5 Month' %} +{% set bored_ape_yacht_club_floor_price_eth = 'Bored Ape Yacht Club Floor Price / ETH' %} +{% set cake_usd = 'CAKE / USD' %} +{% set cbeth_eth = 'CBETH / ETH' %} +{% set cel_eth = 'CEL / ETH' %} +{% set celo_eth = 'CELO / ETH' %} +{% set comp_usd = 'COMP / USD' %} +{% set cream_eth = 'CREAM / ETH' %} +{% set cro_usd = 'CRO / USD' %} +{% set cspr_usd = 'CSPR / USD' %} +{% set cspx_usd = 'CSPX / USD' %} +{% set ctsi_eth = 'CTSI / ETH' %} +{% set cv_index = 'CV / Index' %} +{% set cvx_eth = 'CVX / ETH' %} +{% set cvx_usd = 'CVX / USD' %} +{% set cachegold_por_usd = 'CacheGold PoR USD' %} +{% set calculated_xsushi_eth = 'Calculated XSUSHI / ETH' %} +{% set calculated_xsushi_usd = 'Calculated XSUSHI / USD' %} +{% set clonex_floor_price = 'CloneX Floor Price' %} +{% set consumer_price_index = 'Consumer Price Index' %} +{% set coolcats_floor_price = 'CoolCats Floor Price' %} +{% set cryptopunks_floor_price_eth = 'CryptoPunks Floor Price / ETH' %} +{% set cryptoadz_floor_price = 'Cryptoadz Floor Price' %} +{% set dai_usd = 'DAI / USD' %} +{% set dodo_usd = 'DODO / USD' %} +{% set dpi_eth = 'DPI / ETH' %} +{% set dpi_usd = 'DPI / USD' %} +{% set dydx_usd = 'DYDX / USD' %} +{% set doodles_floor_price = 'Doodles Floor Price' %} +{% set enj_usd = 'ENJ / USD' %} +{% set ens_usd = 'ENS / USD' %} +{% set eos_usd = 'EOS / USD' %} +{% set ern_usd = 'ERN / USD' %} +{% set eth_btc = 'ETH / BTC' %} +{% set eth_usd = 'ETH / USD' %} +{% set eurt_usd = 'EURT / USD' %} +{% set farm_eth = 'FARM / ETH' %} +{% set fei_usd = 'FEI / USD' %} +{% set fil_eth = 'FIL / ETH' %} +{% set flow_usd = 'FLOW / USD' %} +{% set for_usd = 'FOR / USD' %} +{% set forth_usd = 'FORTH / USD' %} +{% set fox_usd = 'FOX / USD' %} +{% set frax_eth = 'FRAX / ETH' %} +{% set fast_gas_gwei = 'Fast Gas / Gwei' %} +{% set fluent_us_por = 'Fluent US+ PoR' %} +{% set gbpt_por = 'GBPT PoR' %} +{% set gho_usd = 'GHO / USD' %} +{% set glm_usd = 'GLM / USD' %} +{% set grt_eth = 'GRT / ETH' %} +{% set gtc_eth = 'GTC / ETH' %} +{% set gusd_eth = 'GUSD / ETH' %} +{% set gusd_usd = 'GUSD / USD' %} +{% set hbtc_por = 'HBTC PoR' %} +{% set high_usd = 'HIGH / USD' %} +{% set ib01_usd = 'IB01 / USD' %} +{% set ibta_usd = 'IBTA / USD' %} +{% set idr_usd = 'IDR / USD' %} +{% set ilv_eth = 'ILV / ETH' %} +{% set imx_usd = 'IMX / USD' %} +{% set inj_usd = 'INJ / USD' %} +{% set iotx_usd = 'IOTX / USD' %} +{% set jpegd_azuki_floor_price_eth = 'JPEGd Azuki Floor Price ETH' %} +{% set jpegd_bored_ape_floor_price_eth = 'JPEGd Bored Ape Floor Price ETH' %} +{% set jpegd_bored_ape_kennel_club_floor_price_eth = 'JPEGd Bored Ape Kennel Club Floor Price ETH' %} +{% set jpegd_chromie_floor_price_eth = 'JPEGd Chromie Floor Price ETH' %} +{% set jpegd_clonex_floor_price_eth = 'JPEGd CloneX Floor Price ETH' %} +{% set jpegd_cryptopunks_floor_price_eth = 'JPEGd Cryptopunks Floor Price ETH' %} +{% set jpegd_doodle_floor_price_eth = 'JPEGd Doodle Floor Price ETH' %} +{% set jpegd_fidenza_floor_price_eth = 'JPEGd Fidenza Floor Price ETH' %} +{% set jpegd_meebits_floor_price_eth = 'JPEGd Meebits Floor Price ETH' %} +{% set jpegd_milady_floor_price_eth = 'JPEGd Milady Floor Price ETH' %} +{% set jpegd_mutant_ape_floor_price_eth = 'JPEGd Mutant Ape Floor Price ETH' %} +{% set jpegd_otherdeed_floor_price_eth = 'JPEGd Otherdeed Floor Price ETH' %} +{% set jpegd_otherside_koda_floor_price_eth = 'JPEGd Otherside Koda Floor Price ETH' %} +{% set jpegd_pudgy_penguins_floor_price_eth = 'JPEGd Pudgy Penguins Floor Price ETH' %} +{% set jpegd_ringers_floor_price_eth = 'JPEGd Ringers Floor Price ETH' %} +{% set krw_usd = 'KRW / USD' %} +{% set ksm_usd = 'KSM / USD' %} +{% set link_usd = 'LINK / USD' %} +{% set lon_eth = 'LON / ETH' %} +{% set lrc_eth = 'LRC / ETH' %} +{% set lusd_usd = 'LUSD / USD' %} +{% set mana_usd = 'MANA / USD' %} +{% set matic_usd = 'MATIC / USD' %} +{% set mayc_floor_price = 'MAYC Floor Price' %} +{% set mim_usd = 'MIM / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set msft_usd = 'MSFT / USD' %} +{% set metis_healthcheck = 'Metis Healthcheck' %} +{% set moonbirds_floor_price = 'Moonbirds Floor Price' %} +{% set nexus_weth_reserves = 'Nexus wETH Reserves' %} +{% set ohm_eth = 'OHM / ETH' %} +{% set ohmv2_eth = 'OHMv2 / ETH' %} +{% set optimism_healthcheck = 'Optimism Healthcheck' %} +{% set otherdeed_for_otherside_floor_price = 'Otherdeed for Otherside Floor Price' %} +{% set perp_usd = 'PERP / USD' %} +{% set pha_usd = 'PHA / USD' %} +{% set pudgy_penguins_floor_price = 'Pudgy Penguins Floor Price' %} +{% set rai_usd = 'RAI / USD' %} +{% set rari_eth = 'RARI / ETH' %} +{% set ren_usd = 'REN / USD' %} +{% set rep_eth = 'REP / ETH' %} +{% set req_usd = 'REQ / USD' %} +{% set reth_eth = 'RETH / ETH' %} +{% set rpl_usd = 'RPL / USD' %} +{% set rsr_usd = 'RSR / USD' %} +{% set shib_eth = 'SHIB / ETH' %} +{% set shv_usd = 'SHV / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set spell_usd = 'SPELL / USD' %} +{% set stbt_por = 'STBT PoR' %} +{% set steth_eth = 'STETH / ETH' %} +{% set steth_usd = 'STETH / USD' %} +{% set stg_usd = 'STG / USD' %} +{% set sushi_usd = 'SUSHI / USD' %} +{% set swell_eth_por = 'Swell ETH PoR' %} +{% set synthetix_aggregator_debt_ratio = 'Synthetix Aggregator Debt Ratio' %} +{% set synthetix_aggregator_issued_synths = 'Synthetix Aggregator Issued Synths' %} +{% set tusd_usd = 'TUSD / USD' %} +{% set tusd_por = 'TUSD PoR' %} +{% set tusd_reserves = 'TUSD Reserves' %} +{% set total_marketcap_usd = 'Total Marketcap / USD' %} +{% set uma_eth = 'UMA / ETH' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdd_usd = 'USDD / USD' %} +{% set usdp_usd = 'USDP / USD' %} +{% set ust_eth = 'UST / ETH' %} +{% set ust_usd = 'UST / USD' %} +{% set veefriends_floor_price = 'VeeFriends Floor Price' %} +{% set wbtc_btc = 'WBTC / BTC' %} +{% set wbtc_por = 'WBTC PoR' %} +{% set wing_usd = 'WING / USD' %} +{% set world_of_women_floor_price = 'World of Women Floor Price' %} +{% set xcn_usd = 'XCN / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set zrx_usd = 'ZRX / USD' %} +{% set efil_por = 'eFIL PoR' %} + + +SELECT + 'ethereum' as blockchain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{aapl_usd}}', 8, '0x139C8512Cde1778e9b9a8e721ce1aEbd4dD43587', '0xc697FCA98f961169B53e80b718155b55fc1a17d5'), + ('{{aave_usd}}', 8, '0x547a514d5e3769680Ce22B2361c10Ea13619e8a9', '0x8116B273cD75d79C382aFacc706659DEd5E0a59d'), + ('{{alcx_usd}}', 8, '0xc355e4C0B3ff4Ed0B49EaACD55FE29B311f42976', '0xb49322fF269d67A5aF0718C19463eC9EE7BF821E'), + ('{{ape_eth}}', 18, '0xc7de7f4d4C9c991fF62a07D18b3E31e349833A18', '0x72002129A3834d63C57d157DDF069deE37b08F24'), + ('{{ape_usd}}', 8, '0xD10aBbC76679a20055E167BB80A24ac851b37056', '0xa99999b1475F24037e8b6947aBBC7710676E77dd'), + ('{{apy_tvl}}', 8, '0xDb299D394817D8e7bBe297E84AFfF7106CF92F5f', '0x953DA51613067981ff15695695994DD8B1310F6d'), + ('{{atom_eth}}', 18, '0x15c8eA24Ba2d36671Fa22aD4Cff0a8eafe144352', '0x2E3Bc7624a3B44954b53e08c436be44f7f16fD00'), + ('{{atom_usd}}', 8, '0xDC4BDB458C6361093069Ca2aD30D74cc152EdC75', '0x736E09DE064A2a461F197643A26bC1ab7Dc4D5D3'), + ('{{audio_usd}}', 8, '0xBf739E677Edf6cF3408857404746cAcfd7120EB2', '0xd9B4Ac554e3eefE84Ae80F5Dee0D45926233160b'), + ('{{axs_eth}}', 18, '0x8B4fC5b68cD50eAc1dD33f695901624a4a1A0A8b', '0x16423B2B6873225e26564b182b3318aFCdBFcade'), + ('{{azuki_floor_price_eth}}', 18, '0xA8B9A447C73191744D5B79BcE864F343455E1150', '0xF0c3668756b9d9590B334768640FC5ACA02aE739'), + ('{{bal_usd}}', 8, '0xdF2917806E30300537aEB49A7663062F4d1F2b5F', '0xbd9350a3a2fd6e3Ad0a053a567f2609a1bf6c505'), + ('{{band_eth}}', 18, '0x0BDb051e10c9718d1C29efbad442E88D38958274', '0xDF9F750A94bF2Faea84Ab783927290FE5e0F7606'), + ('{{bat_eth}}', 18, '0x0d16d4528239e9ee52fa531af613AcdB23D88c94', '0x821f24DAcA9Ad4910c1EdE316D2713fC923Da698'), + ('{{bat_usd}}', 8, '0x9441D7556e7820B5ca42082cfa99487D56AcA958', '0x98E3F1BE8E0609Ac8a7681f23e15B696F8e8204d'), + ('{{beanz_official_floor_price}}', 18, '0xA97477aB5ab6ED2f6A2B5Cbe59D71e88ad334b90', '0x844962E9c0D7033a1EC9d5931bA8DC9dED265a2B'), + ('{{bit_usd}}', 8, '0x7b33EbfA52F215a30FaD5a71b3FeE57a4831f1F0', '0x382db44bCfb92C398b93e5fF6Cc100FC321140c9'), + ('{{bnb_usd}}', 8, '0x14e613AC84a31f709eadbdF89C6CC390fDc9540A', '0xC45eBD0F901bA6B2B8C7e70b717778f055eF5E6D'), + ('{{bond_eth}}', 18, '0xdd22A54e05410D8d1007c38b5c7A3eD74b855281', '0x5667eE03110045510897aDa33DC561cEfCBcC904'), + ('{{boring_usd}}', 8, '0xde9299851FaC41c6AA43Ec96Cd33C28F74837AA9', '0x37674e9881f173D4f5441e6Fc7ed3C6Cf57435ce'), + ('{{btc_usd}}', 8, '0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c', '0xdBe1941BFbe4410D6865b9b7078e0b49af144D2d'), + ('{{btc_interest_rate_benchmark_curve_1_day}}', 8, '0x1d32df460AE5D738A88Faa44DDA2cA3764627461', '0x07e853CB12096d94d1F3325C472de72eC7D32Efa'), + ('{{btc_interest_rate_benchmark_curve_1_month}}', 8, '0x4C01bcfb622F9aF8053E013e18373E50e6e8632E', '0xa3EA205d5Bc7cd3045A373B1127d35bfe9A7a24d'), + ('{{btc_interest_rate_benchmark_curve_1_week}}', 8, '0xAB4D1bc99781A445BC1D065663d9A831f787124e', '0x042F058fE42DDc70Ba8B70264946849FC0BaA4dE'), + ('{{btc_interest_rate_benchmark_curve_2_month}}', 8, '0x96284a8f283aEE951f359f44006C2d1b72e85957', '0xc76781509F9fa4d5ED045077d968cacB11E25fB0'), + ('{{btc_interest_rate_benchmark_curve_2_week}}', 8, '0x5cB4280b9ca8B0363aA4f4ef609dF403e522ea67', '0xb28AbeE6624b82c3c81A2e89E246c32A84110918'), + ('{{btc_interest_rate_benchmark_curve_3_month}}', 8, '0x9320f0429180ce49C6D4d10A4633c8c92cdb53cB', '0xE4D550E7C0b9Cc23d25270194EEbC3A00ec1Ec04'), + ('{{btc_interest_rate_benchmark_curve_3_week}}', 8, '0x37260ecF9Eb9AB1F813909a25CC8ADde99eD00fa', '0xC509a3D253931b59Ddb3206c78A7bdCc53D221D4'), + ('{{btc_interest_rate_benchmark_curve_4_month}}', 8, '0x775a0B15042ceE8925D3D81481c7b94ffBfc24a7', '0xACDA9f64e45a7247718fe7Ee60Ee41f74C17404f'), + ('{{btc_interest_rate_benchmark_curve_5_month}}', 8, '0x05140252A265F2817aF6caF4a7F79a77F87E0a7c', '0x2D9f12a41A3402129d921888B09C08D72e97109d'), + ('{{bored_ape_yacht_club_floor_price_eth}}', 18, '0x352f2Bc3039429fC2fe62004a1575aE74001CfcE', '0x6DBD8100fBbfF754831Aa90A53c466d431651885'), + ('{{cake_usd}}', 8, '0xEb0adf5C06861d6c07174288ce4D0a8128164003', '0x1C026C25271c1bFbA95B65c848F734a23eA62D4e'), + ('{{cbeth_eth}}', 18, '0xF017fcB346A1885194689bA23Eff2fE6fA5C483b', '0xd74FF3f1b565597E59D44320F53a5C5c8BA85f7b'), + ('{{cel_eth}}', 18, '0x75FbD83b4bd51dEe765b2a01e8D3aa1B020F9d33', '0xd0BB178dEdC71470BA68380CBd99c4A963d01507'), + ('{{celo_eth}}', 18, '0x9ae96129ed8FE0C707D6eeBa7b90bB1e139e543e', '0xffDb505cAd574AF3B73e0f4005CcF54a2da100ae'), + ('{{comp_usd}}', 8, '0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5', '0x64d2E1F01A19762dDEE27b1062CC092B66Ff9652'), + ('{{cream_eth}}', 18, '0x82597CFE6af8baad7c0d441AA82cbC3b51759607', '0xf8efB55FbF6E7f48637561182dac1Ef09F38d767'), + ('{{cro_usd}}', 8, '0x00Cb80Cf097D9aA9A3779ad8EE7cF98437eaE050', '0xb2aD164c008Da54FCEaC79Ef18C0a8fE2d935865'), + ('{{cspr_usd}}', 8, '0x9e37a8Ee3bFa8eD6783Db031Dc458d200b226074', '0x30F3037f0E13d6bdeD3c5B7809994F47e9656b4a'), + ('{{cspx_usd}}', 8, '0xF4E1B57FB228879D057ac5AE33973e8C53e4A0e0', '0x9aB931c33E0a21689A823d60e625B57EF1faa9C8'), + ('{{ctsi_eth}}', 18, '0x0a1d1b9847d602e789be38B802246161FFA24930', '0x720192921a4b6fb026fA52bf03F991b65b740147'), + ('{{cv_index}}', 18, '0x1B58B67B2b2Df71b4b0fb6691271E83A0fa36aC5', '0xAC28f6D70c6C6d5089e506eFb80624B8ECb666F8'), + ('{{cvx_eth}}', 18, '0xC9CbF687f43176B302F03f5e58470b77D07c61c6', '0xf1F7F7BFCc5E9D6BB8D9617756beC06A5Cbe1a49'), + ('{{cvx_usd}}', 8, '0xd962fC30A72A84cE50161031391756Bf2876Af5D', '0x8d73Ac44Bf11CadCDc050BB2BcCaE8c519555f1a'), + ('{{cachegold_por_usd}}', 8, '0x5586bF404C7A22A4a4077401272cE5945f80189C', '0x6CeA38508B186DE36AAfd0f3B513E708691bc0C4'), + ('{{calculated_xsushi_eth}}', 18, '0xF05D9B6C08757EAcb1fbec18e36A1B7566a13DEB', '0xdEaa4288c85e7e0be40BCE49E76D4e321d20fC36'), + ('{{calculated_xsushi_usd}}', 8, '0xCC1f5d9e6956447630d703C8e93b2345c2DE3D13', '0xAB5041D720ab0CDB3342F5bC7Ac6Cc14B6c70727'), + ('{{clonex_floor_price}}', 18, '0x021264d59DAbD26E7506Ee7278407891Bb8CDCCc', '0xB187B5A5A4B0A2Ae32FaEDf0FE4845203E0B7b11'), + ('{{consumer_price_index}}', 18, '0x9a51192e065ECC6BDEafE5e194ce54702DE4f1f5', '0x5a0efD6D1a058A46D3Ac4511861adB8F3540BD49'), + ('{{coolcats_floor_price}}', 18, '0xF49f8F5b931B0e4B4246E4CcA7cD2083997Aa83d', '0xaBd6dc0E14bdC628E62Cc946897C7fEfDCDdcD10'), + ('{{cryptopunks_floor_price_eth}}', 18, '0x01B6710B01cF3dd8Ae64243097d91aFb03728Fdd', '0xF0c85c0F7dC37e1605a0Db446a2A0e33Df7a3358'), + ('{{cryptoadz_floor_price}}', 18, '0xFaA8F6073845DBe5627dAA3208F78A3043F99bcA', '0xc609c4fADdA31980769c9C6716F438f0a6059547'), + ('{{dai_usd}}', 8, '0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9', '0x478238a1c8B862498c74D0647329Aef9ea6819Ed'), + ('{{dodo_usd}}', 8, '0x9613A51Ad59EE375e6D8fa12eeef0281f1448739', '0x3600713c848dE06c8346900E3deDd3CAc21c06ff'), + ('{{dodo_usd}}', 8, '0x9613A51Ad59EE375e6D8fa12eeef0281f1448739', '0x0D60A27891250D7a7f78D6c279689164d704189E'), + ('{{dpi_eth}}', 18, '0x029849bbc0b1d93b85a8b6190e979fd38F5760E2', '0x36e4f71440EdF512EB410231e75B9281d4FcFC4c'), + ('{{dpi_usd}}', 8, '0xD2A593BF7594aCE1faD597adb697b5645d5edDB2', '0xA122f84935477142295F7451513e502D49316285'), + ('{{dpi_usd}}', 8, '0xD2A593BF7594aCE1faD597adb697b5645d5edDB2', '0x68f1B8317C19ff02fb68A8476C1D3f9Fc5139c0A'), + ('{{dydx_usd}}', 8, '0x478909D4D798f3a1F11fFB25E4920C959B4aDe0b', '0x6A0cCCA35f6ca00146547B949233C63441B34d7a'), + ('{{dydx_usd}}', 8, '0x478909D4D798f3a1F11fFB25E4920C959B4aDe0b', '0xe28371cd7a0c1687d2D956a567946688B48e5629'), + ('{{doodles_floor_price}}', 18, '0x027828052840a43Cc2D0187BcfA6e3D6AcE60336', '0x440C8fc45C7f00E09c2F437b95FC123888a3d951'), + ('{{enj_usd}}', 8, '0x23905C55dC11D609D5d11Dc604905779545De9a7', '0xCBbe4ff0d8add07CCe71afC0CcdF3492b8eaA76A'), + ('{{ens_usd}}', 8, '0x5C00128d4d1c2F4f652C267d7bcdD7aC99C16E16', '0x780f1bD91a5a22Ede36d4B2b2c0EcCB9b1726a28'), + ('{{eos_usd}}', 8, '0x10a43289895eAff840E8d45995BBa89f9115ECEe', '0xea7C55976844396f3bD4C89F66988b8b5Be5E96a'), + ('{{ern_usd}}', 8, '0x0a87e12689374A4EF49729582B474a1013cceBf8', '0xbDa0c715E5F153092A0d9d6dBBbDCc2beF892618'), + ('{{eth_btc}}', 8, '0xAc559F25B1619171CbC396a50854A3240b6A4e99', '0x0f00392FcB466c0E4E4310d81b941e07B4d5a079'), + ('{{eth_usd}}', 8, '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419', '0xE62B71cf983019BFf55bC83B48601ce8419650CC'), + ('{{eurt_usd}}', 8, '0x01D391A48f4F7339aC64CA2c83a07C22F95F587a', '0x920E5DC12E7500c6571C63D4Bba19c62e99d6883'), + ('{{farm_eth}}', 18, '0x611E0d2709416E002A3f38085e4e1cf77c015921', '0x883Ba661FD9824778FF14a97F3A03eb324540201'), + ('{{fei_usd}}', 8, '0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9', '0xc04126CF546146457C45009BCE5dA529eF960Fa1'), + ('{{fil_eth}}', 18, '0x0606Be69451B1C9861Ac6b3626b99093b713E801', '0x9965AD91B4877d29c246445011Ce370b3890C5C2'), + ('{{flow_usd}}', 8, '0xD9BdD9f5ffa7d89c846A5E3231a093AE4b3469D2', '0x3C640c857f1fF57ff4E24CfF1924F14A9bB9F2Ad'), + ('{{for_usd}}', 8, '0x456834f736094Fb0AAD40a9BBc9D4a0f37818A54', '0xf649bC5C0e99BDEb06702e3db242B9F93DE44462'), + ('{{forth_usd}}', 8, '0x7D77Fd73E468baECe26852776BeaF073CDc55fA0', '0xe2d6D8e799Df0a377FD14Ee18b95fd7cAa389017'), + ('{{fox_usd}}', 8, '0xccA02FFEFAcE21325befD6616cB4Ba5fCB047480', '0x49F3C586Df22Fd6146c22E5831907919dcb80527'), + ('{{fox_usd}}', 8, '0xccA02FFEFAcE21325befD6616cB4Ba5fCB047480', '0x02E59cE2921e982A481c6ddb709B76C33397Eb14'), + ('{{frax_eth}}', 18, '0x14d04Fff8D21bd62987a5cE9ce543d2F1edF5D3E', '0x56f98706C14DF5C290b02Cec491bB4c20834Bb51'), + ('{{fast_gas_gwei}}', 0, '0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C', '0x785433d8b06D77D68dF6be63944742130A4530d1'), + ('{{fluent_us_por}}', 8, '0xf623562437735E297C63B73c9e4417614147505C', '0xb6F94457113A091959E492Ef38bc3aE3cc475C63'), + ('{{gbpt_por}}', 18, '0xF6f5b570aB6E39E55558AfD8E1E30c5f20E6527E', '0x0a0aba8efAB65fDD3fa7e6afcb8128bCd6ffbdBF'), + ('{{gho_usd}}', 8, '0x3f12643D3f6f874d39C2a4c9f2Cd6f2DbAC877FC', '0x2E1D7e5Ba9A04ff2AA15be73b812fe1F8A43c3d7'), + ('{{glm_usd}}', 8, '0x83441C3A10F4D05de6e0f2E849A850Ccf27E6fa7', '0xa39b675ECc48E0681163f8788430e16b750d0f69'), + ('{{grt_eth}}', 18, '0x17D054eCac33D91F7340645341eFB5DE9009F1C1', '0x7531f77095Bed9d63cB3E9EA305111a7DCE969A2'), + ('{{grt_eth}}', 18, '0x17D054eCac33D91F7340645341eFB5DE9009F1C1', '0x91401cedCBFd9680cE193A5F54E716504233e998'), + ('{{gtc_eth}}', 18, '0x0e773A17a01E2c92F5d4c53435397E2bd48e215F', '0x0E27a36B2dFc0935A99Ba0c9C8E0F764c2da606C'), + ('{{gusd_eth}}', 18, '0x96d15851CBac05aEe4EFD9eA3a3DD9BDEeC9fC28', '0x9c2C487DAd6C8e5bb49dC6908a29D95a234FaAd8'), + ('{{gusd_usd}}', 8, '0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc', '0x6a805f2580b8D75d40331c26C074c2c42961E7F2'), + ('{{hbtc_por}}', 18, '0x0A8cD0115B1EE87EbA5b8E06A9a15ED93e230f7a', '0x6aa553CB870a54BD62bb54E11f0B2c919925E726'), + ('{{high_usd}}', 8, '0xe2F95bC12FE8a3C35684Be7586C39fD7c0E5b403', '0xeA23780dc14d1aC9eb3AB203A9bb7C1A6660615E'), + ('{{ib01_usd}}', 8, '0x32d1463EB53b73C095625719Afa544D5426354cB', '0x5EE6Ee50c1cB3E8Da20eE83D57818184387433e8'), + ('{{ibta_usd}}', 8, '0xd27e6D02b72eB6FCe04Ad5690C419196B4EF2885', '0x5f8c943a29FFfC7Df8cE4001Cf1bedbCFC610476'), + ('{{idr_usd}}', 8, '0x91b99C9b75aF469a71eE1AB528e8da994A5D7030', '0x156710f56dC5F0C022505A9ffE95b0b51A7c5c9A'), + ('{{ilv_eth}}', 18, '0xf600984CCa37cd562E74E3EE514289e3613ce8E4', '0xc1F2929b9449Ef97c5A75fd10fD0542984422f8b'), + ('{{imx_usd}}', 8, '0xBAEbEFc1D023c0feCcc047Bff42E75F15Ff213E6', '0x3f00247Dc3bc14A8dCfA682318Ce566b1f34343A'), + ('{{inj_usd}}', 8, '0xaE2EbE3c4D20cE13cE47cbb49b6d7ee631Cd816e', '0x1a4E4B344125E7ef78de22b55FCeF5a4bc45f605'), + ('{{iotx_usd}}', 8, '0x96c45535d235148Dc3ABA1E48A6E3cFB3510f4E2', '0x910BD38d1C8D06d9c32b92AED3833DD503eE1321'), + ('{{jpegd_azuki_floor_price_eth}}', 18, '0xA9cdBbDE36803af377735233e6BD261cDA5aD11d', '0xd7Ca5ad3704150348E7Ddff8aa890A440f3b25CF'), + ('{{jpegd_bored_ape_floor_price_eth}}', 18, '0x0CA05B24795eb4f5bA5237e1D4470048cc0fE235', '0xc9460800d678cD6be9374c023A72ed0c2017AFF9'), + ('{{jpegd_bored_ape_kennel_club_floor_price_eth}}', 18, '0x7Bf3ad9582De40942C1EF876571d9864D71c548b', '0x75e7c3D9ccDae31D560Aba6d34d6d47BbA814De8'), + ('{{jpegd_chromie_floor_price_eth}}', 18, '0x639c3c1e3b5aa262b87e407779c866cC1406DDe6', '0x271C5B4542eEEb78b08681D30168B4E4359a893e'), + ('{{jpegd_clonex_floor_price_eth}}', 18, '0x13E6C463BEC76873E4e63ce5169e9a95b7e06801', '0xe3cEFdBf16950B171cb2Ad68F047d3BA2d92f91e'), + ('{{jpegd_cryptopunks_floor_price_eth}}', 18, '0x35f08E1b5a18F1F085AA092aAed10EDd47457484', '0x3D1fDFB6C9579D249d2bA6D85043C53Cac77fB3a'), + ('{{jpegd_doodle_floor_price_eth}}', 18, '0x68Ff67118F778Bd158DA8D49B156aC5Ad9d8c4Ed', '0x9359397f078D1A186C74E1963e861eB109B30D3b'), + ('{{jpegd_fidenza_floor_price_eth}}', 18, '0x2dE2EB5Fb9B8d7df45A9e144030c36128682c288', '0x54d2AB141e69bfA42E0808fAdD40ba1135f8591b'), + ('{{jpegd_meebits_floor_price_eth}}', 18, '0x6f9D4D55Eb44915674d9f708AE17F23b2ae79AAc', '0x5957c8962f9CA8BeDea67541F73aA72A5E90f9BF'), + ('{{jpegd_milady_floor_price_eth}}', 18, '0x5fB3912d73d55E656E2Dfb35B11696006f5A5745', '0x080874cf20e5219946B27778eE7CcBf31bF9F3A5'), + ('{{jpegd_mutant_ape_floor_price_eth}}', 18, '0xE6A7b525609bF47889ac9d0e964ebB640750a01C', '0x19Dfc7d6262D609fedA883C08BaF3F5273E5bCC3'), + ('{{jpegd_otherdeed_floor_price_eth}}', 18, '0x6bD37CB175B222E7ddFb90CCA170e0f2b21F2849', '0x308b6ECf13e90Ba323aFC9c678B13A94f84F77ca'), + ('{{jpegd_otherside_koda_floor_price_eth}}', 18, '0x24340E6e1b61BE416740b52fc776af7E0BDC56dD', '0x11786F4e2a6618430d61C36F83DD687bE8371c83'), + ('{{jpegd_pudgy_penguins_floor_price_eth}}', 18, '0xaC9962D846D431254C7B3Da3AA12519a1E2Eb5e7', '0xbFbCc713B8320D924079eff26fcC773353275F10'), + ('{{jpegd_ringers_floor_price_eth}}', 18, '0xd88b089f47d6f82e84589601fd7c329472077E08', '0xC90ab15E9127c4E2DAE9aC370c2Fd0c768C20ac2'), + ('{{krw_usd}}', 8, '0x01435677FB11763550905594A16B645847C1d0F3', '0x86e345D4113E1105053A81240C75b56B437dA6Ef'), + ('{{ksm_usd}}', 8, '0x06E4164E24E72B879D93360D1B9fA05838A62EB5', '0x630163B84674B2B404fB6036A510574F259c5Cb7'), + ('{{link_usd}}', 8, '0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c', '0x20807Cf61AD17c31837776fA39847A2Fa1839E81'), + ('{{lon_eth}}', 18, '0x13A8F2cC27ccC2761ca1b21d2F3E762445f201CE', '0xB82A0803DF982412dAeE9D82826395E3F0BeD1A2'), + ('{{lrc_eth}}', 18, '0x160AC928A16C93eD4895C2De6f81ECcE9a7eB7b4', '0x9405e02996Aa6f2176E2748EEfbCedd405870cee'), + ('{{lusd_usd}}', 8, '0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0', '0x27b97a63091d185cE056e1747624b9B92BAAD056'), + ('{{mana_usd}}', 8, '0x56a4857acbcfe3a66965c251628B1c9f1c408C19', '0x7Be21AeF96E2FAeB8Dc0d07306814319cA034cad'), + ('{{matic_usd}}', 8, '0x7bAC85A8a13A4BcD8abb3eB7d6b4d632c5a57676', '0x4B35F7854e1fd8291f4EC714aC3EBB1DeA450585'), + ('{{mayc_floor_price}}', 18, '0x1823C89715Fe3fB96A24d11c917aCA918894A090', '0xb17Eac46CF1B9C5fe2F707c8A47AFc4d208b3E83'), + ('{{mim_usd}}', 8, '0x7A364e8770418566e3eb2001A96116E6138Eb32F', '0x18f0112E30769961AF90FDEe0D1c6B27E6d72D92'), + ('{{mkr_usd}}', 8, '0xec1D1B3b0443256cc3860e24a46F108e699484Aa', '0x71Febc2F741F113af322e1B576eF005A4424574F'), + ('{{msft_usd}}', 8, '0x021Fb44bfeafA0999C7b07C4791cf4B859C3b431', '0x99a9422bdBf888fAd917b3a714103E896D3e2011'), + ('{{metis_healthcheck}}', 8, '0x3425455fe737cdaE8564640df27bbF2eCD56E584', '0x31c8b5A8F0d286a4Bfcf669E18393b18E22B140D'), + ('{{moonbirds_floor_price}}', 18, '0x9cd36E0E8D3C27d630D00406ACFC3463154951Af', '0x8d0003e5c1C8EB67e04023a21291cf01CFd2E4a1'), + ('{{nexus_weth_reserves}}', 18, '0xCc72039A141c6e34a779eF93AEF5eB4C82A893c7', '0xCA71bBe491079E138927f3f0AB448Ae8782d1DCa'), + ('{{ohm_eth}}', 18, '0x90c2098473852E2F07678Fe1B6d595b1bd9b16Ed', '0x87831da9319260B0B38dD39A73EBD4c2C10C588c'), + ('{{ohm_eth}}', 18, '0x90c2098473852E2F07678Fe1B6d595b1bd9b16Ed', '0x7009033C0d6702fd2dfAD3478d2AE4e3b6aCB966'), + ('{{ohmv2_eth}}', 18, '0x9a72298ae3886221820B1c878d12D872087D3a23', '0x9Aae856973A0Cafa084b82F7BC4C6C2893A9139b'), + ('{{optimism_healthcheck}}', 8, '0x59c2287c8E848310c809C061a1Be0d1556eFF4e2', '0x90f07EDF949673732178D9F305B8183524120ea8'), + ('{{otherdeed_for_otherside_floor_price}}', 18, '0x6e3A4376B4C8D3ba49602f8542D9D3C4A87ba901', '0xE308e892e153B899404928b6C705b7c8Da231F0F'), + ('{{perp_usd}}', 8, '0x01cE1210Fe8153500F60f7131d63239373D7E26C', '0xAcD3657b1D552623992aea368D9192C780B9d441'), + ('{{perp_usd}}', 8, '0x01cE1210Fe8153500F60f7131d63239373D7E26C', '0x608D4724F725845C2bbb1A27D7DCe341C9F85B00'), + ('{{pha_usd}}', 8, '0x2B1248028fe48864c4f1c305E524e2e6702eAFDF', '0xCB00334A422FC8538794f3CE0149540a95f9e228'), + ('{{pudgy_penguins_floor_price}}', 18, '0x9f2ba149c2A0Ee76043d83558C4E79E9F3E5731B', '0x1A93f0C2168DfeEF0801D85E74FB21F4534Ddfc8'), + ('{{rai_usd}}', 8, '0x483d36F6a1d063d580c7a24F9A42B346f3a69fbb', '0x2Abfc56AaA39be7a946ec39aAC5d452e30614dF1'), + ('{{rari_eth}}', 18, '0x2a784368b1D492f458Bf919389F42c18315765F5', '0x25C32A551C188Cb88a7067c254905191e83C712C'), + ('{{ren_usd}}', 8, '0x0f59666EDE214281e956cb3b2D0d69415AfF4A01', '0x3d0bB55D0D2F255d7A0EAb8A53a91b3369728E36'), + ('{{rep_eth}}', 18, '0xD4CE430C3b67b3E2F7026D86E7128588629e2455', '0x5d7d68D7c66a3Ac30e7727Ae380817a534c7bc89'), + ('{{req_usd}}', 8, '0x2F05888D185970f178f40610306a0Cc305e52bBF', '0x8127087BaD4fd28e1DAcbAfc3d3040E701b2B9A2'), + ('{{reth_eth}}', 18, '0x536218f9E9Eb48863970252233c8F271f554C2d0', '0x9cB248E68fb81d0CFE7D6B3265Fe6Bf123A71FE0'), + ('{{rpl_usd}}', 8, '0x4E155eD98aFE9034b7A5962f6C84c86d869daA9d', '0x5Df960959De45A2BA9DC11e6fD6F77107F43256C'), + ('{{rsr_usd}}', 8, '0x759bBC1be8F90eE6457C44abc7d443842a976d02', '0xA27CfD69345a6e121284a3C0ae07BB64b707cDD2'), + ('{{shib_eth}}', 18, '0x8dD1CD88F43aF196ae478e91b9F5E4Ac69A97C61', '0xB895192F5a49914ae760F01Ef92DB285d94C783E'), + ('{{shv_usd}}', 8, '0xc04611C43842220fd941515F86d1DDdB15F04e46', '0x9E1320991057c1246cba9F02c79f272a4Da892b3'), + ('{{sol_usd}}', 8, '0x4ffC43a60e009B551865A93d232E33Fce9f01507', '0xDf30249744A419891f822ea4a9E80cd76d7Fbd23'), + ('{{spell_usd}}', 8, '0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8', '0x070f15084600Aceace6D639CDDd0e341975D1e30'), + ('{{spell_usd}}', 8, '0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8', '0x8640b23468815902e011948F3aB173E1E83f9879'), + ('{{stbt_por}}', 18, '0xad4A9bED9a5E2c1c9a6E43D35Db53c83873dd901', '0x040d003e56566aEd1D0cCdc54c551f76848bD219'), + ('{{steth_eth}}', 18, '0x86392dC19c0b719886221c78AB11eb8Cf5c52812', '0x716BB759A5f6faCdfF91F0AfB613133d510e1573'), + ('{{steth_usd}}', 8, '0xCfE54B5cD566aB89272946F602D76Ea879CAb4a8', '0xdA31bc2B08F22AE24aeD5F6EB1E71E96867BA196'), + ('{{stg_usd}}', 8, '0x7A9f34a0Aa917D438e9b6E630067062B7F8f6f3d', '0x73455B8aCd6d205544cbC034a6f6cAB58c56ef47'), + ('{{sushi_usd}}', 8, '0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7', '0x3CF055335b521863A62fB4374972560e3e55a193'), + ('{{sushi_usd}}', 8, '0xCc70F09A6CC17553b2E31954cD36E4A2d89501f7', '0xbd6C554554834ee97828B6DA732dCa7461DDf9d4'), + ('{{swell_eth_por}}', 18, '0x60cbE8D88EF519cF3C62414D76f50818D211fea1', '0x477716B8e95749bF31ce26cF4e4E4Af87b8Acf59'), + ('{{synthetix_aggregator_debt_ratio}}', 27, '0x0981af0C002345c9C5AD5efd26242D0cBe5aCA99', '0xc7BB32a4951600FBac701589C73e219b26Ca2DFC'), + ('{{synthetix_aggregator_issued_synths}}', 18, '0xbCF5792575bA3A875D8C406F4E7270f51a902539', '0x59CCf62B862f99B5aEd8857FBAdB7F895f6c59D5'), + ('{{tusd_usd}}', 8, '0xec746eCF986E2927Abd291a2A1716c940100f8Ba', '0x98953e9C76573e06ec265Bdde1dbB89fa02d56d3'), + ('{{tusd_por}}', 18, '0x81243627cC533Ca6CF6F23c3f61add1D0f626674', '0x4d76Ae11EEF9cEf363300Abf66b599BDE4aBb33e'), + ('{{tusd_reserves}}', 18, '0xBE456fd14720C3aCCc30A2013Bffd782c9Cb75D5', '0xAC099D59755982757537F13c7c4Ae8c8d9F030B9'), + ('{{total_marketcap_usd}}', 8, '0xEC8761a0A73c34329CA5B1D3Dc7eD07F30e836e2', '0x9257D83A0DdA413cA24F66dD32A056Bc2eBAFd2e'), + ('{{uma_eth}}', 18, '0xf817B69EA583CAFF291E287CaE00Ea329d22765C', '0x68a371D12213a1EbDd5fa9a2EE5519E6B73F1E37'), + ('{{uni_usd}}', 8, '0x553303d460EE0afB37EdFf9bE42922D8FF63220e', '0x373BCe97bec13BfA8A5f07Cc578EC2D77f80c589'), + ('{{usdd_usd}}', 8, '0x0ed39A19D2a68b722408d84e4d970827f61E6c0A', '0x589a85FC02EB6bB86D1c84c1a75abbB012C661De'), + ('{{usdp_usd}}', 8, '0x09023c0DA49Aaf8fc3fA3ADF34C6A7016D38D5e3', '0xF3d70857B489Ecc6768D0982B773E1Cba9E1f00b'), + ('{{ust_eth}}', 18, '0xa20623070413d42a5C01Db2c8111640DD7A5A03a', '0x4a81f77C8BBcA2CbA8110279cDbC9F1A8D3eAE6B'), + ('{{ust_usd}}', 8, '0x8b6d9085f310396C6E4f0012783E9f850eaa8a82', '0x01b87e7fF78022A70394d3C6Dd127D0c709e3beA'), + ('{{ust_usd}}', 8, '0x8b6d9085f310396C6E4f0012783E9f850eaa8a82', '0x5EDd5F803b831b47715aD3e11a90dD244F0cD0a9'), + ('{{veefriends_floor_price}}', 18, '0x35bf6767577091E7f04707c0290b3f889e968307', '0xe0552DC960366F67Da00CB3d9DF441F24B5C2AC1'), + ('{{wbtc_btc}}', 8, '0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23', '0xD7623f1d24b35c392862fB67C9716564A117C9DE'), + ('{{wbtc_por}}', 8, '0xa81FE04086865e63E12dD3776978E49DEEa2ea4e', '0xB622b7D6d9131cF6A1230EBa91E5da58dbea6F59'), + ('{{wing_usd}}', 8, '0x134fE0a225Fb8e6683617C13cEB6B3319fB4fb82', '0xc29d104A418a08407f9f2CDb614c1CDCf82986e0'), + ('{{wing_usd}}', 8, '0x134fE0a225Fb8e6683617C13cEB6B3319fB4fb82', '0x2c9A8c2caEb80FEb24048587a10BFB6aeFF601c5'), + ('{{world_of_women_floor_price}}', 18, '0xDdf0B85C600DAF9e308AFed9F597ACA212354764', '0x45B68d24Df514BF13a838d88bE4363F8011719de'), + ('{{xcn_usd}}', 8, '0xeb988B77b94C186053282BfcD8B7ED55142D3cAB', '0xD6A3a9Bb4bd49DdB2374CA58Edf47a8bB63Af3d2'), + ('{{yfi_usd}}', 8, '0xA027702dbb89fbd58938e4324ac03B58d812b0E1', '0xcac109af977AC94929A5dD37ed8Af763BAD78151'), + ('{{zrx_usd}}', 8, '0x2885d15b8Af22648b98B122b22FDF4D2a56c6023', '0x4Dde220fF2690A350b0Ea9404F35C8f3Ad012584'), + ('{{efil_por}}', 18, '0x8917800a6BDd8fA8b7c94E25aE2219Db28050622', '0xD423C9A9AD8c21C97bdeE2E74F8098625aa4f329') +) a (feed_name, decimals, proxy_address, aggregator_address) + diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql new file mode 100644 index 00000000..831c6e3e --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql @@ -0,0 +1,23 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_automation_performed", + ) +}} + +select + 'ethereum' as chain + , max(operator_name) as operator_name + , max(coalesce(keeper_address, automation_logs.tx_from)) as keeper_address + , max(automation_logs.block_timestamp) as evt_block_time + , max(coalesce(decoded_log:"payment"::number, decoded_log:"totalPayment"::number) / 1e18) as token_value +from + {{ ref('fact_chainlink_ethereum_automation_upkeep_performed_logs') }} automation_logs + left join {{ ref('dim_chainlink_ethereum_automation_meta') }} automation_meta ON automation_meta.keeper_address = automation_logs.tx_from +group by + tx_hash, + event_index, + tx_from \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql new file mode 100644 index 00000000..552eab29 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql @@ -0,0 +1,22 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_automation_performed_daily", + ) +}} + + +select + 'ethereum' as chain + , evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , automation_performed.keeper_address as keeper_address + , max(automation_performed.operator_name) as operator_name + , sum(token_value) as token_amount +FROM + {{ref('fact_chainlink_ethereum_automation_performed')}} automation_performed +group by 2, 4 +order by 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql new file mode 100644 index 00000000..444c89c0 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql @@ -0,0 +1,35 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_automation_reward_daily", + ) +}} + + +with + link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , automation_reward_daily as ( + select + automation_performed_daily.date_start + , cast(date_trunc('month', automation_performed_daily.date_start) as date) as date_month + , automation_performed_daily.operator_name + , automation_performed_daily.keeper_address + , automation_performed_daily.token_amount as token_amount + , (automation_performed_daily.token_amount * lud.price) as usd_amount + from {{ref('fact_chainlink_ethereum_automation_performed_daily')}} automation_performed_daily + left join link_usd_daily lud on lud.date = automation_performed_daily.date_start + order by date_start + ) +select + 'ethereum' as chain + , date_start + , date_month + , operator_name + , keeper_address + , token_amount + , usd_amount +from automation_reward_daily +order by 2, 5 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql new file mode 100644 index 00000000..305d15f3 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql @@ -0,0 +1,22 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_automation_upkeep_performed_logs" + ) +}} + +select + 'ethereum' as chain + , contract_address + , decoded_log + , tx_hash + , block_number + , block_timestamp + , event_index + , origin_from_address as tx_from +from ethereum_flipside.core.ez_decoded_event_logs +where topics[0]::string = '0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6' -- UpkeepPerformed +or topics[0]::string = '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b' -- UpkeepPerformedV2 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql new file mode 100644 index 00000000..2b133a8c --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql @@ -0,0 +1,55 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ccip_reward_daily" + ) +}} + +with + token_meta as ( + select + token_contract + , token_symbol + from {{ref('dim_chainlink_ethereum_ccip_token_meta')}} + ) + , eth_price as ({{ get_coingecko_price_with_latest('ethereum') }}) + , link_price as ({{ get_coingecko_price_with_latest('chainlink') }}) + , token_usd_daily AS ( + select + date as date_start + , 'WETH' as symbol + , price as usd_amount + from eth_price + + union all + + select + date as date_start + , 'LINK' as symbol + , price as usd_amount + from link_price + ) + , ccip_reward_daily AS ( + select + ccip_send_requested_daily.date_start + , cast(date_trunc('month', ccip_send_requested_daily.date_start) as date) as date_month + , sum(ccip_send_requested_daily.fee_amount) as token_amount + , sum((ccip_send_requested_daily.fee_amount * tud.usd_amount)) as usd_amount + , ccip_send_requested_daily.token as token + from {{ref('fact_chainlink_ethereum_ccip_send_requested_daily')}} ccip_send_requested_daily + left join token_usd_daily tud ON tud.date_start = ccip_send_requested_daily.date_start AND tud.symbol = ccip_send_requested_daily.token + group by 1, 5 + ) + +select + 'ethereum' as chain, + date_start, + date_month, + token_amount, + usd_amount, + token +from ccip_reward_daily +order by 2, 6 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql new file mode 100644 index 00000000..1d0f8cc9 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql @@ -0,0 +1,50 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ccip_send_requested", + ) +}} + +with +combined_logs as ( + select + ccip_logs_v1.chain + , ccip_logs_v1.block_timestamp + , ccip_logs_v1.fee_token_amount / 1e18 AS fee_token_amount + , token_addresses.token_symbol AS token + , ccip_logs_v1.fee_token + , ccip_logs_v1.destination_selector + , ccip_logs_v1.destination_chain + , ccip_logs_v1.tx_hash + from {{ ref('fact_chainlink_ethereum_ccip_send_requested_logs_v1') }} ccip_logs_v1 + left join {{ ref('dim_chainlink_ethereum_ccip_token_meta') }} token_addresses ON lower(token_addresses.token_contract) = lower(ccip_logs_v1.fee_token) + + union all + + select + ccip_logs_v1_2.chain + , ccip_logs_v1_2.block_timestamp + , ccip_logs_v1_2.fee_token_amount / 1e18 AS fee_token_amount + , token_addresses.token_symbol AS token + , ccip_logs_v1_2.fee_token + , ccip_logs_v1_2.destination_selector + , ccip_logs_v1_2.destination_chain + , ccip_logs_v1_2.tx_hash + from {{ ref('fact_chainlink_ethereum_ccip_send_requested_logs_v1_2') }} ccip_logs_v1_2 + left join {{ ref('dim_chainlink_ethereum_ccip_token_meta') }} token_addresses ON lower(token_addresses.token_contract) = lower(ccip_logs_v1_2.fee_token) +) + +select + max(chain) AS chain + , max(block_timestamp) AS evt_block_time + , sum(fee_token_amount) AS fee_token_amount + , max(token) AS token + , max(fee_token) AS fee_token + , max(destination_selector) AS destination_selector + , max(destination_chain) AS destination_chain + , max(tx_hash) AS tx_hash +from combined_logs +group by tx_hash \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql new file mode 100644 index 00000000..dbc0e7d0 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql @@ -0,0 +1,22 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ccip_send_requested_daily", + ) +}} + + +select + 'ethereum' as chain + , evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , sum(ccip_send_requested.fee_token_amount) as fee_amount + , ccip_send_requested.token as token + , ccip_send_requested.destination_chain as destination_chain + , count(ccip_send_requested.destination_chain) as count +from {{ref('fact_chainlink_ethereum_ccip_send_requested')}} ccip_send_requested +group by 2, 5, 6 +order by 2, 5, 6 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..72e1d4dc --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ccip_send_requested_logs_v1", + ) +}} + +select + 'ethereum' as chain + , contract_address + , decoded_log + , tx_hash + , block_number + , block_timestamp + , event_index + , origin_from_address as tx_from + , decoded_log:"message":"feeTokenAmount"::number as fee_token_amount + , decoded_log:"message":"sourceChainSelector"::string as origin_selector + , decoded_log:"message":"feeToken"::string as fee_token + , onramp_meta.chain_selector as destination_selector + , onramp_meta.chain as destination_chain +from ethereum_flipside.core.ez_decoded_event_logs logs +left join {{ref('dim_chainlink_ethereum_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) +where topics[0]::string = '0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821' -- CCIPSendRequested v1.0.0 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..fa481ed8 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_ccip_send_requested_logs_v1_2", + ) +}} + +select + 'ethereum' as chain + , contract_address + , decoded_log + , tx_hash + , block_number + , block_timestamp + , event_index + , origin_from_address as tx_from + , decoded_log:"message":"feeTokenAmount"::number as fee_token_amount + , decoded_log:"message":"sourceChainSelector"::string as origin_selector + , decoded_log:"message":"feeToken"::string as fee_token + , onramp_meta.chain_selector as destination_selector + , onramp_meta.chain as destination_chain +FROM ethereum_flipside.core.ez_decoded_event_logs logs +left join {{ref('dim_chainlink_ethereum_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) +where topics[0]::string = '0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd' -- CCIPSendRequested v1.2.0 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql new file mode 100644 index 00000000..b2c6108c --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql @@ -0,0 +1,76 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_fm_reward_daily" + ) +}} + + +WITH + admin_address_meta as ( + select distinct + admin_address + FROM {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily + ) + , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , link_usd_daily_expanded_by_admin_address as ( + select + date as date_start + , price as usd_amount + , admin_address + from link_usd_daily + cross join admin_address_meta + order by + date_start + , admin_address + ) + , payment_meta as ( + select + date_start + , link_usd_daily_expanded_by_admin_address.admin_address as admin_address + , usd_amount + , ( + select + max(fm_reward_evt_transfer_daily.date_start) + from {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily + where fm_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start + and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as prev_payment_date + , ( + select + min(fm_reward_evt_transfer_daily.date_start) + from {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily + where fm_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start + and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as next_payment_date + from link_usd_daily_expanded_by_admin_address + order by 1, 2 + ) + , fm_reward_daily AS ( + select + payment_meta.date_start + , cast(date_trunc('month', payment_meta.date_start) as date) as date_month + , payment_meta.admin_address + , ocr_operator_admin_meta.operator_name + , COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + from payment_meta + left join {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily ON + payment_meta.next_payment_date = fm_reward_evt_transfer_daily.date_start AND + lower(payment_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) + left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) + order by date_start + ) +select + 'ethereum' as chain + , date_start + , date_month + , admin_address + , operator_name + , token_amount + , usd_amount +from fm_reward_daily +order by 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql new file mode 100644 index 00000000..bd265fff --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql @@ -0,0 +1,23 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_fm_reward_evt_transfer" + ) +}} + +select + 'ethereum' as chain + , to_address as admin_address + , MAX(operator_name) as operator_name + , MAX(reward_evt_transfer.block_timestamp) as evt_block_time + , MAX(amount) as token_value +from ethereum_flipside.core.ez_token_transfers reward_evt_transfer + inner join {{ ref('dim_chainlink_ethereum_price_feeds_oracle_addresses') }} price_feeds ON lower(price_feeds.aggregator_address) = lower(reward_evt_transfer.from_address) + left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} fm_operator_admin_meta ON lower(fm_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) +group by + tx_hash + , event_index + , to_address \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql new file mode 100644 index 00000000..c5f4c3d9 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql @@ -0,0 +1,23 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_fm_reward_evt_transfer_daily" + ) +}} + +SELECT + 'ethereum' as chain + , evt_block_time::date AS date_start + , MAX(cast(date_trunc('month', evt_block_time) AS date)) AS date_month + , fm_reward_evt_transfer.admin_address as admin_address + , MAX(fm_reward_evt_transfer.operator_name) as operator_name + , SUM(token_value) as token_amount +FROM {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer')}} fm_reward_evt_transfer +LEFT JOIN {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} fm_operator_admin_meta ON lower(fm_operator_admin_meta.admin_address) = lower(fm_reward_evt_transfer.admin_address) +GROUP BY + 2, 4 +ORDER BY + 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql index 8d3947f4..31f7239c 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql @@ -60,7 +60,7 @@ with left join {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily on payment_meta.next_payment_date = ocr_reward_evt_transfer_daily.date_start and lower(payment_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) - left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) + left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) order by date_start ) select diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql index 2de91a51..8bc31ced 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql @@ -18,7 +18,7 @@ select from ethereum_flipside.core.ez_token_transfers reward_evt_transfer right join {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }} ocr_reward_transmission_logs on lower(ocr_reward_transmission_logs.contract_address) = lower(reward_evt_transfer.from_address) -left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta +left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) where lower(reward_evt_transfer.from_address) in (select lower(contract_address) from {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }}) GROUP BY diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql index fbd0725c..d492a27d 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql @@ -18,7 +18,7 @@ select , sum(token_value) as token_amount from {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer')}} ocr_reward_evt_transfer - left join {{ ref('fact_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer.admin_address) + left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer.admin_address) group by 2, 4 order by diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_staking_rewards.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_staking_rewards.sql new file mode 100644 index 00000000..714b4293 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_staking_rewards.sql @@ -0,0 +1,64 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_staking_rewards", + ) +}} + +with + v2_rewards_raw as ( + select + t.block_timestamp::date as date + , sum(amount) as link + from ethereum_flipside.core.ez_token_transfers t + left join ethereum_flipside.core.ez_decoded_event_logs l on t.tx_hash = l.tx_hash + where lower(t.from_address) = lower('0x996913c8c08472f584ab8834e925b06D0eb1D813') --rewards vault contract address + and l.topics[0]::string = '0x106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f7241' + and lower(l.contract_address) = lower('0x996913c8c08472f584ab8834e925b06D0eb1D813') + group by 1 + order by 1 desc + ) + , v1_rewards_raw as ( + select + block_timestamp + , tx_hash + , decoded_log:"staker"::string as staker + , decoded_log:"principal"::number as principal + , decoded_log:"baseReward"::number as base_reward + , decoded_log:"delegationReward"::number as delegate_reward + from ethereum_flipside.core.ez_decoded_event_logs + where topics[0]::string = '0x667838b33bdc898470de09e0e746990f2adc11b965b7fe6828e502ebc39e0434' + ) + , all_rewards as ( + select + block_timestamp::date as date + , SUM(base_reward + delegate_reward)/1e18 as rewards + from v1_rewards_raw + group by 1 + + union all + + select + date + , sum(link) as rewards + from v2_rewards_raw + group by 1 + ) + , prices as ({{get_coingecko_price_with_latest('chainlink')}}) + , datly_rewards as ( + select + all_rewards.date + , sum(rewards) as staking_rewards_native + from all_rewards + group by 1 + ) +select + datly_rewards.date + , 'ethereum' as chain + , staking_rewards_native + , staking_rewards_native * prices.price as staking_rewards +from datly_rewards +left join prices using(date) \ No newline at end of file From 502b420c1cbe37cf3b081088f6b5f50391ec005c Mon Sep 17 00:00:00 2001 From: alexwes Date: Fri, 28 Jun 2024 16:40:53 -0400 Subject: [PATCH 009/213] Chainlink financials treasury (#262) --- ...nlink_non_circulating_supply_addresses.sql | 39 +++++++++ ...ainlink_ethereum_vrf_request_fulfilled.sql | 0 ...k_ethereum_vrf_request_fulfilled_daily.sql | 0 ...t_chainlink_ethereum_vrf_rewards_daily.sql | 0 ..._ethereum_vrf_v1_random_fulfilled_logs.sql | 0 ...nk_ethereum_vrf_v1_random_request_logs.sql | 0 ..._ethereum_vrf_v2_random_fulfilled_logs.sql | 0 .../fact_chainlink_fdv_and_turnover.sql | 19 +++++ .../fact_chainlink_tokenholder_count.sql | 70 ++++++++++++++++ .../fact_chainlink_treasury_native_usd.sql | 58 +++++++++++++ .../fact_chainlink_tvl_native_usd.sql | 84 +++++++++++++++++++ 11 files changed, 270 insertions(+) create mode 100644 macros/addresses/chainlink_non_circulating_supply_addresses.sql rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_request_fulfilled.sql (100%) rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql (100%) rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_rewards_daily.sql (100%) rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql (100%) rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql (100%) rename models/{staging/chainlink => projects/chainlink/prod_raw}/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql (100%) create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_tokenholder_count.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql create mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql diff --git a/macros/addresses/chainlink_non_circulating_supply_addresses.sql b/macros/addresses/chainlink_non_circulating_supply_addresses.sql new file mode 100644 index 00000000..42c8d22e --- /dev/null +++ b/macros/addresses/chainlink_non_circulating_supply_addresses.sql @@ -0,0 +1,39 @@ +{% macro chainlink_non_circulating_supply_addresses() %} + SELECT LOWER(address) AS address + FROM ( + VALUES + ('0x98c63b7b319dfbdf3d811530f2ab9dfe4983af9d'), + ('0x75398564ce69b7498da10a11ab06fd8ff549001c'), + ('0x5560d001f977df5e49ead7ab0bdd437c4ee3a99e'), + ('0xbe6977e08d4479c0a6777539ae0e8fa27be4e9d6'), + ('0xdad22a85ef8310ef582b70e4051e543f3153e11f'), + ('0xe0362f7445e3203a496f6f8b3d51cbb413b69be2'), + ('0x5a8e77bc30948cc9a51ae4e042d96e145648bb4c'), + ('0xe0b66bfc7344a80152bfec954942e2926a6fca80'), + ('0xa42d0a18b834f52e41beddeaa2940165db3da9a3'), + ('0x276f695b3b2c7f24e7cf5b9d24e416a7f357adb7'), + ('0x5eab1966d5f61e52c22d0279f06f175e36a7181e'), + ('0x959815462eec5fff387a2e8a6871d94323d371de'), + ('0xb9b012cad0a7c1b10cbe33a1b3f623b06fad1c7c'), + ('0xfb682b0de4e0093835ea21cfabb5449ca9ac9e5e'), + ('0x3264225f2fd3bb8d5dc50587ea7506aa8638b966'), + ('0x8d34d66bdb2d1d6acd788a2d73d68e62282332e7'), + ('0x4a87ece3efffcb012fbe491aa028032e07b6f6cf'), + ('0x57ec4745258e5a4c73d1a82636dc0fe291e3ee9f'), + ('0x37398a324d35c942574650b9ed2987bc640bad76'), + ('0xd321948212663366503e8dccde39cc8e71c267c0'), + ('0x55b0ba1994d68c2ab0c01c3332ec9473de296137'), + ('0xd48133c96c5fe8d41d0cbd598f65bf4548941e27'), + ('0x9c17f630dbde24eece8fd248faa2e51f690ff79b'), + ('0x35a5dc3fd1210fe7173add3c01144cf1693b5e45'), + ('0x0dffd343c2d3460a7ead2797a687304beb394ce0'), + ('0x76287e0f7b107d1c9f8f01d5afac314ea8461a04'), + ('0x9bbb46637a1df7cadec2afca19c2920cddcc8db8'), + ('0x7594eb0ca0a7f313befd59afe9e95c2201a443e4'), + ('0x8652fb672253607c0061677bdcafb77a324de081'), + ('0x157235a3cc6011d9c26a010875c2550246aabcca'), + ('0xa71bbbd288a4e288cfdc08bb2e70dcd74da4486d'), + ('0xec640a90e9a30072158115b7c0253f2689ee6547'), + ('0x2a6ab3b0c96377bd20ae47e50ae426a8546a4ae9') + ) AS addresses(address) +{% endmacro%} \ No newline at end of file diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_rewards_daily.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql diff --git a/models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql similarity index 100% rename from models/staging/chainlink/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql rename to models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql b/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql new file mode 100644 index 00000000..7981be7a --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_fdv_and_turnover", + ) +}} + + +SELECT + date, + shifted_token_price_usd * 1000000000 as fully_diluted_market_cap, + shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, + shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv +FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold +where coingecko_id = 'chainlink' +order by date desc \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_tokenholder_count.sql b/models/projects/chainlink/prod_raw/fact_chainlink_tokenholder_count.sql new file mode 100644 index 00000000..60e5b697 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_tokenholder_count.sql @@ -0,0 +1,70 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_tokenholder_count", + ) +}} + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x514910771af9ca656af840dff83e8264ecf986ca' -- set token contract address + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + where block_timestamp > '2017-09-15' -- set token contract creation date +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x514910771af9ca656af840dff83e8264ecf986ca' + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select date, count(*) as tokenholder_count from filled_balances +where balance_token > 0 +group by date +order by date desc + + diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql b/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql new file mode 100644 index 00000000..9cb06c92 --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql @@ -0,0 +1,58 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_treasury_usd", + ) +}} + + +WITH base AS ( + select + to_address, + from_address, + TO_DATE(block_timestamp) as date, + amount_precise, + MIN(TO_DATE(block_timestamp)) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x514910771AF9Ca656af840dff83E8264EcF986CA') +), date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +), +address_cte as ( + {{chainlink_non_circulating_supply_addresses() }} +), +flows as ( + SELECT + date, + SUM(CASE WHEN to_address IN (SELECT address FROM address_cte) THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address IN (SELECT address FROM address_cte) THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1 + ORDER BY 1 DESC +), +prices as( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + where lower(token_address) = lower('0x514910771AF9Ca656af840dff83E8264EcF986CA') + group by 1 +) +SELECT + dr.date AS date, + SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (ORDER BY dr.date) as treasury_link, + treasury_link * p.price as treasury_usd, +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p on p.date = dr.date +ORDER BY date DESC \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql b/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql new file mode 100644 index 00000000..523df0bf --- /dev/null +++ b/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql @@ -0,0 +1,84 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_tvl", + ) +}} + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x514910771af9ca656af840dff83e8264ecf986ca' -- set token contract address + and lower(address) in (lower('0xBc10f2E862ED4502144c7d632a3459F49DFCDB5e'), lower('0xA1d76A7cA72128541E9FCAcafBdA3a92EF94fDc5'), + lower('0x3feB1e09b4bb0E7f0387CeE092a52e85797ab889')) + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + where block_timestamp > '2022-12-06' -- set token contract creation date +), +addresses AS ( + SELECT DISTINCT address + FROM filtered_balances +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + CROSS JOIN addresses a +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +), +prices as( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + where lower(token_address) = lower('0x514910771AF9Ca656af840dff83E8264EcF986CA') + group by 1 +), +filled_balances as( + SELECT + j.date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY j.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY j.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) * p.price AS balance_usd + FROM joined_balances j + LEFT JOIN prices p on p.date = j.date + order by j.date desc +) +SELECT + date, + SUM(balance_usd) as balance_usd, + SUM(balance_token) as balance_link +FROM filled_balances +GROUP BY date +ORDER BY date desc \ No newline at end of file From f1a65ac25d3d5abc3025fc3907c6fd7e7a815d72 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Fri, 28 Jun 2024 17:48:25 -0400 Subject: [PATCH 010/213] Added Ton Stablecoin Transfers + Aggregated Data (#264) --- .../agg_chain_stablecoin_metrics.sql | 2 +- .../metrics/agg_ton_stablecoin_metrics.sql | 3 + .../ton/raw/ez_ton_stablecoin_transfers.sql | 56 +++++++++++++++++++ models/staging/ton/__ton__sources.yml | 1 + .../_test_fact_ton_stablecoin_transfers.yml | 35 ++++++++++++ .../ton/fact_ton_stablecoin_contracts.sql | 14 +++++ .../ton/fact_ton_stablecoin_transfers.sql | 37 ++++++++++++ 7 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 models/metrics/stablecoins/metrics/agg_ton_stablecoin_metrics.sql create mode 100644 models/projects/ton/raw/ez_ton_stablecoin_transfers.sql create mode 100644 models/staging/ton/_test_fact_ton_stablecoin_transfers.yml create mode 100644 models/staging/ton/fact_ton_stablecoin_contracts.sql create mode 100644 models/staging/ton/fact_ton_stablecoin_transfers.sql diff --git a/macros/stablecoins/agg_chain_stablecoin_metrics.sql b/macros/stablecoins/agg_chain_stablecoin_metrics.sql index 5d68a770..b83a4170 100644 --- a/macros/stablecoins/agg_chain_stablecoin_metrics.sql +++ b/macros/stablecoins/agg_chain_stablecoin_metrics.sql @@ -5,7 +5,7 @@ -- 3. The table `{{ chain }}_flipside.core.fact_transactions` exists {% macro agg_chain_stablecoin_metrics(chain) %} with - transfer_transactions as (select * from fact_{{ chain }}_stablecoin_transfers), + transfer_transactions as (select * from {% if chain in ("ton") %} {{ chain }}.prod_raw.ez_stablecoin_transfers {% else %} fact_{{ chain }}_stablecoin_transfers {% endif %}), deduped_flows as ( select date, diff --git a/models/metrics/stablecoins/metrics/agg_ton_stablecoin_metrics.sql b/models/metrics/stablecoins/metrics/agg_ton_stablecoin_metrics.sql new file mode 100644 index 00000000..4ad6e172 --- /dev/null +++ b/models/metrics/stablecoins/metrics/agg_ton_stablecoin_metrics.sql @@ -0,0 +1,3 @@ +-- depends_on: {{ ref('fact_ton_stablecoin_contracts') }} +-- depends_on: {{ ref('ez_ton_stablecoin_transfers') }} +{{ config(materialized="table") }} {{ agg_chain_stablecoin_metrics("ton") }} diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql new file mode 100644 index 00000000..f3eede48 --- /dev/null +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -0,0 +1,56 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="TON", + database="ton", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + block_timestamp, + trunc(block_timestamp, 'day') as date, + tx_hash, + from_address, + to_address, + -- Mint: From: Premint, To: Contract + from_address in ( + select distinct (premint_address) + from pc_dbt_db.prod.fact_ton_stablecoin_contracts + ) + and to_address not in ( + select distinct (premint_address) + from pc_dbt_db.prod.fact_ton_stablecoin_contracts + ) + as is_mint, + -- BURN: From: Contract, To: Premint + from_address not in ( + select distinct (premint_address) + from pc_dbt_db.prod.fact_ton_stablecoin_contracts + ) + and to_address in ( + select distinct (premint_address) + from pc_dbt_db.prod.fact_ton_stablecoin_contracts + ) + as is_burn, + coalesce(amount / POWER(10, decimal), 0) as amount, + case + when is_mint then amount / POWER(10, decimal) when is_burn then -1 * amount / POWER(10, decimal) else 0 + end as inflow, + case + when + not is_mint + and not is_burn + then amount / POWER(10, decimal) + else 0 + end as transfer_volume, + fact_ton_stablecoin_contracts.symbol, + fact_ton_stablecoin_contracts.contract_address +from + {{ ref('fact_ton_stablecoin_transfers') }} as transfers +left join + pc_dbt_db.prod.fact_ton_stablecoin_contracts + on lower(transfers.symbol) + = lower(fact_ton_stablecoin_contracts.symbol) diff --git a/models/staging/ton/__ton__sources.yml b/models/staging/ton/__ton__sources.yml index 3201e375..3db8427a 100644 --- a/models/staging/ton/__ton__sources.yml +++ b/models/staging/ton/__ton__sources.yml @@ -8,3 +8,4 @@ sources: - name: raw_ton_revenue - name: raw_ton_txns - name: raw_ton_dex_volumes + - name: raw_ton_stablecoin_transfers diff --git a/models/staging/ton/_test_fact_ton_stablecoin_transfers.yml b/models/staging/ton/_test_fact_ton_stablecoin_transfers.yml new file mode 100644 index 00000000..df57fdc1 --- /dev/null +++ b/models/staging/ton/_test_fact_ton_stablecoin_transfers.yml @@ -0,0 +1,35 @@ +models: + - name: fact_ton_stablecoin_transfers + columns: + - name: amount + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - name: block_timestamp + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - dbt_expectations.expect_row_values_to_have_recent_data: + datepart: day + interval: 3 + severity: error + - name: payload + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - name: from_address + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - name: to_address + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - name: decimal + tests: + - not_null + - dbt_expectations.expect_column_to_exist + - name: symbol + tests: + - not_null + - dbt_expectations.expect_column_to_exist diff --git a/models/staging/ton/fact_ton_stablecoin_contracts.sql b/models/staging/ton/fact_ton_stablecoin_contracts.sql new file mode 100644 index 00000000..e4e9e331 --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_contracts.sql @@ -0,0 +1,14 @@ +{{ config(materialized="table") }} +select symbol, contract_address, num_decimals, coingecko_id, initial_supply, premint_address +from + ( + values + ( + 'USDâ‚®', + 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs', + 6, + 'tether', + 0, + 'EQAj-peZGPH-cC25EAv4Q-h8cBXszTmkch6ba6wXC8BM4xdo' + ) + ) as results(symbol, contract_address, num_decimals, coingecko_id, initial_supply, premint_address) diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql new file mode 100644 index 00000000..1be94dbe --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -0,0 +1,37 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="TON", + ) +}} +with raw_data as ( + select + extraction_date + , source_json + , source_json:"amount"::bigint as amount + , source_json:"date_timestamp"::timestamp as timestamp + , source_json:"decoded_hash"::string as tx_hash + , PARSE_JSON(source_json:"decoded_value"::string) as payload + , source_json:"from_address"::string as from_address + , source_json:"to_address"::string as to_address + , source_json:"decimals"::int as decimal + , source_json:"symbol"::string as symbol + from + {{ source("PROD_LANDING", "raw_ton_stablecoin_transfers") }} + {% if is_incremental() %} + where source_json:"date_timestamp"::timestamp > (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} +) +select + tx_hash + , coalesce(max_by(amount, extraction_date), 0) as amount + , max_by(timestamp, extraction_date) as block_timestamp + , max_by(payload, extraction_date) as payload + , max_by(from_address, extraction_date) as from_address + , max_by(to_address, extraction_date) as to_address + , max_by(decimal, extraction_date) as decimal + , max_by(symbol, extraction_date) as symbol +from raw_data +where from_address is not null and to_address is not null and timestamp is not null +group by tx_hash From af7e24f267dd86615494b90db12a30f114e96230 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 28 Jun 2024 18:26:10 -0400 Subject: [PATCH 011/213] Stablecoin V2: Solana and Is Wallet Column (#265) --- ...agg_daily_stablecoin_metrics_breakdown.sql | 44 ++++++++----------- ...illed_stablecoin_balances_by_addresses.sql | 17 +++---- .../agg_daily_stablecoin_breakdown.sql | 5 ++- ...ana_daily_stablecoin_metrics_breakdown.sql | 9 ++++ .../solana/agg_solana_stablecoin_balances.sql | 9 ++++ 5 files changed, 47 insertions(+), 37 deletions(-) create mode 100644 models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql create mode 100644 models/staging/solana/agg_solana_stablecoin_balances.sql diff --git a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql index 7928a7d6..519f8b30 100644 --- a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql +++ b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql @@ -10,12 +10,8 @@ with , transfer_volume , to_address , index - -- @anthony - -- Can move into stablecoin transfers table if needed + -- TODO: Move into stablecoin transfers table if needed -- Logic is slightly different for solana tron and near - -- Right now I am leaving it here so that we dont have to change the logic in the stablecoin transfers table - - --Average transfer volume is currently done in the API stablecoins.py with `_fetch_avg_transaction_size` , case {% if chain not in ('solana', 'tron', 'near') %} when @@ -103,7 +99,6 @@ with , from_address , contract_address , symbol - , count(distinct(to_address)) as artemis_stablecoin_dau , sum( case when from_address is not null @@ -129,7 +124,6 @@ with else 0 end ) as stablecoin_daily_txns - , count(distinct(to_address)) as stablecoin_dau , sum(transfer_volume * is_p2p) as p2p_stablecoin_transfer_volume , sum( case @@ -138,22 +132,16 @@ with else 0 end ) as p2p_stablecoin_daily_txns - , count( - distinct case - when is_p2p = 1 then to_address - else null - end - ) as p2p_stablecoin_dau from transfer_transactions group by 1, 2, 3, 4 ), results as ( select coalesce(balances.date, transfer_transactions_agg.date) as date - --stablecoin idenifiers + , coalesce(balances.contract_address, transfer_transactions_agg.contract_address) as contract_address , coalesce(balances.symbol, transfer_transactions_agg.symbol) as symbol - --sender idenifiers + , balances.address as from_address , filtered_contracts.name as contract_name , coalesce(filtered_contracts.name, balances.address, transfer_transactions_agg.from_address) as contract @@ -161,22 +149,30 @@ with , dim_apps_gold.icon as icon , filtered_contracts.app as app , filtered_contracts.category as category - --metrics + , coalesce(stablecoin_transfer_volume, 0) as stablecoin_transfer_volume , coalesce(stablecoin_daily_txns, 0) as stablecoin_daily_txns - , coalesce(stablecoin_dau, 0) stablecoin_dau , coalesce(stablecoin_supply, 0) as stablecoin_supply - --artemis metrics , coalesce(artemis_filter_metrics.artemis_stablecoin_transfer_volume, 0) as artemis_stablecoin_transfer_volume , coalesce(artemis_filter_metrics.artemis_stablecoin_daily_txns, 0) as artemis_stablecoin_daily_txns - , coalesce(artemis_filter_metrics.artemis_stablecoin_dau, 0) as artemis_stablecoin_dau - --p2p metrics , coalesce(p2p_stablecoin_transfer_volume, 0) as p2p_stablecoin_transfer_volume , coalesce(p2p_stablecoin_daily_txns, 0) as p2p_stablecoin_daily_txns - , coalesce(p2p_stablecoin_dau, 0) as p2p_stablecoin_dau + , case + {% if chain not in ('solana', 'tron', 'near') %} + when + balances.address not in (select contract_address from {{ ref("dim_" ~ chain ~ "_contract_addresses")}}) + then 1 + else 0 + {% else %} + when + balances.address in (select address from {{ ref("dim_" ~ chain ~ "_eoa_addresses") }}) + then 1 + else 0 + {% endif %} + end as is_wallet , '{{ chain }}' as chain from {{ ref("agg_" ~ chain ~ "_stablecoin_balances")}} balances - -- _stablecoin_balances needs to go first because of the defined dumby address + -- stablecoin_balances needs to go first because of the defined dumby address -- 0x00000000000000000000000000000DEADARTEMIS left join transfer_transactions_agg on lower(transfer_transactions_agg.from_address) = lower(balances.address) @@ -212,20 +208,18 @@ with d.token_current_price, 1 ) as stablecoin_transfer_volume , stablecoin_daily_txns - , stablecoin_dau , artemis_stablecoin_transfer_volume * coalesce( d.token_current_price, 1 ) as artemis_stablecoin_transfer_volume , artemis_stablecoin_daily_txns - , artemis_stablecoin_dau , p2p_stablecoin_transfer_volume * coalesce( d.token_current_price, 1 ) as p2p_stablecoin_transfer_volume , p2p_stablecoin_daily_txns - , p2p_stablecoin_dau , stablecoin_supply * coalesce( d.token_current_price, 1 ) as stablecoin_supply + , is_wallet , chain from results left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c diff --git a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql index 549d0298..2cc69c9d 100644 --- a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql +++ b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql @@ -6,10 +6,6 @@ -- Make sure to set to '' after backfill is complete {% set backfill_date = '' %} - --- TODO: Set backfill_date dynamically using jinja templating --- if system.date > max(date) then max date + 6 months --- else system.date with stablecoin_senders as (select from_address from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}}) , stablecoin_balances as ( @@ -18,14 +14,15 @@ with , lower(t1.contract_address) as contract_address , symbol , lower(address) as address - , balance_token / pow(10, num_decimals) as stablecoin_supply + {% if chain in ('solana') %} + , amount_unadj / pow(10, num_decimals) as stablecoin_supply + {% else %} + , balance_token / pow(10, num_decimals) as stablecoin_supply + {% endif %} from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 inner join {{ ref("fact_" ~ chain ~ "_stablecoin_contracts")}} t2 on lower(t1.contract_address) = lower(t2.contract_address) where lower(address) in (select lower(from_address) from stablecoin_senders) and block_timestamp < to_date(sysdate()) - -- Use this for a backfill, - -- It is important to backfill 6 months at a time otherwise the query will - -- take > 4 hours on an XL to run {% if backfill_date != '' %} and block_timestamp < '{{ backfill_date }}' {% endif %} @@ -127,9 +124,9 @@ with ) as stablecoin_supply from date_range left join balances using (date, contract_address, symbol, address) - -- append only new rows to the table + where address not in (select distinct (premint_address) from {{ ref("fact_solana_stablecoin_premint_addresses")}}) {% if is_incremental() %} - where date > (select max(date) from {{ this }}) + and date > (select max(date) from {{ this }}) {% endif %} ) , daily_flows as ( diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql index 25620ef4..0c50c74c 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql @@ -12,10 +12,11 @@ select , category , stablecoin_transfer_volume , stablecoin_daily_txns - , stablecoin_dau + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns , p2p_stablecoin_transfer_volume , p2p_stablecoin_daily_txns - , p2p_stablecoin_dau , stablecoin_supply + , is_wallet , chain from {{ ref("agg_daily_stablecoin_breakdown_silver") }} \ No newline at end of file diff --git a/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql b/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..053f425b --- /dev/null +++ b/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "symbol", "from_address"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("solana") }} \ No newline at end of file diff --git a/models/staging/solana/agg_solana_stablecoin_balances.sql b/models/staging/solana/agg_solana_stablecoin_balances.sql new file mode 100644 index 00000000..ddeea262 --- /dev/null +++ b/models/staging/solana/agg_solana_stablecoin_balances.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["address", "contract_address", "date"], + snowflake_warehouse="BALANCES_LG", + ) +}} + +{{ agg_foward_filled_stablecoin_balances_by_addresses("solana") }} \ No newline at end of file From 1809a73ca5c0c102bc99d49798bb0ec6125e28f3 Mon Sep 17 00:00:00 2001 From: alexwes Date: Fri, 28 Jun 2024 19:00:32 -0400 Subject: [PATCH 012/213] Chainlink financials treasury (#266) --- .../chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql | 2 +- .../chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql b/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql index 9cb06c92..54445bb8 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_treasury_native_usd.sql @@ -4,7 +4,7 @@ snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", - alias="fact_treasury_usd", + alias="fact_treasury_native_usd", ) }} diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql b/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql index 523df0bf..f45beda4 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_tvl_native_usd.sql @@ -4,7 +4,8 @@ snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", - alias="fact_tvl", + alias="fact_tvl_native_usd", + ) }} From 7e26566391b8e50df079b73cfc99274cbd42051a Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 28 Jun 2024 20:10:34 -0400 Subject: [PATCH 013/213] Chainlink: EZ Metrics (#267) --- .../prod_core/ez_chainlink_metrics.sql | 179 ++++++++++++++++++ .../ez_chainlink_metrics_by_chain.sql | 133 +++++++++++++ .../fact_chainlink_fdv_and_turnover.sql | 1 + 3 files changed, 313 insertions(+) create mode 100644 models/projects/chainlink/prod_core/ez_chainlink_metrics.sql create mode 100644 models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql new file mode 100644 index 00000000..4eb488ad --- /dev/null +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql @@ -0,0 +1,179 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="core", + alias="ez_metrics" + ) +}} +with + ocr_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ocr_reward_daily") + ] + ) + }} + ) + , orc_fees_data as ( + select + date_start as date + , sum(token_amount) as ocr_fees_native + , sum(usd_amount) as ocr_fees + from ocr_models + group by 1 + ) + , fm_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_fm_reward_daily") + ] + ) + }} + ) + , fm_fees_data as ( + select + date_start as date + , sum(usd_amount) as fm_fees + from fm_models + group by 1 + ) + , automation_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_automation_reward_daily") + ] + ) + }} + ) + , automation_fees_data as ( + select + date_start as date + , sum(token_amount) as automation_fees_native + , sum(usd_amount) as automation_fees + from automation_models + group by 1 + ) + , ccip_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ccip_reward_daily") + ] + ) + }} + ) + , ccip_fees_data as ( + select + date_start as date + -- different tokens are paid out in ccip fees + , sum(usd_amount) as ccip_fees + from ccip_models + group by 1 + ) + , vrf_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_vrf_rewards_daily") + ] + ) + }} + ) + , vrf_fees_data as ( + select + date + , sum(usd_amount) as vrf_fees + from vrf_models + group by 1 + ) + , staking_incentive_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_staking_rewards") + ] + ) + }} + ) + , staking_incentives_data as ( + select + date + , sum(staking_rewards) as token_incentives + from staking_incentive_models + group by 1 + ) + , treasury_data as ( + select + date + , treasury_usd + , treasury_link + from {{ ref("fact_chainlink_treasury_native_usd")}} + ) + , tvl_metrics as ( + select + date + , balance_usd as tvl + , balance_link as tvl_link + from {{ ref("fact_chainlink_tvl_native_usd")}} + ) + , token_turnover_metrics as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from {{ ref("fact_chainlink_fdv_and_turnover")}} + ) + , price_data as ({{ get_coingecko_metrics("chainlink") }}) + , token_holder_data as ( + select + date + , tokenholder_count + from {{ ref("fact_chainlink_tokenholder_count")}} + ) + + +select + date + , automation_fees + , ccip_fees + , vrf_fees + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees + , ocr_fees + , fm_fees + , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue + , fees as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , 0 as protocol_revenue + , primary_supply_side_revenue as operating_expenses + , token_incentives + , coalesce(operating_expenses, 0) + coalesce(token_incentives, 0) as total_expenses + , protocol_revenue - total_expenses as earnings + , treasury_usd + , treasury_link + , tvl + , tvl_link + , price + , market_cap + , fdmc + , token_turnover_circulating + , token_turnover_fdv + , token_volume + , tokenholder_count +from fm_fees_data +left join orc_fees_data using(date) +left join automation_fees_data using(date) +left join ccip_fees_data using(date) +left join vrf_fees_data using(date) +left join staking_incentives_data using(date) +left join treasury_data using(date) +left join tvl_metrics using(date) +left join token_turnover_metrics using(date) +left join price_data using(date) +left join token_holder_data using(date) +where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql new file mode 100644 index 00000000..3d9aab6c --- /dev/null +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql @@ -0,0 +1,133 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="core", + alias="ez_metrics_by_chain" + ) +}} +--Right now this model only suppoers ethereum +with + ocr_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ocr_reward_daily") + ] + ) + }} + ) + , orc_fees_data as ( + select + date_start as date + , chain + , usd_amount as ocr_fees + from ocr_models + ) + , fm_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_fm_reward_daily") + ] + ) + }} + ) + , fm_fees_data as ( + select + date_start as date + , chain + , usd_amount as fm_fees + from fm_models + ) + , automation_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_automation_reward_daily") + ] + ) + }} + ) + , automation_fees_data as ( + select + date_start as date + , chain + , usd_amount as automation_fees + from automation_models + ) + , ccip_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ccip_reward_daily") + ] + ) + }} + ) + , ccip_fees_data as ( + select + date_start as date + , chain + -- different tokens are paid out in ccip fees + , usd_amount as ccip_fees + from ccip_models + ) + , vrf_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_vrf_rewards_daily") + ] + ) + }} + ) + , vrf_fees_data as ( + select + date + , blockchain as chain + , usd_amount as vrf_fees + from vrf_models + ) + , staking_incentive_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_staking_rewards") + ] + ) + }} + ) + , staking_incentives_data as ( + select + date + , chain + , staking_rewards as token_incentives + from staking_incentive_models + ) + +select + date + , chain + , automation_fees + , ccip_fees + , vrf_fees + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees + , ocr_fees + , fm_fees + , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue + , fees as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , 0 as protocol_revenue + , primary_supply_side_revenue as operating_expenses + , token_incentives + , coalesce(operating_expenses, 0) + coalesce(token_incentives, 0) as total_expenses + , protocol_revenue - total_expenses as earnings +from fm_fees_data +left join orc_fees_data using(date, chain) +left join automation_fees_data using(date, chain) +left join ccip_fees_data using(date, chain) +left join vrf_fees_data using(date, chain) +left join staking_incentives_data using(date, chain) +where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql b/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql index 7981be7a..f3d9b79d 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_fdv_and_turnover.sql @@ -11,6 +11,7 @@ SELECT date, + shifted_token_h24_volume_usd as token_volume, shifted_token_price_usd * 1000000000 as fully_diluted_market_cap, shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv From 7ba3864e9c42880417d094150579a30d28a3e57e Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Sat, 29 Jun 2024 14:02:32 -0400 Subject: [PATCH 014/213] Calculate adjusted Near DAU for all of time (#268) --- macros/metrics/get_fundamental_data_for_chain.sql | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/macros/metrics/get_fundamental_data_for_chain.sql b/macros/metrics/get_fundamental_data_for_chain.sql index 78071af5..fc46a0c4 100644 --- a/macros/metrics/get_fundamental_data_for_chain.sql +++ b/macros/metrics/get_fundamental_data_for_chain.sql @@ -13,10 +13,9 @@ group by start_date ), {% if chain in ("near") %} - truncated_near_fact_txns as ( + near_fact_txns as ( select * from near_flipside.core.fact_transactions - where block_timestamp > current_date() - interval '300 days' ), fact_transactions_delegate_extracted as ( select @@ -31,7 +30,7 @@ else false end as is_delegate from - truncated_near_fact_txns, + near_fact_txns, lateral flatten(input => tx:actions) as action where tx_succeeded = TRUE From c036d331d29258ce5d994b11c9f94b9e69054a57 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 1 Jul 2024 09:15:58 -0400 Subject: [PATCH 015/213] Stablecoins: Fix Ethereum Unique Key and use ref (#269) --- macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql | 2 +- .../agg_ethereum_daily_stablecoin_metrics_breakdown.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql index 519f8b30..30ffb652 100644 --- a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql +++ b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql @@ -36,7 +36,7 @@ with {% endif %} ), filtered_contracts as ( - select * from pc_dbt_db.prod.dim_contracts_gold where chain = '{{ chain }}' + select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' ), artemis_contract_filters as ( {% if label_source == 'ARTEMIS' %} diff --git a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql b/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql index 3f2c453c..f466ab37 100644 --- a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql @@ -1,7 +1,7 @@ {{ config( materialized="incremental", - unique_key=["date", "symbol", "from_address"], + unique_key=["date", "contract_address", "from_address"], snowflake_warehouse="BALANCES_LG", ) }} From c464c4d10cbd0757b1609e5fd192bf3ca95035cf Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Mon, 1 Jul 2024 17:05:07 -0400 Subject: [PATCH 016/213] Added Ton address types (#270) --- models/projects/ton/raw/ez_ton_stablecoin_transfers.sql | 2 ++ models/staging/ton/fact_ton_stablecoin_transfers.sql | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index f3eede48..f2995902 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -14,7 +14,9 @@ select trunc(block_timestamp, 'day') as date, tx_hash, from_address, + from_type, to_address, + to_type, -- Mint: From: Premint, To: Contract from_address in ( select distinct (premint_address) diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index 1be94dbe..3edcdd5a 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -14,7 +14,9 @@ with raw_data as ( , source_json:"decoded_hash"::string as tx_hash , PARSE_JSON(source_json:"decoded_value"::string) as payload , source_json:"from_address"::string as from_address + , source_json:"from_type"::string as from_type , source_json:"to_address"::string as to_address + , source_json:"to_type"::string as to_type , source_json:"decimals"::int as decimal , source_json:"symbol"::string as symbol from @@ -29,7 +31,9 @@ select , max_by(timestamp, extraction_date) as block_timestamp , max_by(payload, extraction_date) as payload , max_by(from_address, extraction_date) as from_address + , max_by(from_type, extraction_date) as from_type , max_by(to_address, extraction_date) as to_address + , max_by(to_type, extraction_date) as to_type , max_by(decimal, extraction_date) as decimal , max_by(symbol, extraction_date) as symbol from raw_data From 32ddd4ffc2ff51f626bd3049c0c078f1058db653 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 1 Jul 2024 21:36:31 -0400 Subject: [PATCH 017/213] Updating chainlink ez metric by chain (#271) --- .../ez_chainlink_metrics_by_chain.sql | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql index 3d9aab6c..ab673be9 100644 --- a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql @@ -22,8 +22,9 @@ with select date_start as date , chain - , usd_amount as ocr_fees + , sum(usd_amount) as ocr_fees from ocr_models + group by 1, 2 ) , fm_models as( {{ @@ -38,8 +39,9 @@ with select date_start as date , chain - , usd_amount as fm_fees + , sum(usd_amount) as fm_fees from fm_models + group by 1, 2 ) , automation_models as( {{ @@ -54,8 +56,9 @@ with select date_start as date , chain - , usd_amount as automation_fees + , sum(usd_amount) as automation_fees from automation_models + group by 1, 2 ) , ccip_models as( {{ @@ -71,8 +74,9 @@ with date_start as date , chain -- different tokens are paid out in ccip fees - , usd_amount as ccip_fees + , sum(usd_amount) as ccip_fees from ccip_models + group by 1, 2 ) , vrf_models as ( {{ @@ -87,8 +91,9 @@ with select date , blockchain as chain - , usd_amount as vrf_fees + , sum(usd_amount) as vrf_fees from vrf_models + group by 1, 2 ) , staking_incentive_models as ( {{ @@ -103,8 +108,9 @@ with select date , chain - , staking_rewards as token_incentives + , sum(staking_rewards) as token_incentives from staking_incentive_models + group by 1, 2 ) select From f1d00d8def35b5b6e3273ff9b62a54ac5051a75e Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 2 Jul 2024 00:02:06 -0400 Subject: [PATCH 018/213] Ton stablecoin models (#272) --- .../current_address_balances.sql | 2 +- .../agg_chain_stablecoin_breakdown.sql | 135 ++++++++++++++++++ .../daily/agg_stablecoin_breakdown_daily.sql | 1 + .../agg_ton_stablecoin_breakdown_daily.sql | 5 + .../agg_stablecoin_breakdown_monthly.sql | 1 + .../agg_ton_stablecoin_breakdown_monthly.sql | 5 + .../agg_stablecoin_breakdown_weekly.sql | 1 + .../agg_ton_stablecoin_breakdown_weekly.sql | 5 + .../agg_daily_stablecoin_metrics_silver.sql | 3 +- .../ton/core/__ez_ton_core_sources__.yml | 6 + .../core/ez_ton_address_balances_by_token.sql | 14 ++ .../ton/core/ez_ton_current_balances.sql | 12 ++ .../ton/raw/ez_ton_stablecoin_transfers.sql | 2 +- .../ton/fact_ton_address_credit_by_token.sql | 30 ++++ .../ton/fact_ton_address_debit_by_token.sql | 30 ++++ .../ton/fact_ton_stablecoin_contracts.sql | 2 +- .../ton/fact_ton_stablecoin_transfers.sql | 9 +- 17 files changed, 257 insertions(+), 6 deletions(-) create mode 100644 models/metrics/stablecoins/breakdowns/daily/agg_ton_stablecoin_breakdown_daily.sql create mode 100644 models/metrics/stablecoins/breakdowns/monthly/agg_ton_stablecoin_breakdown_monthly.sql create mode 100644 models/metrics/stablecoins/breakdowns/weekly/agg_ton_stablecoin_breakdown_weekly.sql create mode 100644 models/projects/ton/core/__ez_ton_core_sources__.yml create mode 100644 models/projects/ton/core/ez_ton_address_balances_by_token.sql create mode 100644 models/projects/ton/core/ez_ton_current_balances.sql create mode 100644 models/staging/ton/fact_ton_address_credit_by_token.sql create mode 100644 models/staging/ton/fact_ton_address_debit_by_token.sql diff --git a/macros/address_balances/current_address_balances.sql b/macros/address_balances/current_address_balances.sql index dab11580..684fe456 100644 --- a/macros/address_balances/current_address_balances.sql +++ b/macros/address_balances/current_address_balances.sql @@ -4,7 +4,7 @@ max(block_timestamp) as block_timestamp, address, contract_address - from prod.fact_{{ chain }}_address_balances_by_token + from {% if chain in ('ton') %} ton.prod_core.ez_ton_address_balances_by_token {% else %} prod.fact_{{ chain }}_address_balances_by_token {% endif %} {% if is_incremental() %} where block_timestamp >= dateadd('day', -7, to_date(sysdate())) {% endif %} diff --git a/macros/stablecoins/agg_chain_stablecoin_breakdown.sql b/macros/stablecoins/agg_chain_stablecoin_breakdown.sql index a7f47f99..9b3e739e 100644 --- a/macros/stablecoins/agg_chain_stablecoin_breakdown.sql +++ b/macros/stablecoins/agg_chain_stablecoin_breakdown.sql @@ -148,3 +148,138 @@ select * from results_dollar_denom {% endmacro %} + + +{% macro agg_chain_stablecoin_breakdown_ton(granularity) %} + with + transfer_transactions as ( + select * from ton.prod_raw.ez_stablecoin_transfers + where block_timestamp >= ( + select dateadd({{ granularity }}, -1, max(block_timestamp)) + from ton.prod_raw.ez_stablecoin_transfers + ) + and (not is_mint or is_mint is null) + and (not is_burn or is_burn is null) + ), + latest_balances as ( + select + address, + balances.contract_address contract_address, + greatest(max_by(balance_token, block_timestamp), 0) stablecoin_supply, + max(fact_ton_stablecoin_contracts.symbol) symbol + from ton.prod_core.ez_ton_address_balances_by_token as balances + join + fact_ton_stablecoin_contracts + on lower(balances.contract_address) + = lower(fact_ton_stablecoin_contracts.contract_address) + -- TODO if there are other chains with pre-mints, add them here. Probably + -- generalize + where + balances.address not in ( + select distinct (premint_address) + from fact_ton_stablecoin_contracts + ) + group by + address, balances.contract_address + ), + filtered_contracts as ( + select * from dim_contracts_gold where chain = 'ton' + ), + transfer_transactions_agg as ( + select + transfer_transactions.from_address::string from_address, + transfer_transactions.contract_address contract_address, + max(transfer_transactions.symbol) symbol, + sum(transfer_volume) stablecoin_transfer_volume, + sum( + case + when transfer_transactions.from_address is not null + then 1 + else 0 + end + ) as stablecoin_daily_txns, + count(distinct(to_address)) stablecoin_dau + from transfer_transactions + group by 1, 2 + order by stablecoin_transfer_volume desc + ), + results as ( + select + coalesce( + transfer_transactions_agg.from_address, latest_balances.address + ) from_address, + coalesce( + transfer_transactions_agg.contract_address, + latest_balances.contract_address + ) contract_address, + max(filtered_contracts.name) contract_name, + coalesce( + max(filtered_contracts.name), + coalesce( + transfer_transactions_agg.from_address, latest_balances.address + ) + ) as contract, + max(filtered_contracts.friendly_name) application, + max(dim_apps_gold.icon) icon, + max(filtered_contracts.app) app, + max(filtered_contracts.category) category, + coalesce( + max(transfer_transactions_agg.symbol), max(latest_balances.symbol) + ) symbol, + coalesce(sum(stablecoin_transfer_volume), 0) stablecoin_transfer_volume, + coalesce(sum(stablecoin_daily_txns), 0) as stablecoin_daily_txns, + coalesce(sum(stablecoin_dau), 0) stablecoin_dau, + coalesce(max(latest_balances.stablecoin_supply), 0) stablecoin_supply, + 'ton' as chain + from transfer_transactions_agg + full outer join + latest_balances + on lower(transfer_transactions_agg.contract_address) + = lower(latest_balances.contract_address) + and lower(transfer_transactions_agg.from_address) + = lower(latest_balances.address) + left join + filtered_contracts + on lower( + coalesce( + transfer_transactions_agg.from_address, latest_balances.address + ) + ) + = lower(filtered_contracts.address) + left join dim_apps_gold on filtered_contracts.app = dim_apps_gold.namespace + group by 1, 2 + order by stablecoin_transfer_volume desc + ), + results_dollar_denom as ( + select + from_address, + results.contract_address, + contract_name, + contract, + application, + icon, + app, + category, + results.symbol, + stablecoin_transfer_volume * coalesce( + fact_coingecko_token_realtime_data.token_current_price, 1 + ) as stablecoin_transfer_volume, + stablecoin_daily_txns, + stablecoin_dau, + stablecoin_supply * coalesce( + fact_coingecko_token_realtime_data.token_current_price, 1 + ) as stablecoin_supply, + chain + from results + join + fact_ton_stablecoin_contracts + on lower(results.contract_address) + = lower(fact_ton_stablecoin_contracts.contract_address) + left join + fact_coingecko_token_realtime_data + on lower(fact_ton_stablecoin_contracts.coingecko_id) + = lower(fact_coingecko_token_realtime_data.token_id) + ) + select * + from results_dollar_denom +{% endmacro %} diff --git a/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql b/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql index cd7dbf3c..724becd8 100644 --- a/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql +++ b/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql @@ -14,6 +14,7 @@ with ref("agg_optimism_stablecoin_breakdown_daily"), ref("agg_polygon_stablecoin_breakdown_daily"), ref("agg_solana_stablecoin_breakdown_daily"), + ref("agg_ton_stablecoin_breakdown_daily"), ref("agg_tron_stablecoin_breakdown_daily"), ] ) diff --git a/models/metrics/stablecoins/breakdowns/daily/agg_ton_stablecoin_breakdown_daily.sql b/models/metrics/stablecoins/breakdowns/daily/agg_ton_stablecoin_breakdown_daily.sql new file mode 100644 index 00000000..8dc6f5a4 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/daily/agg_ton_stablecoin_breakdown_daily.sql @@ -0,0 +1,5 @@ +-- depends_on: {{ ref('fact_ton_stablecoin_contracts') }} +-- depends_on: {{ ref('ez_ton_address_balances_by_token') }} +-- depends_on: {{ ref('ez_ton_stablecoin_transfers') }} +{{ config(materialized="table", snowflake_warehouse="TON_MD") }} +{{ agg_chain_stablecoin_breakdown_ton("day") }} diff --git a/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql b/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql index 286dba9f..52ac1dfb 100644 --- a/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql +++ b/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql @@ -14,6 +14,7 @@ with ref("agg_optimism_stablecoin_breakdown_monthly"), ref("agg_polygon_stablecoin_breakdown_monthly"), ref("agg_solana_stablecoin_breakdown_monthly"), + ref("agg_ton_stablecoin_breakdown_monthly"), ref("agg_tron_stablecoin_breakdown_monthly"), ] ) diff --git a/models/metrics/stablecoins/breakdowns/monthly/agg_ton_stablecoin_breakdown_monthly.sql b/models/metrics/stablecoins/breakdowns/monthly/agg_ton_stablecoin_breakdown_monthly.sql new file mode 100644 index 00000000..cc29e9af --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/monthly/agg_ton_stablecoin_breakdown_monthly.sql @@ -0,0 +1,5 @@ +-- depends_on: {{ ref('fact_ton_stablecoin_contracts') }} +-- depends_on: {{ ref('ez_ton_address_balances_by_token') }} +-- depends_on: {{ ref('ez_ton_stablecoin_transfers') }} +{{ config(materialized="table", snowflake_warehouse="TON_MD") }} +{{ agg_chain_stablecoin_breakdown_ton("month") }} diff --git a/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql b/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql index 89a8bf70..6bdd92b6 100644 --- a/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql +++ b/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql @@ -14,6 +14,7 @@ with ref("agg_optimism_stablecoin_breakdown_weekly"), ref("agg_polygon_stablecoin_breakdown_weekly"), ref("agg_solana_stablecoin_breakdown_weekly"), + ref("agg_ton_stablecoin_breakdown_weekly"), ref("agg_tron_stablecoin_breakdown_weekly"), ] ) diff --git a/models/metrics/stablecoins/breakdowns/weekly/agg_ton_stablecoin_breakdown_weekly.sql b/models/metrics/stablecoins/breakdowns/weekly/agg_ton_stablecoin_breakdown_weekly.sql new file mode 100644 index 00000000..dde0fa9e --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/weekly/agg_ton_stablecoin_breakdown_weekly.sql @@ -0,0 +1,5 @@ +-- depends_on: {{ ref('fact_ton_stablecoin_contracts') }} +-- depends_on: {{ ref('ez_ton_address_balances_by_token') }} +-- depends_on: {{ ref('ez_ton_stablecoin_transfers') }} +{{ config(materialized="table", snowflake_warehouse="TON_MD") }} +{{ agg_chain_stablecoin_breakdown_ton("week") }} diff --git a/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql b/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql index 4c6feaf7..6014e825 100644 --- a/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql +++ b/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql @@ -13,8 +13,9 @@ with ref("agg_ethereum_stablecoin_metrics"), ref("agg_optimism_stablecoin_metrics"), ref("agg_polygon_stablecoin_metrics"), - ref("agg_tron_stablecoin_metrics"), ref("agg_solana_stablecoin_metrics"), + ref("agg_ton_stablecoin_metrics"), + ref("agg_tron_stablecoin_metrics"), ] ) }} diff --git a/models/projects/ton/core/__ez_ton_core_sources__.yml b/models/projects/ton/core/__ez_ton_core_sources__.yml new file mode 100644 index 00000000..7306a805 --- /dev/null +++ b/models/projects/ton/core/__ez_ton_core_sources__.yml @@ -0,0 +1,6 @@ +sources: + - name: BALANCES + schema: PROD_CORE + database: TON + tables: + - name: ez_ton_current_balances diff --git a/models/projects/ton/core/ez_ton_address_balances_by_token.sql b/models/projects/ton/core/ez_ton_address_balances_by_token.sql new file mode 100644 index 00000000..7eb41968 --- /dev/null +++ b/models/projects/ton/core/ez_ton_address_balances_by_token.sql @@ -0,0 +1,14 @@ +-- depends_on: {{ ref("fact_ton_address_credit_by_token") }} +-- depends_on: {{ ref("fact_ton_address_debit_by_token") }} +-- depends_on: {{ source("BALANCES", "ez_ton_current_balances") }} +{{ + config( + materialized="table", + database="ton", + schema="core", + name="ez_address_balances_by_token", + snowflake_warehouse="TON_MD", + ) +}} + +{{ address_balances("ton") }} \ No newline at end of file diff --git a/models/projects/ton/core/ez_ton_current_balances.sql b/models/projects/ton/core/ez_ton_current_balances.sql new file mode 100644 index 00000000..49b3861d --- /dev/null +++ b/models/projects/ton/core/ez_ton_current_balances.sql @@ -0,0 +1,12 @@ +-- depends_on: {{ ref("ez_ton_address_balances_by_token") }} +{{ + config( + materialized="table", + database="ton", + schema="core", + name="ez_current_balances", + snowflake_warehouse="TON_MD", + ) +}} + +{{ current_balances("ton") }} \ No newline at end of file diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index f2995902..329c9814 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -48,7 +48,7 @@ select then amount / POWER(10, decimal) else 0 end as transfer_volume, - fact_ton_stablecoin_contracts.symbol, + case when fact_ton_stablecoin_contracts.symbol = 'USDâ‚®' then 'USDT' else fact_ton_stablecoin_contracts.symbol end as symbol, fact_ton_stablecoin_contracts.contract_address from {{ ref('fact_ton_stablecoin_transfers') }} as transfers diff --git a/models/staging/ton/fact_ton_address_credit_by_token.sql b/models/staging/ton/fact_ton_address_credit_by_token.sql new file mode 100644 index 00000000..36395bbb --- /dev/null +++ b/models/staging/ton/fact_ton_address_credit_by_token.sql @@ -0,0 +1,30 @@ +{{ + config( + materialized="table", + unique_key=["block_timestamp", "address"], + snowflake_warehouse="TON_MD", + ) +}} + +with ton_transfers as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("ez_ton_stablecoin_transfers"), + ] + ) + }} +) +select + to_address as address, + contract_address, + block_timestamp, + cast(amount as float) as credit, + tx_hash +from ton_transfers +where + block_timestamp < to_date(sysdate()) + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} diff --git a/models/staging/ton/fact_ton_address_debit_by_token.sql b/models/staging/ton/fact_ton_address_debit_by_token.sql new file mode 100644 index 00000000..8ef5a1a6 --- /dev/null +++ b/models/staging/ton/fact_ton_address_debit_by_token.sql @@ -0,0 +1,30 @@ +{{ + config( + materialized="table", + unique_key=["block_timestamp", "address"], + snowflake_warehouse="TON_MD", + ) +}} + +with ton_transfers as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("ez_ton_stablecoin_transfers"), + ] + ) + }} +) +select + from_address as address, + contract_address, + block_timestamp, + cast(amount * -1 as float) as debit, + tx_hash +from ton_transfers +where + block_timestamp < to_date(sysdate()) + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} diff --git a/models/staging/ton/fact_ton_stablecoin_contracts.sql b/models/staging/ton/fact_ton_stablecoin_contracts.sql index e4e9e331..616e4790 100644 --- a/models/staging/ton/fact_ton_stablecoin_contracts.sql +++ b/models/staging/ton/fact_ton_stablecoin_contracts.sql @@ -4,7 +4,7 @@ from ( values ( - 'USDâ‚®', + 'USDT', 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs', 6, 'tether', diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index 3edcdd5a..5f7ffbdb 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -35,7 +35,12 @@ select , max_by(to_address, extraction_date) as to_address , max_by(to_type, extraction_date) as to_type , max_by(decimal, extraction_date) as decimal - , max_by(symbol, extraction_date) as symbol + , case when max_by(symbol, extraction_date) = 'USDâ‚®' then 'USDT' else max_by(symbol, extraction_date) end as symbol from raw_data -where from_address is not null and to_address is not null and timestamp is not null +where + from_address is not null and + to_address is not null and + timestamp is not null and + -- Black list transaction: https://tonviewer.com/transaction/513bacb858a3148367643ec9da96ba9e8af8bdf02c1950b106e9a88fe3e94935 + tx_hash not in ('513bacb858a3148367643ec9da96ba9e8af8bdf02c1950b106e9a88fe3e94935') group by tx_hash From f0663d5f17bf3f7dac07d5700f33a2aacbd4d637 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 2 Jul 2024 09:47:13 -0400 Subject: [PATCH 019/213] Fix Ton Stablecoins (#273) --- models/projects/ton/raw/ez_ton_stablecoin_transfers.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index 329c9814..f2995902 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -48,7 +48,7 @@ select then amount / POWER(10, decimal) else 0 end as transfer_volume, - case when fact_ton_stablecoin_contracts.symbol = 'USDâ‚®' then 'USDT' else fact_ton_stablecoin_contracts.symbol end as symbol, + fact_ton_stablecoin_contracts.symbol, fact_ton_stablecoin_contracts.contract_address from {{ ref('fact_ton_stablecoin_transfers') }} as transfers From 92dae3afe915e59e92d121ab82b6dde9eca03c8d Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 2 Jul 2024 17:32:23 -0400 Subject: [PATCH 020/213] Added Avalanche Subnets (#274) --- databases.csv | 3 ++ ...rom_avalanche_subnets_fundamental_data.sql | 53 +++++++++++++++++++ models/projects/beam/core/ez_beam_metrics.sql | 33 ++++++++++++ .../dexalot/core/ez_dexalot_metrics.sql | 30 +++++++++++ models/projects/dfk/core/ez_dfk_metrics.sql | 30 +++++++++++ models/staging/beam/__beam__sources.yml | 10 ++++ .../beam/fact_beam_fundamental_metrics.sql | 2 + models/staging/dexalot/__dexalot__sources.yml | 10 ++++ .../fact_dexalot_fundamental_metrics.sql | 2 + models/staging/dfk/__dfk__sources.yml | 10 ++++ .../dfk/fact_dfk_fundamental_metrics.sql | 2 + 11 files changed, 185 insertions(+) create mode 100644 macros/chains/transfrom_avalanche_subnets_fundamental_data.sql create mode 100644 models/projects/beam/core/ez_beam_metrics.sql create mode 100644 models/projects/dexalot/core/ez_dexalot_metrics.sql create mode 100644 models/projects/dfk/core/ez_dfk_metrics.sql create mode 100644 models/staging/beam/__beam__sources.yml create mode 100644 models/staging/beam/fact_beam_fundamental_metrics.sql create mode 100644 models/staging/dexalot/__dexalot__sources.yml create mode 100644 models/staging/dexalot/fact_dexalot_fundamental_metrics.sql create mode 100644 models/staging/dfk/__dfk__sources.yml create mode 100644 models/staging/dfk/fact_dfk_fundamental_metrics.sql diff --git a/databases.csv b/databases.csv index 2b82f375..6deb05d7 100644 --- a/databases.csv +++ b/databases.csv @@ -12,6 +12,7 @@ AVALANCHE_FLIPSIDE AXELAR_FLIPSIDE BASE BASE_FLIPSIDE +BEAM BEDROCK BITCOIN BITCOIN_FLIPSIDE @@ -26,6 +27,8 @@ CELO COMMON COMPOUND COSMOSHUB +DEXALOT +DFK EIGENPIE ETHEREUM ETHEREUM_FLIPSIDE diff --git a/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql b/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql new file mode 100644 index 00000000..d1ed0ede --- /dev/null +++ b/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql @@ -0,0 +1,53 @@ +{% macro transfrom_avalanche_subnets_fundamental_data(chain) %} + +with + dau_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_dau") }} + ), + dau_data as ( + select + TO_TIMESTAMP(value:"timestamp")::date as date, + value:"value"::float as dau + from + {{ source("PROD_LANDING", "raw_" ~ chain ~ "_dau") }}, + lateral flatten(input => parse_json(source_json:"results")) + where extraction_date = (select max_date from dau_extraction) + ), + gas_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas") }} + ), + gas_data as ( + select + TO_TIMESTAMP(value:"timestamp")::date as date, + value:"value"::float/POW(10, 9) as fees_native + from + {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas") }}, + lateral flatten(input => parse_json(source_json:"results")) + where extraction_date = (select max_date from gas_extraction) + ), + txns_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }} + ), + txns_data as ( + select + TO_TIMESTAMP(value:"timestamp")::date as date, + value:"value"::float as txns + from + {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }}, + lateral flatten(input => parse_json(source_json:"results")) + where extraction_date = (select max_date from txns_extraction) + ) + + SELECT + coalesce(txns.date, dau.date, gas.date) as date + , txns + , dau + , fees_native + , '{{ chain }}' as chain + FROM txns_data txns + FULL JOIN dau_data dau ON txns.date = dau.date + FULL JOIN gas_data gas ON txns.date = gas.date +{% endmacro %} diff --git a/models/projects/beam/core/ez_beam_metrics.sql b/models/projects/beam/core/ez_beam_metrics.sql new file mode 100644 index 00000000..f749efe3 --- /dev/null +++ b/models/projects/beam/core/ez_beam_metrics.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="BEAM", + database="beam", + schema="core", + alias="ez_metrics", + ) +}} + +with + fundamental_data as ( + select + date, chain, dau, txns, fees_native + from {{ ref("fact_beam_fundamental_metrics") }} + ), + price_data as ({{ get_coingecko_metrics("beam-2") }}), + defillama_data as ({{ get_defillama_metrics("beam") }}) +select + fundamental_data.date, + chain, + dau, + txns, + fees_native, + fees_native * price as fees, + price, + market_cap, + fdmc, + tvl +from fundamental_data +left join price_data on fundamental_data.date = price_data.date +left join defillama_data on fundamental_data.date = defillama_data.date +where fundamental_data.date < to_date(sysdate()) diff --git a/models/projects/dexalot/core/ez_dexalot_metrics.sql b/models/projects/dexalot/core/ez_dexalot_metrics.sql new file mode 100644 index 00000000..ed28262d --- /dev/null +++ b/models/projects/dexalot/core/ez_dexalot_metrics.sql @@ -0,0 +1,30 @@ +{{ + config( + materialized="table", + snowflake_warehouse="DEXALOT", + database="DEXALOT", + schema="core", + alias="ez_metrics", + ) +}} + +with + fundamental_data as ( + select + date, chain, dau, txns, fees_native + from {{ ref("fact_dexalot_fundamental_metrics") }} + ), + price_data as ({{ get_coingecko_metrics("dexalot") }}) +select + fundamental_data.date, + chain, + dau, + txns, + fees_native, + fees_native * price as fees, + price, + market_cap, + fdmc +from fundamental_data +left join price_data on fundamental_data.date = price_data.date +where fundamental_data.date < to_date(sysdate()) diff --git a/models/projects/dfk/core/ez_dfk_metrics.sql b/models/projects/dfk/core/ez_dfk_metrics.sql new file mode 100644 index 00000000..7a1be958 --- /dev/null +++ b/models/projects/dfk/core/ez_dfk_metrics.sql @@ -0,0 +1,30 @@ +{{ + config( + materialized="table", + snowflake_warehouse="DFK", + database="DFK", + schema="core", + alias="ez_metrics", + ) +}} + +with + fundamental_data as ( + select + date, chain, dau, txns, fees_native + from {{ ref("fact_dfk_fundamental_metrics") }} + ), + price_data as ({{ get_coingecko_metrics("defi-kingdoms") }}) +select + fundamental_data.date, + chain, + dau, + txns, + fees_native, + fees_native * price as fees, + price, + market_cap, + fdmc +from fundamental_data +left join price_data on fundamental_data.date = price_data.date +where fundamental_data.date < to_date(sysdate()) diff --git a/models/staging/beam/__beam__sources.yml b/models/staging/beam/__beam__sources.yml new file mode 100644 index 00000000..d76f5265 --- /dev/null +++ b/models/staging/beam/__beam__sources.yml @@ -0,0 +1,10 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_beam_dau + - name: raw_beam_txns + - name: raw_beam_gas + - name: raw_beam_contracts + - name: raw_beam_deployers diff --git a/models/staging/beam/fact_beam_fundamental_metrics.sql b/models/staging/beam/fact_beam_fundamental_metrics.sql new file mode 100644 index 00000000..d8f298f7 --- /dev/null +++ b/models/staging/beam/fact_beam_fundamental_metrics.sql @@ -0,0 +1,2 @@ +{{ config(materialized="table", snowflake_warehouse="BEAM") }} +{{ transfrom_avalanche_subnets_fundamental_data('beam') }} diff --git a/models/staging/dexalot/__dexalot__sources.yml b/models/staging/dexalot/__dexalot__sources.yml new file mode 100644 index 00000000..ac25d00a --- /dev/null +++ b/models/staging/dexalot/__dexalot__sources.yml @@ -0,0 +1,10 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_dexalot_dau + - name: raw_dexalot_txns + - name: raw_dexalot_gas + - name: raw_dexalot_contracts + - name: raw_dexalot_deployers diff --git a/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql new file mode 100644 index 00000000..8595fd4f --- /dev/null +++ b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql @@ -0,0 +1,2 @@ +{{ config(materialized="table", snowflake_warehouse="DEXALOT") }} +{{ transfrom_avalanche_subnets_fundamental_data('dexalot') }} diff --git a/models/staging/dfk/__dfk__sources.yml b/models/staging/dfk/__dfk__sources.yml new file mode 100644 index 00000000..d7f30039 --- /dev/null +++ b/models/staging/dfk/__dfk__sources.yml @@ -0,0 +1,10 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_dfk_dau + - name: raw_dfk_txns + - name: raw_dfk_gas + - name: raw_dfk_contracts + - name: raw_dfk_deployers diff --git a/models/staging/dfk/fact_dfk_fundamental_metrics.sql b/models/staging/dfk/fact_dfk_fundamental_metrics.sql new file mode 100644 index 00000000..bd9807cb --- /dev/null +++ b/models/staging/dfk/fact_dfk_fundamental_metrics.sql @@ -0,0 +1,2 @@ +{{ config(materialized="table", snowflake_warehouse="DFK") }} +{{ transfrom_avalanche_subnets_fundamental_data('dfk') }} From a00e89460ed77bb8a42a7f08aeb6a899d90009bd Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Wed, 3 Jul 2024 13:42:54 -0400 Subject: [PATCH 021/213] Add `ez_stablecoin_metrics` view for Reflexive (#275) --- models/common/__common__sources.yml | 1 + models/common/ez_stablecoin_metrics.sql | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 models/common/ez_stablecoin_metrics.sql diff --git a/models/common/__common__sources.yml b/models/common/__common__sources.yml index 7dff2ddf..39531d5b 100644 --- a/models/common/__common__sources.yml +++ b/models/common/__common__sources.yml @@ -4,3 +4,4 @@ sources: database: pc_dbt_db tables: - name: fact_coingecko_token_date_adjusted_gold + - name: agg_daily_stablecoin_metrics diff --git a/models/common/ez_stablecoin_metrics.sql b/models/common/ez_stablecoin_metrics.sql new file mode 100644 index 00000000..b53ceb5f --- /dev/null +++ b/models/common/ez_stablecoin_metrics.sql @@ -0,0 +1,18 @@ +{{ + config( + snowflake_warehouse="COMMON", + database="common", + schema="core", + ) +}} + +select + date, + total_supply, + txns, + dau, + transfer_volume, + chain, + symbol, + contract_address +from {{ source("PC_DBT_DB_UPSTREAM", "agg_daily_stablecoin_metrics") }} as agg_daily_stablecoin_metrics \ No newline at end of file From a607962112b69762f83b00f4b6e29b14814029e9 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 3 Jul 2024 13:58:00 -0400 Subject: [PATCH 022/213] Fix avalanche subnets (#276) --- .../transfrom_avalanche_subnets_fundamental_data.sql | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql b/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql index d1ed0ede..3a2a15c0 100644 --- a/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql +++ b/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql @@ -7,7 +7,7 @@ with ), dau_data as ( select - TO_TIMESTAMP(value:"timestamp")::date as date, + DATEADD('day', 1, TO_TIMESTAMP(value:"timestamp")::date) as date, value:"value"::float as dau from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_dau") }}, @@ -20,7 +20,7 @@ with ), gas_data as ( select - TO_TIMESTAMP(value:"timestamp")::date as date, + DATEADD('day', 1, TO_TIMESTAMP(value:"timestamp")::date) as date, value:"value"::float/POW(10, 9) as fees_native from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas") }}, @@ -33,7 +33,7 @@ with ), txns_data as ( select - TO_TIMESTAMP(value:"timestamp")::date as date, + DATEADD('day', 1, TO_TIMESTAMP(value:"timestamp")::date) as date, value:"value"::float as txns from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }}, @@ -50,4 +50,5 @@ with FROM txns_data txns FULL JOIN dau_data dau ON txns.date = dau.date FULL JOIN gas_data gas ON txns.date = gas.date + where coalesce(txns.date, dau.date, gas.date) < to_date(sysdate()) {% endmacro %} From 14b97a084cf4e056f3ae96dc99f3de2f17cd616a Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 3 Jul 2024 14:28:01 -0400 Subject: [PATCH 023/213] P2P Stablecoins (#277) --- .../staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql | 1 + .../avalanche/fact_avalanche_p2p_stablecoin_transfers.sql | 1 + models/staging/base/fact_base_p2p_stablecoin_transfers.sql | 1 + .../staging/ethereum/fact_ethereum_p2p_stablecoin_transfers.sql | 1 + models/staging/near/fact_near_p2p_stablecoin_transfers.sql | 1 + .../staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql | 1 + models/staging/polygon/fact_polygon_p2p_stablecoin_transfers.sql | 1 + models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql | 1 + models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql | 1 + 9 files changed, 9 insertions(+) diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql b/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql index dde6426e..56a7e0f1 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_arbitrum_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql b/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql index 5ccaadde..48dd0cb5 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_avalanche_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/base/fact_base_p2p_stablecoin_transfers.sql b/models/staging/base/fact_base_p2p_stablecoin_transfers.sql index 72a79089..c3e429af 100644 --- a/models/staging/base/fact_base_p2p_stablecoin_transfers.sql +++ b/models/staging/base/fact_base_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_base_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/ethereum/fact_ethereum_p2p_stablecoin_transfers.sql b/models/staging/ethereum/fact_ethereum_p2p_stablecoin_transfers.sql index 8aec834e..7fc9c37c 100644 --- a/models/staging/ethereum/fact_ethereum_p2p_stablecoin_transfers.sql +++ b/models/staging/ethereum/fact_ethereum_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_ethereum_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/near/fact_near_p2p_stablecoin_transfers.sql b/models/staging/near/fact_near_p2p_stablecoin_transfers.sql index f26dad6e..571869bc 100644 --- a/models/staging/near/fact_near_p2p_stablecoin_transfers.sql +++ b/models/staging/near/fact_near_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_near_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql b/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql index 72084d66..58e06967 100644 --- a/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql +++ b/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_optimism_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/polygon/fact_polygon_p2p_stablecoin_transfers.sql b/models/staging/polygon/fact_polygon_p2p_stablecoin_transfers.sql index 9b4b53f6..de0e8663 100644 --- a/models/staging/polygon/fact_polygon_p2p_stablecoin_transfers.sql +++ b/models/staging/polygon/fact_polygon_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_polygon_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql b/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql index 1ed31745..84a5c887 100644 --- a/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql +++ b/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_solana_stablecoin_transfers") }} {{ config( materialized="incremental", diff --git a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql index 32753eae..94adfa1a 100644 --- a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("fact_tron_stablecoin_transfers") }} {{ config( materialized="table", From a0f7130f758e48e7039005a284b4efbb9aea74bf Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 4 Jul 2024 14:14:53 -0400 Subject: [PATCH 024/213] Updated Ton Open League models to ez tables (#280) --- .../ton/core/ez_ton_app_open_league.sql | 26 +++++++++ .../ton/core/ez_ton_token_open_league.sql | 29 ++++++++++ models/staging/ton/__ton__sources.yml | 2 + .../staging/ton/dim_ton_open_league_dates.sql | 10 ++++ .../staging/ton/fact_ton_app_open_league.sql | 48 ++++++++++++++++ .../ton/fact_ton_token_open_league.sql | 55 +++++++++++++++++++ 6 files changed, 170 insertions(+) create mode 100644 models/projects/ton/core/ez_ton_app_open_league.sql create mode 100644 models/projects/ton/core/ez_ton_token_open_league.sql create mode 100644 models/staging/ton/dim_ton_open_league_dates.sql create mode 100644 models/staging/ton/fact_ton_app_open_league.sql create mode 100644 models/staging/ton/fact_ton_token_open_league.sql diff --git a/models/projects/ton/core/ez_ton_app_open_league.sql b/models/projects/ton/core/ez_ton_app_open_league.sql new file mode 100644 index 00000000..1cf6c596 --- /dev/null +++ b/models/projects/ton/core/ez_ton_app_open_league.sql @@ -0,0 +1,26 @@ +{{ + config( + materialized="table", + snowflake_warehouse="TON", + database="ton", + schema="core", + alias="ez_app_open_league", + ) +}} +SELECT + date + , season + , icon + , name + , offchain_avg_dau + , offchain_non_premium_users + , offchain_premium_users + , offchain_stickiness + , offchain_total_unique_users + , onchain_median_tx + , onchain_total_tx + , onchain_uaw + , score + , url + , end_date +from {{ ref("fact_ton_app_open_league") }} diff --git a/models/projects/ton/core/ez_ton_token_open_league.sql b/models/projects/ton/core/ez_ton_token_open_league.sql new file mode 100644 index 00000000..67e8d388 --- /dev/null +++ b/models/projects/ton/core/ez_ton_token_open_league.sql @@ -0,0 +1,29 @@ +{{ + config( + materialized="table", + snowflake_warehouse="TON", + database="ton", + schema="core", + alias="ez_token_open_league", + ) +}} +SELECT + date + , season + , has_boost + , boost_link + , icon + , is_meme + , name + , new_users_min_amount + , price_change_normed + , price_change_simple + , score + , token_address + , token_last_tvl + , token_price_after + , token_price_before + , token_start_tvl + , token_tvl_change + , url +from {{ ref("fact_ton_token_open_league") }} diff --git a/models/staging/ton/__ton__sources.yml b/models/staging/ton/__ton__sources.yml index 3db8427a..730e55f1 100644 --- a/models/staging/ton/__ton__sources.yml +++ b/models/staging/ton/__ton__sources.yml @@ -9,3 +9,5 @@ sources: - name: raw_ton_txns - name: raw_ton_dex_volumes - name: raw_ton_stablecoin_transfers + - name: raw_ton_apps_openleague + - name: raw_ton_tokens_openleague diff --git a/models/staging/ton/dim_ton_open_league_dates.sql b/models/staging/ton/dim_ton_open_league_dates.sql new file mode 100644 index 00000000..71231b83 --- /dev/null +++ b/models/staging/ton/dim_ton_open_league_dates.sql @@ -0,0 +1,10 @@ +{{ config(materialized="table") }} +select season, end_date +from + ( + values + ( + 4, + '2024-06-26' + ) + ) as results(season, end_date) diff --git a/models/staging/ton/fact_ton_app_open_league.sql b/models/staging/ton/fact_ton_app_open_league.sql new file mode 100644 index 00000000..2534fc2f --- /dev/null +++ b/models/staging/ton/fact_ton_app_open_league.sql @@ -0,0 +1,48 @@ +with latest_source_jsons as ( + select + extraction_date::date as extraction_date, + max_by(source_url, extraction_date) as source_url, + max_by(source_json, extraction_date) as source_json + from {{ source('PROD_LANDING', 'raw_ton_apps_openleague') }} + group by 1 +), +open_league_data as ( + select + dateadd(day, -1, extraction_date) as date + , value + , REGEXP_SUBSTR(source_url, '/season/S([^/]+)/', 1, 1, 'e')::int AS season + , value:"icon"::string as icon + , value:"name"::string as name + , value:"offchain_avg_dau"::float as offchain_avg_dau + , value:"offchain_non_premium_users" as offchain_non_premium_users + , value:"offchain_premium_users" as offchain_premium_users + , value:"offchain_stickiness"::float as offchain_stickiness + , value:"offchain_total_unique_users" as offchain_total_unique_users + , value:"onchain_median_tx" as onchain_median_tx + , value:"onchain_total_tx" as onchain_total_tx + , value:"onchain_uaw" as onchain_uaw + , value:"score"::float as score + , value:"url"::string as url + from latest_source_jsons, lateral flatten(input => parse_json(source_json:"items")) + -- Last Day of Season 4 (plus one) +) +SELECT + date + , value as source_json + , open_league_data.season + , icon + , name + , offchain_avg_dau + , offchain_non_premium_users + , offchain_premium_users + , offchain_stickiness + , offchain_total_unique_users + , onchain_median_tx + , onchain_total_tx + , onchain_uaw + , score + , url + , end_date +FROM open_league_data +left join pc_dbt_db.prod.dim_ton_open_league_dates as ol_dates on open_league_data.season = ol_dates.season +where date <= end_date and date < to_date(sysdate()) diff --git a/models/staging/ton/fact_ton_token_open_league.sql b/models/staging/ton/fact_ton_token_open_league.sql new file mode 100644 index 00000000..18b63a15 --- /dev/null +++ b/models/staging/ton/fact_ton_token_open_league.sql @@ -0,0 +1,55 @@ +with latest_source_jsons as ( + select + extraction_date::date as extraction_date, + max_by(source_url, extraction_date) as source_url, + max_by(source_json, extraction_date) as source_json + from {{source('PROD_LANDING', 'raw_ton_tokens_openleague')}} + group by 1 +), +open_league_data as ( + select + dateadd(day, -1, extraction_date) as date + , value + , REGEXP_SUBSTR(source_url, '/season/S([^/]+)/', 1, 1, 'e')::int AS season + , value:"has_boost" as has_boost + , value:"boost_link"::string as boost_link + , value:"icon"::string as icon + , value:"is_meme" as is_meme + , value:"name"::string as name + , value:"new_users_min_amount" as new_users_min_amount + , value:"price_change_normed"::float as price_change_normed + , value:"price_change_simple"::float as price_change_simple + , value:"score"::float as score + , value:"token_address"::string as token_address + , value:"token_last_tvl" as token_last_tvl + , value:"token_price_after"::float as token_price_after + , value:"token_price_before"::float as token_price_before + , value:"token_start_tvl" as token_start_tvl + , value:"token_tvl_change"::string as token_tvl_change + , value:"url"::string as url + from latest_source_jsons, lateral flatten(input => parse_json(source_json:"items")) + -- Last Day of Season 4 (plus one) +) +SELECT + date + , value as source_json + , open_league_data.season + , has_boost + , boost_link + , icon + , is_meme + , name + , new_users_min_amount + , price_change_normed + , price_change_simple + , score + , token_address + , token_last_tvl + , token_price_after + , token_price_before + , token_start_tvl + , token_tvl_change + , url +FROM open_league_data +left join pc_dbt_db.prod.dim_ton_open_league_dates as ol_dates on open_league_data.season = ol_dates.season +where date <= end_date and date < to_date(sysdate()) From 23ca78285135b2cf324f9cbe8d1e7591d7db2b67 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 6 Jul 2024 18:25:39 -0400 Subject: [PATCH 025/213] Across: Remove support for Lisk (#281) --- models/dimensions/dim_chain_ids.sql | 3 ++- models/staging/across/fact_across_transfers.sql | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/models/dimensions/dim_chain_ids.sql b/models/dimensions/dim_chain_ids.sql index ffe9f9cd..43711b59 100644 --- a/models/dimensions/dim_chain_ids.sql +++ b/models/dimensions/dim_chain_ids.sql @@ -26,5 +26,6 @@ from (25, 'cronos'), (81457, 'blast'), (534352, 'scroll'), - (34443, 'mode') + (34443, 'mode'), + (1135, 'lisk') ) as t(id, chain) \ No newline at end of file diff --git a/models/staging/across/fact_across_transfers.sql b/models/staging/across/fact_across_transfers.sql index 7c64aa18..e520a683 100644 --- a/models/staging/across/fact_across_transfers.sql +++ b/models/staging/across/fact_across_transfers.sql @@ -82,3 +82,6 @@ select input_token from {{ ref("fact_across_v3_transfers") }} where destination_chain_id != 0 -- a bug +-- Artemis currently does not support lisk chain and OP l2 + and destination_chain_id != 1125 + and origin_chain_id != 1125 From 98b182058836c9d9f8a3e27bac5330ff91640477 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Sun, 7 Jul 2024 22:15:57 -0400 Subject: [PATCH 026/213] Set Test Severity to Warn in Polkadot and Acala Tests (#282) --- .../acala/_test_fact_acala_daa_txns_gas_gas_usd_revenue.yml | 1 + .../_test_fact_polkadot_daa_txns_gas_gas_usd_revenue.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/models/staging/acala/_test_fact_acala_daa_txns_gas_gas_usd_revenue.yml b/models/staging/acala/_test_fact_acala_daa_txns_gas_gas_usd_revenue.yml index 83cc8398..b0e26298 100644 --- a/models/staging/acala/_test_fact_acala_daa_txns_gas_gas_usd_revenue.yml +++ b/models/staging/acala/_test_fact_acala_daa_txns_gas_gas_usd_revenue.yml @@ -12,6 +12,7 @@ models: - dbt_expectations.expect_row_values_to_have_recent_data: datepart: day interval: 3 + severity: warn - name: CHAIN tests: - not_null diff --git a/models/staging/polkadot/_test_fact_polkadot_daa_txns_gas_gas_usd_revenue.yml b/models/staging/polkadot/_test_fact_polkadot_daa_txns_gas_gas_usd_revenue.yml index f8341548..a920caec 100644 --- a/models/staging/polkadot/_test_fact_polkadot_daa_txns_gas_gas_usd_revenue.yml +++ b/models/staging/polkadot/_test_fact_polkadot_daa_txns_gas_gas_usd_revenue.yml @@ -12,6 +12,7 @@ models: - dbt_expectations.expect_row_values_to_have_recent_data: datepart: day interval: 3 + severity: warn - name: CHAIN tests: - not_null From 478aa8131d8189f0e0b8600ac25eb78c23908351 Mon Sep 17 00:00:00 2001 From: simon-weber-artemis Date: Mon, 8 Jul 2024 10:32:05 -0400 Subject: [PATCH 027/213] point docs at .com domain --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 23dfad18..c376835f 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Welcome to the Artemis DBT repository! ### What is this? -This is the home of all of the data-munging business logic that ultimately powers a variety of the data in the Artemis application suite, including the [Terminal](https://app.artemis.xyz/), [Sheets](https://www.artemis.xyz/sheets), and [Snowflake](https://www.artemis.xyz/datashare) integration. +This is the home of all of the data-munging business logic that ultimately powers a variety of the data in the Artemis application suite, including the [Terminal](https://app.artemisanalytics.com/), [Sheets](https://www.artemis.xyz/sheets), and [Snowflake](https://www.artemis.xyz/datashare) integration. ### Who is this for? @@ -71,7 +71,7 @@ Fact tables are then combined into `ez_asset_metrics` tables that are piped into **BEFORE** adding metrics for a protocol, you must create the asset first. -For example, let's say a user wants to add GEODNET fees to our [DePin dashboard.](https://app.artemis.xyz/sectors?tab=dePin). They must first add the [GEODNET](https://geodnet.com/) asset first by completing the following steps: +For example, let's say a user wants to add GEODNET fees to our [DePin dashboard.](https://app.artemisanalytics.com/sectors?tab=dePin). They must first add the [GEODNET](https://geodnet.com/) asset first by completing the following steps: - [ ] Fork this repository - [ ] Add GEODNET to the `databases.csv` file From 2d7697ed1684b954a9792fd4b3e151a8b6e0e665 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 8 Jul 2024 16:52:16 -0400 Subject: [PATCH 028/213] Chainlink: Chainlink Metrics (#284) --- .../chainlink_automation_rewards_daily.sql | 51 ++++++ .../chainlink_ccip_rewards_daily.sql | 96 ++++++++++++ .../chainlink/chainlink_fm_rewards_daily.sql | 92 +++++++++++ macros/chainlink/chainlink_logs.sql | 20 +++ .../chainlink/chainlink_ocr_rewards_daily.sql | 93 +++++++++++ .../chainlink/chainlink_vrf_rewards_daily.sql | 78 ++++++++++ .../ez_chainlink_metrics_by_token.sql | 146 ++++++++++++++++++ ...hainlink_ethereum_automation_performed.sql | 23 --- ...nk_ethereum_automation_performed_daily.sql | 22 --- ...nlink_ethereum_automation_reward_daily.sql | 25 +-- ...ereum_automation_upkeep_performed_logs.sql | 16 +- ...t_chainlink_ethereum_ccip_reward_daily.sql | 46 +----- ...chainlink_ethereum_ccip_send_requested.sql | 50 ------ ...ink_ethereum_ccip_send_requested_daily.sql | 22 --- ...k_ethereum_ccip_send_requested_logs_v1.sql | 18 +-- ...ethereum_ccip_send_requested_logs_v1_2.sql | 19 +-- ...act_chainlink_ethereum_fm_reward_daily.sql | 67 +------- ...inlink_ethereum_fm_reward_evt_transfer.sql | 23 --- ..._ethereum_fm_reward_evt_transfer_daily.sql | 23 --- ...ct_chainlink_ethereum_ocr_reward_daily.sql | 68 +------- ...nlink_ethereum_ocr_reward_evt_transfer.sql | 27 ---- ...ethereum_ocr_reward_evt_transfer_daily.sql | 25 --- ..._ethereum_ocr_reward_transmission_logs.sql | 18 +-- ...ainlink_ethereum_vrf_request_fulfilled.sql | 32 ---- ...k_ethereum_vrf_request_fulfilled_daily.sql | 21 --- ...t_chainlink_ethereum_vrf_rewards_daily.sql | 25 +-- ..._ethereum_vrf_v1_random_fulfilled_logs.sql | 17 -- ...nk_ethereum_vrf_v1_random_request_logs.sql | 19 --- ..._ethereum_vrf_v2_random_fulfilled_logs.sql | 18 --- requirements.txt | 2 +- 30 files changed, 591 insertions(+), 611 deletions(-) create mode 100644 macros/chainlink/chainlink_automation_rewards_daily.sql create mode 100644 macros/chainlink/chainlink_ccip_rewards_daily.sql create mode 100644 macros/chainlink/chainlink_fm_rewards_daily.sql create mode 100644 macros/chainlink/chainlink_logs.sql create mode 100644 macros/chainlink/chainlink_ocr_rewards_daily.sql create mode 100644 macros/chainlink/chainlink_vrf_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql delete mode 100644 models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql diff --git a/macros/chainlink/chainlink_automation_rewards_daily.sql b/macros/chainlink/chainlink_automation_rewards_daily.sql new file mode 100644 index 00000000..c2475775 --- /dev/null +++ b/macros/chainlink/chainlink_automation_rewards_daily.sql @@ -0,0 +1,51 @@ +{% macro chainlink_automation_rewards_daily(chain) %} +with + automation_performed as ( + select + '{{chain}}' as chain + , max(operator_name) as operator_name + , max(coalesce(keeper_address, automation_logs.tx_from)) as keeper_address + , max(automation_logs.block_timestamp) as evt_block_time + , max(coalesce(decoded_log:"payment"::number, decoded_log:"totalPayment"::number) / 1e18) as token_value + from + {{ ref('fact_chainlink_' ~ chain ~ '_automation_upkeep_performed_logs') }} automation_logs + left join {{ ref('dim_chainlink_' ~ chain ~ '_automation_meta') }} automation_meta ON automation_meta.keeper_address = automation_logs.tx_from + group by + tx_hash + , event_index + , tx_from + ) + , automation_performed_daily as ( + select + '{{chain}}' as chain + , evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , automation_performed.keeper_address as keeper_address + , max(automation_performed.operator_name) as operator_name + , sum(token_value) as token_amount + from automation_performed + group by 2, 4 + ) + , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , automation_reward_daily as ( + select + automation_performed_daily.date_start + , cast(date_trunc('month', automation_performed_daily.date_start) as date) as date_month + , automation_performed_daily.operator_name + , automation_performed_daily.keeper_address + , automation_performed_daily.token_amount as token_amount + , (automation_performed_daily.token_amount * lud.price) as usd_amount + from automation_performed_daily + left join link_usd_daily lud on lud.date = automation_performed_daily.date_start + ) +select + '{{ chain }}' as chain + , date_start + , date_month + , operator_name + , keeper_address + , token_amount + , usd_amount +from automation_reward_daily +order by 2, 5 +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_ccip_rewards_daily.sql b/macros/chainlink/chainlink_ccip_rewards_daily.sql new file mode 100644 index 00000000..10d8d882 --- /dev/null +++ b/macros/chainlink/chainlink_ccip_rewards_daily.sql @@ -0,0 +1,96 @@ +{% macro chainlink_ccip_rewards_daily(chain) %} +with + + combined_logs as ( + select + ccip_logs_v1.chain + , ccip_logs_v1.block_timestamp + , token_addresses.token_symbol AS token + , decoded_log:"message":"feeTokenAmount"::number / 1e18 as fee_token_amount + , decoded_log:"message":"feeToken"::string as fee_token + , onramp_meta.chain_selector as destination_selector + , onramp_meta.chain as destination_chain + , ccip_logs_v1.tx_hash + from {{ ref('fact_chainlink_' ~ chain ~ '_ccip_send_requested_logs_v1') }} ccip_logs_v1 + left join {{ref('dim_chainlink_' ~ chain ~'_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) + left join {{ ref('dim_chainlink_' ~ chain ~'_ccip_token_meta') }} token_addresses on lower(token_addresses.token_contract) = lower(ccip_logs_v1.decoded_log:"message":"feeToken"::string) + + union all + + select + ccip_logs_v1_2.chain + , ccip_logs_v1_2.block_timestamp + , token_addresses.token_symbol AS token + , decoded_log:"message":"feeTokenAmount"::number / 1e18 as fee_token_amount + , decoded_log:"message":"feeToken"::string as fee_token + , onramp_meta.chain_selector as destination_selector + , onramp_meta.chain as destination_chain + , ccip_logs_v1_2.tx_hash + from {{ ref('fact_chainlink_' ~ chain ~ '_ccip_send_requested_logs_v1_2') }} ccip_logs_v1_2 + left join {{ref('dim_chainlink_' ~ chain ~ '_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) + left join {{ ref('dim_chainlink_' ~ chain ~ '_ccip_token_meta') }} token_addresses on lower(token_addresses.token_contract) = lower(ccip_logs_v1_2.decoded_log:"message":"feeToken"::string) + ) + , ccip_send_requested as ( + select + max(chain) AS chain + , max(block_timestamp) AS evt_block_time + , sum(fee_token_amount) AS fee_token_amount + , max(token) AS token + , max(fee_token) AS fee_token + , max(destination_selector) AS destination_selector + , max(destination_chain) AS destination_chain + , max(tx_hash) AS tx_hash + from combined_logs + group by tx_hash + ) + , ccip_send_requested_daily as ( + select + evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , sum(ccip_send_requested.fee_token_amount) as fee_amount + , ccip_send_requested.token as token + , ccip_send_requested.destination_chain as destination_chain + , count(ccip_send_requested.destination_chain) as count + from ccip_send_requested + group by date_start, token, destination_chain + ) + , eth_price as ({{ get_coingecko_price_with_latest('ethereum') }}) + , link_price as ({{ get_coingecko_price_with_latest('chainlink') }}) + , token_usd_daily AS ( + select + date as date_start + , 'WETH' as symbol + , price as usd_amount + from eth_price + + union all + + select + date as date_start + , 'LINK' as symbol + , price as usd_amount + from link_price + ) + , ccip_reward_daily AS ( + select + ccip_send_requested_daily.date_start + , cast(date_trunc('month', ccip_send_requested_daily.date_start) as date) as date_month + , sum(ccip_send_requested_daily.fee_amount) as token_amount + , sum((ccip_send_requested_daily.fee_amount * tud.usd_amount)) as usd_amount + , ccip_send_requested_daily.token as token + from ccip_send_requested_daily ccip_send_requested_daily + left join token_usd_daily tud ON tud.date_start = ccip_send_requested_daily.date_start AND tud.symbol = ccip_send_requested_daily.token + group by 1, 5 + ) + +select + '{{ chain }}' as chain, + date_start, + date_month, + token_amount, + usd_amount, + token +from ccip_reward_daily +order by 2, 6 + +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_fm_rewards_daily.sql b/macros/chainlink/chainlink_fm_rewards_daily.sql new file mode 100644 index 00000000..bd2134bc --- /dev/null +++ b/macros/chainlink/chainlink_fm_rewards_daily.sql @@ -0,0 +1,92 @@ +{% macro chainlink_fm_rewards_daily(chain) %} +with + fm_reward_evt_transfer as ( + select + to_address as admin_address + , MAX(operator_name) as operator_name + , MAX(reward_evt_transfer.block_timestamp) as evt_block_time + , MAX(amount) as token_value + from {{chain}}_flipside.core.ez_token_transfers reward_evt_transfer + inner join {{ ref('dim_chainlink_'~chain~'_price_feeds_oracle_addresses') }} price_feeds ON lower(price_feeds.aggregator_address) = lower(reward_evt_transfer.from_address) + left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} fm_operator_admin_meta ON lower(fm_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) + group by + tx_hash + , event_index + , to_address + ) + , fm_reward_evt_transfer_daily as ( + SELECT + evt_block_time::date AS date_start + , MAX(cast(date_trunc('month', evt_block_time) AS date)) AS date_month + , fm_reward_evt_transfer.admin_address as admin_address + , MAX(fm_reward_evt_transfer.operator_name) as operator_name + , SUM(token_value) as token_amount + FROM fm_reward_evt_transfer + LEFT JOIN {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} fm_operator_admin_meta using(admin_address) + GROUP BY date_start, admin_address + ) + , admin_address_meta as ( + select distinct admin_address + FROM fm_reward_evt_transfer_daily + ) + , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , link_usd_daily_expanded_by_admin_address as ( + select + date as date_start + , price as usd_amount + , admin_address + from link_usd_daily + cross join admin_address_meta + order by + date_start + , admin_address + ) + , payment_meta as ( + select + date_start + , link_usd_daily_expanded_by_admin_address.admin_address as admin_address + , usd_amount + , ( + select + max(fm_reward_evt_transfer_daily.date_start) + from fm_reward_evt_transfer_daily + where fm_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start + and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as prev_payment_date + , ( + select + min(fm_reward_evt_transfer_daily.date_start) + from fm_reward_evt_transfer_daily + where fm_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start + and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as next_payment_date + from link_usd_daily_expanded_by_admin_address + order by 1, 2 + ) + , fm_reward_daily AS ( + select + payment_meta.date_start + , cast(date_trunc('month', payment_meta.date_start) as date) as date_month + , payment_meta.admin_address + , ocr_operator_admin_meta.operator_name + , COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + from payment_meta + left join fm_reward_evt_transfer_daily ON + payment_meta.next_payment_date = fm_reward_evt_transfer_daily.date_start AND + lower(payment_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) + left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) + order by date_start + ) +select +'{{chain}}' as chain +, date_start +, date_month +, admin_address +, operator_name +, token_amount +, usd_amount +from fm_reward_daily +order by 2, 4 + +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_logs.sql b/macros/chainlink/chainlink_logs.sql new file mode 100644 index 00000000..8fda1114 --- /dev/null +++ b/macros/chainlink/chainlink_logs.sql @@ -0,0 +1,20 @@ +{% macro chainlink_logs(chain, topics) %} + select + '{{ chain }}' as chain + , contract_address + , decoded_log + , tx_hash + , block_number + , block_timestamp + , event_index + , origin_from_address as tx_from + , event_name + , tx_status + from {{ chain }}_flipside.core.ez_decoded_event_logs + {% if topics is string %} where topics[0]::string = '{{ topics }}' + {% else %} where topics[0]::string in {{ topics }} + {%endif%} + {% if is_incremental() %} + and block_timestamp >= (select max(block_timestamp) from {{ this }}) + {% endif %} +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_ocr_rewards_daily.sql b/macros/chainlink/chainlink_ocr_rewards_daily.sql new file mode 100644 index 00000000..79dc5697 --- /dev/null +++ b/macros/chainlink/chainlink_ocr_rewards_daily.sql @@ -0,0 +1,93 @@ +{% macro chainlink_ocr_rewards_daily(chain) %} +with + ocr_reward_evt_transfer as ( + select + reward_evt_transfer.to_address as admin_address + , max(operator_name) as operator_name + , max(reward_evt_transfer.block_timestamp) as evt_block_time + , max(reward_evt_transfer.amount) as token_value + from {{chain}}_flipside.core.ez_token_transfers reward_evt_transfer + right join {{ ref('fact_chainlink_'~chain~'_ocr_reward_transmission_logs') }} ocr_reward_transmission_logs + on lower(ocr_reward_transmission_logs.contract_address) = lower(reward_evt_transfer.from_address) + left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} ocr_operator_admin_meta + on lower(ocr_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) + where lower(reward_evt_transfer.from_address) in (select lower(contract_address) from {{ ref('fact_chainlink_'~chain~'_ocr_reward_transmission_logs') }}) + group by + reward_evt_transfer.tx_hash + , reward_evt_transfer.event_index + , reward_evt_transfer.to_address + ) + , ocr_reward_evt_transfer_daily as ( + select + evt_block_time::date as date_start + , max(cast(date_trunc('month', evt_block_time) as date)) as date_month + , ocr_reward_evt_transfer.admin_address as admin_address + , max(ocr_reward_evt_transfer.operator_name) as operator_name + , sum(token_value) as token_amount + from ocr_reward_evt_transfer + left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} ocr_operator_admin_meta using(admin_address) + group by date_start, admin_address + ) + , admin_address_meta as ( + select distinct admin_address + from ocr_reward_evt_transfer_daily + ) + , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) + , link_usd_daily_expanded_by_admin_address as ( + select + date as date_start + , price as usd_amount + , admin_address + from link_usd_daily + cross join admin_address_meta + order by + date_start + , admin_address + ) + , payment_meta as ( + select + date_start + , link_usd_daily_expanded_by_admin_address.admin_address as admin_address + , usd_amount + , ( + select + MAX(ocr_reward_evt_transfer_daily.date_start) + from ocr_reward_evt_transfer_daily + where ocr_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start + and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as prev_payment_date + , ( + select + min(ocr_reward_evt_transfer_daily.date_start) + from ocr_reward_evt_transfer_daily + where ocr_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start + and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) + ) as next_payment_date + from link_usd_daily_expanded_by_admin_address + ) + , ocr_reward_daily as ( + select + payment_meta.date_start + , cast(date_trunc('month', payment_meta.date_start) as date) as date_month + , payment_meta.admin_address + , ocr_operator_admin_meta.operator_name + , COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + from payment_meta + left join ocr_reward_evt_transfer_daily + on payment_meta.next_payment_date = ocr_reward_evt_transfer_daily.date_start + and lower(payment_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) + left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} ocr_operator_admin_meta + on lower(ocr_operator_admin_meta.admin_address) = lower(payment_meta.admin_address) + ) +select + '{{chain}}' as chain + , date_start + , date_month + , admin_address + , operator_name + , token_amount + , usd_amount +from ocr_reward_daily +order by 2, 4 +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_vrf_rewards_daily.sql b/macros/chainlink/chainlink_vrf_rewards_daily.sql new file mode 100644 index 00000000..e34bbb57 --- /dev/null +++ b/macros/chainlink/chainlink_vrf_rewards_daily.sql @@ -0,0 +1,78 @@ +{% macro chainlink_vrf_rewards_daily(chain) %} +with + v1_fulfilled_logs as ( + select + block_timestamp, + tx_hash, + decoded_log:"requestId" as request_id + from {{ chain }}_flipside.core.ez_decoded_event_logs + where event_name = 'RandomnessRequestFulfilled' + and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' + ) + , v1_random_request_logs as ( + select + block_timestamp, + tx_hash, + origin_from_address as tx_from, + decoded_log:"fee"::double as fee, + decoded_log:"requestID" as request_id + from {{ chain }}_flipside.core.ez_decoded_event_logs + where event_name = 'RandomnessRequest' + and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' + ) + , v2_random_fulfilled_logs as ( + select + block_timestamp, + tx_hash, + event_index, + decoded_log:"payment" as payment + from {{ chain }}_flipside.core.ez_decoded_event_logs + where event_name = 'RandomWordsFulfilled' + and contract_address = '0x271682deb8c4e0901d1a1550ad2e64d568e69909' + ) + , logs as ( + SELECT + MAX(CAST(v1_request.fee AS double))/1e18 AS token_value, + MAX(v1_fulfilled_logs.block_timestamp) as evt_block_time + FROM + v1_random_request_logs v1_request + INNER JOIN v1_fulfilled_logs + ON v1_fulfilled_logs.request_id = v1_request.request_id + GROUP BY + v1_request.tx_hash + UNION + + SELECT + MAX(CAST(v2_random_fulfilled_logs.payment as double))/1e18 AS token_value, + MAX(v2_random_fulfilled_logs.block_timestamp) as evt_block_time + FROM + v2_random_fulfilled_logs + GROUP BY + v2_random_fulfilled_logs.tx_hash, + v2_random_fulfilled_logs.event_index + ) + , vrf_daily as ( + SELECT + cast(date_trunc('day', evt_block_time) AS date) AS date_start, + SUM(token_value) as token_amount + FROM logs + GROUP BY 1 + ) + , link_usd_daily AS ({{get_coingecko_price_with_latest("chainlink")}}) + , vrf_reward_daily AS ( + SELECT + vrf_daily.date_start, + COALESCE(vrf_daily.token_amount, 0) as token_amount, + COALESCE(vrf_daily.token_amount * lud.price, 0) as usd_amount + FROM vrf_daily + LEFT JOIN link_usd_daily lud ON lud.date = vrf_daily.date_start + ORDER BY date_start + ) + SELECT + '{{chain}}' as blockchain + , date_start as date + , token_amount + , usd_amount + from vrf_reward_daily + ORDER BY 2 +{% endmacro %} \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql new file mode 100644 index 00000000..78981ac7 --- /dev/null +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql @@ -0,0 +1,146 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="core", + alias="ez_metrics_by_token" + ) +}} +--Right now this model only suppoers ethereum +with + ocr_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ocr_reward_daily") + ] + ) + }} + ) + , orc_fees_data as ( + select + date_start as date + , chain + , 'LINK' as token + , sum(usd_amount) as ocr_fees + from ocr_models + group by 1, 2 + ) + , fm_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_fm_reward_daily") + ] + ) + }} + ) + , fm_fees_data as ( + select + date_start as date + , chain + , 'LINK' as token + , sum(usd_amount) as fm_fees + from fm_models + group by 1, 2 + ) + , automation_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_automation_reward_daily") + ] + ) + }} + ) + , automation_fees_data as ( + select + date_start as date + , chain + , 'LINK' as token + , sum(usd_amount) as automation_fees + from automation_models + group by 1, 2 + ) + , ccip_models as( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_ccip_reward_daily") + ] + ) + }} + ) + , ccip_fees_data as ( + select + date_start as date + , chain + -- different tokens are paid out in ccip fees + , token + , sum(usd_amount) as ccip_fees + from ccip_models + group by 1, 2, 3 + ) + , vrf_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_vrf_rewards_daily") + ] + ) + }} + ) + , vrf_fees_data as ( + select + date + , blockchain as chain + , 'LINK' as token + , sum(usd_amount) as vrf_fees + from vrf_models + group by 1, 2 + ) + , staking_incentive_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_staking_rewards") + ] + ) + }} + ) + , staking_incentives_data as ( + select + date + , chain + , 'LINK' as token + , sum(staking_rewards) as token_incentives + from staking_incentive_models + group by 1, 2 + ) + +select + date + , chain + , token + , automation_fees + , ccip_fees + , vrf_fees + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees + , ocr_fees + , fm_fees + , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue + , fees as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , 0 as protocol_revenue + , primary_supply_side_revenue as operating_expenses + , token_incentives + , coalesce(operating_expenses, 0) + coalesce(token_incentives, 0) as total_expenses + , protocol_revenue - total_expenses as earnings +from fm_fees_data +left join orc_fees_data using(date, chain, token) +left join automation_fees_data using(date, chain, token) +full join ccip_fees_data using(date, chain, token) +left join vrf_fees_data using(date, chain, token) +left join staking_incentives_data using(date, chain, token) +where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql deleted file mode 100644 index 831c6e3e..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed.sql +++ /dev/null @@ -1,23 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_automation_performed", - ) -}} - -select - 'ethereum' as chain - , max(operator_name) as operator_name - , max(coalesce(keeper_address, automation_logs.tx_from)) as keeper_address - , max(automation_logs.block_timestamp) as evt_block_time - , max(coalesce(decoded_log:"payment"::number, decoded_log:"totalPayment"::number) / 1e18) as token_value -from - {{ ref('fact_chainlink_ethereum_automation_upkeep_performed_logs') }} automation_logs - left join {{ ref('dim_chainlink_ethereum_automation_meta') }} automation_meta ON automation_meta.keeper_address = automation_logs.tx_from -group by - tx_hash, - event_index, - tx_from \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql deleted file mode 100644 index 552eab29..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_performed_daily.sql +++ /dev/null @@ -1,22 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_automation_performed_daily", - ) -}} - - -select - 'ethereum' as chain - , evt_block_time::date as date_start - , max(cast(date_trunc('month', evt_block_time) as date)) as date_month - , automation_performed.keeper_address as keeper_address - , max(automation_performed.operator_name) as operator_name - , sum(token_value) as token_amount -FROM - {{ref('fact_chainlink_ethereum_automation_performed')}} automation_performed -group by 2, 4 -order by 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql index 444c89c0..6d93d834 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql @@ -9,27 +9,4 @@ }} -with - link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) - , automation_reward_daily as ( - select - automation_performed_daily.date_start - , cast(date_trunc('month', automation_performed_daily.date_start) as date) as date_month - , automation_performed_daily.operator_name - , automation_performed_daily.keeper_address - , automation_performed_daily.token_amount as token_amount - , (automation_performed_daily.token_amount * lud.price) as usd_amount - from {{ref('fact_chainlink_ethereum_automation_performed_daily')}} automation_performed_daily - left join link_usd_daily lud on lud.date = automation_performed_daily.date_start - order by date_start - ) -select - 'ethereum' as chain - , date_start - , date_month - , operator_name - , keeper_address - , token_amount - , usd_amount -from automation_reward_daily -order by 2, 5 \ No newline at end of file +{{chainlink_automation_rewards_daily ('ethereum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql index 305d15f3..2ee4f10f 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", @@ -8,15 +8,5 @@ ) }} -select - 'ethereum' as chain - , contract_address - , decoded_log - , tx_hash - , block_number - , block_timestamp - , event_index - , origin_from_address as tx_from -from ethereum_flipside.core.ez_decoded_event_logs -where topics[0]::string = '0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6' -- UpkeepPerformed -or topics[0]::string = '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b' -- UpkeepPerformedV2 \ No newline at end of file +{{ chainlink_logs('ethereum', ('0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6', '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b'))}} + diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql index 2b133a8c..548e4cf3 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql @@ -8,48 +8,4 @@ ) }} -with - token_meta as ( - select - token_contract - , token_symbol - from {{ref('dim_chainlink_ethereum_ccip_token_meta')}} - ) - , eth_price as ({{ get_coingecko_price_with_latest('ethereum') }}) - , link_price as ({{ get_coingecko_price_with_latest('chainlink') }}) - , token_usd_daily AS ( - select - date as date_start - , 'WETH' as symbol - , price as usd_amount - from eth_price - - union all - - select - date as date_start - , 'LINK' as symbol - , price as usd_amount - from link_price - ) - , ccip_reward_daily AS ( - select - ccip_send_requested_daily.date_start - , cast(date_trunc('month', ccip_send_requested_daily.date_start) as date) as date_month - , sum(ccip_send_requested_daily.fee_amount) as token_amount - , sum((ccip_send_requested_daily.fee_amount * tud.usd_amount)) as usd_amount - , ccip_send_requested_daily.token as token - from {{ref('fact_chainlink_ethereum_ccip_send_requested_daily')}} ccip_send_requested_daily - left join token_usd_daily tud ON tud.date_start = ccip_send_requested_daily.date_start AND tud.symbol = ccip_send_requested_daily.token - group by 1, 5 - ) - -select - 'ethereum' as chain, - date_start, - date_month, - token_amount, - usd_amount, - token -from ccip_reward_daily -order by 2, 6 \ No newline at end of file +{{ chainlink_ccip_rewards_daily('ethereum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql deleted file mode 100644 index 1d0f8cc9..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested.sql +++ /dev/null @@ -1,50 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_ccip_send_requested", - ) -}} - -with -combined_logs as ( - select - ccip_logs_v1.chain - , ccip_logs_v1.block_timestamp - , ccip_logs_v1.fee_token_amount / 1e18 AS fee_token_amount - , token_addresses.token_symbol AS token - , ccip_logs_v1.fee_token - , ccip_logs_v1.destination_selector - , ccip_logs_v1.destination_chain - , ccip_logs_v1.tx_hash - from {{ ref('fact_chainlink_ethereum_ccip_send_requested_logs_v1') }} ccip_logs_v1 - left join {{ ref('dim_chainlink_ethereum_ccip_token_meta') }} token_addresses ON lower(token_addresses.token_contract) = lower(ccip_logs_v1.fee_token) - - union all - - select - ccip_logs_v1_2.chain - , ccip_logs_v1_2.block_timestamp - , ccip_logs_v1_2.fee_token_amount / 1e18 AS fee_token_amount - , token_addresses.token_symbol AS token - , ccip_logs_v1_2.fee_token - , ccip_logs_v1_2.destination_selector - , ccip_logs_v1_2.destination_chain - , ccip_logs_v1_2.tx_hash - from {{ ref('fact_chainlink_ethereum_ccip_send_requested_logs_v1_2') }} ccip_logs_v1_2 - left join {{ ref('dim_chainlink_ethereum_ccip_token_meta') }} token_addresses ON lower(token_addresses.token_contract) = lower(ccip_logs_v1_2.fee_token) -) - -select - max(chain) AS chain - , max(block_timestamp) AS evt_block_time - , sum(fee_token_amount) AS fee_token_amount - , max(token) AS token - , max(fee_token) AS fee_token - , max(destination_selector) AS destination_selector - , max(destination_chain) AS destination_chain - , max(tx_hash) AS tx_hash -from combined_logs -group by tx_hash \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql deleted file mode 100644 index dbc0e7d0..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_daily.sql +++ /dev/null @@ -1,22 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_ccip_send_requested_daily", - ) -}} - - -select - 'ethereum' as chain - , evt_block_time::date as date_start - , max(cast(date_trunc('month', evt_block_time) as date)) as date_month - , sum(ccip_send_requested.fee_token_amount) as fee_amount - , ccip_send_requested.token as token - , ccip_send_requested.destination_chain as destination_chain - , count(ccip_send_requested.destination_chain) as count -from {{ref('fact_chainlink_ethereum_ccip_send_requested')}} ccip_send_requested -group by 2, 5, 6 -order by 2, 5, 6 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql index 72e1d4dc..781fa8d9 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql @@ -8,20 +8,4 @@ ) }} -select - 'ethereum' as chain - , contract_address - , decoded_log - , tx_hash - , block_number - , block_timestamp - , event_index - , origin_from_address as tx_from - , decoded_log:"message":"feeTokenAmount"::number as fee_token_amount - , decoded_log:"message":"sourceChainSelector"::string as origin_selector - , decoded_log:"message":"feeToken"::string as fee_token - , onramp_meta.chain_selector as destination_selector - , onramp_meta.chain as destination_chain -from ethereum_flipside.core.ez_decoded_event_logs logs -left join {{ref('dim_chainlink_ethereum_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) -where topics[0]::string = '0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821' -- CCIPSendRequested v1.0.0 \ No newline at end of file +{{ chainlink_logs('ethereum', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql index fa481ed8..03367383 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql @@ -8,20 +8,5 @@ ) }} -select - 'ethereum' as chain - , contract_address - , decoded_log - , tx_hash - , block_number - , block_timestamp - , event_index - , origin_from_address as tx_from - , decoded_log:"message":"feeTokenAmount"::number as fee_token_amount - , decoded_log:"message":"sourceChainSelector"::string as origin_selector - , decoded_log:"message":"feeToken"::string as fee_token - , onramp_meta.chain_selector as destination_selector - , onramp_meta.chain as destination_chain -FROM ethereum_flipside.core.ez_decoded_event_logs logs -left join {{ref('dim_chainlink_ethereum_ccip_onramp_meta')}} onramp_meta on lower(onramp_meta.onramp) = lower(contract_address) -where topics[0]::string = '0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd' -- CCIPSendRequested v1.2.0 \ No newline at end of file + +{{ chainlink_logs('ethereum', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql index b2c6108c..c2880e18 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql @@ -8,69 +8,4 @@ ) }} - -WITH - admin_address_meta as ( - select distinct - admin_address - FROM {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily - ) - , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) - , link_usd_daily_expanded_by_admin_address as ( - select - date as date_start - , price as usd_amount - , admin_address - from link_usd_daily - cross join admin_address_meta - order by - date_start - , admin_address - ) - , payment_meta as ( - select - date_start - , link_usd_daily_expanded_by_admin_address.admin_address as admin_address - , usd_amount - , ( - select - max(fm_reward_evt_transfer_daily.date_start) - from {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily - where fm_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start - and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) - ) as prev_payment_date - , ( - select - min(fm_reward_evt_transfer_daily.date_start) - from {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily - where fm_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start - and lower(fm_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) - ) as next_payment_date - from link_usd_daily_expanded_by_admin_address - order by 1, 2 - ) - , fm_reward_daily AS ( - select - payment_meta.date_start - , cast(date_trunc('month', payment_meta.date_start) as date) as date_month - , payment_meta.admin_address - , ocr_operator_admin_meta.operator_name - , COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount - , (COALESCE(fm_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount - from payment_meta - left join {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer_daily')}} fm_reward_evt_transfer_daily ON - payment_meta.next_payment_date = fm_reward_evt_transfer_daily.date_start AND - lower(payment_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) - left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(fm_reward_evt_transfer_daily.admin_address) - order by date_start - ) -select - 'ethereum' as chain - , date_start - , date_month - , admin_address - , operator_name - , token_amount - , usd_amount -from fm_reward_daily -order by 2, 4 \ No newline at end of file +{{ chainlink_fm_rewards_daily('ethereum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql deleted file mode 100644 index bd265fff..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer.sql +++ /dev/null @@ -1,23 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_fm_reward_evt_transfer" - ) -}} - -select - 'ethereum' as chain - , to_address as admin_address - , MAX(operator_name) as operator_name - , MAX(reward_evt_transfer.block_timestamp) as evt_block_time - , MAX(amount) as token_value -from ethereum_flipside.core.ez_token_transfers reward_evt_transfer - inner join {{ ref('dim_chainlink_ethereum_price_feeds_oracle_addresses') }} price_feeds ON lower(price_feeds.aggregator_address) = lower(reward_evt_transfer.from_address) - left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} fm_operator_admin_meta ON lower(fm_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) -group by - tx_hash - , event_index - , to_address \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql deleted file mode 100644 index c5f4c3d9..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_evt_transfer_daily.sql +++ /dev/null @@ -1,23 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_fm_reward_evt_transfer_daily" - ) -}} - -SELECT - 'ethereum' as chain - , evt_block_time::date AS date_start - , MAX(cast(date_trunc('month', evt_block_time) AS date)) AS date_month - , fm_reward_evt_transfer.admin_address as admin_address - , MAX(fm_reward_evt_transfer.operator_name) as operator_name - , SUM(token_value) as token_amount -FROM {{ref('fact_chainlink_ethereum_fm_reward_evt_transfer')}} fm_reward_evt_transfer -LEFT JOIN {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} fm_operator_admin_meta ON lower(fm_operator_admin_meta.admin_address) = lower(fm_reward_evt_transfer.admin_address) -GROUP BY - 2, 4 -ORDER BY - 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql index 31f7239c..990bc31b 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql @@ -7,69 +7,5 @@ alias="fact_ethereum_ocr_reward_daily", ) }} -with - admin_address_meta as ( - select distinct admin_address - from {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily - ) - , link_usd_daily as ({{get_coingecko_price_with_latest("chainlink")}}) - , link_usd_daily_expanded_by_admin_address as ( - select - date as date_start - , price as usd_amount - , admin_address - from link_usd_daily - cross join admin_address_meta - order by - date_start - , admin_address - ) - , payment_meta as ( - select - date_start - , link_usd_daily_expanded_by_admin_address.admin_address as admin_address - , usd_amount - , ( - select - MAX(ocr_reward_evt_transfer_daily.date_start) - from - {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily - where ocr_reward_evt_transfer_daily.date_start <= link_usd_daily_expanded_by_admin_address.date_start - and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) - ) as prev_payment_date - , ( - select - min(ocr_reward_evt_transfer_daily.date_start) - from {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily - where ocr_reward_evt_transfer_daily.date_start > link_usd_daily_expanded_by_admin_address.date_start - and lower(ocr_reward_evt_transfer_daily.admin_address) = lower(link_usd_daily_expanded_by_admin_address.admin_address) - ) as next_payment_date - from link_usd_daily_expanded_by_admin_address - order by - 1, 2 - ) - , ocr_reward_daily as ( - select - payment_meta.date_start - , cast(date_trunc('month', payment_meta.date_start) as date) as date_month - , payment_meta.admin_address - , ocr_operator_admin_meta.operator_name - , COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount - , (COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount - from payment_meta - left join {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer_daily')}} ocr_reward_evt_transfer_daily - on payment_meta.next_payment_date = ocr_reward_evt_transfer_daily.date_start - and lower(payment_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) - left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) - order by date_start - ) -select - 'ethereum' as chain - , date_start - , date_month - , admin_address - , operator_name - , token_amount - , usd_amount -from ocr_reward_daily -order by 2, 4 \ No newline at end of file + + {{ chainlink_ocr_rewards_daily('ethereum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql deleted file mode 100644 index 8bc31ced..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer.sql +++ /dev/null @@ -1,27 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_ocr_reward_evt_transfer", - ) -}} - - -select - 'ethereum' as chain - , reward_evt_transfer.to_address as admin_address - , max(operator_name) as operator_name - , max(reward_evt_transfer.block_timestamp) as evt_block_time - , max(reward_evt_transfer.amount) as token_value -from ethereum_flipside.core.ez_token_transfers reward_evt_transfer -right join {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }} ocr_reward_transmission_logs - on lower(ocr_reward_transmission_logs.contract_address) = lower(reward_evt_transfer.from_address) -left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta - on lower(ocr_operator_admin_meta.admin_address) = lower(reward_evt_transfer.to_address) -where lower(reward_evt_transfer.from_address) in (select lower(contract_address) from {{ ref('fact_chainlink_ethereum_ocr_reward_transmission_logs') }}) -GROUP BY - reward_evt_transfer.tx_hash - , reward_evt_transfer.event_index - , reward_evt_transfer.to_address \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql deleted file mode 100644 index d492a27d..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_evt_transfer_daily.sql +++ /dev/null @@ -1,25 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_ocr_reward_evt_transfer_daily", - ) -}} - - -select - 'ethereum' as chain - , evt_block_time::date as date_start - , max(cast(date_trunc('month', evt_block_time) as date)) as date_month - , ocr_reward_evt_transfer.admin_address as admin_address - , max(ocr_reward_evt_transfer.operator_name) as operator_name - , sum(token_value) as token_amount -from - {{ref('fact_chainlink_ethereum_ocr_reward_evt_transfer')}} ocr_reward_evt_transfer - left join {{ ref('dim_chainlink_ethereum_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(ocr_reward_evt_transfer.admin_address) -group by - 2, 4 -order by - 2, 4 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql index 8cd01c68..6ba62621 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", @@ -8,18 +8,4 @@ ) }} -select - 'ethereum' as chain - , block_timestamp - , block_number - , tx_hash - , contract_address - , event_index - , event_name - , decoded_log - , tx_status -from ethereum_flipside.core.ez_decoded_event_logs -where topics[0]::string = '0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6' -{% if is_incremental() %} - and block_timestamp >= (select dateadd('day', -1, max(block_timestamp)) from {{ this }}) -{% endif %} \ No newline at end of file +{{ chainlink_logs('ethereum', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql deleted file mode 100644 index a686851a..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled.sql +++ /dev/null @@ -1,32 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_vrf_request_fulfilled", - ) -}} - - -SELECT - 'ethereum' as blockchain, - MAX(CAST(v1_request.fee AS double))/1e18 AS token_value, - MAX(v1_fulfilled.block_timestamp) as evt_block_time -FROM - {{ ref('fact_chainlink_ethereum_vrf_v1_random_request_logs') }} v1_request - INNER JOIN {{ ref('fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs') }} v1_fulfilled - ON v1_fulfilled.request_id = v1_request.request_id - GROUP BY - v1_request.tx_hash -UNION - -SELECT - 'ethereum' as blockchain, - MAX(CAST(v2_fulfilled.payment as double))/1e18 AS token_value, - MAX(v2_fulfilled.block_timestamp) as evt_block_time -FROM - {{ ref('fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs') }} v2_fulfilled - GROUP BY - v2_fulfilled.tx_hash, - v2_fulfilled.event_index \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql deleted file mode 100644 index 735cebdd..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_request_fulfilled_daily.sql +++ /dev/null @@ -1,21 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_vrf_request_fulfilled_daily", - ) -}} - - -SELECT - 'ethereum' as blockchain, - cast(date_trunc('day', evt_block_time) AS date) AS date_start, - SUM(token_value) as token_amount -FROM - {{ref('fact_chainlink_ethereum_vrf_request_fulfilled')}} vrf_request_fulfilled -GROUP BY - 2 -ORDER BY - 2 \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql index 3ffee266..1a500d92 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql +++ b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql @@ -7,27 +7,4 @@ alias="fact_ethereum_vrf_rewards_daily", ) }} - -WITH - link_usd_daily AS ( - {{get_coingecko_price_with_latest("chainlink")}} - ), - vrf_reward_daily AS ( - SELECT - vrf_daily.date_start, - COALESCE(vrf_daily.token_amount, 0) as token_amount, - COALESCE(vrf_daily.token_amount * lud.price, 0) as usd_amount - FROM - {{ref('fact_chainlink_ethereum_vrf_request_fulfilled_daily')}} vrf_daily - LEFT JOIN link_usd_daily lud ON lud.date = vrf_daily.date_start - ORDER BY date_start - ) -SELECT - 'ethereum' as blockchain, - date_start as date, - token_amount, - usd_amount -FROM - vrf_reward_daily -ORDER BY - 2 \ No newline at end of file +{{ chainlink_vrf_rewards_daily('ethereum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql deleted file mode 100644 index 7c655c1d..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_fulfilled_logs.sql +++ /dev/null @@ -1,17 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_vrf_v1_random_fulfilled_logs", - ) -}} - -select - block_timestamp, - tx_hash, - GET_PATH(decoded_log, 'requestId') as request_id -from ethereum_flipside.core.ez_decoded_event_logs -where event_name = 'RandomnessRequestFulfilled' -and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql deleted file mode 100644 index e21b2389..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v1_random_request_logs.sql +++ /dev/null @@ -1,19 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_vrf_v1_random_request_logs", - ) -}} - -select - block_timestamp, - tx_hash, - origin_from_address as tx_from, - CAST(GET_PATH(decoded_log,'fee') as double) as fee, - GET_PATH(decoded_log, 'requestID') as request_id -from ethereum_flipside.core.ez_decoded_event_logs -where event_name = 'RandomnessRequest' -and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql deleted file mode 100644 index 3bd44869..00000000 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_v2_random_fulfilled_logs.sql +++ /dev/null @@ -1,18 +0,0 @@ -{{ - config( - materialized="table", - snowflake_warehouse="CHAINLINK", - database="chainlink", - schema="raw", - alias="fact_ethereum_vrf_v2_random_fulfilled_logs", - ) -}} - -select - block_timestamp, - tx_hash, - event_index, - GET_PATH(decoded_log, 'payment') as payment -from ethereum_flipside.core.ez_decoded_event_logs -where event_name = 'RandomWordsFulfilled' -and contract_address = '0x271682deb8c4e0901d1a1550ad2e64d568e69909' \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 09931ebe..2efab454 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ dbt-bigquery==1.7.4 -dbt-core==1.7.8 +dbt-core~=1.7.0 dbt-extractor==0.5.1 dbt-semantic-interfaces==0.4.3 dbt-snowflake==1.7.1 From 2940b3891188d9ce372bccb682000eb7b2ea30b4 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 9 Jul 2024 08:48:18 -0700 Subject: [PATCH 029/213] Added Unique Ids to open league Models (#283) --- .../ton/core/ez_ton_app_open_league.sql | 2 ++ .../ton/core/ez_ton_token_open_league.sql | 2 ++ models/staging/ton/_test_fact_open_league.yml | 26 +++++++++++++++++++ .../staging/ton/fact_ton_app_open_league.sql | 8 +++++- .../ton/fact_ton_token_open_league.sql | 8 +++++- 5 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 models/staging/ton/_test_fact_open_league.yml diff --git a/models/projects/ton/core/ez_ton_app_open_league.sql b/models/projects/ton/core/ez_ton_app_open_league.sql index 1cf6c596..fa910a36 100644 --- a/models/projects/ton/core/ez_ton_app_open_league.sql +++ b/models/projects/ton/core/ez_ton_app_open_league.sql @@ -9,9 +9,11 @@ }} SELECT date + , unique_id , season , icon , name + , friendly_name , offchain_avg_dau , offchain_non_premium_users , offchain_premium_users diff --git a/models/projects/ton/core/ez_ton_token_open_league.sql b/models/projects/ton/core/ez_ton_token_open_league.sql index 67e8d388..a03b8669 100644 --- a/models/projects/ton/core/ez_ton_token_open_league.sql +++ b/models/projects/ton/core/ez_ton_token_open_league.sql @@ -9,12 +9,14 @@ }} SELECT date + , unique_id , season , has_boost , boost_link , icon , is_meme , name + , friendly_name , new_users_min_amount , price_change_normed , price_change_simple diff --git a/models/staging/ton/_test_fact_open_league.yml b/models/staging/ton/_test_fact_open_league.yml new file mode 100644 index 00000000..b38b5489 --- /dev/null +++ b/models/staging/ton/_test_fact_open_league.yml @@ -0,0 +1,26 @@ +models: + - name: fact_ton_app_open_league + columns: + - name: date + tests: ¬_nulls + - not_null + - dbt_expectations.expect_column_to_exist + - name: name + tests: *not_nulls + - name: onchain_uaw + tests: *not_nulls + - name: unique_id + tests: &unique_not_nulls + - not_null + - dbt_expectations.expect_column_values_to_be_unique +models: + - name: fact_ton_token_open_league + columns: + - name: date + tests: *not_nulls + - name: name + tests: *not_nulls + - name: token_last_tvl + tests: *not_nulls + - name: unique_id + tests: *unique_not_nulls diff --git a/models/staging/ton/fact_ton_app_open_league.sql b/models/staging/ton/fact_ton_app_open_league.sql index 2534fc2f..fd0f3856 100644 --- a/models/staging/ton/fact_ton_app_open_league.sql +++ b/models/staging/ton/fact_ton_app_open_league.sql @@ -28,10 +28,16 @@ open_league_data as ( ) SELECT date + , concat( + coalesce(cast(date as string), '_this_is_null_'), + '|', + coalesce(replace(lower(name), ' ', '_'), '_this_is_null_') + ) as unique_id , value as source_json , open_league_data.season , icon - , name + , replace(lower(name), ' ', '_') as name + , name as friendly_name , offchain_avg_dau , offchain_non_premium_users , offchain_premium_users diff --git a/models/staging/ton/fact_ton_token_open_league.sql b/models/staging/ton/fact_ton_token_open_league.sql index 18b63a15..0e1f659f 100644 --- a/models/staging/ton/fact_ton_token_open_league.sql +++ b/models/staging/ton/fact_ton_token_open_league.sql @@ -32,13 +32,19 @@ open_league_data as ( ) SELECT date + , concat( + coalesce(cast(date as string), '_this_is_null_'), + '|', + coalesce(replace(lower(name), ' ', '_'), '_this_is_null_') + ) as unique_id , value as source_json , open_league_data.season , has_boost , boost_link , icon , is_meme - , name + , replace(lower(name), ' ', '_') as name + , name as friendly_name , new_users_min_amount , price_change_normed , price_change_simple From 7b88f211c37dce964d53e42f85f0b7e26a99459c Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 10 Jul 2024 13:46:05 -0400 Subject: [PATCH 030/213] Labeling: Adding EVM Flipside Labels (#278) --- .../contracts/labeled_flipside_contracts.sql | 84 +++++++++++++++++ .../apps/dim_flipside_namespaces.sql | 84 +++++++++++++++++ .../contracts/dim_contracts_silver.sql | 91 ++++++++++++++++++- .../dim_flipside_arbitrum_contracts.sql | 6 ++ .../dim_flipside_avalanche_contracts.sql | 6 ++ .../contracts/dim_flipside_base_contracts.sql | 6 ++ .../contracts/dim_flipside_bsc_contracts.sql | 6 ++ .../contracts/dim_flipside_contracts.sql | 62 +++++-------- .../dim_flipside_ethereum_contracts.sql | 6 ++ .../dim_flipside_optimism_contracts.sql | 6 ++ .../dim_flipside_polygon_contracts.sql | 6 ++ 11 files changed, 322 insertions(+), 41 deletions(-) create mode 100644 macros/contracts/labeled_flipside_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_arbitrum_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_avalanche_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_base_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_bsc_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_ethereum_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_optimism_contracts.sql create mode 100644 models/dimensions/contracts/dim_flipside_polygon_contracts.sql diff --git a/macros/contracts/labeled_flipside_contracts.sql b/macros/contracts/labeled_flipside_contracts.sql new file mode 100644 index 00000000..418fe7e7 --- /dev/null +++ b/macros/contracts/labeled_flipside_contracts.sql @@ -0,0 +1,84 @@ +{% macro labeled_flipside_contracts(chain, token_type_identifier) %} + +with + chain_labels as ( + select + address, + blockchain as chain, + address_name as name, + lower( + trim( + replace( + replace(regexp_replace( + {% if chain == 'ethereum' %} + label, + {% else %} + project_name, + {% endif %} + '[^\x00-\x7F]', ''), ' ', '_' + ), + '-', + '_' + ), + '_' + ) + ) as namespace, + case + when label_type = 'cex' + then 'CeFi' + when label_type = 'dex' + then 'DeFi' + when label_type = 'games' + then 'Gaming' + when label_type = 'token' + then 'Token' + when label_type = 'defi' + then 'DeFi' + when label_type = 'layer2' + then 'Layer 2' + when label_type = 'nft' + then 'NFT' + when label_type = 'bridge' + then 'Bridge' + else null + end as category, + label_subtype as sub_category + from {{ chain }}_flipside.core.dim_labels + ), + manual_filter as ( + select + address, + chain, + name, + namespace, + case + when namespace = 'wormhole' then 'Bridge' else category + end as category, + sub_category + from chain_labels + where namespace is not null and namespace <> '' + ), + token_filter as ( + select + address + , '{{ chain }}' as chain + , name + , namespace + , category + , null as sub_category + from {{ ref( token_type_identifier ~ "_token_type")}} + union + select + address + , chain + , name + , namespace + , category + , sub_category + from manual_filter + where address not in (select address from {{ ref( token_type_identifier ~ "_token_type")}}) + ) +select address, chain, name, namespace, category, sub_category +from token_filter + +{% endmacro %} diff --git a/models/dimensions/apps/dim_flipside_namespaces.sql b/models/dimensions/apps/dim_flipside_namespaces.sql index 1911ed5e..ed1c8327 100644 --- a/models/dimensions/apps/dim_flipside_namespaces.sql +++ b/models/dimensions/apps/dim_flipside_namespaces.sql @@ -2,6 +2,90 @@ with flipside_namespace as ( + -- Arbitrum Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'arbitrum' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- Avalanche Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'avalanche' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- Base Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'base' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- BSC Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'bsc' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- Ethereum Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'ethereum' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- Polygon Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'polygon' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all + -- Optimism Flipside Filtered Namespaces + select + namespace, + initcap(replace(replace(namespace, '-', ' '), '_', ' ')) as friendly_name, + max(category) as category, + max(sub_category) as sub_category + from {{ ref("dim_flipside_contracts") }} + where chain = 'optimism' and namespace is not null + and category not in ('NFT', 'Token', 'ERC_1155') + group by namespace + + union all -- Sei Flipside Filtered Namespaces select namespace, diff --git a/models/dimensions/contracts/dim_contracts_silver.sql b/models/dimensions/contracts/dim_contracts_silver.sql index 711d268b..9841404c 100644 --- a/models/dimensions/contracts/dim_contracts_silver.sql +++ b/models/dimensions/contracts/dim_contracts_silver.sql @@ -5,11 +5,17 @@ with select lower(address) address, chain from {{ ref("dim_dune_contracts_post_sigma") }} union - -- add near + sei contracts + -- add near + sei select lower(address) address, chain from {{ ref("dim_flipside_contracts") }} where chain in ('near', 'sei') union + -- add arbitrum, avalanche, base, bsc, ethereum, polygon, optimism contracts that aren't token contracts + select lower(address) address, chain + from {{ ref("dim_flipside_contracts") }} + where chain in ('arbitrum', 'avalanche', 'base', 'bsc', 'ethereum', 'polygon', 'optimism') + and category not in ('NFT', 'Token', 'ERC_1155') + union -- add solana contracts that aren't token contracts select lower(address) address, chain from {{ ref("dim_flipside_contracts") }} @@ -41,6 +47,13 @@ with flipside_near.namespace, flipside_sol.namespace, flipside_sei.namespace, + flipside_arbitrum.namespace, + flipside_avalanche.namespace, + flipside_base.namespace, + flipside_bsc.namespace, + flipside_ethereum.namespace, + flipside_polygon.namespace, + flipside_optimism.namespace, null ) namespace, coalesce( @@ -51,6 +64,13 @@ with flipside_near.name, flipside_sol.name, flipside_sei.name, + flipside_arbitrum.name, + flipside_avalanche.name, + flipside_base.name, + flipside_bsc.name, + flipside_ethereum.name, + flipside_polygon.name, + flipside_optimism.name, null ) as name from distinct_contract dc @@ -72,6 +92,48 @@ with on lower(dc.address) = lower(flipside_sei.address) and dc.chain = flipside_sei.chain and flipside_sei.chain = 'sei' + left join + {{ ref("dim_flipside_contracts") }} as flipside_arbitrum + on lower(dc.address) = lower(flipside_arbitrum.address) + and dc.chain = flipside_arbitrum.chain + and flipside_arbitrum.chain = 'arbitrum' + and flipside_arbitrum.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_avalanche + on lower(dc.address) = lower(flipside_avalanche.address) + and dc.chain = flipside_avalanche.chain + and flipside_avalanche.chain = 'avalanche' + and flipside_avalanche.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_base + on lower(dc.address) = lower(flipside_base.address) + and dc.chain = flipside_base.chain + and flipside_base.chain = 'base' + and flipside_base.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_bsc + on lower(dc.address) = lower(flipside_bsc.address) + and dc.chain = flipside_bsc.chain + and flipside_bsc.chain = 'bsc' + and flipside_bsc.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_ethereum + on lower(dc.address) = lower(flipside_ethereum.address) + and dc.chain = flipside_ethereum.chain + and flipside_ethereum.chain = 'ethereum' + and flipside_ethereum.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_polygon + on lower(dc.address) = lower(flipside_polygon.address) + and dc.chain = flipside_polygon.chain + and flipside_polygon.chain = 'polygon' + and flipside_polygon.category not in ('NFT', 'Token', 'ERC_1155') + left join + {{ ref("dim_flipside_contracts") }} as flipside_optimism + on lower(dc.address) = lower(flipside_optimism.address) + and dc.chain = flipside_optimism.chain + and flipside_optimism.chain = 'optimism' + and flipside_optimism.category not in ('NFT', 'Token', 'ERC_1155') left join {{ ref("dim_flipside_contracts") }} as flipside_sol on lower(dc.address) = lower(flipside_sol.address) @@ -131,7 +193,32 @@ with select address, name, chain, category from {{ ref("dim_flipside_contracts") }} where - chain not in ('near', 'solana', 'sei') and category in ('NFT', 'Token', 'ERC_1155') + chain not in ( + 'near', + 'solana', + 'sei', + 'arbitrum', + 'avalanche', + 'base', + 'bsc', + 'ethereum', + 'polygon', + 'optimism' + ) and category in ('NFT', 'Token', 'ERC_1155') + union + -- Explicitly select the chains that have token contracts + select address, name, chain, category + from {{ ref("dim_flipside_contracts") }} + where + chain in ( + 'arbitrum', + 'avalanche', + 'base', + 'bsc', + 'ethereum', + 'polygon', + 'optimism' + ) and category in ('NFT', 'Token', 'ERC_1155') union select address, name, chain, category from {{ ref("dim_flipside_contracts") }} diff --git a/models/dimensions/contracts/dim_flipside_arbitrum_contracts.sql b/models/dimensions/contracts/dim_flipside_arbitrum_contracts.sql new file mode 100644 index 00000000..37dd526b --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_arbitrum_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("arbitrum", "arb") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_avalanche_contracts.sql b/models/dimensions/contracts/dim_flipside_avalanche_contracts.sql new file mode 100644 index 00000000..e414ff64 --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_avalanche_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("avalanche", "avax") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_base_contracts.sql b/models/dimensions/contracts/dim_flipside_base_contracts.sql new file mode 100644 index 00000000..26d78edb --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_base_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("base", "base") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_bsc_contracts.sql b/models/dimensions/contracts/dim_flipside_bsc_contracts.sql new file mode 100644 index 00000000..bf71fa7b --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_bsc_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("bsc", "bsc") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_contracts.sql b/models/dimensions/contracts/dim_flipside_contracts.sql index c50510dc..62213fa1 100644 --- a/models/dimensions/contracts/dim_flipside_contracts.sql +++ b/models/dimensions/contracts/dim_flipside_contracts.sql @@ -1,57 +1,41 @@ {{ config(materialized="table") }} with flipside_contract as ( - select - address, - name, - namespace, - null as sub_category, - category, - 'arbitrum' as chain - from {{ ref("arb_token_type") }} + select address, name, namespace, sub_category, category, 'arbitrum' as chain + from {{ ref("dim_flipside_arbitrum_contracts") }} + union - select - address, - name, - namespace, - null as sub_category, - category, - 'avalanche' as chain - from {{ ref("avax_token_type") }} + select address, name, namespace, sub_category, category, 'avalanche' as chain + from {{ ref("dim_flipside_avalanche_contracts") }} + union - select address, name, namespace, null as sub_category, category, 'base' as chain - from {{ ref("base_token_type") }} + select address, name, namespace, sub_category, category, 'base' as chain + from {{ ref("dim_flipside_base_contracts") }} + union - select address, name, namespace, null as sub_category, category, 'bsc' as chain - from {{ ref("bsc_token_type") }} + select address, name, namespace, sub_category, category, 'bsc' as chain + from {{ ref("dim_flipside_bsc_contracts") }} + union - select - address, - name, - namespace, - null as sub_category, - category, - 'ethereum' as chain - from {{ ref("eth_token_type") }} + select address, name, namespace, sub_category, category, 'ethereum' as chain + from {{ ref("dim_flipside_ethereum_contracts") }} + union - select - address, name, namespace, null as sub_category, category, 'polygon' as chain - from {{ ref("polygon_token_type") }} + select address, name, namespace, sub_category, category, 'polygon' as chain + from {{ ref("dim_flipside_polygon_contracts") }} + union - select - address, - name, - namespace, - null as sub_category, - category, - 'optimism' as chain - from {{ ref("opt_token_type") }} + select address, name, namespace, sub_category, category, 'optimism' as chain + from {{ ref("dim_flipside_optimism_contracts") }} + union select address, name, namespace, sub_category, category, 'near' as chain from {{ ref("dim_flipside_near_contracts") }} + union select address, name, namespace, sub_category, category, 'solana' as chain from {{ ref("dim_flipside_solana_contracts") }} + union select address, name, namespace, sub_category, category, 'sei' as chain from {{ ref("dim_flipside_sei_contracts") }} diff --git a/models/dimensions/contracts/dim_flipside_ethereum_contracts.sql b/models/dimensions/contracts/dim_flipside_ethereum_contracts.sql new file mode 100644 index 00000000..1640d437 --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_ethereum_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("ethereum", "eth") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_optimism_contracts.sql b/models/dimensions/contracts/dim_flipside_optimism_contracts.sql new file mode 100644 index 00000000..b0d2d41a --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_optimism_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("optimism", "opt") }} \ No newline at end of file diff --git a/models/dimensions/contracts/dim_flipside_polygon_contracts.sql b/models/dimensions/contracts/dim_flipside_polygon_contracts.sql new file mode 100644 index 00000000..903ae16d --- /dev/null +++ b/models/dimensions/contracts/dim_flipside_polygon_contracts.sql @@ -0,0 +1,6 @@ +{{ + config( + materialized="table", + ) +}} +{{ labeled_flipside_contracts("polygon", "polygon") }} \ No newline at end of file From f0c728b83c8d182425d51b6ea9fcb1efdc676e70 Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Wed, 10 Jul 2024 15:51:46 -0400 Subject: [PATCH 031/213] SQL Pre-Commit Hook (#285) --- .pre-commit-config.yaml | 9 +++++++ .sqlfluff | 25 +++++++++++++++++++ dbt_scripts/run_sqlfluff_on_changed_files.sh | 19 ++++++++++++++ .../fact_tron_stablecoin_contracts.sql | 20 ++++++++++----- requirements.txt | 4 ++- syncenv | 3 +++ 6 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 .sqlfluff create mode 100755 dbt_scripts/run_sqlfluff_on_changed_files.sh diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..e704a1ac --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,9 @@ +--- +repos: + - repo: local + hooks: + - id: sqlfluff-changed-files + name: sqlfluff-changed-files + entry: ./dbt_scripts/run_sqlfluff_on_changed_files.sh + language: script + files: \.sql$ diff --git a/.sqlfluff b/.sqlfluff new file mode 100644 index 00000000..8b5a62d7 --- /dev/null +++ b/.sqlfluff @@ -0,0 +1,25 @@ +# .sqlfluff configuration file +[sqlfluff] +dialect = snowflake +templater = jinja + +# General linting rules +[sqlfluff:rules] +max_line_length = 100 # Set maximum line length +tab_space_size = 4 # Define tab space size + +# Specific rule configurations +[sqlfluff:rules:L003] # Indentation should be a multiple of 4 spaces +tab_space_size = 4 + +[sqlfluff:rules:capitalisation.keywords] +capitalisation_policy = upper + +[sqlfluff:rules:capitalisation.identifiers] # Inconsistent capitalisation of unquoted identifiers +extended_capitalisation_policy = consistent + +[sqlfluff:rules:references.consistent] # Avoid using aliases in join clauses +single_table_references = consistent + +[sqlfluff:layout:type:comma] +line_position = leading \ No newline at end of file diff --git a/dbt_scripts/run_sqlfluff_on_changed_files.sh b/dbt_scripts/run_sqlfluff_on_changed_files.sh new file mode 100755 index 00000000..30644405 --- /dev/null +++ b/dbt_scripts/run_sqlfluff_on_changed_files.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Get the list of changed SQL files +CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.sql$') + +if [ -z "$CHANGED_FILES" ]; then + echo "No changed SQL files to lint" + exit 0 +fi + +# Run SQLFluff on each changed SQL file +for file in $CHANGED_FILES; do + sqlfluff fix "$file" + if [ $? -ne 0 ]; then + echo "SQLFluff found issues in $file" + exit 1 + fi +done + +exit 0 diff --git a/models/metrics/stablecoins/contracts/fact_tron_stablecoin_contracts.sql b/models/metrics/stablecoins/contracts/fact_tron_stablecoin_contracts.sql index 0fc8e208..1b66fb5a 100644 --- a/models/metrics/stablecoins/contracts/fact_tron_stablecoin_contracts.sql +++ b/models/metrics/stablecoins/contracts/fact_tron_stablecoin_contracts.sql @@ -1,8 +1,16 @@ {{ config(materialized="table") }} -select symbol, contract_address, num_decimals, coingecko_id, initial_supply -from +SELECT + symbol + , contract_address + , num_decimals + , coingecko_id + , initial_supply +FROM ( - values - ('USDC', 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', 6, 'usd-coin', 0), - ('USDT', 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 6, 'tether', 0) - ) as results(symbol, contract_address, num_decimals, coingecko_id, initial_supply) + VALUES + ('USDC', 'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', 6, 'usd-coin', 0) + , ('USDT', 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 6, 'tether', 0) + ) + AS results ( + symbol, contract_address, num_decimals, coingecko_id, initial_supply + ) diff --git a/requirements.txt b/requirements.txt index 2efab454..937c2bdf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,6 @@ dbt-extractor==0.5.1 dbt-semantic-interfaces==0.4.3 dbt-snowflake==1.7.1 pandas==2.0.2 -numpy==1.26.4 \ No newline at end of file +numpy==1.26.4 +sqlfluff==3.1.0 +pre-commit \ No newline at end of file diff --git a/syncenv b/syncenv index 5ba1f383..e4b478a1 100644 --- a/syncenv +++ b/syncenv @@ -1,5 +1,8 @@ python3 -m venv venv . ./venv/bin/activate +pip install -r requirements.txt + +chmod +x dbt_scripts/run_sqlfluff_on_changed_files.sh source .env.local From d04cb5d965ee7200101b1ec4cf0bd764ada8f1e2 Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Wed, 10 Jul 2024 15:56:15 -0400 Subject: [PATCH 032/213] readme update --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c376835f..f3a8ce09 100644 --- a/README.md +++ b/README.md @@ -56,8 +56,9 @@ There are two ways to get help: ## Environment Setup 1. Fork this repository (button towards the top right) -2. Write SQL model changes -3. Open a PR and view results of your changes directly in the Github Actions - more on this in [adding a new metric](#adding-a-new-metric). +2. Run `source syncenv` to download dependencies +3. Write SQL model changes +4. Open a PR and view results of your changes directly in the Github Actions - more on this in [adding a new metric](#adding-a-new-metric). ## System Design From 129459e28158d6648593076476f69f3689b4b0c9 Mon Sep 17 00:00:00 2001 From: alexwes Date: Thu, 11 Jul 2024 12:27:41 -0400 Subject: [PATCH 033/213] adding akash mints and burns data (#288) --- models/projects/akash/core/ez_akash_metrics.sql | 10 ++++++++-- models/staging/akash/__akash__sources.yml | 2 ++ .../akash/fact_akash_burns_native_silver.sql | 17 +++++++++++++++++ .../staging/akash/fact_akash_mints_silver.sql | 17 +++++++++++++++++ 4 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 models/staging/akash/fact_akash_burns_native_silver.sql create mode 100644 models/staging/akash/fact_akash_mints_silver.sql diff --git a/models/projects/akash/core/ez_akash_metrics.sql b/models/projects/akash/core/ez_akash_metrics.sql index 1f2c218e..26d9a03b 100644 --- a/models/projects/akash/core/ez_akash_metrics.sql +++ b/models/projects/akash/core/ez_akash_metrics.sql @@ -26,7 +26,9 @@ with ), validator_fees as (select * from {{ ref("fact_akash_validator_fees_silver") }}), total_fees as (select * from {{ ref("fact_akash_total_fees_silver") }}), - revenue as (select * from {{ ref("fact_akash_revenue_silver") }}) + revenue as (select * from {{ ref("fact_akash_revenue_silver") }}), + burns as (select * from {{ ref("fact_akash_burns_native_silver") }}), + mints as (select * from {{ ref("fact_akash_mints_silver") }}) select active_leases.date, @@ -41,7 +43,9 @@ select coalesce(validator_fees_native.validator_fees_native, 0) as validator_fees_native, coalesce(validator_fees.validator_fees, 0) as validator_fees, coalesce(total_fees.total_fees, 0) as total_fees, - coalesce(revenue.revenue, 0) as revenue + coalesce(revenue.revenue, 0) as revenue, + coalesce(burns.total_burned_native, 0) as total_burned_native, + coalesce(mints.mints, 0) as mints from active_leases full join active_providers on active_leases.date = active_providers.date full join new_leases on active_leases.date = new_leases.date @@ -52,5 +56,7 @@ full join validator_fees_native on active_leases.date = validator_fees_native.da full join validator_fees on active_leases.date = validator_fees.date full join total_fees on active_leases.date = total_fees.date full join revenue on active_leases.date = revenue.date +full join burns on active_leases.date = burns.date +full join mints on active_leases.date = mints.date where active_leases.date < to_date(sysdate()) order by date desc diff --git a/models/staging/akash/__akash__sources.yml b/models/staging/akash/__akash__sources.yml index 1c19c7e0..26838f62 100644 --- a/models/staging/akash/__akash__sources.yml +++ b/models/staging/akash/__akash__sources.yml @@ -10,3 +10,5 @@ sources: - name: raw_akash_compute_fees_usdc - name: raw_akash_compute_fees_total_usd - name: raw_akash_validator_fees + - name: raw_akash_burns_native + - name: raw_akash_mints_native diff --git a/models/staging/akash/fact_akash_burns_native_silver.sql b/models/staging/akash/fact_akash_burns_native_silver.sql new file mode 100644 index 00000000..19589b10 --- /dev/null +++ b/models/staging/akash/fact_akash_burns_native_silver.sql @@ -0,0 +1,17 @@ +with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_akash_burns_native") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_akash_burns_native") }} + where extraction_date = (select max_date from max_extraction) + ), + flattened_data as ( + select date(to_timestamp(value:date::number / 1000)) as date, + value:"total"::float as total_burned_native + from latest_data, lateral flatten(input => data) + ) +select date, total_burned_native, 'akash' as chain +from flattened_data \ No newline at end of file diff --git a/models/staging/akash/fact_akash_mints_silver.sql b/models/staging/akash/fact_akash_mints_silver.sql new file mode 100644 index 00000000..4d8c9a60 --- /dev/null +++ b/models/staging/akash/fact_akash_mints_silver.sql @@ -0,0 +1,17 @@ +with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_akash_mints_native") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_akash_mints_native") }} + where extraction_date = (select max_date from max_extraction) + ), + flattened_data as ( + select date(to_timestamp(value:date::number / 1000)) as date, + value:"total"::float as mints + from latest_data, lateral flatten(input => data) + ) +select date, mints, 'akash' as chain +from flattened_data \ No newline at end of file From c3e74c42c6285eaf0c3c014026c95ac8d32c2a65 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 11 Jul 2024 14:16:57 -0700 Subject: [PATCH 034/213] Added Season 5 to Ton Open League (#291) --- models/staging/ton/dim_ton_open_league_dates.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/models/staging/ton/dim_ton_open_league_dates.sql b/models/staging/ton/dim_ton_open_league_dates.sql index 71231b83..53d77e4e 100644 --- a/models/staging/ton/dim_ton_open_league_dates.sql +++ b/models/staging/ton/dim_ton_open_league_dates.sql @@ -6,5 +6,9 @@ from ( 4, '2024-06-26' + ), + ( + 5, + '2024-08-07' ) ) as results(season, end_date) From 21ee7297864365bdfa0a10428a3ec80ff12c7acf Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 12 Jul 2024 09:14:45 -0400 Subject: [PATCH 035/213] Chainlink: adding gnosis, base, avalanche, bsc, arbitrum, optimism, polygon (#286) --- .../chainlink_ccip_rewards_daily.sql | 20 +- ...hainlink_direct_operator_rewards_daily.sql | 14 + .../chainlink/chainlink_ocr_rewards_daily.sql | 16 +- .../chainlink_vrf_request_fulfilled_logs.sql | 58 +++ .../chainlink/chainlink_vrf_rewards_daily.sql | 56 +-- .../prod_core/ez_chainlink_metrics.sql | 83 ++++- .../ez_chainlink_metrics_by_chain.sql | 66 +++- .../ez_chainlink_metrics_by_token.sql | 88 ++++- ...im_chainlink_arbitrum_ccip_onramp_meta.sql | 35 ++ ...dim_chainlink_arbitrum_ccip_token_meta.sql | 18 + ...nlink_arbitrum_ocr_operator_admin_meta.sql | 45 +++ ..._arbitrum_price_feeds_oracle_addresses.sql | 189 ++++++++++ ...t_chainlink_arbitrum_ccip_reward_daily.sql | 11 + ...k_arbitrum_ccip_send_requested_logs_v1.sql | 11 + ...arbitrum_ccip_send_requested_logs_v1_2.sql | 12 + ...hainlink_arbitrum_direct_rewards_daily.sql | 11 + ...act_chainlink_arbitrum_fm_reward_daily.sql | 11 + ...ct_chainlink_arbitrum_ocr_reward_daily.sql | 11 + ..._arbitrum_ocr_reward_transmission_logs.sql | 11 + ...nk_arbitrum_vrf_request_fulfilled_logs.sql | 10 + ...t_chainlink_arbitrum_vrf_rewards_daily.sql | 10 + ...im_chainlink_avalanche_automation_meta.sql | 52 +++ ...m_chainlink_avalanche_ccip_onramp_meta.sql | 33 ++ ...im_chainlink_avalanche_ccip_token_meta.sql | 18 + ...link_avalanche_ocr_operator_admin_meta.sql | 50 +++ ...avalanche_price_feeds_oracle_addresses.sql | 173 +++++++++ ...link_avalanche_automation_reward_daily.sql | 12 + ...anche_automation_upkeep_performed_logs.sql | 12 + ..._chainlink_avalanche_ccip_reward_daily.sql | 11 + ..._avalanche_ccip_send_requested_logs_v1.sql | 11 + ...valanche_ccip_send_requested_logs_v1_2.sql | 11 + ...ainlink_avalanche_direct_rewards_daily.sql | 11 + ...ct_chainlink_avalanche_fm_reward_daily.sql | 11 + ...t_chainlink_avalanche_ocr_reward_daily.sql | 11 + ...avalanche_ocr_reward_transmission_logs.sql | 11 + ...k_avalanche_vrf_request_fulfilled_logs.sql | 10 + ..._chainlink_avalanche_vrf_rewards_daily.sql | 10 + .../dim_chainlink_base_ccip_onramp_meta.sql | 32 ++ .../dim_chainlink_base_ccip_token_meta.sql | 18 + .../fact_chainlink_base_ccip_reward_daily.sql | 11 + ...nlink_base_ccip_send_requested_logs_v1.sql | 11 + ...ink_base_ccip_send_requested_logs_v1_2.sql | 12 + .../bsc/dim_chainlink_bsc_automation_meta.sql | 53 +++ .../dim_chainlink_bsc_ccip_onramp_meta.sql | 33 ++ .../bsc/dim_chainlink_bsc_ccip_token_meta.sql | 18 + ..._chainlink_bsc_ocr_operator_admin_meta.sql | 71 ++++ ...nlink_bsc_price_feeds_oracle_addresses.sql | 329 ++++++++++++++++++ ..._chainlink_bsc_automation_reward_daily.sql | 12 + ...k_bsc_automation_upkeep_performed_logs.sql | 12 + .../fact_chainlink_bsc_ccip_reward_daily.sql | 11 + ...inlink_bsc_ccip_send_requested_logs_v1.sql | 11 + ...link_bsc_ccip_send_requested_logs_v1_2.sql | 12 + ...act_chainlink_bsc_direct_rewards_daily.sql | 11 + .../fact_chainlink_bsc_fm_reward_daily.sql | 11 + .../fact_chainlink_bsc_ocr_reward_daily.sql | 11 + ...nlink_bsc_ocr_reward_transmission_logs.sql | 11 + ...ainlink_bsc_vrf_request_fulfilled_logs.sql | 10 + .../fact_chainlink_bsc_vrf_rewards_daily.sql | 10 + ...dim_chainlink_ethereum_automation_meta.sql | 0 ...im_chainlink_ethereum_ccip_onramp_meta.sql | 8 +- ...dim_chainlink_ethereum_ccip_token_meta.sql | 0 ...nlink_ethereum_ocr_operator_admin_meta.sql | 0 ..._ethereum_price_feeds_oracle_addresses.sql | 0 ...nlink_ethereum_automation_reward_daily.sql | 0 ...ereum_automation_upkeep_performed_logs.sql | 0 ...t_chainlink_ethereum_ccip_reward_daily.sql | 0 ...k_ethereum_ccip_send_requested_logs_v1.sql | 2 +- ...ethereum_ccip_send_requested_logs_v1_2.sql | 2 +- ...hainlink_ethereum_direct_rewards_daily.sql | 11 + ...act_chainlink_ethereum_fm_reward_daily.sql | 0 ...ct_chainlink_ethereum_ocr_reward_daily.sql | 0 ..._ethereum_ocr_reward_transmission_logs.sql | 0 ...nk_ethereum_vrf_request_fulfilled_logs.sql | 10 + ...t_chainlink_ethereum_vrf_rewards_daily.sql | 0 ...ainlink_gnosis_ocr_operator_admin_meta.sql | 39 +++ ...nk_gnosis_price_feeds_oracle_addresses.sql | 107 ++++++ ..._chainlink_gnosis_direct_rewards_daily.sql | 11 + .../fact_chainlink_gnosis_fm_reward_daily.sql | 11 + ...fact_chainlink_gnosis_ocr_reward_daily.sql | 11 + ...nk_gnosis_ocr_reward_transmission_logs.sql | 11 + ...im_chainlink_optimism_ccip_onramp_meta.sql | 33 ++ ...dim_chainlink_optimism_ccip_token_meta.sql | 19 + ...nlink_optimism_ocr_operator_admin_meta.sql | 38 ++ ..._optimism_price_feeds_oracle_addresses.sql | 193 ++++++++++ ...t_chainlink_optimism_ccip_reward_daily.sql | 11 + ...k_optimism_ccip_send_requested_logs_v1.sql | 11 + ...optimism_ccip_send_requested_logs_v1_2.sql | 12 + ...hainlink_optimism_direct_rewards_daily.sql | 11 + ...act_chainlink_optimism_fm_reward_daily.sql | 11 + ...ct_chainlink_optimism_ocr_reward_daily.sql | 11 + ..._optimism_ocr_reward_transmission_logs.sql | 11 + ...nk_optimism_vrf_request_fulfilled_logs.sql | 10 + ...t_chainlink_optimism_vrf_rewards_daily.sql | 10 + .../dim_chainlink_polygon_automation_meta.sql | 56 +++ ...dim_chainlink_polygon_ccip_onramp_meta.sql | 33 ++ .../dim_chainlink_polygon_ccip_token_meta.sql | 18 + ...inlink_polygon_ocr_operator_admin_meta.sql | 61 ++++ ...k_polygon_price_feeds_oracle_addresses.sql | 215 ++++++++++++ ...inlink_polygon_automation_reward_daily.sql | 12 + ...lygon_automation_upkeep_performed_logs.sql | 12 + ...ct_chainlink_polygon_ccip_reward_daily.sql | 11 + ...nk_polygon_ccip_send_requested_logs_v1.sql | 11 + ..._polygon_ccip_send_requested_logs_v1_2.sql | 12 + ...chainlink_polygon_direct_rewards_daily.sql | 11 + ...fact_chainlink_polygon_fm_reward_daily.sql | 11 + ..._chainlink_polygon_ocr_reconcile_daily.sql | 69 ++++ ...act_chainlink_polygon_ocr_reward_daily.sql | 11 + ...k_polygon_ocr_reward_transmission_logs.sql | 11 + ...ink_polygon_vrf_request_fulfilled_logs.sql | 10 + ...ct_chainlink_polygon_vrf_rewards_daily.sql | 10 + 110 files changed, 3028 insertions(+), 93 deletions(-) create mode 100644 macros/chainlink/chainlink_direct_operator_rewards_daily.sql create mode 100644 macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_automation_meta.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_upkeep_performed_logs.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_automation_meta.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_upkeep_performed_logs.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_rewards_daily.sql rename models/projects/chainlink/prod_raw/{ => ethereum}/dim_chainlink_ethereum_automation_meta.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/dim_chainlink_ethereum_ccip_onramp_meta.sql (79%) rename models/projects/chainlink/prod_raw/{ => ethereum}/dim_chainlink_ethereum_ccip_token_meta.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/dim_chainlink_ethereum_ocr_operator_admin_meta.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_automation_reward_daily.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_ccip_reward_daily.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql (88%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql (88%) create mode 100644 models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_direct_rewards_daily.sql rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_fm_reward_daily.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_ocr_reward_daily.sql (100%) rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql (100%) create mode 100644 models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_request_fulfilled_logs.sql rename models/projects/chainlink/prod_raw/{ => ethereum}/fact_chainlink_ethereum_vrf_rewards_daily.sql (100%) create mode 100644 models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_automation_meta.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_onramp_meta.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_token_meta.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ocr_operator_admin_meta.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_price_feeds_oracle_addresses.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_upkeep_performed_logs.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1_2.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_direct_rewards_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_fm_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reconcile_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_daily.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_transmission_logs.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_request_fulfilled_logs.sql create mode 100644 models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_rewards_daily.sql diff --git a/macros/chainlink/chainlink_ccip_rewards_daily.sql b/macros/chainlink/chainlink_ccip_rewards_daily.sql index 10d8d882..89a4fe33 100644 --- a/macros/chainlink/chainlink_ccip_rewards_daily.sql +++ b/macros/chainlink/chainlink_ccip_rewards_daily.sql @@ -54,14 +54,30 @@ with from ccip_send_requested group by date_start, token, destination_chain ) - , eth_price as ({{ get_coingecko_price_with_latest('ethereum') }}) + {% if chain == 'avalanche' %} + , native_price as ({{ get_coingecko_price_with_latest('avalanche-2') }}) + {% elif chain == 'bsc' %} + , native_price as ({{ get_coingecko_price_with_latest('binancecoin') }}) + {% elif chain == 'polygon' %} + , native_price as ({{ get_coingecko_price_with_latest('matic-network') }}) + {% else %} + , native_price as ({{ get_coingecko_price_with_latest('ethereum') }}) + {% endif %} , link_price as ({{ get_coingecko_price_with_latest('chainlink') }}) , token_usd_daily AS ( select date as date_start + {% if chain == 'avalanche' %} + , 'AVAX' as symbol + {% elif chain == 'bsc' %} + , 'WBNB' as symbol + {% elif chain == 'polygon' %} + , 'WMATIC' as symbol + {% else %} , 'WETH' as symbol + {% endif %} , price as usd_amount - from eth_price + from native_price union all diff --git a/macros/chainlink/chainlink_direct_operator_rewards_daily.sql b/macros/chainlink/chainlink_direct_operator_rewards_daily.sql new file mode 100644 index 00000000..e613c653 --- /dev/null +++ b/macros/chainlink/chainlink_direct_operator_rewards_daily.sql @@ -0,0 +1,14 @@ +{% macro chainlink_direct_operator_rewards_daily(chain) %} +with +prices as ({{get_coingecko_price_with_latest("chainlink")}}) +select + date(block_timestamp) as date + , '{{chain}}' as chain + , sum(decoded_log:"payment"::number / 1e18) as token_amount + , sum(decoded_log:"payment"::number / 1e18 * p.price) as usd_amount +from {{ chain }}_flipside.core.ez_decoded_event_logs e +left join prices p on p.date = date(block_timestamp) +where topics[0]::string = '0xd8d7ecc4800d25fa53ce0372f13a416d98907a7ef3d8d3bdd79cf4fe75529c65' + and block_timestamp > date('2023-08-01') +group by 1 +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_ocr_rewards_daily.sql b/macros/chainlink/chainlink_ocr_rewards_daily.sql index 79dc5697..a63ea4d2 100644 --- a/macros/chainlink/chainlink_ocr_rewards_daily.sql +++ b/macros/chainlink/chainlink_ocr_rewards_daily.sql @@ -71,14 +71,24 @@ with , cast(date_trunc('month', payment_meta.date_start) as date) as date_month , payment_meta.admin_address , ocr_operator_admin_meta.operator_name - , COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount - , (COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + {% if chain == 'polygon' %} + , COALESCE((ocr_reward_evt_transfer_daily.token_amount + COALESCE(reconcile_daily.token_amount, 0)) / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE((ocr_reward_evt_transfer_daily.token_amount + COALESCE(reconcile_daily.token_amount, 0)) / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + {% else %} + , COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) as token_amount + , (COALESCE(ocr_reward_evt_transfer_daily.token_amount / DATEDIFF(day, prev_payment_date, next_payment_date), 0) * payment_meta.usd_amount) as usd_amount + {% endif %} from payment_meta left join ocr_reward_evt_transfer_daily on payment_meta.next_payment_date = ocr_reward_evt_transfer_daily.date_start and lower(payment_meta.admin_address) = lower(ocr_reward_evt_transfer_daily.admin_address) left join {{ ref('dim_chainlink_'~chain~'_ocr_operator_admin_meta') }} ocr_operator_admin_meta on lower(ocr_operator_admin_meta.admin_address) = lower(payment_meta.admin_address) + {% if chain == 'polygon' %} + LEFT JOIN {{ ref('fact_chainlink_polygon_ocr_reconcile_daily') }} reconcile_daily + ON reconcile_daily.date_start = payment_meta.date_start + AND reconcile_daily.admin_address = payment_meta.admin_address + {% endif %} ) select '{{chain}}' as chain @@ -89,5 +99,5 @@ select , token_amount , usd_amount from ocr_reward_daily -order by 2, 4 +order by 2, 4 {% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql b/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..d9004e8d --- /dev/null +++ b/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql @@ -0,0 +1,58 @@ +{% macro chainlink_vrf_request_fulfilled_logs(chain) %} +with + v1_fulfilled_logs as ( + select + block_timestamp, + tx_hash, + decoded_log:"requestId" as request_id + from {{ chain }}_flipside.core.ez_decoded_event_logs + where topics[0]::string = '0xa2e7a402243ebda4a69ceeb3dfb682943b7a9b3ac66d6eefa8db65894009611c' + {% if is_incremental() %} + and block_timestamp >= (select max(block_timestamp) from {{ this }}) + {% endif %} + ) + , v1_random_request_logs as ( + select + block_timestamp, + tx_hash, + origin_from_address as tx_from, + decoded_log:"fee"::double as fee, + decoded_log:"requestID" as request_id + from {{ chain }}_flipside.core.ez_decoded_event_logs + where topics[0]::string = '0x56bd374744a66d531874338def36c906e3a6cf31176eb1e9afd9f1de69725d51' + {% if is_incremental() %} + and block_timestamp >= (select max(block_timestamp) from {{ this }}) + {% endif %} + ) + , v2_random_fulfilled_logs as ( + select + block_timestamp, + tx_hash, + event_index, + decoded_log:"payment" as payment + from {{ chain }}_flipside.core.ez_decoded_event_logs + where topics[0]::string = '0x7dffc5ae5ee4e2e4df1651cf6ad329a73cebdb728f37ea0187b9b17e036756e4' + {% if is_incremental() %} + and block_timestamp >= (select max(block_timestamp) from {{ this }}) + {% endif %} + ) +SELECT + MAX(CAST(v1_request.fee AS double))/1e18 AS token_value, + MAX(v1_fulfilled_logs.block_timestamp) as evt_block_time +FROM + v1_random_request_logs v1_request + INNER JOIN v1_fulfilled_logs + ON v1_fulfilled_logs.request_id = v1_request.request_id + GROUP BY + v1_request.tx_hash +UNION + +SELECT + MAX(CAST(v2_random_fulfilled_logs.payment as double))/1e18 AS token_value, + MAX(v2_random_fulfilled_logs.block_timestamp) as evt_block_time +FROM + v2_random_fulfilled_logs + GROUP BY + v2_random_fulfilled_logs.tx_hash, + v2_random_fulfilled_logs.event_index +{% endmacro %} \ No newline at end of file diff --git a/macros/chainlink/chainlink_vrf_rewards_daily.sql b/macros/chainlink/chainlink_vrf_rewards_daily.sql index e34bbb57..2db9bf8a 100644 --- a/macros/chainlink/chainlink_vrf_rewards_daily.sql +++ b/macros/chainlink/chainlink_vrf_rewards_daily.sql @@ -1,55 +1,9 @@ {% macro chainlink_vrf_rewards_daily(chain) %} with - v1_fulfilled_logs as ( - select - block_timestamp, - tx_hash, - decoded_log:"requestId" as request_id - from {{ chain }}_flipside.core.ez_decoded_event_logs - where event_name = 'RandomnessRequestFulfilled' - and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' - ) - , v1_random_request_logs as ( - select - block_timestamp, - tx_hash, - origin_from_address as tx_from, - decoded_log:"fee"::double as fee, - decoded_log:"requestID" as request_id - from {{ chain }}_flipside.core.ez_decoded_event_logs - where event_name = 'RandomnessRequest' - and contract_address = '0xf0d54349addcf704f77ae15b96510dea15cb7952' - ) - , v2_random_fulfilled_logs as ( - select - block_timestamp, - tx_hash, - event_index, - decoded_log:"payment" as payment - from {{ chain }}_flipside.core.ez_decoded_event_logs - where event_name = 'RandomWordsFulfilled' - and contract_address = '0x271682deb8c4e0901d1a1550ad2e64d568e69909' - ) - , logs as ( - SELECT - MAX(CAST(v1_request.fee AS double))/1e18 AS token_value, - MAX(v1_fulfilled_logs.block_timestamp) as evt_block_time - FROM - v1_random_request_logs v1_request - INNER JOIN v1_fulfilled_logs - ON v1_fulfilled_logs.request_id = v1_request.request_id - GROUP BY - v1_request.tx_hash - UNION - - SELECT - MAX(CAST(v2_random_fulfilled_logs.payment as double))/1e18 AS token_value, - MAX(v2_random_fulfilled_logs.block_timestamp) as evt_block_time - FROM - v2_random_fulfilled_logs - GROUP BY - v2_random_fulfilled_logs.tx_hash, - v2_random_fulfilled_logs.event_index + logs as ( + select + * + from {{ ref("fact_chainlink_"~chain~"_vrf_request_fulfilled_logs")}} ) , vrf_daily as ( SELECT @@ -66,7 +20,6 @@ with COALESCE(vrf_daily.token_amount * lud.price, 0) as usd_amount FROM vrf_daily LEFT JOIN link_usd_daily lud ON lud.date = vrf_daily.date_start - ORDER BY date_start ) SELECT '{{chain}}' as blockchain @@ -74,5 +27,4 @@ with , token_amount , usd_amount from vrf_reward_daily - ORDER BY 2 {% endmacro %} \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql index 4eb488ad..1cfeffcb 100644 --- a/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql @@ -13,6 +13,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ocr_reward_daily") + , ref("fact_chainlink_arbitrum_ocr_reward_daily") + , ref("fact_chainlink_avalanche_ocr_reward_daily") + , ref("fact_chainlink_bsc_ocr_reward_daily") + , ref("fact_chainlink_gnosis_ocr_reward_daily") + , ref("fact_chainlink_optimism_ocr_reward_daily") + , ref("fact_chainlink_polygon_ocr_reward_daily") ] ) }} @@ -30,6 +36,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_fm_reward_daily") + , ref("fact_chainlink_arbitrum_fm_reward_daily") + , ref("fact_chainlink_avalanche_fm_reward_daily") + , ref("fact_chainlink_bsc_fm_reward_daily") + , ref("fact_chainlink_gnosis_fm_reward_daily") + , ref("fact_chainlink_optimism_fm_reward_daily") + , ref("fact_chainlink_polygon_fm_reward_daily") ] ) }} @@ -46,6 +58,9 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_automation_reward_daily") + , ref("fact_chainlink_avalanche_automation_reward_daily") + , ref("fact_chainlink_bsc_automation_reward_daily") + , ref("fact_chainlink_polygon_automation_reward_daily") ] ) }} @@ -63,6 +78,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ccip_reward_daily") + , ref("fact_chainlink_arbitrum_ccip_reward_daily") + , ref("fact_chainlink_avalanche_ccip_reward_daily") + , ref("fact_chainlink_base_ccip_reward_daily") + , ref("fact_chainlink_bsc_ccip_reward_daily") + , ref("fact_chainlink_optimism_ccip_reward_daily") + , ref("fact_chainlink_polygon_ccip_reward_daily") ] ) }} @@ -80,6 +101,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_vrf_rewards_daily") + , ref("fact_chainlink_arbitrum_vrf_rewards_daily") + , ref("fact_chainlink_avalanche_vrf_rewards_daily") + , ref("fact_chainlink_bsc_vrf_rewards_daily") + , ref("fact_chainlink_optimism_vrf_rewards_daily") + , ref("fact_chainlink_polygon_vrf_rewards_daily") + ] ) }} @@ -91,6 +118,28 @@ with from vrf_models group by 1 ) + , direct_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_direct_rewards_daily") + , ref("fact_chainlink_arbitrum_direct_rewards_daily") + , ref("fact_chainlink_avalanche_direct_rewards_daily") + , ref("fact_chainlink_bsc_direct_rewards_daily") + , ref("fact_chainlink_gnosis_direct_rewards_daily") + , ref("fact_chainlink_optimism_direct_rewards_daily") + , ref("fact_chainlink_polygon_direct_rewards_daily") + ] + ) + }} + ) + , direct_fees_data as ( + select + date + , sum(usd_amount) as direct_fees + from direct_models + group by 1 + ) , staking_incentive_models as ( {{ dbt_utils.union_relations( @@ -140,12 +189,13 @@ with select date - , automation_fees - , ccip_fees - , vrf_fees - , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees - , ocr_fees - , fm_fees + , coalesce(automation_fees, 0) as automation_fees + , coalesce(ccip_fees, 0) as ccip_fees + , coalesce(vrf_fees, 0) as vrf_fees + , coalesce(direct_fees, 0) as direct_fees + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) + coalesce(direct_fees, 0) as fees + , coalesce(ocr_fees, 0) as ocr_fees + , coalesce(fm_fees, 0) as fm_fees , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue , fees as secondary_supply_side_revenue , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue @@ -166,14 +216,15 @@ select , token_volume , tokenholder_count from fm_fees_data -left join orc_fees_data using(date) -left join automation_fees_data using(date) -left join ccip_fees_data using(date) -left join vrf_fees_data using(date) -left join staking_incentives_data using(date) -left join treasury_data using(date) -left join tvl_metrics using(date) -left join token_turnover_metrics using(date) -left join price_data using(date) -left join token_holder_data using(date) +left join orc_fees_data using (date) +left join automation_fees_data using (date) +left join ccip_fees_data using (date) +left join vrf_fees_data using (date) +left join direct_fees_data using (date) +left join staking_incentives_data using (date) +left join treasury_data using (date) +left join tvl_metrics using (date) +left join token_turnover_metrics using (date) +left join price_data using (date) +left join token_holder_data using (date) where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql index ab673be9..4cb275f2 100644 --- a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_chain.sql @@ -14,6 +14,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ocr_reward_daily") + , ref("fact_chainlink_arbitrum_ocr_reward_daily") + , ref("fact_chainlink_avalanche_ocr_reward_daily") + , ref("fact_chainlink_bsc_ocr_reward_daily") + , ref("fact_chainlink_gnosis_ocr_reward_daily") + , ref("fact_chainlink_optimism_ocr_reward_daily") + , ref("fact_chainlink_polygon_ocr_reward_daily") ] ) }} @@ -31,6 +37,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_fm_reward_daily") + , ref("fact_chainlink_arbitrum_fm_reward_daily") + , ref("fact_chainlink_avalanche_fm_reward_daily") + , ref("fact_chainlink_bsc_fm_reward_daily") + , ref("fact_chainlink_gnosis_fm_reward_daily") + , ref("fact_chainlink_optimism_fm_reward_daily") + , ref("fact_chainlink_polygon_fm_reward_daily") ] ) }} @@ -48,6 +60,9 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_automation_reward_daily") + , ref("fact_chainlink_avalanche_automation_reward_daily") + , ref("fact_chainlink_bsc_automation_reward_daily") + , ref("fact_chainlink_polygon_automation_reward_daily") ] ) }} @@ -65,6 +80,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ccip_reward_daily") + , ref("fact_chainlink_arbitrum_ccip_reward_daily") + , ref("fact_chainlink_avalanche_ccip_reward_daily") + , ref("fact_chainlink_base_ccip_reward_daily") + , ref("fact_chainlink_bsc_ccip_reward_daily") + , ref("fact_chainlink_optimism_ccip_reward_daily") + , ref("fact_chainlink_polygon_ccip_reward_daily") ] ) }} @@ -83,6 +104,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_vrf_rewards_daily") + , ref("fact_chainlink_arbitrum_vrf_rewards_daily") + , ref("fact_chainlink_avalanche_vrf_rewards_daily") + , ref("fact_chainlink_bsc_vrf_rewards_daily") + , ref("fact_chainlink_optimism_vrf_rewards_daily") + , ref("fact_chainlink_polygon_vrf_rewards_daily") + ] ) }} @@ -95,6 +122,29 @@ with from vrf_models group by 1, 2 ) + , direct_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_direct_rewards_daily") + , ref("fact_chainlink_arbitrum_direct_rewards_daily") + , ref("fact_chainlink_avalanche_direct_rewards_daily") + , ref("fact_chainlink_bsc_direct_rewards_daily") + , ref("fact_chainlink_gnosis_direct_rewards_daily") + , ref("fact_chainlink_optimism_direct_rewards_daily") + , ref("fact_chainlink_polygon_direct_rewards_daily") + ] + ) + }} + ) + , direct_fees_data as ( + select + date + , chain + , sum(usd_amount) as direct_fees + from direct_models + group by 1, 2 + ) , staking_incentive_models as ( {{ dbt_utils.union_relations( @@ -116,18 +166,19 @@ with select date , chain - , automation_fees - , ccip_fees - , vrf_fees - , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees - , ocr_fees - , fm_fees + , coalesce(automation_fees, 0) as automation_fees + , coalesce(ccip_fees, 0) as ccip_fees + , coalesce(vrf_fees, 0) as vrf_fees + , coalesce(direct_fees, 0) as direct_fees + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) + coalesce(direct_fees, 0) as fees + , coalesce(ocr_fees, 0) as ocr_fees + , coalesce(fm_fees, 0) as fm_fees , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue , fees as secondary_supply_side_revenue , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue , 0 as protocol_revenue , primary_supply_side_revenue as operating_expenses - , token_incentives + , coalesce(token_incentives, 0) as token_incentives , coalesce(operating_expenses, 0) + coalesce(token_incentives, 0) as total_expenses , protocol_revenue - total_expenses as earnings from fm_fees_data @@ -136,4 +187,5 @@ left join automation_fees_data using(date, chain) left join ccip_fees_data using(date, chain) left join vrf_fees_data using(date, chain) left join staking_incentives_data using(date, chain) +left join direct_fees_data using(date, chain) where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql index 78981ac7..6d32db3c 100644 --- a/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics_by_token.sql @@ -14,6 +14,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ocr_reward_daily") + , ref("fact_chainlink_arbitrum_ocr_reward_daily") + , ref("fact_chainlink_avalanche_ocr_reward_daily") + , ref("fact_chainlink_bsc_ocr_reward_daily") + , ref("fact_chainlink_gnosis_ocr_reward_daily") + , ref("fact_chainlink_optimism_ocr_reward_daily") + , ref("fact_chainlink_polygon_ocr_reward_daily") ] ) }} @@ -24,6 +30,7 @@ with , chain , 'LINK' as token , sum(usd_amount) as ocr_fees + , sum(token_amount) as ocr_fees_native from ocr_models group by 1, 2 ) @@ -32,6 +39,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_fm_reward_daily") + , ref("fact_chainlink_arbitrum_fm_reward_daily") + , ref("fact_chainlink_avalanche_fm_reward_daily") + , ref("fact_chainlink_bsc_fm_reward_daily") + , ref("fact_chainlink_gnosis_fm_reward_daily") + , ref("fact_chainlink_optimism_fm_reward_daily") + , ref("fact_chainlink_polygon_fm_reward_daily") ] ) }} @@ -42,6 +55,7 @@ with , chain , 'LINK' as token , sum(usd_amount) as fm_fees + , sum(token_amount) as fm_fees_native from fm_models group by 1, 2 ) @@ -50,6 +64,9 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_automation_reward_daily") + , ref("fact_chainlink_avalanche_automation_reward_daily") + , ref("fact_chainlink_bsc_automation_reward_daily") + , ref("fact_chainlink_polygon_automation_reward_daily") ] ) }} @@ -60,6 +77,7 @@ with , chain , 'LINK' as token , sum(usd_amount) as automation_fees + , sum(token_amount) as automation_fees_native from automation_models group by 1, 2 ) @@ -68,6 +86,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_ccip_reward_daily") + , ref("fact_chainlink_arbitrum_ccip_reward_daily") + , ref("fact_chainlink_avalanche_ccip_reward_daily") + , ref("fact_chainlink_base_ccip_reward_daily") + , ref("fact_chainlink_bsc_ccip_reward_daily") + , ref("fact_chainlink_optimism_ccip_reward_daily") + , ref("fact_chainlink_polygon_ccip_reward_daily") ] ) }} @@ -79,6 +103,7 @@ with -- different tokens are paid out in ccip fees , token , sum(usd_amount) as ccip_fees + , sum(token_amount) as ccip_fees_native from ccip_models group by 1, 2, 3 ) @@ -87,6 +112,12 @@ with dbt_utils.union_relations( relations=[ ref("fact_chainlink_ethereum_vrf_rewards_daily") + , ref("fact_chainlink_arbitrum_vrf_rewards_daily") + , ref("fact_chainlink_avalanche_vrf_rewards_daily") + , ref("fact_chainlink_bsc_vrf_rewards_daily") + , ref("fact_chainlink_optimism_vrf_rewards_daily") + , ref("fact_chainlink_polygon_vrf_rewards_daily") + ] ) }} @@ -97,9 +128,35 @@ with , blockchain as chain , 'LINK' as token , sum(usd_amount) as vrf_fees + , sum(token_amount) as vrf_fees_native from vrf_models group by 1, 2 ) + , direct_models as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_chainlink_ethereum_direct_rewards_daily") + , ref("fact_chainlink_arbitrum_direct_rewards_daily") + , ref("fact_chainlink_avalanche_direct_rewards_daily") + , ref("fact_chainlink_bsc_direct_rewards_daily") + , ref("fact_chainlink_gnosis_direct_rewards_daily") + , ref("fact_chainlink_optimism_direct_rewards_daily") + , ref("fact_chainlink_polygon_direct_rewards_daily") + ] + ) + }} + ) + , direct_fees_data as ( + select + date + , chain + , 'LINK' as token + , sum(usd_amount) as direct_fees + , sum(token_amount) as direct_fees_native + from direct_models + group by 1, 2 + ) , staking_incentive_models as ( {{ dbt_utils.union_relations( @@ -115,6 +172,7 @@ with , chain , 'LINK' as token , sum(staking_rewards) as token_incentives + , sum(staking_rewards_native) as token_incentives_native from staking_incentive_models group by 1, 2 ) @@ -123,24 +181,40 @@ select date , chain , token - , automation_fees - , ccip_fees - , vrf_fees - , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) as fees - , ocr_fees - , fm_fees + , coalesce(automation_fees, 0) as automation_fees + , coalesce(automation_fees_native, 0) as automation_fees_native + , coalesce(ccip_fees, 0) as ccip_fees + , coalesce(ccip_fees_native, 0) as ccip_fees_native + , coalesce(vrf_fees, 0) as vrf_fees + , coalesce(vrf_fees_native, 0) as vrf_fees_native + , coalesce(direct_fees, 0) as direct_fees + , coalesce(direct_fees_native, 0) as direct_fees_native + , coalesce(automation_fees, 0) + coalesce(ccip_fees, 0) + coalesce(vrf_fees, 0) + coalesce(direct_fees, 0) as fees + , coalesce(automation_fees_native, 0) + coalesce(ccip_fees_native, 0) + coalesce(vrf_fees_native, 0) + coalesce(direct_fees_native, 0) as fees_native + , coalesce(ocr_fees, 0) as ocr_fees + , coalesce(ocr_fees_native, 0) as ocr_fees_native + , coalesce(fm_fees, 0) as fm_fees + , coalesce(fm_fees_native, 0) as fm_fees_native , coalesce(ocr_fees, 0) + coalesce(fm_fees, 0) as primary_supply_side_revenue + , coalesce(ocr_fees_native, 0) + coalesce(fm_fees_native, 0) as primary_supply_side_revenue_native , fees as secondary_supply_side_revenue + , fees_native as secondary_supply_side_revenue_native , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , primary_supply_side_revenue_native + secondary_supply_side_revenue_native as total_supply_side_revenue_native , 0 as protocol_revenue , primary_supply_side_revenue as operating_expenses - , token_incentives + , primary_supply_side_revenue_native as operating_expenses_native + , coalesce(token_incentives, 0) as token_incentives + , coalesce(token_incentives_native, 0) as token_incentives_native , coalesce(operating_expenses, 0) + coalesce(token_incentives, 0) as total_expenses + , coalesce(operating_expenses_native, 0) + coalesce(token_incentives_native, 0) as total_expenses_native , protocol_revenue - total_expenses as earnings + , protocol_revenue - total_expenses_native as earnings_native from fm_fees_data left join orc_fees_data using(date, chain, token) left join automation_fees_data using(date, chain, token) full join ccip_fees_data using(date, chain, token) left join vrf_fees_data using(date, chain, token) left join staking_incentives_data using(date, chain, token) +left join direct_fees_data using(date, chain, token) where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_onramp_meta.sql new file mode 100644 index 00000000..5a688c6f --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_onramp_meta.sql @@ -0,0 +1,35 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_arbitrum_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES + ('ethereum', '0x98dd9E9b8AE458225119Ab5B8c947A9d1cd0B648', '5009297550715157269', 'v1.0.0') + ,('ethereum', '0x6264f5c5bc1c0201159a5bcd6486d9c6c2f75439', '5009297550715157269', 'v1.0.0') -- found through traces (old) +, ('optimism', '0x0000000000000000000000000000000000000000', '3734403246176062136', 'v1.0.0') +, ('avalanche', '0x0000000000000000000000000000000000000000', '6433500567565415381', 'v1.0.0') +, ('polygon', '0x0000000000000000000000000000000000000000', '4051577828743386545', 'v1.0.0') +, ('polygon', '0x9409b222c96ae8377db6a4b6645350f7dc94e9ef', '4051577828743386545', 'v1.0.0') -- found through traces (old) +, ('base', '0x590791aA846eC4D2Aa2B8697Edeb6158F6054839', '15971525489660198786', 'v1.0.0') +, ('bsc', '0x0000000000000000000000000000000000000000', '11344663589394136015', 'v1.0.0') +, ('ethereum', '0xCe11020D56e5FDbfE46D9FC3021641FfbBB5AdEE', '5009297550715157269', 'v1.2.0') +, ('optimism', '0xC09b72E8128620C40D89649019d995Cc79f030C3', '3734403246176062136', 'v1.2.0') +, ('avalanche', '0x05B723f3db92430FbE4395fD03E40Cc7e9D17988', '6433500567565415381', 'v1.2.0') +, ('polygon', '0x122F05F49e90508F089eE8D0d868d1a4f3E5a809', '4051577828743386545', 'v1.2.0') +, ('base', '0x77b60F85b25fD501E3ddED6C1fe7bF565C08A22A', '15971525489660198786', 'v1.2.0') +, ('bsc', '0x79f3ABeCe5A3AFFf32D47F4CFe45e7b65c9a2D91', '11344663589394136015', 'v1.2.0') +, ('wemix', '0x66a0046ac9FA104eB38B04cfF391CcD0122E6FbC', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_token_meta.sql new file mode 100644 index 00000000..d739d449 --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_arbitrum_ccip_token_meta", + ) +}} + +SELECT + 'arbitrum' AS blockchain + , token_contract + , token_symbol +FROM (VALUES + ('0xf97f4df75117a78c1A5a0DBb814Af92458539FB4', 'LINK'), + ('0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', 'WETH') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..d89f6e24 --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_ocr_operator_admin_meta.sql @@ -0,0 +1,45 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_arbitrum_ocr_operator_admin_meta" + ) +}} +{% set chainlayer = 'Chainlayer' %} +{% set dextrac = 'DexTrac' %} +{% set fiews = 'Fiews' %} +{% set frameworkventures = 'Framework Ventures' %} +{% set inotel = 'Inotel' %} +{% set linkforest = 'LinkForest' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set matrixedlink = 'Matrixed.Link' %} +{% set northwestnodes = 'NorthWest Nodes' %} +{% set piertwo = 'Pier Two' %} +{% set simplyvc = 'Simply VC' %} +{% set snzpool = 'SNZPool' %} +{% set validationcloud = 'Validation Cloud' %} +{% set vulcan = 'Vulcan Link' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0x6eF38c3d1D85B710A9e160aD41B912Cb8CAc2589', '{{frameworkventures}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0x4564A9c6061f6f1F2Eadb954B1b3C241D2DC984e', '{{linkforest}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x4dc81f63CB356c1420D4620414f366794072A3a8', '{{matrixedlink}}'), + ('0x0921E157b690c4F89F7C2a210cFd8bF3964F6776', '{{northwestnodes}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x0446B8d5d3F3fA74eDbd32154b023FD8da172f05', '{{snzpool}}'), + ('0x9cCbFD17FA284f36c2ff503546160B256d1CD3D1', '{{snzpool}}'), + ('0x183A96629fF566e7AA8AfA38980Cd037EB40A59A', '{{validationcloud}}'), + ('0x4E28977d71f148ae2c523e8Aa4b6F3071d81Add1', '{{vulcan}}'), + ('0x7D0f8dd25135047967bA6C50309b567957dd52c3', '{{vulcan}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..8ba83d92 --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/dim_chainlink_arbitrum_price_feeds_oracle_addresses.sql @@ -0,0 +1,189 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_arbitrum_price_feeds_oracle_addresses", + ) +}} + +{% set _1inch_usd = '1INCH / USD' %} +{% set ada_usd = 'ADA / USD' %} +{% set ape_usd = 'APE / USD' %} +{% set arb_usd = 'ARB / USD' %} +{% set atom_usd = 'ATOM / USD' %} +{% set aud_usd = 'AUD / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set axs_usd = 'AXS / USD' %} +{% set bal_usd = 'BAL / USD' %} +{% set bnb_usd = 'BNB / USD' %} +{% set brl_usd = 'BRL / USD' %} +{% set btc_eth = 'BTC / ETH' %} +{% set btc_usd_total_marketcap = 'BTC-USD Total Marketcap' %} +{% set busd_usd = 'BUSD / USD' %} +{% set cad_usd = 'CAD / USD' %} +{% set cake_usd = 'CAKE / USD' %} +{% set cbeth_eth = 'CBETH / ETH' %} +{% set chf_usd = 'CHF / USD' %} +{% set cny_usd = 'CNY / USD' %} +{% set comp_usd = 'COMP / USD' %} +{% set crv_usd = 'CRV / USD' %} +{% set cv_index = 'CV Index' %} +{% set cvx_usd = 'CVX / USD' %} +{% set dodo_usd = 'DODO / USD' %} +{% set doge_usd = 'DOGE / USD' %} +{% set dot_usd = 'DOT / USD' %} +{% set dpx_usd = 'DPX / USD' %} +{% set eth_usd_total_marketcap = 'ETH-USD Total Marketcap' %} +{% set eur_usd = 'EUR / USD' %} +{% set frax_usd = 'FRAX / USD' %} +{% set ftm_usd = 'FTM / USD' %} +{% set fxs_usd = 'FXS / USD' %} +{% set gbp_usd = 'GBP / USD' %} +{% set gmx_usd = 'GMX / USD' %} +{% set joe_usd = 'JOE / USD' %} +{% set jpy_usd = 'JPY / USD' %} +{% set knc_usd = 'KNC / USD' %} +{% set krw_usd = 'KRW / USD' %} +{% set l2_sequencer_uptime_status_feed = 'L2 Sequencer Uptime Status Feed' %} +{% set link_eth = 'LINK / ETH' %} +{% set lusd_usd = 'LUSD / USD' %} +{% set magic_usd = 'MAGIC / USD' %} +{% set matic_usd = 'MATIC / USD' %} +{% set mim_usd = 'MIM / USD' %} +{% set mimatic_usd = 'MIMATIC / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set near_usd = 'NEAR / USD' %} +{% set nft_blue_chip_total_market_cap_usd = 'NFT Blue Chip Total Market Cap-USD' %} +{% set ohm_index = 'OHM Index' %} +{% set ohmv2_usd = 'OHMv2 / USD' %} +{% set op_usd = 'OP / USD' %} +{% set paxg_usd = 'PAXG / USD' %} +{% set pepe_usd = 'PEPE / USD' %} +{% set php_usd = 'PHP / USD' %} +{% set rdnt_usd = 'RDNT / USD' %} +{% set rpl_usd = 'RPL / USD' %} +{% set sek_usd = 'SEK / USD' %} +{% set sgd_usd = 'SGD / USD' %} +{% set snx_usd = 'SNX / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set spell_usd = 'SPELL / USD' %} +{% set steth_eth = 'STETH / ETH' %} +{% set steth_usd = 'STETH / USD' %} +{% set sushi_usd = 'SUSHI / USD' %} +{% set stafi_staked_eth_reth_eth_exchange_rate = 'StaFi Staked ETH rETH-ETH Exchange Rate' %} +{% set try_usd = 'TRY / USD' %} +{% set tusd_usd = 'TUSD / USD' %} +{% set total_marketcap_usd = 'Total Marketcap USD' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdd_usd = 'USDD / USD' %} +{% set wbtc_btc = 'WBTC / BTC' %} +{% set wbtc_usd = 'WBTC / USD' %} +{% set wsteth_eth = 'WSTETH / ETH' %} +{% set wti_usd = 'WTI / USD' %} +{% set xag_usd = 'XAG / USD' %} +{% set xau_usd = 'XAU / USD' %} +{% set xrp_usd = 'XRP / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set cbeth_eth_exchange_rate_ = 'cbETH-ETH Exchange Rate ' %} +{% set ibbtc_pricepershare = 'ibBTC PricePerShare' %} +{% set reth_eth_exchange_rate = 'rETH-ETH Exchange Rate' %} +{% set wsteth_steth_exchange_rate = 'wstETH-stETH Exchange Rate' %} + + +SELECT + 'arbitrum' as blockchain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{_1inch_usd}}', 8, '0x4bC735Ef24bf286983024CAd5D03f0738865Aaef', '0xa64344ec6b4971d1FBDaf5550001ac5751EEd599'), + ('{{ada_usd}}', 8, '0xD9f615A9b820225edbA2d821c4A696a0924051c6', '0xeFBC6F8C9806B066fa0Da149349450Be60e5e136'), + ('{{ape_usd}}', 8, '0x221912ce795669f628c51c69b7d0873eDA9C03bB', '0x076577765a3e66db410eCc1372d0B0dB503A42C5'), + ('{{arb_usd}}', 8, '0xb2A824043730FE05F3DA2efaFa1CBbe83fa548D6', '0x46de66F10343b59BAcc37dF9b3F67cD0CcC121A3'), + ('{{atom_usd}}', 8, '0xCDA67618e51762235eacA373894F0C79256768fa', '0x77b911DBe147ED5b4554997860D6362A5652fC91'), + ('{{aud_usd}}', 8, '0x9854e9a850e7C354c1de177eA953a6b1fba8Fc22', '0x4258e5D50d737CBBEA347f0115Ad166e234902D7'), + ('{{avax_usd}}', 8, '0x8bf61728eeDCE2F32c456454d87B5d6eD6150208', '0xcf17b68a40f10d3DcEedd9a092F1Df331cE3D9da'), + ('{{axs_usd}}', 8, '0x5B58aA6E0651Ae311864876A55411F481aD86080', '0xA303a72d334e589122454e8e849E147BAd309E73'), + ('{{bal_usd}}', 8, '0xBE5eA816870D11239c543F84b71439511D70B94f', '0x53368bC6a7eB4f4AF3d6974520FEba0295A5daAb'), + ('{{bnb_usd}}', 8, '0x6970460aabF80C5BE983C6b74e5D06dEDCA95D4A', '0x9c65Bc9C18f754129bA00c5298B539e69A32102d'), + ('{{brl_usd}}', 8, '0x04b7384473A2aDF1903E3a98aCAc5D62ba8C2702', '0x5d750CC68ff61E2D68930003f77241f7346ADc84'), + ('{{btc_eth}}', 18, '0xc5a90A6d7e4Af242dA238FFe279e9f2BA0c64B2e', '0x3c8F2d5af2e0F5Ef7C23A08DF6Ad168ece071D4b'), + ('{{btc_usd_total_marketcap}}', 8, '0x7519bCA20e21725557Bb98d9032124f8885a26C2', '0x815d5838677F0f063f7589C1Da44f76241FD0C65'), + ('{{busd_usd}}', 8, '0x8FCb0F3715A82D83270777b3a5f3a7CF95Ce8Eec', '0x6c77960BEB512D955cCe2d5eaA1Ea20A388Ba9a2'), + ('{{cad_usd}}', 8, '0xf6DA27749484843c4F02f5Ad1378ceE723dD61d4', '0x52716c109696C0229E18fDeadFf6f54B3b73784F'), + ('{{cake_usd}}', 8, '0x256654437f1ADA8057684b18d742eFD14034C400', '0x496000e12F6d5A2eC4512a6bE34Fe36ba84E6349'), + ('{{cbeth_eth}}', 18, '0xa668682974E3f121185a3cD94f00322beC674275', '0xbfc294070e8A7594cEAa6C564883E1F9222BC09b'), + ('{{chf_usd}}', 8, '0xe32AccC8c4eC03F6E75bd3621BfC9Fbb234E1FC3', '0xF56e6cb49304c2AD4a7C416665b55a1424014B1F'), + ('{{cny_usd}}', 8, '0xcC3370Bde6AFE51e1205a5038947b9836371eCCb', '0x1b9749e06817433a34D7efAaa0a7f6a94a41E432'), + ('{{comp_usd}}', 8, '0xe7C53FFd03Eb6ceF7d208bC4C13446c76d1E5884', '0x52df0481c6D2Ad7E50889AFd03C8ddd8413ac63d'), + ('{{crv_usd}}', 8, '0xaebDA2c976cfd1eE1977Eac079B4382acb849325', '0x79DaA21a44D1415306Ec17C361e0090bdD4cFCbe'), + ('{{cv_index}}', 18, '0xbcD8bEA7831f392bb019ef3a672CC15866004536', '0xb58AFa4be9B13D896E81D5355C961D2c33172099'), + ('{{cvx_usd}}', 8, '0x851175a919f36c8e30197c09a9A49dA932c2CC00', '0x3d62E33E97de1F0ce913dB62d5972722C2A7E4f6'), + ('{{dodo_usd}}', 8, '0xA33a06c119EC08F92735F9ccA37e07Af08C4f281', '0xc195bA27455182e3Bb6F86dAB5838901604Ba72c'), + ('{{dodo_usd}}', 8, '0xA33a06c119EC08F92735F9ccA37e07Af08C4f281', '0xB61D6E5eCB4188248702F65D59728F607F9E3d2F'), + ('{{doge_usd}}', 8, '0x9A7FB1b3950837a8D9b40517626E11D4127C098C', '0xbF1CD5Cb759f8E21c98A4367B665F43D607E8885'), + ('{{dot_usd}}', 8, '0xa6bC5bAF2000424e90434bA7104ee399dEe80DEc', '0x2F45a77c5024eB546E9E7F445f266c0D3e71e616'), + ('{{dpx_usd}}', 8, '0xc373B9DB0707fD451Bc56bA5E9b029ba26629DF0', '0x2489462e64Ea205386b7b8737609B3701047a77d'), + ('{{eth_usd_total_marketcap}}', 8, '0xB1f70A229FE7cceD0428245db8B1f6C48c7Ea82a', '0xC38d4423efaD7D673b0cD47656ed33F8c15c6a57'), + ('{{eur_usd}}', 8, '0xA14d53bC1F1c0F31B4aA3BD109344E5009051a84', '0x7AAeE6aD40a947A162DEAb5aFD0A1e12BE6FF871'), + ('{{frax_usd}}', 8, '0x0809E3d38d1B4214958faf06D8b1B1a2b73f2ab8', '0x5D041081725468Aa43e72ff0445Fde2Ad1aDE775'), + ('{{ftm_usd}}', 8, '0xFeaC1A3936514746e70170c0f539e70b23d36F19', '0x70001968d6ee8f909dE9e730E5b4e586565bbbF9'), + ('{{fxs_usd}}', 8, '0x36a121448D74Fa81450c992A1a44B9b7377CD3a5', '0xf8C6DE435CF8d06897a4A66b21df623D06d2A761'), + ('{{gbp_usd}}', 8, '0x9C4424Fd84C6661F97D8d6b3fc3C1aAc2BeDd137', '0x78f28D363533695458696b42577D2e1728cEa3D1'), + ('{{gmx_usd}}', 8, '0xDB98056FecFff59D032aB628337A4887110df3dB', '0xF6328F007A2FDc547875e24A3BC7e0603fd01727'), + ('{{joe_usd}}', 8, '0x04180965a782E487d0632013ABa488A472243542', '0xa44BCD128E99188565c4849cdfFEea9C773f74ec'), + ('{{jpy_usd}}', 8, '0x3dD6e51CB9caE717d5a8778CF79A04029f9cFDF8', '0xadBf1c8a244d537C343d771e2Fa897F3654a1Ae4'), + ('{{knc_usd}}', 8, '0xbF539d4c2106dd4D9AB6D56aed3d9023529Db145', '0x20870D99455B6F9d7c0E6f2608245719d789ff53'), + ('{{krw_usd}}', 8, '0x85bb02E0Ae286600d1c68Bb6Ce22Cc998d411916', '0x244ea8646Cc2342497dFD5D8f841f79e66e598cF'), + ('{{l2_sequencer_uptime_status_feed}}', 0, '0xFdB631F5EE196F0ed6FAa767959853A9F217697D', '0xC1303BBBaf172C55848D3Cb91606d8E27FF38428'), + ('{{link_eth}}', 18, '0xb7c8Fb1dB45007F98A68Da0588e1AA524C317f27', '0xa136978a2c8a92ec5EacC5179642AA2E1c1Eae18'), + ('{{lusd_usd}}', 8, '0x0411D28c94d85A36bC72Cb0f875dfA8371D8fFfF', '0x20CD97619A51d1a6f1910ce62d98Aceb9a13d5e6'), + ('{{magic_usd}}', 8, '0x47E55cCec6582838E173f252D08Afd8116c2202d', '0x5ab0B1e2604d4B708721bc3cD1ce962958b4297E'), + ('{{matic_usd}}', 8, '0x52099D4523531f678Dfc568a7B1e5038aadcE1d6', '0xA4A2b2000d447CC1086d15C077730008b0251FFD'), + ('{{mim_usd}}', 8, '0x87121F6c9A9F6E90E59591E4Cf4804873f54A95b', '0x0Ae17556F9698fC47C365A746AB9CddCB17F3809'), + ('{{mimatic_usd}}', 8, '0x59644ec622243878d1464A9504F9e9a31294128a', '0xc339c4c7c58cb1d964b7B66f846572D5C355441a'), + ('{{mkr_usd}}', 8, '0xdE9f0894670c4EFcacF370426F10C3AD2Cdf147e', '0x55EfafFC2764389a08FFDFcd36AEe2C30610d42c'), + ('{{near_usd}}', 8, '0xBF5C3fB2633e924598A46B9D07a174a9DBcF57C0', '0xbA4492A430fE9bEF7Abbd9C78b953A6E1aA48CFA'), + ('{{nft_blue_chip_total_market_cap_usd}}', 8, '0x8D0e319eBAA8DF32e088e469062F85abF2eBe599', '0x1A8220ac22762F08bE1cD17eE3b6FFfFe96c921c'), + ('{{ohm_index}}', 9, '0x48C4721354A3B29D80EF03C65E6644A37338a0B1', '0x1a2B9E570fe9032562F0E200D03cd29DCf082268'), + ('{{ohmv2_usd}}', 8, '0x761aaeBf021F19F198D325D7979965D0c7C9e53b', '0x1Fa1c3c6371a723a0773421E20ea86Bb02A637Ae'), + ('{{ohmv2_usd}}', 8, '0x761aaeBf021F19F198D325D7979965D0c7C9e53b', '0x09410414Ca067b8763ce62DBEcA8160be9cfD548'), + ('{{op_usd}}', 8, '0x205aaD468a11fd5D34fA7211bC6Bad5b3deB9b98', '0x0526ED34229425a10888C6972906CF2a820D6d13'), + ('{{paxg_usd}}', 8, '0x2BA975D4D7922cD264267Af16F3bD177F206FE3c', '0x2e4c363449E2EC7E93cd9ed4F3843c2CA4497108'), + ('{{pepe_usd}}', 18, '0x02DEd5a7EDDA750E3Eb240b54437a54d57b74dBE', '0x67db13c76Ce77E8FEef9B500616162eC142597ac'), + ('{{pepe_usd}}', 18, '0x02DEd5a7EDDA750E3Eb240b54437a54d57b74dBE', '0x2147745C6c7164E3124B4cC24cb903F1c0dfd47f'), + ('{{php_usd}}', 8, '0xfF82AAF635645fD0bcc7b619C3F28004cDb58574', '0x5E4C65194F6F33a8BF7E9B95F1D0Ca9d611F6D62'), + ('{{rdnt_usd}}', 8, '0x20d0Fcab0ECFD078B036b6CAf1FaC69A6453b352', '0x94cD888Bea0dE39DD0b41396a9311c5212635EB7'), + ('{{rpl_usd}}', 8, '0xF0b7159BbFc341Cc41E7Cb182216F62c6d40533D', '0x44D3ab6c4b98A3F9f241E1753b2475ad7e502051'), + ('{{sek_usd}}', 8, '0xdE89a55d04DEd40A410877ab87d4F567ee66a1f0', '0xd0DA1FE3A35359564CB7561F6a6AA69A1eCEc8d5'), + ('{{sgd_usd}}', 8, '0xF0d38324d1F86a176aC727A4b0c43c9F9d9c5EB1', '0x7DD7029668c78af259a27A7696d468a152F06E53'), + ('{{snx_usd}}', 8, '0x054296f0D036b95531B4E14aFB578B80CFb41252', '0x382f3C547e3EBd1D08cd0CAf6e5F0a7b0B350A11'), + ('{{sol_usd}}', 8, '0x24ceA4b8ce57cdA5058b924B9B9987992450590c', '0x8C4308F7cbD7fB829645853cD188500D7dA8610a'), + ('{{spell_usd}}', 8, '0x383b3624478124697BEF675F07cA37570b73992f', '0xf6bACC7750c23A34b996A355A6E78b17Fc4BaEdC'), + ('{{spell_usd}}', 8, '0x383b3624478124697BEF675F07cA37570b73992f', '0x4B3F43e086790a71270750192472fB61dF7E8566'), + ('{{steth_eth}}', 18, '0xded2c52b75B24732e9107377B7Ba93eC1fFa4BAf', '0xBFf434a1B44677D4ce302da64d84bB4d305c0D49'), + ('{{steth_usd}}', 8, '0x07C5b924399cc23c24a95c8743DE4006a32b7f2a', '0xE5B5Be82015444c04B281CF4aFa6A99130ED83a2'), + ('{{sushi_usd}}', 8, '0xb2A8BA74cbca38508BA1632761b56C897060147C', '0xe4A492420eBdA03B04973Ed1E46d5fe9F3b077EF'), + ('{{sushi_usd}}', 8, '0xb2A8BA74cbca38508BA1632761b56C897060147C', '0x0D02B6EbA98BdA364953D9b1DEf8eedC19fFd516'), + ('{{stafi_staked_eth_reth_eth_exchange_rate}}', 18, '0x052d4200b624b07262F574af26C71A6553996Ab5', '0x73BBf768a429a4f80c47D0d22DdBCe5823c97d7a'), + ('{{try_usd}}', 8, '0xE8f8AfE4b56c6C421F691bfAc225cE61b2C7CD05', '0x8548A931B2E5605a8936089B75F0bF66136e2393'), + ('{{tusd_usd}}', 8, '0x6fAbee62266Da6686EE2744C6f15bb8352d2f28D', '0xEC2E9000B487F28Fd03455f9277bE3c96a3180b2'), + ('{{total_marketcap_usd}}', 8, '0x4763b84cdBc5211B9e0a57D5E39af3B3b2440012', '0x7B9845A634822c543F5Ce544Dd7D7797B79a06b8'), + ('{{uni_usd}}', 8, '0x9C917083fDb403ab5ADbEC26Ee294f6EcAda2720', '0xeFc5061B7a8AeF31F789F1bA5b3b8256674F2B71'), + ('{{usdd_usd}}', 8, '0x4Ee1f9ec1048979930aC832a3C1d18a0b4955a02', '0xd9fCb26FE3D4589c3e2ecD6A2A3af54EdDB67240'), + ('{{wbtc_btc}}', 8, '0x0017abAc5b6f291F9164e35B1234CA1D697f9CF4', '0x1Cde96670e1e779b13dDfd6a5c6D19349cc6a642'), + ('{{wbtc_usd}}', 8, '0xd0C7101eACbB49F3deCcCc166d238410D6D46d57', '0xb20bd22d3D2E5a628523d37b3DED569598EB649b'), + ('{{wsteth_eth}}', 18, '0xb523AE262D20A936BC152e6023996e46FDC2A95D', '0x0e9b5c79e005a30bf3fbB4d8ccCB6B0082ac5a17'), + ('{{wti_usd}}', 8, '0x594b919AD828e693B935705c3F816221729E7AE8', '0x4B552F6496a9E5E05B51BDdC372E623b76560155'), + ('{{xag_usd}}', 8, '0xC56765f04B248394CF1619D20dB8082Edbfa75b1', '0x0A4d55347817738166e2eF8302e12F99CfbDdEDD'), + ('{{xau_usd}}', 8, '0x1F954Dc24a49708C26E0C1777f16750B5C6d5a2c', '0xd35B0e1Fd468Bd264570C64f28Ea48F778bc0DfC'), + ('{{xrp_usd}}', 8, '0xB4AD57B52aB9141de9926a3e0C8dc6264c2ef205', '0x1Fe010E64b5Df97BCB034870334Ff8FbB02ad019'), + ('{{yfi_usd}}', 8, '0x745Ab5b69E01E2BE1104Ca84937Bb71f96f5fB21', '0x660e7aF290F540205A84dccC1F40D0269fC936F5'), + ('{{cbeth_eth_exchange_rate_}}', 18, '0x0518673439245BB95A58688Bc31cd513F3D5bDd6', '0x7D8DCd217E30c5232Aa1E50bA0E4c56DdB5E387C'), + ('{{ibbtc_pricepershare}}', 18, '0x80dd57c45B73f3c70feAF1BFe1bcdF384703E558', '0x519936385413Dbce03da2A4d34125a555D3f0438'), + ('{{reth_eth_exchange_rate}}', 18, '0xF3272CAfe65b190e76caAF483db13424a3e23dD2', '0x0AAAFE4278AA9D4514552f2743cBFa5a5Bdce04b'), + ('{{wsteth_steth_exchange_rate}}', 18, '0xB1552C5e96B312d0Bf8b554186F846C40614a540', '0xb39bfAD6295724E01E079Ee3aa78a378Eff6dEB0') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_reward_daily.sql new file mode 100644 index 00000000..40b5daee --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('arbitrum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..26950774 --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('arbitrum', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..b0a2142d --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_ccip_send_requested_logs_v1_2", + ) +}} + + +{{ chainlink_logs('arbitrum', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_direct_rewards_daily.sql new file mode 100644 index 00000000..7cc8836e --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('arbitrum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_fm_reward_daily.sql new file mode 100644 index 00000000..df7d375d --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('arbitrum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_daily.sql new file mode 100644 index 00000000..2cceb7f1 --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('arbitrum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..44c7bd0e --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('arbitrum', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..ca4ec7fe --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('arbitrum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_rewards_daily.sql new file mode 100644 index 00000000..524d645c --- /dev/null +++ b/models/projects/chainlink/prod_raw/arbitrum/fact_chainlink_arbitrum_vrf_rewards_daily.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_arbitrum_vrf_rewards_daily", + ) +}} +{{ chainlink_vrf_rewards_daily('arbitrum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_automation_meta.sql b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_automation_meta.sql new file mode 100644 index 00000000..3eecda32 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_automation_meta.sql @@ -0,0 +1,52 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_avalanche_automation_meta" + ) +}} + +{% set _01node = '01node' %} +{% set alphachain = 'alphachain' %} +{% set blockdaemon = 'blockdaemon' %} +{% set chainlayer = 'chainlayer' %} +{% set dextrac = 'dextrac' %} +{% set fiews = 'fiews' %} +{% set inotel = 'inotel' %} +{% set lexisnexis = 'lexisnexis' %} +{% set linkforest = 'linkforest' %} +{% set linkpool = 'linkpool' %} +{% set linkriver = 'linkriver' %} +{% set piertwo = 'piertwo' %} +{% set simplyvc = 'simplyvc' %} +{% set validationcapital = 'validationcapital' %} + +SELECT + 'avalanche' AS chain, + operator_name, + keeper_address +FROM (VALUES + ('{{_01node}}', '0xe0b4fb0822d1f71977B33109F9F84948d4c31e4A'), + ('{{alphachain}}', '0xcB3Ef22D906a3518EF3FB318DFaf94C039ee683c'), + ('{{blockdaemon}}', '0xA18cE786F361a00CB830E87F3B1179c5ac89484E'), + ('{{chainlayer}}', '0xCD55352E94264D35F1C7792b0d78a9Df7DEe9bE4'), + ('{{dextrac}}', '0xCf3C657abF393D4425d938d7DC35AF774fa31410'), + ('{{fiews}}', '0x23C3B573aec3D978082F8F4DfAe1B9b57c658Fb9'), + ('{{fiews}}', '0x4dD8ED7943AaAAF2f637620c20eb703b8BABB842'), + ('{{inotel}}', '0x3965BCE1B6F4B872d0C6e3A2EfC5ecF39ec2c883'), + ('{{inotel}}', '0x9db12f20287385224bB54a98BA1e217e636A14e6'), + ('{{lexisnexis}}', '0xA7542d863e6bcCF9DFa4db11fD5823dd56022f34'), + ('{{linkforest}}', '0x762A9C7c6EC4b80ef01ac89D72A0eB5731Dd3447'), + ('{{linkforest}}', '0xD7B588602C3eba9545D2f07FD203bF70ceB8db32'), + ('{{linkforest}}', '0x70eF4887667C7FA839B75dE14CAEF587439aD29d'), + ('{{linkpool}}', '0xF12930fE0d73957Bac81C4A44000891A69219157'), + ('{{linkpool}}', '0x3C7f1112FB3Dc51CD9b680a04ba7D08f32673E6c'), + ('{{linkriver}}', '0x5F5fc989ea771E07dc01db04BeE543b9bab2D5E1'), + ('{{linkriver}}', '0xbc47E2923FAE161AcC6f9C58Bc5e171b9229748C'), + ('{{piertwo}}', '0x99A21e78eb13b6ACEE09dF60842557a9E6C73dB2'), + ('{{simplyvc}}', '0x648715137b75f40c9F8DC17701d0BEd43958771f'), + ('{{simplyvc}}', '0xefFA312e7287F4a66301032d413286821fe822A4'), + ('{{validationcapital}}', '0xDb1e4d2378B20E8bc933b134395279b0ddB8e682') +) a (operator_name, keeper_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_onramp_meta.sql new file mode 100644 index 00000000..29ea4c63 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_onramp_meta.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_avalanche_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES + ('ethereum', '0x3D3817270db2b89e9F68bA27297fb4672082f942', '5009297550715157269', 'v1.0.0') +, ('optimism', '0x0000000000000000000000000000000000000000', '3734403246176062136', 'v1.0.0') +, ('polygon', '0x2d306510FE83Cdb33Ff1658c71C181e9567F0009', '4051577828743386545', 'v1.0.0') +, ('base', '0x0000000000000000000000000000000000000000', '15971525489660198786', 'v1.0.0') +, ('bsc', '0x5c7AD3715257D20F2ae8596af55203373128BeE1', '11344663589394136015', 'v1.0.0') +, ('arbitrum', '0x0000000000000000000000000000000000000000', '4949039107694359620', 'v1.0.0') +, ('ethereum', '0xD0701FcC7818c31935331B02Eb21e91eC71a1704', '5009297550715157269', 'v1.2.0') +, ('optimism', '0x8629008887E073260c5434D6CaCFc83C3001d211', '3734403246176062136', 'v1.2.0') +, ('polygon', '0x97500490d9126f34cf9aA0126d64623E170319Ef', '4051577828743386545', 'v1.2.0') +, ('base', '0x268fb4311D2c6CB2bbA01CCA9AC073Fb3bfd1C7c', '15971525489660198786', 'v1.2.0') +, ('bsc', '0x8eaae6462816CB4957184c48B86afA7642D8Bf2B', '11344663589394136015', 'v1.2.0') +, ('arbitrum', '0x98f51B041e493fc4d72B8BD33218480bA0c66DDF', '4949039107694359620', 'v1.2.0') +, ('wemix', '0x9b1ed9De069Be4d50957464b359f98eD0Bf34dd5', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_token_meta.sql new file mode 100644 index 00000000..09eced00 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_avalanche_ccip_token_meta", + ) +}} + +SELECT + 'avalanche' AS chain, + token_contract, + token_symbol +FROM (VALUES + ('0x5947BB275c521040051D82396192181b413227A3', 'LINK'), + ('0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', 'WAVAX') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..90f192d0 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_ocr_operator_admin_meta.sql @@ -0,0 +1,50 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_avalanche_ocr_operator_admin_meta" + ) +}} + +{% set a01node = '01Node' %} +{% set alphachain = 'Alpha Chain' %} +{% set blockdaemon = 'Blockdaemon' %} +{% set blocksizecapital = 'Blocksize Capital' %} +{% set chainlayer = 'Chainlayer' %} +{% set dextrac = 'DexTrac' %} +{% set fiews = 'Fiews' %} +{% set inotel = 'Inotel' %} +{% set lexisnexis = 'LexisNexis' %} +{% set linkforest = 'LinkForest' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set northwestnodes = 'NorthWest Nodes' %} +{% set p2porg = 'P2P.org' %} +{% set simplyvc = 'Simply VC' %} +{% set validationcloud = 'Validation Cloud' %} +{% set vodafone = 'Vodafone' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0xfc0269175A0E8408dB0EAbFb8A2E1f34d7001fAc', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0xa5D0084A766203b463b3164DFc49D91509C12daB', '{{alphachain}}'), + ('0x3615Fa045f00ae0eD60Dc0141911757c2AdC5E03', '{{blockdaemon}}'), + ('0x7CC60c9C24E9A290Db55b1017AF477E5c87a7550', '{{blocksizecapital}}'), + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0xD290AA3098882ccAdEeec86F6857d3CFA29BCf3b', '{{lexisnexis}}'), + ('0x098a4C7ceCbfb8534e5Ab3f9c8F6C87845Fc5109', '{{lexisnexis}}'), + ('0x4564A9c6061f6f1F2Eadb954B1b3C241D2DC984e', '{{linkforest}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x0921E157b690c4F89F7C2a210cFd8bF3964F6776', '{{northwestnodes}}'), + ('0xCDa423ee5A7A886eF113b181469581306fC8B607', '{{p2porg}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x183A96629fF566e7AA8AfA38980Cd037EB40A59A', '{{validationcloud}}'), + ('0xBf17cE6Bab86445C6ED68dcce397C289Ecd4e8F2', '{{vodafone}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..b1db93c9 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/dim_chainlink_avalanche_price_feeds_oracle_addresses.sql @@ -0,0 +1,173 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_avalanche_price_feeds_oracle_addresses", + ) +}} + +{% set aapl_usd = 'AAPL / USD' %} +{% set aave_usd = 'AAVE / USD' %} +{% set aave_network_emergency_count_avalanche_ = 'AAVE Network Emergency Count (Avalanche)' %} +{% set aave_e_por = 'AAVE.e PoR' %} +{% set alpha_usd = 'ALPHA / USD' %} +{% set ampl_usd = 'AMPL / USD' %} +{% set amzn_usd = 'AMZN / USD' %} +{% set ape_usd = 'APE / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set axs_usd = 'AXS / USD' %} +{% set bat_usd = 'BAT / USD' %} +{% set brl_usd = 'BRL / USD' %} +{% set btc_usd = 'BTC / USD' %} +{% set btc_b_por = 'BTC.b PoR' %} +{% set busd_usd = 'BUSD / USD' %} +{% set bridgetower_capital_por = 'Bridgetower Capital PoR' %} +{% set cake_usd = 'CAKE / USD' %} +{% set chf_usd = 'CHF / USD' %} +{% set chz_usd = 'CHZ / USD' %} +{% set comp_usd = 'COMP / USD' %} +{% set crv_usd = 'CRV / USD' %} +{% set cvx_usd = 'CVX / USD' %} +{% set calculated_savax_usd = 'Calculated SAVAX / USD' %} +{% set dai_usd = 'DAI / USD' %} +{% set dai_e_por = 'DAI.e PoR' %} +{% set dot_usd = 'DOT / USD' %} +{% set eth_usd = 'ETH / USD' %} +{% set eur_usd = 'EUR / USD' %} +{% set fil_usd = 'FIL / USD' %} +{% set frax_usd = 'FRAX / USD' %} +{% set ftm_usd = 'FTM / USD' %} +{% set ftt_usd = 'FTT / USD' %} +{% set fxs_usd = 'FXS / USD' %} +{% set gmx_usd = 'GMX / USD' %} +{% set googl_usd = 'GOOGL / USD' %} +{% set joe_usd = 'JOE / USD' %} +{% set jpy_usd = 'JPY / USD' %} +{% set knc_usd = 'KNC / USD' %} +{% set link_avax = 'LINK / AVAX' %} +{% set link_usd = 'LINK / USD' %} +{% set link_e_por = 'LINK.e PoR' %} +{% set mana_usd = 'MANA / USD' %} +{% set matic_usd = 'MATIC / USD' %} +{% set meta_usd = 'META / USD' %} +{% set mim_usd = 'MIM / USD' %} +{% set mimatic_usd = 'MIMATIC / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set near_usd = 'NEAR / USD' %} +{% set nflx_usd = 'NFLX / USD' %} +{% set ohm_index = 'OHM Index' %} +{% set ohmv2_usd = 'OHMv2 / USD' %} +{% set qi_usd = 'QI / USD' %} +{% set sand_usd = 'SAND / USD' %} +{% set snx_usd = 'SNX / USD' %} +{% set spell_usd = 'SPELL / USD' %} +{% set sushi_usd = 'SUSHI / USD' %} +{% set try_usd = 'TRY / USD' %} +{% set tsla_usd = 'TSLA / USD' %} +{% set tusd_usd = 'TUSD / USD' %} +{% set tusd_por = 'TUSD PoR' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdc_usd = 'USDC / USD' %} +{% set usdc_e_por = 'USDC.e PoR' %} +{% set usdt_usd = 'USDT / USD' %} +{% set usdt_e_por = 'USDT.e PoR' %} +{% set ust_usd = 'UST / USD' %} +{% set wbtc_usd = 'WBTC / USD' %} +{% set wbtc_e_por = 'WBTC.e PoR' %} +{% set weth_e_por = 'WETH.e PoR' %} +{% set woo_eth = 'WOO / ETH' %} +{% set xau_usd = 'XAU / USD' %} +{% set xava_usd = 'XAVA / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set zrx_usd = 'ZRX / USD' %} + + +SELECT + 'avalanche' as chain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{aapl_usd}}', 18, '0x4E4908dE170506b0795BE21bfb6e012770A635B1', '0x8dEDEb1295e946D23B934c66964d7D402B684450'), + ('{{aave_usd}}', 8, '0x3CA13391E9fb38a75330fb28f8cc2eB3D9ceceED', '0xcb7f6eF54bDc05B704a0aCf604A6A16C53d359e1'), + ('{{aave_network_emergency_count_avalanche_}}', 0, '0x41185495Bc8297a65DC46f94001DC7233775EbEe', '0x6987c6600815bA7421ED30d127c4cb354779AAC0'), + ('{{aave_e_por}}', 18, '0x14C4c668E34c09E1FBA823aD5DB47F60aeBDD4F7', '0x1a53159F3366c9FaED485B9D7D4078CCd1569D22'), + ('{{alpha_usd}}', 8, '0x7B0ca9A6D03FE0467A31Ca850f5bcA51e027B3aF', '0x9C81461B6B821407E0a2968F9CEc23e3C7063F84'), + ('{{ampl_usd}}', 8, '0xcf667FB6Bd30c520A435391c50caDcDe15e5e12f', '0x9e107262620CfC6E0e2445df6C0ca0a9aD9Ba627'), + ('{{amzn_usd}}', 18, '0x108F85023B5b1a06aC85713A94047F365A163de1', '0xD974a467454DC34d7a0942977474767c05aBfC7d'), + ('{{ape_usd}}', 8, '0xF0981a2BDE30cf767080d80b93BeCA6204dCC54A', '0x3caF1C0C388384e87d170c00A781fc767Ac44C61'), + ('{{avax_usd}}', 8, '0x0A77230d17318075983913bC2145DB16C7366156', '0x9450A29eF091B625e976cE66f2A5818e20791999'), + ('{{axs_usd}}', 8, '0x155835C5755205597d62703a5A0b37e57a26Ee5C', '0xB7579A25A3394dEef5edb4b72535bE9c67316a41'), + ('{{bat_usd}}', 8, '0xe89B3CE86D25599D1e615C0f6a353B4572FF868D', '0x553BDc8a55569756Bd4bAB24e545752474A2Cd5a'), + ('{{brl_usd}}', 8, '0x609DDDB75518aa4Af84Ac228b62261aE68E52989', '0x1F847C386D97B2a03625bC449Bc7ded815426000'), + ('{{btc_usd}}', 8, '0x2779D32d5166BAaa2B2b658333bA7e6Ec0C65743', '0x154baB1FC1D87fF641EeD0E9Bc0f8a50D880D2B6'), + ('{{btc_b_por}}', 8, '0x99311B4bf6D8E3D3B4b9fbdD09a1B0F4Ad8e06E9', '0x4CDE5134F7DA75A71E3E46614B8E220d86802AD5'), + ('{{busd_usd}}', 8, '0x827f8a0dC5c943F7524Dda178E2e7F275AAd743f', '0x9Cb8E5EA1404d5012C0fc01B7B927AE6Aa09164f'), + ('{{bridgetower_capital_por}}', 18, '0x503707A5DC130877F118B7abd27c37CBFfC44E71', '0x08591f637cb0dF9BE95A34c5Bf85886830c9798f'), + ('{{cake_usd}}', 8, '0x79bD0EDd79dB586F22fF300B602E85a662fc1208', '0x0aCcDFd55026873CB12F75f66513b42fB4974245'), + ('{{chf_usd}}', 8, '0x3B37950485b450edF90cBB85d0cD27308Af4AB9A', '0x55d0a1b961bB75c010970A380f32A94965c3A7E9'), + ('{{chz_usd}}', 8, '0xC4D7270aCc921DE5A17452437257f075C1298eB3', '0xa6C851d8721Fa322C8f578E132782e3B93D02D70'), + ('{{comp_usd}}', 8, '0x9D6AA0AC8c4818433bEA7a74F49C73B57BcEC4Ec', '0x498A8B3E1B7582Ae3Ca3ae22AC544a02dB86D4c5'), + ('{{crv_usd}}', 8, '0x7CF8A6090A9053B01F3DF4D4e6CfEdd8c90d9027', '0xFf6e2c3C9E9a174824a764dbb8222454f6A3ecb1'), + ('{{cvx_usd}}', 8, '0x52F8026423B5E04FdD9E4b5725B68230b71D019b', '0x3FfF4d373C588f8975f3312E1Ba6F70A39Ce3f94'), + ('{{calculated_savax_usd}}', 18, '0x2854Ca10a54800e15A2a25cFa52567166434Ff0a', '0x2223338267fF42814d53aE1c02979164b0528fA4'), + ('{{dai_usd}}', 8, '0x51D7180edA2260cc4F6e4EebB82FEF5c3c2B8300', '0xCC4633a1a85d553623bAC7945Bd87CFad6E6a8c8'), + ('{{dai_e_por}}', 18, '0x976D7fAc81A49FA71EF20694a3C56B9eFB93c30B', '0x32d4055c609b63375427172db799b9dAfBb6cEEd'), + ('{{dot_usd}}', 8, '0xD73a74314AcCb53b30cAfDA0cb61c9772B57C4a2', '0x372367702b83ff993E954cB3f06b44607c5d3c9C'), + ('{{eth_usd}}', 8, '0x976B3D034E162d8bD72D6b9C989d545b839003b0', '0xEfaa69f461E0aaf0be1798b01371Daf14AC55eA8'), + ('{{eur_usd}}', 8, '0x192f2DBA961Bb0277520C082d6bfa87D5961333E', '0x95Edda00bCE60f99Fb0bE38fE500eBd879AB651a'), + ('{{fil_usd}}', 8, '0x2F194315f122d374a27973e259783d5C864A5bf6', '0x934C2eAE6fF26103EE50020b1F452944097F90C4'), + ('{{frax_usd}}', 8, '0xbBa56eF1565354217a3353a466edB82E8F25b08e', '0x5eDC2538E11b67cf93ED145b04E5E457d9F9Cc0B'), + ('{{ftm_usd}}', 8, '0x2dD517B2f9ba49CedB0573131FD97a5AC19ff648', '0xAec3e48648C46B9eda4C8832E2f0A6B23289915d'), + ('{{ftt_usd}}', 8, '0x4f2EaebDD835ebe9108e718C0b6551E868381a88', '0x971Ff919f91fFd1Faa847e1a773e8a547e3eFc82'), + ('{{ftt_usd}}', 8, '0x4f2EaebDD835ebe9108e718C0b6551E868381a88', '0x318BFa8c1CE223836FDE0Ad60E8A5E04fD0d8924'), + ('{{fxs_usd}}', 8, '0x12Af94c3716bbf339Aa26BfD927DDdE63B27D50C', '0x92398CAF00D65e9A63b5d50D1CBD53223137A400'), + ('{{gmx_usd}}', 8, '0x3F968A21647d7ca81Fb8A5b69c0A452701d5DCe8', '0x3Ec39652e73337350a712Fb418DBb4C2a8247673'), + ('{{googl_usd}}', 18, '0xFf20180F7C97C6030497d1D262d444b25FC5B460', '0x64f7ab24f5E2aF4274F9AD200F8892bb83fB9776'), + ('{{joe_usd}}', 8, '0x02D35d3a8aC3e1626d3eE09A78Dd87286F5E8e3a', '0x15811F91fAb76Bd240CAeC783a32f1BAAE41c513'), + ('{{jpy_usd}}', 8, '0xf8B283aD4d969ECFD70005714DD5910160565b94', '0x8F937bBaA8508268cC2c3d2A54c8d01d30eEd679'), + ('{{knc_usd}}', 8, '0x9df2195dc96e6Ef983B1aAC275649F3f28F82Aa1', '0x5474cFC8E5Fa684728bAABBFC95B161134c32758'), + ('{{link_avax}}', 18, '0x1b8a25F73c9420dD507406C3A3816A276b62f56a', '0x3aadC82b68784b49a9e01C0af4c9221b16282e7e'), + ('{{link_usd}}', 8, '0x49ccd9ca821EfEab2b98c60dC60F518E765EDe9a', '0xA2e5d3254F7d6E8C051Afb7F2aeea0dABf21F750'), + ('{{link_e_por}}', 18, '0x943cEF1B112Ca9FD7EDaDC9A46477d3812a382b6', '0x5006C56a2967eF6c9d856704669d2421D3189Be4'), + ('{{mana_usd}}', 8, '0x774f067083f23cAB866310489419C884a6Dc00a8', '0x7609db691E5Db62651466DCcC87AFa8703758942'), + ('{{matic_usd}}', 8, '0x1db18D41E4AD2403d9f52b5624031a2D9932Fd73', '0x92655bd2627C17D36b35f20dA3F4A4084E0ABd6F'), + ('{{meta_usd}}', 8, '0xEb1f59749ACc2eBCBcad084FBBDe4E00452fE8d0', '0x9e943dd8416adCa7710B976FAC4F70F394151f3b'), + ('{{mim_usd}}', 8, '0x54EdAB30a7134A16a54218AE64C73e1DAf48a8Fb', '0x9D0aabA64B0BA4650419a37D14175dA05471793c'), + ('{{mimatic_usd}}', 8, '0x5D1F504211c17365CA66353442a74D4435A8b778', '0x5aF11EEC59e1BaC3F4e2565621B43Cfbe748e698'), + ('{{mkr_usd}}', 8, '0x3E54eB0475051401D093702A5DB84EFa1Ab77b14', '0xB3752dC7c1D71A1B381925EC5e6bbf2950519Aa2'), + ('{{near_usd}}', 8, '0x7FDE7f51dc2580dd051e17A333E28CDC8176da0A', '0x780dE5B35E13e848abc59FA7F532c35De6B1207f'), + ('{{nflx_usd}}', 18, '0x98df0E27B678FafF4CdE48c03C4790f7e2E0754F', '0xd6d8CAfD8c7842DfB447346957d22D5b7Edd49ed'), + ('{{ohm_index}}', 9, '0xB2B94f103406bD5d04d84a1beBc3E89F05EEDDEa', '0x2E7574C025add37FCE2EB88bB0EF34289f50af91'), + ('{{ohmv2_usd}}', 8, '0x1fA4Fc8E55939fC511d048e1ceCaFB4b2d30f9Eb', '0xa94FbCBE967E25CFB132182dd57fbBbEdE765799'), + ('{{ohmv2_usd}}', 8, '0x1fA4Fc8E55939fC511d048e1ceCaFB4b2d30f9Eb', '0x7c28e5fe04694C2BC2b8664492e6B82dFC4c2Ed3'), + ('{{qi_usd}}', 8, '0x36E039e6391A5E7A7267650979fdf613f659be5D', '0x4bc3BeBb7eB60155f8b38771D9926d9A23dad5B5'), + ('{{qi_usd}}', 8, '0x36E039e6391A5E7A7267650979fdf613f659be5D', '0xB6f7e0129439829a3679BD06102fDCAA41ebeE5e'), + ('{{sand_usd}}', 8, '0x6f2A1D4014FED967172FC7caCf7a6e04Cf02752e', '0xb650e28712E26Dd9A34B084DDC32aaC2Ac348e20'), + ('{{snx_usd}}', 8, '0x01752eAAB988ECb0ceBa2C8FC97c4f1d38Bf246D', '0xF01826625694D04A30285355A5F3aEf567E6F676'), + ('{{spell_usd}}', 8, '0x4F3ddF9378a4865cf4f28BE51E10AECb83B7daeE', '0x0a58227E7D7A8175E4F5f8a0D32968d153B9ce59'), + ('{{spell_usd}}', 8, '0x4F3ddF9378a4865cf4f28BE51E10AECb83B7daeE', '0x40B5DF33f06264F66F3764b139dC9Aab7e0a6170'), + ('{{sushi_usd}}', 8, '0x449A373A090d8A1e5F74c63Ef831Ceff39E94563', '0xdE672241200B9309f86AB79fd082423f32fD8f0D'), + ('{{try_usd}}', 8, '''0xA61bF273688Ea095b5e4c11f1AF5E763F7aEEE91''', '0xEF320d919F4DF79c6f4206eB89f78A0b8f21F496'), + ('{{tsla_usd}}', 18, '0x9BBBfe5C63bC70349a63105A2312Fc6169B60504', '0x3f9fd480148A2741FF2478Def8353D7A9AE75838'), + ('{{tusd_usd}}', 8, '0x9Cf3Ef104A973b351B2c032AA6793c3A6F76b448', '0x2EBa2C3CDF50f5BC20fc23F533B227dB6b10A725'), + ('{{tusd_por}}', 18, '0x45b73930AE07C902275312c6b5BacE505D4a5883', '0x375B72E40c1A16424EAd361eC308b1cBCf5CB721'), + ('{{uni_usd}}', 8, '0x9a1372f9b1B71B3A5a72E092AE67E172dBd7Daaa', '0xA0326D3AD91D7724380c096AA62Ae1d5A8d260A8'), + ('{{usdc_usd}}', 8, '0xF096872672F44d6EBA71458D74fe67F9a77a23B9', '0xfBd998938f8f7210eEC3D1e12E80A10972F02aEd'), + ('{{usdc_e_por}}', 6, '0x63769951E4cfDbDC653dD9BBde63D2Ce0746e5F2', '0xBe865442c3A0042f6d619027c697CA409513fFb4'), + ('{{usdt_usd}}', 8, '0xEBE676ee90Fe1112671f19b6B7459bC678B67e8a', '0xb8AEB9160385fa2D1B63B5E88351238593ba0127'), + ('{{usdt_e_por}}', 6, '0x94D8c2548018C27F1aa078A23C4158206bE1CC72', '0x615049D0F6441b8bF09876A97A28B7719A951f46'), + ('{{ust_usd}}', 8, '0xf58B78581c480caFf667C63feDd564eCF01Ef86b', '0xa01516869D8325Fd18a77b307cA38Cab1Eb8Fdeb'), + ('{{ust_usd}}', 8, '0xf58B78581c480caFf667C63feDd564eCF01Ef86b', '0x8b6C17529B122fE39E7F561749476cB0efc5AE6D'), + ('{{wbtc_usd}}', 8, '0x86442E3a98558357d46E6182F4b262f76c4fa26F', '0xb50D5dB75a844365995C29B534a31536a4C56513'), + ('{{wbtc_e_por}}', 8, '0xebEfEAA58636DF9B20a4fAd78Fad8759e6A20e87', '0xAfde05b14dd17cA71bc484bcEf565746D7938eFE'), + ('{{weth_e_por}}', 18, '0xDDaf9290D057BfA12d7576e6dADC109421F31948', '0x1d29baE52280D3B49FA31aF7dFdb61f9dC5040Af'), + ('{{woo_eth}}', 18, '0xfAa665F5a0e13beea63b6DfF601DD634959690Df', '0x6339dfD6433C305661B060659922a70fC4eEbAC6'), + ('{{xau_usd}}', 8, '0x1F41EF93dece881Ad0b98082B2d44D3f6F0C515B', '0x8B050c37B0c8De8f91C1BF648c6c0A4E4Ed7C6eC'), + ('{{xava_usd}}', 8, '0x4Cf57DC9028187b9DAaF773c8ecA941036989238', '0x1872758F3635aa3CFA58CA30Bc2Ec84e5A2C493F'), + ('{{yfi_usd}}', 8, '0x28043B1Ebd41860B93EC1F1eC19560760B6dB556', '0x27355dF92298c785440a4D16574DF736Eb0627d0'), + ('{{zrx_usd}}', 8, '0xC07CDf938aa113741fB639bf39699926123fB58B', '0x347F6cdbD9514284b301456956c846b7B21F375B') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_reward_daily.sql new file mode 100644 index 00000000..2ab23508 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_reward_daily.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_automation_reward_daily", + ) +}} + + +{{chainlink_automation_rewards_daily ('avalanche')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_upkeep_performed_logs.sql new file mode 100644 index 00000000..723949f1 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_automation_upkeep_performed_logs.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_automation_upkeep_performed_logs" + ) +}} + +{{ chainlink_logs('avalanche', ('0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6', '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b'))}} + diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_reward_daily.sql new file mode 100644 index 00000000..a6a11727 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('avalanche')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..3629c829 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('avalanche', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..818110ad --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_ccip_send_requested_logs_v1_2", + ) +}} + +{{ chainlink_logs('avalanche', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_direct_rewards_daily.sql new file mode 100644 index 00000000..f209e08d --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('avalanche')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_fm_reward_daily.sql new file mode 100644 index 00000000..b84ce206 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('avalanche')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_daily.sql new file mode 100644 index 00000000..95a3f1e0 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('avalanche') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..578b5b8c --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('avalanche', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..6a18c5d5 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('avalanche') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_rewards_daily.sql new file mode 100644 index 00000000..7186c628 --- /dev/null +++ b/models/projects/chainlink/prod_raw/avalanche/fact_chainlink_avalanche_vrf_rewards_daily.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_avalanche_vrf_rewards_daily", + ) +}} +{{ chainlink_vrf_rewards_daily('avalanche') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_onramp_meta.sql new file mode 100644 index 00000000..14103453 --- /dev/null +++ b/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_onramp_meta.sql @@ -0,0 +1,32 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_base_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES + ('ethereum', '0xD44371bFDe87f2db3eA6Df242091351A06c2e181', '5009297550715157269', 'v1.0.0') +, ('optimism', '0xe96563b8a6b4eA245e7fCEFaba813104FC889C6c', '3734403246176062136', 'v1.0.0') +, ('polygon', '0x0000000000000000000000000000000000000000', '4051577828743386545', 'v1.0.0') +, ('bsc', '0x064f0960Ab66F44A5e6c7D2335b19De4Bb75AA0D', '11344663589394136015', 'v1.0.0') +, ('arbitrum', '0x223953DB4E0A4C33bac1B17B0df1c22919984c60', '4949039107694359620', 'v1.0.0') +, ('avalanche', '0x0000000000000000000000000000000000000000', '6433500567565415381', 'v1.0.0') +, ('ethereum', '0xDEA286dc0E01Cb4755650A6CF8d1076b454eA1cb', '5009297550715157269', 'v1.2.0') +, ('optimism', '0xd952FEAcDd5919Cc5E9454b53bF45d4E73dD6457', '3734403246176062136', 'v1.2.0') +, ('polygon', '0x3DB8Bea142e41cA3633890d0e5640F99a895D6A5', '4051577828743386545', 'v1.2.0') +, ('bsc', '0xdd4Fb402d41Beb0eEeF6CfB1bf445f50bDC8c981', '11344663589394136015', 'v1.2.0') +, ('arbitrum', '0x1E5Ca70d1e7A1B26061125738a880BBeA42FeB21', '4949039107694359620', 'v1.2.0') +, ('avalanche_c', '0xBE5a9E336D9614024B4Fa10D8112671fc9A42d96', '6433500567565415381', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_token_meta.sql new file mode 100644 index 00000000..14cfb20c --- /dev/null +++ b/models/projects/chainlink/prod_raw/base/dim_chainlink_base_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_base_ccip_token_meta", + ) +}} + +SELECT + 'base' AS chain, + token_contract, + token_symbol +FROM (VALUES + ('0x88Fb150BDc53A65fe94Dea0c9BA0a6dAf8C6e196', 'LINK'), + ('0x4200000000000000000000000000000000000006', 'WETH') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_reward_daily.sql new file mode 100644 index 00000000..b5dbc69f --- /dev/null +++ b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_base_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('base')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..ebc1e736 --- /dev/null +++ b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_base_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('base', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..9b190f13 --- /dev/null +++ b/models/projects/chainlink/prod_raw/base/fact_chainlink_base_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_base_ccip_send_requested_logs_v1_2", + ) +}} + + +{{ chainlink_logs('base', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_automation_meta.sql b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_automation_meta.sql new file mode 100644 index 00000000..2cdb76af --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_automation_meta.sql @@ -0,0 +1,53 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_bsc_automation_meta" + ) +}} +{% set _01node = '01node' %} +{% set alphachain = 'alphachain' %} +{% set chainlayer = 'chainlayer' %} +{% set dextrac = 'dextrac' %} +{% set easy2stake = 'easy2stake' %} +{% set fiews = 'fiews' %} +{% set inotel = 'inotel' %} +{% set linkforest = 'linkforest' %} +{% set linkpool = 'linkpool' %} +{% set linkriver = 'linkriver' %} +{% set piertwo = 'piertwo' %} +{% set simplyvc = 'simplyvc' %} + +SELECT + 'bsc' AS chain, + operator_name, + keeper_address +FROM (VALUES + ('{{_01node}}', '0xd0C77d2E37d87E14922B07C48D448251ea3A6141'), + ('{{_01node}}', '0x43028Ea36A0db9BaBe5D0Bd9DA00d010aC135c37'), + ('{{alphachain}}', '0x22901bdd0ACC34F435F57CAD1F0A9C5957136F8C'), + ('{{alphachain}}', '0x7828bD0D31aaE91193676139d96d2572942cC489'), + ('{{chainlayer}}', '0x228aB6d3e8bEbd6FA30B50E478D87A510617AA0f'), + ('{{dextrac}}', '0x24753929D0848988f2CF3d779CFe3211CD43b379'), + ('{{easy2stake}}', '0xA4e2864F6541721dFa36F96e8D868E0AdBD94881'), + ('{{easy2stake}}', '0x3c2a32898f6504BC35e8e3689d13A8E9A114B7b5'), + ('{{fiews}}', '0x765e469537F580f16B8C4bCF5BD4D823761678ad'), + ('{{fiews}}', '0x2c86d590177554E1A99343cb18f095D5e099c4D7'), + ('{{fiews}}', '0xA13fDb8Dda2196091E993498C7F2A3183A3ED58a'), + ('{{inotel}}', '0xdd381028cfa5241284D23CE73ef7F0E3042d80F8'), + ('{{inotel}}', '0x7D23dd26E2F0465150625667d224BBD3B35E2b17'), + ('{{inotel}}', '0x4922449C17Cee53b262191834FFf6fbc82A80f9C'), + ('{{linkforest}}', '0x80C0EB96c401a441DF6D19ECd8e562b18C4E4E24'), + ('{{linkforest}}', '0x604410B182CDe4eCEB191Cfa2E0FD33224024c83'), + ('{{linkforest}}', '0xa7d2C71Eaa52DdD12eB4C48C52318eaa82C5bb37'), + ('{{linkpool}}', '0xB9a93AADAB82a903eC43967F4C9FEf9297116D90'), + ('{{linkriver}}', '0x017B3bc89c1EA9b7F02f1F01B8E667290e9c1ff4'), + ('{{piertwo}}', '0x60a764804dC2FaA78e06C1f09C1fc7236a3A7B9E'), + ('{{piertwo}}', '0xDed3787602432bc12271C467Bb02138b0Ee79923'), + ('{{piertwo}}', '0x8b4b6886dFAfD77Bd8d8ddF84Ad3a0F2d1Cad936'), + ('{{simplyvc}}', '0x07ACeD52eeBbd1642799fb48bBEaD5Bc64616341'), + ('{{simplyvc}}', '0xBa61a9E217306315C239E73597d410e1bd469420'), + ('{{simplyvc}}', '0x2CCADCa3Dc99a6d55E2588e4255215b90Cff3320') +) a (operator_name, keeper_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_onramp_meta.sql new file mode 100644 index 00000000..aa08b22e --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_onramp_meta.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_bsc_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES + ('ethereum', '0x1f17D464652f5Bd74a03446FeA20590CCfB3332D', '5009297550715157269', 'v1.0.0') +, ('optimism', '0x0000000000000000000000000000000000000000', '3734403246176062136', 'v1.0.0') +, ('polygon', '0xCAd54BE1A4Bc5e467cd5B53896eb692D9f6956cD', '4051577828743386545', 'v1.0.0') +, ('arbitrum', '0x0000000000000000000000000000000000000000', '4949039107694359620', 'v1.0.0') +, ('avalanche', '0xf7c9B607cF09B4048f09C84236cE7f11DF6D6364', '6433500567565415381', 'v1.0.0') +, ('base', '0xFdc26aA261655580f7ac413927983F664291Fd22', '15971525489660198786', 'v1.0.0') +, ('ethereum', '0x0Bf40b034872D0b364f3DCec04C7434a4Da1C8d9', '5009297550715157269', 'v1.2.0') +, ('optimism', '0x4FEB11A454C9E8038A8d0aDF599Fe7612ce114bA', '3734403246176062136', 'v1.2.0') +, ('polygon', '0x6bD4754D86fc87FE5b463D368f26a3587a08347c', '4051577828743386545', 'v1.2.0') +, ('arbitrum', '0x2788b46BAcFF49BD89562e6bA5c5FBbbE5Fa92F7', '4949039107694359620', 'v1.2.0') +, ('avalanche', '0x6aa72a998859eF93356c6521B72155D355D0Cfd2', '6433500567565415381', 'v1.2.0') +, ('base', '0x70bC7f7a6D936b289bBF5c0E19ECE35B437E2e36', '15971525489660198786', 'v1.2.0') +, ('wemix', '0x1467fF8f249f5bc604119Af26a47035886f856BE', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_token_meta.sql new file mode 100644 index 00000000..e02f4fa2 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_bsc_ccip_token_meta", + ) +}} + +SELECT + 'bsc' AS chain, + token_contract, + token_symbol +FROM (VALUES + ('0x404460C6A5EdE2D891e8297795264fDe62ADBB75', 'LINK'), + ('0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', 'WBNB') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..71fd8aa6 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_ocr_operator_admin_meta.sql @@ -0,0 +1,71 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_bsc_ocr_operator_admin_meta" + ) +}} + +{% set a01node = '01Node' %} +{% set alphachain = 'Alpha Chain' %} +{% set blockdaemon = 'Blockdaemon' %} +{% set chainlayer = 'Chainlayer' %} +{% set cosmostation = 'Cosmostation' %} +{% set cryptomanufaktur = 'CryptoManufaktur' %} +{% set dmakers = 'dMakers' %} +{% set dextrac = 'DexTrac' %} +{% set dxfeed = 'dxFeed' %} +{% set easy2stake = 'Easy 2 stake' %} +{% set fiews = 'Fiews' %} +{% set frameworkventures = 'Framework Ventures' %} +{% set inotel = 'Inotel' %} +{% set linkforest = 'LinkForest' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set onchaintech = 'On-chain Tech' %} +{% set piertwo = 'Pier Two' %} +{% set simplyvc = 'Simply VC' %} +{% set snzpool = 'SNZPool' %} +{% set syncnode = 'SyncNode' %} +{% set tiingo = 'Tiingo' %} +{% set validationcloud = 'Validation Cloud' %} +{% set xbto = 'XBTO' %} +{% set ztake = 'Ztake.org' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0x56f770Ae39d6174fCDC1929C5B85baC8de47e74F', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0xa5D0084A766203b463b3164DFc49D91509C12daB', '{{alphachain}}'), + ('0x3615Fa045f00ae0eD60Dc0141911757c2AdC5E03', '{{blockdaemon}}'), + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0x1B17eB8FAE3C28CB2463235F9D407b527ba4e6Dd', '{{cosmostation}}'), + ('0x59eCf48345A221E0731E785ED79eD40d0A94E2A5', '{{cryptomanufaktur}}'), + ('0xB98DA55e3E72BabF18c4f421Ea5B653519e79f2B', '{{dmakers}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0xb284a468522663F6219f2912ca10145B52b13503', '{{dxfeed}}'), + ('0x991812566f6E14897Fc1e401D24de19845c0442f', '{{dxfeed}}'), + ('0xFdC770353dC0bFCE80a17Ab8a6a2E7d80590f1Ba', '{{easy2stake}}'), + ('0x38a75E2A093d8F9b815AAE9cA6A5Eb0c2901329b', '{{fiews}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0x6eF38c3d1D85B710A9e160aD41B912Cb8CAc2589', '{{frameworkventures}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0x4564A9c6061f6f1F2Eadb954B1b3C241D2DC984e', '{{linkforest}}'), + ('0xD48fc6E2B73C2988fA50C994181C0CdCa850D62a', '{{linkforest}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0x97b7CF748f1eb0B451f4464B4Aebc639d18Ddb48', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x35DaC078fC9E6e45d89a6CBc78A776BA719b485D', '{{onchaintech}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x9cCbFD17FA284f36c2ff503546160B256d1CD3D1', '{{snzpool}}'), + ('0xC51D3470693BC049809A1c515606124c7C75908d', '{{syncnode}}'), + ('0xfAE26207ab74ee528214ee92f94427f8Cdbb6A32', '{{tiingo}}'), + ('0x183A96629fF566e7AA8AfA38980Cd037EB40A59A', '{{validationcloud}}'), + ('0x0b16EC1044F60F03B0e815f863bd4d27638cbD0A', '{{xbto}}'), + ('0xBa5ed4Cd392ABC8Df7009B4A385eB3e05c7375F1', '{{ztake}}'), + ('0x0039F22efB07A647557C7C5d17854CFD6D489eF3', '{{ztake}}'), + ('0x9d69B0fcbcf9a7e513E947Cd7ce2019904e2E764', '{{ztake}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..9cd3b5a9 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/dim_chainlink_bsc_price_feeds_oracle_addresses.sql @@ -0,0 +1,329 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_bsc_price_feeds_oracle_addresses", + ) +}} +{% set _1inch_usd = '1INCH / USD' %} +{% set aapl_usd = 'AAPL / USD' %} +{% set aave_usd = 'AAVE / USD' %} +{% set ada_bnb = 'ADA / BNB' %} +{% set ada_usd = 'ADA / USD' %} +{% set alpaca_usd = 'ALPACA / USD' %} +{% set alpha_bnb = 'ALPHA / BNB' %} +{% set amzn_usd = 'AMZN / USD' %} +{% set arkk_usd = 'ARKK / USD' %} +{% set arpa_usd = 'ARPA / USD' %} +{% set atom_usd = 'ATOM / USD' %} +{% set aud_usd = 'AUD / USD' %} +{% set auto_usd = 'AUTO / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set axs_usd = 'AXS / USD' %} +{% set bac_usd = 'BAC / USD' %} +{% set band_bnb = 'BAND / BNB' %} +{% set band_usd = 'BAND / USD' %} +{% set bch_bnb = 'BCH / BNB' %} +{% set bch_usd = 'BCH / USD' %} +{% set beth_usd = 'BETH / USD' %} +{% set bidu_usd = 'BIDU / USD' %} +{% set bifi_bnb = 'BIFI / BNB' %} +{% set bifi_usd = 'BIFI / USD' %} +{% set bnb_usd = 'BNB / USD' %} +{% set boring_bnb = 'BORING / BNB' %} +{% set brk_b_usd = 'BRK.B / USD' %} +{% set brl_usd = 'BRL / USD' %} +{% set bsw_usd = 'BSW / USD' %} +{% set btc_bnb = 'BTC / BNB' %} +{% set btc_eth = 'BTC / ETH' %} +{% set btc_usd = 'BTC / USD' %} +{% set busd_bnb = 'BUSD / BNB' %} +{% set busd_usd = 'BUSD / USD' %} +{% set c98_usd = 'C98 / USD' %} +{% set cake_bnb = 'CAKE / BNB' %} +{% set cake_usd = 'CAKE / USD' %} +{% set cfx_usd = 'CFX / USD' %} +{% set chf_usd = 'CHF / USD' %} +{% set chr_usd = 'CHR / USD' %} +{% set coin_usd = 'COIN / USD' %} +{% set comp_usd = 'COMP / USD' %} +{% set cream_bnb = 'CREAM / BNB' %} +{% set crv_usd = 'CRV / USD' %} +{% set calculated_bnbx_usd = 'Calculated BNBx / USD' %} +{% set calculated_savax_usd = 'Calculated SAVAX / USD' %} +{% set dai_bnb = 'DAI / BNB' %} +{% set dai_usd = 'DAI / USD' %} +{% set dego_usd = 'DEGO / USD' %} +{% set df_usd = 'DF / USD' %} +{% set dodo_bnb = 'DODO / BNB' %} +{% set dodo_usd = 'DODO / USD' %} +{% set doge_usd = 'DOGE / USD' %} +{% set dot_bnb = 'DOT / BNB' %} +{% set dot_usd = 'DOT / USD' %} +{% set eos_bnb = 'EOS / BNB' %} +{% set eos_usd = 'EOS / USD' %} +{% set eth_bnb = 'ETH / BNB' %} +{% set eth_usd = 'ETH / USD' %} +{% set eur_usd = 'EUR / USD' %} +{% set fb_usd = 'FB / USD' %} +{% set fet_usd = 'FET / USD' %} +{% set fil_usd = 'FIL / USD' %} +{% set frax_usd = 'FRAX / USD' %} +{% set ftm_usd = 'FTM / USD' %} +{% set ftt_usd = 'FTT / USD' %} +{% set fxs_usd = 'FXS / USD' %} +{% set gbp_usd = 'GBP / USD' %} +{% set gme_usd = 'GME / USD' %} +{% set gmt_usd = 'GMT / USD' %} +{% set googl_usd = 'GOOGL / USD' %} +{% set high_usd = 'HIGH / USD' %} +{% set icp_usd = 'ICP / USD' %} +{% set inj_usd = 'INJ / USD' %} +{% set inr_usd = 'INR / USD' %} +{% set jpm_usd = 'JPM / USD' %} +{% set jpy_usd = 'JPY / USD' %} +{% set kava_usd = 'KAVA / USD' %} +{% set klay_usd = 'KLAY / USD' %} +{% set knc_usd = 'KNC / USD' %} +{% set lina_usd = 'LINA / USD' %} +{% set link_bnb = 'LINK / BNB' %} +{% set link_usd = 'LINK / USD' %} +{% set lit_usd = 'LIT / USD' %} +{% set ltc_bnb = 'LTC / BNB' %} +{% set ltc_usd = 'LTC / USD' %} +{% set mask_usd = 'MASK / USD' %} +{% set matic_usd = 'MATIC / USD' %} +{% set mbox_usd = 'MBOX / USD' %} +{% set mdx_usd = 'MDX / USD' %} +{% set mim_usd = 'MIM / USD' %} +{% set mrna_usd = 'MRNA / USD' %} +{% set ms_usd = 'MS / USD' %} +{% set msft_usd = 'MSFT / USD' %} +{% set mxn_usd = 'MXN / USD' %} +{% set near_usd = 'NEAR / USD' %} +{% set nflx_usd = 'NFLX / USD' %} +{% set nuls_usd = 'NULS / USD' %} +{% set nvda_usd = 'NVDA / USD' %} +{% set ong_usd = 'ONG / USD' %} +{% set ont_usd = 'ONT / USD' %} +{% set pacb_usd = 'PACB / USD' %} +{% set paxg_usd = 'PAXG / USD' %} +{% set pfe_usd = 'PFE / USD' %} +{% set php_usd = 'PHP / USD' %} +{% set qqq_usd = 'QQQ / USD' %} +{% set rdnt_usd = 'RDNT / USD' %} +{% set reef_usd = 'REEF / USD' %} +{% set sgd_usd = 'SGD / USD' %} +{% set shib_usd = 'SHIB / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set spce_usd = 'SPCE / USD' %} +{% set spell_usd = 'SPELL / USD' %} +{% set spy_usd = 'SPY / USD' %} +{% set sushi_usd = 'SUSHI / USD' %} +{% set sxp_usd = 'SXP / USD' %} +{% set thb_usd = 'THB / USD' %} +{% set trx_usd = 'TRX / USD' %} +{% set tsla_usd = 'TSLA / USD' %} +{% set tsm_usd = 'TSM / USD' %} +{% set tusd_usd = 'TUSD / USD' %} +{% set twt_bnb = 'TWT / BNB' %} +{% set total_marketcap_usd = 'Total Marketcap USD' %} +{% set unh_usd = 'UNH / USD' %} +{% set uni_bnb = 'UNI / BNB' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdc_bnb = 'USDC / BNB' %} +{% set usdc_usd = 'USDC / USD' %} +{% set usdd_usd = 'USDD / USD' %} +{% set usdt_bnb = 'USDT / BNB' %} +{% set usdt_usd = 'USDT / USD' %} +{% set vai_usd = 'VAI / USD' %} +{% set vet_usd = 'VET / USD' %} +{% set vt_usd = 'VT / USD' %} +{% set win_usd = 'WIN / USD' %} +{% set wing_usd = 'WING / USD' %} +{% set woo_usd = 'WOO / USD' %} +{% set wti_usd = 'WTI / USD' %} +{% set xag_usd = 'XAG / USD' %} +{% set xau_usd = 'XAU / USD' %} +{% set xlm_usd = 'XLM / USD' %} +{% set xrp_bnb = 'XRP / BNB' %} +{% set xrp_usd = 'XRP / USD' %} +{% set xtz_bnb = 'XTZ / BNB' %} +{% set xtz_usd = 'XTZ / USD' %} +{% set xvs_bnb = 'XVS / BNB' %} +{% set xvs_usd = 'XVS / USD' %} +{% set yfi_bnb = 'YFI / BNB' %} +{% set yfi_usd = 'YFI / USD' %} +{% set yfii_usd = 'YFII / USD' %} +{% set zar_usd = 'ZAR / USD' %} +{% set zil_usd = 'ZIL / USD' %} + +SELECT + 'bsc' as chain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{_1inch_usd}}', 8, '0x9a177Bb9f5b6083E962f9e62bD21d4b5660Aeb03', '0xd690b2CF0D2bcBce51c4cE2dc46E02C508465c5c'), + ('{{aapl_usd}}', 8, '0xb7Ed5bE7977d61E83534230f3256C021e0fae0B6', '0x09e6B30909AdD72E1E6285F8d7609B882940e3b4'), + ('{{aave_usd}}', 8, '0xA8357BF572460fC40f4B0aCacbB2a6A61c89f475', '0x7457f14cE4773EBEb1352D2774Ec384a54c2F665'), + ('{{ada_bnb}}', 18, '0x2d5Fc41d1365fFe13d03d91E82e04Ca878D69f4B', '0x50204D36C231CD4F0De67545Cd1E36C01336e46b'), + ('{{ada_usd}}', 8, '0xa767f745331D267c7751297D982b050c93985627', '0x2028b4a27c14263Ba00C75c42cfe524E705031F4'), + ('{{alpaca_usd}}', 8, '0xe0073b60833249ffd1bb2af809112c2fbf221DF6', '0x481E278Bf87281CF12342A4302e799Bf8515b985'), + ('{{alpaca_usd}}', 8, '0xe0073b60833249ffd1bb2af809112c2fbf221DF6', '0x32A3dcb7f09B46b32b664c59AB0E78aAa852484e'), + ('{{alpha_bnb}}', 18, '0x7bC032A7C19B1BdCb981D892854d090cfB0f238E', '0x9c0Ab19514D52196B09B04294937ECEC2Dc69950'), + ('{{amzn_usd}}', 8, '0x51d08ca89d3e8c12535BA8AEd33cDf2557ab5b2a', '0x87cbA2Da16C453B02BBc70565f8F8a89722DF300'), + ('{{arkk_usd}}', 8, '0x234c7a1da64Bdf44E1B8A25C94af53ff2A199dE0', '0xAD249Db435A301dD9559730b85028D40c933dE63'), + ('{{arpa_usd}}', 8, '0x31E0110f8c1376a699C8e3E65b5110e0525A811d', '0x4849167844B7c8074B3Da31332AA547a17877b63'), + ('{{arpa_usd}}', 8, '0x31E0110f8c1376a699C8e3E65b5110e0525A811d', '0x09b74482322CEdd89Ca3d8C63C786B12140F687F'), + ('{{atom_usd}}', 8, '0xb056B7C804297279A9a673289264c17E6Dc6055d', '0x2e9c2B44D3f5702D2654c20260E8e010656D9777'), + ('{{aud_usd}}', 8, '0x498F912B09B5dF618c77fcC9E8DA503304Df92bF', '0x5C8c6c45dcF57aEae4D7Ba4F613B6FC38EF7d18B'), + ('{{auto_usd}}', 8, '0x88E71E6520E5aC75f5338F5F0c9DeD9d4f692cDA', '0x5Ff27E78AE8fc4C329De7064ebe7FEbdE859af0A'), + ('{{avax_usd}}', 8, '0x5974855ce31EE8E1fff2e76591CbF83D7110F151', '0xB4C0F8F07a5e5d870bC02457213809B9cb5F56C4'), + ('{{axs_usd}}', 8, '0x7B49524ee5740c99435f52d731dFC94082fE61Ab', '0xc0850B8587cffA166985fa397e8391fecA959f3f'), + ('{{axs_usd}}', 8, '0x7B49524ee5740c99435f52d731dFC94082fE61Ab', '0x8411e118295d9ab122dD69ea9410aD866Bf9d829'), + ('{{bac_usd}}', 8, '0x368b7ab0a0Ff94E23fF5e4A7F04327dF7079E174', '0x12D42e13E69A28e95DbB3F2644eeCDBcFB7cA8C3'), + ('{{band_bnb}}', 18, '0x3334bF7ec892Ca03D1378B51769b7782EAF318C4', '0x3331b2d33E9a472f6b34C150D47017d75b4CD088'), + ('{{band_usd}}', 8, '0xC78b99Ae87fF43535b0C782128DB3cB49c74A4d3', '0x8A73214adB7a23334371Cb7C0c6165973F45Cd42'), + ('{{bch_bnb}}', 18, '0x2a548935a323Bb7329a5E3F1667B979f16Bc890b', '0x38d0f1dfE37Aac059aD06B2d30Ef60AA537f0b05'), + ('{{bch_usd}}', 8, '0x43d80f616DAf0b0B42a928EeD32147dC59027D41', '0xF78feB6c096117Bfb9283aa1eAc304449E04d374'), + ('{{beth_usd}}', 8, '0x2A3796273d47c4eD363b361D3AEFb7F7E2A13782', '0x4c935c5C9a6BADC0855AD3B5867BCFf90c8bD5eC'), + ('{{bidu_usd}}', 8, '0xb9344e4Ffa6d5885B2C5830adc27ddF3FdBF883c', '0xa78f89fa9A028100998D7207A573B12295342e03'), + ('{{bifi_bnb}}', 18, '0xE6A9106Fca5d6552f3f1a3B3B33b62eb2F6F5347', '0x8d06D8b3a37D9A1BCA3df055bDdD07f1639af4E6'), + ('{{bifi_usd}}', 8, '0xaB827b69daCd586A37E80A7d552a4395d576e645', '0x43c70DB4018857eB6c4D6aA40880f144033AEAf5'), + ('{{bnb_usd}}', 8, '0x0567F2323251f0Aab15c8dFb1967E4e8A7D42aeE', '0x137924D7C36816E0DcAF016eB617Cc2C92C05782'), + ('{{boring_bnb}}', 18, '0xeAC5322C6b841FE1466D42D9Cfa1cE75c51d6ae3', '0x7A23675a974F6AEf321dBfA442B4231Bf512391F'), + ('{{brk_b_usd}}', 8, '0x5289A08b6d5D2f8fAd4cC169c65177f68C0f0A99', '0x69fC6A49C914500ba323Ea68C60f979908Cc71FA'), + ('{{brl_usd}}', 8, '0x5cb1Cb3eA5FB46de1CE1D0F3BaDB3212e8d8eF48', '0x2f92dc0711AdA3dc255e2197e7c15C8aDC6b6537'), + ('{{bsw_usd}}', 8, '0x08E70777b982a58D23D05E3D7714f44837c06A21', '0xC430481d7f5b670623c70420643AC5EfA0D7c95d'), + ('{{btc_bnb}}', 18, '0x116EeB23384451C78ed366D4f67D5AD44eE771A0', '0x7E90d60D3207A96FAaBB895C9c7DeE2E2CaBa0Fd'), + ('{{btc_eth}}', 18, '0xf1769eB4D1943AF02ab1096D7893759F6177D6B8', '0x343FB6A2ED16509a934880Abc82d0251867B70f4'), + ('{{btc_usd}}', 8, '0x264990fbd0A4796A3E3d8E37C4d5F87a3aCa5Ebf', '0x178bA789e24A1d51E9Ea3Cb1Db3B52917963D71D'), + ('{{busd_bnb}}', 18, '0x87Ea38c9F24264Ec1Fff41B04ec94a97Caf99941', '0x76303936B9DF69474A57352765faCEca2bf9C7Ef'), + ('{{busd_usd}}', 8, '0xcBb98864Ef56E9042e7d2efef76141f15731B82f', '0x7A6BB3a3C0C99bA43564017D7523a74BA0f7cB5d'), + ('{{c98_usd}}', 8, '0x889158E39628C0397DC54B84F6b1cbe0AaEb7FFc', '0xacBf98E423Bb8458397dF2d4Cc9eE031879Fd59F'), + ('{{cake_bnb}}', 18, '0xcB23da9EA243f53194CBc2380A6d4d9bC046161f', '0x370d7b33330d40c55e8e71aFD88eFB31E9Dcc620'), + ('{{cake_usd}}', 8, '0xB6064eD41d4f67e353768aA239cA86f4F73665a1', '0x7935a51aDDaB8550D346FEEf34e02F67C9330109'), + ('{{cfx_usd}}', 8, '0xe3cA2f3Bad1D8327820f648C759f17162b5383ae', '0x3889e2FD71BB7a0600Da48D98CD579b2A1d39F51'), + ('{{chf_usd}}', 8, '0x964261740356cB4aaD0C3D2003Ce808A4176a46d', '0x6c9C9757F0478bC38Bf73ABdA27ac42864De0645'), + ('{{chr_usd}}', 8, '0x1f771B2b1F3c3Db6C7A1d5F38961a49CEcD116dA', '0x9eBB8330dff88F3D9E743E8240177cdCD3292103'), + ('{{coin_usd}}', 8, '0x2d1AB79D059e21aE519d88F978cAF39d74E31AEB', '0x4402EE0a557703071bf15F3C2F1743dec9a1600c'), + ('{{comp_usd}}', 8, '0x0Db8945f9aEf5651fa5bd52314C5aAe78DfDe540', '0x94069ff23E3a962646638b2Bb44d4d7F664DCCbD'), + ('{{cream_bnb}}', 18, '0x6f55DFAf098a813d87BB4e6392275b502360Bb9D', '0x4a2A603d64C807C6532053EF808117048ac9990a'), + ('{{crv_usd}}', 8, '0x2e1C3b6Fcae47b20Dd343D9354F7B1140a1E6B27', '0x3f57d674804DfC9F5CA927531969012C5C9095bd'), + ('{{calculated_bnbx_usd}}', 8, '0xc4429B539397a3166eF3ef132c29e34715a3ABb4', '0xf230822f96bc8819e037db85695fc093d2C68Ccd'), + ('{{calculated_savax_usd}}', 18, '0x3b37C6f1e3207DE5a4664E837072Bd9A25269B39', '0x338b40CaAef0267191a1869aC5ef9E7945949aeA'), + ('{{dai_bnb}}', 18, '0x8EC213E7191488C7873cEC6daC8e97cdbAdb7B35', '0x000f46946d47647c04A5f10269e9084FB8c8637A'), + ('{{dai_usd}}', 8, '0x132d3C0B1D2cEa0BC552588063bdBb210FDeecfA', '0x09A183232a9184ae07CEee3c0401f7435D42efdF'), + ('{{dego_usd}}', 8, '0x39F1275366D130eB677D4F47D40F9296B62D877A', '0xF9e6F8660649f9762E0a721D666B8B5931EBB994'), + ('{{df_usd}}', 8, '0x1b816F5E122eFa230300126F97C018716c4e47F5', '0xf0EcE271b1c02128e30C5797C0D76b2c9c36ec17'), + ('{{dodo_bnb}}', 18, '0x120ae15CB86060527BFD431Abd3FF51890D2032C', '0x5D22062a0f28C476091D7023E7D2a240bA7e6b96'), + ('{{dodo_usd}}', 8, '0x87701B15C08687341c2a847ca44eCfBc8d7873E1', '0x0Ad45915fC60a08dEcD39D27ad69AC10966C82C0'), + ('{{dodo_usd}}', 8, '0x87701B15C08687341c2a847ca44eCfBc8d7873E1', '0x512D05a6fe786CD9174Dff990CbF5Be26F713Be1'), + ('{{doge_usd}}', 8, '0x3AB0A0d137D4F946fBB19eecc6e92E64660231C8', '0xd0A597FfC7075E1449eCE7fEaA9880488dDB34FD'), + ('{{dot_bnb}}', 18, '0xBA8683E9c3B1455bE6e18E7768e8cAD95Eb5eD49', '0x390B935CdB6fC4924D203a398DA160178efe7b8A'), + ('{{dot_usd}}', 8, '0xC333eb0086309a16aa7c8308DfD32c8BBA0a2592', '0xe978DaA50D3A8574F139c1e3Fe5D511dDb323BC5'), + ('{{eos_bnb}}', 18, '0xed93F3764334788f2f6628b30e505fe1fc5d1D7b', '0x73D17dbB9d4d520Ca4D260c359994d8a2Aa4cDa3'), + ('{{eos_usd}}', 8, '0xd5508c8Ffdb8F15cE336e629fD4ca9AdB48f50F0', '0x0C1A3fa6Cc1a91F751A9232cC5D6Be9700a93Fc7'), + ('{{eth_bnb}}', 18, '0x63D407F32Aa72E63C7209ce1c2F5dA40b3AaE726', '0x2813fAB00b38189AcB8D805A687222Ae1034D53a'), + ('{{eth_usd}}', 8, '0x9ef1B8c0E4F7dc8bF5719Ea496883DC6401d5b2e', '0xfC3069296a691250fFDf21fe51340fdD415a76ed'), + ('{{eur_usd}}', 8, '0x0bf79F617988C472DcA68ff41eFe1338955b9A80', '0xD2528B74ca91Bb07B9bd9685ce533367C6fa657C'), + ('{{fb_usd}}', 8, '0xfc76E9445952A3C31369dFd26edfdfb9713DF5Bb', '0xF57A06A342D851E8cE2c9512b20D08331eEc43Ab'), + ('{{fet_usd}}', 8, '0x657e700c66C48c135c4A29c4292908DbdA7aa280', '0xb2B7c2d554F52dAeC37974b2E335c98cdA8cEB3A'), + ('{{fil_usd}}', 8, '0xE5dbFD9003bFf9dF5feB2f4F445Ca00fb121fb83', '0x8f8289E5CA9a4C867ec7A257b0E9Dd1132093E23'), + ('{{frax_usd}}', 8, '0x13A9c98b07F098c5319f4FF786eB16E22DC738e1', '0x673DA2F5eaE6860F7b1249e2CbCca433834a1EB3'), + ('{{ftm_usd}}', 8, '0xe2A47e87C0f4134c8D06A41975F6860468b2F925', '0xf5C16d009af1F1d3395883d9d7e626472D2dd6B8'), + ('{{ftt_usd}}', 8, '0x38E05754Eb00171cBE72bA1eE792933d6e8d2891', '0x122400b06aAC5ba901492035aFC99d3a5C262330'), + ('{{ftt_usd}}', 8, '0x38E05754Eb00171cBE72bA1eE792933d6e8d2891', '0x04c433e64257a34aC9a547C6887B496D5B8692Be'), + ('{{fxs_usd}}', 8, '0x0E9D55932893Fb1308882C7857285B2B0bcc4f4a', '0x36Eb75b819dF05FB868b16074dF1A9c4354082c0'), + ('{{gbp_usd}}', 8, '0x8FAf16F710003E538189334541F5D4a391Da46a0', '0xE0A34B8FC5e80C877fd568bd22b49E1BCa977B6F'), + ('{{gme_usd}}', 8, '0x66cD2975d02f5F5cdEF2E05cBca12549B1a5022D', '0xEF447188e7bd5a7a4E4ceD711ee9de1aF1B11bC3'), + ('{{gmt_usd}}', 8, '0x8b0D36ae4CF8e277773A7ba5F35c09Edb144241b', '0xEFc3be9286c4aE5c712BaB1182204086Ba0c45B6'), + ('{{googl_usd}}', 8, '0xeDA73F8acb669274B15A977Cb0cdA57a84F18c2a', '0xDd7d114B15b6052750Ed5a9B753858366c01FA67'), + ('{{high_usd}}', 8, '0xdF4Dd957a84F798acFADd448badd2D8b9bC99047', '0x0D5aB38D37A5B5427B971E10F99e8c06599260Af'), + ('{{icp_usd}}', 8, '0x84210d9013A30C6ab169e28840A6CC54B60fa042', '0xFB3e6157BA71C0d8853690C4Fd3ff88109A79103'), + ('{{inj_usd}}', 8, '0x63A9133cd7c611d6049761038C16f238FddA71d7', '0x4d70d497CeF3674be370586230F9a2f4b30CFF11'), + ('{{inr_usd}}', 8, '0xeF0a3109ce97e0B58557F0e3Ba95eA16Bfa4A89d', '0x577971aa5f4cF0a7f905dB42d612072CfF65077d'), + ('{{jpm_usd}}', 8, '0x8f26ba94180371baA2D2C143f96b6886DCACA250', '0x194007B7A59c8E7105852FC19E18C4A5c344ADEA'), + ('{{jpy_usd}}', 8, '0x22Db8397a6E77E41471dE256a7803829fDC8bC57', '0x6f3f35Cc510232E41179F9010Cf12b1B48538a91'), + ('{{kava_usd}}', 8, '0x12bf0C3f7D5aca9E711930d704dA2774358d9210', '0x2029297624088ea9e3eE549E40d33d4966Ce1C63'), + ('{{klay_usd}}', 8, '0xfD07b211044572898cDbcb1435f0a1369Fd15726', '0x00865e449e123BA4C3A46D614330dA56b739f723'), + ('{{knc_usd}}', 8, '0xF2f8273F6b9Fc22C90891DC802cAf60eeF805cDF', '0x982675D04D9c9fA074c702f5AcA3d84D04FE31D5'), + ('{{lina_usd}}', 8, '0x38393201952f2764E04B290af9df427217D56B41', '0xE6Ff236A76594a9A1Da727cA42B29c7B3ac0d45A'), + ('{{link_bnb}}', 18, '0xB38722F6A608646a538E882Ee9972D15c86Fc597', '0x678f2883BB67104273229463ddA15Ee841584b36'), + ('{{link_usd}}', 8, '0xca236E327F629f9Fc2c30A4E95775EbF0B89fac8', '0x0B67AD077Fa839F6737A1630c89eE1A1572989c6'), + ('{{lit_usd}}', 8, '0x83766bA8d964fEAeD3819b145a69c947Df9Cb035', '0xF23D01646Fe967A6c403Defdff24299040Fd4935'), + ('{{ltc_bnb}}', 18, '0x4e5a43A79f53c0a8e83489648Ea7e429278f8b2D', '0x80519EcaD69B8E43C6690b73554379BfdF0eF79E'), + ('{{ltc_usd}}', 8, '0x74E72F37A8c415c8f1a98Ed42E78Ff997435791D', '0xB92B265908775B59517eC1fC6C6635f7E1D60f1D'), + ('{{mask_usd}}', 8, '0x4978c0abE6899178c1A74838Ee0062280888E2Cf', '0xF1eed6F4A9006B3Cf8f547B36d055b97EF50DE8b'), + ('{{matic_usd}}', 8, '0x7CA57b0cA6367191c94C8914d7Df09A57655905f', '0xeC1Ca9c5Dd897F832CDe3D43BB041f5e01380757'), + ('{{mbox_usd}}', 8, '0x1AAE42AA46483370Be23274Abb29Bcc40f808a4c', '0xCE75B866Ec86Ac261Ea191F0BC7820FB296C2477'), + ('{{mdx_usd}}', 8, '0x9165366bf450a6906D25549f0E0f8E6586Fc93E2', '0xf23C2aa8c9e8E2e6E48257c495E624CA87Bb14BC'), + ('{{mim_usd}}', 8, '0xc9D267542B23B41fB93397a93e5a1D7B80Ea5A01', '0x87a69a2988b33ea745008A47486890232630AABf'), + ('{{mrna_usd}}', 8, '0x6101F4DFBb24Cac3D64e28A815255B428b93639f', '0xD026fB17CC40923D4c155486970A0502C85Cb8E5'), + ('{{ms_usd}}', 8, '0x6b25F7f189c3f26d3caC43b754578b67Fc8d952A', '0x3820576866B5cAb5aDD3686c91fD27747b05E616'), + ('{{msft_usd}}', 8, '0x5D209cE1fBABeAA8E6f9De4514A74FFB4b34560F', '0xE4A4ceE270f5113FF17CB5c7798f83780C1e55A6'), + ('{{mxn_usd}}', 8, '0x16c0C1f971b1780F952572670A9d5ce4123582a1', '0x6a6eb03007131EAe9D02f66289a82d784c4EeA50'), + ('{{near_usd}}', 8, '0x0Fe4D87883005fCAFaF56B81d09473D9A29dCDC3', '0x40B8039e1A5A831b493C15164228A1839dd5b62a'), + ('{{nflx_usd}}', 8, '0x1fE6c9Bd9B29e5810c2819f37dDa8559739ebeC9', '0xb921310Af82D1e41498e15Fe784eFEd01a7E9830'), + ('{{nuls_usd}}', 8, '0xaCFBE73231d312AC6954496b3f786E892bF0f7e5', '0x9e88f327778810E386eB2eBf6619A74d4D7568c6'), + ('{{nvda_usd}}', 8, '0xea5c2Cbb5cD57daC24E26180b19a929F3E9699B8', '0xAAADa315B51E29901566664135C228f2CF287F33'), + ('{{ong_usd}}', 8, '0xcF95796f3016801A1dA5C518Fc7A59C51dcEf793', '0xCB2ac1D2e2582dE7b5EFbB174f04B1D8Ecd2d043'), + ('{{ont_usd}}', 8, '0x887f177CBED2cf555a64e7bF125E1825EB69dB82', '0x586E5572217D68643E1de6a0d40Cb37B0961A11a'), + ('{{pacb_usd}}', 8, '0xe9bEC24f14AB49b0a81a482a4224e7505d2d29e9', '0xf61634861D8EbfD65C6974F1E51477988fE2DAC3'), + ('{{paxg_usd}}', 8, '0x7F8caD4690A38aC28BDA3D132eF83DB1C17557Df', '0x6FfA7c72cCd821A4dB68FD75Ee465dd09AA8C088'), + ('{{pfe_usd}}', 8, '0xe96fFdE2ba50E0e869520475ee1bC73cA2dEE326', '0xe12938e680c7b82361fe7482bD80C23A7dF5cbBe'), + ('{{php_usd}}', 8, '0x1CcaD765D39Aa2060eB4f6dD94e5874db786C16f', '0x3D524E10b4C798b94c0d3353C7235f2bA14A5892'), + ('{{qqq_usd}}', 8, '0x9A41B56b2c24683E2f23BdE15c14BC7c4a58c3c4', '0x70d929aa2975D050abAf125E64cc55e0b0160F8b'), + ('{{rdnt_usd}}', 8, '0x20123C6ebd45c6496102BeEA86e1a6616Ca547c6', '0xe17703A1819d23cF5977814B92021834feBd4eB3'), + ('{{reef_usd}}', 8, '0x46f13472A4d4FeC9E07E8A00eE52f4Fa77810736', '0x066D0CD30f981a96e2fE4F958c5E7F4999BE0AdF'), + ('{{sgd_usd}}', 8, '0x3065b2369820f76C829b9BBCAF4B90F9f47d6314', '0x621319Ec1f6AFcb4a9dd91DAB135a1C7E22F46a5'), + ('{{shib_usd}}', 8, '0xA615Be6cb0f3F36A641858dB6F30B9242d0ABeD8', '0x19Ec74fd763db58B77E6EC6b556B9c594ca67ABB'), + ('{{sol_usd}}', 8, '0x0E8a53DD9c13589df6382F13dA6B3Ec8F919B323', '0x14E9D15c1EcD428606c443Ed715631b5C444a49e'), + ('{{spce_usd}}', 8, '0xC861a351b2b50985b9061a5b68EBF9018e7FfB7b', '0x94ef051e42F4462fB7AE00BbA66E643D1b93dA60'), + ('{{spell_usd}}', 8, '0x47e01580C537Cd47dA339eA3a4aFb5998CCf037C', '0x76c8Ab236643e68539766CE00eac8Fb582199183'), + ('{{spell_usd}}', 8, '0x47e01580C537Cd47dA339eA3a4aFb5998CCf037C', '0xD49253AA71F5d5BEe98B00C15DDfA47850faF5a0'), + ('{{spy_usd}}', 8, '0xb24D1DeE5F9a3f761D286B56d2bC44CE1D02DF7e', '0x39F96B0B24E8b2D859850c9bfA1CF95c0144592E'), + ('{{sushi_usd}}', 8, '0xa679C72a97B654CFfF58aB704de3BA15Cde89B07', '0x761Eff952671395708f22c5a7d5673685277A5c3'), + ('{{sushi_usd}}', 8, '0xa679C72a97B654CFfF58aB704de3BA15Cde89B07', '0x27Dc934B3ca31C570F575eE3165DffE0cF6DaeEf'), + ('{{sxp_usd}}', 8, '0xE188A9875af525d25334d75F3327863B2b8cd0F1', '0x5ba2B3A2a41141Aa55Fc72C40d6643aEE12BD0B6'), + ('{{thb_usd}}', 8, '0x00EdEa5d03E6Cb155662dBF1B00dea5693Be874A', '0x3ED241a1877D213F70d7DDcaeF5c4995b63ED88D'), + ('{{trx_usd}}', 8, '0xF4C5e535756D11994fCBB12Ba8adD0192D9b88be', '0xb7EE93d3E0586571D481F9d967d82383BB460B38'), + ('{{tsla_usd}}', 8, '0xEEA2ae9c074E87596A85ABE698B2Afebc9B57893', '0x2719B94Df5a59267D2165c42c59bCa35bf657351'), + ('{{tsm_usd}}', 8, '0x685fC5acB74CE3d5DF03543c9813C73DFCe50de8', '0x3D74545EF2A93a5C71c9c3CbD4a14dFC2BEfDd6E'), + ('{{tusd_usd}}', 8, '0xa3334A9762090E827413A7495AfeCE76F41dFc06', '0x916aaDaCeb786351c7e810C6a4E8071cf00CEeC8'), + ('{{twt_bnb}}', 18, '0x7E728dFA6bCa9023d9aBeE759fDF56BEAb8aC7aD', '0x8dbb48f934b02E891e19Ec09f76B54f3ED5f01Ee'), + ('{{total_marketcap_usd}}', 8, '0xA7dd120a00aCf4161FdA187b864b73bdc8283D77', '0x1973C429B5f7451d83337061A85ef9cEe2637B24'), + ('{{unh_usd}}', 8, '0xC18c5A32c84CbbAc7D0F06Dd370198DA711c73C9', '0x8d35254334e55248eE4D6D65F9CefB924d8D9f3d'), + ('{{uni_bnb}}', 18, '0x25298F020c3CA1392da76Eb7Ac844813b218ccf7', '0x0Cee6620d87FD023800795D565A71fE214777aeb'), + ('{{uni_usd}}', 8, '0xb57f259E7C24e56a1dA00F66b55A5640d9f9E7e4', '0x52Bd76d61D59a4F4B740FD31B97aFaD6217F960D'), + ('{{usdc_bnb}}', 18, '0x45f86CA2A8BC9EBD757225B19a1A0D7051bE46Db', '0xc98fb42526666963d2b43a1ca5C3dc04fe744cdb'), + ('{{usdc_usd}}', 8, '0x51597f405303C4377E36123cBc172b13269EA163', '0x7008fDEd94a8Ce68D01FEB633C4D81C2be7a1B20'), + ('{{usdd_usd}}', 8, '0x51c78c299C42b058Bf11d47FbB74aC437C6a0c8C', '0xa749834a844f2824e5E703F3243e290a963cE06d'), + ('{{usdt_bnb}}', 18, '0xD5c40f5144848Bd4EF08a9605d860e727b991513', '0xF1703b483822f12Bf0D84296F2266196Ca9C352b'), + ('{{usdt_usd}}', 8, '0xB97Ad0E74fa7d920791E90258A6E2085088b4320', '0x2dc202b56A03667cC240B290c2BE2b8453E89eA1'), + ('{{vai_usd}}', 8, '0x058316f8Bb13aCD442ee7A216C7b60CFB4Ea1B53', '0xC04121E448DAC0BA66c0C76b28b5512Cf08bD41A'), + ('{{vet_usd}}', 8, '0x9f1fD2cEf7b226D555A747DA0411F93c5fe74e13', '0x6297c4cd4002F8c1ECe816dF53D5cdeeead10C25'), + ('{{vt_usd}}', 8, '0xa3D5BB7e8ccc2Dc7492537cc2Ec4e4E7BBA32fa0', '0xA37567606729CB03F16BAF1611335b6635E4FDDE'), + ('{{win_usd}}', 8, '0x9e7377E194E41d63795907c92c3EB351a2eb0233', '0x2BCBF9e068E889A613A8E4366c88412977869C0A'), + ('{{wing_usd}}', 8, '0xf7E7c0ffCB11dAC6eCA1434C67faB9aE000e10a7', '0xf8Aa2505865E12b606438312FF572Bf8119E4A65'), + ('{{woo_usd}}', 8, '0x02Bfe714e78E2Ad1bb1C2beE93eC8dc5423B66d4', '0xFBd2fED777DaaB126041b193006DE529118Eaf95'), + ('{{wti_usd}}', 8, '0xb1BED6C1fC1adE2A975F54F24851c7F410e27718', '0xc9aBbdffaCBdE68192686Db1FAf8ac82c7864741'), + ('{{xag_usd}}', 8, '0x817326922c909b16944817c207562B25C4dF16aD', '0x168f55dFe619E37fe2393c3bA3c831647F8617c0'), + ('{{xau_usd}}', 8, '0x86896fEB19D8A607c3b11f2aF50A0f239Bd71CD0', '0xc54645D805aca807E7f40b9308D159BB62939E3a'), + ('{{xlm_usd}}', 8, '0x27Cc356A5891A3Fe6f84D0457dE4d108C6078888', '0x266C0eefc329bb610B1e79267D836bca88648AaE'), + ('{{xrp_bnb}}', 18, '0x798A65D349B2B5E6645695912880b54dfFd79074', '0x0877689c510f099FB968906223ab0a3F556d4f2B'), + ('{{xrp_usd}}', 8, '0x93A67D414896A280bF8FFB3b389fE3686E014fda', '0x5C0F367A778857B36E88B553df132b232AC34901'), + ('{{xtz_bnb}}', 18, '0x8264d6983B219be65C4D62f1c82B3A2999944cF2', '0x1255E2748A3A26b248d654B5194CdeFc4594b90A'), + ('{{xtz_usd}}', 8, '0x9A18137ADCF7b05f033ad26968Ed5a9cf0Bf8E6b', '0x5CeefEC70Fb4819B9CE2dEaa6355c77E3243e640'), + ('{{xvs_bnb}}', 18, '0xf369A13E7f2449E58DdE8302F008eE9131f8d859', '0xE0A0Bc15e8Cbe87e9b6307693A368085E164878a'), + ('{{xvs_usd}}', 8, '0xBF63F430A79D4036A5900C19818aFf1fa710f206', '0xD051e4050dAd55285EEDbC186095C0Ccb7054944'), + ('{{yfi_bnb}}', 18, '0xF841761481DF19831cCC851A54D8350aE6022583', '0xD2a2976cdf5098971DaA56878212Cdb24Ecb0CbB'), + ('{{yfi_usd}}', 8, '0xD7eAa5Bf3013A96e3d515c055Dbd98DbdC8c620D', '0xd29cFB96e80fCBA432713B7aE5086a6718d4E046'), + ('{{yfii_usd}}', 8, '0xC94580FAaF145B2FD0ab5215031833c98D3B77E4', '0xAB05DFc2e4aF7fb1b512306e3E0a3617992BB6E2'), + ('{{zar_usd}}', 8, '0xDE1952A1bF53f8E558cc761ad2564884E55B2c6F', '0x86EB1bb8c66F365Ea3df12a565a46cEA204f6283'), + ('{{zil_usd}}', 8, '0x3e3aA4FC329529C8Ab921c810850626021dbA7e6', '0x0D14D66DcB20b9EC4e9679AC8E4775a314D2E298') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_reward_daily.sql new file mode 100644 index 00000000..9b02686c --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_reward_daily.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_automation_reward_daily", + ) +}} + + +{{chainlink_automation_rewards_daily ('bsc')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_upkeep_performed_logs.sql new file mode 100644 index 00000000..f390a46f --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_automation_upkeep_performed_logs.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_automation_upkeep_performed_logs" + ) +}} + +{{ chainlink_logs('bsc', ('0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6', '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b'))}} + diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_reward_daily.sql new file mode 100644 index 00000000..e38d8abc --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('bsc')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..435e27c6 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('bsc', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..1d59c80f --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_ccip_send_requested_logs_v1_2", + ) +}} + + +{{ chainlink_logs('bsc', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_direct_rewards_daily.sql new file mode 100644 index 00000000..11cb0a76 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('bsc')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_fm_reward_daily.sql new file mode 100644 index 00000000..5ca63c7a --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('bsc')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_daily.sql new file mode 100644 index 00000000..d1b02ff1 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('bsc') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..c10c0560 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('bsc', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..0befd840 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('bsc') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_rewards_daily.sql new file mode 100644 index 00000000..8dda97a1 --- /dev/null +++ b/models/projects/chainlink/prod_raw/bsc/fact_chainlink_bsc_vrf_rewards_daily.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_bsc_vrf_rewards_daily", + ) +}} +{{ chainlink_vrf_rewards_daily('bsc') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_automation_meta.sql similarity index 100% rename from models/projects/chainlink/prod_raw/dim_chainlink_ethereum_automation_meta.sql rename to models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_automation_meta.sql diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ccip_onramp_meta.sql similarity index 79% rename from models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql rename to models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ccip_onramp_meta.sql index 7fd8327f..41780bed 100644 --- a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_onramp_meta.sql +++ b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ccip_onramp_meta.sql @@ -19,15 +19,15 @@ FROM (VALUES ('optimism', '0xCC19bC4D43d17eB6859F0d22BA300967C97780b0', '3734403246176062136', 'v1.0.0') , ('polygon', '0x0f27c8532457b66D6037141DEB0ed479Dad04B3c', '4051577828743386545', 'v1.0.0') , ('arbitrum', '0x333f976915195ba9044fD0cd603cEcE936f6264e', '4949039107694359620', 'v1.0.0') -, ('avalanche_c', '0xd0B5Fc9790a6085b048b8Aa1ED26ca2b3b282CF2', '6433500567565415381', 'v1.0.0') +, ('avalanche', '0xd0B5Fc9790a6085b048b8Aa1ED26ca2b3b282CF2', '6433500567565415381', 'v1.0.0') , ('base', '0xe2Eb229e88F56691e96bb98256707Bc62160FE73', '15971525489660198786', 'v1.0.0') -, ('bnb', '0xdF1d7FD22aC3aB5171E275796f123224039f3b24', '11344663589394136015', 'v1.0.0') +, ('bsc', '0xdF1d7FD22aC3aB5171E275796f123224039f3b24', '11344663589394136015', 'v1.0.0') , ('optimism', '0x86B47d8411006874eEf8E4584BdFD7be8e5549d1', '3734403246176062136', 'v1.2.0') , ('polygon', '0x35F0ca9Be776E4B38659944c257bDd0ba75F1B8B', '4051577828743386545', 'v1.2.0') , ('arbitrum', '0x925228D7B82d883Dde340A55Fe8e6dA56244A22C', '4949039107694359620', 'v1.2.0') -, ('avalanche_c', '0x3df8dAe2d123081c4D5E946E655F7c109B9Dd630', '6433500567565415381', 'v1.2.0') +, ('avalanche', '0x3df8dAe2d123081c4D5E946E655F7c109B9Dd630', '6433500567565415381', 'v1.2.0') , ('base', '0xe2c2AB221AA0b957805f229d2AA57fBE2f4dADf7', '15971525489660198786', 'v1.2.0') -, ('bnb', '0x91D25A56Db77aD5147437d8B83Eb563D46eBFa69', '11344663589394136015', 'v1.2.0') +, ('bsc', '0x91D25A56Db77aD5147437d8B83Eb563D46eBFa69', '11344663589394136015', 'v1.2.0') , ('wemix', '0xCbE7e5DA76dC99Ac317adF6d99137005FDA4E2C4', '5142893604156789321', 'v1.2.0') ) AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ccip_token_meta.sql similarity index 100% rename from models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ccip_token_meta.sql rename to models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ccip_token_meta.sql diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ocr_operator_admin_meta.sql similarity index 100% rename from models/projects/chainlink/prod_raw/dim_chainlink_ethereum_ocr_operator_admin_meta.sql rename to models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_ocr_operator_admin_meta.sql diff --git a/models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql similarity index 100% rename from models/projects/chainlink/prod_raw/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql rename to models/projects/chainlink/prod_raw/ethereum/dim_chainlink_ethereum_price_feeds_oracle_addresses.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_automation_reward_daily.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_reward_daily.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_automation_reward_daily.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_automation_upkeep_performed_logs.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_reward_daily.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_reward_daily.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_reward_daily.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql similarity index 88% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql index 781fa8d9..23a612d8 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql +++ b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql similarity index 88% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql index 03367383..e728cb07 100644 --- a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql +++ b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ccip_send_requested_logs_v1_2.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", snowflake_warehouse="CHAINLINK", database="chainlink", schema="raw", diff --git a/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_direct_rewards_daily.sql new file mode 100644 index 00000000..521f5477 --- /dev/null +++ b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('ethereum')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_fm_reward_daily.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_fm_reward_daily.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_fm_reward_daily.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ocr_reward_daily.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_daily.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ocr_reward_daily.sql diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_ocr_reward_transmission_logs.sql diff --git a/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..5e7c7b51 --- /dev/null +++ b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_ethereum_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('ethereum') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_rewards_daily.sql similarity index 100% rename from models/projects/chainlink/prod_raw/fact_chainlink_ethereum_vrf_rewards_daily.sql rename to models/projects/chainlink/prod_raw/ethereum/fact_chainlink_ethereum_vrf_rewards_daily.sql diff --git a/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..5ff650cd --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_ocr_operator_admin_meta.sql @@ -0,0 +1,39 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_gnosis_ocr_operator_admin_meta" + ) +}} + +{% set a01node = '01Node' %} +{% set blockdaemon = 'Blockdaemon' %} +{% set chainlayer = 'Chainlayer' %} +{% set dmakers = 'dMakers' %} +{% set dextrac = 'DexTrac' %} +{% set fiews = 'Fiews' %} +{% set inotel = 'Inotel' %} +{% set linkpool = 'LinkPool' %} +{% set piertwo = 'Pier Two' %} +{% set simplyvc = 'Simply VC' %} +{% set snzpool = 'SNZPool' %} +{% set ztake = 'Ztake.org' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0xC143bDC2BDbeCDEF11AA0F5d6389E08f879AeC4F', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0x3615Fa045f00ae0eD60Dc0141911757c2AdC5E03', '{{blockdaemon}}'), + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0xEaF7dC88d11E81Bb60e3bC5272558041227D16FA', '{{dmakers}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x9cCbFD17FA284f36c2ff503546160B256d1CD3D1', '{{snzpool}}'), + ('0x0039F22efB07A647557C7C5d17854CFD6D489eF3', '{{ztake}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..c32fda21 --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/dim_chainlink_gnosis_price_feeds_oracle_addresses.sql @@ -0,0 +1,107 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_gnosis_price_feeds_oracle_addresses", + ) +}} + +{% set _1inch_usd = '1INCH / USD' %} +{% set aave_usd = 'AAVE / USD' %} +{% set alpha_usd = 'ALPHA / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set bal_usd = 'BAL / USD' %} +{% set bnb_usd = 'BNB / USD' %} +{% set btc_usd = 'BTC / USD' %} +{% set chf_usd = 'CHF / USD' %} +{% set comp_usd = 'COMP / USD' %} +{% set cream_usd = 'CREAM / USD' %} +{% set crv_usd = 'CRV / USD' %} +{% set dai_usd = 'DAI / USD' %} +{% set doge_usd = 'DOGE / USD' %} +{% set dot_usd = 'DOT / USD' %} +{% set dpi_usd = 'DPI / USD' %} +{% set eth_usd = 'ETH / USD' %} +{% set eur_usd = 'EUR / USD' %} +{% set fox_usd = 'FOX / USD' %} +{% set ftt_usd = 'FTT / USD' %} +{% set gno_usd = 'GNO / USD' %} +{% set grt_usd = 'GRT / USD' %} +{% set jpy_usd = 'JPY / USD' %} +{% set link_usd = 'LINK / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set mxn_usd = 'MXN / USD' %} +{% set perp_usd = 'PERP / USD' %} +{% set ren_usd = 'REN / USD' %} +{% set snx_usd = 'SNX / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set steth_usd = 'STETH / USD' %} +{% set sushi_usd = 'SUSHI / USD' %} +{% set uma_usd = 'UMA / USD' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdc_usd = 'USDC / USD' %} +{% set usdt_usd = 'USDT / USD' %} +{% set wbtc_usd = 'WBTC / USD' %} +{% set xau_usd = 'XAU / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set zil_usd = 'ZIL / USD' %} +{% set wsteth_eth_exchange_rate = 'wstETH-ETH Exchange Rate' %} + +SELECT + 'gnosis' as blockchain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{_1inch_usd}}', 8, '0xFDF9EB5fafc11Efa65f6FD144898da39a7920Ae8', '0xf50a71387D9D01ED3873E32f1044497327AF1044'), + ('{{aave_usd}}', 8, '0x2b481Dc923Aa050E009113Dca8dcb0daB4B68cDF', '0xD2CCCa5Bb84CB2F6b72B98Ee82c61F67c82DD40B'), + ('{{alpha_usd}}', 8, '0x7969b8018928F3d9faaE9AC71744ed2C1486536F', '0x200F30e782490976EF16D903fc267Af30Eee5182'), + ('{{alpha_usd}}', 8, '0x7969b8018928F3d9faaE9AC71744ed2C1486536F', '0xf5FD312d0435C24f5c9bB8411bFc3D79c23EB0Bd'), + ('{{avax_usd}}', 8, '0x911e08A32A6b7671A80387F93147Ab29063DE9A2', '0xB840C9dBC0964bcD89d6410f34091b2cb6733ADb'), + ('{{bal_usd}}', 8, '0x1b723C855F7D2c2785F99486973271355e782d77', '0x3F2BA1E94112120d11F1a525913134fBE510bF37'), + ('{{bnb_usd}}', 8, '0x6D42cc26756C34F26BEcDD9b30a279cE9Ea8296E', '0x9Af55762115066D3e99AD4d237586344C4ABEAdD'), + ('{{btc_usd}}', 8, '0x6C1d7e76EF7304a40e8456ce883BC56d3dEA3F7d', '0xaD479D707a8f1fAA346Fe1380f76CF993ae54330'), + ('{{chf_usd}}', 8, '0xFb00261Af80ADb1629D3869E377ae1EEC7bE659F', '0x6E2482E011EC31a1960a938791B6B4Ff5BAa3217'), + ('{{chf_usd}}', 8, '0xFb00261Af80ADb1629D3869E377ae1EEC7bE659F', '0xbe18b8F41760878ba6D3b1E9475c4CcAD3D9aA8f'), + ('{{comp_usd}}', 8, '0xBa95Bc8418Ebcdf8a690924E1d4aD5292139F2EA', '0x7cfEA3C34FBEf2e9A53c188a75494aeDC3A743ff'), + ('{{cream_usd}}', 8, '0x3b681e9BF56eFe4b2a14196826230A5843fFF758', '0x9a8cdEA210623550befE64fAf2c8cE6f35bF9d82'), + ('{{cream_usd}}', 8, '0x3b681e9BF56eFe4b2a14196826230A5843fFF758', '0x991bc14CF115d9b6eA518C412c9f4eA234d70C0a'), + ('{{crv_usd}}', 8, '0xC77B83ac3Dd2a761073bD0f281f7b880B2DDDe18', '0x88C76CccaA469614EAad7CED362050062DC2CCeB'), + ('{{dai_usd}}', 8, '0x678df3415fc31947dA4324eC63212874be5a82f8', '0xb65566283CAcE6b281308308da0f0783a613c416'), + ('{{doge_usd}}', 8, '0x824b4A1A0443609A2ADd94a700b770FA5bE31287', '0x817A6F75fA1840847382ab23203EA38eDB7158f6'), + ('{{dot_usd}}', 8, '0x3c30c5c415B2410326297F0f65f5Cbb32f3aefCc', '0x5128beD0c719537b179aF0aF01386caf9B22Baf1'), + ('{{dpi_usd}}', 8, '0x53B1b13E7a5C0DE9A2BeFa1085Ec364BB27e439f', '0x57E62eB3E84a2D12Cc40ACBa84D10b79dA9E7c2E'), + ('{{eth_usd}}', 8, '0xa767f745331D267c7751297D982b050c93985627', '0x059e7Bd8157e0d302dF3626E162B6C835340b311'), + ('{{eur_usd}}', 8, '0xab70BCB260073d036d1660201e9d5405F5829b7a', '0x759be90a34E426042ed7d17916B78a5cD2567dd1'), + ('{{fox_usd}}', 8, '0x3190f6D277Fea03A082Eba20B136f95f0DCCb3dD', '0x1AF770B72Da45e4278cA190370902aDea889EbA3'), + ('{{ftt_usd}}', 8, '0x0CaE8f5c10931f0Ce87Ed9BbB71391C6E93C2C26', '0x7FeD35C1e4C303F272E4fcdF19865E85DfA44f72'), + ('{{ftt_usd}}', 8, '0x0CaE8f5c10931f0Ce87Ed9BbB71391C6E93C2C26', '0x932ab70A49F0C678c9368040068E98f1a5a6A27a'), + ('{{gno_usd}}', 8, '0x22441d81416430A54336aB28765abd31a792Ad37', '0xcA16Ed36A7d1Ae2DC68873D62bce4f9BdCc2d378'), + ('{{gno_usd}}', 8, '0x22441d81416430A54336aB28765abd31a792Ad37', '0x016a45F646bbd35B61fE7A496a75D9Ea69bD243E'), + ('{{grt_usd}}', 8, '0xeBbd67a84e33791F1bcFde74CDc22a71e332e2F1', '0x18064eA9430Dd74E854162Aff10E34aC6Df3838B'), + ('{{grt_usd}}', 8, '0xeBbd67a84e33791F1bcFde74CDc22a71e332e2F1', '0xCff7b6aaF94513566A5821fF77bcC075F5d2273D'), + ('{{jpy_usd}}', 8, '0x2AfB993C670C01e9dA1550c58e8039C1D8b8A317', '0xa5f05b6C586f21b7E6200b6A6a4ADE55eCAB0103'), + ('{{link_usd}}', 8, '0xed322A5ac55BAE091190dFf9066760b86751947B', '0x813a79EfDfd6a4352b7C583d8d38B2B5d1151d7E'), + ('{{mkr_usd}}', 8, '0x51e4024255d0cBd1F4C79AEe6BDB6565Df2C5d1b', '0x88403402B966Dee25724d24Adf56d398D1d7334e'), + ('{{mxn_usd}}', 8, '0xe9cea51a7b1b9B32E057ff62762a2066dA933cD2', '0xD8aE5c2AEec843531Df1e523D775d870f877103C'), + ('{{perp_usd}}', 8, '0x76e76F7E73F3BD42E3c2b4282B50b36E78130B4A', '0xafb768EF3aa6a5756f9F2d11CBE04C4EF90949bf'), + ('{{ren_usd}}', 8, '0x27d4D36968a2BD1Cc3406D99cB1DF50561dBf2a4', '0x9C1Dc429a8d8F10C8ebA522b608bC27F58d6ABE2'), + ('{{ren_usd}}', 8, '0x27d4D36968a2BD1Cc3406D99cB1DF50561dBf2a4', '0xEF2cD9d9B9e5D8101e36DfF9D602D96e819a2eE8'), + ('{{snx_usd}}', 8, '0x3b84d6e6976D5826500572600eB44f9f1753827b', '0x19e5234E9Aad5fb08f58c3569E8d0858664F0cF3'), + ('{{sol_usd}}', 8, '0xB7B7d008c49295A0FF6Eed6dF4Ad3052Fd39d5e6', '0x295442CF6Ba90E91b8a01A7C2dE9d7DB987439C8'), + ('{{steth_usd}}', 8, '0x229e486Ee0D35b7A9f668d10a1e6029eEE6B77E0', '0xcC5a624A98600564992753DafF5Cdfe7a2e58f67'), + ('{{sushi_usd}}', 8, '0xC0a6Bf8d5D408B091D022C3C0653d4056D4B9c01', '0x337D84cE7Cc5e4Da39dDc0e76698e79Ff3b40217'), + ('{{sushi_usd}}', 8, '0xC0a6Bf8d5D408B091D022C3C0653d4056D4B9c01', '0xd73dCdf9795f04bB91Cfc86D86DB5286B2606A26'), + ('{{uma_usd}}', 8, '0xF826E3ff8c0481D2e58DB9d301936F94Cd4fa916', '0x3448BEB14411C2EcF5e86632dC9ad65849ae2a2E'), + ('{{uni_usd}}', 8, '0xd98735d78266c62277Bb4dBf3e3bCdd3694782F4', '0x29b914B44169B04262Ae11173149d7F1131791bC'), + ('{{usdc_usd}}', 8, '0x26C31ac71010aF62E6B486D1132E266D6298857D', '0x30bA871Ee7a08dBd255CdD8e7e035DAd72014E27'), + ('{{usdt_usd}}', 8, '0x68811D7DF835B1c33e6EEae8E7C141eF48d48cc7', '0xc4D924b6baB6FEc909E482b93847D997463f0c79'), + ('{{wbtc_usd}}', 8, '0x00288135bE38B83249F380e9b6b9a04c90EC39eE', '0x5ED6A59735297Bc5D6CB4942913Ae7098E0cD703'), + ('{{xau_usd}}', 8, '0x4a5AB0F60d12a4420d36D3eD9A1F77d8c47EB94c', '0x53BA6D580a9EAB65899Bbc1157c2062a83fa8D9E'), + ('{{yfi_usd}}', 8, '0x14030d5a0C9e63D9606C6f2c8771Fc95b34b07e0', '0x642736Bb512ac22D37171bf57eda17E48E977be8'), + ('{{zil_usd}}', 8, '0x2997eBa3d9c2447c36107bB0F082b8c33566b49c', '0x736C15dB4e4f694c7c899AC91C05Bd5A795CfDD0'), + ('{{wsteth_eth_exchange_rate}}', 18, '0x0064AC007fF665CF8D0D3Af5E0AD1c26a3f853eA', '0x6dcF8CE1982Fc71E7128407c7c6Ce4B0C1722F55') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_direct_rewards_daily.sql new file mode 100644 index 00000000..50c9607a --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_gnosis_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('gnosis')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_fm_reward_daily.sql new file mode 100644 index 00000000..b0525ac4 --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_gnosis_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('gnosis')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_daily.sql new file mode 100644 index 00000000..52f84a1e --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_gnosis_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('gnosis') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..36f1f229 --- /dev/null +++ b/models/projects/chainlink/prod_raw/gnosis/fact_chainlink_gnosis_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_gnosis_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('gnosis', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_onramp_meta.sql new file mode 100644 index 00000000..c86119e8 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_onramp_meta.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_optimism_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES +('ethereum', '0xad1b1F2A6DD55627e3893B771A00Cd43F69DcE35', '5009297550715157269', 'v1.0.0') +, ('polygon', '0xB188Bd6CC347299EEBb3aE93F57d90F580536B3A', '4051577828743386545', 'v1.0.0') +, ('arbitrum', '0x0000000000000000000000000000000000000000', '4949039107694359620', 'v1.0.0') +, ('avalanche', '0x0000000000000000000000000000000000000000', '6433500567565415381', 'v1.0.0') +, ('base', '0xC40f7C8763e35fb64ab968Dc812C2d24c6f8404c', '15971525489660198786', 'v1.0.0') +, ('bsc', '0x0000000000000000000000000000000000000000', '11344663589394136015', 'v1.0.0') +, ('ethereum', '0x55183Db1d2aE0b63e4c92A64bEF2CBfc2032B127', '5009297550715157269', 'v1.2.0') +, ('polygon', '0x6B57145e322c877E7D91Ed8E31266eB5c02F7EfC', '4051577828743386545', 'v1.2.0') +, ('arbitrum', '0x0C9BE7Cfd12c735E5aaE047C1dCB845d54E518C3', '4949039107694359620', 'v1.2.0') +, ('avalanche', '0xD0D3E757bFBce7ae1881DDD7F6d798DDcE588445', '6433500567565415381', 'v1.2.0') +, ('base', '0x0b1760A8112183303c5526C6b24569fd3A274f3B', '15971525489660198786', 'v1.2.0') +, ('bsc', '0xa3c9544B82846C45BE37593d5d9ACffbE61BF3A6', '11344663589394136015', 'v1.2.0') +, ('wemix', '0x82e9f4C5ec4a84E310d60D462a12042E5cbA0954', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_token_meta.sql new file mode 100644 index 00000000..633e67fd --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ccip_token_meta.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_optimism_ccip_token_meta", + ) +}} + + +SELECT + 'optimism' AS chain, + token_contract, + token_symbol +FROM (VALUES + ('0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6', 'LINK'), + ('0x4200000000000000000000000000000000000006', 'WETH') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..d0a81584 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_ocr_operator_admin_meta.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_optimism_ocr_operator_admin_meta" + ) +}} + +{% set a01node = '01Node' %} +{% set blockdaemon = 'Blockdaemon' %} +{% set chainlayer = 'Chainlayer' %} +{% set cryptomanufaktur = 'CryptoManufaktur' %} +{% set dextrac = 'DexTrac' %} +{% set fiews = 'Fiews' %} +{% set inotel = 'Inotel' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set piertwo = 'Pier Two' %} +{% set simplyvc = 'Simply VC' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0xC9110BebfC02fCa90a1cc3417F8869784f63B94B', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0x3615Fa045f00ae0eD60Dc0141911757c2AdC5E03', '{{blockdaemon}}'), + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0x59eCf48345A221E0731E785ED79eD40d0A94E2A5', '{{cryptomanufaktur}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x69F89eFbB5e5519EAf93a0Af3dbA3f3101350b0d', '{{linkriver}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..c92c1305 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/dim_chainlink_optimism_price_feeds_oracle_addresses.sql @@ -0,0 +1,193 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_optimism_price_feeds_oracle_addresses", + ) +}} + +{% set aave_usd = 'AAVE / USD' %} +{% set ada_usd = 'ADA / USD' %} +{% set ape_usd = 'APE / USD' %} +{% set apt_usd = 'APT / USD' %} +{% set arb_usd = 'ARB / USD' %} +{% set atom_usd = 'ATOM / USD' %} +{% set aud_usd = 'AUD / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set axs_usd = 'AXS / USD' %} +{% set bal_usd = 'BAL / USD' %} +{% set bch_usd = 'BCH / USD' %} +{% set blur_usd = 'BLUR / USD' %} +{% set bnb_usd = 'BNB / USD' %} +{% set bond_usd = 'BOND / USD' %} +{% set brl_usd = 'BRL / USD' %} +{% set btc_usd = 'BTC / USD' %} +{% set busd_usd = 'BUSD / USD' %} +{% set cad_usd = 'CAD / USD' %} +{% set cbeth_eth = 'CBETH / ETH' %} +{% set comp_usd = 'COMP / USD' %} +{% set crv_usd = 'CRV / USD' %} +{% set dai_usd = 'DAI / USD' %} +{% set doge_usd = 'DOGE / USD' %} +{% set dot_usd = 'DOT / USD' %} +{% set dydx_usd = 'DYDX / USD' %} +{% set etc_usd = 'ETC / USD' %} +{% set eth_btc = 'ETH / BTC' %} +{% set eth_usd = 'ETH / USD' %} +{% set eur_usd = 'EUR / USD' %} +{% set fil_usd = 'FIL / USD' %} +{% set floki_usd = 'FLOKI / USD' %} +{% set flow_usd = 'FLOW / USD' %} +{% set frax_usd = 'FRAX / USD' %} +{% set ftm_usd = 'FTM / USD' %} +{% set fxs_usd = 'FXS / USD' %} +{% set gbp_usd = 'GBP / USD' %} +{% set gmx_usd = 'GMX / USD' %} +{% set imx_usd = 'IMX / USD' %} +{% set inj_usd = 'INJ / USD' %} +{% set inr_usd = 'INR / USD' %} +{% set jpy_usd = 'JPY / USD' %} +{% set knc_usd = 'KNC / USD' %} +{% set l2_sequencer_uptime_status_feed = 'L2 Sequencer Uptime Status Feed' %} +{% set ldo_usd = 'LDO / USD' %} +{% set link_eth = 'LINK / ETH' %} +{% set link_usd = 'LINK / USD' %} +{% set ltc_usd = 'LTC / USD' %} +{% set lusd_usd = 'LUSD / USD' %} +{% set matic_usd = 'MATIC / USD' %} +{% set mav_usd = 'MAV / USD' %} +{% set mimatic_usd = 'MIMATIC / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set near_usd = 'NEAR / USD' %} +{% set one_usd = 'ONE / USD' %} +{% set op_usd = 'OP / USD' %} +{% set pepe_usd = 'PEPE / USD' %} +{% set perp_usd = 'PERP / USD' %} +{% set rndr_usd = 'RNDR / USD' %} +{% set rpl_usd = 'RPL / USD' %} +{% set rune_usd = 'RUNE / USD' %} +{% set sand_usd = 'SAND / USD' %} +{% set shib_usd = 'SHIB / USD' %} +{% set snx_usd = 'SNX / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set steth_usd = 'STETH / USD' %} +{% set sui_usd = 'SUI / USD' %} +{% set susd_usd = 'SUSD / USD' %} +{% set synthetix_aggregator_debt_ratio = 'Synthetix Aggregator Debt Ratio' %} +{% set synthetix_aggregator_issued_synths = 'Synthetix Aggregator Issued Synths' %} +{% set trx_usd = 'TRX / USD' %} +{% set total_marketcap_usd = 'Total Marketcap USD' %} +{% set uni_usd = 'UNI / USD' %} +{% set usdc_usd = 'USDC / USD' %} +{% set usdt_usd = 'USDT / USD' %} +{% set waves_usd = 'WAVES / USD' %} +{% set wbtc_usd = 'WBTC / USD' %} +{% set wld_usd = 'WLD / USD' %} +{% set wsteth_eth = 'WSTETH / ETH' %} +{% set wsteth_usd = 'WSTETH / USD' %} +{% set xag_usd = 'XAG / USD' %} +{% set xau_usd = 'XAU / USD' %} +{% set xmr_usd = 'XMR / USD' %} +{% set xrp_usd = 'XRP / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set zil_usd = 'ZIL / USD' %} +{% set reth_eth_exchange_rate = 'rETH-ETH Exchange Rate' %} +{% set wsteth_steth_exchange_rate = 'wstETH-stETH Exchange Rate' %} + +SELECT + 'optimism' as blockchain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{aave_usd}}', 8, '0x338ed6787f463394D24813b297401B9F05a8C9d1', '0x81cC0c227BF9bFB8088b14755DfcA65f7892203b'), + ('{{ada_usd}}', 8, '0x43dEa17DeE1ca50c6266acb59b32659E44D3ee5D', '0xC2262cA31b16AE1Cfe6F7612f49E79B821e31162'), + ('{{ape_usd}}', 8, '0x89178957E9bD07934d7792fFc0CF39f11c8C2B1F', '0x2Dd486F1FA76Fd1228a9c818C552c6A92F138453'), + ('{{apt_usd}}', 8, '0x48f2EcF0Bd180239AEF474a9da945F2e2d41daA3', '0x3442bB3aD11957449D9Af5aCE9d17709240dcCe7'), + ('{{arb_usd}}', 8, '0x8f14546d0B960793180ee355B73fA55041a4a356', '0x7E36B8C677D84556B4742F9d7791019bC7d408Db'), + ('{{atom_usd}}', 8, '0xEF89db2eA46B4aD4E333466B6A486b809e613F39', '0x81d9a9056e9Af6585010B784Df5853a0fDEf8b11'), + ('{{aud_usd}}', 8, '0x39be70E93D2D285C9E71be7f70FC5a45A7777B14', '0x6AA7cC6feA036Bd57f36E2b82878c15012c48771'), + ('{{avax_usd}}', 8, '0x5087Dc69Fd3907a016BD42B38022F7f024140727', '0xa6d25eEBae9c841C44AD01c9176556a4c2189961'), + ('{{axs_usd}}', 8, '0x805a61D54bb686e57F02D1EC96A1491C7aF40893', '0x7A18889f137B593f4E03C0A698A4360f43d1731c'), + ('{{bal_usd}}', 8, '0x30D9d31C1ac29Bc2c2c312c1bCa9F8b3D60e2376', '0x44f690526B76D91072fb0427B0A24b882E612455'), + ('{{bch_usd}}', 8, '0x33E047119359161288bcB143e0C15467C7151d4c', '0x9c41500de0162Cc0bC4798982C867860C1601a60'), + ('{{blur_usd}}', 8, '0x517C2557c29F7c53Aa5F97a1DAE465E0d5C174AA', '0xb785e9aa87cDB29cC11a3f2b8bd17E6279275A35'), + ('{{bnb_usd}}', 8, '0xD38579f7cBD14c22cF1997575eA8eF7bfe62ca2c', '0x25dD1949cDb81f5fc38841a8abF342c4EF48dbfd'), + ('{{bond_usd}}', 8, '0x8fCfb87fc17CfD5775d234AcFd1753764899Bf20', '0x3b06B9b3ead7Ec34AE67E2D7f73B128dA09C583a'), + ('{{brl_usd}}', 8, '0xB22900D4D0CEa5DB0B3bb08565a9f0f4a831D32C', '0xCa80A73840718826a7A8b6b7216Bd5fDa12c121A'), + ('{{btc_usd}}', 8, '0xD702DD976Fb76Fffc2D3963D037dfDae5b04E593', '0x0C1272d2aC652D10d03bb4dEB0D31F15ea3EAb2b'), + ('{{busd_usd}}', 8, '0xC1cB3b7cbB3e786aB85ea28489f332f4FAEd5Bc4', '0xD24E1CdD2F9c0A070F73081B5f79BdD0d42EFA2f'), + ('{{cad_usd}}', 8, '0x6fD5e4a193459FC7DFCFc674357a123F655f6EF8', '0x615209a932768861908161cCCEfcCac9b582ACe8'), + ('{{cbeth_eth}}', 18, '0x138b809B8472fF09Cd3E075E6EcbB2e42D41d870', '0x647dA0ebfD5314aF3Bd53eA40541c6B67169e6D0'), + ('{{comp_usd}}', 8, '0xe1011160d78a80E2eEBD60C228EEf7af4Dfcd4d7', '0xa7F0FF864196729787Cce72f78D769ecA926bA1D'), + ('{{crv_usd}}', 8, '0xbD92C6c284271c227a1e0bF1786F468b539f51D9', '0x7c56d3650f9aCD992b3Aa635C04A311c54Ad264c'), + ('{{dai_usd}}', 8, '0x8dBa75e83DA73cc766A7e5a0ee71F656BAb470d6', '0xbCe7579e241e5d676c2371Dc21891489dAcDA250'), + ('{{doge_usd}}', 8, '0xC6066533917f034Cf610c08e1fe5e9c7eADe0f54', '0x8AfC1cC622Be1Cd1644579c9c7eC3fbbA6bD02d2'), + ('{{dot_usd}}', 8, '0x28e67BAeEB5dE7A788f3Dde6CF6ee491369Bb3Fa', '0xF030366b47eB1a9b14AD570381d29647E40955Af'), + ('{{dydx_usd}}', 8, '0xee35A95c9a064491531493D8b380bC40A4CCd0Da', '0x19BcA7C81f3ed561a49326b78468EaC64D0E8F2a'), + ('{{etc_usd}}', 8, '0xb7B9A39CC63f856b90B364911CC324dC46aC1770', '0x544A5aBfD49782b68d58E69Bc52204b692A86d9E'), + ('{{eth_btc}}', 8, '0xe4b9bcD7d0AA917f19019165EB89BdbbF36d2cBe', '0x90AC3f96131699b7920004a58717C5Eac8E5c9Cc'), + ('{{eth_usd}}', 8, '0x13e3Ee699D1909E989722E753853AE30b17e08c5', '0x02f5E9e9dcc66ba6392f6904D5Fcf8625d9B19C9'), + ('{{eur_usd}}', 8, '0x3626369857A10CcC6cc3A6e4f5C2f5984a519F20', '0xAA75acE4575AbBE1D237D991a7461f497a56a8F0'), + ('{{fil_usd}}', 8, '0x66F61FEe824c1dF059BccCC5F21ca39e083EefDf', '0xB42F9F7c0F9997f62AE521CEF14B20a58bd9E088'), + ('{{floki_usd}}', 8, '0x34E0E85CeEc6be6146c4f0115769a29a9539222e', '0x3E313e778dA811F79A66570b8703c66204112Dfd'), + ('{{flow_usd}}', 8, '0x2fF1EB7D0ceC35959F0248E9354c3248c6683D9b', '0x0542BbBfbc26A86EA92d2b7f6Da07DAf0CA091eD'), + ('{{frax_usd}}', 8, '0xc7D132BeCAbE7Dcc4204841F33bae45841e41D9C', '0xaB544FDAD5F68f0F8e53284f942D76177635A3D6'), + ('{{ftm_usd}}', 8, '0xc19d58652d6BfC6Db6FB3691eDA6Aa7f3379E4E9', '0x13f11f2139C10A48eCD7A6A14d804f90b2cFC89A'), + ('{{fxs_usd}}', 8, '0xB9B16330671067B1b062B9aC2eFd2dB75F03436E', '0xc2212835DE6cb9Ef5e26b04E64f7798472Ff2812'), + ('{{gbp_usd}}', 8, '0x540D48C01F946e729174517E013Ad0bdaE5F08C0', '0x7FeD35C1e4C303F272E4fcdF19865E85DfA44f72'), + ('{{gmx_usd}}', 8, '0x62f42f70ba85De1086476bB6BADE926d0E0b8a4C', '0x0eDD9aC354033Ef766eCD45cb235d81139Df3d90'), + ('{{imx_usd}}', 8, '0x26Fce884555FAe5F0E4701cc976FE8D8bB111A38', '0x5D860ee3A9F47dfd86d40aec1EF7DDD876356F71'), + ('{{inj_usd}}', 8, '0x90CC16F5493894eff84a5Fedd1dcE297d174fEEf', '0x73316EF731f3C7219482716682C063dBbd1602F2'), + ('{{inr_usd}}', 8, '0x5535e67d8f99c8ebe961E1Fc1F6DDAE96FEC82C9', '0x28a6B219403c1Dac04172cBb8cC1aB8bF5925830'), + ('{{jpy_usd}}', 8, '0x536944c3A71FEb7c1E5C66Ee37d1a148d8D8f619', '0xaE4c8567C942B974Af4A860380c99A8D03C6148E'), + ('{{knc_usd}}', 8, '0xCB24d22aF35986aC1feb8874AdBbDF68f6dC2e96', '0xe4391393205B6265585250E7A026103a0D1E168d'), + ('{{l2_sequencer_uptime_status_feed}}', 0, '0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389', '0x58218ea7422255EBE94e56b504035a784b7AA204'), + ('{{ldo_usd}}', 8, '0x221618871470f78D8a3391d35B77dFb3C0fbc383', '0xB6b7B9b2362F87F204f1CCadDD8832D3a0557dce'), + ('{{link_eth}}', 18, '0x464A1515ADc20de946f8d0DEB99cead8CEAE310d', '0xE67a10DA53Fcd59fae7e47F155c290cb5Defb4B0'), + ('{{link_usd}}', 8, '0xCc232dcFAAE6354cE191Bd574108c1aD03f86450', '0x5d101824C693C70a68FFc3CDb0Cc394F3a4fb9Ec'), + ('{{ltc_usd}}', 8, '0x45954efBD01f5A12428A09E4C38b8434C3dD4Ac3', '0xfC7608cf76F489191Cb319DD6167aEEE387Bb251'), + ('{{lusd_usd}}', 8, '0x9dfc79Aaeb5bb0f96C6e9402671981CdFc424052', '0x19dC743a5E9a73eefAbA7047C7CEeBc650F37336'), + ('{{matic_usd}}', 8, '0x0ded608AFc23724f614B76955bbd9dFe7dDdc828', '0x1C1df24f0d06415fc3F58b1c1fDadd5fC85d2950'), + ('{{mav_usd}}', 8, '0x51E06250C8E46c8E5DE41ac8B917a47D706128C2', '0xE5D13134e228d74eF8b3881618e04221D50543bA'), + ('{{mimatic_usd}}', 8, '0x73A3919a69eFCd5b19df8348c6740bB1446F5ed0', '0x1C1245eEfB57d50F90EFc4070b508f4f24c3aB7A'), + ('{{mkr_usd}}', 8, '0x607b417DF51e0E1ed3A12fDb7FC0e8307ED250F3', '0x46D677b285728Bb641FDa3470873637372a587fd'), + ('{{near_usd}}', 8, '0xca6fa4b8CB365C02cd3Ba70544EFffe78f63ac82', '0xf9eCc598293bd5Fb4F700AEB5C4Fb63B23CFE8Aa'), + ('{{one_usd}}', 8, '0x7CFB4fac1a2FDB1267F8bc17FADc12804AC13CFE', '0x663ed3D2aB9F8d5282a94BA4636E346e59bDdEB9'), + ('{{op_usd}}', 8, '0x0D276FC14719f9292D5C1eA2198673d1f4269246', '0x4F6dFDFd4d68F68b2692E79f9e94796fC8015770'), + ('{{pepe_usd}}', 18, '0x64Ecf089a6594Be781908D5a26FC8fA6CB08A2C7', '0x903F58eE6d6c3c2Ca26427c8F917F6aE515827B1'), + ('{{perp_usd}}', 8, '0xA12CDDd8e986AF9288ab31E58C60e65F2987fB13', '0xE18a4E99F019F92CD72E0C7C05599d76a89296Cd'), + ('{{rndr_usd}}', 8, '0x53623FD50C5Fd8788746af00F088FD7f06fD4116', '0x663D15E1E80E227a146Aa616996A6b8A95bb6822'), + ('{{rpl_usd}}', 8, '0xADE082c91A6AeCC86fC11704a830e933e1b382eA', '0xAd1e27Afb932d835ff9829bD16534E5E2c4A6fEd'), + ('{{rune_usd}}', 8, '0x372cc5e685115A56F14fa7e4716F1294e04c278A', '0x1aafcf49E103a71b31506Cb05FB072ED1B5b0414'), + ('{{sand_usd}}', 8, '0xAE33e077a02071E62d342E449Afd9895b016d541', '0x5d1345669278128B77AF9662C5D6B5e0b2FFD54A'), + ('{{shib_usd}}', 8, '0xd1e56e7657C0E0d20c0e11C2B6ae0D90932d5665', '0xB6B77f1696bc4F95860228286d27f7f4df5D26e4'), + ('{{snx_usd}}', 8, '0x2FCF37343e916eAEd1f1DdaaF84458a359b53877', '0x584F57911b6EEDab5503E202f8e193663c9bd3DB'), + ('{{sol_usd}}', 8, '0xC663315f7aF904fbbB0F785c32046dFA03e85270', '0x92C9B9C512759f5D04563eFa3698FC4fbF735d59'), + ('{{steth_usd}}', 8, '0x41878779a388585509657CE5Fb95a80050502186', '0x12922291D1FcD0d121B5C88f061047fE18732743'), + ('{{sui_usd}}', 8, '0xEaf1a9fe242aa9928faedc6CE7e09aD4875f7133', '0xe05a8c52B2e813c9605CFB8F073178ebe5A74705'), + ('{{susd_usd}}', 8, '0x7f99817d87baD03ea21E05112Ca799d715730efe', '0x17D582034c038BaEb17A9E2A969d06f550d3586b'), + ('{{synthetix_aggregator_debt_ratio}}', 27, '0x94A178f2c480D14F8CdDa908D173d7a73F779cb7', '0x0D5642c6329adB3246c13D78B429a9FB1965a0d8'), + ('{{synthetix_aggregator_issued_synths}}', 18, '0x37AAFb2EE35F1250A001202C660B13c301D2130b', '0x22f04BC4162D63730dCde051FDFD97B4f55fF63B'), + ('{{trx_usd}}', 8, '0x0E09921cf7801A5aD47B892C8727593275625a9f', '0x206A01D5b59B7D7315B6bC7B5866f62A6fdFF7bA'), + ('{{total_marketcap_usd}}', 8, '0x15772F61e4cDC81c7C1c6c454724CE9c7065A6fF', '0x530Ab34385CA1d134fFd33D267f5A2788d645039'), + ('{{uni_usd}}', 8, '0x11429eE838cC01071402f21C219870cbAc0a59A0', '0x85A48ded8c35d82f8f29844e25dD51a70a23c93d'), + ('{{usdc_usd}}', 8, '0x16a9FA2FDa030272Ce99B29CF780dFA30361E0f3', '0xd1Cb03cc31caa72D34dba7eBE21897D9580c4AF0'), + ('{{usdt_usd}}', 8, '0xECef79E109e997bCA29c1c0897ec9d7b03647F5E', '0xAc37790fF4aBf9483fAe2D1f62fC61fE6b8E4789'), + ('{{waves_usd}}', 8, '0x776003ECdF644F87a95B05da549b5e646d5F2Ae4', '0x503465204d3e093146B1E8762e2b221240E0eDA7'), + ('{{wbtc_usd}}', 8, '0x718A5788b89454aAE3A028AE9c111A29Be6c2a6F', '0x65F2c716937FB44b2C28417A7AfC2DACcF1C2D61'), + ('{{wld_usd}}', 8, '0x4e1C6B168DCFD7758bC2Ab9d2865f1895813D236', '0xB001D353633cd96B68000aa915C8A8A136d90A98'), + ('{{wsteth_eth}}', 18, '0x524299Ab0987a7c4B3c8022a35669DdcdC715a10', '0x034f1d70092e81b7738459f02F409a5c5c4b8189'), + ('{{wsteth_usd}}', 8, '0x698B585CbC4407e2D54aa898B2600B53C68958f7', '0x0d110cC7876d73c3C4190324bCF4C59416bBD259'), + ('{{xag_usd}}', 8, '0x290dd71254874f0d4356443607cb8234958DEe49', '0xcC341634464b6FD1221e4d517cD7801155ABaC55'), + ('{{xau_usd}}', 8, '0x8F7bFb42Bf7421c2b34AAD619be4654bFa7B3B8B', '0x78F049f6da1aC1dcA50D6D8f184Acf47eB269852'), + ('{{xmr_usd}}', 8, '0x2a8D91686A048E98e6CCF1A89E82f40D14312672', '0xDa6fCf88c718eCEB18c2c08A543562b1146F4996'), + ('{{xrp_usd}}', 8, '0x8788F0DBDa7678244Ac7FF09d963d7696D56A8a0', '0xb14cbe04a49bF352B939576f9f9665E1D8DC02d2'), + ('{{yfi_usd}}', 8, '0x5cdC797acCBf57EE2363Fed9701262Abc87a232e', '0x6D95344ba8d22a7d1C5BF1822ed80A70f411740a'), + ('{{zil_usd}}', 8, '0x1520874FC216f5F07E03607303Df2Fda6C3Fc203', '0x397c2082dA7A0962A4FBF14e62E72dbCefB7a7Dc'), + ('{{reth_eth_exchange_rate}}', 18, '0x22F3727be377781d1579B7C9222382b21c9d1a8f', '0xA57074acA7FCa1A3Ce8e79ECFE31c2C11bE80982'), + ('{{wsteth_steth_exchange_rate}}', 18, '0xe59EBa0D492cA53C6f46015EEa00517F2707dc77', '0x6E7A3ceB4797D0Fd7b9854B251929ad68849951a') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_reward_daily.sql new file mode 100644 index 00000000..4ee74318 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('optimism')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..1e72c051 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('optimism', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..6f92dde2 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_ccip_send_requested_logs_v1_2", + ) +}} + + +{{ chainlink_logs('optimism', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_direct_rewards_daily.sql new file mode 100644 index 00000000..998deefd --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('optimism')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_fm_reward_daily.sql new file mode 100644 index 00000000..7cc3e8b2 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('optimism')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_daily.sql new file mode 100644 index 00000000..c8262563 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('optimism') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..b189500c --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('optimism', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..f24fc2fd --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('optimism') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_rewards_daily.sql new file mode 100644 index 00000000..ffdd5067 --- /dev/null +++ b/models/projects/chainlink/prod_raw/optimism/fact_chainlink_optimism_vrf_rewards_daily.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_optimism_vrf_rewards_daily", + ) +}} +{{ chainlink_vrf_rewards_daily('optimism') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_automation_meta.sql b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_automation_meta.sql new file mode 100644 index 00000000..61f02b20 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_automation_meta.sql @@ -0,0 +1,56 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_polygon_automation_meta" + ) +}} + +{% set _01node = '01node' %} +{% set chainlayer = 'chainlayer' %} +{% set cryptomanufaktur = 'cryptomanufaktur' %} +{% set dextrac = 'dextrac' %} +{% set fiews = 'fiews' %} +{% set inotel = 'inotel' %} +{% set linkforest = 'linkforest' %} +{% set linkpool = 'linkpool' %} +{% set linkriver = 'linkriver' %} +{% set piertwo = 'piertwo' %} +{% set simplyvc = 'simplyvc' %} +{% set stakingfacilities = 'stakingfacilities' %} + +SELECT + 'polygon' AS chain, + operator_name, + keeper_address +FROM (VALUES + ('{{_01node}}', '0xA7d87D93Fc879c5ec959EbdC4a058bC906be42EC'), + ('{{_01node}}', '0x8B544FcE2177A84FFDb42800e947747A6277f5Ab'), + ('{{chainlayer}}', '0xD2cEBc57ADc65d03Af829ccB53517a9b90e3219C'), + ('{{cryptomanufaktur}}', '0xd9a31dc8347284a6BEa9598d49d8DAcbFD5774F1'), + ('{{cryptomanufaktur}}', '0x27c143A6B7CfADB4686c1d06e45EaB79B53f82B6'), + ('{{dextrac}}', '0x9cB11Bb6568082502e46A43cE4fC48d6e07c567A'), + ('{{fiews}}', '0x4ED89b6E3eBE0FB4a97cb9Fa5C4FAB64b1045B39'), + ('{{fiews}}', '0x0c904E705943c4C1D8e56ba5062Fa005343F4bfd'), + ('{{fiews}}', '0xdDb52466E31F80E3269885BD161C08087b54B287'), + ('{{inotel}}', '0x71DD101432FD1041DfD7b718b1c0adeb1cE13d60'), + ('{{inotel}}', '0x858A480e5b92A8d9D8864785cbF11B4C5dD56Dfe'), + ('{{inotel}}', '0x99Fd8F54f0FD6AE073De12Ae7efe554B9A8b76C0'), + ('{{linkforest}}', '0x18542E08F4267C8ddCFEF6E6E692CeF8eF3A8365'), + ('{{linkforest}}', '0x5175d113eaC843Da5bff4a577C64789328AEbb4f'), + ('{{linkforest}}', '0x80aC52aC017f8cEbE579F40f2fFC5C3A7968De10'), + ('{{linkpool}}', '0xCe08a02e0f6858DDc0e31110972e8139Cf0a146d'), + ('{{linkriver}}', '0x8ABe586e96745D4acA358bAe11e71F5A59434f47'), + ('{{linkriver}}', '0xe58B9a01f01f444cd45fF47C41529d400adE9A52'), + ('{{linkriver}}', '0xA53e021Be83d0251eD58452Dd3FC1623186a6ad0'), + ('{{piertwo}}', '0x7a80bEaCcA09e2F3d8DDb7ABFdc975e1efB194d7'), + ('{{piertwo}}', '0x93fa1481BF95C47a9c6F26B8e70a81C7A607934b'), + ('{{piertwo}}', '0x3036fc59b1c457ab5336059d828518e6fDb54cfD'), + ('{{simplyvc}}', '0x953731C84798d6F64c795da8973f565761A8964C'), + ('{{simplyvc}}', '0x6c995b2abCbd72a4A35D80F9c5476f496Ee97bD1'), + ('{{simplyvc}}', '0x09DafcF34369842EB7E7a5662Bb6793171127Ed1'), + ('{{stakingfacilities}}', '0xd1Be7FcE9C87F22E3715d257FCE92F7595018B67'), + ('{{stakingfacilities}}', '0x19c67363742a485a7BE3DF520a889E5E3a73337A') +) a (operator_name, keeper_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_onramp_meta.sql b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_onramp_meta.sql new file mode 100644 index 00000000..39cc7087 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_onramp_meta.sql @@ -0,0 +1,33 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_polygon_ccip_onramp_meta", + ) +}} + + + +SELECT + chain + , onramp AS onramp + , chain_selector::number AS chain_selector + , version +FROM (VALUES +('ethereum', '0xAE0e486Fa6577188d586A8e4c12360FB82E2a386', '5009297550715157269', 'v1.0.0') +, ('optimism', '0xD8E79DeF51a98b71c98b4C19D4A314341670AC36', '3734403246176062136', 'v1.0.0') +, ('arbitrum', '0x0000000000000000000000000000000000000000', '4949039107694359620', 'v1.0.0') +, ('avalanche', '0x47D945f7bbb814B65775a89c71F5D2229BE96CE9', '6433500567565415381', 'v1.0.0') +, ('base', '0x0000000000000000000000000000000000000000', '15971525489660198786', 'v1.0.0') +, ('bsc', '0xFFAacDD8FB3aF6aDa58AbABAEc549587C81351BF', '11344663589394136015', 'v1.0.0') +, ('ethereum', '0xFd77c53AA4eF0E3C01f5Ac012BF7Cc7A3ECf5168', '5009297550715157269', 'v1.2.0') +, ('optimism', '0x3111cfbF5e84B5D9BD952dd8e957f4Ca75f728Cf', '3734403246176062136', 'v1.2.0') +, ('arbitrum', '0xD16D025330Edb91259EEA8ed499daCd39087c295', '4949039107694359620', 'v1.2.0') +, ('avalanche', '0x5FA30697e90eB30954895c45b028F7C0dDD39b12', '6433500567565415381', 'v1.2.0') +, ('base', '0x20B028A2e0F6CCe3A11f3CE5F2B8986F932e89b4', '15971525489660198786', 'v1.2.0') +, ('bsc', '0xF5b5A2fC11BF46B1669C3B19d98B19C79109Dca9', '11344663589394136015', 'v1.2.0') +, ('wemix', '0x5060eF647a1F66BE6eE27FAe3046faf8D53CeB2d', '5142893604156789321', 'v1.2.0') +) +AS a (chain, onramp, chain_selector, version) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_token_meta.sql b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_token_meta.sql new file mode 100644 index 00000000..818ea929 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ccip_token_meta.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_polygon_ccip_token_meta", + ) +}} + +SELECT + 'polygon' AS blockchain, + token_contract, + token_symbol +FROM (VALUES + ('0xb0897686c545045aFc77CF20eC7A532E3120E0F1', 'LINK'), + ('0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 'WMATIC') +) a (token_contract, token_symbol) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ocr_operator_admin_meta.sql b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ocr_operator_admin_meta.sql new file mode 100644 index 00000000..45d1719a --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_ocr_operator_admin_meta.sql @@ -0,0 +1,61 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_polygon_ocr_operator_admin_meta" + ) +}} + +{% set a01node = '01Node' %} +{% set alphachain = 'Alphachain' %} +{% set bharvest = 'B Harvest' %} +{% set blocksizecapital = 'BlocksizeCapital' %} +{% set chainlayer = 'Chainlayer' %} +{% set cryptomanufaktur = 'CryptoManufaktur' %} +{% set dmakers = 'dMakers' %} +{% set dextrac = 'DexTrac' %} +{% set fiews = 'Fiews' %} +{% set inotel = 'Inotel' %} +{% set linkforest = 'LinkForest' %} +{% set linkpool = 'LinkPool' %} +{% set linkriver = 'LinkRiver' %} +{% set matrixedlink = 'Matrixed.Link' %} +{% set newroad = 'Newroad Network' %} +{% set piertwo = 'Pier Two' %} +{% set simplyvc = 'Simply VC' %} +{% set snzpool = 'SNZPool' %} +{% set stakingfacilities = 'Staking Facilities' %} +{% set vulcan = 'Vulcan Link' %} +{% set ztake = 'Ztake.org' %} + +SELECT admin_address, operator_name FROM (VALUES + ('0xEcE9E7521451e2E8dEe06C1677CF36274585377f', '{{a01node}}'), + ('0xD9459cc85E78e0336aDb349EAbF257Dbaf9d5a2B', '{{a01node}}'), + ('0xa5D0084A766203b463b3164DFc49D91509C12daB', '{{alphachain}}'), + ('0x6cDC3Efa3bAa392fAF3E5c1Ca802E15B6185E0e8', '{{bharvest}}'), + ('0x7CC60c9C24E9A290Db55b1017AF477E5c87a7550', '{{blocksizecapital}}'), + ('0x4a3dF8cAe46765d33c2551ff5438a5C5FC44347c', '{{chainlayer}}'), + ('0x59eCf48345A221E0731E785ED79eD40d0A94E2A5', '{{cryptomanufaktur}}'), + ('0xB9e62F6a14aC8BabB7f99993bdc3182a1976c22E', '{{dmakers}}'), + ('0x9efa0A617C0552F1558c95993aA8b8A68b3e709C', '{{dextrac}}'), + ('0x15918ff7f6C44592C81d999B442956B07D26CC44', '{{fiews}}'), + ('0xB97a32D95A31a504C3dB28dDd574F21c700EDbee', '{{fiews}}'), + ('0xB8C6E43f37E04A2411562a13c1C48B3ad5975cf4', '{{inotel}}'), + ('0x4564A9c6061f6f1F2Eadb954B1b3C241D2DC984e', '{{linkforest}}'), + ('0xD56FBFF05D2e1cdbeb5CB50e8055dAD0cf864792', '{{linkforest}}'), + ('0xD48fc6E2B73C2988fA50C994181C0CdCa850D62a', '{{linkforest}}'), + ('0x797de2909991C66C66D8e730C8385bbab8D18eA6', '{{linkpool}}'), + ('0xDF812B91D8bf6DF698BFD1D8047839479Ba63420', '{{linkpool}}'), + ('0x14f94049397C3F1807c45B6f854Cb5F36bC4393B', '{{linkriver}}'), + ('0x4dc81f63CB356c1420D4620414f366794072A3a8', '{{matrixedlink}}'), + ('0xAB35418fB9f8B13E3e6857c36A0769b9F94a87EC', '{{newroad}}'), + ('0x3FB4600736d306Ee2A89EdF0356D4272fb095768', '{{piertwo}}'), + ('0x4fBefaf1BFf0130945C61603B97D38DD6e21f5Cf', '{{simplyvc}}'), + ('0x1f11134A80aEd1FF47E3ee97A4d3f978A0629669', '{{simplyvc}}'), + ('0x9cCbFD17FA284f36c2ff503546160B256d1CD3D1', '{{snzpool}}'), + ('0x3D65be029c949F52cABa2d8E8270c098256697d9', '{{stakingfacilities}}'), + ('0x7D0f8dd25135047967bA6C50309b567957dd52c3', '{{vulcan}}'), + ('0x0039F22efB07A647557C7C5d17854CFD6D489eF3', '{{ztake}}') +) AS tmp_node_meta(admin_address, operator_name) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_price_feeds_oracle_addresses.sql b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_price_feeds_oracle_addresses.sql new file mode 100644 index 00000000..8757fe8f --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/dim_chainlink_polygon_price_feeds_oracle_addresses.sql @@ -0,0 +1,215 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="dim_polygon_price_feeds_oracle_addresses", + ) +}} + +{% set _1inch_usd = '1INCH / USD' %} +{% set aapl_usd = 'AAPL / USD' %} +{% set aave_network_emergency_count_polygon_ = 'AAVE Network Emergency Count (Polygon)' %} +{% set aed_usd = 'AED / USD' %} +{% set ageur_usd = 'AGEUR / USD' %} +{% set alcx_usd = 'ALCX / USD' %} +{% set alpha_usd = 'ALPHA / USD' %} +{% set amkt_por = 'AMKT PoR' %} +{% set amzn_usd = 'AMZN / USD' %} +{% set ant_usd = 'ANT / USD' %} +{% set ape_usd = 'APE / USD' %} +{% set avax_usd = 'AVAX / USD' %} +{% set axs_usd = 'AXS / USD' %} +{% set badger_eth = 'BADGER / ETH' %} +{% set badger_usd = 'BADGER / USD' %} +{% set bal_eth = 'BAL / ETH' %} +{% set bal_usd = 'BAL / USD' %} +{% set brl_usd = 'BRL / USD' %} +{% set btc_eth = 'BTC / ETH' %} +{% set cbeth_eth = 'CBETH / ETH' %} +{% set cel_usd = 'CEL / USD' %} +{% set cgt_por_eth_ = 'CGT PoR (ETH)' %} +{% set chz_usd = 'CHZ / USD' %} +{% set cny_usd = 'CNY / USD' %} +{% set cvx_usd = 'CVX / USD' %} +{% set calculated_maticx_usd = 'Calculated MaticX / USD' %} +{% set calculated_stmatic_usd = 'Calculated stMATIC / USD' %} +{% set dfi_usd = 'DFI / USD' %} +{% set dgb_usd = 'DGB / USD' %} +{% set dodo_usd = 'DODO / USD' %} +{% set doge_usd_total_marketcap = 'DOGE-USD Total Marketcap' %} +{% set dpi_eth = 'DPI / ETH' %} +{% set enj_usd = 'ENJ / USD' %} +{% set farm_usd = 'FARM / USD' %} +{% set fb_usd = 'FB / USD' %} +{% set fil_usd = 'FIL / USD' %} +{% set fis_usd = 'FIS / USD' %} +{% set ftm_usd = 'FTM / USD' %} +{% set ftt_usd = 'FTT / USD' %} +{% set ghst_eth = 'GHST / ETH' %} +{% set ghst_usd = 'GHST / USD' %} +{% set googl_usd = 'GOOGL / USD' %} +{% set grt_usd = 'GRT / USD' %} +{% set hbar_usd = 'HBAR / USD' %} +{% set icp_usd = 'ICP / USD' %} +{% set idr_usd = 'IDR / USD' %} +{% set ils_usd = 'ILS / USD' %} +{% set inr_usd = 'INR / USD' %} +{% set kava_usd = 'KAVA / USD' %} +{% set klay_usd = 'KLAY / USD' %} +{% set krw_usd = 'KRW / USD' %} +{% set link_matic = 'LINK / MATIC' %} +{% set mim_usd = 'MIM / USD' %} +{% set mimatic_usd = 'MIMATIC / USD' %} +{% set mkr_usd = 'MKR / USD' %} +{% set mln_eth = 'MLN / ETH' %} +{% set msft_usd = 'MSFT / USD' %} +{% set mxn_usd = 'MXN / USD' %} +{% set nexo_usd = 'NEXO / USD' %} +{% set nzd_usd = 'NZD / USD' %} +{% set ocean_usd = 'OCEAN / USD' %} +{% set ogn_usd = 'OGN / USD' %} +{% set ohm_index = 'OHM Index' %} +{% set ohmv2_usd = 'OHMv2 / USD' %} +{% set om_usd = 'OM / USD' %} +{% set php_usd = 'PHP / USD' %} +{% set pla_usd = 'PLA / USD' %} +{% set pln_usd = 'PLN / USD' %} +{% set quick_eth = 'QUICK / ETH' %} +{% set quick_usd = 'QUICK / USD' %} +{% set rai_usd = 'RAI / USD' %} +{% set se_usd = 'SE / USD' %} +{% set sek_usd = 'SEK / USD' %} +{% set shib_usd = 'SHIB / USD' %} +{% set slp_usd = 'SLP / USD' %} +{% set sol_usd = 'SOL / USD' %} +{% set spy_us = 'SPY.US' %} +{% set steth_usd = 'STETH / USD' %} +{% set storj_usd = 'STORJ / USD' %} +{% set sushi_eth = 'SUSHI / ETH' %} +{% set thb_usd = 'THB / USD' %} +{% set theta_usd = 'THETA / USD' %} +{% set try_usd = 'TRY / USD' %} +{% set tsla_usd = 'TSLA / USD' %} +{% set tzs_usd = 'TZS / USD' %} +{% set vnd_usd = 'VND / USD' %} +{% set woo_usd = 'WOO / USD' %} +{% set wsteth_eth = 'WSTETH / ETH' %} +{% set xag_usd = 'XAG / USD' %} +{% set xmr_usd = 'XMR / USD' %} +{% set xpt_usd = 'XPT / USD' %} +{% set xtz_usd = 'XTZ / USD' %} +{% set yfi_usd = 'YFI / USD' %} +{% set zar_usd = 'ZAR / USD' %} +{% set ibbtc_pricepershare = 'ibBTC PricePerShare' %} +{% set wsteth_steth_exchange_rate = 'wstETH-stETH Exchange Rate' %} + +SELECT + 'polygon' as blockchain, + feed_name, + CAST(decimals AS BIGINT) as decimals, + proxy_address, + aggregator_address +FROM (values + ('{{_1inch_usd}}', 8, '0x443C5116CdF663Eb387e72C688D276e702135C87', '0x60A47cC34342bc43C308B67D5836D9116A797D6A'), + ('{{aapl_usd}}', 8, '0x7E7B45b08F68EC69A99AAb12e42FcCB078e10094', '0x9fC6ee32430DC0baD47742C70eCA0a848D2b897F'), + ('{{aave_network_emergency_count_polygon_}}', 0, '0xDAFA1989A504c48Ee20a582f2891eeB25E2fA23F', '0x889E905D743aF41BEAbd77bF699a33c0cEf981dA'), + ('{{aed_usd}}', 8, '0x3fd911749Fce21a38704B76FFaBcB6BeF2567F2E', '0x81dD0F721fF3cd23f3CFcCa10A7dcc06fF3B5505'), + ('{{ageur_usd}}', 8, '0x9b88d07B2354eF5f4579690356818e07371c7BeD', '0x63a39D35751E8D3e80734BcDC755B2145718385D'), + ('{{alcx_usd}}', 8, '0x5DB6e61B6159B20F068dc15A47dF2E5931b14f29', '0xc4AF1C7744131BfE4Cf86ca2b1688d7F1f428Eaf'), + ('{{alpha_usd}}', 8, '0x289833F252eaB98582D62db94Bd75aB48AD9CF0D', '0x2A96a9939b4Bf779b23f46B205727D602fE7bD5d'), + ('{{amkt_por}}', 18, '0x32640253A3d0Fc25597D8a784a839311FF404C83', '0x951704608E450D290f1D8deC2d9509fC22fa8086'), + ('{{amzn_usd}}', 8, '0xf9184b8E5da48C19fA4E06f83f77742e748cca96', '0xd64DC710a0E8fe2944eC1a845AF116c2Cc8C81dA'), + ('{{ant_usd}}', 8, '0x213b030E24C906ee3b98EC7538Cc6D3D3C82aF55', '0xfC8fb8Bd285FF358FEF481b45dbc7450C0F8f89d'), + ('{{ape_usd}}', 8, '0x2Ac3F3Bfac8fC9094BC3f0F9041a51375235B992', '0xB24ACd0C92014920Aa233F78331e47aEd3B5f204'), + ('{{avax_usd}}', 8, '0xe01eA2fbd8D76ee323FbEd03eB9a8625EC981A10', '0xE3a36141cb950eb56DEC7383F2d9234Bbdc69B6e'), + ('{{axs_usd}}', 8, '0x9c371aE34509590E10aB98205d2dF5936A1aD875', '0xe6c6Fd2b0959B2d5385b1EAb277a57FcBA6A2203'), + ('{{axs_usd}}', 8, '0x9c371aE34509590E10aB98205d2dF5936A1aD875', '0xE2c89f4Bfab45B574942523FEAA430C6e193725B'), + ('{{badger_eth}}', 18, '0x82C9d4E88862f194C2bd874a106a90dDD0D35AAB', '0xbE1c032bD5Fcd0285Af538235eE671B271c98d5e'), + ('{{badger_usd}}', 8, '0xF626964Ba5e81405f47e8004F0b276Bb974742B5', '0xC1E913be9AD8bBAAC5c5cc4aAdafdf63BFC4ec8d'), + ('{{bal_eth}}', 18, '0x03CD157746c61F44597dD54C6f6702105258C722', '0x7C66609Db07C8983f324098DDc53F03af716aba7'), + ('{{bal_usd}}', 8, '0xD106B538F2A868c28Ca1Ec7E298C3325E0251d66', '0xd0CCf213410578DF4EC5EB0157234120B30d2f81'), + ('{{brl_usd}}', 8, '0xB90DA3ff54C3ED09115abf6FbA0Ff4645586af2c', '0x6DBd1be1a83005d26b582D61937b406300B05A8F'), + ('{{btc_eth}}', 18, '0x19b0F0833C78c0848109E3842D34d2fDF2cA69BA', '0xAA7B8f063457756E32f782EfE981908c2De83C68'), + ('{{cbeth_eth}}', 18, '0x0a6a03CdF7d0b48d4e4BA8e362A4FfC3aAC4f3c0', '0x508e317956cA8Cc9c824c1786c0c963699d99f75'), + ('{{cel_usd}}', 8, '0xc9ECF45956f576681bDc01F79602A79bC2667B0c', '0x5e079671301375Be7AfC9bc0B9958F79426dE847'), + ('{{cgt_por_eth_}}', 8, '0x4e9fc7480c16F3FE5d956C0759eE6b4808d1F5D7', '0x586d26055914143a0100E26541e1dd47D570045b'), + ('{{chz_usd}}', 8, '0x2409987e514Ad8B0973C2b90ee1D95051DF0ECB9', '0x2051Efb579C4A014Cbc0d6Af050768cBDB8A2478'), + ('{{cny_usd}}', 8, '0x04bB437Aa63E098236FA47365f0268547f6EAB32', '0xF07eac7A48Eb772613479D6A8Fc42675f1BeFb47'), + ('{{cvx_usd}}', 8, '0x5ec151834040B4D453A1eA46aA634C1773b36084', '0x6729B40433A3cC07EEa99a57452824638F01416c'), + ('{{calculated_maticx_usd}}', 8, '0x5d37E4b374E6907de8Fc7fb33EE3b0af403C7403', '0x95622DC91570EB3b1301a4EBAb5d3eb6BE1fa38a'), + ('{{calculated_stmatic_usd}}', 8, '0x97371dF4492605486e23Da797fA68e55Fc38a13f', '0x0faf504bee22AF6E92D6697Af2EAfB9941a1712D'), + ('{{dfi_usd}}', 8, '0x3CD95aB66D27736d09994c0555Ef488E496a81b2', '0x8ad3E59aD44021668EF38cCC2aAfab85D45697F4'), + ('{{dgb_usd}}', 8, '0x4205eC5fd179A843caa7B0860a8eC7D980013359', '0x40C0819f7cbF6d2DEcCc9a88137d53fA2231dcAc'), + ('{{dodo_usd}}', 8, '0x59161117086a4C7A9beDA16C66e40Bdaa1C5a8B6', '0x908e90dcb4541d39D5b52CB84EB8ae3503Da046f'), + ('{{dodo_usd}}', 8, '0x59161117086a4C7A9beDA16C66e40Bdaa1C5a8B6', '0x9d2ef3aBb9e7e29A1a5A1Ab9fd319987bEa949c8'), + ('{{doge_usd_total_marketcap}}', 8, '0xbd238a35Fb47aE22F0cC551f14ffB8E8f04FCA21', '0xF7c7FB4b2C72dc1e118cE9ed38CF1D3d9Ea206C1'), + ('{{dpi_eth}}', 18, '0xC70aAF9092De3a4E5000956E672cDf5E996B4610', '0x02228Ab6bA5FfeE5ba15cd1477987FF4D4BfEce4'), + ('{{enj_usd}}', 8, '0x440A341bbC9FA86aA60A195e2409a547e48d4C0C', '0x24e54b4752392F48c0F4B6cc291b10bcaeD0c28a'), + ('{{farm_usd}}', 8, '0xDFb138ba3A6CCe675A6F5961323Be31eE42E40ff', '0xF1ae47478Cf731788Be7D1444DFe351146BDE3ed'), + ('{{fb_usd}}', 8, '0x5b4586C911144A947D7814Fd71fe0872b8334748', '0x6a261a56A644B27C2236c64C1F6638C968D7B9DD'), + ('{{fil_usd}}', 8, '0xa07703E5C2eD1516107c7c72A494493Dcb99C676', '0x39B46Cb14BCf5cd1Cf8129Db3eD0ceaa2f3bAa9a'), + ('{{fis_usd}}', 8, '0x18617D05eE1692Ad7EAFee9839459da16097AFd8', '0xDeDc34A2B7C192E9498A76D758c68b1CA14192B1'), + ('{{ftm_usd}}', 8, '0x58326c0F831b2Dbf7234A4204F28Bba79AA06d5f', '0x90f49083a5344979d8983cA95fBd107b3FF5cF3e'), + ('{{ftt_usd}}', 8, '0x817A7D43f0277Ca480AE03Ec76Fc63A2EC7114bA', '0xADD04304E4d88249670BEeE585b6188aD229b431'), + ('{{ftt_usd}}', 8, '0x817A7D43f0277Ca480AE03Ec76Fc63A2EC7114bA', '0x4cff0A023467949767009039F510ee724281c621'), + ('{{ghst_eth}}', 18, '0xe638249AF9642CdA55A92245525268482eE4C67b', '0xeC35E6F084cE365A819E99bCd1F89319e519Fdf3'), + ('{{ghst_usd}}', 8, '0xDD229Ce42f11D8Ee7fFf29bDB71C7b81352e11be', '0xA25aA6588c0311b9dB11c2887d9AcbB6b5e3d1B0'), + ('{{googl_usd}}', 8, '0x1b32682C033b2DD7EFdC615FA82d353e254F39b5', '0x550D316147a2B1e51E35B1102EBE7746C23042A6'), + ('{{grt_usd}}', 8, '0x3FabBfb300B1e2D7c9B84512fe9D30aeDF24C410', '0x0C6ff30968226be88430eeBFcbA7F217d81f370b'), + ('{{hbar_usd}}', 8, '0xC5878bDf8a89FA3bF0DC8389ae8EE6DE601D01bC', '0x57f9c3522DB39bdD095319c85A184e8Bb13FcEC0'), + ('{{icp_usd}}', 8, '0x84227A76a04289473057BEF706646199D7C58c34', '0x0deC46bfDa8Ce29bFa6bE4343Aa44d9beFC71E90'), + ('{{idr_usd}}', 8, '0x80a5cb83ce268Ed11a6EFC4bBF0beC39dF35Db21', '0xEdf55089c4171bf245016f4D9C46a6E326fAf923'), + ('{{ils_usd}}', 8, '0x8d5eB34C509261533235b91350d359EdcB969D33', '0x9c86EAe2A3f07aBb97b8c699467Bb90Db58d75aE'), + ('{{inr_usd}}', 8, '0xDA0F8Df6F5dB15b346f4B8D1156722027E194E60', '0x54D81825C7ba6766d8770Ec8aE9f786E700F6Df2'), + ('{{kava_usd}}', 8, '0x7899dd75C329eFe63e35b02bC7d60D3739FB23c5', '0x180fF2978Cd4f0cf7B7890f354eE5a986a31Be59'), + ('{{klay_usd}}', 8, '0x86F87CB74238a6f24606534A2fCc05469Eb2bcF5', '0xcEBf62b33FC637882B80e41f71d679fb331206B0'), + ('{{krw_usd}}', 8, '0x24B820870F726dA9B0D83B0B28a93885061dbF50', '0xFd54f97A6C408561b5Df798c04ae08B27cA0d7F7'), + ('{{link_matic}}', 18, '0x5787BefDc0ECd210Dfa948264631CD53E68F7802', '0x817C00aFc51e6574ACaA718336FB4414eBC87Fdb'), + ('{{mim_usd}}', 8, '0xd133F916e04ed5D67b231183d85Be12eAA018320', '0x9b3F311bD715A4E00dc11b4e21D5389de455bC13'), + ('{{mimatic_usd}}', 8, '0xd8d483d813547CfB624b8Dc33a00F2fcbCd2D428', '0x1c367A2D0a1E6c13dA55CAb82484D4CD8dc292e2'), + ('{{mkr_usd}}', 8, '0xa070427bF5bA5709f70e98b94Cb2F435a242C46C', '0xE41B5D02E64b165e77f12b72Bf80B56d076000CF'), + ('{{mln_eth}}', 18, '0xB89D583B72aBF9C3a7e6e093251C2fCad3365312', '0xbacad8B83716776B3252730487a8c81f5f1D9a00'), + ('{{msft_usd}}', 8, '0xC43081d9EA6d1c53f1F0e525504d47Dd60de12da', '0xbb9D50D19dB23Df32277545E0ecE65A93BEcE87D'), + ('{{mxn_usd}}', 8, '0x171b16562EA3476F5C61d1b8dad031DbA0768545', '0x2E2Ed40Fc4f1774Def278830F8fe3b6e77956Ec8'), + ('{{nexo_usd}}', 8, '0x666bb13b3ED3816504E8c30D0F9B9C16b371774b', '0xe2d792d64A36797f8d3E0F150B82d1E35Da76136'), + ('{{nzd_usd}}', 8, '0xa302a0B8a499fD0f00449df0a490DedE21105955', '0xE63032a70f6Eb617970829FbFa365D7C44BDbBbf'), + ('{{ocean_usd}}', 8, '0xdcda79097C44353Dee65684328793695bd34A629', '0x21B701aadF13300E944451073CA6dDB1af1e29a0'), + ('{{ogn_usd}}', 8, '0x8Ec0eC2e0F26D8253ABf39Db4B1793D76B49C6D5', '0x0961c007ffaAb3C7357f01e6BcE2386e340f1D0a'), + ('{{ohm_index}}', 9, '0xc08f70c26ab8C659EaF259c51a0F7ae22758c6ac', '0x2C7b866EFd8d4D136DE9826C3B7102496502c1cc'), + ('{{ohmv2_usd}}', 8, '0x4cE90F28C6357A7d3F47D680723d18AF3684cD00', '0xEE3563f684D74105d40d649f2e0150F748fE947C'), + ('{{ohmv2_usd}}', 8, '0x4cE90F28C6357A7d3F47D680723d18AF3684cD00', '0x03fE6917367CdE98039627FF3B8c7e61c684E76D'), + ('{{om_usd}}', 8, '0xc86105DccF9BD629Cea7Fd41f94c6050bF96D57F', '0x39a920f1eaa5a02839AB67802850d6e12bfdA5a5'), + ('{{php_usd}}', 8, '0x218231089Bebb2A31970c3b77E96eCfb3BA006D1', '0x8A2355Ec4678186164dc17DFC2C5D0d083d7Fd66'), + ('{{pla_usd}}', 8, '0x24C0e0FC8cCb21e2fb3e1A8A4eC4b29458664f79', '0x21ae958373cf1D3A82D095b70c205a78a6F27Fb2'), + ('{{pln_usd}}', 8, '0xB34BCE11040702f71c11529D00179B2959BcE6C0', '0x08f8D217e6F07aE423a2Ad2ffb226FfCB577708d'), + ('{{quick_eth}}', 18, '0x836a579B39d22b2147c1C229920d27880C915578', '0x836faa493e68faC2dd6b9250Ace9666fd48c4f09'), + ('{{quick_usd}}', 8, '0xa058689f4bCa95208bba3F265674AE95dED75B6D', '0x279108b32171D1D2eF2728d2AaE19b4e314687CC'), + ('{{rai_usd}}', 8, '0x7f45273fD7C644714825345670414Ea649b50b16', '0xe8abfC228Fc42d50a50B47C67AD9226349A01405'), + ('{{se_usd}}', 8, '0xcc73e00db7a6FD589a30BbE2E957086b8d7D3331', '0x0D40d2791126EADD2467ef6CbD4b68461c10Ff86'), + ('{{sek_usd}}', 8, '0xbd92B4919ae82be8473859295dEF0e778A626302', '0x542d2AF7F89a61205f3da2d3d13e29b56bDE7B46'), + ('{{shib_usd}}', 8, '0x3710abeb1A0Fc7C2EC59C26c8DAA7a448ff6125A', '0x2d8a85Fe1A6F288653246Ca08b8160378A8AE957'), + ('{{slp_usd}}', 8, '0xBB3eF70953fC3766bec4Ab7A9BF05B6E4caf89c6', '0x483cEBbda762eeE5B508dbE7179a2aF5A179eFC3'), + ('{{sol_usd}}', 8, '0x10C8264C0935b3B9870013e057f330Ff3e9C56dC', '0x37b557Dd3d3552C4DAA4dA935cf5bf2f3d04c8bF'), + ('{{spy_us}}', 8, '0x187c42f6C0e7395AeA00B1B30CB0fF807ef86d5d', '0x066Fe9d3A4B77bD48165f68aDBcd1EAa9eb1F7C9'), + ('{{steth_usd}}', 8, '0x87eF348CADd1Ed7cc7A5F4Fefb20325216AA2cEb', '0x322fd65e428bBE23782c52B9dC7Fb9D15D605011'), + ('{{storj_usd}}', 8, '0x0F1d5Bd7be9B30Fc09E110cd6504Bd450e53cb0E', '0xB1a56484BC2C6ba874C386CAa8381310fAf8985d'), + ('{{sushi_eth}}', 18, '0x17414Eb5159A082e8d41D243C1601c2944401431', '0x5826BDdE4E50B2DC78F62103E921B3DcD14D4FD7'), + ('{{thb_usd}}', 8, '0x5164Ad28fb12a5e55946090Ec3eE1B748AFb3785', '0xE70217D715b19190426017D282b0d7c200A8B45b'), + ('{{theta_usd}}', 8, '0x38611b09F8f2D520c14eA973765C225Bf57B9Eac', '0x953D8c16Fd4f22951c2f497669c6869b86b4e60E'), + ('{{try_usd}}', 8, '0xd78325DcA0F90F0FFe53cCeA1B02Bb12E1bf8FdB', '0x39E5E33C923bB56a7e2Ae644564f94b80630F3e3'), + ('{{tsla_usd}}', 8, '0x567E67f456c7453c583B6eFA6F18452cDee1F5a8', '0xA7cc6e5285cbCBbC61f7EAed4299f3a04E8ead65'), + ('{{tzs_usd}}', 8, '0xE6d13eF6Fb49230791C0F21927f091F2B8E2c566', '0x4f1Ea89A64b56287Ec74a0b1F59aFEC5ea7acdf3'), + ('{{vnd_usd}}', 8, '0x0Cf1D8c6651F4188E55fCe6AB25261948108F197', '0x3aE204993812121bf0C54e8B993e59A6978fbB58'), + ('{{woo_usd}}', 8, '0x6a99EC84819FB7007dd5D032068742604E755c56', '0xB16B1Ee56c70CF1FDD1E32D092045d08E5be4693'), + ('{{wsteth_eth}}', 18, '0x10f964234cae09cB6a9854B56FF7D4F38Cda5E6a', '0xeC43A133a79EAAeDac467E2413Ce824896005157'), + ('{{xag_usd}}', 8, '0x461c7B8D370a240DdB46B402748381C3210136b3', '0x00a27E2f64dE7B05E9ddF7aD6bA916d78458c8c7'), + ('{{xmr_usd}}', 8, '0xBE6FB0AB6302B693368D0E9001fAF77ecc6571db', '0x7aB0b2835f71ad2a31056007F651C897E5EE148A'), + ('{{xpt_usd}}', 8, '0xA6813d97eB2E0b50d0111385011a884097F74B30', '0x5e5e0Be97998268F10629ae0fCeD6622Be10DD53'), + ('{{xtz_usd}}', 8, '0x691e26AB58ff05800E028b0876A41B720b26FC65', '0xb6c02600D9956EDd226E87bB6F82cEa1ead8822F'), + ('{{yfi_usd}}', 8, '0x9d3A43c111E7b2C6601705D9fcF7a70c95b1dc55', '0x633c4dfD8e11008eB9e245ad4B84Cb76F197FD1b'), + ('{{zar_usd}}', 8, '0xd4a120c26d57B910C56c910CdD13EeBFA3135502', '0x88245775029Dc400a28371A77Cdbb9f15dCbB67c'), + ('{{ibbtc_pricepershare}}', 18, '0xc3E676E68dB28c9Fb2199f25B60560723237cc76', '0xc86dE80Ae2626664C46cBfB45366b59B405D1f9F'), + ('{{wsteth_steth_exchange_rate}}', 18, '0x3Ea1eC855fBda8bA0396975eC260AD2e9B2Bc01c', '0x874Fd3B6F91d1DFF7850EC39ACC1172006C3c7a3') +) a (feed_name, decimals, proxy_address, aggregator_address) \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_reward_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_reward_daily.sql new file mode 100644 index 00000000..9dd0a8ca --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_reward_daily.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_automation_reward_daily", + ) +}} + + +{{chainlink_automation_rewards_daily ('polygon')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_upkeep_performed_logs.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_upkeep_performed_logs.sql new file mode 100644 index 00000000..ddca0c5b --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_automation_upkeep_performed_logs.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_automation_upkeep_performed_logs" + ) +}} + +{{ chainlink_logs('polygon', ('0xcaacad83e47cc45c280d487ec84184eee2fa3b54ebaa393bda7549f13da228f6', '0xad8cc9579b21dfe2c2f6ea35ba15b656e46b4f5b0cb424f52739b8ce5cac9c5b'))}} + diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_reward_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_reward_daily.sql new file mode 100644 index 00000000..ebed0290 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ccip_reward_daily" + ) +}} + +{{ chainlink_ccip_rewards_daily('polygon')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1.sql new file mode 100644 index 00000000..4520f5c4 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ccip_send_requested_logs_v1", + ) +}} + +{{ chainlink_logs('polygon', ('0xaffc45517195d6499808c643bd4a7b0ffeedf95bea5852840d7bfcf63f59e821'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1_2.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1_2.sql new file mode 100644 index 00000000..60c36bfd --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ccip_send_requested_logs_v1_2.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ccip_send_requested_logs_v1_2", + ) +}} + + +{{ chainlink_logs('polygon', ('0xd0c3c799bf9e2639de44391e7f524d229b2b55f5b1ea94b2bf7da42f7243dddd'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_direct_rewards_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_direct_rewards_daily.sql new file mode 100644 index 00000000..8f811cce --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_direct_rewards_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_direct_rewards_daily" + ) +}} + +{{ chainlink_direct_operator_rewards_daily('polygon')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_fm_reward_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_fm_reward_daily.sql new file mode 100644 index 00000000..1f10e163 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_fm_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_fm_reward_daily" + ) +}} + +{{ chainlink_fm_rewards_daily('polygon')}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reconcile_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reconcile_daily.sql new file mode 100644 index 00000000..34ca13eb --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reconcile_daily.sql @@ -0,0 +1,69 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ocr_reconcile_daily", + ) +}} + + +WITH + reconcile_20231017_polygon_evt_transfer as ( + SELECT + evt_transfer.from_address as admin_address, + MAX(amount) as token_value + FROM polygon_flipside.core.ez_token_transfers evt_transfer + LEFT JOIN {{ ref('dim_chainlink_polygon_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON ocr_operator_admin_meta.admin_address = evt_transfer.from_address + WHERE + evt_transfer.block_timestamp >= '2023-10-16' + AND evt_transfer.to_address = lower('0x2431d49d225C1BcCE7541deA6Da7aEf9C7AD3e23') + GROUP BY + EVT_TRANSFER.tx_hash, + EVT_TRANSFER.event_index, + evt_transfer.from_address + ), + reconcile_20231017_polygon_daily as ( + SELECT + '2023-10-16' AS date_start, + cast(date_trunc('month', cast('2023-10-16' as date)) as date) as date_month, + admin_address, + 0 - SUM(token_value) as token_amount + FROM + reconcile_20231017_polygon_evt_transfer + GROUP BY + 3 + ), + reconcile_20231017_ethereum_evt_transfer as ( + SELECT + evt_transfer.from_address as admin_address, + MAX(amount) as token_value + FROM polygon_flipside.core.ez_token_transfers evt_transfer + LEFT JOIN {{ ref('dim_chainlink_polygon_ocr_operator_admin_meta') }} ocr_operator_admin_meta ON ocr_operator_admin_meta.admin_address = evt_transfer.from_address + WHERE + evt_transfer.block_timestamp >= '2023-10-16' + AND evt_transfer.from_address = lower('0xC489244f2a5FC0E65A0677560EAA4A13F5036ab6') + GROUP BY + EVT_TRANSFER.tx_hash, + EVT_TRANSFER.event_index, + evt_transfer.from_address + ), + reconcile_20231017_ethereum_daily as ( + SELECT + '2023-10-16' AS date_start, + cast(date_trunc('month', cast('2023-10-16' as date)) as date) as date_month, + admin_address, + 0 - SUM(token_value) as token_amount + FROM + reconcile_20231017_ethereum_evt_transfer + GROUP BY + 3 + ) +SELECT + COALESCE(reconcile_polygon.date_start, reconcile_ethereum.date_start) as date_start, + COALESCE(reconcile_polygon.admin_address, reconcile_ethereum.admin_address) as admin_address, + COALESCE(reconcile_polygon.token_amount, 0) + COALESCE(reconcile_ethereum.token_amount, 0) as token_amount +FROM + reconcile_20231017_polygon_daily reconcile_polygon +FULL OUTER JOIN reconcile_20231017_ethereum_daily reconcile_ethereum ON reconcile_ethereum.admin_address = reconcile_polygon.admin_address \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_daily.sql new file mode 100644 index 00000000..3654f9f5 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_daily.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ocr_reward_daily", + ) +}} + + {{ chainlink_ocr_rewards_daily('polygon') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_transmission_logs.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_transmission_logs.sql new file mode 100644 index 00000000..eaaf80d6 --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_ocr_reward_transmission_logs.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_ocr_reward_transmission_logs", + ) +}} + +{{ chainlink_logs('polygon', ('0xd0d9486a2c673e2a4b57fc82e4c8a556b3e2b82dd5db07e2c04a920ca0f469b6'))}} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_request_fulfilled_logs.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_request_fulfilled_logs.sql new file mode 100644 index 00000000..8c1cf7ef --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_request_fulfilled_logs.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_vrf_request_fulfilled_logs", + ) +}} +{{ chainlink_vrf_request_fulfilled_logs('polygon') }} \ No newline at end of file diff --git a/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_rewards_daily.sql b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_rewards_daily.sql new file mode 100644 index 00000000..e7c659fc --- /dev/null +++ b/models/projects/chainlink/prod_raw/polygon/fact_chainlink_polygon_vrf_rewards_daily.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + snowflake_warehouse="CHAINLINK", + database="chainlink", + schema="raw", + alias="fact_polygon_vrf_rewards_daily", + ) +}} +{{ chainlink_vrf_rewards_daily('polygon') }} \ No newline at end of file From a050946dc03ae39a284cfca1d53e5a39e0837989 Mon Sep 17 00:00:00 2001 From: alexwes Date: Fri, 12 Jul 2024 09:32:46 -0400 Subject: [PATCH 036/213] Alw akash dates fix (#290) --- .../projects/akash/core/ez_akash_metrics.sql | 122 ++++++++++-------- 1 file changed, 70 insertions(+), 52 deletions(-) diff --git a/models/projects/akash/core/ez_akash_metrics.sql b/models/projects/akash/core/ez_akash_metrics.sql index 26d9a03b..25168851 100644 --- a/models/projects/akash/core/ez_akash_metrics.sql +++ b/models/projects/akash/core/ez_akash_metrics.sql @@ -8,55 +8,73 @@ ) }} -with - active_providers as (select * from {{ ref("fact_akash_active_providers_silver") }}), - active_leases as (select * from {{ ref("fact_akash_active_leases_silver") }}), - new_leases as (select * from {{ ref("fact_akash_new_leases_silver") }}), - compute_fees_native as ( - select * from {{ ref("fact_akash_compute_fees_native_silver") }} - ), - compute_fees_usdc as ( - select * from {{ ref("fact_akash_compute_fees_usdc_silver") }} - ), - compute_fees_total_usd as ( - select * from {{ ref("fact_akash_compute_fees_total_usd_silver") }} - ), - validator_fees_native as ( - select * from {{ ref("fact_akash_validator_fees_native_silver") }} - ), - validator_fees as (select * from {{ ref("fact_akash_validator_fees_silver") }}), - total_fees as (select * from {{ ref("fact_akash_total_fees_silver") }}), - revenue as (select * from {{ ref("fact_akash_revenue_silver") }}), - burns as (select * from {{ ref("fact_akash_burns_native_silver") }}), - mints as (select * from {{ ref("fact_akash_mints_silver") }}) - -select - active_leases.date, - 'akash' as chain, - coalesce(active_leases.active_leases, 0) as active_leases, - coalesce(active_providers.active_providers, 0) as active_providers, - coalesce(new_leases.new_leases, 0) as new_leases, - (coalesce(compute_fees_native.compute_fees_native, 0)) / 1e6 as compute_fees_native, - (coalesce(compute_fees_usdc.compute_fees_usdc, 0)) / 1e6 as compute_fees_usdc, - (coalesce(compute_fees_total_usd.compute_fees_total_usd, 0)) - / 1e6 as compute_fees_total_usd, - coalesce(validator_fees_native.validator_fees_native, 0) as validator_fees_native, - coalesce(validator_fees.validator_fees, 0) as validator_fees, - coalesce(total_fees.total_fees, 0) as total_fees, - coalesce(revenue.revenue, 0) as revenue, - coalesce(burns.total_burned_native, 0) as total_burned_native, - coalesce(mints.mints, 0) as mints -from active_leases -full join active_providers on active_leases.date = active_providers.date -full join new_leases on active_leases.date = new_leases.date -full join compute_fees_native on active_leases.date = compute_fees_native.date -full join compute_fees_usdc on active_leases.date = compute_fees_usdc.date -full join compute_fees_total_usd on active_leases.date = compute_fees_total_usd.date -full join validator_fees_native on active_leases.date = validator_fees_native.date -full join validator_fees on active_leases.date = validator_fees.date -full join total_fees on active_leases.date = total_fees.date -full join revenue on active_leases.date = revenue.date -full join burns on active_leases.date = burns.date -full join mints on active_leases.date = mints.date -where active_leases.date < to_date(sysdate()) -order by date desc +WITH +active_providers AS ( + SELECT * FROM {{ ref("fact_akash_active_providers_silver") }} +) + +, active_leases AS (SELECT * FROM {{ ref("fact_akash_active_leases_silver") }}) + +, new_leases AS (SELECT * FROM {{ ref("fact_akash_new_leases_silver") }}) + +, compute_fees_native AS ( + SELECT * FROM {{ ref("fact_akash_compute_fees_native_silver") }} +) + +, compute_fees_usdc AS ( + SELECT * FROM {{ ref("fact_akash_compute_fees_usdc_silver") }} +) + +, compute_fees_total_usd AS ( + SELECT * FROM {{ ref("fact_akash_compute_fees_total_usd_silver") }} +) + +, validator_fees_native AS ( + SELECT * FROM {{ ref("fact_akash_validator_fees_native_silver") }} +) + +, validator_fees AS (SELECT * FROM {{ ref("fact_akash_validator_fees_silver") }} +) + +, total_fees AS (SELECT * FROM {{ ref("fact_akash_total_fees_silver") }}) + +, revenue AS (SELECT * FROM {{ ref("fact_akash_revenue_silver") }}) + +, mints AS (SELECT * FROM {{ ref("fact_akash_mints_silver") }}) + +, burns AS (SELECT * FROM {{ ref("fact_akash_burns_native_silver") }}) + + +SELECT + mints.date + , 'akash' AS chain + , coalesce(active_leases.active_leases, 0) AS active_leases + , coalesce(active_providers.active_providers, 0) AS active_providers + , coalesce(new_leases.new_leases, 0) AS new_leases + , (coalesce(compute_fees_native.compute_fees_native, 0)) + / 1e6 AS compute_fees_native + , (coalesce(compute_fees_usdc.compute_fees_usdc, 0)) + / 1e6 AS compute_fees_usdc + , (coalesce(compute_fees_total_usd.compute_fees_total_usd, 0)) + / 1e6 AS compute_fees_total_usd + , coalesce(validator_fees_native.validator_fees_native, 0) + AS validator_fees_native + , coalesce(validator_fees.validator_fees, 0) AS validator_fees + , coalesce(total_fees.total_fees, 0) AS total_fees + , coalesce(revenue.revenue, 0) AS revenue + , coalesce(burns.total_burned_native, 0) AS total_burned_native + , coalesce(mints.mints, 0) AS mints +FROM mints +LEFT JOIN active_providers ON mints.date = active_providers.date +LEFT JOIN new_leases ON mints.date = new_leases.date +LEFT JOIN compute_fees_native ON mints.date = compute_fees_native.date +LEFT JOIN compute_fees_usdc ON mints.date = compute_fees_usdc.date +LEFT JOIN compute_fees_total_usd ON mints.date = compute_fees_total_usd.date +LEFT JOIN validator_fees_native ON mints.date = validator_fees_native.date +LEFT JOIN validator_fees ON mints.date = validator_fees.date +LEFT JOIN total_fees ON mints.date = total_fees.date +LEFT JOIN revenue ON mints.date = revenue.date +LEFT JOIN burns ON mints.date = burns.date +LEFT JOIN active_leases ON mints.date = active_leases.date +WHERE mints.date < to_date(sysdate()) +ORDER BY date DESC From 435e7c5c76ea535d7fc81b5142187e144575e9f1 Mon Sep 17 00:00:00 2001 From: alexwes Date: Fri, 12 Jul 2024 09:33:00 -0400 Subject: [PATCH 037/213] Alw avax fees fix (#289) --- ...rm_avalanche_subnets_fundamental_data.sql} | 24 +++++++++++++++---- models/staging/beam/__beam__sources.yml | 1 + .../beam/fact_beam_fundamental_metrics.sql | 2 +- models/staging/dexalot/__dexalot__sources.yml | 1 + .../fact_dexalot_fundamental_metrics.sql | 2 +- models/staging/dfk/__dfk__sources.yml | 1 + .../dfk/fact_dfk_fundamental_metrics.sql | 2 +- 7 files changed, 25 insertions(+), 8 deletions(-) rename macros/chains/{transfrom_avalanche_subnets_fundamental_data.sql => transform_avalanche_subnets_fundamental_data.sql} (66%) diff --git a/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql b/macros/chains/transform_avalanche_subnets_fundamental_data.sql similarity index 66% rename from macros/chains/transfrom_avalanche_subnets_fundamental_data.sql rename to macros/chains/transform_avalanche_subnets_fundamental_data.sql index 3a2a15c0..5c5a8f24 100644 --- a/macros/chains/transfrom_avalanche_subnets_fundamental_data.sql +++ b/macros/chains/transform_avalanche_subnets_fundamental_data.sql @@ -1,4 +1,4 @@ -{% macro transfrom_avalanche_subnets_fundamental_data(chain) %} +{% macro transform_avalanche_subnets_fundamental_data(chain) %} with dau_extraction as ( @@ -21,12 +21,25 @@ with gas_data as ( select DATEADD('day', 1, TO_TIMESTAMP(value:"timestamp")::date) as date, - value:"value"::float/POW(10, 9) as fees_native + value:"value"::float/POW(10, 9) as gas_used from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas") }}, lateral flatten(input => parse_json(source_json:"results")) where extraction_date = (select max_date from gas_extraction) ), + avg_gas_extraction as( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_avg_gas_price") }} + ), + avg_gas_price_data as ( + select + DATEADD('day', 1, TO_TIMESTAMP(value:"timestamp")::date) as date, + value:"value"::float as avg_gas_price + from + {{ source("PROD_LANDING", "raw_" ~ chain ~ "_avg_gas_price") }}, + lateral flatten(input => parse_json(source_json:"results")) + where extraction_date = (select max_date from avg_gas_extraction) + ), txns_extraction as ( select max(extraction_date) as max_date from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }} @@ -41,14 +54,15 @@ with where extraction_date = (select max_date from txns_extraction) ) - SELECT + SELECT coalesce(txns.date, dau.date, gas.date) as date , txns , dau - , fees_native + , gas_used * avg_gas_price as fees_native , '{{ chain }}' as chain FROM txns_data txns FULL JOIN dau_data dau ON txns.date = dau.date FULL JOIN gas_data gas ON txns.date = gas.date - where coalesce(txns.date, dau.date, gas.date) < to_date(sysdate()) + FULL JOIN avg_gas_price_data avg ON txns.date = avg.date + where coalesce(txns.date, dau.date, gas.date, avg.date) < to_date(sysdate()) {% endmacro %} diff --git a/models/staging/beam/__beam__sources.yml b/models/staging/beam/__beam__sources.yml index d76f5265..98e66487 100644 --- a/models/staging/beam/__beam__sources.yml +++ b/models/staging/beam/__beam__sources.yml @@ -8,3 +8,4 @@ sources: - name: raw_beam_gas - name: raw_beam_contracts - name: raw_beam_deployers + - name: raw_beam_avg_gas_price diff --git a/models/staging/beam/fact_beam_fundamental_metrics.sql b/models/staging/beam/fact_beam_fundamental_metrics.sql index d8f298f7..bcbef00b 100644 --- a/models/staging/beam/fact_beam_fundamental_metrics.sql +++ b/models/staging/beam/fact_beam_fundamental_metrics.sql @@ -1,2 +1,2 @@ {{ config(materialized="table", snowflake_warehouse="BEAM") }} -{{ transfrom_avalanche_subnets_fundamental_data('beam') }} +{{ transform_avalanche_subnets_fundamental_data('beam') }} diff --git a/models/staging/dexalot/__dexalot__sources.yml b/models/staging/dexalot/__dexalot__sources.yml index ac25d00a..38ef44f3 100644 --- a/models/staging/dexalot/__dexalot__sources.yml +++ b/models/staging/dexalot/__dexalot__sources.yml @@ -8,3 +8,4 @@ sources: - name: raw_dexalot_gas - name: raw_dexalot_contracts - name: raw_dexalot_deployers + - name: raw_dexalot_avg_gas_price diff --git a/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql index 8595fd4f..91e93dfb 100644 --- a/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql +++ b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql @@ -1,2 +1,2 @@ {{ config(materialized="table", snowflake_warehouse="DEXALOT") }} -{{ transfrom_avalanche_subnets_fundamental_data('dexalot') }} +{{ transform_avalanche_subnets_fundamental_data('dexalot') }} diff --git a/models/staging/dfk/__dfk__sources.yml b/models/staging/dfk/__dfk__sources.yml index d7f30039..41af4fd0 100644 --- a/models/staging/dfk/__dfk__sources.yml +++ b/models/staging/dfk/__dfk__sources.yml @@ -8,3 +8,4 @@ sources: - name: raw_dfk_gas - name: raw_dfk_contracts - name: raw_dfk_deployers + - name: raw_dfk_avg_gas_price diff --git a/models/staging/dfk/fact_dfk_fundamental_metrics.sql b/models/staging/dfk/fact_dfk_fundamental_metrics.sql index bd9807cb..8b12fd33 100644 --- a/models/staging/dfk/fact_dfk_fundamental_metrics.sql +++ b/models/staging/dfk/fact_dfk_fundamental_metrics.sql @@ -1,2 +1,2 @@ {{ config(materialized="table", snowflake_warehouse="DFK") }} -{{ transfrom_avalanche_subnets_fundamental_data('dfk') }} +{{ transform_avalanche_subnets_fundamental_data('dfk') }} From b83a3d0ed5078253168502e96a91ef6c52fb1c66 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Fri, 12 Jul 2024 16:42:23 -0700 Subject: [PATCH 038/213] Added from_address_adjusted for near (#294) --- macros/create_ez_transactions.sql | 2 + .../get_fundamental_data_for_chain.sql | 43 +-------------- .../staging/near/fact_near_transactions.sql | 53 ++++++++++++------- 3 files changed, 36 insertions(+), 62 deletions(-) diff --git a/macros/create_ez_transactions.sql b/macros/create_ez_transactions.sql index e0d83cb1..3eaa877b 100644 --- a/macros/create_ez_transactions.sql +++ b/macros/create_ez_transactions.sql @@ -20,6 +20,8 @@ {% if (chain not in ("tron", "starknet")) %} user_type {% else %} null as user_type {% endif %} + {% if (chain in ('near')) %} , from_address_adjusted + {% endif %} {% if (chain not in ("near", "starknet")) %} , balance_usd, native_token_balance, stablecoin_balance {% else %} diff --git a/macros/metrics/get_fundamental_data_for_chain.sql b/macros/metrics/get_fundamental_data_for_chain.sql index fc46a0c4..c59394d5 100644 --- a/macros/metrics/get_fundamental_data_for_chain.sql +++ b/macros/metrics/get_fundamental_data_for_chain.sql @@ -12,44 +12,6 @@ from min_date group by start_date ), - {% if chain in ("near") %} - near_fact_txns as ( - select * - from near_flipside.core.fact_transactions - ), - fact_transactions_delegate_extracted as ( - select - tx_hash, - tx_signer, - tx_receiver, - tx, - tx_succeeded, - block_timestamp::date as date, - case - when action.value:Delegate is not null then true - else false - end as is_delegate - from - near_fact_txns, - lateral flatten(input => tx:actions) as action - where - tx_succeeded = TRUE - ), - fact_transactions_adjusted as ( - select - tx_hash, - tx_signer, - tx_receiver, - tx, - tx_succeeded, - date, - is_delegate, - case when is_delegate = TRUE then tx_receiver else tx_signer end as adjusted_signer, - case when is_delegate = TRUE then tx_signer else tx_receiver end as adjusted_receiver, - from - fact_transactions_delegate_extracted - ), - {% endif %} {% if chain not in ("starknet") %} bot as ( select @@ -85,14 +47,11 @@ sum(gas_usd) / count(*) as avg_txn_fee, {% if chain in ("near") %} count(distinct from_address) dau, - count(distinct adjusted_signer) as adjusted_dau + count(distinct from_address_adjusted) as adjusted_dau {% else %} count(distinct from_address) dau {% endif %} from {{ chain }}.prod_raw.ez_transactions as t - {% if chain in ("near") %} - left join fact_transactions_adjusted as n on t.tx_hash = n.tx_hash - {% endif %} group by t.raw_date ) {% if (chain not in ("near", "starknet")) %} diff --git a/models/staging/near/fact_near_transactions.sql b/models/staging/near/fact_near_transactions.sql index a726cc2a..c4c47408 100644 --- a/models/staging/near/fact_near_transactions.sql +++ b/models/staging/near/fact_near_transactions.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key="tx_hash", - snowflake_warehouse="BAM_TRANSACTION_MD", + snowflake_warehouse="BAM_TRANSACTION_LG", ) }} @@ -30,23 +30,45 @@ with ), collapsed_prices as ( select price_date, max(price) as price from prices group by price_date + ), + near_transactions as ( + select + tx_hash + , case when tx:"actions"[0]:"Delegate" is not null then tx_signer else tx_receiver end as contract_address + , block_timestamp + , date_trunc('day', block_timestamp) raw_date + , tx_signer as from_address + , case when tx:"actions"[0]:"Delegate" is not null then tx_receiver else tx_signer end as from_address_adjusted + , (transaction_fee / pow(10, 24)) as tx_fee + , ((transaction_fee / pow(10, 24)) * price) gas_usd + , 'near' as chain + , case when (tx:"actions"[0]:"Transfer":"deposit" / pow(10, 24) > .02) then 'EOA' end as category + from near_flipside.core.fact_transactions as t + left join collapsed_prices on raw_date = collapsed_prices.price_date + where raw_date < to_date(sysdate()) and inserted_timestamp < to_date(sysdate()) + {% if is_incremental() %} + -- this filter will only be applied on an incremental run + and block_timestamp + >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) + {% endif %} ) select tx_hash, new_contracts.address as contract_address, block_timestamp, - date_trunc('day', block_timestamp) raw_date, - t.tx_signer as from_address, - (transaction_fee / pow(10, 24)) as tx_fee, - ((transaction_fee / pow(10, 24)) * price) gas_usd, - 'near' as chain, + raw_date, + t.from_address, + from_address_adjusted, + tx_fee, + gas_usd, + t.chain, new_contracts.name, new_contracts.app, new_contracts.friendly_name, new_contracts.sub_category, case - when (tx:"actions"[0]:"Transfer":"deposit" / pow(10, 24) > .02) - then 'EOA' + when t.category is not null + then t.category when new_contracts.category is not null then new_contracts.category else null @@ -55,15 +77,6 @@ select bots.address_life_span, bots.cur_total_txns, bots.cur_distinct_to_address_count -from near_flipside.core.fact_transactions as t -left join new_contracts on lower(t.tx_receiver) = lower(new_contracts.address) -left join collapsed_prices on raw_date = collapsed_prices.price_date -left join {{ ref("dim_near_bots") }} as bots on t.tx_signer = bots.from_address -where - raw_date < to_date(sysdate()) - and inserted_timestamp < to_date(sysdate()) - {% if is_incremental() %} - -- this filter will only be applied on an incremental run - and block_timestamp - >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) - {% endif %} +from near_transactions as t +left join new_contracts on lower(t.contract_address) = lower(new_contracts.address) +left join {{ ref("dim_near_bots") }} as bots on t.from_address = bots.from_address From f80f9acfde49b7cf6e0c600db2cfec65c47bd324 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 13 Jul 2024 09:42:05 -0400 Subject: [PATCH 039/213] Chainlink: Fixing VRF Incremental Run (#295) --- macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql b/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql index d9004e8d..5e56ea0d 100644 --- a/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql +++ b/macros/chainlink/chainlink_vrf_request_fulfilled_logs.sql @@ -8,7 +8,7 @@ with from {{ chain }}_flipside.core.ez_decoded_event_logs where topics[0]::string = '0xa2e7a402243ebda4a69ceeb3dfb682943b7a9b3ac66d6eefa8db65894009611c' {% if is_incremental() %} - and block_timestamp >= (select max(block_timestamp) from {{ this }}) + and block_timestamp >= (select max(evt_block_time) from {{ this }}) {% endif %} ) , v1_random_request_logs as ( @@ -21,7 +21,7 @@ with from {{ chain }}_flipside.core.ez_decoded_event_logs where topics[0]::string = '0x56bd374744a66d531874338def36c906e3a6cf31176eb1e9afd9f1de69725d51' {% if is_incremental() %} - and block_timestamp >= (select max(block_timestamp) from {{ this }}) + and block_timestamp >= (select max(evt_block_time) from {{ this }}) {% endif %} ) , v2_random_fulfilled_logs as ( @@ -33,7 +33,7 @@ with from {{ chain }}_flipside.core.ez_decoded_event_logs where topics[0]::string = '0x7dffc5ae5ee4e2e4df1651cf6ad329a73cebdb728f37ea0187b9b17e036756e4' {% if is_incremental() %} - and block_timestamp >= (select max(block_timestamp) from {{ this }}) + and block_timestamp >= (select max(evt_block_time) from {{ this }}) {% endif %} ) SELECT From c4840b641557dcb53bb9e41d6ab51db02ea64989 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 14 Jul 2024 12:28:16 -0400 Subject: [PATCH 040/213] USDT Stablecoin Supply: Ethereum and Tron (#296) --- .../agg_chain_stablecoin_transfers.sql | 30 +++++++++++-- ..._ethereum_stablecoin_premint_addresses.sql | 44 +++++++++++++++++++ ...fact_tron_stablecoin_premint_addresses.sql | 14 ++++++ .../fact_ethereum_stablecoin_transfers.sql | 3 +- .../fact_tron_stablecoin_transfers.sql | 1 + 5 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql create mode 100644 models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql diff --git a/macros/stablecoins/agg_chain_stablecoin_transfers.sql b/macros/stablecoins/agg_chain_stablecoin_transfers.sql index 4ef39303..d7abafa4 100644 --- a/macros/stablecoins/agg_chain_stablecoin_transfers.sql +++ b/macros/stablecoins/agg_chain_stablecoin_transfers.sql @@ -15,8 +15,16 @@ from_address, to_address, -- NULL address on TRON is different - from_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' as is_mint, - to_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' as is_burn, + from_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' + or lower(from_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_tron_stablecoin_premint_addresses") }} + ) as is_mint, + to_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' + or lower(to_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_tron_stablecoin_premint_addresses") }} + ) as is_burn, coalesce(amount, 0) as amount, case when is_mint then amount when is_burn then -1 * amount else 0 @@ -210,9 +218,23 @@ ) as from_address, coalesce(decoded_log:to, decoded_log:dst) as to_address, from_address = '0x0000000000000000000000000000000000000000' - or event_name = 'Issue' as is_mint, + or event_name = 'Issue' + {% if chain in ("ethereum") %} + or lower(from_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_ethereum_stablecoin_premint_addresses") }} + ) + {% endif %} + as is_mint, to_address = '0x0000000000000000000000000000000000000000' - or event_name = 'Redeem' as is_burn, + or event_name = 'Redeem' + {% if chain in ("ethereum") %} + or lower(to_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_ethereum_stablecoin_premint_addresses") }} + ) + {% endif %} + as is_burn, coalesce( decoded_log:value::float / pow(10, num_decimals), decoded_log:wad::float / pow(10, num_decimals), diff --git a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql new file mode 100644 index 00000000..a63cf009 --- /dev/null +++ b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql @@ -0,0 +1,44 @@ +{{ config(materialized="table") }} +-- Premint addresses for ethereum are representative of USDT that has been bridged to other L2s +select contract_address, premint_address +from + ( + values + -- USDT + -- Polygon + -- Matic Bridge + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf' + ), + -- Wormhole + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x3ee18B2214AFF97000D974cf647E7C347E8fa585' + ), + -- Axelar + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x4F4495243837681061C4743b74B3eEdf548D56A5' + ), + -- Arbitrum + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0xcEe284F754E854890e311e3280b767F80797180d' + ), + -- Optimism + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1' + ), + -- Base + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x3154Cf16ccdb4C6d922629664174b904d80F2C35' + ), + -- BSC + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503' + ) + ) as results(contract_address, premint_address) diff --git a/models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql new file mode 100644 index 00000000..7e695b4a --- /dev/null +++ b/models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql @@ -0,0 +1,14 @@ +{{ config(materialized="table") }} +-- Premint addresses for ethereum are representative of USDT that has been bridged to other L2s +select contract_address, premint_address +from + ( + values + -- USDT + -- BSC + -- tron Bridge + ( + 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', + 'TT1DyeqXaaJkt6UhVYFWUXBXknaXnBudTK' + ) + ) as results(contract_address, premint_address) diff --git a/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql b/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql index db4597c5..e22a6e44 100644 --- a/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql +++ b/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql @@ -1,6 +1,7 @@ -- depends_on: {{ ref('fact_ethereum_stablecoin_contracts') }} +-- depends_on: {{ ref('fact_ethereum_stablecoin_premint_addresses') }} {{ config( - materialized="incremental", + materialized="incremental", snowflake_warehouse="STABLECOIN_LG_2", unique_key=["tx_hash", "index"], ) diff --git a/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql b/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql index c8f209f1..9ae85e71 100644 --- a/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql +++ b/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql @@ -1,4 +1,5 @@ -- depends_on: {{ ref('fact_tron_stablecoin_contracts') }} +-- depends_on: {{ ref('fact_tron_stablecoin_premint_addresses') }} {{ config( materialized="incremental", snowflake_warehouse="STABLECOIN_LG_2", From 679ed9beca8074ca33e29416355749bc7f96bfea Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Mon, 15 Jul 2024 09:25:55 -0400 Subject: [PATCH 041/213] materialize views as tables -> you cannot do cross-region views b/c PC_DBT_DB is not shared in other geos --- models/common/daily_market_data.sql | 16 +++++++++------- models/common/ez_stablecoin_metrics.sql | 21 +++++++++++---------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/models/common/daily_market_data.sql b/models/common/daily_market_data.sql index 3bd4661e..32059609 100644 --- a/models/common/daily_market_data.sql +++ b/models/common/daily_market_data.sql @@ -3,13 +3,15 @@ snowflake_warehouse="COMMON", database="common", schema="core", + materialized='table' ) }} -select - date, - coingecko_id, - shifted_token_price_usd as price, - shifted_token_market_cap as market_cap, - shifted_token_h24_volume_usd as h24_volume -from {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_date_adjusted_gold") }} as fact_coingecko_token_date_adjusted_gold \ No newline at end of file +SELECT + date + , coingecko_id + , shifted_token_price_usd AS price + , shifted_token_market_cap AS market_cap + , shifted_token_h24_volume_usd AS h24_volume +FROM + {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_date_adjusted_gold") }} diff --git a/models/common/ez_stablecoin_metrics.sql b/models/common/ez_stablecoin_metrics.sql index b53ceb5f..4f7a4ee9 100644 --- a/models/common/ez_stablecoin_metrics.sql +++ b/models/common/ez_stablecoin_metrics.sql @@ -3,16 +3,17 @@ snowflake_warehouse="COMMON", database="common", schema="core", + materialized='table' ) }} -select - date, - total_supply, - txns, - dau, - transfer_volume, - chain, - symbol, - contract_address -from {{ source("PC_DBT_DB_UPSTREAM", "agg_daily_stablecoin_metrics") }} as agg_daily_stablecoin_metrics \ No newline at end of file +SELECT + date + , total_supply + , txns + , dau + , transfer_volume + , chain + , symbol + , contract_address +FROM {{ source("PC_DBT_DB_UPSTREAM", "agg_daily_stablecoin_metrics") }} From 9ef61de3f15e595933c6b74a99e4229fdb5e33b1 Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Mon, 22 Jul 2024 10:11:46 -0400 Subject: [PATCH 042/213] blocklist turd coin from osmosis fees --- .../osmosis/fact_osmosis_trading_fees.sql | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/models/staging/osmosis/fact_osmosis_trading_fees.sql b/models/staging/osmosis/fact_osmosis_trading_fees.sql index 524ecd48..a5689837 100644 --- a/models/staging/osmosis/fact_osmosis_trading_fees.sql +++ b/models/staging/osmosis/fact_osmosis_trading_fees.sql @@ -1,20 +1,26 @@ {{ config(materialized="view", snowflake_warehouse="OSMOSIS") }} -with - raw as ( - select - block_date::date as date, - sum(coalesce(fees_usd, 0)) as trading_fees - from osmosis_flipside.defi.fact_pool_fee_day - where currency not in ( - 'ibc/A23E590BA7E0D808706FB5085A449B3B9D6864AE4DDE7DAF936243CEBB2A3D43', - 'ibc/5F5B7DA5ECC80F6C7A8702D525BB0B74279B1F7B8EFAE36E423D68788F7F39FF', - 'factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc', - 'factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/wiha', - 'factory/osmo19hdqma2mj0vnmgcxag6ytswjnr8a3y07q7e70p/wLIBRA' +WITH +raw AS ( + SELECT + block_date::date AS date + , sum(coalesce(fees_usd, 0)) AS trading_fees + FROM osmosis_flipside.defi.fact_pool_fee_day + WHERE + currency NOT IN ( + 'ibc/A23E590BA7E0D808706FB5085A449B3B9D6864AE4DDE7DAF936243CEBB2A3D43' + , 'ibc/5F5B7DA5ECC80F6C7A8702D525BB0B74279B1F7B8EFAE36E423D68788F7F39FF' + , 'factory/osmo1z0qrq605sjgcqpylfl4aa6s90x738j7m58wyatt0tdzflg2ha26q67k743/wbtc' + , 'factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/wiha' + , 'factory/osmo19hdqma2mj0vnmgcxag6ytswjnr8a3y07q7e70p/wLIBRA' + , 'factory/osmo1q77cw0mmlluxu0wr29fcdd0tdnh78gzhkvhe4n6ulal9qvrtu43qtd0nh8/turd' ) - group by date - ) -select raw.date, 'osmosis' as chain, trading_fees -from raw -where date < to_date(sysdate()) + GROUP BY date +) + +SELECT + raw.date + , 'osmosis' AS chain + , raw.trading_fees +FROM raw +WHERE raw.date < to_date(sysdate()) From 5a408f7a542689cb7bb756696a1e3b4b6702443a Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Mon, 15 Jul 2024 10:57:25 -0400 Subject: [PATCH 043/213] Set Default Snowflake WH in dbt_project.yml (#279) --- dbt_project.yml | 134 ++++++++++++++++++ .../aave/fact_aave_lending_arbitrum_gold.sql | 2 +- .../aave/fact_aave_lending_avalanche_gold.sql | 2 +- .../aave/fact_aave_lending_base_gold.sql | 2 +- .../aave/fact_aave_lending_ethereum_gold.sql | 2 +- .../aave/fact_aave_lending_fantom_gold.sql | 2 +- .../aave/fact_aave_lending_optimism_gold.sql | 2 +- .../aave/fact_aave_lending_polygon_gold.sql | 2 +- .../aave/fact_aave_v2_lending_avalanche.sql | 2 +- .../fact_aave_v2_lending_avalanche_gold.sql | 2 +- .../aave/fact_aave_v2_lending_ethereum.sql | 2 +- .../fact_aave_v2_lending_ethereum_gold.sql | 2 +- .../aave/fact_aave_v2_lending_polygon.sql | 2 +- .../fact_aave_v2_lending_polygon_gold.sql | 2 +- .../aave/fact_aave_v3_lending_arbitrum.sql | 2 +- .../fact_aave_v3_lending_arbitrum_gold.sql | 2 +- .../aave/fact_aave_v3_lending_avalanche.sql | 2 +- .../fact_aave_v3_lending_avalanche_gold.sql | 2 +- .../aave/fact_aave_v3_lending_base.sql | 2 +- .../aave/fact_aave_v3_lending_base_gold.sql | 2 +- .../aave/fact_aave_v3_lending_ethereum.sql | 2 +- .../fact_aave_v3_lending_ethereum_gold.sql | 2 +- .../aave/fact_aave_v3_lending_fantom.sql | 2 +- .../aave/fact_aave_v3_lending_fantom_gold.sql | 2 +- .../aave/fact_aave_v3_lending_optimism.sql | 2 +- .../fact_aave_v3_lending_optimism_gold.sql | 2 +- .../aave/fact_aave_v3_lending_polygon.sql | 2 +- .../fact_aave_v3_lending_polygon_gold.sql | 2 +- ...act_acala_daa_txns_gas_gas_usd_revenue.sql | 2 +- .../fact_acala_rolling_active_addresses.sql | 1 - .../acala/fact_acala_uniq_daily_signers.sql | 2 +- .../across/fact_across_uba_transfers.sql | 1 - .../across/fact_across_v2_transfers.sql | 1 - .../across/fact_across_v3_transfers.sql | 1 - .../akash/fact_akash_active_leases_silver.sql | 1 - .../fact_akash_active_providers_silver.sql | 1 - .../fact_akash_compute_fees_native_silver.sql | 1 - ...ct_akash_compute_fees_total_usd_silver.sql | 1 - .../fact_akash_compute_fees_usdc_silver.sql | 1 - .../akash/fact_akash_new_leases_silver.sql | 1 - .../akash/fact_akash_revenue_silver.sql | 1 - .../akash/fact_akash_total_fees_silver.sql | 1 - ...act_akash_validator_fees_native_silver.sql | 1 - .../fact_akash_validator_fees_silver.sql | 1 - ...act_aptos_daa_txns_gas_gas_usd_revenue.sql | 2 +- .../arbitrum/fact_arbitrum_daily_sleep.sql | 1 - .../fact_arbitrum_p2p_native_transfers.sql | 1 - ...fact_arbitrum_p2p_stablecoin_transfers.sql | 1 - .../fact_arbitrum_p2p_token_transfers.sql | 1 - ...ct_arbitrum_p2p_token_transfers_silver.sql | 1 - .../fact_arbitrum_p2p_transfer_volume.sql | 1 - ...fact_arbitrum_rolling_active_addresses.sql | 1 - .../avalanche/dim_avalanche_sybil_address.sql | 2 +- .../avalanche/fact_avalanche_daily_sleep.sql | 1 - ...che_issuance_circulating_supply_silver.sql | 1 - .../fact_avalanche_p2p_native_transfers.sql | 1 - ...act_avalanche_p2p_stablecoin_transfers.sql | 1 - .../fact_avalanche_p2p_token_transfers.sql | 1 - ...t_avalanche_p2p_token_transfers_silver.sql | 1 - .../fact_avalanche_p2p_transfer_volume.sql | 1 - ...act_avalanche_rolling_active_addresses.sql | 1 - .../avalanche/fact_avalanche_transactions.sql | 1 - .../staging/axelar/fact_axelar_daa_txns.sql | 2 +- models/staging/base/fact_base_daily_sleep.sql | 1 - .../base/fact_base_p2p_native_transfers.sql | 1 - .../fact_base_p2p_stablecoin_transfers.sql | 1 - .../base/fact_base_p2p_token_transfers.sql | 1 - .../fact_base_p2p_token_transfers_silver.sql | 1 - .../base/fact_base_p2p_transfer_volume.sql | 1 - .../fact_base_rolling_active_addresses.sql | 1 - .../fact_benqi_avalanche_borrows_deposits.sql | 2 +- ..._benqi_avalanche_borrows_deposits_gold.sql | 2 +- ...bitcoin_addresses_with_balance_gte_one.sql | 2 +- ...in_addresses_with_balance_gte_one_gold.sql | 2 +- ...addresses_with_balance_gte_one_hundred.sql | 2 +- ...sses_with_balance_gte_one_hundred_gold.sql | 2 +- ...resses_with_balance_gte_point_zero_one.sql | 2 +- ...s_with_balance_gte_point_zero_one_gold.sql | 2 +- ...bitcoin_addresses_with_balance_gte_ten.sql | 2 +- ...in_addresses_with_balance_gte_ten_gold.sql | 2 +- models/staging/bitcoin/fact_bitcoin_daa.sql | 2 +- .../staging/bitcoin/fact_bitcoin_daa_gold.sql | 2 +- .../bitcoin/fact_bitcoin_fees_revenue.sql | 2 - .../fact_bitcoin_fees_revenue_gold.sql | 2 +- .../bitcoin/fact_bitcoin_hodl_wave.sql | 2 +- .../bitcoin/fact_bitcoin_hodl_wave_gold.sql | 2 +- ...oin_issuance_circulating_supply_silver.sql | 1 - .../bitcoin/fact_bitcoin_miner_fees.sql | 2 +- .../bitcoin/fact_bitcoin_miner_fees_gold.sql | 2 +- .../fact_bitcoin_nft_trading_volume.sql | 2 +- models/staging/bitcoin/fact_bitcoin_txns.sql | 2 +- .../bitcoin/fact_bitcoin_txns_gold.sql | 2 +- .../staging/blast/fact_blast_daily_sleep.sql | 1 - .../fact_blast_rolling_active_addresses.sql | 1 - models/staging/cardano/fact_cardano_daa.sql | 2 +- .../cardano/fact_cardano_fees_and_revenue.sql | 2 +- .../fact_cardano_nft_trading_volume.sql | 2 +- models/staging/cardano/fact_cardano_txns.sql | 2 +- models/staging/cctp/fact_cctp_flows.sql | 1 - models/staging/cctp/fact_cctp_transfers.sql | 1 - .../fact_celestia_fees_for_blobs_silver.sql | 2 - .../celestia/fact_celestia_fees_usd.sql | 1 - .../celestia/fact_celestia_mints_silver.sql | 2 - ..._celestia_namespaces_blob_sizes_silver.sql | 2 - ...act_celestia_txn_count_and_fees_silver.sql | 2 - models/staging/celo/fact_celo_blocks.sql | 1 - ...o_dau_txns_gas_usd_revenue_avg_txn_fee.sql | 2 +- .../staging/celo/fact_celo_decoded_events.sql | 2 +- .../celo/fact_celo_epoch_reward_events.sql | 1 - models/staging/celo/fact_celo_events.sql | 1 - .../celo/fact_celo_token_transfers.sql | 2 +- .../staging/celo/fact_celo_transactions.sql | 1 - .../fact_coinbase_staked_eth_count.sql | 2 +- ...e_staked_eth_count_with_usd_and_change.sql | 2 +- .../fact_compound_lending_arbitrum_gold.sql | 2 +- .../fact_compound_lending_base_gold.sql | 2 +- .../fact_compound_lending_ethereum_gold.sql | 2 +- .../fact_compound_lending_polygon_gold.sql | 2 +- .../fact_compound_v2_lending_ethereum.sql | 2 +- ...fact_compound_v2_lending_ethereum_gold.sql | 2 +- .../fact_compound_v3_lending_arbitrum.sql | 2 +- ...fact_compound_v3_lending_arbitrum_gold.sql | 2 +- .../fact_compound_v3_lending_base.sql | 2 +- .../fact_compound_v3_lending_base_gold.sql | 2 +- .../fact_compound_v3_lending_ethereum.sql | 2 +- ...fact_compound_v3_lending_ethereum_gold.sql | 2 +- .../fact_compound_v3_lending_polygon.sql | 2 +- .../fact_compound_v3_lending_polygon_gold.sql | 2 +- .../staging/cosmoshub/fact_cosmoshub_daa.sql | 2 +- .../fact_cosmoshub_fees_and_revenue.sql | 2 +- .../staging/cosmoshub/fact_cosmoshub_txns.sql | 2 +- models/staging/curve/dim_curve_pools_gold.sql | 2 +- ...t_curve_arbitrum_daily_trading_metrics.sql | 2 +- .../curve/fact_curve_arbitrum_dex_swaps.sql | 2 +- .../curve/fact_curve_arbitrum_tvl_by_pool.sql | 2 +- ..._curve_avalanche_daily_trading_metrics.sql | 2 +- .../curve/fact_curve_avalanche_dex_swaps.sql | 2 +- .../fact_curve_avalanche_tvl_by_pool.sql | 2 +- ...t_curve_ethereum_daily_trading_metrics.sql | 2 +- .../curve/fact_curve_ethereum_dex_swaps.sql | 2 +- .../curve/fact_curve_ethereum_tvl_by_pool.sql | 2 +- ...t_curve_optimism_daily_trading_metrics.sql | 2 +- .../curve/fact_curve_optimism_dex_swaps.sql | 2 +- .../curve/fact_curve_optimism_tvl_by_pool.sql | 2 +- ...ct_curve_polygon_daily_trading_metrics.sql | 2 +- .../curve/fact_curve_polygon_dex_swaps.sql | 2 +- .../curve/fact_curve_polygon_tvl_by_pool.sql | 2 +- .../fact_dexalot_fundamental_metrics.sql | 2 +- .../dfk/fact_dfk_fundamental_metrics.sql | 2 +- .../ethereum/fact_ethereum_da_metrics.sql | 1 - .../ethereum/fact_ethereum_daily_sleep.sql | 1 - .../fact_ethereum_p2p_native_transfers.sql | 1 - ...fact_ethereum_rolling_active_addresses.sql | 1 - .../staging/fantom/fact_fantom_contracts.sql | 2 +- models/staging/fantom/fact_fantom_daa.sql | 2 +- .../fact_fantom_gas_gas_usd_fees_revenue.sql | 2 +- .../fact_fantom_rolling_active_addresses.sql | 1 - models/staging/fantom/fact_fantom_txns.sql | 2 +- .../fact_fantom_uniq_daily_addresses.sql | 2 +- models/staging/flow/fact_flow_daa_txns.sql | 2 +- models/staging/flow/fact_flow_fees_revs.sql | 2 +- .../flow/fact_flow_nft_trading_volume.sql | 2 +- .../frax/fact_frax_staked_eth_count.sql | 2 +- ...x_staked_eth_count_with_USD_and_change.sql | 2 +- models/staging/fuse/fact_fuse_daa.sql | 2 +- .../fuse/fact_fuse_daa_txns_gas_gas_usd.sql | 2 +- models/staging/fuse/fact_fuse_gas_gas_usd.sql | 2 +- models/staging/fuse/fact_fuse_txns.sql | 2 +- models/staging/gnosis/fact_gnosis_blocks.sql | 2 +- .../fact_gnosis_daa_txns_gas_gas_usd.sql | 2 +- .../fact_immutable_x_nft_trading_volume.sql | 2 +- .../fact_injective_daily_txns_silver.sql | 2 - .../injective/fact_injective_dau_silver.sql | 1 - .../fact_injective_fees_native_all_silver.sql | 2 - .../fact_injective_fees_native_silver.sql | 2 - .../fact_injective_fees_usd_silver.sql | 2 - .../injective/fact_injective_mints_silver.sql | 2 - .../fact_injective_revenue_native_silver.sql | 2 - .../fact_injective_revenue_silver.sql | 2 - .../lido/fact_lido_staked_eth_count.sql | 2 +- models/staging/linea/fact_linea_daa.sql | 2 +- .../linea/fact_linea_gas_gas_usd_revenue.sql | 2 +- .../staging/linea/fact_linea_transactions.sql | 2 +- models/staging/linea/fact_linea_txns.sql | 2 +- models/staging/mantle/fact_mantle_daa.sql | 2 +- .../staging/mantle/fact_mantle_expenses.sql | 2 +- models/staging/mantle/fact_mantle_gas.sql | 2 +- models/staging/mantle/fact_mantle_txns.sql | 2 +- .../mantle/fact_meth_staked_eth_count.sql | 2 +- ...h_staked_eth_count_with_USD_and_change.sql | 2 +- .../fact_moonwell_base_borrows_deposits.sql | 2 +- ...ct_moonwell_base_borrows_deposits_gold.sql | 2 +- .../multiversx/fact_multiversx_daa.sql | 2 +- .../multiversx/fact_multiversx_txns.sql | 2 +- models/staging/near/fact_near_da_metrics.sql | 1 - .../near/fact_near_p2p_native_transfers.sql | 1 - .../fact_near_p2p_stablecoin_transfers.sql | 1 - .../near/fact_near_p2p_token_transfers.sql | 1 - .../fact_near_p2p_token_transfers_silver.sql | 1 - .../near/fact_near_p2p_transfer_volume.sql | 1 - .../fact_near_rolling_active_addresses.sql | 1 - .../optimism/fact_optimism_daily_sleep.sql | 1 - .../fact_optimism_p2p_native_transfers.sql | 1 - ...fact_optimism_p2p_stablecoin_transfers.sql | 1 - .../fact_optimism_p2p_token_transfers.sql | 1 - ...ct_optimism_p2p_token_transfers_silver.sql | 1 - .../fact_optimism_p2p_transfer_volume.sql | 1 - ...fact_optimism_rolling_active_addresses.sql | 1 - .../staging/osmosis/fact_osmosis_daa_txns.sql | 2 +- .../osmosis/fact_osmosis_gas_gas_usd.sql | 2 +- .../fact_osmosis_gas_gas_usd_fees_revenue.sql | 2 +- .../osmosis/fact_osmosis_trading_fees.sql | 2 +- ...fact_pancakeswap_v2_arbitrum_dex_swaps.sql | 1 - ...itrum_trading_vol_fees_traders_by_pool.sql | 1 - ...ct_pancakeswap_v2_arbitrum_tvl_by_pool.sql | 2 +- .../fact_pancakeswap_v2_base_dex_swaps.sql | 1 - ..._base_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_pancakeswap_v2_base_tvl_by_pool.sql | 2 +- .../fact_pancakeswap_v2_bsc_dex_swaps.sql | 1 - ...2_bsc_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_pancakeswap_v2_bsc_tvl_by_pool.sql | 2 +- ...fact_pancakeswap_v2_ethereum_dex_swaps.sql | 1 - ...ereum_trading_vol_fees_traders_by_pool.sql | 1 - ...ct_pancakeswap_v2_ethereum_tvl_by_pool.sql | 2 +- ...fact_pancakeswap_v3_arbitrum_dex_swaps.sql | 1 - ...itrum_trading_vol_fees_traders_by_pool.sql | 1 - ...ct_pancakeswap_v3_arbitrum_tvl_by_pool.sql | 2 +- .../fact_pancakeswap_v3_base_dex_swaps.sql | 1 - ..._base_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_pancakeswap_v3_base_tvl_by_pool.sql | 2 +- .../fact_pancakeswap_v3_bsc_dex_swaps.sql | 1 - ...3_bsc_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_pancakeswap_v3_bsc_tvl_by_pool.sql | 2 +- ...fact_pancakeswap_v3_ethereum_dex_swaps.sql | 1 - ...ereum_trading_vol_fees_traders_by_pool.sql | 1 - ...ct_pancakeswap_v3_ethereum_tvl_by_pool.sql | 2 +- .../fact_parallel_finance_daa.sql | 2 +- ..._parallel_finance_daa_gas_gas_usd_txns.sql | 2 +- .../fact_parallel_finance_gas_gas_usd.sql | 2 +- .../fact_parallel_finance_txns.sql | 2 +- ..._polkadot_daa_txns_gas_gas_usd_revenue.sql | 2 +- ...fact_polkadot_rolling_active_addresses.sql | 1 - .../fact_polkadot_uniq_daily_signers.sql | 2 +- .../fact_polygon_rolling_active_addresses.sql | 1 - .../fact_quickswap_polygon_dex_swaps.sql | 1 - ...lygon_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_quickswap_polygon_tvl_by_pool.sql | 2 +- ...radiant_arbitrum_borrows_deposits_gold.sql | 2 +- ...fact_radiant_bsc_borrows_deposits_gold.sql | 2 +- ...radiant_ethereum_borrows_deposits_gold.sql | 2 +- ...t_radiant_v2_arbitrum_borrows_deposits.sql | 2 +- .../fact_radiant_v2_bsc_borrows_deposits.sql | 2 +- ...t_radiant_v2_ethereum_borrows_deposits.sql | 2 +- .../fact_rainbow_bridge_flows.sql | 1 - .../fact_rainbow_bridge_transfers.sql | 1 - .../fact_rocketpool_staked_eth_count.sql | 2 +- ...l_staked_eth_count_with_USD_and_change.sql | 2 +- models/staging/scroll/fact_scroll_daa.sql | 2 +- .../fact_scroll_gas_gas_usd_revenue.sql | 2 +- models/staging/scroll/fact_scroll_txns.sql | 2 +- ...eamless_protocol_base_borrows_deposits.sql | 2 +- ...ss_protocol_base_borrows_deposits_gold.sql | 2 +- .../sei/fact_sei_avg_block_time_silver.sql | 2 +- .../fact_sei_daa_txns_gas_gas_usd_revenue.sql | 2 +- .../fact_sei_evm_avg_block_time_silver.sql | 1 - ...act_sei_evm_fundamental_metrics_silver.sql | 1 - .../solana/dim_solana_sybil_address.sql | 2 +- .../solana/fact_solana_daily_sleep.sql | 1 - .../fact_solana_p2p_native_transfers.sql | 1 - .../fact_solana_p2p_stablecoin_transfers.sql | 1 - .../fact_solana_p2p_token_transfers.sql | 2 +- ...fact_solana_p2p_token_transfers_silver.sql | 2 +- .../fact_solana_p2p_transfer_volume.sql | 2 +- .../fact_solana_rolling_active_addresses.sql | 2 +- .../fact_sonne_base_borrows_deposits.sql | 2 +- .../fact_sonne_base_borrows_deposits_gold.sql | 2 +- .../fact_sonne_optimism_borrows_deposits.sql | 2 +- ...t_sonne_optimism_borrows_deposits_gold.sql | 2 +- .../fact_spark_ethereum_borrows_deposits.sql | 2 +- ...t_spark_ethereum_borrows_deposits_gold.sql | 2 +- .../fact_spark_gnosis_borrows_deposits.sql | 2 +- ...act_spark_gnosis_borrows_deposits_gold.sql | 2 +- .../staging/stacks/fact_stacks_daa_txns.sql | 2 - .../stacks/fact_stacks_native_fees.sql | 2 - .../stacks/fact_stacks_transactions.sql | 2 +- .../stader/fact_ethx_staked_eth_count.sql | 2 +- ...x_staked_eth_count_with_usd_and_change.sql | 2 +- .../fact_stakewise_staked_eth_count.sql | 2 +- ...e_staked_eth_count_with_USD_and_change.sql | 2 +- models/staging/stride/fact_stride_daa.sql | 1 - .../stride/fact_stride_daa_gas_usd_txns.sql | 1 - models/staging/stride/fact_stride_gas_usd.sql | 1 - .../stride/fact_stride_uniq_daily_senders.sql | 1 - .../sui/fact_sui_rolling_active_addresses.sql | 1 - .../fact_sushiswap_v2_arbitrum_dex_swaps.sql | 1 - ...fact_sushiswap_v2_arbitrum_tvl_by_pool.sql | 2 +- ...anche_trading_vol_fees_traders_by_pool.sql | 1 - ...act_sushiswap_v2_avalanche_tvl_by_pool.sql | 2 +- .../fact_sushiswap_v2_bsc_dex_swaps.sql | 1 - .../fact_sushiswap_v2_bsc_tvl_by_pool.sql | 2 +- .../fact_sushiswap_v2_ethereum_dex_swaps.sql | 1 - ...ereum_trading_vol_fees_traders_by_pool.sql | 1 - ...fact_sushiswap_v2_ethereum_tvl_by_pool.sql | 2 +- .../fact_sushiswap_v2_gnosis_dex_swaps.sql | 1 - ...nosis_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_sushiswap_v2_gnosis_tvl_by_pool.sql | 2 +- .../dim_ethereum_sybil_address.sql | 0 .../ton/fact_ton_stablecoin_transfers.sql | 1 - .../fact_trader_joe_arbitrum_dex_swaps.sql | 1 - ...itrum_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_trader_joe_arbitrum_tvl_by_pool.sql | 2 +- .../fact_trader_joe_avalanche_dex_swaps.sql | 1 - ...anche_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_trader_joe_avalanche_tvl_by_pool.sql | 2 +- .../tron/fact_tron_p2p_native_transfers.sql | 1 - .../fact_tron_p2p_stablecoin_transfers.sql | 1 - .../tron/fact_tron_p2p_token_transfers.sql | 1 - .../fact_tron_p2p_token_transfers_silver.sql | 1 - .../tron/fact_tron_p2p_transfer_volume.sql | 1 - .../fact_uniswap_v3_arbitrum_dex_swaps.sql | 1 - ...itrum_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_uniswap_v3_avalanche_dex_swaps.sql | 1 - ...anche_trading_vol_fees_traders_by_pool.sql | 1 - .../fact_uniswap_v3_base_dex_swaps.sql | 1 - ...lygon_trading_vol_fees_traders_by_pool.sql | 1 - ...act_uwu_lend_ethereum_borrows_deposits.sql | 2 +- ...wu_lend_ethereum_borrows_deposits_gold.sql | 2 +- .../venus/fact_venus_v4_lending_bsc_gold.sql | 2 +- .../zcash/fact_zcash_gas_gas_usd_txns.sql | 2 +- .../fact_zksync_daa_txns_gas_gas_usd.sql | 2 +- models/staging/zksync/fact_zksync_revenue.sql | 2 +- .../fact_zksync_rolling_active_addresses.sql | 1 - models/staging/zora/fact_zora_daa.sql | 2 +- .../zora/fact_zora_gas_gas_usd_revenue.sql | 2 +- .../staging/zora/fact_zora_transactions.sql | 2 +- models/staging/zora/fact_zora_txns.sql | 2 +- 336 files changed, 331 insertions(+), 348 deletions(-) rename models/staging/{ethereum => sybil}/dim_ethereum_sybil_address.sql (100%) diff --git a/dbt_project.yml b/dbt_project.yml index 6ee32103..ca5a4a21 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -38,6 +38,140 @@ models: +snowflake_warehouse: "DAILY_DEFILLAMA" bam_models: +snowflake_warehouse: "DAILY_BAM" + staging: + aave: + +snowflake_warehouse: "AAVE" + acala: + +snowflake_warehouse: "ACALA" + across: + +snowflake_warehouse: "ACROSS" + akash: + +snowflake_warehouse: "AKASH" + aptos: + +snowflake_warehouse: "APTOS" + arbitrum: + +snowflake_warehouse: "ARBITRUM" + avalanche: + +snowflake_warehouse: "AVALANCHE" + axelar: + +snowflake_warehouse: "AXELAR" + base: + +snowflake_warehouse: "BASE" + benqi: + +snowflake_warehouse: "BENQI_FINANCE" + bitcoin: + +snowflake_warehouse: "BITCOIN" + blast: + +snowflake_warehouse: "BLAST" + cardano: + +snowflake_warehouse: "CARDANO" + cctp: + +snowflake_warehouse: "CCTP" + celestia: + +snowflake_warehouse: "CELESTIA" + celo: + +snowflake_warehouse: "CELO" + coinbase: + +snowflake_warehouse: "COINBASE" + compound: + +snowflake_warehouse: "COMPOUND" + cosmoshub: + +snowflake_warehouse: "COSMOSHUB" + curve: + +snowflake_warehouse: "CURVE" + dexalot: + +snowflake_warehouse: "DEXALOT" + dfk: + +snowflake_warehouse: "DFK" + ethereum: + +snowflake_warehouse: "ETHEREUM" + fantom: + +snowflake_warehouse: "FANTOM" + flow: + +snowflake_warehouse: "FLOW" + frax: + +snowflake_warehouse: "FRAX" + fuse: + +snowflake_warehouse: "FUSE" + gnosis: + +snowflake_warehouse: "GNOSIS" + immutable_x: + +snowflake_warehouse: "IMMUTABLE_X" + injective: + +snowflake_warehouse: "INJECTIVE" + lido: + +snowflake_warehouse: "LIDO" + linea: + +snowflake_warehouse: "LINEA" + mantle: + +snowflake_warehouse: "mantle" + moonwell: + +snowflake_warehouse: "MOONWELL" + multiversx: + +snowflake_warehouse: "MULTIVERSX" + optimism: + +snowflake_warehouse: "OPTIMISM" + osmosis: + +snowflake_warehouse: "OSMOSIS" + pancakeswap: + +snowflake_warehouse: "PANCAKESWAP_SM" + parallel_finance: + +snowflake_warehouse: "PARALLEL_FINANCE" + polkadot: + +snowflake_warehouse: "POLKADOT" + polygon: + +snowflake_warehouse: "POLYGON" + near: + +snowflake_warehouse: "NEAR" + quickswap: + +snowflake_warehouse: "QUICKSWAP" + radiant: + +snowflake_warehouse: "RADIANT" + rainbow_bridge: + +snowflake_warehouse: "RAINBOW_BRIDGE" + rocketpool: + +snowflake_warehouse: "ROCKETPOOL" + scroll: + +snowflake_warehouse: "SCROLL" + seamless: + +snowflake_warehouse: "SEAMLESS_PROTOCOL" + sei: + +snowflake_warehouse: "SEI" + solana: + +snowflake_warehouse: "SOLANA" + sonne: + +snowflake_warehouse: "SONNE_FINANCE" + spark: + +snowflake_warehouse: "SPARK" + stacks: + +snowflake_warehouse: "STACKS" + stader: + +snowflake_warehouse: "STADER" + stakewise: + +snowflake_warehouse: "STAKEWISE" + stride: + +snowflake_warehouse: "STRIDE" + sushiswap: + +snowflake_warehouse: "SUSHISWAP_SM" + ton: + +snowflake_warehouse: "TON" + trader_joe: + +snowflake_warehouse: "TRADER_JOE" + tron: + +snowflake_warehouse: "TRON" + # TODO: also should be UNISWAP + uniswap: + +snowflake_warehouse: "UNISWAP_SM" + uwulend: + +snowflake_warehouse: "UWULEND" + venus: + +snowflake_warehouse: "VENUS" + zcash: + +snowflake_warehouse: "ZCASH" + zksync: + +snowflake_warehouse: "ZKSYNC" + zora: + +snowflake_warehouse: "ZORA" vars: dbt_date:time_zone: "Etc/UTC" diff --git a/models/staging/aave/fact_aave_lending_arbitrum_gold.sql b/models/staging/aave/fact_aave_lending_arbitrum_gold.sql index 2aa006fc..0b0a6f34 100644 --- a/models/staging/aave/fact_aave_lending_arbitrum_gold.sql +++ b/models/staging/aave/fact_aave_lending_arbitrum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_arbitrum_gold") }} diff --git a/models/staging/aave/fact_aave_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_lending_avalanche_gold.sql index 143b9f07..f5b4a17f 100644 --- a/models/staging/aave/fact_aave_lending_avalanche_gold.sql +++ b/models/staging/aave/fact_aave_lending_avalanche_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with aave_chain_data as ( select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd diff --git a/models/staging/aave/fact_aave_lending_base_gold.sql b/models/staging/aave/fact_aave_lending_base_gold.sql index 8b24bd64..01c0e9f0 100644 --- a/models/staging/aave/fact_aave_lending_base_gold.sql +++ b/models/staging/aave/fact_aave_lending_base_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_base_gold") }} diff --git a/models/staging/aave/fact_aave_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_lending_ethereum_gold.sql index 8986a870..24afec10 100644 --- a/models/staging/aave/fact_aave_lending_ethereum_gold.sql +++ b/models/staging/aave/fact_aave_lending_ethereum_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with aave_chain_data as ( select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd diff --git a/models/staging/aave/fact_aave_lending_fantom_gold.sql b/models/staging/aave/fact_aave_lending_fantom_gold.sql index 50b9ac03..528d54f4 100644 --- a/models/staging/aave/fact_aave_lending_fantom_gold.sql +++ b/models/staging/aave/fact_aave_lending_fantom_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_fantom_gold") }} diff --git a/models/staging/aave/fact_aave_lending_optimism_gold.sql b/models/staging/aave/fact_aave_lending_optimism_gold.sql index bc024eca..ab49fff8 100644 --- a/models/staging/aave/fact_aave_lending_optimism_gold.sql +++ b/models/staging/aave/fact_aave_lending_optimism_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_optimism_gold") }} diff --git a/models/staging/aave/fact_aave_lending_polygon_gold.sql b/models/staging/aave/fact_aave_lending_polygon_gold.sql index 1efb0102..7955ac33 100644 --- a/models/staging/aave/fact_aave_lending_polygon_gold.sql +++ b/models/staging/aave/fact_aave_lending_polygon_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with aave_chain_data as ( select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd diff --git a/models/staging/aave/fact_aave_v2_lending_avalanche.sql b/models/staging/aave/fact_aave_v2_lending_avalanche.sql index ba73e0fa..5f85a273 100644 --- a/models/staging/aave/fact_aave_v2_lending_avalanche.sql +++ b/models/staging/aave/fact_aave_v2_lending_avalanche.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_aave_v2_avalanche_borrows_deposits_revenue", "avalanche", "aave_v2" diff --git a/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql index 11f3e9b7..5836b6ce 100644 --- a/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql +++ b/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v2_lending_avalanche") }} diff --git a/models/staging/aave/fact_aave_v2_lending_ethereum.sql b/models/staging/aave/fact_aave_v2_lending_ethereum.sql index 03ae1bb5..8387274f 100644 --- a/models/staging/aave/fact_aave_v2_lending_ethereum.sql +++ b/models/staging/aave/fact_aave_v2_lending_ethereum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with unioned as ( select * diff --git a/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql index 604970e6..d9144f23 100644 --- a/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql +++ b/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v2_lending_ethereum") }} diff --git a/models/staging/aave/fact_aave_v2_lending_polygon.sql b/models/staging/aave/fact_aave_v2_lending_polygon.sql index efbdfcee..28d753b2 100644 --- a/models/staging/aave/fact_aave_v2_lending_polygon.sql +++ b/models/staging/aave/fact_aave_v2_lending_polygon.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with unioned as ( select * diff --git a/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql b/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql index b610e466..f200535b 100644 --- a/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql +++ b/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v2_lending_polygon") }} diff --git a/models/staging/aave/fact_aave_v3_lending_arbitrum.sql b/models/staging/aave/fact_aave_v3_lending_arbitrum.sql index cd21eafd..52912a08 100644 --- a/models/staging/aave/fact_aave_v3_lending_arbitrum.sql +++ b/models/staging/aave/fact_aave_v3_lending_arbitrum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with unioned as ( select * diff --git a/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql b/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql index 48466013..59ba4747 100644 --- a/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_arbitrum") }} diff --git a/models/staging/aave/fact_aave_v3_lending_avalanche.sql b/models/staging/aave/fact_aave_v3_lending_avalanche.sql index 434691af..6d9c4978 100644 --- a/models/staging/aave/fact_aave_v3_lending_avalanche.sql +++ b/models/staging/aave/fact_aave_v3_lending_avalanche.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_aave_v3_avalanche_borrows_deposits_revenue", "avalanche", "aave_v3" diff --git a/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql index 6d020fea..62d15347 100644 --- a/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_avalanche") }} diff --git a/models/staging/aave/fact_aave_v3_lending_base.sql b/models/staging/aave/fact_aave_v3_lending_base.sql index 6b420c11..176038fb 100644 --- a/models/staging/aave/fact_aave_v3_lending_base.sql +++ b/models/staging/aave/fact_aave_v3_lending_base.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_aave_v3_base_borrows_deposits_revenue", "base", "aave_v3" diff --git a/models/staging/aave/fact_aave_v3_lending_base_gold.sql b/models/staging/aave/fact_aave_v3_lending_base_gold.sql index 72701b40..9ba1d354 100644 --- a/models/staging/aave/fact_aave_v3_lending_base_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_base_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_base") }} diff --git a/models/staging/aave/fact_aave_v3_lending_ethereum.sql b/models/staging/aave/fact_aave_v3_lending_ethereum.sql index 8fafed94..9c610e12 100644 --- a/models/staging/aave/fact_aave_v3_lending_ethereum.sql +++ b/models/staging/aave/fact_aave_v3_lending_ethereum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with unioned as ( select * diff --git a/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql index f34f82b6..eda6ef81 100644 --- a/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_ethereum") }} diff --git a/models/staging/aave/fact_aave_v3_lending_fantom.sql b/models/staging/aave/fact_aave_v3_lending_fantom.sql index c1a54347..18478da0 100644 --- a/models/staging/aave/fact_aave_v3_lending_fantom.sql +++ b/models/staging/aave/fact_aave_v3_lending_fantom.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} fact_aave_fork_lending( "raw_aave_v3_fantom_borrows_deposits_revenue", "fantom", "aave_v3" ) diff --git a/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql b/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql index 6a5318ed..7fefb4b2 100644 --- a/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_fantom") }} diff --git a/models/staging/aave/fact_aave_v3_lending_optimism.sql b/models/staging/aave/fact_aave_v3_lending_optimism.sql index 66b1d9c7..d5cc7a5b 100644 --- a/models/staging/aave/fact_aave_v3_lending_optimism.sql +++ b/models/staging/aave/fact_aave_v3_lending_optimism.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_aave_v3_optimism_borrows_deposits_revenue", "optimism", "aave_v3" diff --git a/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql b/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql index 47fea18c..a545d42d 100644 --- a/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_optimism") }} diff --git a/models/staging/aave/fact_aave_v3_lending_polygon.sql b/models/staging/aave/fact_aave_v3_lending_polygon.sql index abd4d602..b0e24f5a 100644 --- a/models/staging/aave/fact_aave_v3_lending_polygon.sql +++ b/models/staging/aave/fact_aave_v3_lending_polygon.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} with unioned as ( select * diff --git a/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql b/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql index 3a1db33d..af857aed 100644 --- a/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql +++ b/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AAVE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_aave_v3_lending_polygon") }} diff --git a/models/staging/acala/fact_acala_daa_txns_gas_gas_usd_revenue.sql b/models/staging/acala/fact_acala_daa_txns_gas_gas_usd_revenue.sql index 728b1eac..6c843d36 100644 --- a/models/staging/acala/fact_acala_daa_txns_gas_gas_usd_revenue.sql +++ b/models/staging/acala/fact_acala_daa_txns_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="ACALA") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/acala/fact_acala_rolling_active_addresses.sql b/models/staging/acala/fact_acala_rolling_active_addresses.sql index c5a71520..dd7ae172 100644 --- a/models/staging/acala/fact_acala_rolling_active_addresses.sql +++ b/models/staging/acala/fact_acala_rolling_active_addresses.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="ACALA", ) }} diff --git a/models/staging/acala/fact_acala_uniq_daily_signers.sql b/models/staging/acala/fact_acala_uniq_daily_signers.sql index 3eecf421..001de33c 100644 --- a/models/staging/acala/fact_acala_uniq_daily_signers.sql +++ b/models/staging/acala/fact_acala_uniq_daily_signers.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="ACALA") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/across/fact_across_uba_transfers.sql b/models/staging/across/fact_across_uba_transfers.sql index c560a91b..4938324d 100644 --- a/models/staging/across/fact_across_uba_transfers.sql +++ b/models/staging/across/fact_across_uba_transfers.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="ACROSS", ) }} diff --git a/models/staging/across/fact_across_v2_transfers.sql b/models/staging/across/fact_across_v2_transfers.sql index 452d7a72..2bf704f1 100644 --- a/models/staging/across/fact_across_v2_transfers.sql +++ b/models/staging/across/fact_across_v2_transfers.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="ACROSS", ) }} with diff --git a/models/staging/across/fact_across_v3_transfers.sql b/models/staging/across/fact_across_v3_transfers.sql index 5742e991..34344c0a 100644 --- a/models/staging/across/fact_across_v3_transfers.sql +++ b/models/staging/across/fact_across_v3_transfers.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="ACROSS", ) }} diff --git a/models/staging/akash/fact_akash_active_leases_silver.sql b/models/staging/akash/fact_akash_active_leases_silver.sql index 6902ff23..d694887b 100644 --- a/models/staging/akash/fact_akash_active_leases_silver.sql +++ b/models/staging/akash/fact_akash_active_leases_silver.sql @@ -1,4 +1,3 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_active_leases") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json("raw_akash_active_leases", "active_leases") }} diff --git a/models/staging/akash/fact_akash_active_providers_silver.sql b/models/staging/akash/fact_akash_active_providers_silver.sql index f554e95f..f4e58519 100644 --- a/models/staging/akash/fact_akash_active_providers_silver.sql +++ b/models/staging/akash/fact_akash_active_providers_silver.sql @@ -1,4 +1,3 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_active_providers") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json("raw_akash_active_providers", "active_providers") }} diff --git a/models/staging/akash/fact_akash_compute_fees_native_silver.sql b/models/staging/akash/fact_akash_compute_fees_native_silver.sql index b8a9f0f3..e3b06dff 100644 --- a/models/staging/akash/fact_akash_compute_fees_native_silver.sql +++ b/models/staging/akash/fact_akash_compute_fees_native_silver.sql @@ -1,4 +1,3 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_compute_fees_native") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json("raw_akash_compute_fees_native", "compute_fees_native") }} diff --git a/models/staging/akash/fact_akash_compute_fees_total_usd_silver.sql b/models/staging/akash/fact_akash_compute_fees_total_usd_silver.sql index 8f9fe82b..fd4dad88 100644 --- a/models/staging/akash/fact_akash_compute_fees_total_usd_silver.sql +++ b/models/staging/akash/fact_akash_compute_fees_total_usd_silver.sql @@ -1,5 +1,4 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_compute_fees_total_usd") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json( diff --git a/models/staging/akash/fact_akash_compute_fees_usdc_silver.sql b/models/staging/akash/fact_akash_compute_fees_usdc_silver.sql index a4b1e258..61a0d1c7 100644 --- a/models/staging/akash/fact_akash_compute_fees_usdc_silver.sql +++ b/models/staging/akash/fact_akash_compute_fees_usdc_silver.sql @@ -1,4 +1,3 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_compute_fees_usdc") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json("raw_akash_compute_fees_usdc", "compute_fees_usdc") }} diff --git a/models/staging/akash/fact_akash_new_leases_silver.sql b/models/staging/akash/fact_akash_new_leases_silver.sql index 947ea998..0445392f 100644 --- a/models/staging/akash/fact_akash_new_leases_silver.sql +++ b/models/staging/akash/fact_akash_new_leases_silver.sql @@ -1,4 +1,3 @@ -- depends_on: {{ source("PROD_LANDING", "raw_akash_new_leases") }} -{{ config(snowflake_warehouse="AKASH") }} {{ flatten_cloudmos_json("raw_akash_new_leases", "new_leases") }} diff --git a/models/staging/akash/fact_akash_revenue_silver.sql b/models/staging/akash/fact_akash_revenue_silver.sql index 8a3b9ec0..480038cb 100644 --- a/models/staging/akash/fact_akash_revenue_silver.sql +++ b/models/staging/akash/fact_akash_revenue_silver.sql @@ -1,4 +1,3 @@ -{{ config(snowflake_warehouse="AKASH") }} select akt.date, diff --git a/models/staging/akash/fact_akash_total_fees_silver.sql b/models/staging/akash/fact_akash_total_fees_silver.sql index 336356a6..99ea9e81 100644 --- a/models/staging/akash/fact_akash_total_fees_silver.sql +++ b/models/staging/akash/fact_akash_total_fees_silver.sql @@ -1,4 +1,3 @@ -{{ config(snowflake_warehouse="AKASH") }} select v.date, v.validator_fees + c.compute_fees_total_usd / 1e6 as total_fees from {{ref("fact_akash_validator_fees_silver")}} v diff --git a/models/staging/akash/fact_akash_validator_fees_native_silver.sql b/models/staging/akash/fact_akash_validator_fees_native_silver.sql index 3c5b7ce9..522fd433 100644 --- a/models/staging/akash/fact_akash_validator_fees_native_silver.sql +++ b/models/staging/akash/fact_akash_validator_fees_native_silver.sql @@ -1,4 +1,3 @@ -{{ config(snowflake_warehouse="AKASH") }} with max_extraction as ( diff --git a/models/staging/akash/fact_akash_validator_fees_silver.sql b/models/staging/akash/fact_akash_validator_fees_silver.sql index 01f1dc54..f80927b6 100644 --- a/models/staging/akash/fact_akash_validator_fees_silver.sql +++ b/models/staging/akash/fact_akash_validator_fees_silver.sql @@ -1,4 +1,3 @@ -{{ config(snowflake_warehouse="AKASH") }} with fees as (select * from {{ ref("fact_akash_validator_fees_native_silver")}}), diff --git a/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql b/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql index 120c19ea..cc1ce302 100644 --- a/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql +++ b/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="APTOS") }} +{{ config(materialized="table") }} with apt_prices as ({{ get_coingecko_price_with_latest("aptos") }}), single_signed_transactions as ( diff --git a/models/staging/arbitrum/fact_arbitrum_daily_sleep.sql b/models/staging/arbitrum/fact_arbitrum_daily_sleep.sql index 2c6a5708..0cbb2ed0 100644 --- a/models/staging/arbitrum/fact_arbitrum_daily_sleep.sql +++ b/models/staging/arbitrum/fact_arbitrum_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_native_transfers.sql b/models/staging/arbitrum/fact_arbitrum_p2p_native_transfers.sql index 0e2eba22..be2a2fff 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_native_transfers.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql b/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql index 56a7e0f1..d489e0a4 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers.sql b/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers.sql index efbeec4b..d0bec7d9 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers_silver.sql b/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers_silver.sql index c402efff..ce8ffc33 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers_silver.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_p2p_transfer_volume.sql b/models/staging/arbitrum/fact_arbitrum_p2p_transfer_volume.sql index 34fdf33d..34e3e82c 100644 --- a/models/staging/arbitrum/fact_arbitrum_p2p_transfer_volume.sql +++ b/models/staging/arbitrum/fact_arbitrum_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/arbitrum/fact_arbitrum_rolling_active_addresses.sql b/models/staging/arbitrum/fact_arbitrum_rolling_active_addresses.sql index 4d75602f..91824d39 100644 --- a/models/staging/arbitrum/fact_arbitrum_rolling_active_addresses.sql +++ b/models/staging/arbitrum/fact_arbitrum_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="ARBITRUM", ) }} diff --git a/models/staging/avalanche/dim_avalanche_sybil_address.sql b/models/staging/avalanche/dim_avalanche_sybil_address.sql index 1a13a697..2215e850 100644 --- a/models/staging/avalanche/dim_avalanche_sybil_address.sql +++ b/models/staging/avalanche/dim_avalanche_sybil_address.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="AVALANCHE") }} +{{ config(materialized="table") }} {{ detect_sybil("avalanche") }} diff --git a/models/staging/avalanche/fact_avalanche_daily_sleep.sql b/models/staging/avalanche/fact_avalanche_daily_sleep.sql index 251137e1..7d845591 100644 --- a/models/staging/avalanche/fact_avalanche_daily_sleep.sql +++ b/models/staging/avalanche/fact_avalanche_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_issuance_circulating_supply_silver.sql b/models/staging/avalanche/fact_avalanche_issuance_circulating_supply_silver.sql index 58b6777f..70ca82a8 100644 --- a/models/staging/avalanche/fact_avalanche_issuance_circulating_supply_silver.sql +++ b/models/staging/avalanche/fact_avalanche_issuance_circulating_supply_silver.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="AVALANCHE", ) }} -- TODO: Track already minted tokens for rewards to validators to calcualte diff --git a/models/staging/avalanche/fact_avalanche_p2p_native_transfers.sql b/models/staging/avalanche/fact_avalanche_p2p_native_transfers.sql index 06f89b54..b0a74363 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_native_transfers.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql b/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql index 48dd0cb5..ce5cf038 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_p2p_token_transfers.sql b/models/staging/avalanche/fact_avalanche_p2p_token_transfers.sql index a6ca84fc..e9b9d361 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_token_transfers.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_p2p_token_transfers_silver.sql b/models/staging/avalanche/fact_avalanche_p2p_token_transfers_silver.sql index 38a05999..f9e75300 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_token_transfers_silver.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_p2p_transfer_volume.sql b/models/staging/avalanche/fact_avalanche_p2p_transfer_volume.sql index 3eee62f6..69c214b2 100644 --- a/models/staging/avalanche/fact_avalanche_p2p_transfer_volume.sql +++ b/models/staging/avalanche/fact_avalanche_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_rolling_active_addresses.sql b/models/staging/avalanche/fact_avalanche_rolling_active_addresses.sql index 6a2cc7ec..93cda91d 100644 --- a/models/staging/avalanche/fact_avalanche_rolling_active_addresses.sql +++ b/models/staging/avalanche/fact_avalanche_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/avalanche/fact_avalanche_transactions.sql b/models/staging/avalanche/fact_avalanche_transactions.sql index cd877021..01630b1e 100644 --- a/models/staging/avalanche/fact_avalanche_transactions.sql +++ b/models/staging/avalanche/fact_avalanche_transactions.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="tx_hash", - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/axelar/fact_axelar_daa_txns.sql b/models/staging/axelar/fact_axelar_daa_txns.sql index a17188a7..f0f61c40 100644 --- a/models/staging/axelar/fact_axelar_daa_txns.sql +++ b/models/staging/axelar/fact_axelar_daa_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="AXELAR") }} +{{ config(materialized="view") }} select block_timestamp::date as date, count(distinct tx_from) as daa, diff --git a/models/staging/base/fact_base_daily_sleep.sql b/models/staging/base/fact_base_daily_sleep.sql index 0d0e8e41..46d85d0d 100644 --- a/models/staging/base/fact_base_daily_sleep.sql +++ b/models/staging/base/fact_base_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_p2p_native_transfers.sql b/models/staging/base/fact_base_p2p_native_transfers.sql index e3d9e0ca..7e5a3aba 100644 --- a/models/staging/base/fact_base_p2p_native_transfers.sql +++ b/models/staging/base/fact_base_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_p2p_stablecoin_transfers.sql b/models/staging/base/fact_base_p2p_stablecoin_transfers.sql index c3e429af..e3d0bb1b 100644 --- a/models/staging/base/fact_base_p2p_stablecoin_transfers.sql +++ b/models/staging/base/fact_base_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_p2p_token_transfers.sql b/models/staging/base/fact_base_p2p_token_transfers.sql index 896c07a8..3060507c 100644 --- a/models/staging/base/fact_base_p2p_token_transfers.sql +++ b/models/staging/base/fact_base_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_p2p_token_transfers_silver.sql b/models/staging/base/fact_base_p2p_token_transfers_silver.sql index bd0a3647..b7f19286 100644 --- a/models/staging/base/fact_base_p2p_token_transfers_silver.sql +++ b/models/staging/base/fact_base_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_p2p_transfer_volume.sql b/models/staging/base/fact_base_p2p_transfer_volume.sql index bf5f4f44..ba69e964 100644 --- a/models/staging/base/fact_base_p2p_transfer_volume.sql +++ b/models/staging/base/fact_base_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/base/fact_base_rolling_active_addresses.sql b/models/staging/base/fact_base_rolling_active_addresses.sql index 410a5d0c..b13eb1bb 100644 --- a/models/staging/base/fact_base_rolling_active_addresses.sql +++ b/models/staging/base/fact_base_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="BASE", ) }} diff --git a/models/staging/benqi/fact_benqi_avalanche_borrows_deposits.sql b/models/staging/benqi/fact_benqi_avalanche_borrows_deposits.sql index 8838f10a..9b7d6f25 100644 --- a/models/staging/benqi/fact_benqi_avalanche_borrows_deposits.sql +++ b/models/staging/benqi/fact_benqi_avalanche_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BENQI_FINANCE") }} +{{ config(materialized="table") }} {{ fact_compound_v2_fork_lending( "raw_benqi_avalanche_borrows_deposits", "avalanche", "benqi_finance" diff --git a/models/staging/benqi/fact_benqi_avalanche_borrows_deposits_gold.sql b/models/staging/benqi/fact_benqi_avalanche_borrows_deposits_gold.sql index cc6a15ae..ba65e7d3 100644 --- a/models/staging/benqi/fact_benqi_avalanche_borrows_deposits_gold.sql +++ b/models/staging/benqi/fact_benqi_avalanche_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BENQI_FINANCE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_benqi_avalanche_borrows_deposits") }} diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one.sql index 7aa7c4ea..7fc07369 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_gold.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_gold.sql index 58564af5..f3f10339 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, addresses, chain from {{ ref("fact_bitcoin_addresses_with_balance_gte_one") }} diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred.sql index c03251bc..98477876 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred_gold.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred_gold.sql index 976cc8ec..e28d2058 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_one_hundred_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, addresses, chain from {{ ref("fact_bitcoin_addresses_with_balance_gte_one_hundred") }} diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one.sql index 6beb1c0f..307e32b0 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one_gold.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one_gold.sql index 2caf7724..e39f9c40 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_point_zero_one_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, addresses, chain from {{ ref("fact_bitcoin_addresses_with_balance_gte_point_zero_one") }} diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten.sql index ab553fc3..340b3ec2 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten_gold.sql b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten_gold.sql index 5ce6771d..b303f8a6 100644 --- a/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_addresses_with_balance_gte_ten_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, addresses, chain from {{ ref("fact_bitcoin_addresses_with_balance_gte_ten") }} diff --git a/models/staging/bitcoin/fact_bitcoin_daa.sql b/models/staging/bitcoin/fact_bitcoin_daa.sql index ee6e8383..c9b9c8ab 100644 --- a/models/staging/bitcoin/fact_bitcoin_daa.sql +++ b/models/staging/bitcoin/fact_bitcoin_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_daa_gold.sql b/models/staging/bitcoin/fact_bitcoin_daa_gold.sql index 64cbc85b..42c689fb 100644 --- a/models/staging/bitcoin/fact_bitcoin_daa_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_daa_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, daa, source, chain from {{ ref("fact_bitcoin_daa") }} diff --git a/models/staging/bitcoin/fact_bitcoin_fees_revenue.sql b/models/staging/bitcoin/fact_bitcoin_fees_revenue.sql index fc035551..babf9313 100644 --- a/models/staging/bitcoin/fact_bitcoin_fees_revenue.sql +++ b/models/staging/bitcoin/fact_bitcoin_fees_revenue.sql @@ -1,5 +1,3 @@ -{{ config(snowflake_warehouse="BITCOIN") }} - with prices as ({{ get_coingecko_price_with_latest("bitcoin") }}), data as ( diff --git a/models/staging/bitcoin/fact_bitcoin_fees_revenue_gold.sql b/models/staging/bitcoin/fact_bitcoin_fees_revenue_gold.sql index 097d65aa..9d2288e5 100644 --- a/models/staging/bitcoin/fact_bitcoin_fees_revenue_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_fees_revenue_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, chain, fees, fees_native, revenue from {{ ref("fact_bitcoin_fees_revenue") }} diff --git a/models/staging/bitcoin/fact_bitcoin_hodl_wave.sql b/models/staging/bitcoin/fact_bitcoin_hodl_wave.sql index db2d475b..b7ab80ab 100644 --- a/models/staging/bitcoin/fact_bitcoin_hodl_wave.sql +++ b/models/staging/bitcoin/fact_bitcoin_hodl_wave.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_hodl_wave_gold.sql b/models/staging/bitcoin/fact_bitcoin_hodl_wave_gold.sql index 55bfdaa4..50994c95 100644 --- a/models/staging/bitcoin/fact_bitcoin_hodl_wave_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_hodl_wave_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, chain, diff --git a/models/staging/bitcoin/fact_bitcoin_issuance_circulating_supply_silver.sql b/models/staging/bitcoin/fact_bitcoin_issuance_circulating_supply_silver.sql index 1abd6396..8f2aaeb5 100644 --- a/models/staging/bitcoin/fact_bitcoin_issuance_circulating_supply_silver.sql +++ b/models/staging/bitcoin/fact_bitcoin_issuance_circulating_supply_silver.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="BITCOIN", ) }} select diff --git a/models/staging/bitcoin/fact_bitcoin_miner_fees.sql b/models/staging/bitcoin/fact_bitcoin_miner_fees.sql index 50ecdf0d..2c4171e1 100644 --- a/models/staging/bitcoin/fact_bitcoin_miner_fees.sql +++ b/models/staging/bitcoin/fact_bitcoin_miner_fees.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select trunc(block_timestamp, 'day') as date, sum(total_reward) total_reward, diff --git a/models/staging/bitcoin/fact_bitcoin_miner_fees_gold.sql b/models/staging/bitcoin/fact_bitcoin_miner_fees_gold.sql index 60513d57..d24073ec 100644 --- a/models/staging/bitcoin/fact_bitcoin_miner_fees_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_miner_fees_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, total_reward, block_reward, fees, chain from {{ ref("fact_bitcoin_miner_fees") }} diff --git a/models/staging/bitcoin/fact_bitcoin_nft_trading_volume.sql b/models/staging/bitcoin/fact_bitcoin_nft_trading_volume.sql index 9bab4b4c..bda7ba0a 100644 --- a/models/staging/bitcoin/fact_bitcoin_nft_trading_volume.sql +++ b/models/staging/bitcoin/fact_bitcoin_nft_trading_volume.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( diff --git a/models/staging/bitcoin/fact_bitcoin_txns.sql b/models/staging/bitcoin/fact_bitcoin_txns.sql index 2345287d..f4600fa6 100644 --- a/models/staging/bitcoin/fact_bitcoin_txns.sql +++ b/models/staging/bitcoin/fact_bitcoin_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/bitcoin/fact_bitcoin_txns_gold.sql b/models/staging/bitcoin/fact_bitcoin_txns_gold.sql index 2c403057..d749b47a 100644 --- a/models/staging/bitcoin/fact_bitcoin_txns_gold.sql +++ b/models/staging/bitcoin/fact_bitcoin_txns_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="BITCOIN") }} +{{ config(materialized="table") }} select date, txns, source, chain from {{ ref("fact_bitcoin_txns") }} diff --git a/models/staging/blast/fact_blast_daily_sleep.sql b/models/staging/blast/fact_blast_daily_sleep.sql index a5e11623..945b7389 100644 --- a/models/staging/blast/fact_blast_daily_sleep.sql +++ b/models/staging/blast/fact_blast_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="BLAST", ) }} diff --git a/models/staging/blast/fact_blast_rolling_active_addresses.sql b/models/staging/blast/fact_blast_rolling_active_addresses.sql index 1c1204ca..9a4f69dd 100644 --- a/models/staging/blast/fact_blast_rolling_active_addresses.sql +++ b/models/staging/blast/fact_blast_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="BLAST", ) }} diff --git a/models/staging/cardano/fact_cardano_daa.sql b/models/staging/cardano/fact_cardano_daa.sql index a967bd23..4556197c 100644 --- a/models/staging/cardano/fact_cardano_daa.sql +++ b/models/staging/cardano/fact_cardano_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="CARDANO") }} +{{ config(materialized="view") }} WITH cardano_data AS ( SELECT parse_json(source_json) AS data diff --git a/models/staging/cardano/fact_cardano_fees_and_revenue.sql b/models/staging/cardano/fact_cardano_fees_and_revenue.sql index 1873d9fd..e0e9bc99 100644 --- a/models/staging/cardano/fact_cardano_fees_and_revenue.sql +++ b/models/staging/cardano/fact_cardano_fees_and_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="CARDANO") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/cardano/fact_cardano_nft_trading_volume.sql b/models/staging/cardano/fact_cardano_nft_trading_volume.sql index 2006f188..31ed2c9f 100644 --- a/models/staging/cardano/fact_cardano_nft_trading_volume.sql +++ b/models/staging/cardano/fact_cardano_nft_trading_volume.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="CARDANO") }} +{{ config(materialized="table") }} with max_extraction as ( diff --git a/models/staging/cardano/fact_cardano_txns.sql b/models/staging/cardano/fact_cardano_txns.sql index 5967756d..268bbfe3 100644 --- a/models/staging/cardano/fact_cardano_txns.sql +++ b/models/staging/cardano/fact_cardano_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="CARDANO") }} +{{ config(materialized="view") }} WITH cardano_data AS ( SELECT parse_json(source_json) AS data diff --git a/models/staging/cctp/fact_cctp_flows.sql b/models/staging/cctp/fact_cctp_flows.sql index 8659bf3d..d8b4c8aa 100644 --- a/models/staging/cctp/fact_cctp_flows.sql +++ b/models/staging/cctp/fact_cctp_flows.sql @@ -1,6 +1,5 @@ {{ config( materialized="table", - snowflake_warehouse="CCTP", )}} with chain_id_map as ( diff --git a/models/staging/cctp/fact_cctp_transfers.sql b/models/staging/cctp/fact_cctp_transfers.sql index bbb41083..5b009de8 100644 --- a/models/staging/cctp/fact_cctp_transfers.sql +++ b/models/staging/cctp/fact_cctp_transfers.sql @@ -1,6 +1,5 @@ {{ config( materialized="incremental", - snowflake_warehouse="CCTP", )}} with tranfers as ( diff --git a/models/staging/celestia/fact_celestia_fees_for_blobs_silver.sql b/models/staging/celestia/fact_celestia_fees_for_blobs_silver.sql index 7235b218..d887b401 100644 --- a/models/staging/celestia/fact_celestia_fees_for_blobs_silver.sql +++ b/models/staging/celestia/fact_celestia_fees_for_blobs_silver.sql @@ -1,5 +1,3 @@ -{{ config(snowflake_warehouse="CELESTIA") }} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/celestia/fact_celestia_fees_usd.sql b/models/staging/celestia/fact_celestia_fees_usd.sql index a0b83c88..38b448ab 100644 --- a/models/staging/celestia/fact_celestia_fees_usd.sql +++ b/models/staging/celestia/fact_celestia_fees_usd.sql @@ -1,4 +1,3 @@ -{{ config(snowflake_warehouse="CELESTIA") }} with fees as ( SELECT date, diff --git a/models/staging/celestia/fact_celestia_mints_silver.sql b/models/staging/celestia/fact_celestia_mints_silver.sql index a38e8bf8..7d2c745d 100644 --- a/models/staging/celestia/fact_celestia_mints_silver.sql +++ b/models/staging/celestia/fact_celestia_mints_silver.sql @@ -1,5 +1,3 @@ -{{ config(snowflake_warehouse="CELESTIA") }} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql b/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql index 74bf0865..97be7b8e 100644 --- a/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql +++ b/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql @@ -1,5 +1,3 @@ -{{ config(snowflake_warehouse="CELESTIA") }} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/celestia/fact_celestia_txn_count_and_fees_silver.sql b/models/staging/celestia/fact_celestia_txn_count_and_fees_silver.sql index b705d803..b01f7e71 100644 --- a/models/staging/celestia/fact_celestia_txn_count_and_fees_silver.sql +++ b/models/staging/celestia/fact_celestia_txn_count_and_fees_silver.sql @@ -1,5 +1,3 @@ -{{ config(snowflake_warehouse="CELESTIA") }} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/celo/fact_celo_blocks.sql b/models/staging/celo/fact_celo_blocks.sql index f62698b4..dfd6bb07 100644 --- a/models/staging/celo/fact_celo_blocks.sql +++ b/models/staging/celo/fact_celo_blocks.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="block_hash", - snowflake_warehouse="CELO", ) }} {{ diff --git a/models/staging/celo/fact_celo_dau_txns_gas_usd_revenue_avg_txn_fee.sql b/models/staging/celo/fact_celo_dau_txns_gas_usd_revenue_avg_txn_fee.sql index 5e7602eb..d5d34135 100644 --- a/models/staging/celo/fact_celo_dau_txns_gas_usd_revenue_avg_txn_fee.sql +++ b/models/staging/celo/fact_celo_dau_txns_gas_usd_revenue_avg_txn_fee.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="CELO") }} +{{ config(materialized="table") }} with dau_txns as ( select diff --git a/models/staging/celo/fact_celo_decoded_events.sql b/models/staging/celo/fact_celo_decoded_events.sql index bdc51773..aec722d1 100644 --- a/models/staging/celo/fact_celo_decoded_events.sql +++ b/models/staging/celo/fact_celo_decoded_events.sql @@ -1,3 +1,3 @@ -{{ config(materialized="incremental", snowflake_warehouse="CELO", unique_key=["transaction_hash", "event_index"]) }} +{{ config(materialized="incremental", unique_key=["transaction_hash", "event_index"]) }} {{ decode_events("celo") }} diff --git a/models/staging/celo/fact_celo_epoch_reward_events.sql b/models/staging/celo/fact_celo_epoch_reward_events.sql index f1e1c5f6..97f7e7c3 100644 --- a/models/staging/celo/fact_celo_epoch_reward_events.sql +++ b/models/staging/celo/fact_celo_epoch_reward_events.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["transaction_hash", "event_index"], - snowflake_warehouse="CELO", ) }} with diff --git a/models/staging/celo/fact_celo_events.sql b/models/staging/celo/fact_celo_events.sql index 8ce58db6..624c71c8 100644 --- a/models/staging/celo/fact_celo_events.sql +++ b/models/staging/celo/fact_celo_events.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["transaction_hash", "event_index"], - snowflake_warehouse="CELO", ) }} {{ diff --git a/models/staging/celo/fact_celo_token_transfers.sql b/models/staging/celo/fact_celo_token_transfers.sql index 76bd55f9..e70bc87e 100644 --- a/models/staging/celo/fact_celo_token_transfers.sql +++ b/models/staging/celo/fact_celo_token_transfers.sql @@ -1,3 +1,3 @@ -{{ config(materialized="incremental", snowflake_warehouse="CELO", unique_key=["transaction_hash", "event_index"]) }} +{{ config(materialized="incremental", unique_key=["transaction_hash", "event_index"]) }} {{ token_transfer_events("celo") }} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_transactions.sql b/models/staging/celo/fact_celo_transactions.sql index 2fbe92b8..642992f1 100644 --- a/models/staging/celo/fact_celo_transactions.sql +++ b/models/staging/celo/fact_celo_transactions.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key="transaction_hash", - snowflake_warehouse="CELO", ) }} {{ diff --git a/models/staging/coinbase/fact_coinbase_staked_eth_count.sql b/models/staging/coinbase/fact_coinbase_staked_eth_count.sql index 71bf6e18..d806e3bf 100644 --- a/models/staging/coinbase/fact_coinbase_staked_eth_count.sql +++ b/models/staging/coinbase/fact_coinbase_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="COINBASE", materialized="table") }} +{{ config(materialized="table") }} with cb_eth_market_cap as ( select date, shifted_token_market_cap from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted where coingecko_id = 'coinbase-wrapped-staked-eth' and shifted_token_market_cap <> 0 diff --git a/models/staging/coinbase/fact_coinbase_staked_eth_count_with_usd_and_change.sql b/models/staging/coinbase/fact_coinbase_staked_eth_count_with_usd_and_change.sql index 2fcbf467..eef9ad03 100644 --- a/models/staging/coinbase/fact_coinbase_staked_eth_count_with_usd_and_change.sql +++ b/models/staging/coinbase/fact_coinbase_staked_eth_count_with_usd_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="COINBASE", materialized="table") }} +{{ config(materialized="table") }} select *, 'ethereum' as chain, 'cbeth' as app, 'DeFi' as category from ( diff --git a/models/staging/compound/fact_compound_lending_arbitrum_gold.sql b/models/staging/compound/fact_compound_lending_arbitrum_gold.sql index 93b0af49..60f9ef5a 100644 --- a/models/staging/compound/fact_compound_lending_arbitrum_gold.sql +++ b/models/staging/compound/fact_compound_lending_arbitrum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, 'compound' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_arbitrum_gold") }} diff --git a/models/staging/compound/fact_compound_lending_base_gold.sql b/models/staging/compound/fact_compound_lending_base_gold.sql index 59a65a1c..5fd75191 100644 --- a/models/staging/compound/fact_compound_lending_base_gold.sql +++ b/models/staging/compound/fact_compound_lending_base_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, 'compound' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_base_gold") }} diff --git a/models/staging/compound/fact_compound_lending_ethereum_gold.sql b/models/staging/compound/fact_compound_lending_ethereum_gold.sql index da2dab52..12437f97 100644 --- a/models/staging/compound/fact_compound_lending_ethereum_gold.sql +++ b/models/staging/compound/fact_compound_lending_ethereum_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} with compound_ethereum_data as ( select diff --git a/models/staging/compound/fact_compound_lending_polygon_gold.sql b/models/staging/compound/fact_compound_lending_polygon_gold.sql index 94ea4e22..3ee9045c 100644 --- a/models/staging/compound/fact_compound_lending_polygon_gold.sql +++ b/models/staging/compound/fact_compound_lending_polygon_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, 'compound' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_polygon_gold") }} diff --git a/models/staging/compound/fact_compound_v2_lending_ethereum.sql b/models/staging/compound/fact_compound_v2_lending_ethereum.sql index fe2dc4ff..657ab705 100644 --- a/models/staging/compound/fact_compound_v2_lending_ethereum.sql +++ b/models/staging/compound/fact_compound_v2_lending_ethereum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} {{ fact_compound_v2_fork_lending( "raw_compound_v2_lending_ethereum", "ethereum", "compound_v3" diff --git a/models/staging/compound/fact_compound_v2_lending_ethereum_gold.sql b/models/staging/compound/fact_compound_v2_lending_ethereum_gold.sql index 06fd6e75..9f807431 100644 --- a/models/staging/compound/fact_compound_v2_lending_ethereum_gold.sql +++ b/models/staging/compound/fact_compound_v2_lending_ethereum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v2_lending_ethereum") }} diff --git a/models/staging/compound/fact_compound_v3_lending_arbitrum.sql b/models/staging/compound/fact_compound_v3_lending_arbitrum.sql index a50f2cb4..f837f560 100644 --- a/models/staging/compound/fact_compound_v3_lending_arbitrum.sql +++ b/models/staging/compound/fact_compound_v3_lending_arbitrum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} {{ fact_compound_v3_fork_lending( "raw_compound_v3_lending_arbitrum", "arbitrum", "compound_v3" diff --git a/models/staging/compound/fact_compound_v3_lending_arbitrum_gold.sql b/models/staging/compound/fact_compound_v3_lending_arbitrum_gold.sql index d43a7389..a80e361b 100644 --- a/models/staging/compound/fact_compound_v3_lending_arbitrum_gold.sql +++ b/models/staging/compound/fact_compound_v3_lending_arbitrum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_arbitrum") }} diff --git a/models/staging/compound/fact_compound_v3_lending_base.sql b/models/staging/compound/fact_compound_v3_lending_base.sql index 229a5abf..3de2a062 100644 --- a/models/staging/compound/fact_compound_v3_lending_base.sql +++ b/models/staging/compound/fact_compound_v3_lending_base.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} {{ fact_compound_v3_fork_lending( "raw_compound_v3_lending_base", "base", "compound_v3" diff --git a/models/staging/compound/fact_compound_v3_lending_base_gold.sql b/models/staging/compound/fact_compound_v3_lending_base_gold.sql index f8ce3e5c..e6574d39 100644 --- a/models/staging/compound/fact_compound_v3_lending_base_gold.sql +++ b/models/staging/compound/fact_compound_v3_lending_base_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_base") }} diff --git a/models/staging/compound/fact_compound_v3_lending_ethereum.sql b/models/staging/compound/fact_compound_v3_lending_ethereum.sql index c8751183..2dc6ed78 100644 --- a/models/staging/compound/fact_compound_v3_lending_ethereum.sql +++ b/models/staging/compound/fact_compound_v3_lending_ethereum.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} {{ fact_compound_v3_fork_lending( "raw_compound_v3_lending_ethereum", "ethereum", "compound_v3" diff --git a/models/staging/compound/fact_compound_v3_lending_ethereum_gold.sql b/models/staging/compound/fact_compound_v3_lending_ethereum_gold.sql index b1218d4a..cf6c8da5 100644 --- a/models/staging/compound/fact_compound_v3_lending_ethereum_gold.sql +++ b/models/staging/compound/fact_compound_v3_lending_ethereum_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_ethereum") }} diff --git a/models/staging/compound/fact_compound_v3_lending_polygon.sql b/models/staging/compound/fact_compound_v3_lending_polygon.sql index 7a63ae95..fec10a84 100644 --- a/models/staging/compound/fact_compound_v3_lending_polygon.sql +++ b/models/staging/compound/fact_compound_v3_lending_polygon.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} {{ fact_compound_v3_fork_lending( "raw_compound_v3_lending_polygon", "polygon", "compound_v3" diff --git a/models/staging/compound/fact_compound_v3_lending_polygon_gold.sql b/models/staging/compound/fact_compound_v3_lending_polygon_gold.sql index 13a5b2aa..5dc8bc61 100644 --- a/models/staging/compound/fact_compound_v3_lending_polygon_gold.sql +++ b/models/staging/compound/fact_compound_v3_lending_polygon_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="COMPOUND") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_compound_v3_lending_polygon") }} diff --git a/models/staging/cosmoshub/fact_cosmoshub_daa.sql b/models/staging/cosmoshub/fact_cosmoshub_daa.sql index 26080f30..44c9762e 100644 --- a/models/staging/cosmoshub/fact_cosmoshub_daa.sql +++ b/models/staging/cosmoshub/fact_cosmoshub_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="COSMOSHUB") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/cosmoshub/fact_cosmoshub_fees_and_revenue.sql b/models/staging/cosmoshub/fact_cosmoshub_fees_and_revenue.sql index 8603c37b..332d4cb8 100644 --- a/models/staging/cosmoshub/fact_cosmoshub_fees_and_revenue.sql +++ b/models/staging/cosmoshub/fact_cosmoshub_fees_and_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="COSMOSHUB") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/cosmoshub/fact_cosmoshub_txns.sql b/models/staging/cosmoshub/fact_cosmoshub_txns.sql index d1c30a3f..5f159725 100644 --- a/models/staging/cosmoshub/fact_cosmoshub_txns.sql +++ b/models/staging/cosmoshub/fact_cosmoshub_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="COSMOSHUB") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/curve/dim_curve_pools_gold.sql b/models/staging/curve/dim_curve_pools_gold.sql index feaf1c9e..b6f5a8a0 100644 --- a/models/staging/curve/dim_curve_pools_gold.sql +++ b/models/staging/curve/dim_curve_pools_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="CURVE") }} +{{ config(materialized="table") }} select chain, diff --git a/models/staging/curve/fact_curve_arbitrum_daily_trading_metrics.sql b/models/staging/curve/fact_curve_arbitrum_daily_trading_metrics.sql index 4ecc6245..ee9f2c98 100644 --- a/models/staging/curve/fact_curve_arbitrum_daily_trading_metrics.sql +++ b/models/staging/curve/fact_curve_arbitrum_daily_trading_metrics.sql @@ -2,7 +2,7 @@ {{ config( - materialized="table", snowflake_warehouse="CURVE" + materialized="table" ) }} {{ fact_daily_curve_trading_vol_fees_traders_by_pool("arbitrum", "fact_curve_arbitrum_dex_swaps") }} diff --git a/models/staging/curve/fact_curve_arbitrum_dex_swaps.sql b/models/staging/curve/fact_curve_arbitrum_dex_swaps.sql index 6719c3cf..80b35f32 100644 --- a/models/staging/curve/fact_curve_arbitrum_dex_swaps.sql +++ b/models/staging/curve/fact_curve_arbitrum_dex_swaps.sql @@ -1,6 +1,6 @@ {{ config( - materialized="incremental", unique_key=["tx_hash", "event_index"], snowflake_warehouse="CURVE" + materialized="incremental", unique_key=["tx_hash", "event_index"] ) }} {{ fact_curve_dex_swaps("arbitrum") }} diff --git a/models/staging/curve/fact_curve_arbitrum_tvl_by_pool.sql b/models/staging/curve/fact_curve_arbitrum_tvl_by_pool.sql index a91fc3b9..13d2cfd8 100644 --- a/models/staging/curve/fact_curve_arbitrum_tvl_by_pool.sql +++ b/models/staging/curve/fact_curve_arbitrum_tvl_by_pool.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", unique_key="date", snowflake_warehouse="CURVE" + materialized="table", unique_key="date" ) }} {{ fact_curve_tvl_by_pool("arbitrum", "0x912ce59144191c1204e64559fe8253a0e49e6548") }} diff --git a/models/staging/curve/fact_curve_avalanche_daily_trading_metrics.sql b/models/staging/curve/fact_curve_avalanche_daily_trading_metrics.sql index 73c714dc..e8a88a63 100644 --- a/models/staging/curve/fact_curve_avalanche_daily_trading_metrics.sql +++ b/models/staging/curve/fact_curve_avalanche_daily_trading_metrics.sql @@ -2,7 +2,7 @@ {{ config( - materialized="table", snowflake_warehouse="CURVE" + materialized="table" ) }} {{ fact_daily_curve_trading_vol_fees_traders_by_pool("avalanche", "fact_curve_avalanche_dex_swaps") }} diff --git a/models/staging/curve/fact_curve_avalanche_dex_swaps.sql b/models/staging/curve/fact_curve_avalanche_dex_swaps.sql index ff86ff7d..1050bdbf 100644 --- a/models/staging/curve/fact_curve_avalanche_dex_swaps.sql +++ b/models/staging/curve/fact_curve_avalanche_dex_swaps.sql @@ -1,6 +1,6 @@ {{ config( - materialized="incremental", unique_key=["tx_hash", "event_index"], snowflake_warehouse="CURVE" + materialized="incremental", unique_key=["tx_hash", "event_index"] ) }} {{ fact_curve_dex_swaps("avalanche") }} diff --git a/models/staging/curve/fact_curve_avalanche_tvl_by_pool.sql b/models/staging/curve/fact_curve_avalanche_tvl_by_pool.sql index ec436596..7f357124 100644 --- a/models/staging/curve/fact_curve_avalanche_tvl_by_pool.sql +++ b/models/staging/curve/fact_curve_avalanche_tvl_by_pool.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", unique_key="date", snowflake_warehouse="CURVE" + materialized="table", unique_key="date" ) }} {{ fact_curve_tvl_by_pool("avalanche", "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7") }} diff --git a/models/staging/curve/fact_curve_ethereum_daily_trading_metrics.sql b/models/staging/curve/fact_curve_ethereum_daily_trading_metrics.sql index 216f8465..fc2a704c 100644 --- a/models/staging/curve/fact_curve_ethereum_daily_trading_metrics.sql +++ b/models/staging/curve/fact_curve_ethereum_daily_trading_metrics.sql @@ -2,7 +2,7 @@ {{ config( - materialized="table", snowflake_warehouse="CURVE" + materialized="table" ) }} {{ fact_daily_curve_trading_vol_fees_traders_by_pool("ethereum", "fact_curve_ethereum_dex_swaps") }} diff --git a/models/staging/curve/fact_curve_ethereum_dex_swaps.sql b/models/staging/curve/fact_curve_ethereum_dex_swaps.sql index 3c80b100..89c76598 100644 --- a/models/staging/curve/fact_curve_ethereum_dex_swaps.sql +++ b/models/staging/curve/fact_curve_ethereum_dex_swaps.sql @@ -1,6 +1,6 @@ {{ config( - materialized="incremental", unique_key=["tx_hash", "event_index"], snowflake_warehouse="CURVE" + materialized="incremental", unique_key=["tx_hash", "event_index"] ) }} {{ fact_curve_dex_swaps("ethereum") }} diff --git a/models/staging/curve/fact_curve_ethereum_tvl_by_pool.sql b/models/staging/curve/fact_curve_ethereum_tvl_by_pool.sql index a89bbed6..1b88025f 100644 --- a/models/staging/curve/fact_curve_ethereum_tvl_by_pool.sql +++ b/models/staging/curve/fact_curve_ethereum_tvl_by_pool.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", unique_key="date", snowflake_warehouse="CURVE" + materialized="table", unique_key="date" ) }} {{ fact_curve_tvl_by_pool("ethereum", "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE") }} diff --git a/models/staging/curve/fact_curve_optimism_daily_trading_metrics.sql b/models/staging/curve/fact_curve_optimism_daily_trading_metrics.sql index 5fb8ec03..cf062b73 100644 --- a/models/staging/curve/fact_curve_optimism_daily_trading_metrics.sql +++ b/models/staging/curve/fact_curve_optimism_daily_trading_metrics.sql @@ -2,7 +2,7 @@ {{ config( - materialized="table", snowflake_warehouse="CURVE" + materialized="table" ) }} {{ fact_daily_curve_trading_vol_fees_traders_by_pool("optimism", "fact_curve_optimism_dex_swaps") }} diff --git a/models/staging/curve/fact_curve_optimism_dex_swaps.sql b/models/staging/curve/fact_curve_optimism_dex_swaps.sql index a7939963..d16f6b4f 100644 --- a/models/staging/curve/fact_curve_optimism_dex_swaps.sql +++ b/models/staging/curve/fact_curve_optimism_dex_swaps.sql @@ -1,6 +1,6 @@ {{ config( - materialized="incremental", unique_key=["tx_hash", "event_index"], snowflake_warehouse="CURVE" + materialized="incremental", unique_key=["tx_hash", "event_index"] ) }} {{ fact_curve_dex_swaps("optimism") }} diff --git a/models/staging/curve/fact_curve_optimism_tvl_by_pool.sql b/models/staging/curve/fact_curve_optimism_tvl_by_pool.sql index 46130ae9..3654e32a 100644 --- a/models/staging/curve/fact_curve_optimism_tvl_by_pool.sql +++ b/models/staging/curve/fact_curve_optimism_tvl_by_pool.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", unique_key="date", snowflake_warehouse="CURVE" + materialized="table", unique_key="date" ) }} {{ fact_curve_tvl_by_pool("optimism", "0x4200000000000000000000000000000000000042") }} diff --git a/models/staging/curve/fact_curve_polygon_daily_trading_metrics.sql b/models/staging/curve/fact_curve_polygon_daily_trading_metrics.sql index bc3f5946..05ed7675 100644 --- a/models/staging/curve/fact_curve_polygon_daily_trading_metrics.sql +++ b/models/staging/curve/fact_curve_polygon_daily_trading_metrics.sql @@ -1,7 +1,7 @@ --depends_on {{ ref("fact_curve_polygon_dex_swaps") }} {{ config( - materialized="table", snowflake_warehouse="CURVE" + materialized="table" ) }} {{ fact_daily_curve_trading_vol_fees_traders_by_pool("polygon", "fact_curve_polygon_dex_swaps") }} diff --git a/models/staging/curve/fact_curve_polygon_dex_swaps.sql b/models/staging/curve/fact_curve_polygon_dex_swaps.sql index a40f28f4..e79d8b51 100644 --- a/models/staging/curve/fact_curve_polygon_dex_swaps.sql +++ b/models/staging/curve/fact_curve_polygon_dex_swaps.sql @@ -1,6 +1,6 @@ {{ config( - materialized="incremental", unique_key=["tx_hash", "event_index"], snowflake_warehouse="CURVE" + materialized="incremental", unique_key=["tx_hash", "event_index"] ) }} {{ fact_curve_dex_swaps("polygon") }} diff --git a/models/staging/curve/fact_curve_polygon_tvl_by_pool.sql b/models/staging/curve/fact_curve_polygon_tvl_by_pool.sql index a5bfbcbf..463e8a0f 100644 --- a/models/staging/curve/fact_curve_polygon_tvl_by_pool.sql +++ b/models/staging/curve/fact_curve_polygon_tvl_by_pool.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", unique_key="date", snowflake_warehouse="CURVE" + materialized="table", unique_key="date" ) }} {{ fact_curve_tvl_by_pool("polygon", "0x0000000000000000000000000000000000001010") }} diff --git a/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql index 91e93dfb..4c90d094 100644 --- a/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql +++ b/models/staging/dexalot/fact_dexalot_fundamental_metrics.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="DEXALOT") }} +{{ config(materialized="table") }} {{ transform_avalanche_subnets_fundamental_data('dexalot') }} diff --git a/models/staging/dfk/fact_dfk_fundamental_metrics.sql b/models/staging/dfk/fact_dfk_fundamental_metrics.sql index 8b12fd33..eef17172 100644 --- a/models/staging/dfk/fact_dfk_fundamental_metrics.sql +++ b/models/staging/dfk/fact_dfk_fundamental_metrics.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="DFK") }} +{{ config(materialized="table") }} {{ transform_avalanche_subnets_fundamental_data('dfk') }} diff --git a/models/staging/ethereum/fact_ethereum_da_metrics.sql b/models/staging/ethereum/fact_ethereum_da_metrics.sql index a923f02b..e37153d1 100644 --- a/models/staging/ethereum/fact_ethereum_da_metrics.sql +++ b/models/staging/ethereum/fact_ethereum_da_metrics.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="ETHEREUM", ) }} with diff --git a/models/staging/ethereum/fact_ethereum_daily_sleep.sql b/models/staging/ethereum/fact_ethereum_daily_sleep.sql index 2f0e44d8..14d63715 100644 --- a/models/staging/ethereum/fact_ethereum_daily_sleep.sql +++ b/models/staging/ethereum/fact_ethereum_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="ETHEREUM", ) }} diff --git a/models/staging/ethereum/fact_ethereum_p2p_native_transfers.sql b/models/staging/ethereum/fact_ethereum_p2p_native_transfers.sql index 98bf6036..6fdecd7c 100644 --- a/models/staging/ethereum/fact_ethereum_p2p_native_transfers.sql +++ b/models/staging/ethereum/fact_ethereum_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="ETHEREUM", ) }} diff --git a/models/staging/ethereum/fact_ethereum_rolling_active_addresses.sql b/models/staging/ethereum/fact_ethereum_rolling_active_addresses.sql index d50177fc..b3843095 100644 --- a/models/staging/ethereum/fact_ethereum_rolling_active_addresses.sql +++ b/models/staging/ethereum/fact_ethereum_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="ETHEREUM", ) }} diff --git a/models/staging/fantom/fact_fantom_contracts.sql b/models/staging/fantom/fact_fantom_contracts.sql index 0ca05bc9..158347b9 100644 --- a/models/staging/fantom/fact_fantom_contracts.sql +++ b/models/staging/fantom/fact_fantom_contracts.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FANTOM") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/fantom/fact_fantom_daa.sql b/models/staging/fantom/fact_fantom_daa.sql index bbc6e483..524201c3 100644 --- a/models/staging/fantom/fact_fantom_daa.sql +++ b/models/staging/fantom/fact_fantom_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="FANTOM") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/fantom/fact_fantom_gas_gas_usd_fees_revenue.sql b/models/staging/fantom/fact_fantom_gas_gas_usd_fees_revenue.sql index 520d5385..67e3d830 100644 --- a/models/staging/fantom/fact_fantom_gas_gas_usd_fees_revenue.sql +++ b/models/staging/fantom/fact_fantom_gas_gas_usd_fees_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FANTOM") }} +{{ config(materialized="view") }} with max_extraction as ( diff --git a/models/staging/fantom/fact_fantom_rolling_active_addresses.sql b/models/staging/fantom/fact_fantom_rolling_active_addresses.sql index de2bfa73..599c98e7 100644 --- a/models/staging/fantom/fact_fantom_rolling_active_addresses.sql +++ b/models/staging/fantom/fact_fantom_rolling_active_addresses.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="FANTOM", ) }} diff --git a/models/staging/fantom/fact_fantom_txns.sql b/models/staging/fantom/fact_fantom_txns.sql index b273b7a4..4338c549 100644 --- a/models/staging/fantom/fact_fantom_txns.sql +++ b/models/staging/fantom/fact_fantom_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="FANTOM") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/fantom/fact_fantom_uniq_daily_addresses.sql b/models/staging/fantom/fact_fantom_uniq_daily_addresses.sql index 0238d769..aaab7b0f 100644 --- a/models/staging/fantom/fact_fantom_uniq_daily_addresses.sql +++ b/models/staging/fantom/fact_fantom_uniq_daily_addresses.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FANTOM") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/flow/fact_flow_daa_txns.sql b/models/staging/flow/fact_flow_daa_txns.sql index 1ced53e6..92d3197c 100644 --- a/models/staging/flow/fact_flow_daa_txns.sql +++ b/models/staging/flow/fact_flow_daa_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FLOW") }} +{{ config(materialized="view") }} select date_trunc('day', block_timestamp) as date, count(distinct authorizers) as daa, diff --git a/models/staging/flow/fact_flow_fees_revs.sql b/models/staging/flow/fact_flow_fees_revs.sql index d8b47e89..e2dcbb2f 100644 --- a/models/staging/flow/fact_flow_fees_revs.sql +++ b/models/staging/flow/fact_flow_fees_revs.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="FLOW") }} +{{ config(materialized="table") }} with flow_fees as ( diff --git a/models/staging/flow/fact_flow_nft_trading_volume.sql b/models/staging/flow/fact_flow_nft_trading_volume.sql index 57c8e0ac..a7aa3fa8 100644 --- a/models/staging/flow/fact_flow_nft_trading_volume.sql +++ b/models/staging/flow/fact_flow_nft_trading_volume.sql @@ -1,3 +1,3 @@ -{{ config(materialized="view", snowflake_warehouse="FLOW") }} +{{ config(materialized="view") }} {{ nft_trading_volume("flow") }} diff --git a/models/staging/frax/fact_frax_staked_eth_count.sql b/models/staging/frax/fact_frax_staked_eth_count.sql index e9b8ea8a..478933e7 100644 --- a/models/staging/frax/fact_frax_staked_eth_count.sql +++ b/models/staging/frax/fact_frax_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="FRAX", materialized="table") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/frax/fact_frax_staked_eth_count_with_USD_and_change.sql b/models/staging/frax/fact_frax_staked_eth_count_with_USD_and_change.sql index 5b6f0cb8..cebac421 100644 --- a/models/staging/frax/fact_frax_staked_eth_count_with_USD_and_change.sql +++ b/models/staging/frax/fact_frax_staked_eth_count_with_USD_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="FRAX", materialized="table") }} +{{ config(materialized="table") }} with prices as ({{get_coingecko_price_with_latest("ethereum")}}), temp as ( diff --git a/models/staging/fuse/fact_fuse_daa.sql b/models/staging/fuse/fact_fuse_daa.sql index 434029ea..177fb9e7 100644 --- a/models/staging/fuse/fact_fuse_daa.sql +++ b/models/staging/fuse/fact_fuse_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FUSE") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/fuse/fact_fuse_daa_txns_gas_gas_usd.sql b/models/staging/fuse/fact_fuse_daa_txns_gas_gas_usd.sql index 84a044fb..a7ed0fde 100644 --- a/models/staging/fuse/fact_fuse_daa_txns_gas_gas_usd.sql +++ b/models/staging/fuse/fact_fuse_daa_txns_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FUSE") }} +{{ config(materialized="view") }} select t1.date, t1.chain, daa, txns, gas, gas_usd from {{ ref("fact_fuse_daa") }} t1 left join {{ ref("fact_fuse_gas_gas_usd") }} t2 on t1.date = t2.date diff --git a/models/staging/fuse/fact_fuse_gas_gas_usd.sql b/models/staging/fuse/fact_fuse_gas_gas_usd.sql index 9d18ce23..72380f65 100644 --- a/models/staging/fuse/fact_fuse_gas_gas_usd.sql +++ b/models/staging/fuse/fact_fuse_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FUSE") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/fuse/fact_fuse_txns.sql b/models/staging/fuse/fact_fuse_txns.sql index 7216e4cc..42a4047c 100644 --- a/models/staging/fuse/fact_fuse_txns.sql +++ b/models/staging/fuse/fact_fuse_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="FUSE") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/gnosis/fact_gnosis_blocks.sql b/models/staging/gnosis/fact_gnosis_blocks.sql index 9825d458..d7951e08 100644 --- a/models/staging/gnosis/fact_gnosis_blocks.sql +++ b/models/staging/gnosis/fact_gnosis_blocks.sql @@ -1,4 +1,4 @@ -{{ config(materialized="incremental", unique_key="block_number", snowflake_warehouse="GNOSIS") }} +{{ config(materialized="incremental", unique_key="block_number") }} select block_number, block_timestamp, diff --git a/models/staging/gnosis/fact_gnosis_daa_txns_gas_gas_usd.sql b/models/staging/gnosis/fact_gnosis_daa_txns_gas_gas_usd.sql index 6fab33f0..50edcc4b 100644 --- a/models/staging/gnosis/fact_gnosis_daa_txns_gas_gas_usd.sql +++ b/models/staging/gnosis/fact_gnosis_daa_txns_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="GNOSIS") }} +{{ config(materialized="view") }} with min_date as ( select dateadd(day, -5, min(to_timestamp(block_timestamp))::date) date diff --git a/models/staging/immutable_x/fact_immutable_x_nft_trading_volume.sql b/models/staging/immutable_x/fact_immutable_x_nft_trading_volume.sql index acea8853..6019d4b3 100644 --- a/models/staging/immutable_x/fact_immutable_x_nft_trading_volume.sql +++ b/models/staging/immutable_x/fact_immutable_x_nft_trading_volume.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="IMMUTABLE_X") }} +{{ config(materialized="table") }} with max_extraction as ( diff --git a/models/staging/injective/fact_injective_daily_txns_silver.sql b/models/staging/injective/fact_injective_daily_txns_silver.sql index f97ab649..a95c93a3 100644 --- a/models/staging/injective/fact_injective_daily_txns_silver.sql +++ b/models/staging/injective/fact_injective_daily_txns_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/injective/fact_injective_dau_silver.sql b/models/staging/injective/fact_injective_dau_silver.sql index ca092346..ad2b1756 100644 --- a/models/staging/injective/fact_injective_dau_silver.sql +++ b/models/staging/injective/fact_injective_dau_silver.sql @@ -1,4 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/injective/fact_injective_fees_native_all_silver.sql b/models/staging/injective/fact_injective_fees_native_all_silver.sql index 40ea15bf..44d2a85c 100644 --- a/models/staging/injective/fact_injective_fees_native_all_silver.sql +++ b/models/staging/injective/fact_injective_fees_native_all_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/injective/fact_injective_fees_native_silver.sql b/models/staging/injective/fact_injective_fees_native_silver.sql index 77f1d75f..e4dcd0ac 100644 --- a/models/staging/injective/fact_injective_fees_native_silver.sql +++ b/models/staging/injective/fact_injective_fees_native_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - select date, fees_native_all as fees_native, chain from {{ source("PROD", "fact_injective_fees_native_all_silver") }} where coingecko_id = 'injective-protocol' diff --git a/models/staging/injective/fact_injective_fees_usd_silver.sql b/models/staging/injective/fact_injective_fees_usd_silver.sql index 38d53fe3..50829ca6 100644 --- a/models/staging/injective/fact_injective_fees_usd_silver.sql +++ b/models/staging/injective/fact_injective_fees_usd_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - with unique_tokens as ( select distinct (coingecko_id) diff --git a/models/staging/injective/fact_injective_mints_silver.sql b/models/staging/injective/fact_injective_mints_silver.sql index b7e3a0d0..ff6f55ea 100644 --- a/models/staging/injective/fact_injective_mints_silver.sql +++ b/models/staging/injective/fact_injective_mints_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/injective/fact_injective_revenue_native_silver.sql b/models/staging/injective/fact_injective_revenue_native_silver.sql index 3f70749d..0eb2eef4 100644 --- a/models/staging/injective/fact_injective_revenue_native_silver.sql +++ b/models/staging/injective/fact_injective_revenue_native_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/injective/fact_injective_revenue_silver.sql b/models/staging/injective/fact_injective_revenue_silver.sql index b10160b9..7e564b90 100644 --- a/models/staging/injective/fact_injective_revenue_silver.sql +++ b/models/staging/injective/fact_injective_revenue_silver.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="INJECTIVE")}} - select r.date, r.revenue_native * p.price as revenue, 'injective' as chain from {{ ref("fact_injective_revenue_native_silver")}} r left join diff --git a/models/staging/lido/fact_lido_staked_eth_count.sql b/models/staging/lido/fact_lido_staked_eth_count.sql index dd4103d6..088aead8 100644 --- a/models/staging/lido/fact_lido_staked_eth_count.sql +++ b/models/staging/lido/fact_lido_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="LIDO", materialized="table") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/linea/fact_linea_daa.sql b/models/staging/linea/fact_linea_daa.sql index 553c2475..a357dd26 100644 --- a/models/staging/linea/fact_linea_daa.sql +++ b/models/staging/linea/fact_linea_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="LINEA") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(distinct from_address), 0) as daa, diff --git a/models/staging/linea/fact_linea_gas_gas_usd_revenue.sql b/models/staging/linea/fact_linea_gas_gas_usd_revenue.sql index aba9ffef..5d3c91d8 100644 --- a/models/staging/linea/fact_linea_gas_gas_usd_revenue.sql +++ b/models/staging/linea/fact_linea_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="LINEA") }} +{{ config(materialized="table") }} with prices as ({{ get_coingecko_price_with_latest("ethereum") }}), linea_submission_and_finalization_transactions as ( diff --git a/models/staging/linea/fact_linea_transactions.sql b/models/staging/linea/fact_linea_transactions.sql index c5560b3e..5bb08139 100644 --- a/models/staging/linea/fact_linea_transactions.sql +++ b/models/staging/linea/fact_linea_transactions.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="LINEA") }} +{{ config(materialized="table") }} with raw_transactions_with_columns as ( select diff --git a/models/staging/linea/fact_linea_txns.sql b/models/staging/linea/fact_linea_txns.sql index 557cbed6..bae6726f 100644 --- a/models/staging/linea/fact_linea_txns.sql +++ b/models/staging/linea/fact_linea_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="LINEA") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(*), 0) as txns, diff --git a/models/staging/mantle/fact_mantle_daa.sql b/models/staging/mantle/fact_mantle_daa.sql index 1f621154..426bea8f 100644 --- a/models/staging/mantle/fact_mantle_daa.sql +++ b/models/staging/mantle/fact_mantle_daa.sql @@ -1,5 +1,5 @@ -- depends_on: {{ source("PROD_LANDING", "raw_mantle_daa") }} -{{ config(materialized="view", snowflake_warehouse="MANTLE") }} +{{ config(materialized="view") }} select date, dau::integer as daa, 'mantle' as chain from diff --git a/models/staging/mantle/fact_mantle_expenses.sql b/models/staging/mantle/fact_mantle_expenses.sql index 20c59005..287dd810 100644 --- a/models/staging/mantle/fact_mantle_expenses.sql +++ b/models/staging/mantle/fact_mantle_expenses.sql @@ -1,5 +1,5 @@ -- depends_on: {{ source("PROD_LANDING", "raw_mantle_expenses") }} -{{ config(materialized="view", snowflake_warehouse="MANTLE") }} +{{ config(materialized="view") }} select date, case diff --git a/models/staging/mantle/fact_mantle_gas.sql b/models/staging/mantle/fact_mantle_gas.sql index 69af1bbd..dfbf5067 100644 --- a/models/staging/mantle/fact_mantle_gas.sql +++ b/models/staging/mantle/fact_mantle_gas.sql @@ -1,5 +1,5 @@ -- depends_on: {{ source("PROD_LANDING", "raw_mantle_gas") }} -{{ config(materialized="view", snowflake_warehouse="MANTLE") }} +{{ config(materialized="view") }} select date, gas::float / 1e18 as gas, 'mantle' as chain from diff --git a/models/staging/mantle/fact_mantle_txns.sql b/models/staging/mantle/fact_mantle_txns.sql index c5d3f3d9..9172d769 100644 --- a/models/staging/mantle/fact_mantle_txns.sql +++ b/models/staging/mantle/fact_mantle_txns.sql @@ -1,5 +1,5 @@ -- depends_on: {{ source("PROD_LANDING", "raw_mantle_txns") }} -{{ config(materialized="view", snowflake_warehouse="MANTLE") }} +{{ config(materialized="view") }} select date, txns::integer as txns, 'mantle' as chain from diff --git a/models/staging/mantle/fact_meth_staked_eth_count.sql b/models/staging/mantle/fact_meth_staked_eth_count.sql index e6358b1d..b36a7e5f 100644 --- a/models/staging/mantle/fact_meth_staked_eth_count.sql +++ b/models/staging/mantle/fact_meth_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="MANTLE", materialized="table") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/mantle/fact_meth_staked_eth_count_with_USD_and_change.sql b/models/staging/mantle/fact_meth_staked_eth_count_with_USD_and_change.sql index b85403d0..c7d9a83a 100644 --- a/models/staging/mantle/fact_meth_staked_eth_count_with_USD_and_change.sql +++ b/models/staging/mantle/fact_meth_staked_eth_count_with_USD_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="MANTLE", materialized="table") }} +{{ config(materialized="table") }} with prices as ({{get_coingecko_price_with_latest("ethereum")}}), temp as ( diff --git a/models/staging/moonwell/fact_moonwell_base_borrows_deposits.sql b/models/staging/moonwell/fact_moonwell_base_borrows_deposits.sql index c801149f..b79a2ce6 100644 --- a/models/staging/moonwell/fact_moonwell_base_borrows_deposits.sql +++ b/models/staging/moonwell/fact_moonwell_base_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="MOONWELL") }} +{{ config(materialized="table") }} {{ fact_compound_v2_fork_lending( "raw_moonwell_base_borrows_deposits", "base", "moonwell" diff --git a/models/staging/moonwell/fact_moonwell_base_borrows_deposits_gold.sql b/models/staging/moonwell/fact_moonwell_base_borrows_deposits_gold.sql index e39f7215..ae7d1cc8 100644 --- a/models/staging/moonwell/fact_moonwell_base_borrows_deposits_gold.sql +++ b/models/staging/moonwell/fact_moonwell_base_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="MOONWELL") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_moonwell_base_borrows_deposits") }} diff --git a/models/staging/multiversx/fact_multiversx_daa.sql b/models/staging/multiversx/fact_multiversx_daa.sql index ec5f4f01..ae45ac2e 100644 --- a/models/staging/multiversx/fact_multiversx_daa.sql +++ b/models/staging/multiversx/fact_multiversx_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="MULTIVERSX") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/multiversx/fact_multiversx_txns.sql b/models/staging/multiversx/fact_multiversx_txns.sql index d6cd36cf..c14517da 100644 --- a/models/staging/multiversx/fact_multiversx_txns.sql +++ b/models/staging/multiversx/fact_multiversx_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="MULTIVERSX") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/near/fact_near_da_metrics.sql b/models/staging/near/fact_near_da_metrics.sql index f79c10f3..284ce781 100644 --- a/models/staging/near/fact_near_da_metrics.sql +++ b/models/staging/near/fact_near_da_metrics.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_p2p_native_transfers.sql b/models/staging/near/fact_near_p2p_native_transfers.sql index 42e722f8..1d053b25 100644 --- a/models/staging/near/fact_near_p2p_native_transfers.sql +++ b/models/staging/near/fact_near_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_p2p_stablecoin_transfers.sql b/models/staging/near/fact_near_p2p_stablecoin_transfers.sql index 571869bc..8e8c29fa 100644 --- a/models/staging/near/fact_near_p2p_stablecoin_transfers.sql +++ b/models/staging/near/fact_near_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_p2p_token_transfers.sql b/models/staging/near/fact_near_p2p_token_transfers.sql index 937db147..45ae7541 100644 --- a/models/staging/near/fact_near_p2p_token_transfers.sql +++ b/models/staging/near/fact_near_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_p2p_token_transfers_silver.sql b/models/staging/near/fact_near_p2p_token_transfers_silver.sql index ac546a16..ebd8fc12 100644 --- a/models/staging/near/fact_near_p2p_token_transfers_silver.sql +++ b/models/staging/near/fact_near_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_p2p_transfer_volume.sql b/models/staging/near/fact_near_p2p_transfer_volume.sql index 99200445..812f166e 100644 --- a/models/staging/near/fact_near_p2p_transfer_volume.sql +++ b/models/staging/near/fact_near_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/near/fact_near_rolling_active_addresses.sql b/models/staging/near/fact_near_rolling_active_addresses.sql index e7d13998..35f150d5 100644 --- a/models/staging/near/fact_near_rolling_active_addresses.sql +++ b/models/staging/near/fact_near_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="NEAR", ) }} diff --git a/models/staging/optimism/fact_optimism_daily_sleep.sql b/models/staging/optimism/fact_optimism_daily_sleep.sql index e58d2c7e..2b91a911 100644 --- a/models/staging/optimism/fact_optimism_daily_sleep.sql +++ b/models/staging/optimism/fact_optimism_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_p2p_native_transfers.sql b/models/staging/optimism/fact_optimism_p2p_native_transfers.sql index e826788a..51d9c706 100644 --- a/models/staging/optimism/fact_optimism_p2p_native_transfers.sql +++ b/models/staging/optimism/fact_optimism_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql b/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql index 58e06967..fe030b5e 100644 --- a/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql +++ b/models/staging/optimism/fact_optimism_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_p2p_token_transfers.sql b/models/staging/optimism/fact_optimism_p2p_token_transfers.sql index 4e36c9a0..8c924f9e 100644 --- a/models/staging/optimism/fact_optimism_p2p_token_transfers.sql +++ b/models/staging/optimism/fact_optimism_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_p2p_token_transfers_silver.sql b/models/staging/optimism/fact_optimism_p2p_token_transfers_silver.sql index ca3cc999..c9d5a190 100644 --- a/models/staging/optimism/fact_optimism_p2p_token_transfers_silver.sql +++ b/models/staging/optimism/fact_optimism_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_p2p_transfer_volume.sql b/models/staging/optimism/fact_optimism_p2p_transfer_volume.sql index 9d4d41c5..0c40f007 100644 --- a/models/staging/optimism/fact_optimism_p2p_transfer_volume.sql +++ b/models/staging/optimism/fact_optimism_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/optimism/fact_optimism_rolling_active_addresses.sql b/models/staging/optimism/fact_optimism_rolling_active_addresses.sql index aec5be11..ab34f3e0 100644 --- a/models/staging/optimism/fact_optimism_rolling_active_addresses.sql +++ b/models/staging/optimism/fact_optimism_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="date", - snowflake_warehouse="OPTIMISM", ) }} diff --git a/models/staging/osmosis/fact_osmosis_daa_txns.sql b/models/staging/osmosis/fact_osmosis_daa_txns.sql index 142b5c35..7183c35a 100644 --- a/models/staging/osmosis/fact_osmosis_daa_txns.sql +++ b/models/staging/osmosis/fact_osmosis_daa_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="OSMOSIS") }} +{{ config(materialized="view") }} select block_timestamp::date as date, count(distinct tx_from) as daa, diff --git a/models/staging/osmosis/fact_osmosis_gas_gas_usd.sql b/models/staging/osmosis/fact_osmosis_gas_gas_usd.sql index c74cb1af..8d0ae457 100644 --- a/models/staging/osmosis/fact_osmosis_gas_gas_usd.sql +++ b/models/staging/osmosis/fact_osmosis_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="OSMOSIS") }} +{{ config(materialized="view") }} with data as ( diff --git a/models/staging/osmosis/fact_osmosis_gas_gas_usd_fees_revenue.sql b/models/staging/osmosis/fact_osmosis_gas_gas_usd_fees_revenue.sql index 1b6d39c5..5ac4279a 100644 --- a/models/staging/osmosis/fact_osmosis_gas_gas_usd_fees_revenue.sql +++ b/models/staging/osmosis/fact_osmosis_gas_gas_usd_fees_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="OSMOSIS") }} +{{ config(materialized="view") }} select t1.date, diff --git a/models/staging/osmosis/fact_osmosis_trading_fees.sql b/models/staging/osmosis/fact_osmosis_trading_fees.sql index a5689837..6730abb8 100644 --- a/models/staging/osmosis/fact_osmosis_trading_fees.sql +++ b/models/staging/osmosis/fact_osmosis_trading_fees.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="OSMOSIS") }} +{{ config(materialized="view") }} WITH raw AS ( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_dex_swaps.sql index f95ed5ec..064ddf60 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql index 6289fe69..7b585a64 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_tvl_by_pool.sql index eb395905..67ad47cd 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_arbitrum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_base_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_base_dex_swaps.sql index d5463406..7cf78f18 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_base_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_base_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_base_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_base_trading_vol_fees_traders_by_pool.sql index 770456b4..f691d02f 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_base_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_base_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_base_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_base_tvl_by_pool.sql index f5acd333..9ca93010 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_base_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_base_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_dex_swaps.sql index 8072deb0..73dc1751 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_trading_vol_fees_traders_by_pool.sql index fa266e1e..e229fbfe 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_tvl_by_pool.sql index 30e126b0..a50d6d21 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_bsc_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_dex_swaps.sql index fbc16314..a1511d0e 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql index d6162ebd..eb973746 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_tvl_by_pool.sql index b7275a27..eda098ca 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v2_ethereum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_dex_swaps.sql index 40955052..10a6353d 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql index 3b18c9eb..23b0a3c0 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_tvl_by_pool.sql index 84b342b7..1568898a 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_arbitrum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v3_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_base_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_base_dex_swaps.sql index 9ed6b5ac..99bf6f6a 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_base_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_base_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_base_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_base_trading_vol_fees_traders_by_pool.sql index e836b600..c0148aad 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_base_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_base_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_base_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_base_tvl_by_pool.sql index e73385ff..7901d9f7 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_base_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_base_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v3_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_dex_swaps.sql index 0feac87f..84a59f9c 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_trading_vol_fees_traders_by_pool.sql index 361c5baa..93175c54 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_tvl_by_pool.sql index 79d7b902..5358c85c 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_bsc_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v3_fork_tvl_by_pool( diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_dex_swaps.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_dex_swaps.sql index a91e2502..bedb9a3f 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_dex_swaps.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="PANCAKESWAP_SM", ) }} diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql index d902d7d3..ea50c0a9 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="PANCAKESWAP_SM", ) }} {{ diff --git a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_tvl_by_pool.sql b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_tvl_by_pool.sql index 2198bb03..3ad2037b 100644 --- a/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_tvl_by_pool.sql +++ b/models/staging/pancakeswap/fact_pancakeswap_v3_ethereum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="PANCAKESWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v3_fork_tvl_by_pool( diff --git a/models/staging/parallel_finance/fact_parallel_finance_daa.sql b/models/staging/parallel_finance/fact_parallel_finance_daa.sql index 9a0ec446..7ef645f9 100644 --- a/models/staging/parallel_finance/fact_parallel_finance_daa.sql +++ b/models/staging/parallel_finance/fact_parallel_finance_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="PARALLEL_FINANCE") }} +{{ config(materialized="view") }} with max_extraction as ( diff --git a/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql b/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql index 5b9dc23f..ba519f00 100644 --- a/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql +++ b/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="PARALLEL_FINANCE") }} +{{ config(materialized="view") }} select t1.date, t1.chain, daa, txns, gas, gas_usd from {{ ref("fact_parallel_finance_txns") }} t1 left join {{ ref("fact_parallel_finance_daa") }} t2 on t1.date = t2.date diff --git a/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql b/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql index 663b1044..72ba38b3 100644 --- a/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql +++ b/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="PARALLEL_FINANCE") }} +{{ config(materialized="view") }} with max_extraction as ( diff --git a/models/staging/parallel_finance/fact_parallel_finance_txns.sql b/models/staging/parallel_finance/fact_parallel_finance_txns.sql index 1b5f8d17..f305cc8c 100644 --- a/models/staging/parallel_finance/fact_parallel_finance_txns.sql +++ b/models/staging/parallel_finance/fact_parallel_finance_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="PARALLEL_FINANCE") }} +{{ config(materialized="view") }} with max_extraction as ( diff --git a/models/staging/polkadot/fact_polkadot_daa_txns_gas_gas_usd_revenue.sql b/models/staging/polkadot/fact_polkadot_daa_txns_gas_gas_usd_revenue.sql index e582439a..f3b5f06b 100644 --- a/models/staging/polkadot/fact_polkadot_daa_txns_gas_gas_usd_revenue.sql +++ b/models/staging/polkadot/fact_polkadot_daa_txns_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="POLKADOT") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/polkadot/fact_polkadot_rolling_active_addresses.sql b/models/staging/polkadot/fact_polkadot_rolling_active_addresses.sql index b67cd8c9..c5f1beb1 100644 --- a/models/staging/polkadot/fact_polkadot_rolling_active_addresses.sql +++ b/models/staging/polkadot/fact_polkadot_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="POLKADOT", ) }} diff --git a/models/staging/polkadot/fact_polkadot_uniq_daily_signers.sql b/models/staging/polkadot/fact_polkadot_uniq_daily_signers.sql index 7e515c03..5c347dc0 100644 --- a/models/staging/polkadot/fact_polkadot_uniq_daily_signers.sql +++ b/models/staging/polkadot/fact_polkadot_uniq_daily_signers.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="POLKADOT") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/polygon/fact_polygon_rolling_active_addresses.sql b/models/staging/polygon/fact_polygon_rolling_active_addresses.sql index 007752a0..f70bd495 100644 --- a/models/staging/polygon/fact_polygon_rolling_active_addresses.sql +++ b/models/staging/polygon/fact_polygon_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="POLYGON", ) }} diff --git a/models/staging/quickswap/fact_quickswap_polygon_dex_swaps.sql b/models/staging/quickswap/fact_quickswap_polygon_dex_swaps.sql index 35bf02ca..3904be04 100644 --- a/models/staging/quickswap/fact_quickswap_polygon_dex_swaps.sql +++ b/models/staging/quickswap/fact_quickswap_polygon_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="QUICKSWAP", ) }} {{ diff --git a/models/staging/quickswap/fact_quickswap_polygon_trading_vol_fees_traders_by_pool.sql b/models/staging/quickswap/fact_quickswap_polygon_trading_vol_fees_traders_by_pool.sql index 4f90b2c3..4c02e6c9 100644 --- a/models/staging/quickswap/fact_quickswap_polygon_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/quickswap/fact_quickswap_polygon_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="QUICKSWAP", ) }} diff --git a/models/staging/quickswap/fact_quickswap_polygon_tvl_by_pool.sql b/models/staging/quickswap/fact_quickswap_polygon_tvl_by_pool.sql index e5470e47..4141284c 100644 --- a/models/staging/quickswap/fact_quickswap_polygon_tvl_by_pool.sql +++ b/models/staging/quickswap/fact_quickswap_polygon_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="QUICKSWAP") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/radiant/fact_radiant_arbitrum_borrows_deposits_gold.sql b/models/staging/radiant/fact_radiant_arbitrum_borrows_deposits_gold.sql index 471c722b..961bccf0 100644 --- a/models/staging/radiant/fact_radiant_arbitrum_borrows_deposits_gold.sql +++ b/models/staging/radiant/fact_radiant_arbitrum_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} select date, chain, 'radiant' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_radiant_v2_arbitrum_borrows_deposits") }} diff --git a/models/staging/radiant/fact_radiant_bsc_borrows_deposits_gold.sql b/models/staging/radiant/fact_radiant_bsc_borrows_deposits_gold.sql index ae07b976..753b0ba2 100644 --- a/models/staging/radiant/fact_radiant_bsc_borrows_deposits_gold.sql +++ b/models/staging/radiant/fact_radiant_bsc_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} select date, chain, 'radiant' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_radiant_v2_bsc_borrows_deposits") }} diff --git a/models/staging/radiant/fact_radiant_ethereum_borrows_deposits_gold.sql b/models/staging/radiant/fact_radiant_ethereum_borrows_deposits_gold.sql index eb10d6d7..4efd27b9 100644 --- a/models/staging/radiant/fact_radiant_ethereum_borrows_deposits_gold.sql +++ b/models/staging/radiant/fact_radiant_ethereum_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} select date, chain, 'radiant' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_radiant_v2_ethereum_borrows_deposits") }} diff --git a/models/staging/radiant/fact_radiant_v2_arbitrum_borrows_deposits.sql b/models/staging/radiant/fact_radiant_v2_arbitrum_borrows_deposits.sql index 9ddd3edc..da7f6864 100644 --- a/models/staging/radiant/fact_radiant_v2_arbitrum_borrows_deposits.sql +++ b/models/staging/radiant/fact_radiant_v2_arbitrum_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_radiant_v2_arbitrum_borrows_deposits", "arbitrum", "radiant_v2" diff --git a/models/staging/radiant/fact_radiant_v2_bsc_borrows_deposits.sql b/models/staging/radiant/fact_radiant_v2_bsc_borrows_deposits.sql index 55d7fae2..59db470f 100644 --- a/models/staging/radiant/fact_radiant_v2_bsc_borrows_deposits.sql +++ b/models/staging/radiant/fact_radiant_v2_bsc_borrows_deposits.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending("raw_radiant_v2_bsc_borrows_deposits", "bsc", "radiant_v2") }} diff --git a/models/staging/radiant/fact_radiant_v2_ethereum_borrows_deposits.sql b/models/staging/radiant/fact_radiant_v2_ethereum_borrows_deposits.sql index a2335790..f9494385 100644 --- a/models/staging/radiant/fact_radiant_v2_ethereum_borrows_deposits.sql +++ b/models/staging/radiant/fact_radiant_v2_ethereum_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="RADIANT") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_radiant_v2_ethereum_borrows_deposits", "ethereum", "radiant_v2" diff --git a/models/staging/rainbow_bridge/fact_rainbow_bridge_flows.sql b/models/staging/rainbow_bridge/fact_rainbow_bridge_flows.sql index 5405f36c..726e7c66 100644 --- a/models/staging/rainbow_bridge/fact_rainbow_bridge_flows.sql +++ b/models/staging/rainbow_bridge/fact_rainbow_bridge_flows.sql @@ -1,6 +1,5 @@ {{ config( materialized="table", - snowflake_warehouse="RAINBOW_BRIDGE", ) }} with dim_contracts as ( diff --git a/models/staging/rainbow_bridge/fact_rainbow_bridge_transfers.sql b/models/staging/rainbow_bridge/fact_rainbow_bridge_transfers.sql index 57e3a654..ab4f68d9 100644 --- a/models/staging/rainbow_bridge/fact_rainbow_bridge_transfers.sql +++ b/models/staging/rainbow_bridge/fact_rainbow_bridge_transfers.sql @@ -1,6 +1,5 @@ {{ config( materialized="incremental", - snowflake_warehouse="RAINBOW_BRIDGE", ) }} WITH functioncall AS ( SELECT diff --git a/models/staging/rocketpool/fact_rocketpool_staked_eth_count.sql b/models/staging/rocketpool/fact_rocketpool_staked_eth_count.sql index c6daa903..e2df522b 100644 --- a/models/staging/rocketpool/fact_rocketpool_staked_eth_count.sql +++ b/models/staging/rocketpool/fact_rocketpool_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="ROCKETPOOL", materialized="table") }} +{{ config(materialized="table") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/rocketpool/fact_rocketpool_staked_eth_count_with_USD_and_change.sql b/models/staging/rocketpool/fact_rocketpool_staked_eth_count_with_USD_and_change.sql index 9fc96646..0cff7a20 100644 --- a/models/staging/rocketpool/fact_rocketpool_staked_eth_count_with_USD_and_change.sql +++ b/models/staging/rocketpool/fact_rocketpool_staked_eth_count_with_USD_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="ROCKETPOOL", materialized="table") }} +{{ config(materialized="table") }} with prices as ({{get_coingecko_price_with_latest("ethereum")}}), temp as ( diff --git a/models/staging/scroll/fact_scroll_daa.sql b/models/staging/scroll/fact_scroll_daa.sql index 3dad2e24..90107210 100644 --- a/models/staging/scroll/fact_scroll_daa.sql +++ b/models/staging/scroll/fact_scroll_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SCROLL") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(distinct from_address), 0) as daa, diff --git a/models/staging/scroll/fact_scroll_gas_gas_usd_revenue.sql b/models/staging/scroll/fact_scroll_gas_gas_usd_revenue.sql index 903a4462..47b8ad79 100644 --- a/models/staging/scroll/fact_scroll_gas_gas_usd_revenue.sql +++ b/models/staging/scroll/fact_scroll_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SCROLL") }} +{{ config(materialized="table") }} with gas as ( select diff --git a/models/staging/scroll/fact_scroll_txns.sql b/models/staging/scroll/fact_scroll_txns.sql index 4be1c7a4..dcb6d836 100644 --- a/models/staging/scroll/fact_scroll_txns.sql +++ b/models/staging/scroll/fact_scroll_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SCROLL") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(*), 0) as txns, diff --git a/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits.sql b/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits.sql index 23ce725b..5f83acca 100644 --- a/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits.sql +++ b/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SEAMLESSPROTOCOL") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_seamless_protocol_base_borrows_deposits", "base", "seamlessprotocol" diff --git a/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits_gold.sql b/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits_gold.sql index 8acbfb2a..735efaad 100644 --- a/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits_gold.sql +++ b/models/staging/seamless/fact_seamless_protocol_base_borrows_deposits_gold.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SEAMLESSPROTOCOL") }} +{{ config(materialized="table") }} select date, chain, diff --git a/models/staging/sei/fact_sei_avg_block_time_silver.sql b/models/staging/sei/fact_sei_avg_block_time_silver.sql index 5e195de6..5a719aa5 100644 --- a/models/staging/sei/fact_sei_avg_block_time_silver.sql +++ b/models/staging/sei/fact_sei_avg_block_time_silver.sql @@ -1,4 +1,4 @@ -{{ config(materialized="incremental", unique_key="date", snowflake_warehouse="sei") }} +{{ config(materialized="incremental", unique_key="date") }} select date(a.block_timestamp) as date, diff --git a/models/staging/sei/fact_sei_daa_txns_gas_gas_usd_revenue.sql b/models/staging/sei/fact_sei_daa_txns_gas_gas_usd_revenue.sql index 70c091c6..d9a4e169 100644 --- a/models/staging/sei/fact_sei_daa_txns_gas_gas_usd_revenue.sql +++ b/models/staging/sei/fact_sei_daa_txns_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="incremental", unique_key="date", snowflake_warehouse="sei") }} +{{ config(materialized="incremental", unique_key="date") }} with sei_raw_data as ( diff --git a/models/staging/sei/fact_sei_evm_avg_block_time_silver.sql b/models/staging/sei/fact_sei_evm_avg_block_time_silver.sql index 4cf8968c..602cd9c9 100644 --- a/models/staging/sei/fact_sei_evm_avg_block_time_silver.sql +++ b/models/staging/sei/fact_sei_evm_avg_block_time_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="date", - snowflake_warehouse="SEI" ) }} select diff --git a/models/staging/sei/fact_sei_evm_fundamental_metrics_silver.sql b/models/staging/sei/fact_sei_evm_fundamental_metrics_silver.sql index da9e9809..3c5e5d2b 100644 --- a/models/staging/sei/fact_sei_evm_fundamental_metrics_silver.sql +++ b/models/staging/sei/fact_sei_evm_fundamental_metrics_silver.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="date", - snowflake_warehouse="SEI" ) }} diff --git a/models/staging/solana/dim_solana_sybil_address.sql b/models/staging/solana/dim_solana_sybil_address.sql index 02211429..4f9dd036 100644 --- a/models/staging/solana/dim_solana_sybil_address.sql +++ b/models/staging/solana/dim_solana_sybil_address.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SOLANA") }} +{{ config(materialized="table") }} with globalaverage as ( select diff --git a/models/staging/solana/fact_solana_daily_sleep.sql b/models/staging/solana/fact_solana_daily_sleep.sql index f4cdc3de..9ffbcfaa 100644 --- a/models/staging/solana/fact_solana_daily_sleep.sql +++ b/models/staging/solana/fact_solana_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="SOLANA", ) }} diff --git a/models/staging/solana/fact_solana_p2p_native_transfers.sql b/models/staging/solana/fact_solana_p2p_native_transfers.sql index 13893eb2..e8907e37 100644 --- a/models/staging/solana/fact_solana_p2p_native_transfers.sql +++ b/models/staging/solana/fact_solana_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="SOLANA", ) }} diff --git a/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql b/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql index 84a5c887..6f898762 100644 --- a/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql +++ b/models/staging/solana/fact_solana_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="SOLANA", ) }} diff --git a/models/staging/solana/fact_solana_p2p_token_transfers.sql b/models/staging/solana/fact_solana_p2p_token_transfers.sql index b5af524f..a57ac2c4 100644 --- a/models/staging/solana/fact_solana_p2p_token_transfers.sql +++ b/models/staging/solana/fact_solana_p2p_token_transfers.sql @@ -1,7 +1,7 @@ {{ config( materialized="table", - snowflake_warehouse="SOLANA", + ) }} diff --git a/models/staging/solana/fact_solana_p2p_token_transfers_silver.sql b/models/staging/solana/fact_solana_p2p_token_transfers_silver.sql index 05224cca..0c737efc 100644 --- a/models/staging/solana/fact_solana_p2p_token_transfers_silver.sql +++ b/models/staging/solana/fact_solana_p2p_token_transfers_silver.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="SOLANA", + ) }} diff --git a/models/staging/solana/fact_solana_p2p_transfer_volume.sql b/models/staging/solana/fact_solana_p2p_transfer_volume.sql index f8f0f0a8..b93b877d 100644 --- a/models/staging/solana/fact_solana_p2p_transfer_volume.sql +++ b/models/staging/solana/fact_solana_p2p_transfer_volume.sql @@ -1,7 +1,7 @@ {{ config( materialized="table", - snowflake_warehouse="SOLANA", + ) }} diff --git a/models/staging/solana/fact_solana_rolling_active_addresses.sql b/models/staging/solana/fact_solana_rolling_active_addresses.sql index 7d94db88..5fd23bd2 100644 --- a/models/staging/solana/fact_solana_rolling_active_addresses.sql +++ b/models/staging/solana/fact_solana_rolling_active_addresses.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="SOLANA", + ) }} diff --git a/models/staging/sonne/fact_sonne_base_borrows_deposits.sql b/models/staging/sonne/fact_sonne_base_borrows_deposits.sql index 9de07c48..ad2462e7 100644 --- a/models/staging/sonne/fact_sonne_base_borrows_deposits.sql +++ b/models/staging/sonne/fact_sonne_base_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SONNE_FINANCE") }} +{{ config(materialized="table") }} {{ fact_compound_v2_fork_lending( "raw_sonne_base_borrows_deposits", "base", "sonne_finance" diff --git a/models/staging/sonne/fact_sonne_base_borrows_deposits_gold.sql b/models/staging/sonne/fact_sonne_base_borrows_deposits_gold.sql index e54184bd..76c43f41 100644 --- a/models/staging/sonne/fact_sonne_base_borrows_deposits_gold.sql +++ b/models/staging/sonne/fact_sonne_base_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="SONNE_FINANCE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_sonne_base_borrows_deposits") }} diff --git a/models/staging/sonne/fact_sonne_optimism_borrows_deposits.sql b/models/staging/sonne/fact_sonne_optimism_borrows_deposits.sql index 07e31da0..b228c8ca 100644 --- a/models/staging/sonne/fact_sonne_optimism_borrows_deposits.sql +++ b/models/staging/sonne/fact_sonne_optimism_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SONNE_FINANCE") }} +{{ config(materialized="table") }} {{ fact_compound_v2_fork_lending( "raw_sonne_optimism_borrows_deposits", "optimism", "sonne_finance" diff --git a/models/staging/sonne/fact_sonne_optimism_borrows_deposits_gold.sql b/models/staging/sonne/fact_sonne_optimism_borrows_deposits_gold.sql index 7a0dae57..61702aa3 100644 --- a/models/staging/sonne/fact_sonne_optimism_borrows_deposits_gold.sql +++ b/models/staging/sonne/fact_sonne_optimism_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="SONNE_FINANCE") }} +{{ config(materialized="table") }} select date, chain, app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_sonne_optimism_borrows_deposits") }} diff --git a/models/staging/spark/fact_spark_ethereum_borrows_deposits.sql b/models/staging/spark/fact_spark_ethereum_borrows_deposits.sql index 0264e0c8..2d8eb5b6 100644 --- a/models/staging/spark/fact_spark_ethereum_borrows_deposits.sql +++ b/models/staging/spark/fact_spark_ethereum_borrows_deposits.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="SPARK") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending("raw_spark_ethereum_borrows_deposits", "ethereum", "spark") }} diff --git a/models/staging/spark/fact_spark_ethereum_borrows_deposits_gold.sql b/models/staging/spark/fact_spark_ethereum_borrows_deposits_gold.sql index c301d80f..e12202c7 100644 --- a/models/staging/spark/fact_spark_ethereum_borrows_deposits_gold.sql +++ b/models/staging/spark/fact_spark_ethereum_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="SPARK") }} +{{ config(materialized="table") }} select date, chain, 'spark' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_spark_ethereum_borrows_deposits") }} diff --git a/models/staging/spark/fact_spark_gnosis_borrows_deposits.sql b/models/staging/spark/fact_spark_gnosis_borrows_deposits.sql index 7229f94e..705e726f 100644 --- a/models/staging/spark/fact_spark_gnosis_borrows_deposits.sql +++ b/models/staging/spark/fact_spark_gnosis_borrows_deposits.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="SPARK") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending("raw_spark_gnosis_borrows_deposits", "gnosis", "spark") }} diff --git a/models/staging/spark/fact_spark_gnosis_borrows_deposits_gold.sql b/models/staging/spark/fact_spark_gnosis_borrows_deposits_gold.sql index 596ff9eb..881bf350 100644 --- a/models/staging/spark/fact_spark_gnosis_borrows_deposits_gold.sql +++ b/models/staging/spark/fact_spark_gnosis_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="SPARK") }} +{{ config(materialized="table") }} select date, chain, 'spark' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_spark_gnosis_borrows_deposits") }} diff --git a/models/staging/stacks/fact_stacks_daa_txns.sql b/models/staging/stacks/fact_stacks_daa_txns.sql index 8ecd17d7..213caf1c 100644 --- a/models/staging/stacks/fact_stacks_daa_txns.sql +++ b/models/staging/stacks/fact_stacks_daa_txns.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="STACKS")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/stacks/fact_stacks_native_fees.sql b/models/staging/stacks/fact_stacks_native_fees.sql index 0658bc8c..f10501b9 100644 --- a/models/staging/stacks/fact_stacks_native_fees.sql +++ b/models/staging/stacks/fact_stacks_native_fees.sql @@ -1,5 +1,3 @@ -{{config(snowflake_warehouse="STACKS")}} - with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/stacks/fact_stacks_transactions.sql b/models/staging/stacks/fact_stacks_transactions.sql index 368291df..ca1ae185 100644 --- a/models/staging/stacks/fact_stacks_transactions.sql +++ b/models/staging/stacks/fact_stacks_transactions.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="STACKS") }} +{{ config(materialized="table") }} -- 1e6 (fees should be divided by 1e6) with diff --git a/models/staging/stader/fact_ethx_staked_eth_count.sql b/models/staging/stader/fact_ethx_staked_eth_count.sql index 57b7c0ff..4790b05b 100644 --- a/models/staging/stader/fact_ethx_staked_eth_count.sql +++ b/models/staging/stader/fact_ethx_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="STADER", materialized="table") }} +{{ config(materialized="table") }} -- depends_on: {{ source("PROD_LANDING", "raw_ethx_staked_count_ethereum") }} with raw_eth_supply as ( {{ raw_partitioned_array_to_fact_table_many_columns('landing_database.prod_landing.raw_ethx_staked_count_ethereum', 'date', ['totalAssets', 'getExchangeRate']) }} diff --git a/models/staging/stader/fact_ethx_staked_eth_count_with_usd_and_change.sql b/models/staging/stader/fact_ethx_staked_eth_count_with_usd_and_change.sql index e9e5a8d5..2ba9935b 100644 --- a/models/staging/stader/fact_ethx_staked_eth_count_with_usd_and_change.sql +++ b/models/staging/stader/fact_ethx_staked_eth_count_with_usd_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="STADER", materialized="table") }} +{{ config(materialized="table") }} select *, 'ethereum' as chain, 'ethx' as app, 'DeFi' as category from ( diff --git a/models/staging/stakewise/fact_stakewise_staked_eth_count.sql b/models/staging/stakewise/fact_stakewise_staked_eth_count.sql index 5d9eb354..814b2b43 100644 --- a/models/staging/stakewise/fact_stakewise_staked_eth_count.sql +++ b/models/staging/stakewise/fact_stakewise_staked_eth_count.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="STAKEWISE", materialized="table") }} +{{ config(materialized="table") }} with seth2_max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/stakewise/fact_stakewise_staked_eth_count_with_USD_and_change.sql b/models/staging/stakewise/fact_stakewise_staked_eth_count_with_USD_and_change.sql index 74577586..2f7c3290 100644 --- a/models/staging/stakewise/fact_stakewise_staked_eth_count_with_USD_and_change.sql +++ b/models/staging/stakewise/fact_stakewise_staked_eth_count_with_USD_and_change.sql @@ -1,4 +1,4 @@ -{{ config(snowflake_warehouse="STAKEWISE", materialized="table") }} +{{ config(materialized="table") }} with prices as ({{get_coingecko_price_with_latest("ethereum")}}), temp as ( diff --git a/models/staging/stride/fact_stride_daa.sql b/models/staging/stride/fact_stride_daa.sql index fb2930ae..27afc21e 100644 --- a/models/staging/stride/fact_stride_daa.sql +++ b/models/staging/stride/fact_stride_daa.sql @@ -1,7 +1,6 @@ {{ config( materialized="view", - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/stride/fact_stride_daa_gas_usd_txns.sql b/models/staging/stride/fact_stride_daa_gas_usd_txns.sql index a3851b48..92ef039e 100644 --- a/models/staging/stride/fact_stride_daa_gas_usd_txns.sql +++ b/models/staging/stride/fact_stride_daa_gas_usd_txns.sql @@ -1,7 +1,6 @@ {{ config( materialized="view", - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/stride/fact_stride_gas_usd.sql b/models/staging/stride/fact_stride_gas_usd.sql index 0a628501..c3376b94 100644 --- a/models/staging/stride/fact_stride_gas_usd.sql +++ b/models/staging/stride/fact_stride_gas_usd.sql @@ -1,7 +1,6 @@ {{ config( materialized="view", - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/stride/fact_stride_uniq_daily_senders.sql b/models/staging/stride/fact_stride_uniq_daily_senders.sql index dfbbaadc..6516c3ec 100644 --- a/models/staging/stride/fact_stride_uniq_daily_senders.sql +++ b/models/staging/stride/fact_stride_uniq_daily_senders.sql @@ -1,7 +1,6 @@ {{ config( materialized="view", - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/sui/fact_sui_rolling_active_addresses.sql b/models/staging/sui/fact_sui_rolling_active_addresses.sql index e2342c41..7e4f33f3 100644 --- a/models/staging/sui/fact_sui_rolling_active_addresses.sql +++ b/models/staging/sui/fact_sui_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="SUI", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_dex_swaps.sql b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_dex_swaps.sql index 9b1d757d..d73cea04 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_dex_swaps.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_tvl_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_tvl_by_pool.sql index f0b818c7..a0f1c691 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_tvl_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SUSHISWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_trading_vol_fees_traders_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_trading_vol_fees_traders_by_pool.sql index fb0bc3ea..bba09771 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_tvl_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_tvl_by_pool.sql index d8c66f79..0a81cc8f 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_tvl_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SUSHISWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/sushiswap/fact_sushiswap_v2_bsc_dex_swaps.sql b/models/staging/sushiswap/fact_sushiswap_v2_bsc_dex_swaps.sql index 15f703c7..2d0462b6 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_bsc_dex_swaps.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_bsc_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_bsc_tvl_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_bsc_tvl_by_pool.sql index 968c483e..fb049225 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_bsc_tvl_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_bsc_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SUSHISWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_dex_swaps.sql b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_dex_swaps.sql index 75fe099d..c8b743cd 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_dex_swaps.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql index 6381e041..0d858954 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_tvl_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_tvl_by_pool.sql index c6a1b479..d595df0a 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_ethereum_tvl_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_ethereum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SUSHISWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_dex_swaps.sql b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_dex_swaps.sql index 0173b539..e4591831 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_dex_swaps.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_trading_vol_fees_traders_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_trading_vol_fees_traders_by_pool.sql index d598769c..241a90b8 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_tvl_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_tvl_by_pool.sql index f66e3fed..e2836fff 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_gnosis_tvl_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_gnosis_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="SUSHISWAP_SM") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/ethereum/dim_ethereum_sybil_address.sql b/models/staging/sybil/dim_ethereum_sybil_address.sql similarity index 100% rename from models/staging/ethereum/dim_ethereum_sybil_address.sql rename to models/staging/sybil/dim_ethereum_sybil_address.sql diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index 5f7ffbdb..bf4c7c9f 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key="tx_hash", - snowflake_warehouse="TON", ) }} with raw_data as ( diff --git a/models/staging/trader_joe/fact_trader_joe_arbitrum_dex_swaps.sql b/models/staging/trader_joe/fact_trader_joe_arbitrum_dex_swaps.sql index b70f16cc..3618bde4 100644 --- a/models/staging/trader_joe/fact_trader_joe_arbitrum_dex_swaps.sql +++ b/models/staging/trader_joe/fact_trader_joe_arbitrum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="TRADER_JOE", ) }} diff --git a/models/staging/trader_joe/fact_trader_joe_arbitrum_trading_vol_fees_traders_by_pool.sql b/models/staging/trader_joe/fact_trader_joe_arbitrum_trading_vol_fees_traders_by_pool.sql index f20ba0c8..c65a79e5 100644 --- a/models/staging/trader_joe/fact_trader_joe_arbitrum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/trader_joe/fact_trader_joe_arbitrum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="AVALANCHE", ) }} diff --git a/models/staging/trader_joe/fact_trader_joe_arbitrum_tvl_by_pool.sql b/models/staging/trader_joe/fact_trader_joe_arbitrum_tvl_by_pool.sql index 8672f799..a1eb00b7 100644 --- a/models/staging/trader_joe/fact_trader_joe_arbitrum_tvl_by_pool.sql +++ b/models/staging/trader_joe/fact_trader_joe_arbitrum_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="TRADER_JOE") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/trader_joe/fact_trader_joe_avalanche_dex_swaps.sql b/models/staging/trader_joe/fact_trader_joe_avalanche_dex_swaps.sql index a63e4256..56a5e014 100644 --- a/models/staging/trader_joe/fact_trader_joe_avalanche_dex_swaps.sql +++ b/models/staging/trader_joe/fact_trader_joe_avalanche_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="TRADER_JOE", ) }} diff --git a/models/staging/trader_joe/fact_trader_joe_avalanche_trading_vol_fees_traders_by_pool.sql b/models/staging/trader_joe/fact_trader_joe_avalanche_trading_vol_fees_traders_by_pool.sql index c3165017..0e5b3d12 100644 --- a/models/staging/trader_joe/fact_trader_joe_avalanche_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/trader_joe/fact_trader_joe_avalanche_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="TRADER_JOE", ) }} diff --git a/models/staging/trader_joe/fact_trader_joe_avalanche_tvl_by_pool.sql b/models/staging/trader_joe/fact_trader_joe_avalanche_tvl_by_pool.sql index ce9f0580..628d6063 100644 --- a/models/staging/trader_joe/fact_trader_joe_avalanche_tvl_by_pool.sql +++ b/models/staging/trader_joe/fact_trader_joe_avalanche_tvl_by_pool.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="TRADER_JOE") }} +{{ config(materialized="table") }} {{ fact_daily_uniswap_v2_fork_tvl_by_pool( diff --git a/models/staging/tron/fact_tron_p2p_native_transfers.sql b/models/staging/tron/fact_tron_p2p_native_transfers.sql index 1d7791c8..63ea80fe 100644 --- a/models/staging/tron/fact_tron_p2p_native_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["tx_hash", "index"], - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql index 94adfa1a..d66c8811 100644 --- a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql @@ -3,7 +3,6 @@ config( materialized="table", unique_key=["tx_hash", "index"], - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/tron/fact_tron_p2p_token_transfers.sql b/models/staging/tron/fact_tron_p2p_token_transfers.sql index 5870e2f1..8af992c6 100644 --- a/models/staging/tron/fact_tron_p2p_token_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_token_transfers.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql b/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql index 8736193e..e66a9e2c 100644 --- a/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql +++ b/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql @@ -2,7 +2,6 @@ config( materialized="table", unique_key=["tx_hash", "index"], - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/tron/fact_tron_p2p_transfer_volume.sql b/models/staging/tron/fact_tron_p2p_transfer_volume.sql index 979fc239..be1e35f1 100644 --- a/models/staging/tron/fact_tron_p2p_transfer_volume.sql +++ b/models/staging/tron/fact_tron_p2p_transfer_volume.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v3_arbitrum_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_arbitrum_dex_swaps.sql index 5a31024a..6baaf733 100644 --- a/models/staging/uniswap/fact_uniswap_v3_arbitrum_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_arbitrum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql index 40e45d14..9373c130 100644 --- a/models/staging/uniswap/fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_avalanche_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_avalanche_dex_swaps.sql index 55bbb844..4d43a363 100644 --- a/models/staging/uniswap/fact_uniswap_v3_avalanche_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_avalanche_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool.sql index 1a0fb911..99c7f9ab 100644 --- a/models/staging/uniswap/fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_base_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_base_dex_swaps.sql index b1c0268d..35131363 100644 --- a/models/staging/uniswap/fact_uniswap_v3_base_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_base_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool.sql index abdf5f30..49cd1141 100644 --- a/models/staging/uniswap/fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits.sql b/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits.sql index 2f93458c..18d5f276 100644 --- a/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits.sql +++ b/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="UWULEND") }} +{{ config(materialized="table") }} {{ fact_aave_fork_lending( "raw_uwulend_ethereum_borrows_deposits", "ethereum", "uwulend" diff --git a/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits_gold.sql b/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits_gold.sql index 5f432b44..c89be9cf 100644 --- a/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits_gold.sql +++ b/models/staging/uwu_lend/fact_uwu_lend_ethereum_borrows_deposits_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="UWULEND") }} +{{ config(materialized="table") }} select date, chain, 'uwulend' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_uwu_lend_ethereum_borrows_deposits") }} diff --git a/models/staging/venus/fact_venus_v4_lending_bsc_gold.sql b/models/staging/venus/fact_venus_v4_lending_bsc_gold.sql index 6c2c1e30..7f1974a0 100644 --- a/models/staging/venus/fact_venus_v4_lending_bsc_gold.sql +++ b/models/staging/venus/fact_venus_v4_lending_bsc_gold.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="VENUS") }} +{{ config(materialized="table") }} select date, chain, 'venus' as app, category, daily_borrows_usd, daily_supply_usd from {{ ref("fact_venus_v4_lending_bsc") }} diff --git a/models/staging/zcash/fact_zcash_gas_gas_usd_txns.sql b/models/staging/zcash/fact_zcash_gas_gas_usd_txns.sql index 739b1d9e..7edf5d30 100644 --- a/models/staging/zcash/fact_zcash_gas_gas_usd_txns.sql +++ b/models/staging/zcash/fact_zcash_gas_gas_usd_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="ZCASH") }} +{{ config(materialized="view") }} with max_extraction as ( select max(extraction_date) as max_date diff --git a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql index 7c4cf2b0..6b5b58d6 100644 --- a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql +++ b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql @@ -1,4 +1,4 @@ -{{ config(materialized="view", snowflake_warehouse="ZKSYNC") }} +{{ config(materialized="view") }} with max_extraction as ( diff --git a/models/staging/zksync/fact_zksync_revenue.sql b/models/staging/zksync/fact_zksync_revenue.sql index 90f90fcc..3e473255 100644 --- a/models/staging/zksync/fact_zksync_revenue.sql +++ b/models/staging/zksync/fact_zksync_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="ZKSYNC") }} +{{ config(materialized="table") }} with gas as ( select date, gas, gas_usd, 'zksync' as chain diff --git a/models/staging/zksync/fact_zksync_rolling_active_addresses.sql b/models/staging/zksync/fact_zksync_rolling_active_addresses.sql index 0013f262..5a05513f 100644 --- a/models/staging/zksync/fact_zksync_rolling_active_addresses.sql +++ b/models/staging/zksync/fact_zksync_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="ZKSYNC", ) }} diff --git a/models/staging/zora/fact_zora_daa.sql b/models/staging/zora/fact_zora_daa.sql index 788da87d..8fd986c6 100644 --- a/models/staging/zora/fact_zora_daa.sql +++ b/models/staging/zora/fact_zora_daa.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="ZORA") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(distinct from_address), 0) as daa, diff --git a/models/staging/zora/fact_zora_gas_gas_usd_revenue.sql b/models/staging/zora/fact_zora_gas_gas_usd_revenue.sql index 2ec104cd..e171e9db 100644 --- a/models/staging/zora/fact_zora_gas_gas_usd_revenue.sql +++ b/models/staging/zora/fact_zora_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="ZORA") }} +{{ config(materialized="table") }} with gas as ( select diff --git a/models/staging/zora/fact_zora_transactions.sql b/models/staging/zora/fact_zora_transactions.sql index ed13483c..6991510d 100644 --- a/models/staging/zora/fact_zora_transactions.sql +++ b/models/staging/zora/fact_zora_transactions.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="ZORA") }} +{{ config(materialized="table") }} with raw_receipt_transactions as ( select diff --git a/models/staging/zora/fact_zora_txns.sql b/models/staging/zora/fact_zora_txns.sql index e6da47b7..dab5fc55 100644 --- a/models/staging/zora/fact_zora_txns.sql +++ b/models/staging/zora/fact_zora_txns.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="ZORA") }} +{{ config(materialized="table") }} select to_timestamp(block_timestamp)::date as date, coalesce(count(*), 0) as txns, From 376466890b7dd8d4a071e299c2790db141acc347 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 16 Jul 2024 07:42:29 -0400 Subject: [PATCH 044/213] Add Additional Injective Rollups (#297) --- .../injective/core/ez_injective_metrics.sql | 34 ++++++++++--------- .../ez_injective_metrics_by_application.sql | 13 +++++++ .../core/ez_injective_metrics_by_category.sql | 13 +++++++ .../core/ez_injective_metrics_by_contract.sql | 13 +++++++ .../injective/__injective__sources.yml | 5 +++ 5 files changed, 62 insertions(+), 16 deletions(-) create mode 100644 models/projects/injective/core/ez_injective_metrics_by_application.sql create mode 100644 models/projects/injective/core/ez_injective_metrics_by_category.sql create mode 100644 models/projects/injective/core/ez_injective_metrics_by_contract.sql diff --git a/models/projects/injective/core/ez_injective_metrics.sql b/models/projects/injective/core/ez_injective_metrics.sql index e3243be0..0697e02f 100644 --- a/models/projects/injective/core/ez_injective_metrics.sql +++ b/models/projects/injective/core/ez_injective_metrics.sql @@ -9,25 +9,27 @@ }} with - dau as (select * from {{ ref("fact_injective_dau_silver") }}), + -- Alternative fundamental source from BigQuery, preferred when possible over Snowflake data + fundamental_data as (select * EXCLUDE date, TO_DATE(TO_TIMESTAMP_NTZ(date)) AS date from {{ source('PROD_LANDING', 'ez_injective_metrics') }}), daily_txns as (select * from {{ ref("fact_injective_daily_txns_silver") }}), - fees_native as (select * from {{ ref("fact_injective_fees_native_silver") }}), - fees_usd as (select * from {{ ref("fact_injective_fees_usd_silver") }}), revenue as (select * from {{ ref("fact_injective_revenue_silver") }}), mints as (select * from {{ ref("fact_injective_mints_silver") }}) - select - dau.date, + fundamental_data.date, 'injective' as chain, - dau.dau, - daily_txns.txns, - fees_usd.fees, - fees_native.fees_native, + fundamental_data.dau, + fundamental_data.txns, + fundamental_data.fees, + fundamental_data.fees_native, + fundamental_data.avg_txn_fee, + fundamental_data.returning_users, + fundamental_data.new_users, coalesce(revenue.revenue, 0) as revenue, - mints.mints -from dau -left join daily_txns on dau.date = daily_txns.date -left join fees_usd on dau.date = fees_usd.date -left join fees_native on dau.date = fees_native.date -left join revenue on dau.date = revenue.date -left join mints on dau.date = mints.date + mints.mints, + null as low_sleep_users, + null as high_sleep_users, + null as sybil_users, + null as non_sybil_users +from fundamental_data +left join revenue on fundamental_data.date = revenue.date +left join mints on fundamental_data.date = mints.date \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_application.sql b/models/projects/injective/core/ez_injective_metrics_by_application.sql new file mode 100644 index 00000000..993e7ee3 --- /dev/null +++ b/models/projects/injective/core/ez_injective_metrics_by_application.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + snowflake_warehouse="INJECTIVE", + database="injective", + schema="core", + alias="ez_metrics_by_application", + ) +}} +SELECT + * EXCLUDE date, + TO_TIMESTAMP_NTZ(date) AS date +FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_category.sql b/models/projects/injective/core/ez_injective_metrics_by_category.sql new file mode 100644 index 00000000..ba707c58 --- /dev/null +++ b/models/projects/injective/core/ez_injective_metrics_by_category.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + snowflake_warehouse="INJECTIVE", + database="injective", + schema="core", + alias="ez_metrics_by_category", + ) +}} +SELECT + * EXCLUDE date, + TO_TIMESTAMP_NTZ(date) AS date +FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_category') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_contract.sql b/models/projects/injective/core/ez_injective_metrics_by_contract.sql new file mode 100644 index 00000000..141d74bc --- /dev/null +++ b/models/projects/injective/core/ez_injective_metrics_by_contract.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + snowflake_warehouse="INJECTIVE", + database="injective", + schema="core", + alias="ez_metrics_by_contract", + ) +}} +SELECT + * EXCLUDE date, + TO_TIMESTAMP_NTZ(date) AS date +FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_contract') }} \ No newline at end of file diff --git a/models/staging/injective/__injective__sources.yml b/models/staging/injective/__injective__sources.yml index cb2bd427..8910093a 100644 --- a/models/staging/injective/__injective__sources.yml +++ b/models/staging/injective/__injective__sources.yml @@ -9,6 +9,11 @@ sources: - name: raw_injective_fees_native_all - name: raw_injective_revenue - name: raw_injective_mints + - name: ez_injective_metrics + - name: ez_injective_metrics_by_application + - name: ez_injective_metrics_by_category + - name: ez_injective_metrics_by_contract + - name: injective_bridge_flows - name: PROD schema: PROD database: PC_DBT_DB From cfe6ef6554af581287e30ad511b5dc6385081e41 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 16 Jul 2024 09:46:21 -0400 Subject: [PATCH 045/213] Fix uwu_lend node name (#298) --- dbt_project.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbt_project.yml b/dbt_project.yml index ca5a4a21..23f3ecc7 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -162,7 +162,7 @@ models: # TODO: also should be UNISWAP uniswap: +snowflake_warehouse: "UNISWAP_SM" - uwulend: + uwu_lend: +snowflake_warehouse: "UWULEND" venus: +snowflake_warehouse: "VENUS" From ac2ed41ea644c754e7d18d80fce302ce44c65684 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 16 Jul 2024 10:04:36 -0400 Subject: [PATCH 046/213] Chainlink: -rm -rf old models (#293) --- .../chainlink/__chainlink__sources.yml | 6 ----- ...hainlink_daily_req_unique_req_and_fees.yml | 27 ------------------- ...hainlink_daily_req_unique_req_and_fees.sql | 21 --------------- ...ink_daily_req_unique_req_and_fees_gold.sql | 4 --- 4 files changed, 58 deletions(-) delete mode 100644 models/staging/chainlink/__chainlink__sources.yml delete mode 100644 models/staging/chainlink/_test_chainlink_daily_req_unique_req_and_fees.yml delete mode 100644 models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees.sql delete mode 100644 models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees_gold.sql diff --git a/models/staging/chainlink/__chainlink__sources.yml b/models/staging/chainlink/__chainlink__sources.yml deleted file mode 100644 index 16ccc274..00000000 --- a/models/staging/chainlink/__chainlink__sources.yml +++ /dev/null @@ -1,6 +0,0 @@ -sources: - - name: PROD_LANDING - schema: PROD_LANDING - database: LANDING_DATABASE - tables: - - name: raw_chainlink_daily_req_unique_req_and_fees diff --git a/models/staging/chainlink/_test_chainlink_daily_req_unique_req_and_fees.yml b/models/staging/chainlink/_test_chainlink_daily_req_unique_req_and_fees.yml deleted file mode 100644 index 079c57a3..00000000 --- a/models/staging/chainlink/_test_chainlink_daily_req_unique_req_and_fees.yml +++ /dev/null @@ -1,27 +0,0 @@ -models: -- name: fact_chainlink_daily_req_unique_req_and_fees - tests: - - 'dbt_expectations.expect_table_row_count_to_be_between:': - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: TOTAL_REQUESTS - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: TOTAL_UNIQUE_REQUESTERS - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: TOTAL_USD_FEES - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees.sql b/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees.sql deleted file mode 100644 index 33d9a6cc..00000000 --- a/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees.sql +++ /dev/null @@ -1,21 +0,0 @@ -with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_chainlink_daily_req_unique_req_and_fees") }} - ), - latest_data as ( - select parse_json(source_json) as data - from {{ source("PROD_LANDING", "raw_chainlink_daily_req_unique_req_and_fees") }} - where extraction_date = (select max_date from max_extraction) - ), - flattened_data as ( - select - value:day::date as date, - value:"total_reqs"::int as total_requests, - value:"total_unique_requesters"::int as total_unique_requesters, - value:"total_usd_fees"::float as total_usd_fees - from latest_data, lateral flatten(input => data) - ) -select date, total_requests, total_unique_requesters, total_usd_fees -from flattened_data -order by date desc diff --git a/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees_gold.sql b/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees_gold.sql deleted file mode 100644 index 8ea475d7..00000000 --- a/models/staging/chainlink/fact_chainlink_daily_req_unique_req_and_fees_gold.sql +++ /dev/null @@ -1,4 +0,0 @@ -{{ config(materialized="table") }} -select * -from {{ ref("fact_chainlink_daily_req_unique_req_and_fees") }} -where date < to_date(sysdate()) From d986a2ee3b533b7c59725515769e0398c58075df Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:07:53 -0400 Subject: [PATCH 047/213] Update Staging Warehouses (#299) --- dbt_project.yml | 5 +++-- .../avalanche/fact_avalanche_amount_staked_silver.sql | 1 - models/staging/beam/fact_beam_fundamental_metrics.sql | 2 +- models/staging/polygon/fact_polygon_daily_sleep.sql | 1 - models/staging/polygon/fact_polygon_p2p_native_transfers.sql | 1 - .../staging/stride/fact_stride_rolling_active_addresses.sql | 1 - models/staging/stride/fact_stride_txns.sql | 1 - ...ushiswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql | 1 - .../sushiswap/fact_sushiswap_v2_avalanche_dex_swaps.sql | 1 - ...act_sushiswap_v2_bsc_trading_vol_fees_traders_by_pool.sql | 1 - models/staging/tron/fact_tron_rolling_active_addresses.sql | 1 - .../staging/uniswap/fact_uniswap_v2_ethereum_dex_swaps.sql | 1 - ..._uniswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql | 1 - ...fact_uniswap_v3_base_trading_vol_fees_traders_by_pool.sql | 1 - models/staging/uniswap/fact_uniswap_v3_bsc_dex_swaps.sql | 1 - .../fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool.sql | 1 - .../staging/uniswap/fact_uniswap_v3_ethereum_dex_swaps.sql | 1 - ..._uniswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql | 1 - .../staging/uniswap/fact_uniswap_v3_optimism_dex_swaps.sql | 1 - ..._uniswap_v3_optimism_trading_vol_fees_traders_by_pool.sql | 1 - models/staging/uniswap/fact_uniswap_v3_polygon_dex_swaps.sql | 1 - 21 files changed, 4 insertions(+), 22 deletions(-) diff --git a/dbt_project.yml b/dbt_project.yml index 23f3ecc7..87961b38 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -57,6 +57,8 @@ models: +snowflake_warehouse: "AXELAR" base: +snowflake_warehouse: "BASE" + beam: + +snowflake_warehouse: "BEAM" benqi: +snowflake_warehouse: "BENQI_FINANCE" bitcoin: @@ -134,7 +136,7 @@ models: scroll: +snowflake_warehouse: "SCROLL" seamless: - +snowflake_warehouse: "SEAMLESS_PROTOCOL" + +snowflake_warehouse: "SEAMLESSPROTOCOL" sei: +snowflake_warehouse: "SEI" solana: @@ -159,7 +161,6 @@ models: +snowflake_warehouse: "TRADER_JOE" tron: +snowflake_warehouse: "TRON" - # TODO: also should be UNISWAP uniswap: +snowflake_warehouse: "UNISWAP_SM" uwu_lend: diff --git a/models/staging/avalanche/fact_avalanche_amount_staked_silver.sql b/models/staging/avalanche/fact_avalanche_amount_staked_silver.sql index 47706c63..4fd0e518 100644 --- a/models/staging/avalanche/fact_avalanche_amount_staked_silver.sql +++ b/models/staging/avalanche/fact_avalanche_amount_staked_silver.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="AVALANCHE", ) }} with diff --git a/models/staging/beam/fact_beam_fundamental_metrics.sql b/models/staging/beam/fact_beam_fundamental_metrics.sql index bcbef00b..0fe89662 100644 --- a/models/staging/beam/fact_beam_fundamental_metrics.sql +++ b/models/staging/beam/fact_beam_fundamental_metrics.sql @@ -1,2 +1,2 @@ -{{ config(materialized="table", snowflake_warehouse="BEAM") }} +{{ config(materialized="table") }} {{ transform_avalanche_subnets_fundamental_data('beam') }} diff --git a/models/staging/polygon/fact_polygon_daily_sleep.sql b/models/staging/polygon/fact_polygon_daily_sleep.sql index ebd7714a..c44d342e 100644 --- a/models/staging/polygon/fact_polygon_daily_sleep.sql +++ b/models/staging/polygon/fact_polygon_daily_sleep.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["from_address", "raw_date"], - snowflake_warehouse="polygon", ) }} diff --git a/models/staging/polygon/fact_polygon_p2p_native_transfers.sql b/models/staging/polygon/fact_polygon_p2p_native_transfers.sql index 84c8b4e5..700d36c4 100644 --- a/models/staging/polygon/fact_polygon_p2p_native_transfers.sql +++ b/models/staging/polygon/fact_polygon_p2p_native_transfers.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "index"], - snowflake_warehouse="POLYGON", ) }} diff --git a/models/staging/stride/fact_stride_rolling_active_addresses.sql b/models/staging/stride/fact_stride_rolling_active_addresses.sql index bae66bad..28774394 100644 --- a/models/staging/stride/fact_stride_rolling_active_addresses.sql +++ b/models/staging/stride/fact_stride_rolling_active_addresses.sql @@ -3,7 +3,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/stride/fact_stride_txns.sql b/models/staging/stride/fact_stride_txns.sql index 13613ba8..d9022e0c 100644 --- a/models/staging/stride/fact_stride_txns.sql +++ b/models/staging/stride/fact_stride_txns.sql @@ -1,7 +1,6 @@ {{ config( materialized="view", - snowflake_warehouse="STRIDE", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql index e90f51d0..ce98b59a 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_arbitrum_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_dex_swaps.sql b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_dex_swaps.sql index cf1cc1bf..facbf0af 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_avalanche_dex_swaps.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_avalanche_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/sushiswap/fact_sushiswap_v2_bsc_trading_vol_fees_traders_by_pool.sql b/models/staging/sushiswap/fact_sushiswap_v2_bsc_trading_vol_fees_traders_by_pool.sql index 73aacb38..d3310230 100644 --- a/models/staging/sushiswap/fact_sushiswap_v2_bsc_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/sushiswap/fact_sushiswap_v2_bsc_trading_vol_fees_traders_by_pool.sql @@ -2,7 +2,6 @@ {{ config( materialized="table", - snowflake_warehouse="SUSHISWAP_SM", ) }} diff --git a/models/staging/tron/fact_tron_rolling_active_addresses.sql b/models/staging/tron/fact_tron_rolling_active_addresses.sql index a2a59dcb..2490ae35 100644 --- a/models/staging/tron/fact_tron_rolling_active_addresses.sql +++ b/models/staging/tron/fact_tron_rolling_active_addresses.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["date"], - snowflake_warehouse="TRON", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v2_ethereum_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v2_ethereum_dex_swaps.sql index ec58b0ec..62826f1d 100644 --- a/models/staging/uniswap/fact_uniswap_v2_ethereum_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v2_ethereum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql index 97458a50..8368b8af 100644 --- a/models/staging/uniswap/fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v3_base_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_base_trading_vol_fees_traders_by_pool.sql index b1c0bf46..ea3ecb39 100644 --- a/models/staging/uniswap/fact_uniswap_v3_base_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_base_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_bsc_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_bsc_dex_swaps.sql index e820880c..174547a4 100644 --- a/models/staging/uniswap/fact_uniswap_v3_bsc_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_bsc_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool.sql index 0b4e137a..e5d6a5b9 100644 --- a/models/staging/uniswap/fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} diff --git a/models/staging/uniswap/fact_uniswap_v3_ethereum_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_ethereum_dex_swaps.sql index 274b7d83..7b76d83b 100644 --- a/models/staging/uniswap/fact_uniswap_v3_ethereum_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_ethereum_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql index 4267405c..c3eac9bb 100644 --- a/models/staging/uniswap/fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_optimism_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_optimism_dex_swaps.sql index c5e75bf5..f91c1563 100644 --- a/models/staging/uniswap/fact_uniswap_v3_optimism_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_optimism_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool.sql index c2590b16..0a4d2198 100644 --- a/models/staging/uniswap/fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool.sql +++ b/models/staging/uniswap/fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool.sql @@ -1,7 +1,6 @@ {{ config( materialized="table", - snowflake_warehouse="UNISWAP_SM", ) }} {{ diff --git a/models/staging/uniswap/fact_uniswap_v3_polygon_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_polygon_dex_swaps.sql index d93f6856..2f95da77 100644 --- a/models/staging/uniswap/fact_uniswap_v3_polygon_dex_swaps.sql +++ b/models/staging/uniswap/fact_uniswap_v3_polygon_dex_swaps.sql @@ -2,7 +2,6 @@ config( materialized="incremental", unique_key=["tx_hash", "event_index"], - snowflake_warehouse="UNISWAP_SM", ) }} {{ From 74b9189eb69b5d24f65d11dc7338c69bcbfd8df0 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:34:13 -0400 Subject: [PATCH 048/213] Stablecoin V2: EVM Models (#300) --- ...agg_daily_stablecoin_metrics_breakdown.sql | 37 ++++++------------- ...illed_stablecoin_balances_by_addresses.sql | 37 ++++++++++++++----- .../agg_daily_stablecoin_breakdown_silver.sql | 11 +++++- ..._ethereum_stablecoin_premint_addresses.sql | 5 +++ ...rum_daily_stablecoin_metrics_breakdown.sql | 2 +- ...che_daily_stablecoin_metrics_breakdown.sql | 2 +- ...ase_daily_stablecoin_metrics_breakdown.sql | 2 +- ...ast_daily_stablecoin_metrics_breakdown.sql | 2 +- ...bsc_daily_stablecoin_metrics_breakdown.sql | 2 +- ...eum_daily_stablecoin_metrics_breakdown.sql | 4 +- ...ism_daily_stablecoin_metrics_breakdown.sql | 2 +- ...gon_daily_stablecoin_metrics_breakdown.sql | 2 +- ...ron_daily_stablecoin_metrics_breakdown.sql | 9 +++++ 13 files changed, 72 insertions(+), 45 deletions(-) create mode 100644 models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql diff --git a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql index 30ffb652..d59a9c90 100644 --- a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql +++ b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql @@ -1,4 +1,4 @@ -{% macro agg_daily_stablecoin_metrics_breakdown(chain, label_source='ARTEMIS') %} +{% macro agg_daily_stablecoin_metrics_breakdown(chain) %} with transfer_transactions as ( select @@ -38,41 +38,23 @@ with filtered_contracts as ( select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' ), - artemis_contract_filters as ( - {% if label_source == 'ARTEMIS' %} - select - address - , name - , app - , category - from {{ ref("dim_contracts_gold")}} - where chain = '{{ chain }}' - {% elif label_source == 'FLIPSIDE' %} - select - address - , address_name as name - , label as app - , label_type as category - from ethereum_flipside.core.dim_labels - {% endif %} - ), artemis_mev_filtered as ( select st.* , coalesce(dl.app,'other') as from_app , coalesce(dlt.app,'other') as to_app - , coalesce(dl.category,'other') as from_category - , coalesce(dlt.category,'other') as to_category + , coalesce(dl.sub_category,'other') as from_category + , coalesce(dlt.sub_category,'other') as to_category from transfer_transactions st - left join artemis_contract_filters dl on st.from_address = dl.address - left join artemis_contract_filters dlt on st.to_address = dlt.address + left join filtered_contracts dl on lower(st.from_address) = lower(dl.address) + left join filtered_contracts dlt on lower(st.to_address) = lower(dlt.address) where lower(from_app) != 'mev' or lower(to_app) != 'mev' ), artemis_cex_filters as ( select distinct tx_hash from artemis_mev_filtered where from_app = to_app - and lower(from_category) = 'cex' + and lower(from_category) in ('exchange', 'market maker') ), artemis_ranked_transfer_filter as ( select @@ -148,7 +130,11 @@ with , filtered_contracts.friendly_name as application , dim_apps_gold.icon as icon , filtered_contracts.app as app - , filtered_contracts.category as category + , case + when filtered_contracts.sub_category = 'Market Maker' then filtered_contracts.sub_category + when filtered_contracts.sub_category = 'Exchange' then filtered_contracts.sub_category + else filtered_contracts.category + end as category , coalesce(stablecoin_transfer_volume, 0) as stablecoin_transfer_volume , coalesce(stablecoin_daily_txns, 0) as stablecoin_daily_txns @@ -186,6 +172,7 @@ with on lower(balances.address) = lower(filtered_contracts.address) left join pc_dbt_db.prod.dim_apps_gold dim_apps_gold on filtered_contracts.app = dim_apps_gold.namespace + -- Remove rows that do not add to any metrics where balances.stablecoin_supply != 0 or transfer_transactions_agg.from_address is not null {% if is_incremental() %} and balances.date >= (select dateadd('day', -3, max(date)) from {{ this }}) diff --git a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql index 2cc69c9d..9b910961 100644 --- a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql +++ b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql @@ -7,9 +7,8 @@ {% set backfill_date = '' %} with - stablecoin_senders as (select from_address from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}}) - , stablecoin_balances as ( - select + stablecoin_balances as ( + select block_timestamp , lower(t1.contract_address) as contract_address , symbol @@ -22,11 +21,14 @@ with from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 inner join {{ ref("fact_" ~ chain ~ "_stablecoin_contracts")}} t2 on lower(t1.contract_address) = lower(t2.contract_address) - where lower(address) in (select lower(from_address) from stablecoin_senders) and block_timestamp < to_date(sysdate()) + where block_timestamp < to_date(sysdate()) + {% if chain == 'tron' %} + and lower(address) != lower('t9yd14nj9j7xab4dbgeix9h8unkkhxuwwb') --Tron Burn Address + and stablecoin_supply > 0 + {% endif %} {% if backfill_date != '' %} and block_timestamp < '{{ backfill_date }}' {% endif %} - and block_timestamp < to_date(sysdate()) {% if is_incremental() %} and block_timestamp >= (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} @@ -124,9 +126,16 @@ with ) as stablecoin_supply from date_range left join balances using (date, contract_address, symbol, address) - where address not in (select distinct (premint_address) from {{ ref("fact_solana_stablecoin_premint_addresses")}}) + {% if chain in ('solana', 'ethereum', 'tron') %} + where address not in (select distinct (premint_address) from {{ ref("fact_"~chain~"_stablecoin_premint_addresses")}}) + {% endif %} {% if is_incremental() %} - and date > (select max(date) from {{ this }}) + {% if chain in ('solana', 'ethereum', 'tron') %} + and + {% else %} + where + {% endif %} + date > (select max(date) from {{ this }}) {% endif %} ) , daily_flows as ( @@ -187,7 +196,12 @@ with , address , contract_address , symbol - , stablecoin_supply + {% if chain == 'tron' %} + , round(stablecoin_supply, 4) as stablecoin_supply + {% else %} + , stablecoin_supply + {% endif %} + from historical_supply_by_address_balances union -- this is a hacky way to fix the issue with the balances table and get the total supply for that day @@ -196,7 +210,12 @@ with , '0x00000000000000000000000000000DEADARTEMIS' as address , contract_address , symbol - , historical_supply_by_inflow_outflow.stablecoin_supply - total_historical_supply_by_address_balances.stablecoin_supply as stablecoin_supply + {% if chain == 'tron' %} + , round(round(historical_supply_by_inflow_outflow.stablecoin_supply, 4) - round(total_historical_supply_by_address_balances.stablecoin_supply, 4), 0) as stablecoin_supply + {% else %} + , historical_supply_by_inflow_outflow.stablecoin_supply - total_historical_supply_by_address_balances.stablecoin_supply as stablecoin_supply + {% endif %} + from total_historical_supply_by_address_balances left join historical_supply_by_inflow_outflow using (date, contract_address, symbol) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index f73bec2e..cc649230 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -1,11 +1,18 @@ -{{ config(materialized="table") }} +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} with daily_data as ( {{ dbt_utils.union_relations( relations=[ - ref("agg_ethereum_daily_stablecoin_metrics_breakdown"), ref("agg_base_daily_stablecoin_metrics_breakdown"), + ref("agg_blast_daily_stablecoin_metrics_breakdown"), + ref("agg_arbitrum_daily_stablecoin_metrics_breakdown"), + ref("agg_optimism_daily_stablecoin_metrics_breakdown"), + ref("agg_avalanche_daily_stablecoin_metrics_breakdown"), + ref("agg_polygon_daily_stablecoin_metrics_breakdown"), + ref("agg_ethereum_daily_stablecoin_metrics_breakdown"), + ref("agg_tron_daily_stablecoin_metrics_breakdown"), + ref("agg_bsc_daily_stablecoin_metrics_breakdown"), ] ) }} diff --git a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql index a63cf009..1bc8967a 100644 --- a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql +++ b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql @@ -40,5 +40,10 @@ from ( '0xdAC17F958D2ee523a2206206994597C13D831ec7', '0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503' + ), + -- Un-released Supply + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x5754284f345afc66a98fbb0a0afe71e0f007b949' ) ) as results(contract_address, premint_address) diff --git a/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql b/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql index 0a95d9d6..acae1e23 100644 --- a/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="STABLECOIN_V2_LG", ) }} diff --git a/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql b/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql index 56a9bf83..58d8e43d 100644 --- a/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG_2", + snowflake_warehouse="STABLECOIN_V2_LG", ) }} diff --git a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql index 9c39b780..a624860b 100644 --- a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="STABLECOIN_V2_LG", ) }} diff --git a/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql b/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql index fa85c865..7dc62d92 100644 --- a/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG_2", + snowflake_warehouse="STABLECOIN_V2_LG_2", ) }} diff --git a/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql b/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql index 06951b30..5b0c9054 100644 --- a/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="STABLECOIN_V2_LG", ) }} diff --git a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql b/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql index f466ab37..dab81c21 100644 --- a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql @@ -2,8 +2,8 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG", + snowflake_warehouse="STABLECOIN_V2_LG_2", ) }} -{{ agg_daily_stablecoin_metrics_breakdown("ethereum", "FLIPSIDE") }} \ No newline at end of file +{{ agg_daily_stablecoin_metrics_breakdown("ethereum") }} \ No newline at end of file diff --git a/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql b/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql index e65a842b..66cf716a 100644 --- a/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG_2", + snowflake_warehouse="STABLECOIN_V2_LG_2", ) }} diff --git a/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql b/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql index fe333011..01d79a05 100644 --- a/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql +++ b/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql @@ -2,7 +2,7 @@ config( materialized="incremental", unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="BALANCES_LG_2", + snowflake_warehouse="STABLECOIN_V2_LG_2", ) }} diff --git a/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql b/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql new file mode 100644 index 00000000..b7c891bd --- /dev/null +++ b/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + unique_key=["date", "contract_address", "from_address"], + snowflake_warehouse="STABLECOIN_V2_LG", + ) +}} + +{{ agg_daily_stablecoin_metrics_breakdown("tron") }} From 5506cf46438ff506a20e6e16ab7344e0a1cff10e Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 16 Jul 2024 13:41:25 -0700 Subject: [PATCH 049/213] Used Coingecko Price Data when available (#302) --- .../ton/core/__ez_ton_core_sources__.yml | 5 ++ .../ton/core/ez_ton_token_open_league.sql | 62 +++++++++++++++++-- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/models/projects/ton/core/__ez_ton_core_sources__.yml b/models/projects/ton/core/__ez_ton_core_sources__.yml index 7306a805..554470e1 100644 --- a/models/projects/ton/core/__ez_ton_core_sources__.yml +++ b/models/projects/ton/core/__ez_ton_core_sources__.yml @@ -4,3 +4,8 @@ sources: database: TON tables: - name: ez_ton_current_balances + - name: SIGMA + schema: PROD + database: SIGMA + tables: + - name: ton_token_coingecko_id diff --git a/models/projects/ton/core/ez_ton_token_open_league.sql b/models/projects/ton/core/ez_ton_token_open_league.sql index a03b8669..85ac0e36 100644 --- a/models/projects/ton/core/ez_ton_token_open_league.sql +++ b/models/projects/ton/core/ez_ton_token_open_league.sql @@ -7,8 +7,60 @@ alias="ez_token_open_league", ) }} +WITH ton_coingecko_price_data as ( + SELECT + date, + coingecko_id, + shifted_token_price_usd as price + FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted + where coingecko_id in (select distinct coingecko_id from {{ source("SIGMA", "ton_token_coingecko_id")}}) + union + SELECT + dateadd('day', -1, date) as date, + token_id as coingecko_id, + token_current_price as price + from pc_dbt_db.prod.fact_coingecko_token_realtime_data + where token_id in (select distinct coingecko_id from {{ source("SIGMA", "ton_token_coingecko_id")}}) +), collapsed_prices as ( + select date, coingecko_id, max(price) as price from ton_coingecko_price_data group by date, coingecko_id +), daily_price_changes as ( + select + date + , coingecko_id + , price + , CASE + WHEN LAG(price) OVER (PARTITION BY coingecko_id ORDER BY date) = 0 THEN NULL + ELSE (price - LAG(price) OVER (PARTITION BY coingecko_id ORDER BY date)) / LAG(price) OVER (PARTITION BY coingecko_id ORDER BY date) * 100 + END AS price_chg + from collapsed_prices +), ton_token_data as ( + SELECT + date + , unique_id + , season + , has_boost + , boost_link + , icon + , is_meme + , name + , friendly_name + , new_users_min_amount + , price_change_normed + , price_change_simple + , score + , token_address + , token_last_tvl + , token_price_after + , token_price_before + , token_start_tvl + , token_tvl_change + , url + , coingecko_id + from {{ ref("fact_ton_token_open_league") }} + left join {{ source("SIGMA", "ton_token_coingecko_id")}} on name = ton_token +) SELECT - date + ton_token_data.date , unique_id , season , has_boost @@ -19,13 +71,15 @@ SELECT , friendly_name , new_users_min_amount , price_change_normed - , price_change_simple + , coalesce(price_chg, price_change_simple) as price_change_simple , score , token_address , token_last_tvl - , token_price_after + , coalesce(price, token_price_after) as token_price_after , token_price_before , token_start_tvl , token_tvl_change , url -from {{ ref("fact_ton_token_open_league") }} + , ton_token_data.coingecko_id +from ton_token_data +left join daily_price_changes on ton_token_data.date = daily_price_changes.date and ton_token_data.coingecko_id = daily_price_changes.coingecko_id From 616475276dd0e236d65f54d350c1d05c297848ef Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 17 Jul 2024 08:03:50 -0700 Subject: [PATCH 050/213] Convert TOL DEX TVL to usd (#304) --- models/projects/ton/core/ez_ton_token_open_league.sql | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/models/projects/ton/core/ez_ton_token_open_league.sql b/models/projects/ton/core/ez_ton_token_open_league.sql index 85ac0e36..edac9ebe 100644 --- a/models/projects/ton/core/ez_ton_token_open_league.sql +++ b/models/projects/ton/core/ez_ton_token_open_league.sql @@ -7,7 +7,10 @@ alias="ez_token_open_league", ) }} -WITH ton_coingecko_price_data as ( +WITH +ton_prices as ( + {{ get_coingecko_price_with_latest('the-open-network') }} +), jetton_coingecko_price_data as ( SELECT date, coingecko_id, @@ -22,7 +25,7 @@ WITH ton_coingecko_price_data as ( from pc_dbt_db.prod.fact_coingecko_token_realtime_data where token_id in (select distinct coingecko_id from {{ source("SIGMA", "ton_token_coingecko_id")}}) ), collapsed_prices as ( - select date, coingecko_id, max(price) as price from ton_coingecko_price_data group by date, coingecko_id + select date, coingecko_id, max(price) as price from jetton_coingecko_price_data group by date, coingecko_id ), daily_price_changes as ( select date @@ -75,7 +78,8 @@ SELECT , score , token_address , token_last_tvl - , coalesce(price, token_price_after) as token_price_after + , token_last_tvl * ton_prices.price as token_last_tvl_usd + , coalesce(daily_price_changes.price, token_price_after) as token_price_after , token_price_before , token_start_tvl , token_tvl_change @@ -83,3 +87,4 @@ SELECT , ton_token_data.coingecko_id from ton_token_data left join daily_price_changes on ton_token_data.date = daily_price_changes.date and ton_token_data.coingecko_id = daily_price_changes.coingecko_id +left join ton_prices on ton_token_data.date = ton_prices.date From 5beeb77e12d4ca704e2fbaaba52d0a2e2d0aa810 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Wed, 17 Jul 2024 12:11:19 -0400 Subject: [PATCH 051/213] Add additional chains to fact_wormhole_flows (#303) --- models/staging/wormhole/fact_wormhole_flows.sql | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/models/staging/wormhole/fact_wormhole_flows.sql b/models/staging/wormhole/fact_wormhole_flows.sql index c46a0dc9..8808f425 100644 --- a/models/staging/wormhole/fact_wormhole_flows.sql +++ b/models/staging/wormhole/fact_wormhole_flows.sql @@ -60,11 +60,20 @@ with (33, 'rootstock'), (34, 'scroll'), (35, 'mantle'), + (36, 'blast'), + (37, 'xlayer'), + (38, 'linea'), + (39, 'berachain'), + (40, 'seievm'), (4000, 'cosmoshub'), (4001, 'evmos'), (4002, 'kujira'), (4003, 'neutron'), (4004, 'celestia') + (4005, 'stargaze') + (4006, 'seda'), + (4007, 'dymension'), + (4008, 'provenance'), ) as t(id, chain) ), From 051dcbef32f8a91843359fa6993835dfce99ca57 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 17 Jul 2024 13:13:29 -0400 Subject: [PATCH 052/213] Stablecoin V2: Separating Pre-mint and Bridge Addresses (#305) --- .../agg_chain_stablecoin_transfers.sql | 38 +++++++++++----- ...illed_stablecoin_balances_by_addresses.sql | 3 +- ...t_ethereum_stablecoin_bridge_addresses.sql | 44 +++++++++++++++++++ ..._ethereum_stablecoin_premint_addresses.sql | 37 ---------------- ...fact_tron_stablecoin_bridge_addresses.sql} | 0 .../fact_ethereum_stablecoin_transfers.sql | 2 + .../fact_tron_stablecoin_transfers.sql | 2 +- 7 files changed, 75 insertions(+), 51 deletions(-) create mode 100644 models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_bridge_addresses.sql rename models/metrics/stablecoins/contracts/{fact_tron_stablecoin_premint_addresses.sql => fact_tron_stablecoin_bridge_addresses.sql} (100%) diff --git a/macros/stablecoins/agg_chain_stablecoin_transfers.sql b/macros/stablecoins/agg_chain_stablecoin_transfers.sql index d7abafa4..0bc132b7 100644 --- a/macros/stablecoins/agg_chain_stablecoin_transfers.sql +++ b/macros/stablecoins/agg_chain_stablecoin_transfers.sql @@ -15,19 +15,19 @@ from_address, to_address, -- NULL address on TRON is different - from_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' - or lower(from_address) in ( - select distinct (lower(premint_address)) - from {{ ref("fact_tron_stablecoin_premint_addresses") }} - ) as is_mint, - to_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' - or lower(to_address) in ( - select distinct (lower(premint_address)) - from {{ ref("fact_tron_stablecoin_premint_addresses") }} - ) as is_burn, + from_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' as is_mint, + to_address = 'T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb' as is_burn, + lower(to_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_tron_stablecoin_bridge_addresses") }} + ) as is_bridge_burn, + lower(from_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_tron_stablecoin_bridge_addresses") }} + ) as is_bridge_mint, coalesce(amount, 0) as amount, case - when is_mint then amount when is_burn then -1 * amount else 0 + when is_mint or is_bridge_mint then amount when is_burn or is_bridge_burn then -1 * amount else 0 end as inflow, case when not is_mint and not is_burn then amount else 0 @@ -235,6 +235,16 @@ ) {% endif %} as is_burn, + {% if chain in ("ethereum") %} + lower(from_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_ethereum_stablecoin_bridge_addresses") }} + ) as is_bridge_mint, + lower(to_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_ethereum_stablecoin_bridge_addresses") }} + ) as is_bridge_burn, + {% endif %} coalesce( decoded_log:value::float / pow(10, num_decimals), decoded_log:wad::float / pow(10, num_decimals), @@ -243,7 +253,11 @@ 0 ) as amount, case - when is_mint then amount when is_burn then -1 * amount else 0 + {% if chain in ("ethereum") %} + when is_mint or is_bridge_mint then amount when is_burn or is_bridge_burn then -1 * amount else 0 + {% else %} + when is_mint then amount when is_burn then -1 * amount else 0 + {% endif %} end as inflow, case when not is_mint and not is_burn then amount else 0 diff --git a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql index 9b910961..b7054ee3 100644 --- a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql +++ b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql @@ -126,7 +126,8 @@ with ) as stablecoin_supply from date_range left join balances using (date, contract_address, symbol, address) - {% if chain in ('solana', 'ethereum', 'tron') %} + --TODO CHANGE THIS + {% if chain in ('solana') %} where address not in (select distinct (premint_address) from {{ ref("fact_"~chain~"_stablecoin_premint_addresses")}}) {% endif %} {% if is_incremental() %} diff --git a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_bridge_addresses.sql b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_bridge_addresses.sql new file mode 100644 index 00000000..a63cf009 --- /dev/null +++ b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_bridge_addresses.sql @@ -0,0 +1,44 @@ +{{ config(materialized="table") }} +-- Premint addresses for ethereum are representative of USDT that has been bridged to other L2s +select contract_address, premint_address +from + ( + values + -- USDT + -- Polygon + -- Matic Bridge + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf' + ), + -- Wormhole + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x3ee18B2214AFF97000D974cf647E7C347E8fa585' + ), + -- Axelar + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x4F4495243837681061C4743b74B3eEdf548D56A5' + ), + -- Arbitrum + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0xcEe284F754E854890e311e3280b767F80797180d' + ), + -- Optimism + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1' + ), + -- Base + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x3154Cf16ccdb4C6d922629664174b904d80F2C35' + ), + -- BSC + ( + '0xdAC17F958D2ee523a2206206994597C13D831ec7', + '0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503' + ) + ) as results(contract_address, premint_address) diff --git a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql index 1bc8967a..8646f3e8 100644 --- a/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql +++ b/models/metrics/stablecoins/contracts/fact_ethereum_stablecoin_premint_addresses.sql @@ -4,43 +4,6 @@ select contract_address, premint_address from ( values - -- USDT - -- Polygon - -- Matic Bridge - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf' - ), - -- Wormhole - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x3ee18B2214AFF97000D974cf647E7C347E8fa585' - ), - -- Axelar - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x4F4495243837681061C4743b74B3eEdf548D56A5' - ), - -- Arbitrum - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0xcEe284F754E854890e311e3280b767F80797180d' - ), - -- Optimism - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1' - ), - -- Base - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x3154Cf16ccdb4C6d922629664174b904d80F2C35' - ), - -- BSC - ( - '0xdAC17F958D2ee523a2206206994597C13D831ec7', - '0x47ac0Fb4F2D84898e4D9E7b4DaB3C24507a6D503' - ), -- Un-released Supply ( '0xdAC17F958D2ee523a2206206994597C13D831ec7', diff --git a/models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_tron_stablecoin_bridge_addresses.sql similarity index 100% rename from models/metrics/stablecoins/contracts/fact_tron_stablecoin_premint_addresses.sql rename to models/metrics/stablecoins/contracts/fact_tron_stablecoin_bridge_addresses.sql diff --git a/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql b/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql index e22a6e44..19612398 100644 --- a/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql +++ b/models/metrics/stablecoins/transfers/fact_ethereum_stablecoin_transfers.sql @@ -1,5 +1,7 @@ -- depends_on: {{ ref('fact_ethereum_stablecoin_contracts') }} -- depends_on: {{ ref('fact_ethereum_stablecoin_premint_addresses') }} +-- depends_on: {{ ref('fact_ethereum_stablecoin_bridge_addresses') }} + {{ config( materialized="incremental", snowflake_warehouse="STABLECOIN_LG_2", diff --git a/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql b/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql index 9ae85e71..0158aec5 100644 --- a/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql +++ b/models/metrics/stablecoins/transfers/fact_tron_stablecoin_transfers.sql @@ -1,5 +1,5 @@ -- depends_on: {{ ref('fact_tron_stablecoin_contracts') }} --- depends_on: {{ ref('fact_tron_stablecoin_premint_addresses') }} +-- depends_on: {{ ref('fact_tron_stablecoin_bridge_addresses') }} {{ config( materialized="incremental", snowflake_warehouse="STABLECOIN_LG_2", From 6c993910eb8114cfb9a03dba83cebb4f8e91c1a4 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:05:08 -0400 Subject: [PATCH 053/213] Stablecoin V2: Split up macros and Test with Base (#306) --- macros/p2p/p2p_stablecoin_transfers.sql | 3 +- macros/stablecoins/stablecoin_balances.sql | 165 ++++++++++++++++++ macros/stablecoins/stablecoin_metrics.sql | 140 +++++++++++++++ macros/stablecoins/stablecoin_metrics_all.sql | 72 ++++++++ .../stablecoin_metrics_artemis.sql | 111 ++++++++++++ macros/stablecoins/stablecoin_metrics_p2p.sql | 57 ++++++ .../agg_daily_stablecoin_breakdown_silver.sql | 34 ++-- .../ez_base_stablecoin_metrics_by_address.sql | 13 ++ .../base/fact_base_stablecoin_balances.sql | 10 ++ .../base/fact_base_stablecoin_metrics_all.sql | 10 ++ .../fact_base_stablecoin_metrics_artemis.sql | 10 ++ .../base/fact_base_stablecoin_metrics_p2p.sql | 10 ++ 12 files changed, 623 insertions(+), 12 deletions(-) create mode 100644 macros/stablecoins/stablecoin_balances.sql create mode 100644 macros/stablecoins/stablecoin_metrics.sql create mode 100644 macros/stablecoins/stablecoin_metrics_all.sql create mode 100644 macros/stablecoins/stablecoin_metrics_artemis.sql create mode 100644 macros/stablecoins/stablecoin_metrics_p2p.sql create mode 100644 models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql create mode 100644 models/staging/base/fact_base_stablecoin_balances.sql create mode 100644 models/staging/base/fact_base_stablecoin_metrics_all.sql create mode 100644 models/staging/base/fact_base_stablecoin_metrics_artemis.sql create mode 100644 models/staging/base/fact_base_stablecoin_metrics_p2p.sql diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index 05906487..266ef131 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -1,7 +1,6 @@ {% macro p2p_stablecoin_transfers(chain) %} with - stablecoin_transfers as (select * from fact_{{ chain }}_stablecoin_transfers), - + stablecoin_transfers as (select * from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers") }}), {% if chain in ("tron", "solana", "near") %} distinct_peer_address as ( select address diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql new file mode 100644 index 00000000..9c1a7396 --- /dev/null +++ b/macros/stablecoins/stablecoin_balances.sql @@ -0,0 +1,165 @@ +{% macro stablecoin_balances(chain) %} + -- This macro takes our balances table and forward fills the values for each address for each stablecoin + + -- Use this for a backfill, + -- It is important to backfill 6 months at a time otherwise the query will + -- take > 4 hours on an XL to run + -- Make sure to set to '' after backfill is complete + + {% set backfill_date = '2021-01-01' %} +with + stablecoin_balances as ( + select + block_timestamp + , lower(t1.contract_address) as contract_address + , symbol + , lower(address) as address + {% if chain in ('solana') %} + , amount_unadj / pow(10, num_decimals) as stablecoin_supply + {% else %} + , balance_token / pow(10, num_decimals) as stablecoin_supply + {% endif %} + from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 + inner join {{ ref("fact_" ~ chain ~ "_stablecoin_contracts")}} t2 + on lower(t1.contract_address) = lower(t2.contract_address) + where block_timestamp < to_date(sysdate()) + {% if chain == 'tron' %} + and lower(address) != lower('t9yd14nj9j7xab4dbgeix9h8unkkhxuwwb') --Tron Burn Address + and stablecoin_supply > 0 + {% endif %} + {% if backfill_date != '' %} + and block_timestamp < '{{ backfill_date }}' + {% endif %} + {% if is_incremental() %} + and block_timestamp >= (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ) + {% if is_incremental() %} + , stale_stablecoin_balances as ( + select + date as block_timestamp + , t.contract_address + , t.symbol + , t.address + , t.stablecoin_supply + from {{this}} t + left join ( + select distinct address, contract_address + from stablecoin_balances + ) sb on t.address = sb.address and t.contract_address = sb.contract_address + where date >= (select dateadd('day', -1, max(date)) from {{ this }}) + and sb.address is null and sb.contract_address is null + ) + {% endif %} + , heal_balance_table as ( + select + block_timestamp + , contract_address + , symbol + , address + , stablecoin_supply + from stablecoin_balances + {% if is_incremental() %} + union + select + block_timestamp + , contract_address + , symbol + , address + , stablecoin_supply + from stale_stablecoin_balances + {% endif %} + ) + , date_range as ( + select + min(block_timestamp)::date as date + , contract_address + , symbol + , address + from heal_balance_table + group by contract_address, address, symbol + + union all + + select + dateadd(day, 1, date) as date + , contract_address + , symbol + , address + from date_range + where date < dateadd(day, -1, to_date(sysdate())) + {% if backfill_date != '' %} + and date < dateadd(day, -1, '{{ backfill_date }}') + {% endif %} + ) + , balances as ( + select + block_timestamp::date as date + , contract_address + , symbol + , address + , stablecoin_supply + from ( + select + block_timestamp + , contract_address + , symbol + , address + , stablecoin_supply + , row_number() over (partition by block_timestamp::date, contract_address, address, symbol order by block_timestamp desc) AS rn + from heal_balance_table + ) + where rn = 1 + ) + , historical_supply_by_address_balances as ( + select + date + , address + , contract_address + , symbol + , coalesce( + stablecoin_supply, + LAST_VALUE(balances.stablecoin_supply ignore nulls) over ( + partition by contract_address, address, symbol + order by date + rows between unbounded preceding and current row + ) + ) as stablecoin_supply + from date_range + left join balances using (date, contract_address, symbol, address) + {% if is_incremental() %} + where date >= (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ) + , stablecoin_balances_with_price as ( + select + st.date + , address + , st.contract_address + , st.symbol + , stablecoin_supply as stablecoin_supply_native + , stablecoin_supply * coalesce( + d.token_current_price, 1 + ) as stablecoin_supply + from historical_supply_by_address_balances st + left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c + on lower(st.contract_address) = lower(c.contract_address) + left join {{ ref( "fact_coingecko_token_realtime_data") }} d + on lower(c.coingecko_id) = lower(d.token_id) + and st.date = d.date::date + {% if is_incremental() %} + where st.date >= (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ) +select + date + , address + , contract_address + , symbol + , stablecoin_supply_native + , stablecoin_supply + , '{{ chain }}' as chain + , date || '-' || address || '-' || contract_address as unique_id +from stablecoin_balances_with_price + +{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql new file mode 100644 index 00000000..ab737d0e --- /dev/null +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -0,0 +1,140 @@ +{% macro stablecoin_metrics(chain) %} + with + stablecoin_supply as ( + select + date + , contract_address + , symbol + , address + , stablecoin_supply + , unique_id + from {{ ref("fact_" ~ chain ~ "_stablecoin_balances")}} + ) + , all_metrics as ( + select + date + , contract_address + , symbol + , from_address + , stablecoin_transfer_volume + , stablecoin_daily_txns + , unique_id + from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_all")}} + ) + , artemis_metrics as ( + select + date + , contract_address + , symbol + , from_address + , stablecoin_transfer_volume as artemis_stablecoin_transfer_volume + , stablecoin_daily_txns as artemis_stablecoin_daily_txns + , unique_id + from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_artemis")}} + ) + , p2p_metrics as ( + select + date + , contract_address + , symbol + , from_address + , stablecoin_transfer_volume as p2p_stablecoin_transfer_volume + , stablecoin_daily_txns as p2p_stablecoin_daily_txns + , unique_id + from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_p2p")}} + ) + , chain_stablecoin_metrics as ( + select + date + , contract_address + , symbol + , from_address + , stablecoin_transfer_volume + , stablecoin_daily_txns + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns + , stablecoin_supply + , unique_id + from stablecoin_supply + left join all_metrics using (unique_id) + left join artemis_metrics using (unique_id) + left join p2p_metrics using (unique_id) + ) + , filtered_contracts as ( + select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' + ) + , tagged_chain_stablecoin_metrics as ( + select + date + --From Address Identifers + , from_address + , filtered_contracts.name as contract_name + , coalesce(filtered_contracts.name, chain_stablecoin_metrics.from_address) as contract + , filtered_contracts.friendly_name as application + , dim_apps_gold.icon as icon + , filtered_contracts.app as app + , case + when filtered_contracts.sub_category = 'Market Maker' then filtered_contracts.sub_category + when filtered_contracts.sub_category = 'Exchange' then filtered_contracts.sub_category + else filtered_contracts.category + end as category + , case + {% if chain not in ('solana', 'tron', 'near') %} + when + from_address not in (select contract_address from {{ ref("dim_" ~ chain ~ "_contract_addresses")}}) + then 1 + else 0 + {% else %} + when + from_address in (select address from {{ ref("dim_" ~ chain ~ "_eoa_addresses") }}) + then 1 + else 0 + {% endif %} + end as is_wallet + --Stablecoin Identifiers + , chain_stablecoin_metrics.contract_address + , chain_stablecoin_metrics.symbol + --Metrics + , stablecoin_transfer_volume + , stablecoin_daily_txns + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns + , stablecoin_supply + , unique_id + from chain_stablecoin_metrics + left join filtered_contracts + on lower(chain_stablecoin_metrics.from_address) = lower(filtered_contracts.address) + left join {{ref("dim_apps_gold")}} dim_apps_gold + on filtered_contracts.app = dim_apps_gold.namespace + ) + select + date + , from_address + , contract_name + , contract + , application + , icon + , app + , category + , is_wallet + + , contract_address + , symbol + + , stablecoin_transfer_volume + , stablecoin_daily_txns + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns + --issue with float precision + , round(stablecoin_supply, 3) as stablecoin_supply + , '{{ chain }}' as chain + , unique_id || '-' || chain as unique_id + from tagged_chain_stablecoin_metrics + +{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql new file mode 100644 index 00000000..fe236872 --- /dev/null +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -0,0 +1,72 @@ +{% macro stablecoin_metrics_all(chain) %} +with + stablecoin_transfers as ( + select + block_timestamp + , tx_hash + , from_address + , contract_address + , symbol + , transfer_volume + , to_address + from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + ) + , stablecoin_metrics as ( + select + block_timestamp::date as date + , stablecoin_transfers.from_address::string as from_address + , stablecoin_transfers.contract_address as contract_address + , stablecoin_transfers.symbol as symbol + , sum(transfer_volume) as stablecoin_transfer_volume + , sum( + case + when stablecoin_transfers.from_address is not null + then 1 + else 0 + end + ) as stablecoin_daily_txns + from stablecoin_transfers + group by 1, 2, 3, 4 + ) + , results_dollar_denom as ( + select + stablecoin_metrics.date + , stablecoin_metrics.contract_address + , stablecoin_metrics.symbol + , from_address + , stablecoin_transfer_volume * coalesce( + d.token_current_price, 1 + ) as stablecoin_transfer_volume + , stablecoin_daily_txns + from stablecoin_metrics + left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c + on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) + left join {{ ref( "fact_coingecko_token_realtime_data") }} d + on lower(c.coingecko_id) = lower(d.token_id) + and stablecoin_metrics.date = d.date::date + ) + select + date + , from_address + , contract_address + , symbol + , stablecoin_transfer_volume + , stablecoin_daily_txns + , '{{ chain }}' as chain + , date || '-' || from_address || '-' || contract_address as unique_id + from results_dollar_denom + where date < to_date(sysdate()) + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + +{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..613bd122 --- /dev/null +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -0,0 +1,111 @@ +{% macro stablecoin_metrics_artemis(chain) %} +with + stablecoin_transfers as ( + select + block_timestamp + , tx_hash + , from_address + , contract_address + , symbol + , transfer_volume + , to_address + from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + ) + filtered_contracts as ( + select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' + ), + artemis_mev_filtered as ( + select + st.* + , coalesce(dl.app,'other') as from_app + , coalesce(dlt.app,'other') as to_app + , coalesce(dl.sub_category,'other') as from_category + , coalesce(dlt.sub_category,'other') as to_category + from stablecoin_transfers st + left join filtered_contracts dl on lower(st.from_address) = lower(dl.address) + left join filtered_contracts dlt on lower(st.to_address) = lower(dlt.address) + where lower(from_app) != 'mev' or lower(to_app) != 'mev' + ), + artemis_cex_filters as ( + select distinct tx_hash + from artemis_mev_filtered + where from_app = to_app + and lower(from_category) in ('exchange', 'market maker') + ), + artemis_ranked_transfer_filter as ( + select + artemis_mev_filtered.*, + row_number() over (partition by tx_hash order by transfer_volume desc) AS rn + from artemis_mev_filtered + where tx_hash not in (select tx_hash from artemis_cex_filters) + ), + artemis_max_transfer_filter as ( + select + block_timestamp + , tx_hash + , contract_address + , symbol + , from_address + , to_address + , transfer_volume as artemis_stablecoin_transfer_volume + from artemis_ranked_transfer_filter + where rn = 1 + ), + stablecoin_metrics as ( + select + block_timestamp::date as date + , from_address + , contract_address + , symbol + , sum( + case + when from_address is not null + then 1 + else 0 + end + ) as artemis_stablecoin_daily_txns + , sum(artemis_stablecoin_transfer_volume) as artemis_stablecoin_transfer_volume + from artemis_max_transfer_filter + group by 1, 2, 3, 4 + ), + , results_dollar_denom as ( + select + stablecoin_metrics.date + , stablecoin_metrics.contract_address + , stablecoin_metrics.symbol + , from_address + , stablecoin_transfer_volume * coalesce( + d.token_current_price, 1 + ) as stablecoin_transfer_volume + , stablecoin_daily_txns + from stablecoin_metrics + left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c + on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) + left join {{ ref( "fact_coingecko_token_realtime_data") }} d + on lower(c.coingecko_id) = lower(d.token_id) + and stablecoin_metrics.date = d.date::date + ) + select + date + , from_address + , contract_address + , symbol + , stablecoin_transfer_volume + , stablecoin_daily_txns + , '{{ chain }}' as chain + , date || '-' || from_address || '-' || contract_address as unique_id + from results_dollar_denom + where date < to_date(sysdate()) + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} +{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics_p2p.sql b/macros/stablecoins/stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..01e01ad4 --- /dev/null +++ b/macros/stablecoins/stablecoin_metrics_p2p.sql @@ -0,0 +1,57 @@ +{% macro stablecoin_metrics_p2p(chain) %} +with + stablecoin_transfers as ( + select + block_timestamp + , tx_hash + , from_address + , token_address as contract_address + , symbol + , amount_usd as transfer_volume + , to_address + from {{ ref("fact_" ~ chain ~ "_p2p_stablecoin_transfers")}} t + left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c + on lower(t.token_address) = lower(c.contract_address) + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + ) + , stablecoin_metrics as ( + select + block_timestamp::date as date + , stablecoin_transfers.from_address::string as from_address + , stablecoin_transfers.contract_address as contract_address + , stablecoin_transfers.symbol as symbol + , sum(transfer_volume) as stablecoin_transfer_volume + , sum( + case + when stablecoin_transfers.from_address is not null + then 1 + else 0 + end + ) as stablecoin_daily_txns + from stablecoin_transfers + group by 1, 2, 3, 4 + ) + + select + date + , from_address + , contract_address + , symbol + , stablecoin_transfer_volume + , stablecoin_daily_txns + , '{{ chain }}' as chain + , date || '-' || from_address || '-' || contract_address as unique_id + from stablecoin_metrics + where date < to_date(sysdate()) + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} +{% endmacro %} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index cc649230..333ded79 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -4,19 +4,33 @@ with {{ dbt_utils.union_relations( relations=[ - ref("agg_base_daily_stablecoin_metrics_breakdown"), - ref("agg_blast_daily_stablecoin_metrics_breakdown"), - ref("agg_arbitrum_daily_stablecoin_metrics_breakdown"), - ref("agg_optimism_daily_stablecoin_metrics_breakdown"), - ref("agg_avalanche_daily_stablecoin_metrics_breakdown"), - ref("agg_polygon_daily_stablecoin_metrics_breakdown"), - ref("agg_ethereum_daily_stablecoin_metrics_breakdown"), - ref("agg_tron_daily_stablecoin_metrics_breakdown"), - ref("agg_bsc_daily_stablecoin_metrics_breakdown"), + ref("ez_base_stablecoin_metrics_by_address"), ] ) }} ) -select *, date::string || '-' || chain || '-' || symbol || from_address || contract_address as unique_id +select + date + , from_address + , contract_name + , contract + , application + , icon + , app + , category + , is_wallet + + , contract_address + , symbol + + , stablecoin_transfer_volume + , stablecoin_daily_txns + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns + , stablecoin_supply + , chain + , unique_id from daily_data where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql b/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..c0fb57b3 --- /dev/null +++ b/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + database="base", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("base")}} \ No newline at end of file diff --git a/models/staging/base/fact_base_stablecoin_balances.sql b/models/staging/base/fact_base_stablecoin_balances.sql new file mode 100644 index 00000000..d7d2bf4e --- /dev/null +++ b/models/staging/base/fact_base_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("base")}} \ No newline at end of file diff --git a/models/staging/base/fact_base_stablecoin_metrics_all.sql b/models/staging/base/fact_base_stablecoin_metrics_all.sql new file mode 100644 index 00000000..0ffd9968 --- /dev/null +++ b/models/staging/base/fact_base_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("base")}} \ No newline at end of file diff --git a/models/staging/base/fact_base_stablecoin_metrics_artemis.sql b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..683ec745 --- /dev/null +++ b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("base")}} \ No newline at end of file diff --git a/models/staging/base/fact_base_stablecoin_metrics_p2p.sql b/models/staging/base/fact_base_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..683ec745 --- /dev/null +++ b/models/staging/base/fact_base_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("base")}} \ No newline at end of file From 11f205b227cf91306588a9f8548fb84ec5a7a1ab Mon Sep 17 00:00:00 2001 From: macksed <131188004+macksed@users.noreply.github.com> Date: Wed, 17 Jul 2024 15:37:24 -0400 Subject: [PATCH 054/213] Renzo Fees and Unique Depositors (#287) --- .../renzo_protocol/raw/fact_renzo_fees.sql | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 models/projects/renzo_protocol/raw/fact_renzo_fees.sql diff --git a/models/projects/renzo_protocol/raw/fact_renzo_fees.sql b/models/projects/renzo_protocol/raw/fact_renzo_fees.sql new file mode 100644 index 00000000..cf5c9888 --- /dev/null +++ b/models/projects/renzo_protocol/raw/fact_renzo_fees.sql @@ -0,0 +1,24 @@ +{{ + config( + materialized="table", + snowflake_warehouse="RENZO_PROTOCOL", + ) +}} + + +SELECT + DATE(BLOCK_TIMESTAMP) AS DATE + ,SUM(AMOUNT_USD) AS FEES + ,0.5 * SUM(AMOUNT_USD) AS REVENUE + ,'renzo_protocol' AS APP + ,'DeFi' AS CATEGORY + FROM ethereum_flipside.core.ez_native_transfers + WHERE + lower(FROM_ADDRESS) = lower('0xf2F305D14DCD8aaef887E0428B3c9534795D0d60') and + lower(TO_ADDRESS) = lower('0xD22FB2d2c09C108c44b622c37F6d2f4Bc9f85668') + GROUP BY + DATE(block_timestamp) + + + + \ No newline at end of file From 506326ce3e02addb8c1645dd8fb658f32ca4d7b8 Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Wed, 17 Jul 2024 16:20:01 -0400 Subject: [PATCH 055/213] Add more fields to CoinGecko share (#307) --- models/common/__common__sources.yml | 1 + models/common/daily_market_data.sql | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/models/common/__common__sources.yml b/models/common/__common__sources.yml index 39531d5b..a6074d97 100644 --- a/models/common/__common__sources.yml +++ b/models/common/__common__sources.yml @@ -5,3 +5,4 @@ sources: tables: - name: fact_coingecko_token_date_adjusted_gold - name: agg_daily_stablecoin_metrics + - name: fact_coingecko_token_realtime_data diff --git a/models/common/daily_market_data.sql b/models/common/daily_market_data.sql index 32059609..02f65fbc 100644 --- a/models/common/daily_market_data.sql +++ b/models/common/daily_market_data.sql @@ -7,11 +7,39 @@ ) }} + SELECT date + , t2.token_symbol AS symbol , coingecko_id , shifted_token_price_usd AS price , shifted_token_market_cap AS market_cap , shifted_token_h24_volume_usd AS h24_volume + , t2.token_max_supply AS max_supply + , t2.token_total_supply AS total_supply + , t2.token_ath AS ath + , t2.token_ath_change_percentage AS ath_change_percentage + , t2.token_ath_date AS ath_date + , t2.token_atl AS atl + , t2.token_atl_change_percentage AS atl_change_percentage + , t2.token_atl_date AS atl_date + , t2.fdv_supply * shifted_token_price_usd AS fdmc FROM {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_date_adjusted_gold") }} + AS t1 +INNER JOIN ( + SELECT + token_id + , token_symbol + , token_max_supply + , token_total_supply + , token_ath + , token_ath_change_percentage + , token_ath_date + , token_atl + , token_atl_change_percentage + , token_atl_date + , coalesce(token_max_supply, token_total_supply) AS fdv_supply + FROM + {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_realtime_data") }} +) AS t2 ON t1.coingecko_id = t2.token_id From 15802e72bf0c88343de002fc80c03cdc2569957f Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Wed, 17 Jul 2024 23:25:58 -0400 Subject: [PATCH 056/213] Fix Syntax Error in fact_wormhole_flows (#308) --- models/staging/wormhole/fact_wormhole_flows.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/staging/wormhole/fact_wormhole_flows.sql b/models/staging/wormhole/fact_wormhole_flows.sql index 8808f425..38035a7c 100644 --- a/models/staging/wormhole/fact_wormhole_flows.sql +++ b/models/staging/wormhole/fact_wormhole_flows.sql @@ -69,8 +69,8 @@ with (4001, 'evmos'), (4002, 'kujira'), (4003, 'neutron'), - (4004, 'celestia') - (4005, 'stargaze') + (4004, 'celestia'), + (4005, 'stargaze'), (4006, 'seda'), (4007, 'dymension'), (4008, 'provenance'), From 33165b2a66667e2cfb3cd13d4fb0c3556af75db9 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 18 Jul 2024 10:49:06 -0400 Subject: [PATCH 057/213] Stablecoin V2: Ethereum (#309) --- macros/stablecoins/stablecoin_balances.sql | 64 +++++++++---------- macros/stablecoins/stablecoin_metrics.sql | 9 ++- ...ethereum_stablecoin_metrics_by_address.sql | 13 ++++ .../fact_ethereum_stablecoin_balances.sql | 10 +++ .../fact_ethereum_stablecoin_metrics_all.sql | 10 +++ ...ct_ethereum_stablecoin_metrics_artemis.sql | 10 +++ .../fact_ethereum_stablecoin_metrics_p2p.sql | 10 +++ 7 files changed, 90 insertions(+), 36 deletions(-) create mode 100644 models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql create mode 100644 models/staging/ethereum/fact_ethereum_stablecoin_balances.sql create mode 100644 models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql create mode 100644 models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql create mode 100644 models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 9c1a7396..1095ba3f 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -6,7 +6,7 @@ -- take > 4 hours on an XL to run -- Make sure to set to '' after backfill is complete - {% set backfill_date = '2021-01-01' %} + {% set backfill_date = '' %} with stablecoin_balances as ( select @@ -25,16 +25,16 @@ with where block_timestamp < to_date(sysdate()) {% if chain == 'tron' %} and lower(address) != lower('t9yd14nj9j7xab4dbgeix9h8unkkhxuwwb') --Tron Burn Address - and stablecoin_supply > 0 {% endif %} {% if backfill_date != '' %} and block_timestamp < '{{ backfill_date }}' {% endif %} {% if is_incremental() %} - and block_timestamp >= (select dateadd('day', -1, max(date)) from {{ this }}) + and block_timestamp > (select dateadd('day', -3, max(date)) from {{ this }}) {% endif %} ) {% if is_incremental() %} + --Get the most recent data in the existing table , stale_stablecoin_balances as ( select date as block_timestamp @@ -42,16 +42,14 @@ with , t.symbol , t.address , t.stablecoin_supply - from {{this}} t - left join ( - select distinct address, contract_address - from stablecoin_balances - ) sb on t.address = sb.address and t.contract_address = sb.contract_address - where date >= (select dateadd('day', -1, max(date)) from {{ this }}) - and sb.address is null and sb.contract_address is null + from {{ this }} t + where date = (select dateadd('day', -3, max(date)) from {{ this }}) ) {% endif %} , heal_balance_table as ( + -- stablecoin_balances and stale_stablecoin_balances do not over lap + -- stablecoin balances select every row greater than the most recent date in the table + -- stale_stablecoin_balances selects the most recent date in the table select block_timestamp , contract_address @@ -70,6 +68,26 @@ with from stale_stablecoin_balances {% endif %} ) + -- get the latest balance for each address for each date + , balances as ( + select + block_timestamp::date as date + , contract_address + , symbol + , address + , stablecoin_supply + from ( + select + block_timestamp + , contract_address + , symbol + , address + , stablecoin_supply + , row_number() over (partition by block_timestamp::date, contract_address, address, symbol order by block_timestamp desc) AS rn + from heal_balance_table + ) + where rn = 1 + ) , date_range as ( select min(block_timestamp)::date as date @@ -92,25 +110,6 @@ with and date < dateadd(day, -1, '{{ backfill_date }}') {% endif %} ) - , balances as ( - select - block_timestamp::date as date - , contract_address - , symbol - , address - , stablecoin_supply - from ( - select - block_timestamp - , contract_address - , symbol - , address - , stablecoin_supply - , row_number() over (partition by block_timestamp::date, contract_address, address, symbol order by block_timestamp desc) AS rn - from heal_balance_table - ) - where rn = 1 - ) , historical_supply_by_address_balances as ( select date @@ -127,9 +126,6 @@ with ) as stablecoin_supply from date_range left join balances using (date, contract_address, symbol, address) - {% if is_incremental() %} - where date >= (select dateadd('day', -1, max(date)) from {{ this }}) - {% endif %} ) , stablecoin_balances_with_price as ( select @@ -147,9 +143,6 @@ with left join {{ ref( "fact_coingecko_token_realtime_data") }} d on lower(c.coingecko_id) = lower(d.token_id) and st.date = d.date::date - {% if is_incremental() %} - where st.date >= (select dateadd('day', -1, max(date)) from {{ this }}) - {% endif %} ) select date @@ -161,5 +154,6 @@ select , '{{ chain }}' as chain , date || '-' || address || '-' || contract_address as unique_id from stablecoin_balances_with_price +where date < to_date(sysdate()) {% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index ab737d0e..2cd71cdc 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -6,7 +6,14 @@ , contract_address , symbol , address - , stablecoin_supply + {% if chain in ('ethereum') %} + , case + when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_bridge_addresses")}}) then 0 + else stablecoin_supply + end as stablecoin_supply + {% else %} + , stablecoin_supply + {% endif %} , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_balances")}} ) diff --git a/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql b/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..5272df20 --- /dev/null +++ b/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + database="ethereum", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("ethereum")}} \ No newline at end of file diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_balances.sql b/models/staging/ethereum/fact_ethereum_stablecoin_balances.sql new file mode 100644 index 00000000..a1b8a003 --- /dev/null +++ b/models/staging/ethereum/fact_ethereum_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("ethereum")}} \ No newline at end of file diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql new file mode 100644 index 00000000..890c38c8 --- /dev/null +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("ethereum")}} \ No newline at end of file diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..5890c7ba --- /dev/null +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("ethereum")}} \ No newline at end of file diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..5890c7ba --- /dev/null +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("ethereum")}} \ No newline at end of file From ba4feefe3b61b900ab8af156f413b260f4fc8471 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:26:17 -0400 Subject: [PATCH 058/213] Update fact_wormhole_flows.sql (#311) --- models/staging/wormhole/fact_wormhole_flows.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/staging/wormhole/fact_wormhole_flows.sql b/models/staging/wormhole/fact_wormhole_flows.sql index 38035a7c..e5e4df02 100644 --- a/models/staging/wormhole/fact_wormhole_flows.sql +++ b/models/staging/wormhole/fact_wormhole_flows.sql @@ -73,7 +73,7 @@ with (4005, 'stargaze'), (4006, 'seda'), (4007, 'dymension'), - (4008, 'provenance'), + (4008, 'provenance') ) as t(id, chain) ), From c65061354000fbccc151ef47b839b94c74a44f60 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 18 Jul 2024 13:53:42 -0400 Subject: [PATCH 059/213] Son/fact ton apps data (#312) --- models/projects/ton/core/ez_ton_metrics.sql | 24 ++++++++++++++++- models/staging/ton/__ton__sources.yml | 2 ++ models/staging/ton/fact_ton_app_daa.sql | 23 ++++++++++++++++ models/staging/ton/fact_ton_app_fees_txns.sql | 27 +++++++++++++++++++ models/staging/ton/fact_ton_daa.sql | 2 +- 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 models/staging/ton/fact_ton_app_daa.sql create mode 100644 models/staging/ton/fact_ton_app_fees_txns.sql diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index 94fec789..64007c1c 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -21,6 +21,19 @@ with revenue_native, avg_txn_fee from {{ ref("fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native") }} + ), ton_app_daa as ( + select + date, + daa as ton_apps_daa + from {{ ref("fact_ton_app_daa") }} + ), + ton_app_txns_fees as ( + select + date, + txns as ton_apps_txns, + fees_native as ton_apps_fees_native + avg_txn_fee_native as ton_apps_avg_txn_fee_native + from {{ ref("fact_ton_app_fees_txns") }} ), price_data as ({{ get_coingecko_metrics("the-open-network") }}), defillama_data as ({{ get_defillama_metrics("ton") }}), @@ -49,10 +62,19 @@ select weekly_commits_core_ecosystem, weekly_commits_sub_ecosystem, weekly_developers_core_ecosystem, - weekly_developers_sub_ecosystem + weekly_developers_sub_ecosystem, + ton_apps_daa, + ton_apps_txns, + ton_apps_fees_native, + ton_apps_fees_native * price as ton_apps_fees, + ton_apps_fees_native / 2 as ton_apps_revenue_native, + (ton_apps_fees_native / 2) * price as ton_apps_revenue, + ton_apps_avg_txn_fee_native * price as ton_apps_avg_txn_fee from fundamental_data left join price_data on fundamental_data.date = price_data.date left join defillama_data on fundamental_data.date = defillama_data.date left join github_data on fundamental_data.date = github_data.date left join dex_data on fundamental_data.date = dex_data.date +left join ton_app_daa on fundamental_data.date = ton_app_daa.date +left join ton_app_txns_fees on fundamental_data.date = ton_app_txns_fees.date where fundamental_data.date < to_date(sysdate()) diff --git a/models/staging/ton/__ton__sources.yml b/models/staging/ton/__ton__sources.yml index 730e55f1..ecd24440 100644 --- a/models/staging/ton/__ton__sources.yml +++ b/models/staging/ton/__ton__sources.yml @@ -11,3 +11,5 @@ sources: - name: raw_ton_stablecoin_transfers - name: raw_ton_apps_openleague - name: raw_ton_tokens_openleague + - name: raw_ton_app_daa + - name: raw_ton_app_txns_fees diff --git a/models/staging/ton/fact_ton_app_daa.sql b/models/staging/ton/fact_ton_app_daa.sql new file mode 100644 index 00000000..e158495b --- /dev/null +++ b/models/staging/ton/fact_ton_app_daa.sql @@ -0,0 +1,23 @@ +{{ + config( + materialized="incremental", + unique_key="date", + ) +}} +with raw_data as ( + select + extraction_date + , source_json + , source_json:"raw_date"::date as date + , source_json:"dau"::bigint as daa + from + {{ source("PROD_LANDING", "raw_ton_app_daa") }} + {% if is_incremental() %} + where source_json:"raw_date"::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} +) +select + date + , max_by(daa, extraction_date) as daa +from raw_data +group by date diff --git a/models/staging/ton/fact_ton_app_fees_txns.sql b/models/staging/ton/fact_ton_app_fees_txns.sql new file mode 100644 index 00000000..a5d8b221 --- /dev/null +++ b/models/staging/ton/fact_ton_app_fees_txns.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="incremental", + unique_key="date", + ) +}} +with raw_data as ( + select + extraction_date + , source_json + , source_json:"raw_date"::date as date + , source_json:"fees_native"::double as fees_native + , source_json:"txns"::bigint as txns + , sourec_json:"avg_txn_fee_native"::double as avg_txn_fee_native + from + {{ source("PROD_LANDING", "raw_ton_app_txns_fees") }} + {% if is_incremental() %} + where source_json:"raw_date"::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} +) +select + date + , max_by(fees_native, extraction_date) as fees_native + , max_by(txns, extraction_date) as txns + , max_by(avg_txn_fee_native, extraction_date) as avg_txn_fee_native +from raw_data +group by date diff --git a/models/staging/ton/fact_ton_daa.sql b/models/staging/ton/fact_ton_daa.sql index c18817d9..3e470ce7 100644 --- a/models/staging/ton/fact_ton_daa.sql +++ b/models/staging/ton/fact_ton_daa.sql @@ -13,4 +13,4 @@ with from latest_data, lateral flatten(input => data) ) select date, daa, 'ton' as chain -from flattened_data \ No newline at end of file +from flattened_data From 42315dbc26f114ee554f0c0b7987525c676b8d67 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 18 Jul 2024 15:52:41 -0400 Subject: [PATCH 060/213] Stablecoin V2: Create Arbitrum Lineage, incremental `stablecoin_metrics` (#313) --- macros/stablecoins/stablecoin_metrics.sql | 12 ++++++++++++ .../ez_arbitrum_stablecoin_metrics_by_address.sql | 13 +++++++++++++ .../core/ez_base_stablecoin_metrics_by_address.sql | 2 +- .../arbitrum/fact_arbitrum_stablecoin_balances.sql | 10 ++++++++++ .../fact_arbitrum_stablecoin_metrics_all.sql | 10 ++++++++++ .../fact_arbitrum_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../fact_arbitrum_stablecoin_metrics_p2p.sql | 10 ++++++++++ 7 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 models/projects/arbitrum/core/ez_arbitrum_stablecoin_metrics_by_address.sql create mode 100644 models/staging/arbitrum/fact_arbitrum_stablecoin_balances.sql create mode 100644 models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql create mode 100644 models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql create mode 100644 models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index 2cd71cdc..65f881fd 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -16,6 +16,9 @@ {% endif %} , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_balances")}} + {% if is_incremental() %} + where date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ) , all_metrics as ( select @@ -27,6 +30,9 @@ , stablecoin_daily_txns , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_all")}} + {% if is_incremental() %} + where date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ) , artemis_metrics as ( select @@ -38,6 +44,9 @@ , stablecoin_daily_txns as artemis_stablecoin_daily_txns , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_artemis")}} + {% if is_incremental() %} + where date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ) , p2p_metrics as ( select @@ -49,6 +58,9 @@ , stablecoin_daily_txns as p2p_stablecoin_daily_txns , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_p2p")}} + {% if is_incremental() %} + where date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ) , chain_stablecoin_metrics as ( select diff --git a/models/projects/arbitrum/core/ez_arbitrum_stablecoin_metrics_by_address.sql b/models/projects/arbitrum/core/ez_arbitrum_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..d5036d98 --- /dev/null +++ b/models/projects/arbitrum/core/ez_arbitrum_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="arbitrum", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("arbitrum")}} \ No newline at end of file diff --git a/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql b/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql index c0fb57b3..e1cbe958 100644 --- a/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql +++ b/models/projects/base/core/ez_base_stablecoin_metrics_by_address.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", database="base", schema="core", diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_balances.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_balances.sql new file mode 100644 index 00000000..dde8459f --- /dev/null +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("arbitrum")}} \ No newline at end of file diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql new file mode 100644 index 00000000..63f47b0b --- /dev/null +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("arbitrum")}} \ No newline at end of file diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..6df58d45 --- /dev/null +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("arbitrum")}} \ No newline at end of file diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..6df58d45 --- /dev/null +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("arbitrum")}} \ No newline at end of file From 4696cbd59340d5da074f7d173f6cade546aa1df4 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 18 Jul 2024 17:20:42 -0400 Subject: [PATCH 061/213] Stablecoin V2: Arbitrum, Stablcoin Balances (#314) --- macros/stablecoins/stablecoin_metrics.sql | 8 ++++---- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 1 + .../core/ez_ethereum_stablecoin_metrics_by_address.sql | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index 65f881fd..c5eee83e 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -17,7 +17,7 @@ , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_balances")}} {% if is_incremental() %} - where date > (select dateadd('day', -3, max(date)) from {{ this }}) + where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} ) , all_metrics as ( @@ -31,7 +31,7 @@ , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_all")}} {% if is_incremental() %} - where date > (select dateadd('day', -3, max(date)) from {{ this }}) + where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} ) , artemis_metrics as ( @@ -45,7 +45,7 @@ , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_artemis")}} {% if is_incremental() %} - where date > (select dateadd('day', -3, max(date)) from {{ this }}) + where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} ) , p2p_metrics as ( @@ -59,7 +59,7 @@ , unique_id from {{ ref("fact_" ~ chain ~ "_stablecoin_metrics_p2p")}} {% if is_incremental() %} - where date > (select dateadd('day', -3, max(date)) from {{ this }}) + where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} ) , chain_stablecoin_metrics as ( diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 333ded79..1d669204 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -5,6 +5,7 @@ with dbt_utils.union_relations( relations=[ ref("ez_base_stablecoin_metrics_by_address"), + ref("ez_arbitrum_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql b/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql index 5272df20..eac32940 100644 --- a/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql +++ b/models/projects/ethereum/core/ez_ethereum_stablecoin_metrics_by_address.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", database="ethereum", schema="core", From fca30bbc234c4a344b6a92b8e2c5dac9f0045eac Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 18 Jul 2024 21:46:12 -0400 Subject: [PATCH 062/213] Fix Nit errors for Ton Models (#315) --- models/projects/ton/core/ez_ton_metrics.sql | 2 +- models/staging/ton/fact_ton_app_fees_txns.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index 64007c1c..673efbc4 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -31,7 +31,7 @@ with select date, txns as ton_apps_txns, - fees_native as ton_apps_fees_native + fees_native as ton_apps_fees_native, avg_txn_fee_native as ton_apps_avg_txn_fee_native from {{ ref("fact_ton_app_fees_txns") }} ), diff --git a/models/staging/ton/fact_ton_app_fees_txns.sql b/models/staging/ton/fact_ton_app_fees_txns.sql index a5d8b221..a563ef66 100644 --- a/models/staging/ton/fact_ton_app_fees_txns.sql +++ b/models/staging/ton/fact_ton_app_fees_txns.sql @@ -11,7 +11,7 @@ with raw_data as ( , source_json:"raw_date"::date as date , source_json:"fees_native"::double as fees_native , source_json:"txns"::bigint as txns - , sourec_json:"avg_txn_fee_native"::double as avg_txn_fee_native + , source_json:"avg_txn_fee_native"::double as avg_txn_fee_native from {{ source("PROD_LANDING", "raw_ton_app_txns_fees") }} {% if is_incremental() %} From bd7c670d1cacf364e893c50c1995f4098dc1968b Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Fri, 19 Jul 2024 11:43:38 -0400 Subject: [PATCH 063/213] Add Injective Flows (#316) --- .../metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql | 1 + models/staging/injective/fact_injective_bridge_flows.sql | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 models/staging/injective/fact_injective_bridge_flows.sql diff --git a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql index 7c2e607b..ec4b575d 100644 --- a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql +++ b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql @@ -12,6 +12,7 @@ with ref("fact_avalanche_bridge_flows"), ref("fact_base_bridge_flows"), ref("fact_optimism_bridge_flows"), + ref("fact_injective_bridge_flows"), ref("fact_polygon_pos_bridge_flows"), ref("fact_starknet_bridge_flows"), ref("fact_zksync_era_bridge_flows"), diff --git a/models/staging/injective/fact_injective_bridge_flows.sql b/models/staging/injective/fact_injective_bridge_flows.sql new file mode 100644 index 00000000..443f98d5 --- /dev/null +++ b/models/staging/injective/fact_injective_bridge_flows.sql @@ -0,0 +1,4 @@ +SELECT + * EXCLUDE date, + DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date +FROM {{ source('PROD_LANDING', 'injective_bridge_flows') }} \ No newline at end of file From df8d9c36a560b6891587202ed3fbcbd721b95cf1 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:18:04 -0400 Subject: [PATCH 064/213] Stablecoin V2: Tagging to Exchange --> CEX, Update P2P to Remove Intra-CEX (#317) --- macros/p2p/p2p_stablecoin_transfers.sql | 12 +++++++ macros/stablecoins/stablecoin_metrics.sql | 31 ++++++++++++++++++- .../stablecoin_metrics_artemis.sql | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index 266ef131..d01ea7b5 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -80,6 +80,17 @@ with {% endif %} ) {% endif %} + , cex_contracts as ( + select address, app, sub_category from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' and lower(sub_category) in ('cex', 'market maker') + ) + , cex_filter as ( + select distinct tx_hash + from stablecoin_transfers_with_prices + left join cex_contracts t1 on lower(from_address) = lower(t1.address) + left join cex_contracts t2 on lower(to_address) = lower(t2.address) + where t1.app = t2.app + and lower(t1.sub_category) in ('cex', 'market maker') + ) select t1.block_timestamp, t1.block_number, @@ -95,6 +106,7 @@ with and from_address is not null and to_address is not null and lower(to_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000') and lower(from_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000') + and lower(tx_hash) not in (select lower(tx_hash) from cex_filter) {% if chain == "solana" %} and block_timestamp::date > '2022-12-31' -- Prior to 2023, volumes data not high fidelity enough to report. Continuing to do analysis on this data. {% endif %} diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index c5eee83e..6303e664 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -1,4 +1,5 @@ {% macro stablecoin_metrics(chain) %} + {% set backfill_date = '' %} with stablecoin_supply as ( select @@ -19,6 +20,13 @@ {% if is_incremental() %} where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} + {% if backfill_date != '' %} + {% if is_incremental() %} + and date < '{{ backfill_date }}' + {% else %} + where date < '{{ backfill_date }}' + {% endif %} + {% endif %} ) , all_metrics as ( select @@ -33,6 +41,13 @@ {% if is_incremental() %} where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} + {% if backfill_date != '' %} + {% if is_incremental() %} + and date < '{{ backfill_date }}' + {% else %} + where date < '{{ backfill_date }}' + {% endif %} + {% endif %} ) , artemis_metrics as ( select @@ -47,6 +62,13 @@ {% if is_incremental() %} where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} + {% if backfill_date != '' %} + {% if is_incremental() %} + and date < '{{ backfill_date }}' + {% else %} + where date < '{{ backfill_date }}' + {% endif %} + {% endif %} ) , p2p_metrics as ( select @@ -61,6 +83,13 @@ {% if is_incremental() %} where date > (select dateadd('day', -1, max(date)) from {{ this }}) {% endif %} + {% if backfill_date != '' %} + {% if is_incremental() %} + and date < '{{ backfill_date }}' + {% else %} + where date < '{{ backfill_date }}' + {% endif %} + {% endif %} ) , chain_stablecoin_metrics as ( select @@ -96,7 +125,7 @@ , filtered_contracts.app as app , case when filtered_contracts.sub_category = 'Market Maker' then filtered_contracts.sub_category - when filtered_contracts.sub_category = 'Exchange' then filtered_contracts.sub_category + when filtered_contracts.sub_category = 'CEX' then filtered_contracts.sub_category else filtered_contracts.category end as category , case diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 613bd122..34589aa2 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -36,7 +36,7 @@ with select distinct tx_hash from artemis_mev_filtered where from_app = to_app - and lower(from_category) in ('exchange', 'market maker') + and lower(from_category) in ('cex', 'market maker') ), artemis_ranked_transfer_filter as ( select From fffd83638523e0d7a17a51761129d422a495e6d0 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 19 Jul 2024 12:34:36 -0400 Subject: [PATCH 065/213] Stablecoin V2: Optimism Pipeline (#318) --- .../address_balances_by_token.sql | 11 +++++++++++ .../stablecoins/genesis_stablecoin_balances.sql | 11 +++++++++++ ...ez_optimism_stablecoin_metrics_by_address.sql | 13 +++++++++++++ models/staging/optimism/__optimism__sources.yml | 7 +++++++ ...fact_optimism_genesis_stablecoin_balances.sql | 16 ++++++++++++++++ .../fact_optimism_stablecoin_balances.sql | 10 ++++++++++ .../fact_optimism_stablecoin_metrics_all.sql | 10 ++++++++++ .../fact_optimism_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../fact_optimism_stablecoin_metrics_p2p.sql | 10 ++++++++++ 9 files changed, 98 insertions(+) create mode 100644 macros/stablecoins/genesis_stablecoin_balances.sql create mode 100644 models/projects/optimism/core/ez_optimism_stablecoin_metrics_by_address.sql create mode 100644 models/staging/optimism/fact_optimism_genesis_stablecoin_balances.sql create mode 100644 models/staging/optimism/fact_optimism_stablecoin_balances.sql create mode 100644 models/staging/optimism/fact_optimism_stablecoin_metrics_all.sql create mode 100644 models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql create mode 100644 models/staging/optimism/fact_optimism_stablecoin_metrics_p2p.sql diff --git a/macros/address_balances/address_balances_by_token.sql b/macros/address_balances/address_balances_by_token.sql index b6e6558e..74157231 100644 --- a/macros/address_balances/address_balances_by_token.sql +++ b/macros/address_balances/address_balances_by_token.sql @@ -12,6 +12,17 @@ {% if is_incremental() %} where block_timestamp > (select max(block_timestamp) from {{ this }}) {% endif %} + {% if chain in ('optimism') %} + -- Some chains had a re-genesis event, if this is the case we need to include the genesis balances + + union all + select address, contract_address, block_timestamp, balance as flow + from {{ref("fact_"~chain~"_genesis_stablecoin_balances")}} + {% if is_incremental() %} + where block_timestamp > (select max(block_timestamp) from {{ this }}) + {% endif %} + {% endif %} + ), credit_debits_and_latest_balances as ( select address, contract_address, block_timestamp, flow diff --git a/macros/stablecoins/genesis_stablecoin_balances.sql b/macros/stablecoins/genesis_stablecoin_balances.sql new file mode 100644 index 00000000..10f16634 --- /dev/null +++ b/macros/stablecoins/genesis_stablecoin_balances.sql @@ -0,0 +1,11 @@ +{% macro genesis_stablecoin_balances(source_table, genesis_timestamp) %} + + select + '{{genesis_timestamp}}'::timestamp as block_timestamp + , lower(value:contract_address::string) as contract_address + , lower(value:address::string) as address + , value:balance::float as balance + from {{ source("PROD_LANDING", source_table)}}, + lateral flatten(input => parse_json(source_json)) + where extraction_date = (select max(extraction_date) from {{ source("PROD_LANDING", source_table)}}) +{% endmacro %} \ No newline at end of file diff --git a/models/projects/optimism/core/ez_optimism_stablecoin_metrics_by_address.sql b/models/projects/optimism/core/ez_optimism_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..b78674f2 --- /dev/null +++ b/models/projects/optimism/core/ez_optimism_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="optimism", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("optimism")}} \ No newline at end of file diff --git a/models/staging/optimism/__optimism__sources.yml b/models/staging/optimism/__optimism__sources.yml index 81952c2a..89addf65 100644 --- a/models/staging/optimism/__optimism__sources.yml +++ b/models/staging/optimism/__optimism__sources.yml @@ -4,3 +4,10 @@ sources: database: PC_DBT_DB tables: - name: dim_optimism_current_balances + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_optimism_genesis_dai_stablecoin_balances + - name: raw_optimism_genesis_usdce_stablecoin_balances + - name: raw_optimism_genesis_usdt_stablecoin_balances diff --git a/models/staging/optimism/fact_optimism_genesis_stablecoin_balances.sql b/models/staging/optimism/fact_optimism_genesis_stablecoin_balances.sql new file mode 100644 index 00000000..cb8e79be --- /dev/null +++ b/models/staging/optimism/fact_optimism_genesis_stablecoin_balances.sql @@ -0,0 +1,16 @@ +{{ config(materialized="table") }} + +{% set genesis_timestamp = "2021-11-10 00:00:00.000" %} + +with + dai as ({{genesis_stablecoin_balances("raw_optimism_genesis_dai_stablecoin_balances", genesis_timestamp)}}) + + , usdce as ({{genesis_stablecoin_balances("raw_optimism_genesis_usdce_stablecoin_balances", genesis_timestamp)}}) + + , usdt as ({{genesis_stablecoin_balances("raw_optimism_genesis_usdt_stablecoin_balances", genesis_timestamp)}}) + +select * from dai +union all +select * from usdce +union all +select * from usdt \ No newline at end of file diff --git a/models/staging/optimism/fact_optimism_stablecoin_balances.sql b/models/staging/optimism/fact_optimism_stablecoin_balances.sql new file mode 100644 index 00000000..93b323c8 --- /dev/null +++ b/models/staging/optimism/fact_optimism_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("optimism")}} \ No newline at end of file diff --git a/models/staging/optimism/fact_optimism_stablecoin_metrics_all.sql b/models/staging/optimism/fact_optimism_stablecoin_metrics_all.sql new file mode 100644 index 00000000..470e194e --- /dev/null +++ b/models/staging/optimism/fact_optimism_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("optimism")}} \ No newline at end of file diff --git a/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql b/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..1ce55dcc --- /dev/null +++ b/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("optimism")}} \ No newline at end of file diff --git a/models/staging/optimism/fact_optimism_stablecoin_metrics_p2p.sql b/models/staging/optimism/fact_optimism_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..1ce55dcc --- /dev/null +++ b/models/staging/optimism/fact_optimism_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("optimism")}} \ No newline at end of file From 6cdbf479077afa7f619ec2353c54163a97670379 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Fri, 19 Jul 2024 14:42:52 -0400 Subject: [PATCH 066/213] Add injective trending data (#301) --- .../injective/core/ez_injective_metrics.sql | 2 +- .../ez_injective_metrics_by_application.sql | 2 +- .../core/ez_injective_metrics_by_category.sql | 2 +- .../core/ez_injective_metrics_by_contract.sql | 2 +- .../injective/injective_trending_daily.sql | 61 ++++++++ .../injective_trending_weekly_monthly.sql | 139 ++++++++++++++++++ models/trending/bam_trending_data.sql | 6 + 7 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 models/staging/injective/injective_trending_daily.sql create mode 100644 models/staging/injective/injective_trending_weekly_monthly.sql diff --git a/models/projects/injective/core/ez_injective_metrics.sql b/models/projects/injective/core/ez_injective_metrics.sql index 0697e02f..194f8b81 100644 --- a/models/projects/injective/core/ez_injective_metrics.sql +++ b/models/projects/injective/core/ez_injective_metrics.sql @@ -10,7 +10,7 @@ with -- Alternative fundamental source from BigQuery, preferred when possible over Snowflake data - fundamental_data as (select * EXCLUDE date, TO_DATE(TO_TIMESTAMP_NTZ(date)) AS date from {{ source('PROD_LANDING', 'ez_injective_metrics') }}), + fundamental_data as (select * EXCLUDE date, DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date from {{ source('PROD_LANDING', 'ez_injective_metrics') }}), daily_txns as (select * from {{ ref("fact_injective_daily_txns_silver") }}), revenue as (select * from {{ ref("fact_injective_revenue_silver") }}), mints as (select * from {{ ref("fact_injective_mints_silver") }}) diff --git a/models/projects/injective/core/ez_injective_metrics_by_application.sql b/models/projects/injective/core/ez_injective_metrics_by_application.sql index 993e7ee3..f78f3dd2 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_application.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_application.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - TO_TIMESTAMP_NTZ(date) AS date + DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_category.sql b/models/projects/injective/core/ez_injective_metrics_by_category.sql index ba707c58..e1abc03c 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_category.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_category.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - TO_TIMESTAMP_NTZ(date) AS date + DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_category') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_contract.sql b/models/projects/injective/core/ez_injective_metrics_by_contract.sql index 141d74bc..08ba7e9f 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_contract.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_contract.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - TO_TIMESTAMP_NTZ(date) AS date + DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_contract') }} \ No newline at end of file diff --git a/models/staging/injective/injective_trending_daily.sql b/models/staging/injective/injective_trending_daily.sql new file mode 100644 index 00000000..db3107f2 --- /dev/null +++ b/models/staging/injective/injective_trending_daily.sql @@ -0,0 +1,61 @@ +{{ config(materialized="table", snowflake_warehouse="BAM_TRENDING_WAREHOUSE") }} +WITH contracts AS ( + SELECT + * + FROM {{ ref('dim_contracts_gold') }} + WHERE + chain = 'injective' +), last_day AS ( + SELECT + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd, + metrics.friendly_name, + metrics.category + FROM {{ ref('ez_injective_metrics_by_application') }} metrics + LEFT join contracts + ON metrics.app = contracts.app + where + contracts.address is not null + AND metrics.date >= dateadd(day, -1, current_date) +), first_day AS ( + select + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd + FROM {{ ref('ez_injective_metrics_by_application') }} metrics + LEFT join contracts + ON metrics.app = contracts.app + WHERE + contracts.address IS NOT NULL + AND metrics.date < dateadd(day, -1, current_date) + AND metrics.date >= dateadd(day, -2, current_date) +) +select + -- Dedup to pick one record per app + MAX(last_day.address) to_address, + MAX(last_day.txns) txns, + MAX(last_day.gas) gas, + MAX(last_day.gas_usd) gas_usd, + MAX(last_day.dau) dau, + MAX(first_day.txns) prev_txns, + MAX(first_day.gas) prev_gas, + MAX(first_day.gas_usd) prev_gas_usd, + MAX(first_day.dau) prev_dau, + MAX(last_day.name) name, + last_day.app as namespace, + MAX(last_day.friendly_name) friendly_name, + MAX(last_day.category) category, + 'daily' as granularity +from last_day +left join first_day on lower(last_day.address) = lower(first_day.address) +group by + namespace \ No newline at end of file diff --git a/models/staging/injective/injective_trending_weekly_monthly.sql b/models/staging/injective/injective_trending_weekly_monthly.sql new file mode 100644 index 00000000..5715d078 --- /dev/null +++ b/models/staging/injective/injective_trending_weekly_monthly.sql @@ -0,0 +1,139 @@ +{{ config(materialized="table", snowflake_warehouse="BAM_TRENDING_WAREHOUSE") }} +WITH contracts AS ( + SELECT + * + FROM {{ ref('dim_contracts_gold') }} + WHERE + chain = 'injective' +), last_week AS ( + SELECT + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd, + metrics.friendly_name, + metrics.category + FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} metrics + LEFT JOIN contracts + ON metrics.app = contracts.app + where + contracts.address is not null + AND metrics.date >= dateadd(month, -7, current_date) +), first_week AS ( + select + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd, + metrics.friendly_name, + metrics.category + FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} metrics + LEFT JOIN contracts + ON metrics.app = contracts.app + WHERE + contracts.address is not null + AND metrics.date < dateadd(day, -7, current_date) + AND metrics.date >= dateadd(day, -14, current_date) +), trending_week AS ( + select + last_week.address, + last_week.txns, + last_week.gas, + last_week.gas_usd, + last_week.dau, + first_week.txns prev_txns, + first_week.gas prev_gas, + first_week.gas_usd prev_gas_usd, + first_week.dau prev_dau, + last_week.name, + last_week.app namespace, + last_week.friendly_name, + last_week.category, + 'weekly' as granularity + from last_week + left join first_week on lower(last_week.address) = lower(first_week.address) +), last_month AS ( + SELECT + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd, + metrics.friendly_name, + metrics.category + FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} metrics + LEFT JOIN contracts + ON metrics.app = contracts.app + where + contracts.address is not null + AND metrics.date >= dateadd(month, -30, current_date) +), first_month AS ( + select + contracts.address, + contracts.name, + metrics.app, + metrics.txns, + metrics.dau, + metrics.gas, + metrics.gas_usd, + metrics.friendly_name, + metrics.category + FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} metrics + LEFT JOIN contracts + ON metrics.app = contracts.app + where + contracts.address is not null + AND metrics.date < dateadd(day, -30, current_date) + AND metrics.date >= dateadd(day, -60, current_date) +), trending_month as ( + select + last_month.address to_address, + last_month.txns, + last_month.gas, + last_month.gas_usd, + last_month.dau, + first_month.txns prev_txns, + first_month.gas prev_gas, + first_month.gas_usd prev_gas_usd, + first_month.dau prev_dau, + last_month.name, + last_month.app as namespace, + last_month.friendly_name, + last_month.category, + 'monthly' as granularity + from last_month + left join first_month on lower(last_month.address) = lower(first_month.address) +), unioned AS ( + select * + from trending_week + union + select * + from trending_month +) +-- Dedup to pick one record per app +SELECT + MAX(address) to_address, + MAX(txns) txns, + MAX(gas) gas, + MAX(gas_usd) gas_usd, + MAX(dau) dau, + MAX(prev_txns) prev_txns, + MAX(prev_gas) prev_gas, + MAX(prev_gas_usd) prev_gas_usd, + MAX(prev_dau) prev_dau, + MAX(name) name, + namespace, + MAX(friendly_name) friendly_name, + MAX(category) category, + granularity +FROM unioned +group by + namespace, granularity diff --git a/models/trending/bam_trending_data.sql b/models/trending/bam_trending_data.sql index 89130c79..81cb7a13 100644 --- a/models/trending/bam_trending_data.sql +++ b/models/trending/bam_trending_data.sql @@ -65,3 +65,9 @@ from {{ ref("tron_trending_daily") }} union all select *, 'tron' as chain from {{ ref("tron_trending_weekly_monthly") }} +union all +select *, 'injective' as chain +from {{ ref("injective_trending_daily") }} +union all +select *, 'injective' as chain +from {{ ref("injective_trending_weekly_monthly") }} \ No newline at end of file From 4b9213043f63e10336f7079bf9b5de2cdebb9d3c Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Fri, 19 Jul 2024 15:01:13 -0400 Subject: [PATCH 067/213] Add injective data to gas_dau_txns tables (#310) --- .../all_chains_gas_dau_txns_by_category.sql | 1 + .../all_chains_gas_dau_txns_by_chain.sql | 1 + .../all_chains_gas_dau_txns_by_contract.sql | 18 ++++++++++++++++++ .../all_chains_gas_dau_txns_by_namespace.sql | 1 + 4 files changed, 21 insertions(+) diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql index c2253a2b..0caba3c4 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql @@ -9,6 +9,7 @@ with ref("ez_base_metrics_by_category"), ref("ez_bsc_metrics_by_category"), ref("ez_ethereum_metrics_by_category"), + ref("ez_injective_metrics_by_category"), ref("ez_near_metrics_by_category"), ref("ez_optimism_metrics_by_category"), ref("ez_polygon_metrics_by_category"), diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql index 3823a62b..61553dec 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql @@ -10,6 +10,7 @@ with ref("ez_base_metrics"), ref("ez_bsc_metrics"), ref("ez_ethereum_metrics"), + ref("ez_injective_metrics"), ref("ez_near_metrics"), ref("ez_optimism_metrics"), ref("ez_polygon_metrics"), diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql index 4c084db4..6cc39f17 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql @@ -197,3 +197,21 @@ select null as avg_token_price, 'sui' as chain from {{ ref("ez_sui_metrics_by_contract") }} +union +select + contract_address, + date, + name, + null as symbol, + app as namespace, + friendly_name, + category, + gas as total_gas, + gas_usd as total_gas_usd, + txns as transactions, + dau, + null as token_transfer_usd, + null as token_transfer, + null as avg_token_price, + 'injective' as chain +from {{ ref("ez_injective_metrics_by_contract") }} diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql index faf5f5a7..913bb5cc 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql @@ -10,6 +10,7 @@ with ref("ez_base_metrics_by_application"), ref("ez_bsc_metrics_by_application"), ref("ez_ethereum_metrics_by_application"), + ref("ez_injective_metrics_by_application"), ref("ez_near_metrics_by_application"), ref("ez_optimism_metrics_by_application"), ref("ez_polygon_metrics_by_application"), From f11b7764690ae3755dae98f3a8928060fee43cef Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Fri, 19 Jul 2024 16:35:25 -0400 Subject: [PATCH 068/213] Remove Date Adjustment from Injective Models (#319) --- models/projects/injective/core/ez_injective_metrics.sql | 2 +- .../injective/core/ez_injective_metrics_by_application.sql | 2 +- .../injective/core/ez_injective_metrics_by_category.sql | 2 +- .../injective/core/ez_injective_metrics_by_contract.sql | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/models/projects/injective/core/ez_injective_metrics.sql b/models/projects/injective/core/ez_injective_metrics.sql index 194f8b81..05baf15a 100644 --- a/models/projects/injective/core/ez_injective_metrics.sql +++ b/models/projects/injective/core/ez_injective_metrics.sql @@ -10,7 +10,7 @@ with -- Alternative fundamental source from BigQuery, preferred when possible over Snowflake data - fundamental_data as (select * EXCLUDE date, DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date from {{ source('PROD_LANDING', 'ez_injective_metrics') }}), + fundamental_data as (select * EXCLUDE date, TO_TIMESTAMP_NTZ(date) AS date from {{ source('PROD_LANDING', 'ez_injective_metrics') }}), daily_txns as (select * from {{ ref("fact_injective_daily_txns_silver") }}), revenue as (select * from {{ ref("fact_injective_revenue_silver") }}), mints as (select * from {{ ref("fact_injective_mints_silver") }}) diff --git a/models/projects/injective/core/ez_injective_metrics_by_application.sql b/models/projects/injective/core/ez_injective_metrics_by_application.sql index f78f3dd2..993e7ee3 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_application.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_application.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date + TO_TIMESTAMP_NTZ(date) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_application') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_category.sql b/models/projects/injective/core/ez_injective_metrics_by_category.sql index e1abc03c..ba707c58 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_category.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_category.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date + TO_TIMESTAMP_NTZ(date) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_category') }} \ No newline at end of file diff --git a/models/projects/injective/core/ez_injective_metrics_by_contract.sql b/models/projects/injective/core/ez_injective_metrics_by_contract.sql index 08ba7e9f..141d74bc 100644 --- a/models/projects/injective/core/ez_injective_metrics_by_contract.sql +++ b/models/projects/injective/core/ez_injective_metrics_by_contract.sql @@ -9,5 +9,5 @@ }} SELECT * EXCLUDE date, - DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date + TO_TIMESTAMP_NTZ(date) AS date FROM {{ source('PROD_LANDING', 'ez_injective_metrics_by_contract') }} \ No newline at end of file From 9b2da816fe07c9d761854a172b67076a815441ed Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 19 Jul 2024 18:18:44 -0400 Subject: [PATCH 069/213] Stablecoin V2: Make Ethereum Arb, Base incremental (#320) --- macros/stablecoins/stablecoin_metrics_all.sql | 2 +- .../staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql | 2 +- .../arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql | 2 +- .../staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql | 2 +- models/staging/base/fact_base_stablecoin_metrics_all.sql | 2 +- models/staging/base/fact_base_stablecoin_metrics_artemis.sql | 2 +- models/staging/base/fact_base_stablecoin_metrics_p2p.sql | 2 +- .../staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql | 2 +- .../ethereum/fact_ethereum_stablecoin_metrics_artemis.sql | 2 +- .../staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index fe236872..d96f9abe 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -63,7 +63,7 @@ with from results_dollar_denom where date < to_date(sysdate()) {% if is_incremental() %} - and block_timestamp >= ( + and date >= ( select dateadd('day', -3, max(date)) from {{ this }} ) diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql index 63f47b0b..103f7ae6 100644 --- a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_all.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql index 6df58d45..a755c342 100644 --- a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql index 6df58d45..a755c342 100644 --- a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_p2p.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/base/fact_base_stablecoin_metrics_all.sql b/models/staging/base/fact_base_stablecoin_metrics_all.sql index 0ffd9968..d6561b25 100644 --- a/models/staging/base/fact_base_stablecoin_metrics_all.sql +++ b/models/staging/base/fact_base_stablecoin_metrics_all.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/base/fact_base_stablecoin_metrics_artemis.sql b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql index 683ec745..ee83d0d1 100644 --- a/models/staging/base/fact_base_stablecoin_metrics_artemis.sql +++ b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/base/fact_base_stablecoin_metrics_p2p.sql b/models/staging/base/fact_base_stablecoin_metrics_p2p.sql index 683ec745..ee83d0d1 100644 --- a/models/staging/base/fact_base_stablecoin_metrics_p2p.sql +++ b/models/staging/base/fact_base_stablecoin_metrics_p2p.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql index 890c38c8..debc6959 100644 --- a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_all.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql index 5890c7ba..5263fd16 100644 --- a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql index 5890c7ba..5263fd16 100644 --- a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_p2p.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key="unique_id", snowflake_warehouse="STABLECOIN_V2_LG_2", ) From 3c9a39d3b47308d5caf0b7d5362d4581dec480b1 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 20 Jul 2024 15:56:55 -0400 Subject: [PATCH 070/213] Stablecoin V2: Fix Incremental Run (#321) --- macros/stablecoins/stablecoin_metrics.sql | 32 ++++++++++--------- .../stablecoin_metrics_artemis.sql | 2 +- macros/stablecoins/stablecoin_metrics_p2p.sql | 2 +- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index 6303e664..0cf9c788 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -6,7 +6,7 @@ date , contract_address , symbol - , address + , address as from_address {% if chain in ('ethereum') %} , case when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_bridge_addresses")}}) then 0 @@ -93,22 +93,24 @@ ) , chain_stablecoin_metrics as ( select - date - , contract_address - , symbol - , from_address - , stablecoin_transfer_volume - , stablecoin_daily_txns - , artemis_stablecoin_transfer_volume - , artemis_stablecoin_daily_txns - , p2p_stablecoin_transfer_volume - , p2p_stablecoin_daily_txns + stablecoin_supply.date + , stablecoin_supply.contract_address + , stablecoin_supply.symbol + , stablecoin_supply.from_address + , coalesce(stablecoin_transfer_volume, 0) as stablecoin_transfer_volume + , coalesce(stablecoin_daily_txns, 0) as stablecoin_daily_txns + , coalesce(artemis_stablecoin_transfer_volume, 0) as artemis_stablecoin_transfer_volume + , coalesce(artemis_stablecoin_daily_txns, 0) as artemis_stablecoin_daily_txns + , coalesce(p2p_stablecoin_transfer_volume, 0) as p2p_stablecoin_transfer_volume + , coalesce(p2p_stablecoin_daily_txns, 0) as p2p_stablecoin_daily_txns , stablecoin_supply - , unique_id + , stablecoin_supply.unique_id from stablecoin_supply - left join all_metrics using (unique_id) - left join artemis_metrics using (unique_id) - left join p2p_metrics using (unique_id) + left join all_metrics on stablecoin_supply.unique_id = all_metrics.unique_id + left join artemis_metrics on stablecoin_supply.unique_id = artemis_metrics.unique_id + left join p2p_metrics on stablecoin_supply.unique_id = p2p_metrics.unique_id + --Filter out rows that don't contribute to metrics + where stablecoin_supply.stablecoin_supply != 0 or all_metrics.from_address is not null ) , filtered_contracts as ( select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 34589aa2..51a2eec8 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -103,7 +103,7 @@ with from results_dollar_denom where date < to_date(sysdate()) {% if is_incremental() %} - and block_timestamp >= ( + and date >= ( select dateadd('day', -3, max(date)) from {{ this }} ) diff --git a/macros/stablecoins/stablecoin_metrics_p2p.sql b/macros/stablecoins/stablecoin_metrics_p2p.sql index 01e01ad4..9b16472b 100644 --- a/macros/stablecoins/stablecoin_metrics_p2p.sql +++ b/macros/stablecoins/stablecoin_metrics_p2p.sql @@ -49,7 +49,7 @@ with from stablecoin_metrics where date < to_date(sysdate()) {% if is_incremental() %} - and block_timestamp >= ( + and date >= ( select dateadd('day', -3, max(date)) from {{ this }} ) From 657fb19d82cc21e1c1c3a1c8bcb111092bd34204 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 21 Jul 2024 21:44:15 -0400 Subject: [PATCH 071/213] Stablecoin V2: Optimism (#322) --- macros/stablecoins/stablecoin_metrics.sql | 2 +- .../agg_daily_stablecoin_breakdown_silver.sql | 1 + .../dim_optimism_genesis_dai_addresses.sql | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 models/staging/optimism/dim_optimism_genesis_dai_addresses.sql diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index 0cf9c788..d20c1ec6 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -7,7 +7,7 @@ , contract_address , symbol , address as from_address - {% if chain in ('ethereum') %} + {% if chain in ('ethereum', 'tron') %} , case when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_bridge_addresses")}}) then 0 else stablecoin_supply diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 1d669204..c4027e9e 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -6,6 +6,7 @@ with relations=[ ref("ez_base_stablecoin_metrics_by_address"), ref("ez_arbitrum_stablecoin_metrics_by_address"), + ref("ez_optimism_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/staging/optimism/dim_optimism_genesis_dai_addresses.sql b/models/staging/optimism/dim_optimism_genesis_dai_addresses.sql new file mode 100644 index 00000000..c1b66f3f --- /dev/null +++ b/models/staging/optimism/dim_optimism_genesis_dai_addresses.sql @@ -0,0 +1,15 @@ +{{ config(materialized="table") }} +--This is used to get the addresses of the genesis DAI contract +--Recursivly build this table for dai until we have all the addresses +--This table is used in the extract step raw_optimism_genesis_dai_stablecoin_balances +select + distinct address +from {{ ref("fact_optimism_genesis_stablecoin_balances") }} +where lower(contract_address) = lower('0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1') + and balance > 0 +union +select + distinct address +from pc_dbt_db.prod.fact_optimism_stablecoin_balances +where lower(contract_address) = lower('0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1') + and round(stablecoin_supply, 5) < 0 \ No newline at end of file From 688264a3ba7d8a196fa05d74163d7bdbf46d4c7c Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 22 Jul 2024 09:02:55 -0400 Subject: [PATCH 072/213] Stablecoin V2: Tron (#324) --- .../core/ez_tron_stablecoin_metrics_by_address.sql | 13 +++++++++++++ .../staging/tron/fact_tron_stablecoin_balances.sql | 10 ++++++++++ .../tron/fact_tron_stablecoin_metrics_all.sql | 10 ++++++++++ .../tron/fact_tron_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../tron/fact_tron_stablecoin_metrics_p2p.sql | 10 ++++++++++ 5 files changed, 53 insertions(+) create mode 100644 models/projects/tron/core/ez_tron_stablecoin_metrics_by_address.sql create mode 100644 models/staging/tron/fact_tron_stablecoin_balances.sql create mode 100644 models/staging/tron/fact_tron_stablecoin_metrics_all.sql create mode 100644 models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql create mode 100644 models/staging/tron/fact_tron_stablecoin_metrics_p2p.sql diff --git a/models/projects/tron/core/ez_tron_stablecoin_metrics_by_address.sql b/models/projects/tron/core/ez_tron_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..22a7ac2c --- /dev/null +++ b/models/projects/tron/core/ez_tron_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="tron", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("tron")}} \ No newline at end of file diff --git a/models/staging/tron/fact_tron_stablecoin_balances.sql b/models/staging/tron/fact_tron_stablecoin_balances.sql new file mode 100644 index 00000000..d3713338 --- /dev/null +++ b/models/staging/tron/fact_tron_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("tron")}} \ No newline at end of file diff --git a/models/staging/tron/fact_tron_stablecoin_metrics_all.sql b/models/staging/tron/fact_tron_stablecoin_metrics_all.sql new file mode 100644 index 00000000..2b5ad12c --- /dev/null +++ b/models/staging/tron/fact_tron_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("tron")}} \ No newline at end of file diff --git a/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql b/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..c78cbaa7 --- /dev/null +++ b/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("tron")}} \ No newline at end of file diff --git a/models/staging/tron/fact_tron_stablecoin_metrics_p2p.sql b/models/staging/tron/fact_tron_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..c78cbaa7 --- /dev/null +++ b/models/staging/tron/fact_tron_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("tron")}} \ No newline at end of file From 00c6c24b8304a47120ac9367017806c0a6fd295b Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Mon, 22 Jul 2024 10:30:46 -0400 Subject: [PATCH 073/213] Fix Column Name in Injective Bridge Flows Data (#323) --- models/staging/injective/fact_injective_bridge_flows.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/staging/injective/fact_injective_bridge_flows.sql b/models/staging/injective/fact_injective_bridge_flows.sql index 443f98d5..0716b4c4 100644 --- a/models/staging/injective/fact_injective_bridge_flows.sql +++ b/models/staging/injective/fact_injective_bridge_flows.sql @@ -1,4 +1,4 @@ SELECT - * EXCLUDE date, - DATEADD('day', 1, DATE_TRUNC('day', TO_TIMESTAMP_NTZ(date))) AS date + * EXCLUDE block_date, + DATE_TRUNC('day', TO_TIMESTAMP_NTZ(block_date)) AS date FROM {{ source('PROD_LANDING', 'injective_bridge_flows') }} \ No newline at end of file From 655da2daf131b6a97182f5d2948ea893c4af1154 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:08:38 -0400 Subject: [PATCH 074/213] rm stargate artifacts (#325) --- .../staging/stargate/__stargate__sources.yml | 9 ------- .../_test_fact_stargate_bridge_volume.yml | 26 ------------------- .../stargate/fact_stargate_bridge_volume.sql | 17 ------------ .../fact_stargate_bridge_volume_gold.sql | 3 --- 4 files changed, 55 deletions(-) delete mode 100644 models/staging/stargate/__stargate__sources.yml delete mode 100644 models/staging/stargate/_test_fact_stargate_bridge_volume.yml delete mode 100644 models/staging/stargate/fact_stargate_bridge_volume.sql delete mode 100644 models/staging/stargate/fact_stargate_bridge_volume_gold.sql diff --git a/models/staging/stargate/__stargate__sources.yml b/models/staging/stargate/__stargate__sources.yml deleted file mode 100644 index 496b192e..00000000 --- a/models/staging/stargate/__stargate__sources.yml +++ /dev/null @@ -1,9 +0,0 @@ -sources: - - name: PROD_LANDING - schema: PROD_LANDING - database: LANDING_DATABASE - tables: - - name: raw_stargate_bridge_volume - - name: SDO_DEV_LANDING - schema: SDO_DEV_LANDING - database: LANDING_DATABASE diff --git a/models/staging/stargate/_test_fact_stargate_bridge_volume.yml b/models/staging/stargate/_test_fact_stargate_bridge_volume.yml deleted file mode 100644 index 318c27ba..00000000 --- a/models/staging/stargate/_test_fact_stargate_bridge_volume.yml +++ /dev/null @@ -1,26 +0,0 @@ -models: -- name: fact_stargate_bridge_volume - tests: - - 'dbt_expectations.expect_table_row_count_to_be_between:': - min_value: 1 - max_value: 1000000 - columns: - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: BRIDGE_VOLUME - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/stargate/fact_stargate_bridge_volume.sql b/models/staging/stargate/fact_stargate_bridge_volume.sql deleted file mode 100644 index 1348c42c..00000000 --- a/models/staging/stargate/fact_stargate_bridge_volume.sql +++ /dev/null @@ -1,17 +0,0 @@ -with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_stargate_bridge_volume") }} - ), - data as ( - select parse_json(source_json) data - from {{ source("PROD_LANDING", "raw_stargate_bridge_volume") }} - where extraction_date = (select max_date from max_extraction) - ) -select - to_date(value:"dayDate") as date, - value:value::double as bridge_volume, - 'stargate' as app, - null as chain, - 'Bridge' as category -from data, lateral flatten(input => data) diff --git a/models/staging/stargate/fact_stargate_bridge_volume_gold.sql b/models/staging/stargate/fact_stargate_bridge_volume_gold.sql deleted file mode 100644 index 76aa18ae..00000000 --- a/models/staging/stargate/fact_stargate_bridge_volume_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, bridge_volume, app, chain, category -from {{ ref("fact_stargate_bridge_volume") }} From 225f924ce8ba9833b5f7c5c156bf6eb78c46e6bc Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:27:33 -0400 Subject: [PATCH 075/213] Stablecoin V2: Avalanche (#326) --- .../agg_daily_stablecoin_breakdown_silver.sql | 2 ++ .../ez_avalanche_stablecoin_metrics_by_address.sql | 13 +++++++++++++ .../fact_avalanche_stablecoin_balances.sql | 10 ++++++++++ .../fact_avalanche_stablecoin_metrics_all.sql | 10 ++++++++++ .../fact_avalanche_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../fact_avalanche_stablecoin_metrics_p2p.sql | 10 ++++++++++ 6 files changed, 55 insertions(+) create mode 100644 models/projects/avalanche/core/ez_avalanche_stablecoin_metrics_by_address.sql create mode 100644 models/staging/avalanche/fact_avalanche_stablecoin_balances.sql create mode 100644 models/staging/avalanche/fact_avalanche_stablecoin_metrics_all.sql create mode 100644 models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql create mode 100644 models/staging/avalanche/fact_avalanche_stablecoin_metrics_p2p.sql diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index c4027e9e..559896d9 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -7,6 +7,8 @@ with ref("ez_base_stablecoin_metrics_by_address"), ref("ez_arbitrum_stablecoin_metrics_by_address"), ref("ez_optimism_stablecoin_metrics_by_address"), + ref("ez_avalanche_stablecoin_metrics_by_address"), + ref("ez_ethereum_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/projects/avalanche/core/ez_avalanche_stablecoin_metrics_by_address.sql b/models/projects/avalanche/core/ez_avalanche_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..fdae1937 --- /dev/null +++ b/models/projects/avalanche/core/ez_avalanche_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="avalanche", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("avalanche")}} \ No newline at end of file diff --git a/models/staging/avalanche/fact_avalanche_stablecoin_balances.sql b/models/staging/avalanche/fact_avalanche_stablecoin_balances.sql new file mode 100644 index 00000000..07809ada --- /dev/null +++ b/models/staging/avalanche/fact_avalanche_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("avalanche")}} \ No newline at end of file diff --git a/models/staging/avalanche/fact_avalanche_stablecoin_metrics_all.sql b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_all.sql new file mode 100644 index 00000000..4a5f77e7 --- /dev/null +++ b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("avalanche")}} \ No newline at end of file diff --git a/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..deff8df6 --- /dev/null +++ b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("avalanche")}} \ No newline at end of file diff --git a/models/staging/avalanche/fact_avalanche_stablecoin_metrics_p2p.sql b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..deff8df6 --- /dev/null +++ b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("avalanche")}} \ No newline at end of file From 0c0c24c245dc594487c8265674ce955732277a63 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 22 Jul 2024 18:43:57 -0400 Subject: [PATCH 076/213] Stablecoin V2: Polygon (#327) --- .../ez_polygon_stablecoin_metrics_by_address.sql | 13 +++++++++++++ .../polygon/fact_polygon_stablecoin_balances.sql | 10 ++++++++++ .../polygon/fact_polygon_stablecoin_metrics_all.sql | 10 ++++++++++ .../fact_polygon_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../polygon/fact_polygon_stablecoin_metrics_p2p.sql | 10 ++++++++++ 5 files changed, 53 insertions(+) create mode 100644 models/projects/polygon/core/ez_polygon_stablecoin_metrics_by_address.sql create mode 100644 models/staging/polygon/fact_polygon_stablecoin_balances.sql create mode 100644 models/staging/polygon/fact_polygon_stablecoin_metrics_all.sql create mode 100644 models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql create mode 100644 models/staging/polygon/fact_polygon_stablecoin_metrics_p2p.sql diff --git a/models/projects/polygon/core/ez_polygon_stablecoin_metrics_by_address.sql b/models/projects/polygon/core/ez_polygon_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..140023ae --- /dev/null +++ b/models/projects/polygon/core/ez_polygon_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="polygon", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("polygon")}} \ No newline at end of file diff --git a/models/staging/polygon/fact_polygon_stablecoin_balances.sql b/models/staging/polygon/fact_polygon_stablecoin_balances.sql new file mode 100644 index 00000000..c28ad6e2 --- /dev/null +++ b/models/staging/polygon/fact_polygon_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("polygon")}} \ No newline at end of file diff --git a/models/staging/polygon/fact_polygon_stablecoin_metrics_all.sql b/models/staging/polygon/fact_polygon_stablecoin_metrics_all.sql new file mode 100644 index 00000000..4b4f834a --- /dev/null +++ b/models/staging/polygon/fact_polygon_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("polygon")}} \ No newline at end of file diff --git a/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql b/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..f231c906 --- /dev/null +++ b/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("polygon")}} \ No newline at end of file diff --git a/models/staging/polygon/fact_polygon_stablecoin_metrics_p2p.sql b/models/staging/polygon/fact_polygon_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..f231c906 --- /dev/null +++ b/models/staging/polygon/fact_polygon_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("polygon")}} \ No newline at end of file From 0bb9f179195734a4488282f22a55c2d485160524 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 22 Jul 2024 22:19:06 -0400 Subject: [PATCH 077/213] Stablecoin V2: Polygon, Tron (#328) --- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 559896d9..9f34c542 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -9,6 +9,8 @@ with ref("ez_optimism_stablecoin_metrics_by_address"), ref("ez_avalanche_stablecoin_metrics_by_address"), ref("ez_ethereum_stablecoin_metrics_by_address"), + ref("ez_polygon_stablecoin_metrics_by_address"), + ref("ez_tron_stablecoin_metrics_by_address"), ] ) }} From a2105247fd6b1aef34b93082bbb1d8f430c1187e Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 22 Jul 2024 22:54:29 -0400 Subject: [PATCH 078/213] P2P Tranfers: Tron (#329) --- models/staging/tron/fact_tron_p2p_native_transfers.sql | 2 +- models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql | 2 +- models/staging/tron/fact_tron_p2p_token_transfers_silver.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/models/staging/tron/fact_tron_p2p_native_transfers.sql b/models/staging/tron/fact_tron_p2p_native_transfers.sql index 63ea80fe..55691b11 100644 --- a/models/staging/tron/fact_tron_p2p_native_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_native_transfers.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key=["tx_hash", "index"], ) }} diff --git a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql index d66c8811..608c6a20 100644 --- a/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_stablecoin_transfers.sql @@ -1,7 +1,7 @@ --depends_on: {{ ref("fact_tron_stablecoin_transfers") }} {{ config( - materialized="table", + materialized="incremental", unique_key=["tx_hash", "index"], ) }} diff --git a/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql b/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql index e66a9e2c..1648c3fb 100644 --- a/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql +++ b/models/staging/tron/fact_tron_p2p_token_transfers_silver.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key=["tx_hash", "index"], ) }} From a0cbe42a6b29d5681d01ac5d4c2a3913b8cec8a6 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:36:03 -0400 Subject: [PATCH 079/213] Stablecoin V2: Artemis Filter (#330) --- .../arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql | 2 +- .../avalanche/fact_avalanche_stablecoin_metrics_artemis.sql | 2 +- models/staging/base/fact_base_stablecoin_metrics_artemis.sql | 2 +- .../ethereum/fact_ethereum_stablecoin_metrics_artemis.sql | 2 +- .../optimism/fact_optimism_stablecoin_metrics_artemis.sql | 2 +- .../staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql | 2 +- models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql index a755c342..8d8cb599 100644 --- a/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql +++ b/models/staging/arbitrum/fact_arbitrum_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("arbitrum")}} \ No newline at end of file +{{stablecoin_metrics_artemis("arbitrum")}} \ No newline at end of file diff --git a/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql index deff8df6..91760036 100644 --- a/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql +++ b/models/staging/avalanche/fact_avalanche_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("avalanche")}} \ No newline at end of file +{{stablecoin_metrics_artemis("avalanche")}} \ No newline at end of file diff --git a/models/staging/base/fact_base_stablecoin_metrics_artemis.sql b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql index ee83d0d1..2bbe119b 100644 --- a/models/staging/base/fact_base_stablecoin_metrics_artemis.sql +++ b/models/staging/base/fact_base_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("base")}} \ No newline at end of file +{{stablecoin_metrics_artemis("base")}} \ No newline at end of file diff --git a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql index 5263fd16..bc48561d 100644 --- a/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql +++ b/models/staging/ethereum/fact_ethereum_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("ethereum")}} \ No newline at end of file +{{stablecoin_metrics_artemis("ethereum")}} \ No newline at end of file diff --git a/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql b/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql index 1ce55dcc..fa5a0b65 100644 --- a/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql +++ b/models/staging/optimism/fact_optimism_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("optimism")}} \ No newline at end of file +{{stablecoin_metrics_artemis("optimism")}} \ No newline at end of file diff --git a/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql b/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql index f231c906..ca176fd2 100644 --- a/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql +++ b/models/staging/polygon/fact_polygon_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("polygon")}} \ No newline at end of file +{{stablecoin_metrics_artemis("polygon")}} \ No newline at end of file diff --git a/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql b/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql index c78cbaa7..a33f09b6 100644 --- a/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql +++ b/models/staging/tron/fact_tron_stablecoin_metrics_artemis.sql @@ -7,4 +7,4 @@ }} -{{stablecoin_metrics_p2p("tron")}} \ No newline at end of file +{{stablecoin_metrics_artemis("tron")}} \ No newline at end of file From e642c34788b71820f4027afe55f83deba096498d Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:57:59 -0400 Subject: [PATCH 080/213] Update naming of TON Metrics (#331) --- models/projects/ton/core/ez_ton_metrics.sql | 59 ++++++++----------- ...xns_gas_gas_usd_revenue_revenue_native.sql | 3 - 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index 673efbc4..2237c6a2 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -12,27 +12,20 @@ with fundamental_data as ( select date, - chain, - txns, - dau, - fees, - fees_native, - revenue, - revenue_native, - avg_txn_fee + txns as transaction_nodes from {{ ref("fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native") }} ), ton_app_daa as ( select date, - daa as ton_apps_daa + daa as dau from {{ ref("fact_ton_app_daa") }} ), ton_app_txns_fees as ( select date, - txns as ton_apps_txns, - fees_native as ton_apps_fees_native, - avg_txn_fee_native as ton_apps_avg_txn_fee_native + txns, + fees_native, + avg_txn_fee_native, from {{ ref("fact_ton_app_fees_txns") }} ), price_data as ({{ get_coingecko_metrics("the-open-network") }}), @@ -45,15 +38,9 @@ with ), github_data as ({{ get_github_metrics("ton") }}) select - fundamental_data.date, - fundamental_data.chain, - txns, - dau, - fees_native, - fees, - revenue_native, - revenue, - avg_txn_fee, + ton_app_daa.date, + 'ton' as chain, + transaction_nodes, price, market_cap, fdmc, @@ -63,18 +50,18 @@ select weekly_commits_sub_ecosystem, weekly_developers_core_ecosystem, weekly_developers_sub_ecosystem, - ton_apps_daa, - ton_apps_txns, - ton_apps_fees_native, - ton_apps_fees_native * price as ton_apps_fees, - ton_apps_fees_native / 2 as ton_apps_revenue_native, - (ton_apps_fees_native / 2) * price as ton_apps_revenue, - ton_apps_avg_txn_fee_native * price as ton_apps_avg_txn_fee -from fundamental_data -left join price_data on fundamental_data.date = price_data.date -left join defillama_data on fundamental_data.date = defillama_data.date -left join github_data on fundamental_data.date = github_data.date -left join dex_data on fundamental_data.date = dex_data.date -left join ton_app_daa on fundamental_data.date = ton_app_daa.date -left join ton_app_txns_fees on fundamental_data.date = ton_app_txns_fees.date -where fundamental_data.date < to_date(sysdate()) + dau, + txns, + fees_native, + fees_native * price as fees, + fees_native / 2 as revenue_native, + (fees_native / 2) * price as revenue, + avg_txn_fee_native * price as avg_txn_fee +from ton_app_daa +left join price_data on ton_app_daa.date = price_data.date +left join defillama_data on ton_app_daa.date = defillama_data.date +left join github_data on ton_app_daa.date = github_data.date +left join dex_data on ton_app_daa.date = dex_data.date +left join fundamental_data on ton_app_daa.date = fundamental_data.date +left join ton_app_txns_fees on ton_app_daa.date = ton_app_txns_fees.date +where ton_app_daa.date < to_date(sysdate()) diff --git a/models/staging/ton/fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native.sql b/models/staging/ton/fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native.sql index 4b97db9b..28e9fd58 100644 --- a/models/staging/ton/fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native.sql +++ b/models/staging/ton/fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native.sql @@ -12,6 +12,3 @@ from {{ ref("fact_ton_txns")}} t1 left join {{ ref("fact_ton_daa")}} t2 using(date) left join {{ ref("fact_ton_gas_gas_usd")}} t3 using(date) left join {{ ref("fact_ton_revenue_revenue_native")}} t4 using(date) - - - \ No newline at end of file From 63cd2a0a6955c2ec4afa578683b316dbbf111351 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 23 Jul 2024 13:06:10 -0400 Subject: [PATCH 081/213] Stablecoin V2: Artemis Filter (#332) --- macros/stablecoins/stablecoin_metrics_artemis.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 51a2eec8..6822f160 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -16,7 +16,7 @@ with from {{ this }} ) {% endif %} - ) + ), filtered_contracts as ( select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' ), @@ -53,7 +53,7 @@ with , symbol , from_address , to_address - , transfer_volume as artemis_stablecoin_transfer_volume + , transfer_volume as stablecoin_transfer_volume from artemis_ranked_transfer_filter where rn = 1 ), @@ -69,12 +69,12 @@ with then 1 else 0 end - ) as artemis_stablecoin_daily_txns - , sum(artemis_stablecoin_transfer_volume) as artemis_stablecoin_transfer_volume + ) as stablecoin_daily_txns + , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume from artemis_max_transfer_filter group by 1, 2, 3, 4 ), - , results_dollar_denom as ( + results_dollar_denom as ( select stablecoin_metrics.date , stablecoin_metrics.contract_address From 23cc4299fcd21e278b831ba3b82ec39df49ee936 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 23 Jul 2024 17:22:54 -0400 Subject: [PATCH 082/213] Balances: Replace Nulls with Empty Strings (#333) --- macros/address_balances/address_credits.sql | 18 +++++++++--------- macros/address_balances/address_debits.sql | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/macros/address_balances/address_credits.sql b/macros/address_balances/address_credits.sql index 63463df8..57b456ea 100644 --- a/macros/address_balances/address_credits.sql +++ b/macros/address_balances/address_credits.sql @@ -1,5 +1,4 @@ {% macro address_credits(chain, wrapped_native_token_address, native_token_address) %} - select to_address as address, contract_address, @@ -7,7 +6,7 @@ cast(raw_amount as float) as credit, amount_usd as credit_usd, tx_hash, - null as trace_index, + -1 as trace_index, event_index from {{ chain }}_flipside.core.ez_token_transfers where @@ -17,6 +16,7 @@ and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} + union all @@ -28,7 +28,7 @@ amount_usd as credit_usd, tx_hash, trace_index, - null as event_index + -1 as event_index from {{ chain }}_flipside.core.ez_native_transfers where to_date(block_timestamp) < to_date(sysdate()) @@ -37,7 +37,7 @@ and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} - + {% if wrapped_native_token_address is defined %} union all select @@ -47,7 +47,7 @@ cast(decoded_log:"wad" as float) as credit, null as credit_usd, tx_hash, - null as trace_index, + -1 as trace_index, event_index from {{ chain }}_flipside.core.ez_decoded_event_logs where @@ -73,8 +73,8 @@ amount as credit, null as credit_usd, tx_hash, - null as trace_index, - null as event_index + -1 as trace_index, + -1 as event_index from ethereum_flipside.core.ez_native_transfers where to_address = lower('0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515') {% endif %} @@ -93,8 +93,8 @@ cast(decoded_log:"amount" as float) / pow(10, 18) as credit, null as credit_usd, tx_hash, - null as trace_index, - null as event_index + -1 as trace_index, + -1 as event_index from {{ chain }}_flipside.core.ez_decoded_event_logs where event_name = 'Deposit' diff --git a/macros/address_balances/address_debits.sql b/macros/address_balances/address_debits.sql index 5cb8501c..2dfeb2cf 100644 --- a/macros/address_balances/address_debits.sql +++ b/macros/address_balances/address_debits.sql @@ -7,8 +7,8 @@ tx_fee * -1 as debit, null as debit_usd, tx_hash, - null as trace_index, - null as event_index + -1 as trace_index, + -1 as event_index from {{ chain }}_flipside.core.fact_transactions as t where to_date(block_timestamp) < to_date(sysdate()) @@ -27,7 +27,7 @@ cast(raw_amount * -1 as float) as debit, amount_usd * -1 as debit_usd, tx_hash, - null as trace_index, + -1 as trace_index, event_index from {{ chain }}_flipside.core.ez_token_transfers where @@ -48,7 +48,7 @@ amount_usd * -1 as debit_usd, tx_hash, trace_index, - null as event_index + -1 as event_index from {{ chain }}_flipside.core.ez_native_transfers where to_date(block_timestamp) < to_date(sysdate()) @@ -68,7 +68,7 @@ cast(decoded_log:"wad" as float) * -1 as debit, null as debit_usd, tx_hash, - null as trace_index, + -1 as trace_index, event_index from {{ chain }}_flipside.core.ez_decoded_event_logs where From c396332f997fb13d3063c57ef62a1fe293dd70da Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 23 Jul 2024 22:07:06 -0400 Subject: [PATCH 083/213] Create injective_ibc Rollup (#334) --- .../agg_daily_bridge_flows_metrics_silver.sql | 58 ++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql index ec4b575d..1bf913ea 100644 --- a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql +++ b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql @@ -12,7 +12,6 @@ with ref("fact_avalanche_bridge_flows"), ref("fact_base_bridge_flows"), ref("fact_optimism_bridge_flows"), - ref("fact_injective_bridge_flows"), ref("fact_polygon_pos_bridge_flows"), ref("fact_starknet_bridge_flows"), ref("fact_zksync_era_bridge_flows"), @@ -20,6 +19,61 @@ with ] ) }} + ), cosmos_ecosystem AS ( + -- Roll up all Cosmos chains into a single record for the whole ecosystem + -- Get IBC flows from Injective + SELECT + date, + 'injective_ibc' AS app, + 'injective' AS source_chain, + 'cosmos_ecosystem' AS destination_chain, + category, + SUM(amount_usd) AS amount_usd, + NULL AS fee_usd + FROM {{ ref("fact_injective_bridge_flows") }} + WHERE + source_chain = 'injective' + AND app = 'ibc' + GROUP BY + date, category + + UNION ALL + + -- Get IBC flows to Injective + SELECT + date, + 'injective_ibc' AS app, + 'cosmos_ecosystem' AS source_chain, + 'injective' AS destination_chain, + category, + SUM(amount_usd) AS amount_usd, + NULL AS fee_usd + FROM {{ ref("fact_injective_bridge_flows") }} + WHERE + destination_chain = 'injective' + AND app = 'ibc' + GROUP BY + date, category + + UNION ALL + + -- Get flows to/from Injective from Peggy + SELECT + date, + app, + source_chain, + destination_chain, + category, + amount_usd, + NULL AS fee_usd + FROM {{ ref("fact_injective_bridge_flows") }} + WHERE + app = 'peggy' + ), + unioned AS ( + SELECT * EXCLUDE _dbt_source_relation FROM daily_data + UNION ALL + SELECT * FROM cosmos_ecosystem ) select *, @@ -32,5 +86,5 @@ select || destination_chain || '-' || category as unique_id -from daily_data +from unioned where date < to_date(sysdate()) From 4ba2536f51060f160ebd58aff74b7d8a625bddcb Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 24 Jul 2024 18:06:00 -0400 Subject: [PATCH 084/213] Stablecoin V2: Polygon Address Credits and Ethereum (#335) --- macros/address_balances/address_credits.sql | 8 +++++--- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 2 -- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/macros/address_balances/address_credits.sql b/macros/address_balances/address_credits.sql index 57b456ea..6db5262b 100644 --- a/macros/address_balances/address_credits.sql +++ b/macros/address_balances/address_credits.sql @@ -1,4 +1,5 @@ {% macro address_credits(chain, wrapped_native_token_address, native_token_address) %} + select to_address as address, contract_address, @@ -17,7 +18,6 @@ >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} - union all select @@ -38,7 +38,7 @@ >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} - {% if wrapped_native_token_address is defined %} + {% if wrapped_native_token_address is defined and chain not in ('polygon')%} union all select decoded_log:"dst"::string as address, @@ -77,6 +77,7 @@ -1 as event_index from ethereum_flipside.core.ez_native_transfers where to_address = lower('0x011B6E24FfB0B5f5fCc564cf4183C5BBBc96D515') + {% endif %} -- Some EVM Chains has a specific contract address for their native token (polygon) @@ -94,7 +95,7 @@ null as credit_usd, tx_hash, -1 as trace_index, - -1 as event_index + event_index from {{ chain }}_flipside.core.ez_decoded_event_logs where event_name = 'Deposit' @@ -105,6 +106,7 @@ and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} + {% endif %} -- Not included is staking fees (need to do more research and would be chains specific) {% endmacro %} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 9f34c542..559896d9 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -9,8 +9,6 @@ with ref("ez_optimism_stablecoin_metrics_by_address"), ref("ez_avalanche_stablecoin_metrics_by_address"), ref("ez_ethereum_stablecoin_metrics_by_address"), - ref("ez_polygon_stablecoin_metrics_by_address"), - ref("ez_tron_stablecoin_metrics_by_address"), ] ) }} From 5043488e76e95880bde32f2ea21d191158528304 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 25 Jul 2024 15:47:50 -0400 Subject: [PATCH 085/213] Stablecoin V2: Polygon (#336) --- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 559896d9..52f960b2 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -9,6 +9,7 @@ with ref("ez_optimism_stablecoin_metrics_by_address"), ref("ez_avalanche_stablecoin_metrics_by_address"), ref("ez_ethereum_stablecoin_metrics_by_address"), + ref("ez_polygon_stablecoin_metrics_by_address"), ] ) }} From 2c9c00b6f39b0a5c6436ce52bec394271f736e8c Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:56:26 -0400 Subject: [PATCH 086/213] Stablecoin V2: Tron and Ethereum Balances (#337) --- .../address_balances_by_token.sql | 67 ++++++++++++++++++- .../address_credits_allium.sql | 4 +- .../address_debits_allium.sql | 4 +- .../agg_daily_stablecoin_breakdown_silver.sql | 1 - .../fact_tron_address_credit_by_token.sql | 2 +- .../tron/fact_tron_address_debit_by_token.sql | 2 +- 6 files changed, 72 insertions(+), 8 deletions(-) diff --git a/macros/address_balances/address_balances_by_token.sql b/macros/address_balances/address_balances_by_token.sql index 74157231..36534e84 100644 --- a/macros/address_balances/address_balances_by_token.sql +++ b/macros/address_balances/address_balances_by_token.sql @@ -46,6 +46,61 @@ {% macro address_balances_with_flipside_ez(chain) %} +-- Maker does not use ERC20 DAI tokens in the protocol, instead the amount associated with an addresses is stored in the VAT contract +-- This amount can be transfered to the POT contract(0x197e90f9fad81970ba7976f33cbd77088e5d7cf7) to earn yield on your DAI. + {% if chain in ('ethereum') %} + with + ethereum_maker_vat_dai_debit as ( + select + lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') AS address + , lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') AS contract_address + , block_timestamp + , rad::double * 1e18 AS delta + from ethereum_flipside.maker.fact_VAT_move + where dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + {% if is_incremental() %} + and block_timestamp > (select max(block_timestamp) from {{ this }}) + {% endif %} + union all + select + lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') AS address + , lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') AS contract_address + , block_timestamp + , - rad::double * 1e18 AS delta + from ethereum_flipside.maker.fact_VAT_move + where lower(src_address) = lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') + {% if is_incremental() %} + and block_timestamp > (select max(block_timestamp) from {{ this }}) + {% endif %} + union all + select + lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') as address + , lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') AS contract_address + , block_timestamp + , rad::double * 1e18 AS delta + from ethereum_flipside.maker.fact_VAT_suck + where lower(v_address) = lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') + {% if is_incremental() %} + and block_timestamp > (select max(block_timestamp) from {{ this }}) + {% endif %} + ) + , ethereum_maker_vat_dai_balances as ( + select address, contract_address, block_timestamp, delta + from ethereum_maker_vat_dai_debit + {% if is_incremental() %} + union all + select + address + , contract_address + , max(block_timestamp) as block_timestamp + , max_by(balance_token, block_timestamp) as delta + from {{this}} + where lower(address) = lower('0x197e90f9fad81970ba7976f33cbd77088e5d7cf7') + and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + group by address, contract_address + {% endif %} + ) + {% endif %} select user_address as address, case @@ -59,7 +114,15 @@ where to_date(block_timestamp) < to_date(sysdate()) {% if is_incremental() %} - and block_timestamp - >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} + {% if chain in ('ethereum') %} + union all + select + address + , contract_address + , block_timestamp + , sum(delta) over (partition by contract_address, address order by block_timestamp) as balance_token + from ethereum_maker_vat_dai_balances + {% endif %} {% endmacro %} diff --git a/macros/address_balances/address_credits_allium.sql b/macros/address_balances/address_credits_allium.sql index f716d924..518413b6 100644 --- a/macros/address_balances/address_credits_allium.sql +++ b/macros/address_balances/address_credits_allium.sql @@ -20,6 +20,7 @@ and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} + union all select to_address as address, @@ -37,9 +38,10 @@ {% endif %} {% if is_incremental() %} and block_timestamp - >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} and to_date(block_timestamp) < to_date(sysdate()) and to_address <> from_address + {% endmacro %} diff --git a/macros/address_balances/address_debits_allium.sql b/macros/address_balances/address_debits_allium.sql index 2450b334..525e5df9 100644 --- a/macros/address_balances/address_debits_allium.sql +++ b/macros/address_balances/address_debits_allium.sql @@ -17,7 +17,7 @@ and to_date(block_timestamp) < to_date(sysdate()) {% if is_incremental() %} and block_timestamp - >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} and to_address <> from_address union all @@ -38,7 +38,7 @@ and to_date(block_timestamp) < to_date(sysdate()) {% if is_incremental() %} and block_timestamp - >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} and to_address <> from_address diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 52f960b2..f7bd55ea 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -8,7 +8,6 @@ with ref("ez_arbitrum_stablecoin_metrics_by_address"), ref("ez_optimism_stablecoin_metrics_by_address"), ref("ez_avalanche_stablecoin_metrics_by_address"), - ref("ez_ethereum_stablecoin_metrics_by_address"), ref("ez_polygon_stablecoin_metrics_by_address"), ] ) diff --git a/models/staging/tron/fact_tron_address_credit_by_token.sql b/models/staging/tron/fact_tron_address_credit_by_token.sql index 8c9c5e68..02ca0343 100644 --- a/models/staging/tron/fact_tron_address_credit_by_token.sql +++ b/models/staging/tron/fact_tron_address_credit_by_token.sql @@ -1,7 +1,7 @@ {{ config( materialized="incremental", - unique_key=["unique_id"], + unique_key="unique_id", snowflake_warehouse="BALANCES_LG", ) }} diff --git a/models/staging/tron/fact_tron_address_debit_by_token.sql b/models/staging/tron/fact_tron_address_debit_by_token.sql index fc9f7036..ca995a3e 100644 --- a/models/staging/tron/fact_tron_address_debit_by_token.sql +++ b/models/staging/tron/fact_tron_address_debit_by_token.sql @@ -1,7 +1,7 @@ {{ config( materialized="incremental", - unique_key=["unique_id"], + unique_key="unique_id", snowflake_warehouse="BALANCES_LG", ) }} From 4ad94e2e141c2003dfe09b81c2a7d1803eac10b7 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 27 Jul 2024 10:22:35 -0400 Subject: [PATCH 087/213] Stablecoin V2: Ethereum DAI (#338) --- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index f7bd55ea..6b2f457e 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -9,6 +9,7 @@ with ref("ez_optimism_stablecoin_metrics_by_address"), ref("ez_avalanche_stablecoin_metrics_by_address"), ref("ez_polygon_stablecoin_metrics_by_address"), + ref("ez_ethereum_stablecoin_metrics_by_address"), ] ) }} From fec61de3d2fac132c2cc0f0ba86318379cde2c38 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Mon, 29 Jul 2024 23:23:19 -0400 Subject: [PATCH 088/213] added ton stablecoin transfers symbol using url (#340) --- models/staging/ton/fact_ton_stablecoin_transfers.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index bf4c7c9f..d935dee7 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -16,6 +16,7 @@ with raw_data as ( , source_json:"from_type"::string as from_type , source_json:"to_address"::string as to_address , source_json:"to_type"::string as to_type + , source_json:"url"::string as url , source_json:"decimals"::int as decimal , source_json:"symbol"::string as symbol from @@ -34,7 +35,7 @@ select , max_by(to_address, extraction_date) as to_address , max_by(to_type, extraction_date) as to_type , max_by(decimal, extraction_date) as decimal - , case when max_by(symbol, extraction_date) = 'USDâ‚®' then 'USDT' else max_by(symbol, extraction_date) end as symbol + , case when (max_by(symbol, extraction_date) = 'USDâ‚®' or max_by(url, extraction_date) = 'https://tether.to/usdt-ton.json') then 'USDT' else max_by(symbol, extraction_date) end as symbol from raw_data where from_address is not null and From e7d60f51ec2cadbf98dbf67c6a8e13c60fe9af80 Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 30 Jul 2024 08:29:34 -0400 Subject: [PATCH 089/213] Alw maker new (#339) --- databases.csv | 4 +- .../prod_core/ez_chainlink_metrics.sql | 4 +- .../maker/prod_core/ez_maker_metrics.sql | 94 +++++++++++++++ .../prod_core/ez_maker_metrics_by_token.sql | 106 ++++++++++++++++ .../maker/prod_raw/dim_chart_of_accounts.sql | 65 ++++++++++ .../maker/prod_raw/dim_dao_wallet.sql | 65 ++++++++++ .../maker/prod_raw/dim_gem_join_addresses.sql | 37 ++++++ .../maker/prod_raw/dim_ilk_list_labeled.sql | 53 ++++++++ .../prod_raw/dim_ilk_list_manual_input.sql | 16 +++ .../maker/prod_raw/dim_maker_contracts.sql | 20 +++ models/projects/maker/prod_raw/dim_psms.sql | 15 +++ .../maker/prod_raw/dim_treasury_erc20s.sql | 16 +++ .../maker/prod_raw/fact_accounting_agg.sql | 69 +++++++++++ .../maker/prod_raw/fact_cumulative_sums.sql | 24 ++++ .../maker/prod_raw/fact_d3m_revenues.sql | 56 +++++++++ .../maker/prod_raw/fact_dai_arb_supply.sql | 39 ++++++ .../projects/maker/prod_raw/fact_dai_burn.sql | 17 +++ .../maker/prod_raw/fact_dai_dsr_supply.sql | 49 ++++++++ .../maker/prod_raw/fact_dai_eth_supply.sql | 39 ++++++ .../projects/maker/prod_raw/fact_dai_mint.sql | 18 +++ .../maker/prod_raw/fact_dai_supply.sql | 14 +++ .../prod_raw/fact_dai_supply_by_chain.sql | 19 +++ .../maker/prod_raw/fact_dsr_expenses.sql | 36 ++++++ .../maker/prod_raw/fact_dsr_flows.sql | 43 +++++++ .../fact_dssvesttransferrable_create.sql | 32 +++++ .../fact_dssvesttransferrable_vest.sql | 19 +++ .../fact_dssvesttransferrable_yank.sql | 27 +++++ .../maker/prod_raw/fact_eth_prices.sql | 13 ++ models/projects/maker/prod_raw/fact_final.sql | 43 +++++++ .../projects/maker/prod_raw/fact_ilk_list.sql | 25 ++++ .../maker/prod_raw/fact_incremental_m2m.sql | 17 +++ .../maker/prod_raw/fact_interest_accruals.sql | 39 ++++++ .../prod_raw/fact_interest_accruals_1.sql | 40 ++++++ .../prod_raw/fact_interest_accruals_2.sql | 14 +++ .../prod_raw/fact_interest_accruals_3.sql | 18 +++ .../projects/maker/prod_raw/fact_jug_file.sql | 18 +++ .../maker/prod_raw/fact_liquidation.sql | 45 +++++++ .../prod_raw/fact_liquidation_excluded_tx.sql | 15 +++ .../prod_raw/fact_liquidation_expenses.sql | 16 +++ .../prod_raw/fact_liquidation_revenue.sql | 27 +++++ .../maker/prod_raw/fact_loan_actions.sql | 35 ++++++ .../maker/prod_raw/fact_loan_actions_2.sql | 18 +++ .../maker/prod_raw/fact_m2m_levels.sql | 27 +++++ .../prod_raw/fact_maker_fdv_and_turnover.sql | 22 ++++ .../fact_maker_fees_revenue_expenses.sql | 84 +++++++++++++ ...t_maker_fees_revenue_expenses_by_token.sql | 85 +++++++++++++ .../maker/prod_raw/fact_maker_pnl.sql | 61 ++++++++++ .../maker/prod_raw/fact_maker_tvl.sql | 17 +++ .../prod_raw/fact_maker_tvl_by_asset.sql | 109 +++++++++++++++++ .../maker/prod_raw/fact_mkr_burns.sql | 35 ++++++ .../maker/prod_raw/fact_mkr_mints.sql | 38 ++++++ .../prod_raw/fact_mkr_tokenholder_count.sql | 70 +++++++++++ .../maker/prod_raw/fact_mkr_vest_creates.sql | 18 +++ .../prod_raw/fact_mkr_vest_creates_yanks.sql | 45 +++++++ .../maker/prod_raw/fact_mkr_vest_events.sql | 14 +++ .../maker/prod_raw/fact_mkr_vest_tx.sql | 14 +++ .../maker/prod_raw/fact_mkr_yanks.sql | 45 +++++++ .../maker/prod_raw/fact_net_treasury_usd.sql | 32 +++++ models/projects/maker/prod_raw/fact_opex.sql | 47 ++++++++ .../maker/prod_raw/fact_opex_suck_hashes.sql | 20 +++ .../prod_raw/fact_other_sin_outflows.sql | 40 ++++++ .../prod_raw/fact_pause_proxy_mkr_trxns.sql | 39 ++++++ .../fact_pause_proxy_mkr_trxns_raw.sql | 31 +++++ .../maker/prod_raw/fact_psm_yield.sql | 40 ++++++ .../maker/prod_raw/fact_psm_yield_tx.sql | 20 +++ .../maker/prod_raw/fact_rwa_yield.sql | 42 +++++++ .../maker/prod_raw/fact_rwa_yield_tx.sql | 20 +++ .../maker/prod_raw/fact_sin_inflows.sql | 34 ++++++ .../maker/prod_raw/fact_spot_file.sql | 18 +++ .../prod_raw/fact_system_surplus_dai.sql | 24 ++++ .../maker/prod_raw/fact_team_dai_burns.sql | 35 ++++++ .../maker/prod_raw/fact_team_dai_burns_tx.sql | 32 +++++ .../maker/prod_raw/fact_token_prices.sql | 37 ++++++ .../maker/prod_raw/fact_trading_revenues.sql | 40 ++++++ .../maker/prod_raw/fact_treasury_flows.sql | 54 +++++++++ .../prod_raw/fact_treasury_lp_balances.sql | 43 +++++++ .../maker/prod_raw/fact_treasury_mkr.sql | 84 +++++++++++++ .../maker/prod_raw/fact_treasury_usd.sql | 38 ++++++ .../maker/prod_raw/fact_uni_lp_supply.sql | 63 ++++++++++ .../maker/prod_raw/fact_uni_lp_value.sql | 63 ++++++++++ .../projects/maker/prod_raw/fact_vat_grab.sql | 114 ++++++++++++++++++ .../projects/maker/prod_raw/fact_vow_fess.sql | 17 +++ .../maker/prod_raw/fact_with_prices.sql | 75 ++++++++++++ 83 files changed, 3162 insertions(+), 3 deletions(-) create mode 100644 models/projects/maker/prod_core/ez_maker_metrics.sql create mode 100644 models/projects/maker/prod_core/ez_maker_metrics_by_token.sql create mode 100644 models/projects/maker/prod_raw/dim_chart_of_accounts.sql create mode 100644 models/projects/maker/prod_raw/dim_dao_wallet.sql create mode 100644 models/projects/maker/prod_raw/dim_gem_join_addresses.sql create mode 100644 models/projects/maker/prod_raw/dim_ilk_list_labeled.sql create mode 100644 models/projects/maker/prod_raw/dim_ilk_list_manual_input.sql create mode 100644 models/projects/maker/prod_raw/dim_maker_contracts.sql create mode 100644 models/projects/maker/prod_raw/dim_psms.sql create mode 100644 models/projects/maker/prod_raw/dim_treasury_erc20s.sql create mode 100644 models/projects/maker/prod_raw/fact_accounting_agg.sql create mode 100644 models/projects/maker/prod_raw/fact_cumulative_sums.sql create mode 100644 models/projects/maker/prod_raw/fact_d3m_revenues.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_arb_supply.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_burn.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_dsr_supply.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_eth_supply.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_mint.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_supply.sql create mode 100644 models/projects/maker/prod_raw/fact_dai_supply_by_chain.sql create mode 100644 models/projects/maker/prod_raw/fact_dsr_expenses.sql create mode 100644 models/projects/maker/prod_raw/fact_dsr_flows.sql create mode 100644 models/projects/maker/prod_raw/fact_dssvesttransferrable_create.sql create mode 100644 models/projects/maker/prod_raw/fact_dssvesttransferrable_vest.sql create mode 100644 models/projects/maker/prod_raw/fact_dssvesttransferrable_yank.sql create mode 100644 models/projects/maker/prod_raw/fact_eth_prices.sql create mode 100644 models/projects/maker/prod_raw/fact_final.sql create mode 100644 models/projects/maker/prod_raw/fact_ilk_list.sql create mode 100644 models/projects/maker/prod_raw/fact_incremental_m2m.sql create mode 100644 models/projects/maker/prod_raw/fact_interest_accruals.sql create mode 100644 models/projects/maker/prod_raw/fact_interest_accruals_1.sql create mode 100644 models/projects/maker/prod_raw/fact_interest_accruals_2.sql create mode 100644 models/projects/maker/prod_raw/fact_interest_accruals_3.sql create mode 100644 models/projects/maker/prod_raw/fact_jug_file.sql create mode 100644 models/projects/maker/prod_raw/fact_liquidation.sql create mode 100644 models/projects/maker/prod_raw/fact_liquidation_excluded_tx.sql create mode 100644 models/projects/maker/prod_raw/fact_liquidation_expenses.sql create mode 100644 models/projects/maker/prod_raw/fact_liquidation_revenue.sql create mode 100644 models/projects/maker/prod_raw/fact_loan_actions.sql create mode 100644 models/projects/maker/prod_raw/fact_loan_actions_2.sql create mode 100644 models/projects/maker/prod_raw/fact_m2m_levels.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_fdv_and_turnover.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses_by_token.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_pnl.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_tvl.sql create mode 100644 models/projects/maker/prod_raw/fact_maker_tvl_by_asset.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_burns.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_mints.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_tokenholder_count.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_vest_creates.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_vest_creates_yanks.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_vest_events.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_vest_tx.sql create mode 100644 models/projects/maker/prod_raw/fact_mkr_yanks.sql create mode 100644 models/projects/maker/prod_raw/fact_net_treasury_usd.sql create mode 100644 models/projects/maker/prod_raw/fact_opex.sql create mode 100644 models/projects/maker/prod_raw/fact_opex_suck_hashes.sql create mode 100644 models/projects/maker/prod_raw/fact_other_sin_outflows.sql create mode 100644 models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns.sql create mode 100644 models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns_raw.sql create mode 100644 models/projects/maker/prod_raw/fact_psm_yield.sql create mode 100644 models/projects/maker/prod_raw/fact_psm_yield_tx.sql create mode 100644 models/projects/maker/prod_raw/fact_rwa_yield.sql create mode 100644 models/projects/maker/prod_raw/fact_rwa_yield_tx.sql create mode 100644 models/projects/maker/prod_raw/fact_sin_inflows.sql create mode 100644 models/projects/maker/prod_raw/fact_spot_file.sql create mode 100644 models/projects/maker/prod_raw/fact_system_surplus_dai.sql create mode 100644 models/projects/maker/prod_raw/fact_team_dai_burns.sql create mode 100644 models/projects/maker/prod_raw/fact_team_dai_burns_tx.sql create mode 100644 models/projects/maker/prod_raw/fact_token_prices.sql create mode 100644 models/projects/maker/prod_raw/fact_trading_revenues.sql create mode 100644 models/projects/maker/prod_raw/fact_treasury_flows.sql create mode 100644 models/projects/maker/prod_raw/fact_treasury_lp_balances.sql create mode 100644 models/projects/maker/prod_raw/fact_treasury_mkr.sql create mode 100644 models/projects/maker/prod_raw/fact_treasury_usd.sql create mode 100644 models/projects/maker/prod_raw/fact_uni_lp_supply.sql create mode 100644 models/projects/maker/prod_raw/fact_uni_lp_value.sql create mode 100644 models/projects/maker/prod_raw/fact_vat_grab.sql create mode 100644 models/projects/maker/prod_raw/fact_vow_fess.sql create mode 100644 models/projects/maker/prod_raw/fact_with_prices.sql diff --git a/databases.csv b/databases.csv index 6deb05d7..efc7f1ca 100644 --- a/databases.csv +++ b/databases.csv @@ -24,6 +24,7 @@ CARDANO CCTP CELESTIA CELO +CHAINLINK COMMON COMPOUND COSMOSHUB @@ -45,6 +46,7 @@ INJECTIVE JUPITER KELP_DAO LANDING_DATABASE +MAKER NEAR NEAR_FLIPSIDE OPTIMISM @@ -72,4 +74,4 @@ SUI TON TRON ZKSYNC -UNISWAP +UNISWAP \ No newline at end of file diff --git a/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql index 1cfeffcb..77cee579 100644 --- a/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql +++ b/models/projects/chainlink/prod_core/ez_chainlink_metrics.sql @@ -206,8 +206,8 @@ select , protocol_revenue - total_expenses as earnings , treasury_usd , treasury_link - , tvl - , tvl_link + , coalesce(tvl,0) as tvl + , coalesce(tvl_link, 0) as tvl_link , price , market_cap , fdmc diff --git a/models/projects/maker/prod_core/ez_maker_metrics.sql b/models/projects/maker/prod_core/ez_maker_metrics.sql new file mode 100644 index 00000000..d41b9b60 --- /dev/null +++ b/models/projects/maker/prod_core/ez_maker_metrics.sql @@ -0,0 +1,94 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="core", + alias="ez_metrics" + ) +}} + +WITH + fees_revenue_expenses AS ( + SELECT + date, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM {{ ref('fact_maker_fees_revenue_expenses') }} + ) + , treasury_usd AS ( + SELECT date, treasury_usd FROM {{ ref('fact_treasury_usd') }} + ) + , treasury_native AS ( + SELECT date, amount_mkr as treasury_native FROM {{ ref('fact_treasury_mkr') }} + ) + , net_treasury AS ( + SELECT date, net_treasury_usd FROM {{ ref('fact_net_treasury_usd') }} + ) + , tvl_metrics AS ( + SELECT date, tvl_usd as net_deposit, tvl_usd as tvl FROM {{ ref('fact_maker_tvl') }} + ) + , outstanding_supply AS ( + SELECT date, outstanding_supply FROM {{ ref('fact_dai_supply') }} + ) + , token_turnover_metrics as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from {{ ref("fact_maker_fdv_and_turnover")}} + ) + , price_data as ({{ get_coingecko_metrics("maker") }}) + , token_holder_data as ( + select + date + , tokenholder_count + from {{ ref("fact_mkr_tokenholder_count")}} + ) + + +select + date + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury_usd, 0) AS treasury_usd + , COALESCE(treasury_native, 0) AS treasury_native + , COALESCE(net_treasury_usd, 0) AS net_treasury_usd + , COALESCE(net_deposit, 0) AS net_deposit + , COALESCE(outstanding_supply, 0) AS outstanding_supply + , COALESCE(tvl, 0) AS tvl + , COALESCE(price, 0) AS price + , COALESCE(fdmc, 0) AS fdmc + , COALESCE(market_cap, 0) AS market_cap + , COALESCE(token_volume, 0) AS token_volume + , COALESCE(token_turnover_fdv, 0) AS token_turnover_fdv + , COALESCE(token_turnover_circulating, 0) AS token_turnover_circulating + , COALESCE(tokenholder_count, 0) AS tokenholder_count +FROM token_holder_data +left join treasury_usd using (date) +left join treasury_native using (date) +left join net_treasury using (date) +left join tvl_metrics using (date) +left join outstanding_supply using (date) +left join token_turnover_metrics using (date) +left join price_data using (date) +left join fees_revenue_expenses using (date) +where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql b/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql new file mode 100644 index 00000000..b73b463f --- /dev/null +++ b/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql @@ -0,0 +1,106 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="core", + alias="ez_metrics_by_token" + ) +}} + +WITH + fees_revenue_expenses AS ( + SELECT + date, + token, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM {{ ref('fact_maker_fees_revenue_expenses_by_token') }} + ) + , treasury AS ( + SELECT + date, + token, + surplus as treasury + FROM + {{ ref('fact_system_surplus_dai') }} + UNION ALL + SELECT + date, + token, + amount_mkr as treasury + FROM + {{ ref('fact_treasury_mkr') }} + UNION ALL + SELECT + date, + token, + amount_native as treasury + FROM + {{ ref('fact_treasury_lp_balances') }} + ) + , treasury_native AS ( + SELECT date, token, amount_mkr as treasury_native FROM {{ ref('fact_treasury_mkr') }} + ) + , net_treasury AS ( + SELECT + date, + 'DAI' as token, + surplus as net_treasury + FROM + {{ ref('fact_system_surplus_dai') }} + UNION ALL + SELECT + date, + token, + amount_native as net_treasury + FROM + {{ ref('fact_treasury_lp_balances') }} + ) + , tvl_metrics AS ( + SELECT + date, + symbol as token, + total_amount_native as tvl + FROM {{ ref('fact_maker_tvl_by_asset') }} + ) + , outstanding_supply AS ( + SELECT date, 'DAI' as token, outstanding_supply FROM {{ ref('fact_dai_supply') }} + ) + + +select + date + , token + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury, 0) as treasury + , COALESCE(treasury_native,0) as treasury_native + , COALESCE(net_treasury, 0) as net_treasury + , COALESCE(tvl, 0) as net_deposit + , COALESCE(outstanding_supply,0) as outstanding_supply + , COALESCE(tvl, 0) as tvl +FROM fees_revenue_expenses +full join treasury using (date, token) +full join treasury_native using (date, token) +full join net_treasury using (date, token) +full join tvl_metrics using (date, token) +full join outstanding_supply using (date, token) +where date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_chart_of_accounts.sql b/models/projects/maker/prod_raw/dim_chart_of_accounts.sql new file mode 100644 index 00000000..0bb7cc04 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_chart_of_accounts.sql @@ -0,0 +1,65 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_chart_of_accounts" + ) +}} + +SELECT code, primary_label, secondary_label, account_label, category_label, subcategory_label + FROM (VALUES + (11110, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'ETH', 'ETH'), + (11120, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'BTC', 'BTC'), + (11130, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'WSTETH', 'WSTETH'), + (11140, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Stable LP'), + (11141, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Volatile LP'), + (11199, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Other', 'Other'), + (11210, 'Assets', 'Collateralized Lending', 'Money Market', 'Money Market', 'D3M'), + (11510, 'Assets', 'Collateralized Lending', 'Legacy', 'Stablecoins', 'Stablecoins'), + (12310, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Off-Chain Private Credit'), + (12311, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Tokenized Private Credit'), + (12320, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Off-Chain Public Credit'), + (12321, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Tokenized Public Credit'), + (13410, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Non-Yielding Stablecoin'), + (13411, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Yielding Stablecoin'), + (14620, 'Assets', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (19999, 'Assets', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (21110, 'Liabilities', 'Stablecoin', 'Circulating', 'Interest-bearing', 'Dai'), + (21120, 'Liabilities', 'Stablecoin', 'Circulating', 'Non-interest bearing', 'Dai'), + (29999, 'Liabilities', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (31110, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'ETH', 'ETH SF'), + (31120, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'BTC', 'BTC SF'), + (31130, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'WSTETH', 'WSTETH SF'), + (31140, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Stable LP SF'), + (31141, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Volatile LP SF'), + (31150, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Other', 'Other SF'), + (31160, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Money Market', 'D3M SF'), + (31170, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Private Credit SF'), + (31171, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Private Credit SF'), + (31172, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Public Credit Interest'), + (31173, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Public Credit Interest'), + (31180, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'PSM', 'Yielding Stablecoin Interest'), + (31190, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Stablecoins', 'Stablecoins SF'), + (31210, 'Equity', 'Protocol Surplus', 'Liquidation Revenues', 'Liquidation Revenues', 'Liquidation Revenues'), + (31310, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Trading Revenues'), + (31311, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Teleport Revenues'), + (31410, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Mints', 'MKR Mints'), + (31420, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Burns', 'MKR Burns'), + (31510, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Inflow', 'Sin Inflow'), + (31520, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Outflow', 'Sin Outflow'), + (31610, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'DSR', 'Circulating Dai'), + (31620, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Liquidation Expenses', 'Liquidation Expenses'), + (31630, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Oracle Gas Expenses', 'Oracle Gas Expenses'), + (31710, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Keeper Maintenance', 'Keeper Maintenance'), + (31720, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Workforce Expenses'), + (31730, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Returned Workforce Expenses'), + (31740, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Direct to Third Party Expenses', 'Direct to Third Party Expenses'), + (32110, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Direct MKR Token Expenses', 'Direct MKR Token Expenses'), + (32120, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Vested MKR Token Expenses', 'Vested MKR Token Expenses'), + (32210, 'Equity', 'Reserved MKR Surplus', 'MKR Contra Equity', 'MKR Contra Equity', 'MKR Contra Equity'), + (33110, 'Equity', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (39999, 'Equity', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token') + + ) AS t(code, primary_label, secondary_label, account_label, category_label, subcategory_label) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_dao_wallet.sql b/models/projects/maker/prod_raw/dim_dao_wallet.sql new file mode 100644 index 00000000..f01be84e --- /dev/null +++ b/models/projects/maker/prod_raw/dim_dao_wallet.sql @@ -0,0 +1,65 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_dao_wallet" + ) +}} + +SELECT * FROM (VALUES + ( '0x9e1585d9ca64243ce43d42f7dd7333190f66ca09' , 'RWF Core Unit Multisig + Operational 1', 'Fixed', 'RWF-001') + , ( '0xd1505ee500791490de8642353ba6a5b92e3550f7' , 'RWF Core Unit Multisig + Operational 2', 'Fixed', 'RWF-001') + , ( '0xe2c16c308b843ed02b09156388cb240ced58c01c' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 1', 'Fixed', 'PE-001') + , ( '0x83e36aaa1c7b99e2d3d07789f7b70fce46f0d45e' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 2', 'Fixed', 'PE-001') + , ( '0x01d26f8c5cc009868a4bf66e268c17b057ff7a73' , 'GovAlpha Multisig', 'Fixed', 'GOV-001') + , ( '0xdcaf2c84e1154c8ddd3203880e5db965bff09b60' , 'Content Prod Multisig 1', 'Fixed', 'OLD-001') + , ( '0x6a0ce7dbb43fe537e3fd0be12dc1882393895237' , 'Content Prod Multisig 2', 'Fixed', 'OLD-001') + , ( '0x1ee3eca7aef17d1e74ed7c447ccba61ac76adba9' , 'GovCom Multisig + Continuous Operation 1', 'Fixed', 'COM-001') + , ( '0x99e1696a680c0d9f426be20400e468089e7fdb0f' , 'GovCom Multisig + Continuous Operation 2', 'Fixed', 'COM-001') + , ( '0x7800c137a645c07132886539217ce192b9f0528e' , 'Growth Emergency Multisig', 'Fixed', 'GRO-001') + , ( '0xb5eb779ce300024edb3df9b6c007e312584f6f4f' , 'SES Multisigs (Permanent Team, Incubation, Grants) 1', 'Fixed', 'SES-001') + , ( '0x7c09ff9b59baaebfd721cbda3676826aa6d7bae8' , 'SES Multisigs (Permanent Team, Incubation, Grants) 2', 'Fixed', 'SES-001') + , ( '0xf95eb8ec63d6059ba62b0a8a7f843c7d92f41de2' , 'SES Multisigs (Permanent Team, Incubation, Grants) 3', 'Fixed', 'SES-001') + , ( '0xd98ef20520048a35eda9a202137847a62120d2d9' , 'Risk Multisig', 'Fixed', 'RISK-001') + , ( '0x8cd0ad5c55498aacb72b6689e1da5a284c69c0c7' , 'DUX Team Wallet', 'Fixed', 'DUX-001') + , ( '0x6d348f18c88d45243705d4fdeeb6538c6a9191f1' , 'StarkNet Team Wallet', 'Fixed', 'SNE-001') + , ( '0x955993df48b0458a01cfb5fd7df5f5dca6443550' , 'Strategic Happiness Wallet 1', 'Fixed', 'SH-001') --prior primary wallet, still uses for smaller payments + , ( '0xc657ac882fb2d6ccf521801da39e910f8519508d' , 'Strategic Happiness Wallet 2', 'Fixed', 'SH-001') --multisig for most expenses + , ( '0xd740882b8616b50d0b317fdff17ec3f4f853f44f' , 'CES Team Wallet', 'Fixed', 'CES-001') + , ( '0x56349a38e09f36039f6af77309690d217beaf0bf' , 'DECO Ops + DECO Protocol Wallets 1', 'Fixed', 'DECO-001') + , ( '0xa78f1f5698f8d345a14d7323745c6c56fb8227f0' , 'DECO Ops + DECO Protocol Wallets 2', 'Fixed', 'DECO-001') + , ( '0x465aa62a82e220b331f5ecca697c20e89554b298' , 'SAS Team Wallet', 'Fixed', 'SAS-001') + , ( '0x124c759d1084e67b19a206ab85c4527fab26c342' , 'IS Ops Wallet', 'Fixed', 'IS-001') + , ( '0x7327aed0ddf75391098e8753512d8aec8d740a1f' , 'Data Insights Wallet', 'Fixed', 'DIN-001') + , ( '0x2dc0420a736d1f40893b9481d8968e4d7424bc0b' , 'TechOps', 'Fixed', 'TECH-001') + , ( '0x2b6180b413511ce6e3da967ec503b2cc19b78db6' , 'Oracle Gas Cost Multisig + Emergency Fund 1', 'Variable', 'GAS') + , ( '0x1a5b692029b157df517b7d21a32c8490b8692b0f' , 'Oracle Gas Cost Multisig + Emergency Fund 2', 'Variable', 'GAS') + , ( '0x53ccaa8e3bef14254041500acc3f1d4edb5b6d24' , 'Oracle Multisig, Emergency Multisig 1', 'Fixed', 'ORA-001') + , ( '0x2d09b7b95f3f312ba6ddfb77ba6971786c5b50cf' , 'Oracle Multisig, Emergency Multisig 2', 'Fixed', 'ORA-001') + , ( '0xf737c76d2b358619f7ef696cf3f94548fecec379' , 'Strategic Finance Multisig', 'Fixed', 'SF-001') + , ( '0x3d274fbac29c92d2f624483495c0113b44dbe7d2' , 'Events Multisig', 'Fixed', 'EVENTS-001') + , ( '0x34d8d61050ef9d2b48ab00e6dc8a8ca6581c5d63' , 'Foundation Operational Wallet', 'Fixed', 'DAIF-001') + , ( '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' , 'DS Pause Proxy', 'Variable', 'DSPP') + , ( '0x73f09254a81e1f835ee442d1b3262c1f1d7a13ff' , 'Interim Multisig', 'Fixed', 'INTERIM') + , ( '0x87acdd9208f73bfc9207e1f6f0fde906bca95cc6' , 'SES Multisig (Auditor)', 'Fixed', 'SES-001') + , ( '0x5a994d8428ccebcc153863ccda9d2be6352f89ad' , 'DUX Auditor Wallet', 'Fixed', 'DUX-001') + , ( '0x25307ab59cd5d8b4e2c01218262ddf6a89ff86da' , 'CES Auditor Wallet', 'Fixed', 'CES-001') + , ( '0xf482d1031e5b172d42b2daa1b6e5cbf6519596f7' , 'DECO Auditor Wallet', 'Fixed', 'DECO-001') + , ( '0xb1f950a51516a697e103aaa69e152d839182f6fe' , 'SAS Auditor Wallet', 'Fixed', 'SAS-001') + , ( '0xd1f2eef8576736c1eba36920b957cd2af07280f4' , 'IS Auditor Wallet', 'Fixed', 'IS-001') + , ( '0x96d7b01cc25b141520c717fa369844d34ff116ec' , 'RWF Auditor Wallet', 'Fixed', 'RWF-001') + , ( '0x1a3da79ee7db30466ca752de6a75def5e635b2f6' , 'TechOps Auditor Wallet', 'Fixed', 'TECH-001') + , ( '0x5f5c328732c9e52dfcb81067b8ba56459b33921f' , 'Foundation Reserves', 'Fixed', 'DAIF-001') + , ( '0x478c7ce3e1df09130f8d65a23ad80e05b352af62' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x926c21602fec84d6d0fa6450b40edba595b5c6e4' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x37b375e3d418fbecba6b283e704f840ab32f3b3c' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x5a6007d17302238d63ab21407ff600a67765f982' , 'Techops Keepers', 'Variable', 'TECHOPS') + , ( '0xfb5e1d841bda584af789bdfabe3c6419140ec065' , 'Chainlink Keepers', 'Variable', 'CHAINLINK') + , ( '0xaefed819b6657b3960a8515863abe0529dfc444a' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x0b5a34d084b6a5ae4361de033d1e6255623b41ed' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0xc6a048550c9553f8ac20fbdeb06f114c27eccabb' , 'Gelato Keepers', 'Variable', 'GELATO') + --, ( '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' , 'DSS Blow', 'Variable', 'BLOW') + , ( '0xb386bc4e8bae87c3f67ae94da36f385c100a370a' , 'New Risk Multisig', 'Fixed', 'RISK-001') + ) AS t(wallet_address, wallet_label, varfix, code) diff --git a/models/projects/maker/prod_raw/dim_gem_join_addresses.sql b/models/projects/maker/prod_raw/dim_gem_join_addresses.sql new file mode 100644 index 00000000..5a7121b5 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_gem_join_addresses.sql @@ -0,0 +1,37 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_gem_join_addresses" + ) +}} + +with join_addresses as ( + select + '0x' || SUBSTR(topics [1], 27) as join_address, + * + from + ethereum_flipside.core.fact_event_logs + where + topics [0] = lower( + '0x65fae35e00000000000000000000000000000000000000000000000000000000' + ) + and contract_address = lower('0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b') +) +, contract_creation_hashes as( + select + address as join_address, + created_tx_hash + from + ethereum_flipside.core.dim_contracts + where + address in (SELECT lower(join_address) FROM join_addresses) +) +SELECT + '0x' || RIGHT(t.input, 40) as gem_address, + h.join_address +FROM + contract_creation_hashes h +LEFT JOIN ethereum_flipside.core.fact_traces t ON h.created_tx_hash = t.tx_hash \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_ilk_list_labeled.sql b/models/projects/maker/prod_raw/dim_ilk_list_labeled.sql new file mode 100644 index 00000000..968a32d0 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_ilk_list_labeled.sql @@ -0,0 +1,53 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_ilk_list_labeled" + ) +}} + +-- This table should contain your ilk mappings +-- You may need to adjust this based on your specific ilk categorizations +SELECT + ilk, + begin_dt, + end_dt, + asset_code, + equity_code +FROM {{ ref('dim_ilk_list_manual_input') }} + +UNION ALL + +SELECT + ilk, + CAST(NULL AS DATE) AS begin_dt, + CAST(NULL AS DATE) AS end_dt, + CASE + WHEN ilk LIKE 'ETH-%' THEN 11110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 11120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 11130 + WHEN ilk LIKE 'GUNI%' THEN 11140 + WHEN ilk LIKE 'UNIV2%' THEN 11141 + WHEN ilk LIKE 'DIRECT%' THEN 11210 + WHEN ilk LIKE 'RWA%' THEN 12310 + WHEN ilk LIKE 'PSM%' THEN 13410 + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A') THEN 11510 + ELSE 11199 + END AS asset_code, + CASE + WHEN ilk LIKE 'ETH-%' THEN 31110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 31120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 31130 + WHEN ilk LIKE 'GUNI%' THEN 31140 + WHEN ilk LIKE 'UNIV2%' THEN 31141 + WHEN ilk LIKE 'DIRECT%' THEN 31160 + WHEN ilk LIKE 'RWA%' THEN 31170 + WHEN ilk LIKE 'PSM%' THEN NULL + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A','PAXUSD-A') THEN 31190 + ELSE 31150 + END AS equity_code +FROM {{ ref('fact_ilk_list') }} +WHERE ilk NOT IN (SELECT ilk FROM {{ ref('dim_ilk_list_manual_input') }}) +AND ilk <> 'TELEPORT-FW-A' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_ilk_list_manual_input.sql b/models/projects/maker/prod_raw/dim_ilk_list_manual_input.sql new file mode 100644 index 00000000..d43e865e --- /dev/null +++ b/models/projects/maker/prod_raw/dim_ilk_list_manual_input.sql @@ -0,0 +1,16 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_ilk_list_manual_input" + ) +}} + +SELECT * FROM (VALUES + ('RWA009-A', NULL, NULL, 12310, 31170, NULL), + ('RWA007-A', NULL, NULL, 12310, 31172, NULL), + ('RWA015-A', NULL, NULL, 12310, 31172, NULL), + ('RWA014-A', NULL, NULL, 12310, 31180, NULL) +) AS t(ilk, begin_dt, end_dt, asset_code, equity_code, apr) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_maker_contracts.sql b/models/projects/maker/prod_raw/dim_maker_contracts.sql new file mode 100644 index 00000000..17f5a0f7 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_maker_contracts.sql @@ -0,0 +1,20 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_maker_contracts" + ) +}} + +SELECT * FROM (VALUES + ( 'FlapFlop', '0x4d95a049d5b0b7d32058cd3f2163015747522e99' ) + , ( 'FlapFlop', '0xa4f79bc4a5612bdda35904fdf55fc4cb53d1bff6' ) + , ( 'FlapFlop', '0x0c10ae443ccb4604435ba63da80ccc63311615bc' ) + , ( 'FlapFlop', '0xa41b6ef151e06da0e34b009b86e828308986736d' ) + , ( 'FlapFlop', '0xc4269cc7acdedc3794b221aa4d9205f564e27f0d' ) + , ( 'PSM', '0x961ae24a1ceba861d1fdf723794f6024dc5485cf' ) + , ( 'PSM', '0x204659b2fd2ad5723975c362ce2230fba11d3900' ) + , ( 'PSM', '0x89b78cfa322f6c5de0abceecab66aee45393cc5a' ) + ) AS t(contract_type, contract_address) diff --git a/models/projects/maker/prod_raw/dim_psms.sql b/models/projects/maker/prod_raw/dim_psms.sql new file mode 100644 index 00000000..9da41250 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_psms.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_psms" + ) +}} + +SELECT DISTINCT + u_address as psm_address, + ilk +FROM ethereum_flipside.maker.fact_vat_frob +WHERE ilk LIKE 'PSM-%' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/dim_treasury_erc20s.sql b/models/projects/maker/prod_raw/dim_treasury_erc20s.sql new file mode 100644 index 00000000..a10b93e5 --- /dev/null +++ b/models/projects/maker/prod_raw/dim_treasury_erc20s.sql @@ -0,0 +1,16 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="dim_treasury_erc20s" + ) +}} + +SELECT * FROM (VALUES + ('0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', 18, 'ENS'), + ('0x4da27a545c0c5b758a6ba100e3a049001de870f5', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'stkAAVE'), + ('0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'AAVE'), + ('0xc00e94cb662c3520282e6f5717214004a7f26888', '0xc00e94cb662c3520282e6f5717214004a7f26888', 18, 'COMP') +) AS t(contract_address, price_address, decimals, token) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_accounting_agg.sql b/models/projects/maker/prod_raw/fact_accounting_agg.sql new file mode 100644 index 00000000..2d1d3128 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_accounting_agg.sql @@ -0,0 +1,69 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_accounting_agg" + ) +}} + +with + chart_of_accounts as ( + select cast(code as varchar) as account_id from {{ ref('dim_chart_of_accounts') }} -- CoA simplified + ), + periods as ( + select + distinct(date(hour)) as date + from ethereum_flipside.price.ez_prices_hourly + where symbol = 'MKR' + ), + accounting as ( + select + date_trunc('day', acc.ts) as period, + cast(acc.code as varchar) as account_id, + acc.dai_value as usd_value, + acc.value as token_value, + token + from {{ ref('fact_final') }} acc + ), + accounting_agg as ( + select + date_trunc('day', period) as period, + account_id, + token, + sum(coalesce(token_value,0)) as token_sum_value, + sum(coalesce(usd_value, 0)) AS usd_sum_value + from accounting + group by 1,2,3 + ), + accounting_liq as ( + select distinct + period, + token, + sum(coalesce(token_sum_value, 0)) over (partition by date_trunc('day', period)) as token_liq_cum, + sum(coalesce(usd_sum_value, 0)) over (partition by date_trunc('day', period)) as usd_liq_cum + from accounting_agg + where account_id in ( + '31210', -- Liquidation Revenues + '31620' -- Liquidation Expenses + ) + ) +select + a.period, + a.account_id, + a.token, + case + when account_id = '31210' then iff(usd_liq_cum > 0, usd_liq_cum, 0) + when account_id = '31620' then iff(usd_liq_cum > 0, 0, usd_liq_cum) + else coalesce(usd_sum_value, 0) + end as sum_value, + case + when account_id = '31210' then iff(token_liq_cum > 0, token_liq_cum, 0) + when account_id = '31620' then iff(token_liq_cum > 0, 0, token_liq_cum) + else coalesce(token_sum_value,0) + end as sum_value_token +from accounting_agg a +left join accounting_liq l + on a.period = l.period + and a.token = l.token \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_cumulative_sums.sql b/models/projects/maker/prod_raw/fact_cumulative_sums.sql new file mode 100644 index 00000000..9ed0764e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_cumulative_sums.sql @@ -0,0 +1,24 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_cumulative_sums" + ) +}} + +SELECT + wp.*, + SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_token_value, + SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_dai_value, + SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_eth_value, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_value_if_converted_all_once, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_value_if_converted_all_once, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_m2m, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_m2m +FROM {{ ref('fact_with_prices') }} wp +LEFT JOIN {{ ref('fact_m2m_levels') }} m2m + ON wp.token = m2m.token + AND DATE_TRUNC('day', wp.ts) = DATE_TRUNC('day', m2m.ts) + -- AND EXTRACT(HOUR FROM wp.ts) = EXTRACT(HOUR FROM m2m.ts) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_d3m_revenues.sql b/models/projects/maker/prod_raw/fact_d3m_revenues.sql new file mode 100644 index 00000000..62814554 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_d3m_revenues.sql @@ -0,0 +1,56 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_d3m_revenues" + ) +}} + +WITH d3m_revenues_preunion AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CASE + WHEN src_address = '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a' THEN 'DIRECT-AAVEV2-DAI' + WHEN src_address = '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' THEN 'DIRECT-COMPV2-DAI' + END AS ilk, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', -- aave d3m + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' -- compound v2 d3m + ) + AND dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY 1, 2, 3 + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + ilk, + SUM(dart) / 1e18 AS value + FROM {{ ref('fact_vat_grab')}} + WHERE dart > 0 + GROUP BY 1, 2, 3 +) + +SELECT + ts, + hash, + 31160 AS code, + value AS value, + ilk +FROM d3m_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM d3m_revenues_preunion \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dai_arb_supply.sql b/models/projects/maker/prod_raw/fact_dai_arb_supply.sql new file mode 100644 index 00000000..0202e803 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_arb_supply.sql @@ -0,0 +1,39 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_arb_supply" + ) +}} + +with arb_raw as( + select + block_timestamp, + CASE + WHEN lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN AMOUNT + WHEN lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN - AMOUNT + END AS amount + from + arbitrum_flipside.core.ez_token_transfers + where + lower(contract_address) = lower('0xda10009cbd5d07dd0cecc66161fc93d7c9000da1') + and ( + lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + or lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + ) +), +daily_amounts AS ( + SELECT + date(block_timestamp) as date, + SUM(amount) as daily_amount + FROM arb_raw + GROUP BY date(block_timestamp) +) +SELECT + date, + SUM(daily_amount) OVER (ORDER BY date) as dai_supply, + 'Arbitrum' as chain +FROM daily_amounts +ORDER BY date DESC \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dai_burn.sql b/models/projects/maker/prod_raw/fact_dai_burn.sql new file mode 100644 index 00000000..341d137e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_burn.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_burn" + ) +}} + +SELECT + block_timestamp, + tx_hash, + from_address as usr +FROM ethereum_flipside.core.fact_token_transfers +where to_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') diff --git a/models/projects/maker/prod_raw/fact_dai_dsr_supply.sql b/models/projects/maker/prod_raw/fact_dai_dsr_supply.sql new file mode 100644 index 00000000..85b0b6a7 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_dsr_supply.sql @@ -0,0 +1,49 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_dsr_supply" + ) +}} + + +WITH + deltas AS ( + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + CAST(rad AS DOUBLE) AS delta, + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + - CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) as dt, + CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_suck + WHERE v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' +) +, daily_supply as ( + SELECT + dt, + sum(delta) as dai_supply + FROM deltas + GROUP BY 1 +) +SELECT + dt as date, + SUM(dai_supply) OVER (ORDER BY dt) as dai_supply, + 'Ethereum' as chain +FROM daily_supply \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dai_eth_supply.sql b/models/projects/maker/prod_raw/fact_dai_eth_supply.sql new file mode 100644 index 00000000..b476a4a6 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_eth_supply.sql @@ -0,0 +1,39 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_eth_supply" + ) +}} + +with eth_raw as( + select + block_timestamp, + CASE + WHEN lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN AMOUNT + WHEN lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN - AMOUNT + END AS amount + from + ethereum_flipside.core.ez_token_transfers + where + lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + and ( + lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + or lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + ) +), +daily_amounts AS ( + SELECT + date(block_timestamp) as date, + SUM(amount) as daily_amount + FROM eth_raw + GROUP BY date(block_timestamp) +) +SELECT + date, + SUM(daily_amount) OVER (ORDER BY date) as dai_supply, + 'Ethereum' as chain +FROM daily_amounts +ORDER BY date DESC \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dai_mint.sql b/models/projects/maker/prod_raw/fact_dai_mint.sql new file mode 100644 index 00000000..ec996a6a --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_mint.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_mint" + ) +}} + +SELECT + block_timestamp, + tx_hash, + to_address as usr, + raw_amount_precise as wad +FROM ethereum_flipside.core.fact_token_transfers +where from_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') diff --git a/models/projects/maker/prod_raw/fact_dai_supply.sql b/models/projects/maker/prod_raw/fact_dai_supply.sql new file mode 100644 index 00000000..5f41c67f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_supply.sql @@ -0,0 +1,14 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_supply" + ) +}} + + + +SELECT date, SUM(dai_supply) as outstanding_supply FROM {{ ref('fact_dai_supply_by_chain') }} +GROUP BY 1 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dai_supply_by_chain.sql b/models/projects/maker/prod_raw/fact_dai_supply_by_chain.sql new file mode 100644 index 00000000..18cc0567 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dai_supply_by_chain.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dai_supply_by_chain" + ) +}} + + +{{ +dbt_utils.union_relations( + relations=[ + ref("fact_dai_eth_supply"), + ref("fact_dai_dsr_supply"), + ] +) +}} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dsr_expenses.sql b/models/projects/maker/prod_raw/fact_dsr_expenses.sql new file mode 100644 index 00000000..b290bacb --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dsr_expenses.sql @@ -0,0 +1,36 @@ + +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dsr_expenses" + ) +}} + +WITH dsr_expenses_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot +) + +SELECT + ts, + hash, + 31610 AS code, + -value AS value --reduced equity +FROM dsr_expenses_raw + +UNION ALL + +SELECT + ts, + hash, + 21110 AS code, + value AS value --increased liability +FROM dsr_expenses_raw \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dsr_flows.sql b/models/projects/maker/prod_raw/fact_dsr_flows.sql new file mode 100644 index 00000000..fdb0257f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dsr_flows.sql @@ -0,0 +1,43 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dsr_flows" + ) +}} + +WITH dsr_flows_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract +) + +SELECT + ts, + hash, + 21110 AS code, + dsr_flow AS value -- positive dsr flow increases interest-bearing dai liability +FROM dsr_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -dsr_flow AS value -- positive dsr flow decreases non-interest-bearing dai liability +FROM dsr_flows_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dssvesttransferrable_create.sql b/models/projects/maker/prod_raw/fact_dssvesttransferrable_create.sql new file mode 100644 index 00000000..64059d88 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dssvesttransferrable_create.sql @@ -0,0 +1,32 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dssvesttransferrable_create" + ) +}} + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) = '0xdb64ff8f' +) +SELECT + block_timestamp, + tx_hash, + '0x' || SUBSTR(raw_input_data, 25, 40) as _usr, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _tot, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 129, 64)) as _bgn, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 193, 64)) as _tau, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 257, 64)) as _eta, + ROW_NUMBER() OVER (ORDER BY block_timestamp, trace_index) AS output_id +FROM raw \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dssvesttransferrable_vest.sql b/models/projects/maker/prod_raw/fact_dssvesttransferrable_vest.sql new file mode 100644 index 00000000..66bb0519 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dssvesttransferrable_vest.sql @@ -0,0 +1,19 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dssvesttransferrable_vest" + ) +}} + + +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(topics[1]) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(data) as _max_amt +FROM ethereum_flipside.core.fact_event_logs +where contract_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and topics[0] = '0xa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_dssvesttransferrable_yank.sql b/models/projects/maker/prod_raw/fact_dssvesttransferrable_yank.sql new file mode 100644 index 00000000..80100d15 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_dssvesttransferrable_yank.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_dssvesttransferrable_yank" + ) +}} + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) in ('0x509aaa1d', '0x26e027f1') +) +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 1, 64)) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _end +FROM raw \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_eth_prices.sql b/models/projects/maker/prod_raw/fact_eth_prices.sql new file mode 100644 index 00000000..803a774f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_eth_prices.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_eth_prices" + ) +}} + +SELECT * +FROM {{ ref('fact_token_prices') }} +WHERE token = 'ETH' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_final.sql b/models/projects/maker/prod_raw/fact_final.sql new file mode 100644 index 00000000..6798256e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_final.sql @@ -0,0 +1,43 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_final" + ) +}} + +-- Non-M2M entries +SELECT + code, + ts, + hash, + value, + token, + descriptor, + ilk, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE dai_value END AS dai_value, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE eth_value END AS eth_value, + DATE(ts) AS dt +FROM {{ ref('fact_with_prices') }} +WHERE SUBSTRING(CAST(code AS VARCHAR), -4) <> '9999' + +UNION ALL + +-- M2M entries +SELECT + code, + ts, + hash, + NULL AS value, + token, + descriptor, + ilk, + incremental_dai_m2m AS dai_value, + incremental_eth_m2m AS eth_value, + DATE(ts) AS dt +FROM {{ ref('fact_incremental_m2m') }} + +-- Final filter +WHERE (COALESCE(value, 0) <> 0 OR dai_value <> 0 OR eth_value <> 0) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_ilk_list.sql b/models/projects/maker/prod_raw/fact_ilk_list.sql new file mode 100644 index 00000000..9a85c5b9 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_ilk_list.sql @@ -0,0 +1,25 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_ilk_list" + ) +}} + +SELECT DISTINCT ilk +FROM ( + SELECT ilk + FROM ethereum_flipside.maker.fact_vat_frob + + UNION + + SELECT ilk + FROM {{ ref('fact_spot_file') }} + + UNION + + SELECT ilk + FROM {{ ref('fact_jug_file') }} +) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_incremental_m2m.sql b/models/projects/maker/prod_raw/fact_incremental_m2m.sql new file mode 100644 index 00000000..9f5d24fc --- /dev/null +++ b/models/projects/maker/prod_raw/fact_incremental_m2m.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_incremental_m2m" + ) +}} + +SELECT + *, + dai_m2m - COALESCE(LAG(dai_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_dai_m2m, + eth_m2m - COALESCE(LAG(eth_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_eth_m2m +FROM {{ ref('fact_cumulative_sums') }} +WHERE cumulative_ale_token_value > 0 + AND SUBSTRING(CAST(code AS VARCHAR), -4) = '9999' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_interest_accruals.sql b/models/projects/maker/prod_raw/fact_interest_accruals.sql new file mode 100644 index 00000000..de77dd01 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_interest_accruals.sql @@ -0,0 +1,39 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_interest_accruals" + ) +}} + +WITH interest_accruals AS ( + SELECT + ia.ts, + ia.hash, + il.equity_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM {{ ref('fact_interest_accruals_3') }} ia + LEFT JOIN {{ ref('dim_ilk_list_labeled') }} il + ON ia.ilk = il.ilk + AND ia.ts BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.equity_code, ia.ilk + + UNION ALL + + SELECT + ia.ts, + ia.hash, + il.asset_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM {{ ref('fact_interest_accruals_3') }} ia + LEFT JOIN {{ ref('dim_ilk_list_labeled') }} il + ON ia.ilk = il.ilk + AND CAST(ia.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.asset_code, ia.ilk +) + +SELECT * FROM interest_accruals \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_interest_accruals_1.sql b/models/projects/maker/prod_raw/fact_interest_accruals_1.sql new file mode 100644 index 00000000..ff918fc9 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_interest_accruals_1.sql @@ -0,0 +1,40 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_interest_accruals_1" + ) +}} + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart, + CAST(NULL AS NUMBER) AS rate +FROM ethereum_flipside.maker.fact_vat_frob +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart/1e18, + 0 AS rate +FROM {{ ref('fact_vat_grab')}} +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + CAST(NULL AS NUMBER) AS dart, + rate +FROM ethereum_flipside.maker.fact_vat_fold +WHERE rate != 0 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_interest_accruals_2.sql b/models/projects/maker/prod_raw/fact_interest_accruals_2.sql new file mode 100644 index 00000000..d586925c --- /dev/null +++ b/models/projects/maker/prod_raw/fact_interest_accruals_2.sql @@ -0,0 +1,14 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_interest_accruals_2" + ) +}} + +SELECT + *, + SUM(dart) OVER (PARTITION BY ilk ORDER BY ts) AS cumulative_dart +FROM {{ ref('fact_interest_accruals_1') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_interest_accruals_3.sql b/models/projects/maker/prod_raw/fact_interest_accruals_3.sql new file mode 100644 index 00000000..fa1f94e6 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_interest_accruals_3.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_interest_accruals_3" + ) +}} + +SELECT + ilk, + ts, + hash, + SUM(cumulative_dart * rate * 10) AS interest_accruals +FROM {{ ref('fact_interest_accruals_2') }} +WHERE rate IS NOT NULL +GROUP BY ilk, ts, hash \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_jug_file.sql b/models/projects/maker/prod_raw/fact_jug_file.sql new file mode 100644 index 00000000..33c8e43f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_jug_file.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_jug_file" + ) +}} + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2],0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x29ae811400000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x19c0976f590D67707E62397C87829d896Dc0f1F1' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_liquidation.sql b/models/projects/maker/prod_raw/fact_liquidation.sql new file mode 100644 index 00000000..492f1ba5 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_liquidation.sql @@ -0,0 +1,45 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_liquidation" + ) +}} + +-- Liquidation Revenues +SELECT + ts, + hash, + 31210 AS code, + value AS value +FROM {{ ref('fact_liquidation_revenue') }} + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value +FROM {{ ref('fact_liquidation_revenue') }} + +UNION ALL + +-- Liquidation Expenses +SELECT + block_timestamp as ts, + tx_hash as hash, + 31620 AS code, + -value AS value +FROM {{ ref('fact_liquidation_expenses') }} + +UNION ALL + +SELECT + block_timestamp as ts, + tx_hash as hash, + 21120 AS code, + value AS value +FROM {{ ref('fact_liquidation_expenses') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_liquidation_excluded_tx.sql b/models/projects/maker/prod_raw/fact_liquidation_excluded_tx.sql new file mode 100644 index 00000000..971ad486 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_liquidation_excluded_tx.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_liquidation_excluded_tx" + ) +}} + +SELECT DISTINCT t.tx_hash +FROM ethereum_flipside.core.fact_traces t +JOIN {{ ref('dim_maker_contracts') }} c + ON t.from_address = c.contract_address + AND c.contract_type IN ('FlapFlop') \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_liquidation_expenses.sql b/models/projects/maker/prod_raw/fact_liquidation_expenses.sql new file mode 100644 index 00000000..deadfdbb --- /dev/null +++ b/models/projects/maker/prod_raw/fact_liquidation_expenses.sql @@ -0,0 +1,16 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_liquidation_expenses" + ) +}} + +SELECT block_timestamp + , tx_hash + , SUM(tab) AS value +FROM {{ref('fact_vow_fess')}} +GROUP BY block_timestamp + , tx_hash \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_liquidation_revenue.sql b/models/projects/maker/prod_raw/fact_liquidation_revenue.sql new file mode 100644 index 00000000..056190af --- /dev/null +++ b/models/projects/maker/prod_raw/fact_liquidation_revenue.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_liquidation_revenue" + ) +}} + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value +FROM ethereum_flipside.maker.fact_vat_move +WHERE + dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND src_address NOT IN (SELECT contract_address FROM {{ ref('dim_maker_contracts') }}) + AND src_address NOT IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' + ) -- aave v2 d3m, compound v2 d3m + AND tx_hash NOT IN (SELECT tx_hash FROM {{ ref('fact_liquidation_excluded_tx') }}) + AND tx_hash NOT IN (SELECT tx_hash FROM {{ ref('fact_team_dai_burns_tx') }}) + AND tx_hash NOT IN (SELECT tx_hash FROM {{ ref('fact_psm_yield_tx') }}) + AND tx_hash NOT IN (SELECT tx_hash FROM {{ ref('fact_rwa_yield_tx') }}) +GROUP BY block_timestamp, tx_hash \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_loan_actions.sql b/models/projects/maker/prod_raw/fact_loan_actions.sql new file mode 100644 index 00000000..4bc26c2f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_loan_actions.sql @@ -0,0 +1,35 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_loan_actions" + ) +}} + + +SELECT + la.ts, + la.hash, + il.asset_code AS code, + SUM(la.dart) AS value, + la.ilk +FROM {{ ref('fact_loan_actions_2') }} la +LEFT JOIN {{ ref('dim_ilk_list_labeled') }} il + ON la.ilk = il.ilk + AND CAST(la.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') +GROUP BY la.ts, la.hash, il.asset_code, la.ilk +-- HAVING SUM(la.dart * la.rate) / POW(10, 45) != 0 + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + SUM(dart) AS value, + ilk +FROM {{ ref('fact_loan_actions_2') }} +GROUP BY ts, hash, ilk +HAVING SUM(dart) != 0 diff --git a/models/projects/maker/prod_raw/fact_loan_actions_2.sql b/models/projects/maker/prod_raw/fact_loan_actions_2.sql new file mode 100644 index 00000000..5932eb95 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_loan_actions_2.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_loan_actions_2" + ) +}} + +SELECT + ilk, + ts, + hash, + dart, + COALESCE(POW(10,27) + SUM(rate) OVER(PARTITION BY ilk ORDER BY ts ASC), POW(10,27)) AS rate +FROM {{ ref('fact_interest_accruals_1') }} +WHERE ilk != 'TELEPORT-FW-A' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_m2m_levels.sql b/models/projects/maker/prod_raw/fact_m2m_levels.sql new file mode 100644 index 00000000..dbb643f5 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_m2m_levels.sql @@ -0,0 +1,27 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_m2m_levels" + ) +}} + +WITH treasury_tokens AS ( + SELECT token, price_address + FROM {{ ref('dim_treasury_erc20s') }} + + UNION ALL + + SELECT 'DAI' AS token, '0x6b175474e89094c44da98b954eedeac495271d0f' AS price_address +) + +SELECT + p.hour AS ts, + tt.token, + CASE WHEN tt.token = 'DAI' THEN 1 ELSE p.price END AS price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN treasury_tokens tt ON p.token_address = tt.price_address +WHERE p.hour >= '2019-11-01' + AND EXTRACT(HOUR FROM p.hour) = 23 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_fdv_and_turnover.sql b/models/projects/maker/prod_raw/fact_maker_fdv_and_turnover.sql new file mode 100644 index 00000000..65b4688f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_fdv_and_turnover.sql @@ -0,0 +1,22 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_fdv_and_turnover", + ) +}} + + +SELECT + date, + shifted_token_h24_volume_usd as token_volume, + shifted_token_price_usd * 1005577 as fully_diluted_market_cap, + shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, + shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv +FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold +where coingecko_id = 'maker' +and shifted_token_market_cap > 0 +and fully_diluted_market_cap > 0 +order by date desc \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses.sql b/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses.sql new file mode 100644 index 00000000..fb603b3e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses.sql @@ -0,0 +1,84 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_maker_fees_revenue_expenses" + ) +}} + + +select + date(period) as date, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180')-- Stability fees + then sum_value + end + ) as stability_fees, + sum(case + when account_id like '313%' -- Trading fees + then sum_value + end + ) as trading_fees, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180') -- Stability fees + or account_id like '313%' -- Trading fees + then sum_value + end + ) as fees, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as primary_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + then sum_value + end + ) as other_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + or account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as protocol_revenue, + sum( + case + when account_id = '31410' -- MKR Mints + then sum_value + end + ) as token_incentives, + sum( + case + when account_id like '316%' -- Direct Expenses + then -sum_value + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then -sum_value + end + ) as operating_expenses, + sum( + case + when account_id like '316%' -- Direct Expenses + or account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + or account_id = '31410' + then -sum_value + end + ) as total_expenses +from {{ ref('fact_accounting_agg') }} +group by 1 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses_by_token.sql b/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses_by_token.sql new file mode 100644 index 00000000..b8625200 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_fees_revenue_expenses_by_token.sql @@ -0,0 +1,85 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_maker_fees_revenue_expenses_by_token" + ) +}} + + +select + date(period) as date, + token, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180')-- Stability fees + then sum_value_token + end + ) as stability_fees, + sum(case + when account_id like '313%' -- Trading fees + then sum_value_token + end + ) as trading_fees, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180') -- Stability fees + or account_id like '313%' -- Trading fees + then sum_value_token + end + ) as fees, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value_token + end + ) as primary_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + then sum_value_token + end + ) as other_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + or account_id like '311%' -- Gross Interest Revenues + then sum_value_token + end + ) as protocol_revenue, + sum( + case + when account_id = '31410' -- MKR Mints + then sum_value_token + end + ) as token_incentives, + sum( + case + when account_id like '316%' -- Direct Expenses + then -sum_value_token + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then -sum_value_token + end + ) as operating_expenses, + sum( + case + when account_id like '316%' -- Direct Expenses + or account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + or account_id = '31410' + then -sum_value_token + end + ) as total_expenses +from {{ ref('fact_accounting_agg') }} +group by 1, 2 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_pnl.sql b/models/projects/maker/prod_raw/fact_maker_pnl.sql new file mode 100644 index 00000000..7272bece --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_pnl.sql @@ -0,0 +1,61 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_maker_pnl" + ) +}} + +with -- Maker - Accounting Aggregated v2 + pnl as ( + select + period as date, + sum( + case + when account_id like '312%' -- Liquidation Revenues + then sum_value + end + ) as liquidation_income, + sum( + case + when account_id like '313%' -- Trading Revenues + or account_id like '3119%' -- Stablecoins + then sum_value + end + ) as trading_income, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as lending_income, + sum( + case + when account_id like '316%' -- Direct Expenses + then sum_value + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then sum_value + end + ) as operating_expenses + from {{ ref('fact_accounting_agg') }} + group by 1 + ) + +select + date_trunc('day', date) as date, + SUM(iff(liquidation_income < 1e-4, 0, liquidation_income)) as "Liquidation Income", + SUM(iff(trading_income < 1e-4, 0, trading_income)) as "Trading Fees", + SUM(iff(lending_income < 1e-4, 0, lending_income)) as "Interest Income", + SUM(direct_expenses) as "Direct Expenses", + SUM(operating_expenses) as "Operating Expenses" +from pnl +group by 1 +order by 1 desc \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_tvl.sql b/models/projects/maker/prod_raw/fact_maker_tvl.sql new file mode 100644 index 00000000..38dec1f1 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_tvl.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_maker_tvl" + ) +}} + +SELECT + date, + sum(total_amount_usd) as tvl_usd +FROM + {{ref('fact_maker_tvl_by_asset')}} +GROUP BY + 1 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_maker_tvl_by_asset.sql b/models/projects/maker/prod_raw/fact_maker_tvl_by_asset.sql new file mode 100644 index 00000000..d3baddde --- /dev/null +++ b/models/projects/maker/prod_raw/fact_maker_tvl_by_asset.sql @@ -0,0 +1,109 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_maker_tvl_by_asset" + ) +}} + + +WITH weth AS ( + SELECT DISTINCT + m.symbol, + g.gem_address, + g.join_address, + m.decimals + FROM + {{ ref('dim_gem_join_addresses') }} g + LEFT JOIN ethereum_flipside.price.ez_asset_metadata m ON g.gem_address = m.token_address + WHERE + symbol IS NOT NULL +), +daily_balances AS ( + SELECT + DATE(t.block_timestamp) AS date, + t.user_address, + t.contract_address, + w.symbol, + w.decimals, + AVG(t.balance / POWER(10, w.decimals)) AS amount_native + FROM + ethereum_flipside.core.fact_token_balances t + JOIN weth w ON t.user_address = w.join_address AND t.contract_address = w.gem_address + GROUP BY 1, 2, 3, 4, 5 +), +date_series AS ( + SELECT date_day as date + FROM ethereum_flipside.core.dim_dates + WHERE date_day < to_date(sysdate()) +), +all_combinations AS ( + SELECT DISTINCT + d.date, + db.user_address, + db.contract_address + FROM + date_series d + CROSS JOIN (SELECT DISTINCT user_address, contract_address FROM daily_balances) db +), +forward_filled_balances AS ( + SELECT + ac.date, + ac.user_address, + ac.contract_address, + LAST_VALUE(db.symbol IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS symbol, + LAST_VALUE(db.decimals IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS decimals, + LAST_VALUE(db.amount_native IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS amount_native + FROM + all_combinations ac + LEFT JOIN daily_balances db + ON ac.date = db.date + AND ac.user_address = db.user_address + AND ac.contract_address = db.contract_address +), +usd_values AS ( + SELECT + ffb.date, + ffb.user_address, + ffb.contract_address, + ffb.symbol, + ffb.amount_native, + ffb.amount_native * COALESCE( + p.price, + FIRST_VALUE(p.price) OVER ( + PARTITION BY ffb.contract_address + ORDER BY CASE WHEN p.price IS NOT NULL THEN ffb.date END DESC + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS amount_usd + FROM + forward_filled_balances ffb + LEFT JOIN ethereum_flipside.price.ez_prices_hourly p + ON p.hour = DATE_TRUNC('day', ffb.date) + AND p.token_address = ffb.contract_address + WHERE + ffb.amount_native IS NOT NULL +) +SELECT + date, + SUM(amount_native) AS total_amount_native, + symbol, + SUM(amount_usd) AS total_amount_usd +FROM + usd_values +GROUP BY 1, 3 +ORDER BY 1 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_burns.sql b/models/projects/maker/prod_raw/fact_mkr_burns.sql new file mode 100644 index 00000000..91b113e6 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_burns.sql @@ -0,0 +1,35 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_burns" + ) +}} + +WITH mkr_burns_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY block_timestamp, tx_hash +) + +SELECT + ts, + hash, + 31420 AS code, + -value AS value --decreased equity +FROM mkr_burns_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value --increased liability +FROM mkr_burns_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_mints.sql b/models/projects/maker/prod_raw/fact_mkr_mints.sql new file mode 100644 index 00000000..c84e226b --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_mints.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_mints" + ) +}} + +WITH mkr_mints_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN {{ ref('fact_liquidation_excluded_tx') }} tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND vat.src_address NOT IN (SELECT contract_address FROM {{ ref('dim_maker_contracts') }} WHERE contract_type = 'PSM') + GROUP BY vat.block_timestamp, vat.tx_hash +) + +SELECT + ts, + hash, + 31410 AS code, + value --increased equity +FROM mkr_mints_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM mkr_mints_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_tokenholder_count.sql b/models/projects/maker/prod_raw/fact_mkr_tokenholder_count.sql new file mode 100644 index 00000000..57ae82e5 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_tokenholder_count.sql @@ -0,0 +1,70 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_tokenholder_count", + ) +}} + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + where block_timestamp > '2017-12-19' -- set token contract creation date +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select date, count(*) as tokenholder_count from filled_balances +where balance_token > 0 +group by date +order by date desc + + diff --git a/models/projects/maker/prod_raw/fact_mkr_vest_creates.sql b/models/projects/maker/prod_raw/fact_mkr_vest_creates.sql new file mode 100644 index 00000000..18489193 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_vest_creates.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_vest_creates" + ) +}} + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + output_id, + _bgn, + _tau, + _tot::number / 1e18 AS total_mkr +FROM {{ ref('fact_dssvesttransferrable_create') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_vest_creates_yanks.sql b/models/projects/maker/prod_raw/fact_mkr_vest_creates_yanks.sql new file mode 100644 index 00000000..0774afee --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_vest_creates_yanks.sql @@ -0,0 +1,45 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_vest_creates_yanks" + ) +}} + +-- MKR Vest Creates +SELECT + ts, + hash, + 32110 AS code, -- MKR expense realized + -total_mkr AS value +FROM {{ ref('fact_mkr_vest_creates') }} + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts increases + total_mkr AS value +FROM {{ ref('fact_mkr_vest_creates') }} + +UNION ALL + +-- MKR Yanks +SELECT + ts, + hash, + 32110 AS code, -- MKR expense reversed (yanked) + yanked_mkr AS value +FROM {{ ref('fact_mkr_yanks') }} + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts yanked (decreases) + -yanked_mkr AS value +FROM {{ ref('fact_mkr_yanks') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_vest_events.sql b/models/projects/maker/prod_raw/fact_mkr_vest_events.sql new file mode 100644 index 00000000..f3453c62 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_vest_events.sql @@ -0,0 +1,14 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_vest_events" + ) +}} + +SELECT + tx_hash AS hash, + 1 AS vested +FROM {{ ref('fact_dssvesttransferrable_vest') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_vest_tx.sql b/models/projects/maker/prod_raw/fact_mkr_vest_tx.sql new file mode 100644 index 00000000..c2a82fbc --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_vest_tx.sql @@ -0,0 +1,14 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_vest_trxns" + ) +}} + +SELECT + tx_hash AS hash, + 1 AS vested +FROM {{ ref('fact_dssvesttransferrable_vest') }} \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_mkr_yanks.sql b/models/projects/maker/prod_raw/fact_mkr_yanks.sql new file mode 100644 index 00000000..7f95c1e3 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_mkr_yanks.sql @@ -0,0 +1,45 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_mkr_yanks" + ) +}} + +WITH yanks_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + _end, + _id + FROM {{ ref('fact_dssvesttransferrable_yank') }} +), + +yanks_with_context AS ( + SELECT + y.*, + c._bgn, + c._tau, + c.total_mkr, + CASE + WHEN DATEADD(second, y._end, '1970-01-01'::timestamp) > y.ts + THEN DATEADD(second, y._end, '1970-01-01'::timestamp) + ELSE y.ts + END AS end_time + FROM yanks_raw y + LEFT JOIN {{ ref('fact_mkr_vest_creates') }} c + ON y._id = c.output_id +) + +SELECT + ts, + hash, + _id, + TO_TIMESTAMP(CAST(_bgn AS VARCHAR)) AS begin_time, + end_time, + _tau, + total_mkr AS original_total_mkr, + (1 - (DATEDIFF(second, '1970-01-01'::timestamp, end_time) - _bgn) / _tau) * total_mkr AS yanked_mkr +FROM yanks_with_context \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_net_treasury_usd.sql b/models/projects/maker/prod_raw/fact_net_treasury_usd.sql new file mode 100644 index 00000000..504f5f29 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_net_treasury_usd.sql @@ -0,0 +1,32 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_net_treasury_usd" + ) +}} + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + {{ ref('fact_system_surplus_dai') }} + UNION ALL + SELECT + date, + amount_usd + FROM + {{ ref('fact_treasury_lp_balances') }} +) +SELECT + date, + SUM(amount_usd) AS net_treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_opex.sql b/models/projects/maker/prod_raw/fact_opex.sql new file mode 100644 index 00000000..750bc5c5 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_opex.sql @@ -0,0 +1,47 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_opex" + ) +}} + +WITH opex_preunion AS ( + SELECT + mints.block_timestamp AS ts, + mints.tx_hash AS hash, + CASE + WHEN dao_wallet.code IN ('GELATO', 'KEEP3R', 'CHAINLINK', 'TECHOPS') THEN 31710 --keeper maintenance expenses + WHEN dao_wallet.code = 'GAS' THEN 31630 -- oracle gas expenses + WHEN dao_wallet.code IS NOT NULL THEN 31720 --workforce expenses + ELSE 31740 --direct opex - when a suck operation is used to directly transfer DAI to a third party + END AS equity_code, + mints.wad / POW(10, 18) AS expense + FROM {{ ref('fact_dai_mint') }} mints + JOIN {{ ref('fact_opex_suck_hashes') }} opex + ON mints.tx_hash = opex.tx_hash + LEFT JOIN {{ ref('dim_dao_wallet') }} dao_wallet + ON mints.usr = dao_wallet.wallet_address + LEFT JOIN ethereum_flipside.maker.fact_vat_frob AS frobs + ON mints.tx_hash = frobs.tx_hash + AND mints.wad::number/1e18 = frobs.dart + WHERE frobs.tx_hash IS NULL --filtering out draws from psm that happened in the same tx as expenses +) + +SELECT + ts, + hash, + equity_code AS code, + -CAST(expense AS DOUBLE) AS value --reduced equity +FROM opex_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + expense AS value --increased liability +FROM opex_preunion \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_opex_suck_hashes.sql b/models/projects/maker/prod_raw/fact_opex_suck_hashes.sql new file mode 100644 index 00000000..e2bc7e6e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_opex_suck_hashes.sql @@ -0,0 +1,20 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_opex_suck_hashes" + ) +}} + +SELECT suck.tx_hash +FROM ethereum_flipside.maker.fact_vat_suck suck +WHERE suck.u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' + AND suck.v_address IN ( + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' + ) + AND suck.rad != 0 +GROUP BY 1 \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_other_sin_outflows.sql b/models/projects/maker/prod_raw/fact_other_sin_outflows.sql new file mode 100644 index 00000000..2c70a845 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_other_sin_outflows.sql @@ -0,0 +1,40 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_other_sin_outflows" + ) +}} + +WITH other_sin_outflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address NOT IN ( + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7', -- Pot (DSR) + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', -- Pause Proxy + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', -- Old Pause Proxy + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' -- Old Pause Proxy + ) +) + +SELECT + ts, + hash, + 31520 AS code, + -value AS value --reduced equity +FROM other_sin_outflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value AS value --increased liability +FROM other_sin_outflows_raw \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns.sql b/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns.sql new file mode 100644 index 00000000..dbb3831f --- /dev/null +++ b/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns.sql @@ -0,0 +1,39 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_pause_proxy_mkr_trxns" + ) +}} + +WITH pause_proxy_mkr_trxns_preunion AS ( + SELECT + raw.ts, + raw.hash, + CASE + WHEN vest.vested IS NOT NULL THEN 32120 -- reserved surplus depletion for vested transactions + ELSE 32110 -- direct protocol surplus impact for non-vested transactions + END AS code, + -raw.expense / 1e18 AS value + FROM {{ ref('fact_pause_proxy_mkr_trxns_raw') }} raw + LEFT JOIN {{ ref('fact_mkr_vest_tx') }} vest + ON raw.hash = vest.hash +) + +SELECT + ts, + hash, + code, + value +FROM pause_proxy_mkr_trxns_preunion + +UNION ALL + +SELECT + ts, + hash, + 32210 AS code, -- MKR contra equity + -value +FROM pause_proxy_mkr_trxns_preunion \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns_raw.sql b/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns_raw.sql new file mode 100644 index 00000000..803be5c5 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_pause_proxy_mkr_trxns_raw.sql @@ -0,0 +1,31 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_pause_proxy_mkr_trxns_raw" + ) +}} + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(raw_amount_precise AS DOUBLE) AS expense, + to_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- excluding transfers to itself + +UNION ALL + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(raw_amount_precise AS DOUBLE) AS expense, + from_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND from_address NOT IN ('0x8ee7d9235e01e6b42345120b5d270bdb763624c7', '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb') -- excluding initial transfers in and transfers from itself \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_psm_yield.sql b/models/projects/maker/prod_raw/fact_psm_yield.sql new file mode 100644 index 00000000..b2d52d3e --- /dev/null +++ b/models/projects/maker/prod_raw/fact_psm_yield.sql @@ -0,0 +1,40 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_psm_yield" + ) +}} + +WITH psm_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN {{ ref('fact_psm_yield_tx') }} tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + 31180 AS code, + value, --increased equity + ilk +FROM psm_yield_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM psm_yield_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_psm_yield_tx.sql b/models/projects/maker/prod_raw/fact_psm_yield_tx.sql new file mode 100644 index 00000000..da389863 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_psm_yield_tx.sql @@ -0,0 +1,20 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_psm_yield_tx" + ) +}} + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0xf2e7a5b83525c3017383deed19bb05fe34a62c27' + THEN 'PSM-GUSD-A' + WHEN usr = lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787') + THEN 'PSM-USDP-A' + END AS ilk +FROM {{ ref('fact_dai_burn') }} +WHERE usr IN ('0xf2e7a5b83525c3017383deed19bb05fe34a62c27', lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787')) -- GUSD interest payment contract \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_rwa_yield.sql b/models/projects/maker/prod_raw/fact_rwa_yield.sql new file mode 100644 index 00000000..1440e37c --- /dev/null +++ b/models/projects/maker/prod_raw/fact_rwa_yield.sql @@ -0,0 +1,42 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_rwa_yield" + ) +}} + +WITH rwa_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN {{ ref('fact_rwa_yield_tx') }} tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + COALESCE(ilm.equity_code, 31170) AS code, --default to off-chain private credit + value, --increased equity + rwy.ilk +FROM rwa_yield_preunioned rwy +LEFT JOIN {{ ref('dim_ilk_list_manual_input') }} ilm + USING (ilk) + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM rwa_yield_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_rwa_yield_tx.sql b/models/projects/maker/prod_raw/fact_rwa_yield_tx.sql new file mode 100644 index 00000000..b5a101ca --- /dev/null +++ b/models/projects/maker/prod_raw/fact_rwa_yield_tx.sql @@ -0,0 +1,20 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_rwa_yield_tx" + ) +}} + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0x6c6d4be2223b5d202263515351034861dd9afdb6' THEN 'RWA009-A' + WHEN usr = '0xef1b095f700be471981aae025f92b03091c3ad47' THEN 'RWA007-A' + WHEN usr = '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf' THEN 'RWA014-A' + WHEN usr = lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf') THEN 'RWA015-A' + END AS ilk +FROM {{ ref('fact_dai_burn') }} +WHERE usr IN ('0x6c6d4be2223b5d202263515351034861dd9afdb6', '0xef1b095f700be471981aae025f92b03091c3ad47', '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf', lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf')) \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_sin_inflows.sql b/models/projects/maker/prod_raw/fact_sin_inflows.sql new file mode 100644 index 00000000..4731a00b --- /dev/null +++ b/models/projects/maker/prod_raw/fact_sin_inflows.sql @@ -0,0 +1,34 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_sin_inflows" + ) +}} + +WITH sin_inflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE v_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow +) + +SELECT + ts, + hash, + 31510 AS code, + value AS value --increased equity +FROM sin_inflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM sin_inflows_raw \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_spot_file.sql b/models/projects/maker/prod_raw/fact_spot_file.sql new file mode 100644 index 00000000..c04dffc9 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_spot_file.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_spot_file" + ) +}} + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2], 0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x1a0b287e00000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3' \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_system_surplus_dai.sql b/models/projects/maker/prod_raw/fact_system_surplus_dai.sql new file mode 100644 index 00000000..360257ff --- /dev/null +++ b/models/projects/maker/prod_raw/fact_system_surplus_dai.sql @@ -0,0 +1,24 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_system_surplus_dai" + ) +}} + +with bs_equity as ( + select + date(ts) as date, + sum(case when acc.code not like '33%' and acc.code not like '39%' then acc.value else 0 end) as surplus + from {{ ref('fact_final') }} acc + where code like '3%' + and acc.code not like '33%' and acc.code not like '39%' + group by 1 +) +select + date, + sum(surplus) over (order by date) as surplus, + 'DAI' as token +from bs_equity \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_team_dai_burns.sql b/models/projects/maker/prod_raw/fact_team_dai_burns.sql new file mode 100644 index 00000000..590e6f52 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_team_dai_burns.sql @@ -0,0 +1,35 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_team_dai_burns" + ) +}} + +WITH team_dai_burns_preunioned AS ( + SELECT vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.is_keeper, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN {{ ref('fact_team_dai_burns_tx') }} tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.is_keeper +) + +SELECT ts, + hash, + (CASE WHEN is_keeper THEN 31710 ELSE 31730 END) AS code, + value -- increased equity +FROM team_dai_burns_preunioned + +UNION ALL + +SELECT ts, + hash, + 21120 AS code, + -value AS value -- decreased liability +FROM team_dai_burns_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_team_dai_burns_tx.sql b/models/projects/maker/prod_raw/fact_team_dai_burns_tx.sql new file mode 100644 index 00000000..b87648d2 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_team_dai_burns_tx.sql @@ -0,0 +1,32 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_team_dai_burns_tx" + ) +}} + +SELECT + tx_hash, + usr, + is_keeper +FROM ( + SELECT + d_c_b.tx_hash, + d_c_b.usr, + dao_wallet.wallet_label LIKE '% Keepers' as is_keeper + FROM {{ ref('fact_dai_burn') }} as d_c_b + JOIN {{ ref('dim_dao_wallet') }} dao_wallet ON d_c_b.usr = dao_wallet.wallet_address + + UNION ALL + + SELECT + tx_hash, + usr, + FALSE as is_keeper + FROM {{ ref('fact_dai_burn') }} + WHERE usr = '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' +) +GROUP BY tx_hash, usr, is_keeper \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_token_prices.sql b/models/projects/maker/prod_raw/fact_token_prices.sql new file mode 100644 index 00000000..e9f43e5d --- /dev/null +++ b/models/projects/maker/prod_raw/fact_token_prices.sql @@ -0,0 +1,37 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_token_prices" + ) +}} + +WITH tokens AS ( + SELECT token, price_address + FROM {{ ref('dim_treasury_erc20s') }} + + UNION ALL + + SELECT 'MKR' AS token, '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' AS price_address + + UNION ALL + + SELECT 'ETH' AS token, '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' AS price_address +) + +SELECT + p.hour AS ts, + t.token, + p.price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN tokens t ON lower(p.token_address) = lower(t.price_address) +WHERE p.hour >= '2019-11-01' + +UNION ALL + +SELECT + TIMESTAMP '2021-11-09 00:02' AS ts, + 'ENS' AS token, + 44.3 AS price \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_trading_revenues.sql b/models/projects/maker/prod_raw/fact_trading_revenues.sql new file mode 100644 index 00000000..5594f515 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_trading_revenues.sql @@ -0,0 +1,40 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_trading_revenues" + ) +}} + +WITH trading_revenues_preunion AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + psms.ilk, + SUM(CAST(vat.rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN {{ ref('dim_psms') }} psms + ON vat.src_address = psms.psm_address + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + GROUP BY vat.block_timestamp, vat.tx_hash, psms.ilk +) + +SELECT + ts, + hash, + 31310 AS code, + value AS value, + ilk +FROM trading_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM trading_revenues_preunion \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_treasury_flows.sql b/models/projects/maker/prod_raw/fact_treasury_flows.sql new file mode 100644 index 00000000..58a97e93 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_treasury_flows.sql @@ -0,0 +1,54 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_treasury_flows" + ) +}} + +WITH treasury_flows_preunioned AS ( + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN {{ ref('dim_treasury_erc20s') }} t + ON evt.contract_address = t.contract_address + WHERE evt.to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token + + UNION ALL + + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + -SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN {{ ref('dim_treasury_erc20s') }} t + ON evt.contract_address = t.contract_address + WHERE evt.from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + AND evt.to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token +) + +SELECT + ts, + hash, + 33110 AS code, + value, --increased equity + token +FROM treasury_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 14620 AS code, + value, --increased assets + token +FROM treasury_flows_preunioned \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql new file mode 100644 index 00000000..d46ba266 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -0,0 +1,43 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_treasury_lp_balances" + ) +}} + + +with treasury_balance as ( + select + date(block_timestamp) as date, + MAX(balance)::number / 1e18 as treasury_lp_balance + from + ethereum_flipside.core.fact_token_balances + where + contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') + and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') + GROUP BY + 1 +), +value_per_token as ( + SELECT + s.date, + v.amount_usd / s.circulating_supply as value_per_token, + s.circulating_supply + FROM + {{ ref('fact_uni_lp_supply') }} s + LEFT JOIN {{ ref('fact_uni_lp_value') }} v ON v.date = s.date + where + value_per_token is not null +) +SELECT + t.date, + t.treasury_lp_balance as amount_native, + v.value_per_token, + t.treasury_lp_balance * v.value_per_token as amount_usd, + 'UNI V2: DAI-MKR' as token +FROM + treasury_balance t + LEFT JOIN value_per_token v on v.date = t.date \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_treasury_mkr.sql b/models/projects/maker/prod_raw/fact_treasury_mkr.sql new file mode 100644 index 00000000..7a1fa2cd --- /dev/null +++ b/models/projects/maker/prod_raw/fact_treasury_mkr.sql @@ -0,0 +1,84 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_treasury_mkr" + ) +}} + +with prices as ( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' + GROUP BY 1 +), +mkr_balance_cte as ( + SELECT + date(block_timestamp) as date, + MAX_BY(balance,date(block_timestamp))/1e18 as mkr_balance, + user_address + FROM ethereum_flipside.core.fact_token_balances + where user_address in (lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB'), lower('0x8EE7D9235e01e6B42345120b5d270bdB763624C7')) + and contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' + GROUP BY 1, 3 +), +date_sequence AS ( + SELECT DISTINCT date + FROM prices +), +user_addresses AS ( + SELECT DISTINCT user_address + FROM mkr_balance_cte +), +all_dates_users AS ( + SELECT + d.date, + u.user_address + FROM date_sequence d + CROSS JOIN user_addresses u +), +joined_balances AS ( + SELECT + a.date, + a.user_address, + p.price, + m.mkr_balance AS balance_token + FROM all_dates_users a + LEFT JOIN prices p ON p.date = a.date + LEFT JOIN mkr_balance_cte m ON m.date = a.date AND m.user_address = a.user_address +) +,filled_balances AS ( + SELECT + date, + user_address, + price, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token, + COALESCE( + user_address, + LAST_VALUE(user_address IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS filled_user_address + FROM joined_balances +) + +SELECT + date, + SUM(balance_token) amount_mkr, + SUM(balance_token *price) as amount_usd, + 'MKR' as token +FROM filled_balances +GROUP BY date \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_treasury_usd.sql b/models/projects/maker/prod_raw/fact_treasury_usd.sql new file mode 100644 index 00000000..f251ecd9 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_treasury_usd.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_treasury_usd" + ) +}} + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + {{ ref('fact_system_surplus_dai') }} + UNION ALL + SELECT + date, + amount_usd + FROM + {{ ref('fact_treasury_mkr') }} + UNION ALL + SELECT + date, + amount_usd + FROM + {{ ref('fact_treasury_lp_balances') }} +) +SELECT + date, + SUM(amount_usd) AS treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_uni_lp_supply.sql b/models/projects/maker/prod_raw/fact_uni_lp_supply.sql new file mode 100644 index 00000000..1626d1f6 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_uni_lp_supply.sql @@ -0,0 +1,63 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_uni_lp_supply" + ) +}} + +WITH token_transfers AS ( + SELECT + date(block_timestamp) AS date, + from_address, + to_address, + raw_amount_precise::number / 1e18 AS amount + FROM ethereum_flipside.core.fact_token_transfers + WHERE contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') +), +daily_mints AS ( + SELECT + date, + SUM(amount) AS daily_minted + FROM token_transfers + WHERE from_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_burns AS ( + SELECT + date, + SUM(amount) AS daily_burned + FROM token_transfers + WHERE to_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_net_supply AS ( + SELECT + d.date_day as date, + COALESCE(m.daily_minted, 0) AS daily_minted, + COALESCE(b.daily_burned, 0) AS daily_burned, + COALESCE(m.daily_minted, 0) - COALESCE(b.daily_burned, 0) AS daily_net + FROM ethereum_flipside.core.dim_dates d + LEFT JOIN daily_mints m ON d.date_day = m.date + LEFT JOIN daily_burns b ON d.date_day = b.date + WHERE date_day < to_date(sysdate()) +), +cumulative_supply AS ( + SELECT + date, + daily_minted, + daily_burned, + daily_net, + SUM(daily_net) OVER ( + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS circulating_supply + FROM daily_net_supply +) +SELECT + date, + circulating_supply +FROM cumulative_supply +ORDER BY date \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_uni_lp_value.sql b/models/projects/maker/prod_raw/fact_uni_lp_value.sql new file mode 100644 index 00000000..6df220d2 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_uni_lp_value.sql @@ -0,0 +1,63 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_uni_lp_value" + ) +}} + +with token_balances as ( + SELECT + DATE(block_timestamp) as date, + case + when contract_address = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') then 'DAI' + when contract_address = lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2') then 'MKR' + END AS token, + MAX_BY(balance, block_timestamp)::number / 1e18 as balance + FROM + ethereum_flipside.core.fact_token_balances + WHERE + user_address = lower('0x517F9dD285e75b599234F7221227339478d0FcC8') + AND contract_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 2 +), +prices as ( + SELECT + date(hour) as date, + MAX_BY(price, hour) as price, + symbol + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + token_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 3 +), +daily_prices_by_token as ( + SELECT + b.date, + p.price * b.balance as balance_usd, + b.token + FROM + token_balances b + LEFT JOIN prices p on p.date = b.date + AND p.symbol = b.token +) +SELECT + date, + sum(balance_usd) as amount_usd +FROM + daily_prices_by_token +GROUP BY 1 +ORDER BY 1 DESC \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_vat_grab.sql b/models/projects/maker/prod_raw/fact_vat_grab.sql new file mode 100644 index 00000000..772b32db --- /dev/null +++ b/models/projects/maker/prod_raw/fact_vat_grab.sql @@ -0,0 +1,114 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_vat_grab" + ) +}} + +with logs as ( + SELECT + * + FROM + ethereum_flipside.core.fact_event_logs + WHERE + topics [0] in ( + '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c', + '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28', + '0x7bab3f4000000000000000000000000000000000000000000000000000000000', + '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' + ) +), +bark as( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c' +), +grab as( + SELECT + block_timestamp, + tx_hash, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7bab3f4000000000000000000000000000000000000000000000000000000000' +), +bite as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28' +), +slip_raw as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' + AND length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(topics [3]) + WHEN length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN pc_dbt_db.prod.HEX_TO_INT(topics [3])::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' +), +slip as( + SELECT + block_timestamp, + tx_hash, + min(dart) as dart, + -- collision on certain tx where there are two calls to slip() + ilk + FROM + slip_raw + GROUP BY + 1, + 2, + 4 +), +agg as( + SELECT + distinct g.block_timestamp, + g.tx_hash as tx_hash, + coalesce(b.dart, t.dart, s.dart) as dart, + g.ilk as ilk + FROM + grab g + LEFT JOIN bark b on b.tx_hash = g.tx_hash + and g.ilk = b.ilk + LEFT JOIN bite t on t.tx_hash = g.tx_hash + and g.ilk = t.ilk + LEFT JOIN slip s on s.tx_hash = g.tx_hash + and g.ilk = s.ilk +) +select + * +from + agg +where + dart is not null \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_vow_fess.sql b/models/projects/maker/prod_raw/fact_vow_fess.sql new file mode 100644 index 00000000..25013278 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_vow_fess.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_vow_fess" + ) +}} + +SELECT + block_timestamp, + pc_dbt_db.prod.hex_to_int(topics[2])::double/1e45 as tab, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x697efb7800000000000000000000000000000000000000000000000000000000' +and contract_address = lower('0xA950524441892A31ebddF91d3cEEFa04Bf454466') \ No newline at end of file diff --git a/models/projects/maker/prod_raw/fact_with_prices.sql b/models/projects/maker/prod_raw/fact_with_prices.sql new file mode 100644 index 00000000..04a61e60 --- /dev/null +++ b/models/projects/maker/prod_raw/fact_with_prices.sql @@ -0,0 +1,75 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="raw", + alias="fact_with_prices" + ) +}} + +WITH unioned_data AS ( + SELECT ts, hash, code, value, 'DAI' AS token, 'Returned Workforce Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_team_dai_burns') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Liquidation Revenues/Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_liquidation') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Trading Revenues' AS descriptor, ilk FROM {{ ref('fact_trading_revenues') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Mints' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_mkr_mints') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Burns' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_mkr_burns') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Interest Accruals' AS descriptor, ilk FROM {{ ref('fact_interest_accruals') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'OpEx' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_opex') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_dsr_expenses') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Other Sin Outflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_other_sin_outflows') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Sin Inflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_sin_inflows') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_dsr_flows') }} + UNION ALL + SELECT ts, hash, code, value, token, 'Treasury Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_treasury_flows') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Loan Draws/Repays' AS descriptor, ilk FROM {{ ref('fact_loan_actions') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'D3M Revenues' AS descriptor, ilk FROM {{ ref('fact_d3m_revenues') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'PSM Yield' AS descriptor, ilk FROM {{ ref('fact_psm_yield') }} + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'RWA Yield' AS descriptor, ilk FROM {{ ref('fact_rwa_yield') }} + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Vest Creates/Yanks' AS descriptor, NULL AS ilk FROM {{ ref('fact_mkr_vest_creates_yanks') }} + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Pause Proxy Trxns' AS descriptor, NULL AS ilk FROM {{ ref('fact_pause_proxy_mkr_trxns') }} + UNION ALL + SELECT ts, NULL AS hash, 19999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_m2m_levels') }} + UNION ALL + SELECT ts, NULL AS hash, 29999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_m2m_levels') }} + UNION ALL + SELECT ts, NULL AS hash, 39999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM {{ ref('fact_m2m_levels') }} +) + +SELECT + coa.code, + u.ts, + u.hash, + u.value, + u.token, + u.descriptor, + u.ilk, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END AS dai_value, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END / ep.price AS eth_value, + ep.price AS eth_price +FROM {{ ref('dim_chart_of_accounts') }} coa +LEFT JOIN unioned_data u USING (code) +LEFT JOIN {{ ref('fact_token_prices') }} tp + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', tp.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM tp.ts) + AND u.token = tp.token +LEFT JOIN {{ ref('fact_eth_prices') }} ep + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', ep.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM ep.ts) +WHERE u.value IS NOT NULL \ No newline at end of file From fe8671d7c224a8b16f12215185db8f9e664367d0 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:23:25 -0400 Subject: [PATCH 090/213] AAVE (#341) --- macros/lending/lending_flashloan_fees.sql | 12 ++++++ .../lending/lending_liquidation_revenue.sql | 42 +++++++++++++++++++ .../fact_aave_v3_arbitrum_flashloan_fees.sql | 12 ++++++ ...t_aave_v3_arbitrum_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v2_avalanche_flashloan_fees.sql | 12 ++++++ ..._aave_v2_avalanche_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_avalanche_flashloan_fees.sql | 12 ++++++ ..._aave_v3_avalanche_liquidation_revenue.sql | 12 ++++++ .../base/fact_aave_v3_base_flashloan_fees.sql | 12 ++++++ .../fact_aave_v3_base_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_bsc_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v2_ethereum_flashloan_fees.sql | 12 ++++++ ...t_aave_v2_ethereum_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_ethereum_flashloan_fees.sql | 12 ++++++ ...t_aave_v3_ethereum_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_gnosis_flashloan_fees.sql | 12 ++++++ ...act_aave_v3_gnosis_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_optimism_flashloan_fees.sql | 12 ++++++ ...t_aave_v3_optimism_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v2_polygon_flashloan_fees.sql | 12 ++++++ ...ct_aave_v2_polygon_liquidation_revenue.sql | 12 ++++++ .../fact_aave_v3_polygon_flashloan_fees.sql | 12 ++++++ ...ct_aave_v3_polygon_liquidation_revenue.sql | 12 ++++++ 23 files changed, 306 insertions(+) create mode 100644 macros/lending/lending_flashloan_fees.sql create mode 100644 macros/lending/lending_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_flashloan_fees.sql create mode 100644 models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_flashloan_fees.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_flashloan_fees.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/base/fact_aave_v3_base_flashloan_fees.sql create mode 100644 models/projects/aave/raw/base/fact_aave_v3_base_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/bsc/fact_aave_v3_bsc_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_flashloan_fees.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_flashloan_fees.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_flashloan_fees.sql create mode 100644 models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/optimism/fact_aave_v3_optimism_flashloan_fees.sql create mode 100644 models/projects/aave/raw/optimism/fact_aave_v3_optimism_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v2_polygon_flashloan_fees.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v2_polygon_liquidation_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v3_polygon_flashloan_fees.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v3_polygon_liquidation_revenue.sql diff --git a/macros/lending/lending_flashloan_fees.sql b/macros/lending/lending_flashloan_fees.sql new file mode 100644 index 00000000..c91acd72 --- /dev/null +++ b/macros/lending/lending_flashloan_fees.sql @@ -0,0 +1,12 @@ +{% macro flipside_lending_flashloan_fees(chain, protocol) %} +select + block_timestamp::date as date + , '{{chain}}' as chain + , '{{protocol}}' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from {{chain}}_flipside.defi.ez_lending_flashloans +where platform = '{{protocol}}' +group by 1, 2, 3, 4 +{% endmacro %} \ No newline at end of file diff --git a/macros/lending/lending_liquidation_revenue.sql b/macros/lending/lending_liquidation_revenue.sql new file mode 100644 index 00000000..52add8b1 --- /dev/null +++ b/macros/lending/lending_liquidation_revenue.sql @@ -0,0 +1,42 @@ +{% macro aave_liquidation_revenue(chain, protocol, contract_address) %} +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from {{chain}}_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('{{contract_address}}') + {% if is_incremental() %} + and block_timestamp >= (select max(block_timestamp) from {{ this }}) + {% endif %} +) +select + block_timestamp::date as date + , '{{chain}}' as chain + , '{{protocol}}' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join {{chain}}_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join {{chain}}_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour +{% endmacro %} \ No newline at end of file diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_flashloan_fees.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_flashloan_fees.sql new file mode 100644 index 00000000..9ebfd516 --- /dev/null +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_arbitrum_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('arbitrum', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_liquidation_revenue.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_liquidation_revenue.sql new file mode 100644 index 00000000..fedcc574 --- /dev/null +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_arbitrum_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('arbitrum', 'Aave V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_flashloan_fees.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_flashloan_fees.sql new file mode 100644 index 00000000..1538d74e --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_avalanche_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('avalanche', 'Aave V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_liquidation_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_liquidation_revenue.sql new file mode 100644 index 00000000..3cc95650 --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v2_avalanche_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('avalanche', 'Aave V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_flashloan_fees.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_flashloan_fees.sql new file mode 100644 index 00000000..784b6c9a --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_avalanche_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('avalanche', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_liquidation_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_liquidation_revenue.sql new file mode 100644 index 00000000..69e4b42c --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_avalanche_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('avalanche', 'Aave V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_flashloan_fees.sql b/models/projects/aave/raw/base/fact_aave_v3_base_flashloan_fees.sql new file mode 100644 index 00000000..7472b348 --- /dev/null +++ b/models/projects/aave/raw/base/fact_aave_v3_base_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_base_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('base', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_liquidation_revenue.sql b/models/projects/aave/raw/base/fact_aave_v3_base_liquidation_revenue.sql new file mode 100644 index 00000000..a88be3da --- /dev/null +++ b/models/projects/aave/raw/base/fact_aave_v3_base_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_base_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('base', 'Aave V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_liquidation_revenue.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_liquidation_revenue.sql new file mode 100644 index 00000000..7aecaccf --- /dev/null +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_id=["tx_hash", "event_index"], + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_bsc_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('bsc', 'Aave V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_flashloan_fees.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_flashloan_fees.sql new file mode 100644 index 00000000..90794522 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_ethereum_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('ethereum', 'Aave V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_liquidation_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_liquidation_revenue.sql new file mode 100644 index 00000000..fdfc5df3 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v2_ethereum_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('ethereum', 'Aave V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_flashloan_fees.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_flashloan_fees.sql new file mode 100644 index 00000000..50b21216 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_ethereum_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('ethereum', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_liquidation_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_liquidation_revenue.sql new file mode 100644 index 00000000..20f3ed25 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_ethereum_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('ethereum', 'Aave V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_flashloan_fees.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_flashloan_fees.sql new file mode 100644 index 00000000..d5471e2e --- /dev/null +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_gnosis_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('gnosis', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_liquidation_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_liquidation_revenue.sql new file mode 100644 index 00000000..302444ba --- /dev/null +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_gnosis_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('gnosis', 'Aave V3', '0xb50201558B00496A145fE76f7424749556E326D8')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_flashloan_fees.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_flashloan_fees.sql new file mode 100644 index 00000000..7ad31bd6 --- /dev/null +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_optimism_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('optimism', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_liquidation_revenue.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_liquidation_revenue.sql new file mode 100644 index 00000000..a867b481 --- /dev/null +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_optimism_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('optimism', 'Aave V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_flashloan_fees.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_flashloan_fees.sql new file mode 100644 index 00000000..7d899f38 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_polygon_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('polygon', 'Aave V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_liquidation_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_liquidation_revenue.sql new file mode 100644 index 00000000..de183367 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v2_polygon_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('polygon', 'Aave V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_flashloan_fees.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_flashloan_fees.sql new file mode 100644 index 00000000..4c26e208 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_flashloan_fees.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_polygon_flashloan_fees", + ) +}} + + +{{ flipside_lending_flashloan_fees('polygon', 'Aave V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_liquidation_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_liquidation_revenue.sql new file mode 100644 index 00000000..6bc858d8 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_liquidation_revenue.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="AAVE", + unique_id=["tx_hash", "event_index"], + database="aave", + schema="raw", + alias="fact_v3_polygon_liquidation_revenue", + ) +}} + +{{aave_liquidation_revenue('polygon', 'Aave V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD')}} \ No newline at end of file From c2a9f027775d234b2c4c984590f1ab192a3dbf3a Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 30 Jul 2024 18:19:50 -0400 Subject: [PATCH 091/213] removing spaces for snowflake script compatibility (#342) --- models/projects/maker/prod_raw/fact_maker_pnl.sql | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/models/projects/maker/prod_raw/fact_maker_pnl.sql b/models/projects/maker/prod_raw/fact_maker_pnl.sql index 7272bece..6a001307 100644 --- a/models/projects/maker/prod_raw/fact_maker_pnl.sql +++ b/models/projects/maker/prod_raw/fact_maker_pnl.sql @@ -51,11 +51,11 @@ with -- Maker - Accounting Aggregated v2 select date_trunc('day', date) as date, - SUM(iff(liquidation_income < 1e-4, 0, liquidation_income)) as "Liquidation Income", - SUM(iff(trading_income < 1e-4, 0, trading_income)) as "Trading Fees", - SUM(iff(lending_income < 1e-4, 0, lending_income)) as "Interest Income", - SUM(direct_expenses) as "Direct Expenses", - SUM(operating_expenses) as "Operating Expenses" + SUM(iff(liquidation_income < 1e-4, 0, liquidation_income)) as liquidation_income, + SUM(iff(trading_income < 1e-4, 0, trading_income)) as trading_fees, + SUM(iff(lending_income < 1e-4, 0, lending_income)) as interest_income, + SUM(direct_expenses) as direct_expenses, + SUM(operating_expenses) as operating_expenses from pnl group by 1 order by 1 desc \ No newline at end of file From fd3528e33593112b60de7271bc6b2777a914bb2e Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 30 Jul 2024 18:49:30 -0400 Subject: [PATCH 092/213] Fixed Sui to not count failed transactions in DAU and transaction counts (#343) --- models/projects/sui/core/ez_sui_metrics.sql | 16 +++++++++--- .../core/ez_sui_metrics_by_application.sql | 18 ++++++++++--- .../sui/core/ez_sui_metrics_by_category.sql | 18 ++++++++++--- .../sui/core/ez_sui_metrics_by_contract.sql | 25 +++++++++++++------ 4 files changed, 61 insertions(+), 16 deletions(-) diff --git a/models/projects/sui/core/ez_sui_metrics.sql b/models/projects/sui/core/ez_sui_metrics.sql index d5a86e02..8a86e609 100644 --- a/models/projects/sui/core/ez_sui_metrics.sql +++ b/models/projects/sui/core/ez_sui_metrics.sql @@ -21,15 +21,24 @@ with from min_date group by start_date ), - fundamental_data as ( + dau_txns as ( select raw_date as date, chain, count(*) as txns, - count(distinct sender) as dau, + count(distinct sender) as dau + from {{ ref("ez_sui_transactions") }} + where status = 'success' + group by raw_date, chain + ), + fundamental_data as ( + select + raw_date as date, + chain, sum(tx_fee) as fees_native, sum(gas_usd) as fees, sum(revenue) as revenue, + sum(tx_fee) / count(*) as avg_txn_fee, sum(native_revenue) as revenue_native from {{ ref("ez_sui_transactions") }} group by raw_date, chain @@ -41,7 +50,7 @@ with select fundamental_data.date, fundamental_data.chain, - fees / txns as avg_txn_fee, + avg_txn_fee, txns, dau, wau, @@ -62,6 +71,7 @@ select weekly_developers_core_ecosystem, weekly_developers_sub_ecosystem from fundamental_data +left join dau_txns on fundamental_data.date = dau_txns.date left join price_data on fundamental_data.date = price_data.date left join defillama_data on fundamental_data.date = defillama_data.date left join github_data on fundamental_data.date = github_data.date diff --git a/models/projects/sui/core/ez_sui_metrics_by_application.sql b/models/projects/sui/core/ez_sui_metrics_by_application.sql index 6b6a8933..aae875eb 100644 --- a/models/projects/sui/core/ez_sui_metrics_by_application.sql +++ b/models/projects/sui/core/ez_sui_metrics_by_application.sql @@ -20,6 +20,16 @@ with from min_date group by start_date, app ), + dau_txns as ( + select + raw_date, + app, + count(*) txns, + count(distinct sender) dau + from {{ ref("ez_sui_transactions") }} + where not equal_null(category, 'EOA') and app is not null and status = 'success' + group by raw_date, app + ), agg_data as ( select raw_date, @@ -28,9 +38,7 @@ with max(friendly_name) friendly_name, max(category) category, sum(tx_fee) gas, - sum(gas_usd) gas_usd, - count(*) txns, - count(distinct sender) dau + sum(gas_usd) gas_usd from {{ ref("ez_sui_transactions") }} where not equal_null(category, 'EOA') and app is not null group by raw_date, app @@ -52,6 +60,10 @@ select null as sybil_users, null as non_sybil_users from agg_data +left join + dau_txns + on equal_null(agg_data.app, dau_txns.app) + and agg_data.raw_date = dau_txns.raw_date left join new_users on equal_null(agg_data.app, new_users.app) diff --git a/models/projects/sui/core/ez_sui_metrics_by_category.sql b/models/projects/sui/core/ez_sui_metrics_by_category.sql index 91c39e77..b8e0b155 100644 --- a/models/projects/sui/core/ez_sui_metrics_by_category.sql +++ b/models/projects/sui/core/ez_sui_metrics_by_category.sql @@ -20,6 +20,16 @@ with from min_date group by start_date, category ), + dau_txns as ( + select + raw_date, + category, + count(*) txns, + count(distinct sender) dau + from {{ ref("ez_sui_transactions") }} + where not equal_null(category, 'EOA') and status = 'success' + group by raw_date, category + ), agg_data as ( select raw_date, @@ -27,9 +37,7 @@ with max(chain) as chain, max(friendly_name) friendly_name, sum(tx_fee) gas, - sum(gas_usd) gas_usd, - count(*) txns, - count(distinct sender) dau + sum(gas_usd) gas_usd from {{ ref("ez_sui_transactions") }} where not equal_null(category, 'EOA') group by raw_date, category @@ -50,6 +58,10 @@ select null as sybil_users, null as non_sybil_users from agg_data +left join + dau_txns + on equal_null(agg_data.category, dau_txns.category) + and agg_data.raw_date = dau_txns.raw_date left join new_users on equal_null(agg_data.category, new_users.category) diff --git a/models/projects/sui/core/ez_sui_metrics_by_contract.sql b/models/projects/sui/core/ez_sui_metrics_by_contract.sql index 11169b90..e5b64ef9 100644 --- a/models/projects/sui/core/ez_sui_metrics_by_contract.sql +++ b/models/projects/sui/core/ez_sui_metrics_by_contract.sql @@ -9,6 +9,16 @@ ) }} with + dau_txns as ( + select + package as contract_address, + raw_date as date, + count(*) txns, + count(distinct sender) dau + from {{ ref("ez_sui_transactions") }} + where status = 'success' + group by raw_date, contract_address + ), contract_data as ( select package as contract_address, @@ -19,8 +29,6 @@ with max(friendly_name) as friendly_name, sum(tx_fee) gas, sum(gas_usd) gas_usd, - count(*) txns, - count(distinct sender) dau, max(category) category from {{ ref("ez_sui_transactions") }} where @@ -34,12 +42,15 @@ select contract_data.date, contract_data.contract_address, chain, - name, - app, - friendly_name, - category, + contract_data.name, + contract_data.app, + contract_data.friendly_name, + contract_data.category, gas, gas_usd, txns, dau -from contract_data \ No newline at end of file +from contract_data +join dau_txns + on contract_data.date = dau_txns.date + and contract_data.contract_address = dau_txns.contract_address From ebdcbb4bd6a596f961df8faccdeb70bb528d0dce Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 31 Jul 2024 09:39:08 -0400 Subject: [PATCH 093/213] C911: NEAR (#344) --- macros/p2p/p2p_token_transfers.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/p2p/p2p_token_transfers.sql b/macros/p2p/p2p_token_transfers.sql index 6b5c237e..550b2bee 100644 --- a/macros/p2p/p2p_token_transfers.sql +++ b/macros/p2p/p2p_token_transfers.sql @@ -82,9 +82,9 @@ with fact_token_transfers_id as index, from_address, to_address, - coalesce(amount_raw_precise/pow(10, decimals), 0) as amount, + coalesce(amount_raw_precise/pow(10, t5.decimals), 0) as amount, t1.contract_address as token_address, - coalesce((amount_raw_precise/pow(10, decimals)) * price, 0) as amount_usd + coalesce((amount_raw_precise/pow(10, t5.decimals)) * price, 0) as amount_usd from near_flipside.core.ez_token_transfers t1 inner join distinct_peer_address t2 on lower(to_address) = lower(t2.address) inner join distinct_peer_address t3 on lower(from_address) = lower(t3.address) From f6ffc31d13467f934940428a98c05f085aa7ced7 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 31 Jul 2024 10:35:50 -0400 Subject: [PATCH 094/213] Bitcoin: MAU and WAU (#345) --- macros/rolling_active_addresses.sql | 17 +++++++++++++++++ .../bitcoin/core/ez_bitcoin_metrics.sql | 6 +++++- .../fact_bitcoin_rolling_active_addresses.sql | 8 ++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 models/staging/bitcoin/fact_bitcoin_rolling_active_addresses.sql diff --git a/macros/rolling_active_addresses.sql b/macros/rolling_active_addresses.sql index 6406efc9..d88fd2b9 100644 --- a/macros/rolling_active_addresses.sql +++ b/macros/rolling_active_addresses.sql @@ -107,6 +107,23 @@ sender as from_address from {{ ref("fact_stride_uniq_daily_senders") }} ), + {% elif chain == 'bitcoin' %} + distinct_dates as ( + select + block_timestamp::date as raw_date + from bitcoin_flipside.core.fact_transactions + {% if is_incremental() %} + where raw_date > (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ), + distinct_dates_for_rolling_active_address as ( + select + block_timestamp::date as raw_date + , value:scriptPubKey:address::string as from_address + from bitcoin_flipside.core.fact_transactions, + lateral flatten(input => outputs) + where from_address is not null + ), {% else %} distinct_dates as ( select distinct diff --git a/models/projects/bitcoin/core/ez_bitcoin_metrics.sql b/models/projects/bitcoin/core/ez_bitcoin_metrics.sql index 19372ec3..d81375d3 100644 --- a/models/projects/bitcoin/core/ez_bitcoin_metrics.sql +++ b/models/projects/bitcoin/core/ez_bitcoin_metrics.sql @@ -39,13 +39,16 @@ with price_data as ({{ get_coingecko_metrics("bitcoin") }}), defillama_data as ({{ get_defillama_metrics("bitcoin") }}), github_data as ({{ get_github_metrics("bitcoin") }}), - nft_metrics as ({{ get_nft_metrics("bitcoin") }}) + nft_metrics as ({{ get_nft_metrics("bitcoin") }}), + rolling_metrics as ({{ get_rolling_active_address_metrics("bitcoin") }}) select fundamental_data.date, fundamental_data.chain, txns, dau, + wau, + mau, fees_native, fees, avg_txn_fee, @@ -68,4 +71,5 @@ left join price_data on fundamental_data.date = price_data.date left join defillama_data on fundamental_data.date = defillama_data.date left join github_data on fundamental_data.date = github_data.date left join nft_metrics on fundamental_data.date = nft_metrics.date +left join rolling_metrics on fundamental_data.date = rolling_metrics.date where fundamental_data.date < to_date(sysdate()) diff --git a/models/staging/bitcoin/fact_bitcoin_rolling_active_addresses.sql b/models/staging/bitcoin/fact_bitcoin_rolling_active_addresses.sql new file mode 100644 index 00000000..b0b902c7 --- /dev/null +++ b/models/staging/bitcoin/fact_bitcoin_rolling_active_addresses.sql @@ -0,0 +1,8 @@ +{{ + config( + materialized="incremental", + unique_key=["date"], + ) +}} + +{{ rolling_active_addresses("bitcoin") }} \ No newline at end of file From 27f1d181c9f4f0383ff69b7585160e4f9991be01 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:41:03 -0400 Subject: [PATCH 095/213] Stablecoin V2: Tron and Solana (#346) --- .../address_balances_by_token.sql | 20 +++++++++ .../fact_solana_address_balances_by_token.sql | 42 +++++++++---------- .../fact_solana_stablecoin_balances.sql | 10 +++++ 3 files changed, 50 insertions(+), 22 deletions(-) create mode 100644 models/staging/solana/fact_solana_stablecoin_balances.sql diff --git a/macros/address_balances/address_balances_by_token.sql b/macros/address_balances/address_balances_by_token.sql index 36534e84..9c58ee7b 100644 --- a/macros/address_balances/address_balances_by_token.sql +++ b/macros/address_balances/address_balances_by_token.sql @@ -22,6 +22,26 @@ where block_timestamp > (select max(block_timestamp) from {{ this }}) {% endif %} {% endif %} + {% if chain in ('tron') %} + -- TRON USDT supply for the address below is negative to begin with, this means its first transfer is out + -- not in, the data at the beginning of tron is pretty iffy and the block explorer seems to fail the closer you + -- get to the genesis block. it is only max negative by $10 over its history so I am giving it an inital supply of 10000000/1e6 USDT + -- https://tronscan.org/#/tools/advanced-filter?type=transfer&secondType=20×=1530417600000%2C1556769599999&fromAddress=THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC&toAddress=THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC&token=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&imgUrl=https%3A%2F%2Fstatic.tronscan.org%2Fproduction%2Flogo%2Fusdtlogo.png&tokenName=Tether%20USD&tokenAbbr=USDT&relation=or + union all + select address, contract_address, block_timestamp, flow + from ( + values + ( + 'THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC' + , 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' + , '2019-04-16 07:00:00.000'::timestamp + , 10000000 + ) + ) as t(address, contract_address, block_timestamp, flow) + {% if is_incremental() %} + where block_timestamp > (select max(block_timestamp) from {{ this }}) + {% endif %} + {% endif %} ), credit_debits_and_latest_balances as ( diff --git a/models/staging/solana/fact_solana_address_balances_by_token.sql b/models/staging/solana/fact_solana_address_balances_by_token.sql index 128498d9..76ad3dda 100644 --- a/models/staging/solana/fact_solana_address_balances_by_token.sql +++ b/models/staging/solana/fact_solana_address_balances_by_token.sql @@ -5,48 +5,46 @@ snowflake_warehouse="STABLECOIN_LG", ) }} --- Solana Native Balances +-- Solana Token Balances select tx_id, - value:"pubkey"::string as address, - 'native_token' as contract_address, - post_balances[index]::float / pow(10, 9) as amount, - 9 as decimals, - post_balances[index]::float as amount_unadj, - index, + account_address as address, + mint as contract_address, + balance as amount, + null as decimals, + null as amount_unadj, + fact_token_balances_id as index, block_timestamp -from solana_flipside.core.fact_transactions, lateral flatten(input => account_keys) +from solana_flipside.core.fact_token_balances where succeeded = 'TRUE' - and to_date(block_timestamp) < to_date(sysdate()) - and post_balances[index] <> pre_balances[index] + and block_timestamp::date < to_date(sysdate()) {% if is_incremental() %} and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} +-- Solana Native Balances union all --- Solana Token Balances select tx_id, - value:"owner"::string as address, - value:"mint"::string as contract_address, - value:"uiTokenAmount":"uiAmount"::float as amount, - value:"uiTokenAmount":"decimals" as decimals, - value:"uiTokenAmount":"amount"::float as amount_unadj, - index, + value:"pubkey"::string as address, + 'native_token' as contract_address, + post_balances[index]::float / pow(10, 9) as amount, + 9 as decimals, + post_balances[index]::float as amount_unadj, + index::string as index, block_timestamp -from - solana_flipside.core.fact_transactions, - lateral flatten(input => post_token_balances) +from solana_flipside.core.fact_transactions, lateral flatten(input => account_keys) where succeeded = 'TRUE' and to_date(block_timestamp) < to_date(sysdate()) - and pre_token_balances[index]:"uiTokenAmount":"amount"::float <> amount_unadj + and post_balances[index] <> pre_balances[index] {% if is_incremental() %} and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) {% endif %} + union all -- Solana Token Balances (Staking) select @@ -58,7 +56,7 @@ select post_balance_sol as amount, 9 as decimals, post_balance_sol * pow(10, 9) as amount_unadj, - 0 as index, + '0' as index, block_timestamp from solana_flipside.gov.fact_rewards_staking where diff --git a/models/staging/solana/fact_solana_stablecoin_balances.sql b/models/staging/solana/fact_solana_stablecoin_balances.sql new file mode 100644 index 00000000..ecad5876 --- /dev/null +++ b/models/staging/solana/fact_solana_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("solana")}} \ No newline at end of file From 331d0feac1c8877ce93a023868b3f3a8125662ad Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 31 Jul 2024 19:19:10 -0400 Subject: [PATCH 096/213] C911: Celestia (#347) --- .../celestia/fact_celestia_namespaces_blob_sizes_silver.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql b/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql index 97be7b8e..5525f426 100644 --- a/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql +++ b/models/staging/celestia/fact_celestia_namespaces_blob_sizes_silver.sql @@ -10,9 +10,9 @@ with ), flattened_data as ( select - date(to_timestamp(value:date::number / 1000)) as date, + value:date::date as date, value:"unique_namespaces_count"::integer as unique_namespaces_count, - value:"total_blob_size_mb"::float as total_blob_size_mb + value:"blobsize"::float as total_blob_size_mb from latest_data, lateral flatten(input => data) ) select date, unique_namespaces_count, total_blob_size_mb From 3799b7961756ca34206c78cb6cd81084d2569edd Mon Sep 17 00:00:00 2001 From: 0xnirmal Date: Thu, 1 Aug 2024 12:08:53 -0400 Subject: [PATCH 097/213] add realtime mkt data --- models/common/realtime_market_data.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 models/common/realtime_market_data.sql diff --git a/models/common/realtime_market_data.sql b/models/common/realtime_market_data.sql new file mode 100644 index 00000000..4e6dd462 --- /dev/null +++ b/models/common/realtime_market_data.sql @@ -0,0 +1,13 @@ +{{ + config( + snowflake_warehouse="COMMON", + database="common", + schema="core", + materialized='table' + ) +}} + + +SELECT * +FROM + {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_realtime_data") }} From 734123d5a7fbd4bcc3e89c4402bbf4bc6dc270df Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 2 Aug 2024 15:30:35 -0400 Subject: [PATCH 098/213] Stablecoin V2: Solana and Clustering (#348) --- .../address_balances_by_token.sql | 1 + macros/stablecoins/stablecoin_balances.sql | 6 ++--- macros/stablecoins/stablecoin_metrics.sql | 26 ++++++++++++------- .../agg_daily_stablecoin_breakdown.sql | 2 +- .../agg_daily_stablecoin_breakdown_silver.sql | 1 + ...z_solana_stablecoin_metrics_by_address.sql | 13 ++++++++++ .../fact_solana_stablecoin_metrics_all.sql | 10 +++++++ ...fact_solana_stablecoin_metrics_artemis.sql | 10 +++++++ .../fact_solana_stablecoin_metrics_p2p.sql | 10 +++++++ 9 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 models/projects/solana/core/ez_solana_stablecoin_metrics_by_address.sql create mode 100644 models/staging/solana/fact_solana_stablecoin_metrics_all.sql create mode 100644 models/staging/solana/fact_solana_stablecoin_metrics_artemis.sql create mode 100644 models/staging/solana/fact_solana_stablecoin_metrics_p2p.sql diff --git a/macros/address_balances/address_balances_by_token.sql b/macros/address_balances/address_balances_by_token.sql index 9c58ee7b..cba115fa 100644 --- a/macros/address_balances/address_balances_by_token.sql +++ b/macros/address_balances/address_balances_by_token.sql @@ -26,6 +26,7 @@ -- TRON USDT supply for the address below is negative to begin with, this means its first transfer is out -- not in, the data at the beginning of tron is pretty iffy and the block explorer seems to fail the closer you -- get to the genesis block. it is only max negative by $10 over its history so I am giving it an inital supply of 10000000/1e6 USDT + -- THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC is the contract creator -- https://tronscan.org/#/tools/advanced-filter?type=transfer&secondType=20×=1530417600000%2C1556769599999&fromAddress=THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC&toAddress=THPvaUhoh2Qn2y9THCZML3H815hhFhn5YC&token=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&imgUrl=https%3A%2F%2Fstatic.tronscan.org%2Fproduction%2Flogo%2Fusdtlogo.png&tokenName=Tether%20USD&tokenAbbr=USDT&relation=or union all select address, contract_address, block_timestamp, flow diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 1095ba3f..55e3a98c 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -11,11 +11,11 @@ with stablecoin_balances as ( select block_timestamp - , lower(t1.contract_address) as contract_address + , t1.contract_address , symbol - , lower(address) as address + , address {% if chain in ('solana') %} - , amount_unadj / pow(10, num_decimals) as stablecoin_supply + , amount as stablecoin_supply {% else %} , balance_token / pow(10, num_decimals) as stablecoin_supply {% endif %} diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index d20c1ec6..e479488c 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -12,6 +12,12 @@ when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_bridge_addresses")}}) then 0 else stablecoin_supply end as stablecoin_supply + {% elif chain in ('solana') %} + , case + when + lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_premint_addresses")}}) then 0 + else stablecoin_supply + end as stablecoin_supply {% else %} , stablecoin_supply {% endif %} @@ -93,22 +99,22 @@ ) , chain_stablecoin_metrics as ( select - stablecoin_supply.date - , stablecoin_supply.contract_address - , stablecoin_supply.symbol - , stablecoin_supply.from_address + coalesce(stablecoin_supply.date, all_metrics.date) as date + , coalesce(stablecoin_supply.contract_address, all_metrics.contract_address) as contract_address + , coalesce(stablecoin_supply.symbol, all_metrics.symbol) as symbol + , coalesce(stablecoin_supply.from_address, all_metrics.from_address) as from_address , coalesce(stablecoin_transfer_volume, 0) as stablecoin_transfer_volume , coalesce(stablecoin_daily_txns, 0) as stablecoin_daily_txns , coalesce(artemis_stablecoin_transfer_volume, 0) as artemis_stablecoin_transfer_volume , coalesce(artemis_stablecoin_daily_txns, 0) as artemis_stablecoin_daily_txns , coalesce(p2p_stablecoin_transfer_volume, 0) as p2p_stablecoin_transfer_volume , coalesce(p2p_stablecoin_daily_txns, 0) as p2p_stablecoin_daily_txns - , stablecoin_supply - , stablecoin_supply.unique_id + , coalesce(stablecoin_supply, 0) as stablecoin_supply + , coalesce(stablecoin_supply.unique_id, all_metrics.unique_id) as unique_id from stablecoin_supply - left join all_metrics on stablecoin_supply.unique_id = all_metrics.unique_id - left join artemis_metrics on stablecoin_supply.unique_id = artemis_metrics.unique_id - left join p2p_metrics on stablecoin_supply.unique_id = p2p_metrics.unique_id + full outer join all_metrics on stablecoin_supply.unique_id = all_metrics.unique_id + left join artemis_metrics on coalesce(stablecoin_supply.unique_id, all_metrics.unique_id) = artemis_metrics.unique_id + left join p2p_metrics on coalesce(stablecoin_supply.unique_id, all_metrics.unique_id) = p2p_metrics.unique_id --Filter out rows that don't contribute to metrics where stablecoin_supply.stablecoin_supply != 0 or all_metrics.from_address is not null ) @@ -182,7 +188,7 @@ , p2p_stablecoin_transfer_volume , p2p_stablecoin_daily_txns --issue with float precision - , round(stablecoin_supply, 3) as stablecoin_supply + , round(stablecoin_supply, 2) as stablecoin_supply , '{{ chain }}' as chain , unique_id || '-' || chain as unique_id from tagged_chain_stablecoin_metrics diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql index 0c50c74c..beeb14ac 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table") }} +{{ config(materialized="table", cluster_by=['chain']) }} select date , contract_address diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index 6b2f457e..c288d84c 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -10,6 +10,7 @@ with ref("ez_avalanche_stablecoin_metrics_by_address"), ref("ez_polygon_stablecoin_metrics_by_address"), ref("ez_ethereum_stablecoin_metrics_by_address"), + ref("ez_solana_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/projects/solana/core/ez_solana_stablecoin_metrics_by_address.sql b/models/projects/solana/core/ez_solana_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..41cf6c97 --- /dev/null +++ b/models/projects/solana/core/ez_solana_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="solana", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("solana")}} \ No newline at end of file diff --git a/models/staging/solana/fact_solana_stablecoin_metrics_all.sql b/models/staging/solana/fact_solana_stablecoin_metrics_all.sql new file mode 100644 index 00000000..bf0a9fb5 --- /dev/null +++ b/models/staging/solana/fact_solana_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("solana")}} \ No newline at end of file diff --git a/models/staging/solana/fact_solana_stablecoin_metrics_artemis.sql b/models/staging/solana/fact_solana_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..5776bde7 --- /dev/null +++ b/models/staging/solana/fact_solana_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_artemis("solana")}} \ No newline at end of file diff --git a/models/staging/solana/fact_solana_stablecoin_metrics_p2p.sql b/models/staging/solana/fact_solana_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..0ad4ea88 --- /dev/null +++ b/models/staging/solana/fact_solana_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("solana")}} \ No newline at end of file From 58791577b39a4238f922f023fef9844e7db5aafe Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 4 Aug 2024 13:36:45 -0400 Subject: [PATCH 099/213] Stablecoin V2: Tron (#349) --- .../breakdowns/agg_daily_stablecoin_breakdown_silver.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index c288d84c..acee1c0e 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -11,6 +11,7 @@ with ref("ez_polygon_stablecoin_metrics_by_address"), ref("ez_ethereum_stablecoin_metrics_by_address"), ref("ez_solana_stablecoin_metrics_by_address"), + ref("ez_tron_stablecoin_metrics_by_address"), ] ) }} From 62ddfaefe6918270b4a80756989c2e84d21c14dc Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 10:38:08 -0400 Subject: [PATCH 100/213] Stablecoin V2: BSC and Pricing (#350) --- macros/stablecoins/stablecoin_balances.sql | 4 ++-- macros/stablecoins/stablecoin_metrics_all.sql | 4 ++-- macros/stablecoins/stablecoin_metrics_artemis.sql | 4 ++-- .../staging/bsc/fact_bsc_p2p_stablecoin_transfers.sql | 9 +++++++++ models/staging/bsc/fact_bsc_stablecoin_balances.sql | 10 ++++++++++ models/staging/bsc/fact_bsc_stablecoin_metrics_all.sql | 10 ++++++++++ .../bsc/fact_bsc_stablecoin_metrics_artemis.sql | 10 ++++++++++ models/staging/bsc/fact_bsc_stablecoin_metrics_p2p.sql | 10 ++++++++++ 8 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 models/staging/bsc/fact_bsc_p2p_stablecoin_transfers.sql create mode 100644 models/staging/bsc/fact_bsc_stablecoin_balances.sql create mode 100644 models/staging/bsc/fact_bsc_stablecoin_metrics_all.sql create mode 100644 models/staging/bsc/fact_bsc_stablecoin_metrics_artemis.sql create mode 100644 models/staging/bsc/fact_bsc_stablecoin_metrics_p2p.sql diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 55e3a98c..136cc5a4 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -135,12 +135,12 @@ with , st.symbol , stablecoin_supply as stablecoin_supply_native , stablecoin_supply * coalesce( - d.token_current_price, 1 + d.shifted_token_price_usd, 1 ) as stablecoin_supply from historical_supply_by_address_balances st left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(st.contract_address) = lower(c.contract_address) - left join {{ ref( "fact_coingecko_token_realtime_data") }} d + left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d on lower(c.coingecko_id) = lower(d.token_id) and st.date = d.date::date ) diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index d96f9abe..1da2a55f 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -41,13 +41,13 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.token_current_price, 1 + d.shifted_token_price_usd, 1 ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) - left join {{ ref( "fact_coingecko_token_realtime_data") }} d + left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d on lower(c.coingecko_id) = lower(d.token_id) and stablecoin_metrics.date = d.date::date ) diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 6822f160..af657a37 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -81,13 +81,13 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.token_current_price, 1 + d.shifted_token_price_usd, 1 ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) - left join {{ ref( "fact_coingecko_token_realtime_data") }} d + left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d on lower(c.coingecko_id) = lower(d.token_id) and stablecoin_metrics.date = d.date::date ) diff --git a/models/staging/bsc/fact_bsc_p2p_stablecoin_transfers.sql b/models/staging/bsc/fact_bsc_p2p_stablecoin_transfers.sql new file mode 100644 index 00000000..cb5b3b9f --- /dev/null +++ b/models/staging/bsc/fact_bsc_p2p_stablecoin_transfers.sql @@ -0,0 +1,9 @@ +--depends_on: {{ ref("fact_bsc_stablecoin_transfers") }} +{{ + config( + materialized="incremental", + unique_key=["tx_hash", "index"], + ) +}} + +{{ p2p_stablecoin_transfers("bsc") }} \ No newline at end of file diff --git a/models/staging/bsc/fact_bsc_stablecoin_balances.sql b/models/staging/bsc/fact_bsc_stablecoin_balances.sql new file mode 100644 index 00000000..55c41884 --- /dev/null +++ b/models/staging/bsc/fact_bsc_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("bsc")}} \ No newline at end of file diff --git a/models/staging/bsc/fact_bsc_stablecoin_metrics_all.sql b/models/staging/bsc/fact_bsc_stablecoin_metrics_all.sql new file mode 100644 index 00000000..3fc0de62 --- /dev/null +++ b/models/staging/bsc/fact_bsc_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("bsc")}} \ No newline at end of file diff --git a/models/staging/bsc/fact_bsc_stablecoin_metrics_artemis.sql b/models/staging/bsc/fact_bsc_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..a7f2e795 --- /dev/null +++ b/models/staging/bsc/fact_bsc_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_artemis("bsc")}} \ No newline at end of file diff --git a/models/staging/bsc/fact_bsc_stablecoin_metrics_p2p.sql b/models/staging/bsc/fact_bsc_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..6d656fb8 --- /dev/null +++ b/models/staging/bsc/fact_bsc_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("bsc")}} \ No newline at end of file From 1f64b44ec2eedb615ae3f4b97ed700fd6d50ae8a Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 10:53:17 -0400 Subject: [PATCH 101/213] Adding new Models: AAVE (#351) --- .../aave_deposits_borrows_lender_revenue.sql | 95 +++++++++++++++++++ macros/lending/aave_ecosystem_incentives.sql | 69 ++++++++++++++ .../lending/aave_reserve_factor_revenue.sql | 78 +++++++++++++++ .../aave/__aave__sources.yml | 2 + ...bitrum_deposits_borrows_lender_revenue.sql | 11 +++ ..._aave_v3_arbitrum_ecosystem_incentives.sql | 11 +++ ...ave_v3_arbitrum_reserve_factor_revenue.sql | 11 +++ ...lanche_deposits_borrows_lender_revenue.sql | 11 +++ ...aave_v2_avalanche_ecosystem_incentives.sql | 11 +++ ...ve_v2_avalanche_reserve_factor_revenue.sql | 11 +++ ...lanche_deposits_borrows_lender_revenue.sql | 11 +++ ...aave_v3_avalanche_ecosystem_incentives.sql | 11 +++ ...ve_v3_avalanche_reserve_factor_revenue.sql | 11 +++ ...3_base_deposits_borrows_lender_revenue.sql | 11 +++ ...fact_aave_v3_base_ecosystem_incentives.sql | 11 +++ ...ct_aave_v3_base_reserve_factor_revenue.sql | 11 +++ ...v3_bsc_deposits_borrows_lender_revenue.sql | 11 +++ .../fact_aave_v3_bsc_ecosystem_incentives.sql | 11 +++ ...act_aave_v3_bsc_reserve_factor_revenue.sql | 11 +++ .../fact_aave_dao_balancer_trading_fees.sql | 42 ++++++++ .../fact_aave_dao_safety_incentives.sql | 38 ++++++++ .../fact_aave_gho_treasury_revenue.sql | 41 ++++++++ ...hereum_deposits_borrows_lender_revenue.sql | 11 +++ ..._aave_v2_ethereum_ecosystem_incentives.sql | 11 +++ ...ave_v2_ethereum_reserve_factor_revenue.sql | 11 +++ ...hereum_deposits_borrows_lender_revenue.sql | 11 +++ ..._aave_v3_ethereum_ecosystem_incentives.sql | 11 +++ ...ave_v3_ethereum_reserve_factor_revenue.sql | 11 +++ ...gnosis_deposits_borrows_lender_revenue.sql | 11 +++ ...ct_aave_v3_gnosis_ecosystem_incentives.sql | 11 +++ ..._aave_v3_gnosis_reserve_factor_revenue.sql | 11 +++ ...timism_deposits_borrows_lender_revenue.sql | 11 +++ ..._aave_v3_optimism_ecosystem_incentives.sql | 11 +++ ...ave_v3_optimism_reserve_factor_revenue.sql | 11 +++ ...olygon_deposits_borrows_lender_revenue.sql | 11 +++ ...t_aave_v2_polygon_ecosystem_incentives.sql | 11 +++ ...aave_v2_polygon_reserve_factor_revenue.sql | 11 +++ ...olygon_deposits_borrows_lender_revenue.sql | 11 +++ ...t_aave_v3_polygon_ecosystem_incentives.sql | 11 +++ ...aave_v3_polygon_reserve_factor_revenue.sql | 11 +++ 40 files changed, 728 insertions(+) create mode 100644 macros/lending/aave_deposits_borrows_lender_revenue.sql create mode 100644 macros/lending/aave_ecosystem_incentives.sql create mode 100644 macros/lending/aave_reserve_factor_revenue.sql rename models/{staging => projects}/aave/__aave__sources.yml (87%) create mode 100644 models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/base/fact_aave_v3_base_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/base/fact_aave_v3_base_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/bsc/fact_aave_v3_bsc_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/bsc/fact_aave_v3_bsc_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_dao_balancer_trading_fees.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_gho_treasury_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/optimism/fact_aave_v3_optimism_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/optimism/fact_aave_v3_optimism_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v2_polygon_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v2_polygon_reserve_factor_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v3_polygon_ecosystem_incentives.sql create mode 100644 models/projects/aave/raw/polygon/fact_aave_v3_polygon_reserve_factor_revenue.sql diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..40c341e1 --- /dev/null +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -0,0 +1,95 @@ +{% macro aave_deposits_borrows_lender_revenue(chain, protocol, contract_address, raw_table, healed_raw_table) %} +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + {% if healed_raw_table is defined %} + select * + from landing_database.prod_landing.{{healed_raw_table}} + union all + {% endif %} + select * + from {{ source("PROD_LANDING", raw_table) }} + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ), + map_reduce_json as ( + select t1.* + from flattened_json t1 + left join max_extraction_per_day t2 on t1.date = t2.date + where t1.extraction_date = t2.extraction_date + ) + , average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as first_liquidity_index + , max_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as last_liquidity_index + from {{ chain }}_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{ contract_address }}') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , liquidity_daily_rate as ( + select + date + , reserve + , first_liquidity_index + , last_liquidity_index + , (last_liquidity_index / first_liquidity_index) - 1 as daily_rate + from average_liquidity_rate + ) + , data as ( + select + map_reduce_json.date + , reserve + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply_usd * daily_rate, 0) as revenue + , borrows + , borrows_usd + from map_reduce_json + left join liquidity_daily_rate + on map_reduce_json.date = liquidity_daily_rate.date + and lower(map_reduce_json.underlying_token) = lower(liquidity_daily_rate.reserve) + order by date + ) +select + date + , underlying_token as token_address + , '{{ chain }}' as chain + , '{{ protocol }}' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(revenue) as revenue +from data +group by 1, 2 +{% endmacro %} \ No newline at end of file diff --git a/macros/lending/aave_ecosystem_incentives.sql b/macros/lending/aave_ecosystem_incentives.sql new file mode 100644 index 00000000..10bee474 --- /dev/null +++ b/macros/lending/aave_ecosystem_incentives.sql @@ -0,0 +1,69 @@ +{% macro aave_v3_ecosystem_incentives(chain, contract_address, protocol) %} +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from {{chain}}_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{contract_address}}') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join {{chain}}_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , '{{chain}}' as chain + , '{{protocol}}' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 +{% endmacro %} + +{% macro aave_v2_ecosystem_incentives(chain, contract_address, protocol) %} +with +event_logs as ( + select + block_timestamp + , case + when '{{chain}}' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when '{{chain}}' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{contract_address}}') + and event_name = 'RewardsClaimed' +) +, prices as ({{get_coingecko_price_with_latest('aave')}}) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , '{{chain}}' as chain + , '{{protocol}}' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 +{% endmacro %} \ No newline at end of file diff --git a/macros/lending/aave_reserve_factor_revenue.sql b/macros/lending/aave_reserve_factor_revenue.sql new file mode 100644 index 00000000..a2d8c60f --- /dev/null +++ b/macros/lending/aave_reserve_factor_revenue.sql @@ -0,0 +1,78 @@ +{% macro aave_v3_reserve_factor_revenue(chain, contract_address, protocol) %} +with +revenue_events as ( + select + block_timestamp + , decoded_log:reserve::string as token_address + , decoded_log:amountMinted::float as amount + from {{chain}}_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{contract_address}}') + and event_name = 'MintedToTreasury' + and block_timestamp >= '2024-06-08' + and block_timestamp < '2024-07-28' +) +, revenue_events_usd as ( + select + block_timestamp::date as date + , revenue_events.token_address + , (amount / pow(10, decimals)) as amount_nominal + , amount_nominal * price as amount_usd + from revenue_events + left join {{chain}}_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(revenue_events.token_address) = lower(p.token_address) +) + +select + date + , token_address + , sum(coalesce(amount_nominal, 0)) as reserve_factor_revenue_nominal + , sum(coalesce(amount_usd, 0)) as reserve_factor_revenue_usd +from revenue_events_usd +where date < to_date(sysdate()) +group by 1, 2 +{% endmacro %} + + +{% macro aave_v2_reserve_factor_revenue(chain, contract_address, protocol) %} +with + dim_streams as ( + select distinct + decoded_log:streamId::number as stream_id + , decoded_log:tokenAddress::string as token_address + from {{chain}}_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{contract_address}}') + and event_name = 'CreateStream' + ) + , withdraw_from_stream_events as ( + select + block_timestamp + , decoded_log:streamId::number as stream_id + , decoded_log:amount::float as amount + from {{chain}}_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{contract_address}}') + and event_name = 'WithdrawFromStream' + ) + , protocol_revenue as ( + select + withdraw_from_stream_events.block_timestamp + , dim_streams.token_address + , coalesce(amount / pow(10, decimals), 0) as amount_nominal + , coalesce(amount_nominal * price, 0) as amount_usd + from withdraw_from_stream_events + left join dim_streams on dim_streams.stream_id = withdraw_from_stream_events.stream_id + left join {{chain}}_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(dim_streams.token_address) = lower(p.token_address) + ) +select + block_timestamp::date as date + , '{{chain}}' as chain + , '{{protocol}}' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as reserve_factor_revenue_nominal + , sum(coalesce(amount_usd, 0)) as reserve_factor_revenue_usd +from protocol_revenue +where date < to_date(sysdate()) +group by 1, 4 +{% endmacro %} diff --git a/models/staging/aave/__aave__sources.yml b/models/projects/aave/__aave__sources.yml similarity index 87% rename from models/staging/aave/__aave__sources.yml rename to models/projects/aave/__aave__sources.yml index dec4f893..e2efb2ca 100644 --- a/models/staging/aave/__aave__sources.yml +++ b/models/projects/aave/__aave__sources.yml @@ -15,3 +15,5 @@ sources: - name: raw_aave_v3_harmony_borrows_deposits_revenue - name: raw_aave_v3_metis_borrows_deposits_revenue - name: raw_aave_v3_base_borrows_deposits_revenue + - name: raw_aave_v3_gnosis_borrows_deposits_revenue + - name: raw_aave_v3_bsc_borrows_deposits_revenue diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..686a539a --- /dev/null +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_arbitrum_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('arbitrum', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_arbitrum_borrows_deposits_revenue', 'raw_aave_v3_lending_arbitrum')}} \ No newline at end of file diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_ecosystem_incentives.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_ecosystem_incentives.sql new file mode 100644 index 00000000..34558380 --- /dev/null +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_arbitrum_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('arbitrum', '0x929EC64c34a17401F460460D4B9390518E5B473e', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_reserve_factor_revenue.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_reserve_factor_revenue.sql new file mode 100644 index 00000000..a4566d23 --- /dev/null +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_arbitrum_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('arbitrum', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..c78c4624 --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_avalanche_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C', 'raw_aave_v2_avalanche_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_ecosystem_incentives.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_ecosystem_incentives.sql new file mode 100644 index 00000000..f0b5d614 --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_avalanche_ecosystem_incentives", + ) +}} + +{{ aave_v2_ecosystem_incentives('avalanche', '0x01D83Fe6A10D2f2B7AF17034343746188272cAc9', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_reserve_factor_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_reserve_factor_revenue.sql new file mode 100644 index 00000000..617bd07b --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_avalanche_reserve_factor_revenue", + ) +}} + +{{ aave_v2_reserve_factor_revenue('avalanche', '0x467b92aF281d14cB6809913AD016a607b5ba8A36', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..a32380f2 --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_avalanche_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_avalanche_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_ecosystem_incentives.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_ecosystem_incentives.sql new file mode 100644 index 00000000..d81554b0 --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_avalanche_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('avalanche', '0x929EC64c34a17401F460460D4B9390518E5B473e', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_reserve_factor_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_reserve_factor_revenue.sql new file mode 100644 index 00000000..bdab942f --- /dev/null +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_avalanche_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('avalanche', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..6ec8ddab --- /dev/null +++ b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_base_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('base', 'AAVE V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', 'raw_aave_v3_base_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_ecosystem_incentives.sql b/models/projects/aave/raw/base/fact_aave_v3_base_ecosystem_incentives.sql new file mode 100644 index 00000000..5c135a7a --- /dev/null +++ b/models/projects/aave/raw/base/fact_aave_v3_base_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_base_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('base', '0xf9cc4F0D883F1a1eb2c253bdb46c254Ca51E1F44', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_reserve_factor_revenue.sql b/models/projects/aave/raw/base/fact_aave_v3_base_reserve_factor_revenue.sql new file mode 100644 index 00000000..384b7175 --- /dev/null +++ b/models/projects/aave/raw/base/fact_aave_v3_base_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_base_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('base', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..f650acd0 --- /dev/null +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_bsc_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('bsc', 'AAVE V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', 'raw_aave_v3_bsc_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_ecosystem_incentives.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_ecosystem_incentives.sql new file mode 100644 index 00000000..d6df4efb --- /dev/null +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_bsc_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('bsc', '0xC206C2764A9dBF27d599613b8F9A63ACd1160ab4', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_reserve_factor_revenue.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_reserve_factor_revenue.sql new file mode 100644 index 00000000..28dc9b89 --- /dev/null +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_bsc_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('bsc', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_dao_balancer_trading_fees.sql b/models/projects/aave/raw/ethereum/fact_aave_dao_balancer_trading_fees.sql new file mode 100644 index 00000000..97d1d567 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_dao_balancer_trading_fees.sql @@ -0,0 +1,42 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_dao_balancer_trading_fees", + ) +}} + +with +swaps as ( + select + block_timestamp + , decoded_log:tokenIn::string as token_address + , decoded_log:tokenAmountIn::float * 0.001 as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC697051d1C6296C24aE3bceF39acA743861D9A81') + and event_name = 'LOG_SWAP' +) +, swap_revenue as ( + select + block_timestamp::date as date + , swaps.token_address + , coalesce(amount / pow(10, decimals), 0) as amount_nominal + , coalesce(amount_nominal * price, 0) as amount_usd + from swaps + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(swaps.token_address) = lower(p.token_address) +) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as trading_fees_nominal + , sum(coalesce(amount_usd, 0)) as trading_fees_usd +from swap_revenue +where date < to_date(sysdate()) +group by 1, 2 +order by 1 desc \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql b/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql new file mode 100644 index 00000000..0a7d2f45 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_dao_safety_incentives", + ) +}} + +with + logs as ( + select + block_timestamp + , decoded_log:amount::float / 1E18 as amount_nominal + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4da27a545c0c5B758a6BA100e3a049001de870f5') + and event_name = 'RewardsClaimed' + ) + , prices as ({{get_coingecko_price_with_latest('aave')}}) + , priced_logs as ( + select + block_timestamp::date as date + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , amount_nominal + , amount_nominal * price as amount_usd + from logs + left join price on block_timestamp::date = date + ) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 2 \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_gho_treasury_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_gho_treasury_revenue.sql new file mode 100644 index 00000000..f3a1d6b2 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_gho_treasury_revenue.sql @@ -0,0 +1,41 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_gho_treasury_revenue", + ) +}} + +with +event_logs as ( + select + block_timestamp + , '0x' || substr(topics[2]::string, 27, 40) as asset + , pc_dbt_db.prod.hex_to_int(data) as amount + from ethereum_flipside.core.fact_event_logs + where contract_address = lower('0x00907f9921424583e7ffBfEdf84F92B7B2Be4977') + and topics[0]::string = '0xb29fcda740927812f5a71075b62e132bead3769a455319c29b9a1cc461a65475' +) +, priced_logs as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'AAVE GHO' as protocol + , 'ethereum' as chain + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 4 +order by 1 desc \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..280b7b40 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_ethereum_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', 'raw_aave_v2_ethereum_borrows_deposits_revenue', 'raw_aave_v2_lending_ethereum')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_ecosystem_incentives.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_ecosystem_incentives.sql new file mode 100644 index 00000000..4d8c45ad --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_ethereum_ecosystem_incentives", + ) +}} + +{{ aave_v2_ecosystem_incentives('ethereum', '0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_reserve_factor_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_reserve_factor_revenue.sql new file mode 100644 index 00000000..36407cf1 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_ethereum_reserve_factor_revenue", + ) +}} + +{{ aave_v2_reserve_factor_revenue('ethereum', '0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..7841549c --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_ethereum_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', 'raw_aave_v3_ethereum_borrows_deposits_revenue', 'raw_aave_v3_lending_ethereum')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_ecosystem_incentives.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_ecosystem_incentives.sql new file mode 100644 index 00000000..af9c1c26 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_ethereum_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('ethereum', '0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_reserve_factor_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_reserve_factor_revenue.sql new file mode 100644 index 00000000..0d372cf6 --- /dev/null +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_ethereum_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('ethereum', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..434abc4f --- /dev/null +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_gnosis_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_ethereum_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_ecosystem_incentives.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_ecosystem_incentives.sql new file mode 100644 index 00000000..7b2e6fa5 --- /dev/null +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_gnosis_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('gnosis', '0xaD4F91D26254B6B0C6346b390dDA2991FDE2F20d', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_reserve_factor_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_reserve_factor_revenue.sql new file mode 100644 index 00000000..3f471357 --- /dev/null +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_gnosis_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('gnosis', '0xb50201558B00496A145fE76f7424749556E326D8', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..0d3ea5bd --- /dev/null +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_optimism_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('optimism', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_optimism_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_ecosystem_incentives.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_ecosystem_incentives.sql new file mode 100644 index 00000000..684da678 --- /dev/null +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_optimism_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('optimism', '0x929EC64c34a17401F460460D4B9390518E5B473e', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_reserve_factor_revenue.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_reserve_factor_revenue.sql new file mode 100644 index 00000000..4931d1b2 --- /dev/null +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_optimism_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('optimism', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..855ff964 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_polygon_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', 'raw_aave_v2_polygon_borrows_deposits_revenue', 'raw_aave_v2_lending_polygon')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_ecosystem_incentives.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_ecosystem_incentives.sql new file mode 100644 index 00000000..19e805c8 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_polygon_ecosystem_incentives", + ) +}} + +{{ aave_v2_ecosystem_incentives('polygon', '0x357D51124f59836DeD84c8a1730D72B749d8BC23', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_reserve_factor_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_reserve_factor_revenue.sql new file mode 100644 index 00000000..8b7a8394 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_poylgon_reserve_factor_revenue", + ) +}} + +{{ aave_v2_reserve_factor_revenue('polygon', '0xe8599F3cc5D38a9aD6F3684cd5CEa72f10Dbc383', 'AAVE V2')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql new file mode 100644 index 00000000..66aa7376 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_polygon_deposits_borrows_lender_revenue", + ) +}} + +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_polygon_borrows_deposits_revenue', 'raw_aave_v3_lending_polygon')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_ecosystem_incentives.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_ecosystem_incentives.sql new file mode 100644 index 00000000..aa1b4d0d --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_ecosystem_incentives.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_polygon_ecosystem_incentives", + ) +}} + +{{ aave_v3_ecosystem_incentives('polygon', '0x929EC64c34a17401F460460D4B9390518E5B473e', 'AAVE V3')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_reserve_factor_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_reserve_factor_revenue.sql new file mode 100644 index 00000000..9f70a283 --- /dev/null +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_reserve_factor_revenue.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v3_polygon_reserve_factor_revenue", + ) +}} + +{{ aave_v3_reserve_factor_revenue('polygon', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'AAVE V3')}} \ No newline at end of file From e5c8e628788084be5d38af87046325afff184949 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:15:32 -0400 Subject: [PATCH 102/213] Stablecoin V2: Fixing Macros (#352) --- macros/stablecoins/stablecoin_balances.sql | 2 +- macros/stablecoins/stablecoin_metrics_all.sql | 2 +- macros/stablecoins/stablecoin_metrics_artemis.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 136cc5a4..75337fc8 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -141,7 +141,7 @@ with left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(st.contract_address) = lower(c.contract_address) left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d - on lower(c.coingecko_id) = lower(d.token_id) + on lower(c.coingecko_id) = lower(d.coingecko_id) and st.date = d.date::date ) select diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index 1da2a55f..8d1a1488 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -48,7 +48,7 @@ with left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d - on lower(c.coingecko_id) = lower(d.token_id) + on lower(c.coingecko_id) = lower(d.coingecko_id) and stablecoin_metrics.date = d.date::date ) select diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index af657a37..54a10f76 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -88,7 +88,7 @@ with left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(stablecoin_metrics.contract_address) = lower(c.contract_address) left join {{ ref( "fact_coingecko_token_date_adjusted_gold") }} d - on lower(c.coingecko_id) = lower(d.token_id) + on lower(c.coingecko_id) = lower(d.coingecko_id) and stablecoin_metrics.date = d.date::date ) select From 8b43456190b00fd6406a0cd628c62dbefbd7c7f3 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 11:29:12 -0400 Subject: [PATCH 103/213] AAVE Fix Safety Incentives (#353) --- .../aave/raw/ethereum/fact_aave_dao_safety_incentives.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql b/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql index 0a7d2f45..b9fb3f8e 100644 --- a/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql +++ b/models/projects/aave/raw/ethereum/fact_aave_dao_safety_incentives.sql @@ -25,7 +25,7 @@ with , amount_nominal , amount_nominal * price as amount_usd from logs - left join price on block_timestamp::date = date + left join prices on block_timestamp::date = date ) select date From b4a91db80874ed0239306832789a24124f072a90 Mon Sep 17 00:00:00 2001 From: alexwes Date: Mon, 5 Aug 2024 18:27:20 -0400 Subject: [PATCH 104/213] fixing Maker DQ issue (treasury data not forward filled) (#355) --- .../prod_raw/fact_treasury_lp_balances.sql | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql index d46ba266..2144cbec 100644 --- a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -9,7 +9,14 @@ }} -with treasury_balance as ( +with +dates as ( + SELECT + DISTINCT date(hour) as date + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' +) +, treasury_balance as ( select date(block_timestamp) as date, MAX(balance)::number / 1e18 as treasury_lp_balance @@ -20,8 +27,8 @@ with treasury_balance as ( and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') GROUP BY 1 -), -value_per_token as ( +) +, value_per_token as ( SELECT s.date, v.amount_usd / s.circulating_supply as value_per_token, @@ -32,12 +39,29 @@ value_per_token as ( where value_per_token is not null ) +, filled_data as ( + SELECT + d.date, + LAST_VALUE(t.treasury_lp_balance IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as amount_native, + LAST_VALUE(v.value_per_token IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as value_per_token + FROM + dates d + LEFT JOIN treasury_balance t ON d.date = t.date + LEFT JOIN value_per_token v ON d.date = v.date +) SELECT - t.date, - t.treasury_lp_balance as amount_native, - v.value_per_token, - t.treasury_lp_balance * v.value_per_token as amount_usd, + date, + amount_native, + value_per_token, + amount_native * value_per_token as amount_usd, 'UNI V2: DAI-MKR' as token FROM - treasury_balance t - LEFT JOIN value_per_token v on v.date = t.date \ No newline at end of file + filled_data +ORDER BY + date \ No newline at end of file From 9815805df4d3aadccd6ac919460ea7ee1b6021a3 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 19:16:46 -0400 Subject: [PATCH 105/213] Fixing Art Share Coingecko Lineage (#354) --- models/common/__common__sources.yml | 8 -------- models/common/daily_market_data.sql | 6 +++--- models/common/ez_stablecoin_metrics.sql | 3 ++- models/common/realtime_market_data.sql | 4 ++-- 4 files changed, 7 insertions(+), 14 deletions(-) delete mode 100644 models/common/__common__sources.yml diff --git a/models/common/__common__sources.yml b/models/common/__common__sources.yml deleted file mode 100644 index a6074d97..00000000 --- a/models/common/__common__sources.yml +++ /dev/null @@ -1,8 +0,0 @@ -sources: - - name: PC_DBT_DB_UPSTREAM - schema: prod - database: pc_dbt_db - tables: - - name: fact_coingecko_token_date_adjusted_gold - - name: agg_daily_stablecoin_metrics - - name: fact_coingecko_token_realtime_data diff --git a/models/common/daily_market_data.sql b/models/common/daily_market_data.sql index 02f65fbc..4da40de1 100644 --- a/models/common/daily_market_data.sql +++ b/models/common/daily_market_data.sql @@ -1,3 +1,4 @@ + {{ config( snowflake_warehouse="COMMON", @@ -25,7 +26,7 @@ SELECT , t2.token_atl_date AS atl_date , t2.fdv_supply * shifted_token_price_usd AS fdmc FROM - {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_date_adjusted_gold") }} + {{ref("fact_coingecko_token_date_adjusted_gold")}} AS t1 INNER JOIN ( SELECT @@ -40,6 +41,5 @@ INNER JOIN ( , token_atl_change_percentage , token_atl_date , coalesce(token_max_supply, token_total_supply) AS fdv_supply - FROM - {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_realtime_data") }} + FROM {{ref("fact_coingecko_token_realtime_data")}} ) AS t2 ON t1.coingecko_id = t2.token_id diff --git a/models/common/ez_stablecoin_metrics.sql b/models/common/ez_stablecoin_metrics.sql index 4f7a4ee9..880e050c 100644 --- a/models/common/ez_stablecoin_metrics.sql +++ b/models/common/ez_stablecoin_metrics.sql @@ -1,3 +1,4 @@ + {{ config( snowflake_warehouse="COMMON", @@ -16,4 +17,4 @@ SELECT , chain , symbol , contract_address -FROM {{ source("PC_DBT_DB_UPSTREAM", "agg_daily_stablecoin_metrics") }} +FROM {{ref("agg_daily_stablecoin_metrics")}} diff --git a/models/common/realtime_market_data.sql b/models/common/realtime_market_data.sql index 4e6dd462..3b7765de 100644 --- a/models/common/realtime_market_data.sql +++ b/models/common/realtime_market_data.sql @@ -1,3 +1,4 @@ + {{ config( snowflake_warehouse="COMMON", @@ -9,5 +10,4 @@ SELECT * -FROM - {{ source("PC_DBT_DB_UPSTREAM", "fact_coingecko_token_realtime_data") }} +FROM {{ref("fact_coingecko_token_realtime_data")}} From c58bfb8624726f1695c5b6e1d6a5d64d9e6267f7 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 20:23:12 -0400 Subject: [PATCH 106/213] C911 Fixing maker (#357) --- .../maker/prod_raw/fact_treasury_lp_balances.sql | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql index 2144cbec..896886e6 100644 --- a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -27,8 +27,8 @@ dates as ( and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') GROUP BY 1 -) -, value_per_token as ( +), +value_per_token_cte as ( SELECT s.date, v.amount_usd / s.circulating_supply as value_per_token, @@ -62,6 +62,5 @@ SELECT amount_native * value_per_token as amount_usd, 'UNI V2: DAI-MKR' as token FROM - filled_data -ORDER BY - date \ No newline at end of file + treasury_balance t + LEFT JOIN value_per_token_cte v on v.date = t.date From 7e01ca0c43f9d38738a5a7ed81d6cafc62efa70d Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 5 Aug 2024 21:56:49 -0400 Subject: [PATCH 107/213] C911: Pushing maker fix (#359) --- models/projects/maker/prod_raw/fact_treasury_lp_balances.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql index 896886e6..2866662a 100644 --- a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -53,7 +53,7 @@ value_per_token_cte as ( FROM dates d LEFT JOIN treasury_balance t ON d.date = t.date - LEFT JOIN value_per_token v ON d.date = v.date + LEFT JOIN value_per_token_cte v ON d.date = v.date ) SELECT date, @@ -63,4 +63,3 @@ SELECT 'UNI V2: DAI-MKR' as token FROM treasury_balance t - LEFT JOIN value_per_token_cte v on v.date = t.date From c2edc24d4a51974717b3a3f97739a082147e3be4 Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 6 Aug 2024 13:19:24 -0400 Subject: [PATCH 108/213] mkr quick fix + removing some nulls (#360) --- models/projects/maker/prod_raw/fact_treasury_lp_balances.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql index 2866662a..68e199fb 100644 --- a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -62,4 +62,7 @@ SELECT amount_native * value_per_token as amount_usd, 'UNI V2: DAI-MKR' as token FROM - treasury_balance t + filled_data +WHERE amount_native is not null +ORDER BY + date From 03b06b3c7bae4fdac9367f4d82eb76e3b28ee0b2 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 6 Aug 2024 13:25:46 -0400 Subject: [PATCH 109/213] Added Data sets for KaiChing (#356) --- databases.csv | 1 + macros/create_ez_transactions.sql | 16 ++-- .../metrics/get_bam_data_for_application.sql | 42 ++++++++ .../get_fundamental_data_for_chain.sql | 10 +- ..._rolling_active_address_metrics_by_app.sql | 95 +++++++++++++++++++ .../get_cohort_retention_for_application.sql | 80 ++++++++++++++++ .../kaiching/core/ez_kaiching_metrics.sql | 28 ++++++ .../core/ez_kaiching_retention_metrics.sql | 12 +++ models/projects/near/core/ez_near_metrics.sql | 1 - .../staging/near/fact_near_transactions.sql | 8 +- 10 files changed, 271 insertions(+), 22 deletions(-) create mode 100644 macros/metrics/get_bam_data_for_application.sql create mode 100644 macros/metrics/get_rolling_active_address_metrics_by_app.sql create mode 100644 macros/retention/get_cohort_retention_for_application.sql create mode 100644 models/projects/kaiching/core/ez_kaiching_metrics.sql create mode 100644 models/projects/kaiching/core/ez_kaiching_retention_metrics.sql diff --git a/databases.csv b/databases.csv index efc7f1ca..45c87857 100644 --- a/databases.csv +++ b/databases.csv @@ -44,6 +44,7 @@ IMMUTABLE_X INTERNET_COMPUTER INJECTIVE JUPITER +KAICHING KELP_DAO LANDING_DATABASE MAKER diff --git a/macros/create_ez_transactions.sql b/macros/create_ez_transactions.sql index 3eaa877b..1b9d8d37 100644 --- a/macros/create_ez_transactions.sql +++ b/macros/create_ez_transactions.sql @@ -17,18 +17,18 @@ friendly_name, sub_category, category, - {% if (chain not in ("tron", "starknet")) %} user_type - {% else %} null as user_type + {% if chain in ("near") %} + tx_succeeded, {% endif %} - {% if (chain in ('near')) %} , from_address_adjusted + {% if (chain not in ("tron", "starknet")) %} user_type, + {% else %} null as user_type, {% endif %} {% if (chain not in ("near", "starknet")) %} - , balance_usd, native_token_balance, stablecoin_balance + balance_usd, native_token_balance, stablecoin_balance, {% else %} - , null as balance_usd, null as native_token_balance, - null as stablecoin_balance + null as stablecoin_balance, {% endif %} {% if chain in ( "arbitrum", @@ -38,8 +38,8 @@ "ethereum", "optimism", "polygon", - ) %}, probability, engagement_type - {% else %}, null as probability, null as engagement_type + ) %}probability, engagement_type + {% else %}null as probability, null as engagement_type {% endif %} from pc_dbt_db.prod.fact_{{ chain }}_transactions where diff --git a/macros/metrics/get_bam_data_for_application.sql b/macros/metrics/get_bam_data_for_application.sql new file mode 100644 index 00000000..6e5bc74c --- /dev/null +++ b/macros/metrics/get_bam_data_for_application.sql @@ -0,0 +1,42 @@ +{% macro get_bam_data_for_application(app, chains) %} +with + fundamental_data_by_chain as ( + SELECT + chain, + date, + app, + friendly_name, + txns, + gas, + gas_usd, + daa, + new_users, + returning_users + FROM {{ref("fact_daily_bam_datahub")}} + WHERE app = '{{app}}' + and chain in ( + {% for chain in chains %} + '{{chain}}' {% if not loop.last %},{% endif %} + {% endfor %} + ) + {% if is_incremental() %} + and date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} + ) +SELECT + date, + app, + friendly_name, + sum(gas) as gas, + sum(gas_usd) as gas_usd, + sum(txns) as txns, + sum(daa) as daa, + sum(new_users) as new_users, + sum(returning_users) as returning_users +FROM + fundamental_data_by_chain +GROUP BY + date, + app, + friendly_name +{% endmacro %} diff --git a/macros/metrics/get_fundamental_data_for_chain.sql b/macros/metrics/get_fundamental_data_for_chain.sql index c59394d5..5651f3c4 100644 --- a/macros/metrics/get_fundamental_data_for_chain.sql +++ b/macros/metrics/get_fundamental_data_for_chain.sql @@ -45,12 +45,7 @@ sum(gas_usd) fees, count(*) txns, sum(gas_usd) / count(*) as avg_txn_fee, - {% if chain in ("near") %} - count(distinct from_address) dau, - count(distinct from_address_adjusted) as adjusted_dau - {% else %} - count(distinct from_address) dau - {% endif %} + count(distinct from_address) dau from {{ chain }}.prod_raw.ez_transactions as t group by t.raw_date ) @@ -70,9 +65,6 @@ chain, txns, dau, - {% if chain in ("near") %} - adjusted_dau, - {% endif %} fees_native, fees, avg_txn_fee, diff --git a/macros/metrics/get_rolling_active_address_metrics_by_app.sql b/macros/metrics/get_rolling_active_address_metrics_by_app.sql new file mode 100644 index 00000000..dde20615 --- /dev/null +++ b/macros/metrics/get_rolling_active_address_metrics_by_app.sql @@ -0,0 +1,95 @@ +{% macro get_rolling_active_address_metrics_by_app (app, chain) %} + with + {% if chain == 'solana' %} + distinct_dates as ( + select distinct + raw_date + from {{ ref("ez_" ~ chain ~ "_transactions") }} + {% if is_incremental() %} + and raw_date > (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ), + distinct_dates_for_rolling_active_address as ( + select distinct + raw_date, + value as from_address + from {{ ref("ez_" ~ chain ~ "_transactions") }}, lateral flatten(input => signers) + where succeeded = 'TRUE' and app = '{{ app }}' + ), + {% elif chain == 'sui' %} + distinct_dates as ( + select distinct + raw_date + from {{ ref("ez_" ~ chain ~ "_transactions") }} + {% if is_incremental() %} + where raw_date > (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ), + distinct_dates_for_rolling_active_address as ( + select distinct + raw_date, + sender as from_address + from {{ ref("ez_" ~ chain ~ "_transactions") }} + WHERE status = 'success' and app = '{{ app }}' + ), + {% elif chain == 'near' %} + distinct_dates as ( + select distinct + raw_date + from {{ ref("ez_" ~ chain ~ "_transactions") }} + {% if is_incremental() %} + where raw_date > (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ), + distinct_dates_for_rolling_active_address as ( + select distinct + raw_date, + from_address + from {{ ref("ez_" ~ chain ~ "_transactions") }} + WHERE app = '{{ app }}' and tx_succeeded = TRUE + ), + {% else %} + distinct_dates as ( + select distinct + raw_date + from {{ ref("ez_" ~ chain ~ "_transactions") }} + {% if is_incremental() %} + where raw_date > (select dateadd('day', -1, max(date)) from {{ this }}) + {% endif %} + ), + distinct_dates_for_rolling_active_address as ( + select distinct + raw_date, + from_address + from {{ ref("ez_" ~ chain ~ "_transactions") }} + where app = '{{ app }}' + ), + {% endif %} + + + rolling_mau as ( + select + t1.raw_date, + count(distinct t2.from_address) as mau + from distinct_dates t1 + join distinct_dates_for_rolling_active_address t2 on t2.raw_date between dateadd(DAY, -29, t1.raw_date) and t1.raw_date + group by t1.raw_date + ), + rolling_wau as ( + select + t1.raw_date, + count(distinct t2.from_address) as wau + from distinct_dates t1 + join distinct_dates_for_rolling_active_address t2 on t2.raw_date between dateadd(DAY, -6, t1.raw_date) and t1.raw_date + group by t1.raw_date + ) +select + rolling_mau.raw_date as date, + '{{ app }}' as app, + mau, + wau +from rolling_mau +left join rolling_wau using(raw_date) +where rolling_mau.raw_date < to_date(sysdate()) +order by date +{% endmacro %} diff --git a/macros/retention/get_cohort_retention_for_application.sql b/macros/retention/get_cohort_retention_for_application.sql new file mode 100644 index 00000000..6e7d5e7e --- /dev/null +++ b/macros/retention/get_cohort_retention_for_application.sql @@ -0,0 +1,80 @@ +{% macro get_cohort_retention_for_application(app, chain) %} + with +min_date as ( + select + date_trunc('month', min(raw_date)) as first_month + from {{ ref( "ez_" ~ chain ~ "_transactions") }} + where app = '{{ app }}' +), +base_table as( + select + date_trunc('month', raw_date) as base_month, + from_address as address + from {{ ref( "ez_" ~ chain ~ "_transactions") }} + where app = '{{ app }}' + group by 1,2 +), +-- from user_cohorts onward, should be able to reuse ctes on any chain + +-- grab each users first action timestamp on chain +user_cohorts as ( + select + address, + min(base_month) as cohort_month + from + base_table + group by 1 +), + +--compute cohort size per distinct cohort period +cohort_size as ( + select + cohort_month, + count(distinct(address)) as cohort_size + from + user_cohorts + group by 1 +), + +-- determine if/ when users came back for another interaction based on period number +following_months as ( + select + bt.address, + timestampdiff(month, uc.cohort_month, bt.base_month) as month_number + from + base_table as bt + inner join user_cohorts as uc on bt.address = uc.address + where + bt.base_month > uc.cohort_month + group by + bt.address, + month_number +), +--aggregate and calcualte the retained user amount per time period per cohort +retention_data as( + select + uc.cohort_month as cohort_month, + fm.month_number, + count(distinct(fm.address)) as retained_user_count + from + following_months as fm + inner join user_cohorts as uc on fm.address = uc.address + where + cohort_month >= (select first_month from min_date) -- Grab data from the beginning of the month 24 months ago + group by + uc.cohort_month, + fm.month_number +) +select + '{{ app }}' as app, + r.cohort_month, + c.cohort_size, + r.month_number, + round(r.retained_user_count::numeric / c.cohort_size::numeric , 2) as retention_ratio +from + retention_data as r + inner join cohort_size as c on r.cohort_month = c.cohort_month +order by + r.cohort_month, + r.month_number +{% endmacro %} diff --git a/models/projects/kaiching/core/ez_kaiching_metrics.sql b/models/projects/kaiching/core/ez_kaiching_metrics.sql new file mode 100644 index 00000000..6b5bfe06 --- /dev/null +++ b/models/projects/kaiching/core/ez_kaiching_metrics.sql @@ -0,0 +1,28 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="KAICHING", + database="KAICHING", + schema="core", + alias="ez_metrics", + unique_key="date" + ) +}} + +with + fundamental_data as ({{get_bam_data_for_application("kaiching", ["near"])}}), + rolling_wau_mau as ({{get_rolling_active_address_metrics_by_app("kaiching", "near")}}) +SELECT + fd.date, + fd.app, + fd.friendly_name, + fd.gas_usd, + fd.txns, + fd.daa, + fd.new_users, + fd.returning_users, + rwa.mau, + rwa.wau +FROM + fundamental_data as fd +left join rolling_wau_mau as rwa on fd.date = rwa.date diff --git a/models/projects/kaiching/core/ez_kaiching_retention_metrics.sql b/models/projects/kaiching/core/ez_kaiching_retention_metrics.sql new file mode 100644 index 00000000..49d55031 --- /dev/null +++ b/models/projects/kaiching/core/ez_kaiching_retention_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="KAICHING", + database="KAICHING", + schema="core", + alias="ez_retention_metrics", + unique_key=["cohort_month", "month_number"] + ) +}} + +{{get_cohort_retention_for_application("kaiching", "near")}} diff --git a/models/projects/near/core/ez_near_metrics.sql b/models/projects/near/core/ez_near_metrics.sql index 4c39aa50..1f09aba3 100644 --- a/models/projects/near/core/ez_near_metrics.sql +++ b/models/projects/near/core/ez_near_metrics.sql @@ -31,7 +31,6 @@ select fundamental_data.chain, txns, dau, - fundamental_data.adjusted_dau, wau, mau, fees_native, diff --git a/models/staging/near/fact_near_transactions.sql b/models/staging/near/fact_near_transactions.sql index c4c47408..d3df1b15 100644 --- a/models/staging/near/fact_near_transactions.sql +++ b/models/staging/near/fact_near_transactions.sql @@ -36,9 +36,9 @@ with tx_hash , case when tx:"actions"[0]:"Delegate" is not null then tx_signer else tx_receiver end as contract_address , block_timestamp + , tx_succeeded , date_trunc('day', block_timestamp) raw_date - , tx_signer as from_address - , case when tx:"actions"[0]:"Delegate" is not null then tx_receiver else tx_signer end as from_address_adjusted + , case when tx:"actions"[0]:"Delegate" is not null then tx_receiver else tx_signer end as from_address , (transaction_fee / pow(10, 24)) as tx_fee , ((transaction_fee / pow(10, 24)) * price) gas_usd , 'near' as chain @@ -58,7 +58,6 @@ select block_timestamp, raw_date, t.from_address, - from_address_adjusted, tx_fee, gas_usd, t.chain, @@ -76,7 +75,8 @@ select bots.user_type, bots.address_life_span, bots.cur_total_txns, - bots.cur_distinct_to_address_count + bots.cur_distinct_to_address_count, + tx_succeeded from near_transactions as t left join new_contracts on lower(t.contract_address) = lower(new_contracts.address) left join {{ ref("dim_near_bots") }} as bots on t.from_address = bots.from_address From cdf41a082dd43f97f0781f5693e8c7ae8aebd199 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 6 Aug 2024 10:27:36 -0700 Subject: [PATCH 110/213] Optimize Coingecko Realtime Query (#358) --- .../fact_coingecko_token_realtime_datahub.sql | 2 +- .../coingecko/fact_coingecko_token_realtime_data.sql | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/models/data_hubs/fact_coingecko_token_realtime_datahub.sql b/models/data_hubs/fact_coingecko_token_realtime_datahub.sql index daab245c..1a2e4f68 100644 --- a/models/data_hubs/fact_coingecko_token_realtime_datahub.sql +++ b/models/data_hubs/fact_coingecko_token_realtime_datahub.sql @@ -1,3 +1,3 @@ -{{ config(materialized="table", snowflake_warehouse="PROD_REALTIME_DATAHUB") }} +{{ config(materialized="table", snowflake_warehouse="X_SMALL") }} select * from {{ ref("fact_coingecko_token_realtime_data") }} diff --git a/models/staging/coingecko/fact_coingecko_token_realtime_data.sql b/models/staging/coingecko/fact_coingecko_token_realtime_data.sql index 5f719fcb..898543c4 100644 --- a/models/staging/coingecko/fact_coingecko_token_realtime_data.sql +++ b/models/staging/coingecko/fact_coingecko_token_realtime_data.sql @@ -1,13 +1,13 @@ -{{ config(materialized="table", snowflake_warehouse="PROD_REALTIME_DATAHUB") }} +{{ config(materialized="table", snowflake_warehouse="X_SMALL") }} with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_coingecko_token_realtime_data") }} - ), realtime_token_data as ( select extraction_date::date as date, parse_json(source_json) as data from {{ source("PROD_LANDING", "raw_coingecko_token_realtime_data") }} - where extraction_date = (select max_date from max_extraction) + WHERE + extraction_date > DATEADD('day', -1, SYSDATE()) AND + extraction_date = ( + SELECT MAX(extraction_date) AS max_date FROM {{ source("PROD_LANDING", "raw_coingecko_token_realtime_data") }} + ) ), flattened_data as ( select From 3d626cf7144258d6cec8ac8afa591b0ec124d653 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 6 Aug 2024 14:22:46 -0400 Subject: [PATCH 111/213] Stablecoin V2: BSC (#361) --- .../agg_daily_stablecoin_breakdown_silver.sql | 1 + .../core/ez_bsc_stablecoin_metrics_by_address.sql | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 models/projects/bsc/core/ez_bsc_stablecoin_metrics_by_address.sql diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index acee1c0e..b401d003 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -12,6 +12,7 @@ with ref("ez_ethereum_stablecoin_metrics_by_address"), ref("ez_solana_stablecoin_metrics_by_address"), ref("ez_tron_stablecoin_metrics_by_address"), + ref("ez_bsc_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/projects/bsc/core/ez_bsc_stablecoin_metrics_by_address.sql b/models/projects/bsc/core/ez_bsc_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..d21e425e --- /dev/null +++ b/models/projects/bsc/core/ez_bsc_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="bsc", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("bsc")}} \ No newline at end of file From 3c9e789287872bb493ec3c1a825fa32304928eed Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 6 Aug 2024 16:00:09 -0400 Subject: [PATCH 112/213] Add Ton stablecoin contracts Dimension Model (#362) --- .../contracts/distinct_contract_addresses.sql | 48 +++++++++++++++---- macros/p2p/p2p_stablecoin_transfers.sql | 4 +- .../contracts/dim_ton_contract_addresses.sql | 9 ++++ .../ton/raw/ez_ton_stablecoin_transfers.sql | 1 + .../ton/fact_ton_stablecoin_transfers.sql | 2 + 5 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 models/dimensions/contracts/dim_ton_contract_addresses.sql diff --git a/macros/contracts/distinct_contract_addresses.sql b/macros/contracts/distinct_contract_addresses.sql index ad72a049..1853a870 100644 --- a/macros/contracts/distinct_contract_addresses.sql +++ b/macros/contracts/distinct_contract_addresses.sql @@ -1,11 +1,43 @@ {% macro distinct_contract_addresses(chain) %} -select min(block_timestamp) as block_timestamp, to_address as contract_address, min(type) as type --Contracts can be redeployed at the same addresses with CREATE2 -from {{ chain }}_flipside.core.fact_traces -where type in ('CREATE', 'CREATE2') - and contract_address is not null --if the deploy fails the to address will be null - {% if is_incremental() %} - and block_timestamp - >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% if chain == "ton" %} + with ton_contracts as ( + SELECT + block_timestamp, + to_address as contract_address, + to_type as type + FROM {{ref("ez_ton_stablecoin_transfers")}} + where type not like '%wallet_v%' or type is null + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} + union + SELECT + block_timestamp, + from_address as contract_address, + from_type as type + FROM {{ref("ez_ton_stablecoin_transfers")}} + where (type not like '%wallet_v%' or type is null) + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} + ) + SELECT + min(block_timestamp) as block_timestamp + , contract_address + , min(type) as type + FROM ton_contracts + GROUP BY contract_address + {% else %} + select min(block_timestamp) as block_timestamp, to_address as contract_address, min(type) as type --Contracts can be redeployed at the same addresses with CREATE2 + from {{ chain }}_flipside.core.fact_traces + where type in ('CREATE', 'CREATE2') + and contract_address is not null --if the deploy fails the to address will be null + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} + group by contract_address {% endif %} -group by contract_address {% endmacro %} diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index d01ea7b5..77ca54dd 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -104,8 +104,8 @@ with from stablecoin_transfers_with_prices t1 where from_address != to_address and from_address is not null and to_address is not null - and lower(to_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000') - and lower(from_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000') + and lower(to_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000', 'EQAj-peZGPH-cC25EAv4Q-h8cBXszTmkch6ba6wXC8BM4xdo') + and lower(from_address) not in ('TMerfyf1KwvKeszfVoLH3PEJH52fC2DENq', '1nc1nerator11111111111111111111111111111111', 'system', '0x0000000000000000000000000000000000000000', 'EQAj-peZGPH-cC25EAv4Q-h8cBXszTmkch6ba6wXC8BM4xdo') and lower(tx_hash) not in (select lower(tx_hash) from cex_filter) {% if chain == "solana" %} and block_timestamp::date > '2022-12-31' -- Prior to 2023, volumes data not high fidelity enough to report. Continuing to do analysis on this data. diff --git a/models/dimensions/contracts/dim_ton_contract_addresses.sql b/models/dimensions/contracts/dim_ton_contract_addresses.sql new file mode 100644 index 00000000..1c72661e --- /dev/null +++ b/models/dimensions/contracts/dim_ton_contract_addresses.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="TON", + unique_key=["contract_address"] + ) +}} + +{{distinct_contract_addresses("ton")}} diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index f2995902..3ffd9032 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -12,6 +12,7 @@ select block_timestamp, trunc(block_timestamp, 'day') as date, + trace_id, tx_hash, from_address, from_type, diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index d935dee7..b88ea022 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -19,6 +19,7 @@ with raw_data as ( , source_json:"url"::string as url , source_json:"decimals"::int as decimal , source_json:"symbol"::string as symbol + , source_json:"trace_id"::string as trace_id from {{ source("PROD_LANDING", "raw_ton_stablecoin_transfers") }} {% if is_incremental() %} @@ -34,6 +35,7 @@ select , max_by(from_type, extraction_date) as from_type , max_by(to_address, extraction_date) as to_address , max_by(to_type, extraction_date) as to_type + , max_by(trace_id, extraction_date) as trace_id , max_by(decimal, extraction_date) as decimal , case when (max_by(symbol, extraction_date) = 'USDâ‚®' or max_by(url, extraction_date) = 'https://tether.to/usdt-ton.json') then 'USDT' else max_by(symbol, extraction_date) end as symbol from raw_data From 55a34bc282e5272300b117b86a81b2e5e9820b57 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 6 Aug 2024 23:14:16 -0400 Subject: [PATCH 113/213] Aave update macros (#363) --- dbt_project.yml | 2 - .../get_coingecko_price_with_latest.sql | 0 .../get_coingecko_prices_for_trending.sql | 0 .../aave_deposits_borrows_lender_revenue.sql | 2 + .../lending/aave_reserve_factor_revenue.sql | 4 +- macros/token_holders.sql | 66 ++++ models/projects/aave/core/ez_aave_metrics.sql | 272 +++++++++++++++ .../aave/core/ez_aave_metrics_by_chain.sql | 255 ++++++++++++-- .../aave/core/ez_aave_metrics_by_token.sql | 321 ++++++++++++++++++ .../aave/raw/fact_aave_aavura_treasury.sql | 77 +++++ .../aave/raw/fact_aave_ecosystem_reserve.sql | 53 +++ .../aave/raw/fact_aave_safety_module.sql | 140 ++++++++ .../aave/raw/fact_aave_token_holders.sql | 12 + .../aave/raw/fact_aave_v2_collector.sql | 121 +++++++ ...gnosis_deposits_borrows_lender_revenue.sql | 2 +- .../_test_fact_aave_v2_lending_avalanche.yml | 30 -- .../_test_fact_aave_v2_lending_ethereum.yml | 30 -- .../_test_fact_aave_v2_lending_polygon.yml | 30 -- .../_test_fact_aave_v3_lending_arbitrum.yml | 30 -- .../_test_fact_aave_v3_lending_avalanche.yml | 30 -- .../aave/_test_fact_aave_v3_lending_base.yml | 30 -- .../_test_fact_aave_v3_lending_ethereum.yml | 30 -- .../_test_fact_aave_v3_lending_fantom.yml | 30 -- .../_test_fact_aave_v3_lending_harmony.yml | 30 -- .../aave/_test_fact_aave_v3_lending_metis.yml | 30 -- .../_test_fact_aave_v3_lending_optimism.yml | 30 -- .../_test_fact_aave_v3_lending_polygon.yml | 30 -- .../aave/fact_aave_lending_arbitrum_gold.sql | 3 - .../aave/fact_aave_lending_avalanche_gold.sql | 22 -- .../aave/fact_aave_lending_base_gold.sql | 3 - .../aave/fact_aave_lending_ethereum_gold.sql | 23 -- .../aave/fact_aave_lending_fantom_gold.sql | 3 - .../aave/fact_aave_lending_optimism_gold.sql | 3 - .../aave/fact_aave_lending_polygon_gold.sql | 22 -- .../aave/fact_aave_v2_lending_avalanche.sql | 6 - .../fact_aave_v2_lending_avalanche_gold.sql | 3 - .../aave/fact_aave_v2_lending_ethereum.sql | 64 ---- .../fact_aave_v2_lending_ethereum_gold.sql | 3 - .../aave/fact_aave_v2_lending_polygon.sql | 60 ---- .../fact_aave_v2_lending_polygon_gold.sql | 3 - .../aave/fact_aave_v3_lending_arbitrum.sql | 64 ---- .../fact_aave_v3_lending_arbitrum_gold.sql | 3 - .../aave/fact_aave_v3_lending_avalanche.sql | 6 - .../fact_aave_v3_lending_avalanche_gold.sql | 3 - .../aave/fact_aave_v3_lending_base.sql | 6 - .../aave/fact_aave_v3_lending_base_gold.sql | 3 - .../aave/fact_aave_v3_lending_ethereum.sql | 64 ---- .../fact_aave_v3_lending_ethereum_gold.sql | 3 - .../aave/fact_aave_v3_lending_fantom.sql | 5 - .../aave/fact_aave_v3_lending_fantom_gold.sql | 3 - .../aave/fact_aave_v3_lending_harmony.sql | 2 - .../aave/fact_aave_v3_lending_metis.sql | 6 - .../aave/fact_aave_v3_lending_optimism.sql | 6 - .../fact_aave_v3_lending_optimism_gold.sql | 3 - .../aave/fact_aave_v3_lending_polygon.sql | 60 ---- .../fact_aave_v3_lending_polygon_gold.sql | 3 - 56 files changed, 1301 insertions(+), 844 deletions(-) rename macros/{ => coingecko}/get_coingecko_price_with_latest.sql (100%) rename macros/{ => coingecko}/get_coingecko_prices_for_trending.sql (100%) create mode 100644 macros/token_holders.sql create mode 100644 models/projects/aave/core/ez_aave_metrics.sql create mode 100644 models/projects/aave/core/ez_aave_metrics_by_token.sql create mode 100644 models/projects/aave/raw/fact_aave_aavura_treasury.sql create mode 100644 models/projects/aave/raw/fact_aave_ecosystem_reserve.sql create mode 100644 models/projects/aave/raw/fact_aave_safety_module.sql create mode 100644 models/projects/aave/raw/fact_aave_token_holders.sql create mode 100644 models/projects/aave/raw/fact_aave_v2_collector.sql delete mode 100644 models/staging/aave/_test_fact_aave_v2_lending_avalanche.yml delete mode 100644 models/staging/aave/_test_fact_aave_v2_lending_ethereum.yml delete mode 100644 models/staging/aave/_test_fact_aave_v2_lending_polygon.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_arbitrum.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_avalanche.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_base.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_ethereum.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_fantom.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_harmony.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_metis.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_optimism.yml delete mode 100644 models/staging/aave/_test_fact_aave_v3_lending_polygon.yml delete mode 100644 models/staging/aave/fact_aave_lending_arbitrum_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_avalanche_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_base_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_ethereum_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_fantom_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_optimism_gold.sql delete mode 100644 models/staging/aave/fact_aave_lending_polygon_gold.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_avalanche.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_ethereum.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_polygon.sql delete mode 100644 models/staging/aave/fact_aave_v2_lending_polygon_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_arbitrum.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_avalanche.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_base.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_base_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_ethereum.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_fantom.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_fantom_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_harmony.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_metis.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_optimism.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_optimism_gold.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_polygon.sql delete mode 100644 models/staging/aave/fact_aave_v3_lending_polygon_gold.sql diff --git a/dbt_project.yml b/dbt_project.yml index 87961b38..79d1fca1 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -39,8 +39,6 @@ models: bam_models: +snowflake_warehouse: "DAILY_BAM" staging: - aave: - +snowflake_warehouse: "AAVE" acala: +snowflake_warehouse: "ACALA" across: diff --git a/macros/get_coingecko_price_with_latest.sql b/macros/coingecko/get_coingecko_price_with_latest.sql similarity index 100% rename from macros/get_coingecko_price_with_latest.sql rename to macros/coingecko/get_coingecko_price_with_latest.sql diff --git a/macros/get_coingecko_prices_for_trending.sql b/macros/coingecko/get_coingecko_prices_for_trending.sql similarity index 100% rename from macros/get_coingecko_prices_for_trending.sql rename to macros/coingecko/get_coingecko_prices_for_trending.sql diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql index 40c341e1..fec57be2 100644 --- a/macros/lending/aave_deposits_borrows_lender_revenue.sql +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -70,6 +70,7 @@ with , underlying_token , supply , supply_usd + , coalesce(supply * daily_rate, 0) as revenue_nominal , coalesce(supply_usd * daily_rate, 0) as revenue , borrows , borrows_usd @@ -90,6 +91,7 @@ select , sum(supply) as supply , sum(supply_usd) as supply_usd , sum(revenue) as revenue + , sum(revenue_nominal) as revenue_nominal from data group by 1, 2 {% endmacro %} \ No newline at end of file diff --git a/macros/lending/aave_reserve_factor_revenue.sql b/macros/lending/aave_reserve_factor_revenue.sql index a2d8c60f..060e8e7a 100644 --- a/macros/lending/aave_reserve_factor_revenue.sql +++ b/macros/lending/aave_reserve_factor_revenue.sql @@ -25,12 +25,14 @@ revenue_events as ( select date + , '{{chain}}' as chain + , '{{protocol}}' as protocol , token_address , sum(coalesce(amount_nominal, 0)) as reserve_factor_revenue_nominal , sum(coalesce(amount_usd, 0)) as reserve_factor_revenue_usd from revenue_events_usd where date < to_date(sysdate()) -group by 1, 2 +group by 1, 4 {% endmacro %} diff --git a/macros/token_holders.sql b/macros/token_holders.sql new file mode 100644 index 00000000..3c77bc64 --- /dev/null +++ b/macros/token_holders.sql @@ -0,0 +1,66 @@ +{% macro token_holders(chain, contract_address, creation_date) %} +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM {{ref('fact_'~chain~'_address_balances_by_token')}} + WHERE contract_address = lower('{{contract_address}}') + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM {{ref('fact_'~chain~'_address_balances_by_token')}} + where block_timestamp > '{{creation_date}}' +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM {{ref('fact_'~chain~'_address_balances_by_token')}} + WHERE contract_address = lower('{{contract_address}}') + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select + date + , '{{ chain }}' as chain + , count(*) as token_holder_count +from filled_balances +where balance_token > 0 +group by date +order by date desc +{% endmacro %} + + diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql new file mode 100644 index 00000000..4458b673 --- /dev/null +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -0,0 +1,272 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="core", + alias="ez_metrics", + ) +}} + +with + deposits_borrows_lender_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_deposits_borrows_lender_revenue")}} + ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , sum(borrows_usd) as outstanding_supply + , sum(supply_usd) as net_deposits + , net_deposits - outstanding_supply as tvl + , sum(revenue) as supply_side_deposit_revenue + from deposits_borrows_lender_revenue + group by 1 + ) + , flashloan_fees as ( + select * from {{ref("fact_aave_v3_arbitrum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_base_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_gnosis_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_optimism_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_polygon_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_polygon_flashloan_fees")}} + ) + , aave_flashloan_fees as ( + select + date + , sum(amount_usd) as flashloan_fees + from flashloan_fees + group by 1 + ) + , liquidation_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_liquidation_revenue")}} + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , sum(liquidation_revenue) as liquidation_revenue + from liquidation_revenue + group by 1 + ) + , reserve_factor_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} + ) + , aave_reserve_factor_revenue as ( + select + date + , sum(reserve_factor_revenue_usd) as reserve_factor_revenue + from reserve_factor_revenue + group by 1 + ) + , ecosystem_incentives as ( + select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_base_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_bsc_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_gnosis_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_optimism_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_polygon_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_polygon_ecosystem_incentives")}} + ) + , aave_treasury as ( + select * from {{ref("fact_aave_aavura_treasury")}} + union all + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_safety_module")}} + ) + , treasury as ( + select + date + , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value + , sum(amount_usd) as treasury_value + from aave_treasury + group by date + ) + , aave_ecosystem_incentives as ( + select + date + , sum(amount_usd) as ecosystem_incentives + from ecosystem_incentives + group by 1 + ) + , dao_trading_revenue as ( + select + date + , sum(trading_fees_usd) as trading_fees + from {{ ref("fact_aave_dao_balancer_trading_fees")}} + group by 1 + ) + , safety_incentives as ( + select + date + , sum(amount_usd) as safety_incentives + from {{ ref("fact_aave_dao_safety_incentives")}} + group by 1 + ) + , gho_treasury_revenue as ( + select + date + , sum(amount_usd) as gho_revenue + from {{ ref("fact_aave_gho_treasury_revenue")}} + group by 1 + ) + , aave_token_holders as ( + select + date + , token_holder_count + from {{ ref("fact_aave_token_holders")}} + ) + , coingecko_metrics as ( + select + date + , shifted_token_price_usd as price + , shifted_token_h24_volume_usd as h24_volume + , shifted_token_market_cap as market_cap + , t2.total_supply * price as fdmc + , shifted_token_h24_volume_usd / market_cap as token_turnover_circulating + , shifted_token_h24_volume_usd / fdmc as token_turnover_fdv + from {{ ref("fact_coingecko_token_date_adjusted_gold") }} t1 + inner join + ( + select + token_id, coalesce(token_max_supply, token_total_supply) as total_supply + from {{ ref("fact_coingecko_token_realtime_data") }} + where token_id = 'aave' + ) t2 + on t1.coingecko_id = t2.token_id + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + ) +select + aave_outstanding_supply_net_deposits_deposit_revenue.date + , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + , flashloan_fees + , gho_revenue as gho_fees + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + , supply_side_deposit_revenue + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + , flashloan_fees as flashloan_supply_side_revenue + , liquidation_revenue as liquidation_supply_side_revenue + , ecosystem_incentives as ecosystem_supply_side_revenue + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , reserve_factor_revenue + , trading_fees as dao_trading_revenue + , gho_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , ecosystem_incentives + , safety_incentives + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + , token_incentives as total_expenses + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + , outstanding_supply + , net_deposits + , tvl + , treasury_value + , net_treasury_value + , token_holder_count + , price + , h24_volume + , market_cap + , fdmc + , token_turnover_circulating + , token_turnover_fdv +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date) +left join aave_liquidation_supply_side_revenue using (date) +left join aave_reserve_factor_revenue using (date) +left join aave_ecosystem_incentives using (date) +left join dao_trading_revenue using (date) +left join safety_incentives using (date) +left join gho_treasury_revenue using (date) +left join treasury using (date) +left join aave_token_holders using (date) +left join coingecko_metrics using (date) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics_by_chain.sql b/models/projects/aave/core/ez_aave_metrics_by_chain.sql index 5480055a..89034670 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_chain.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_chain.sql @@ -9,27 +9,238 @@ }} with - aave_by_chain as ( - {{ - dbt_utils.union_relations( - relations=[ - ref("fact_aave_lending_ethereum_gold"), - ref("fact_aave_lending_optimism_gold"), - ref("fact_aave_lending_arbitrum_gold"), - ref("fact_aave_lending_polygon_gold"), - ref("fact_aave_lending_fantom_gold"), - ref("fact_aave_lending_base_gold"), - ref("fact_aave_lending_avalanche_gold"), - ], - ) - }} + deposits_borrows_lender_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_deposits_borrows_lender_revenue")}} ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , chain + , sum(borrows_usd) as outstanding_supply + , sum(supply_usd) as net_deposits + , net_deposits - outstanding_supply as tvl + , sum(revenue) as supply_side_deposit_revenue + from deposits_borrows_lender_revenue + group by 1, 2 + ) + , flashloan_fees as ( + select * from {{ref("fact_aave_v3_arbitrum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_base_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_gnosis_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_optimism_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_polygon_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_polygon_flashloan_fees")}} + ) + , aave_flashloan_fees as ( + select + date + , chain + , sum(amount_usd) as flashloan_fees + from flashloan_fees + group by 1, 2 + ) + , liquidation_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_liquidation_revenue")}} + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , chain + , sum(liquidation_revenue) as liquidation_revenue + from liquidation_revenue + group by 1, 2 + ) + , reserve_factor_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} + ) + , aave_reserve_factor_revenue as ( + select + date + , chain + , sum(reserve_factor_revenue_usd) as reserve_factor_revenue + from reserve_factor_revenue + group by 1, 2 + ) + , ecosystem_incentives as ( + select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_base_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_bsc_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_gnosis_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_optimism_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_polygon_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_polygon_ecosystem_incentives")}} + ) + , aave_treasury as ( + select * from {{ref("fact_aave_aavura_treasury")}} + union all + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_safety_module")}} + ) + , treasury as ( + select + date + , chain + , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value + , sum(amount_usd) as treasury_value + from aave_treasury + group by date, 2 + ) + , aave_ecosystem_incentives as ( + select + date + , chain + , sum(amount_usd) as ecosystem_incentives + from ecosystem_incentives + group by 1, 2 + ) + , dao_trading_revenue as ( + select + date + , chain + , sum(trading_fees_usd) as trading_fees + from {{ ref("fact_aave_dao_balancer_trading_fees")}} + group by 1, 2 + ) + , safety_incentives as ( + select + date + , chain + , sum(amount_usd) as safety_incentives + from {{ ref("fact_aave_dao_safety_incentives")}} + group by 1, 2 + ) + , gho_treasury_revenue as ( + select + date + , chain + , sum(amount_usd) as gho_revenue + from {{ ref("fact_aave_gho_treasury_revenue")}} + group by 1, 2 + ) + select - aave_by_chain.date, - 'aave' as app, - 'DeFi' as category, - aave_by_chain.chain, - aave_by_chain.daily_borrows_usd, - aave_by_chain.daily_supply_usd -from aave_by_chain -where aave_by_chain.date < to_date(sysdate()) \ No newline at end of file + aave_outstanding_supply_net_deposits_deposit_revenue.date + , chain + , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + , flashloan_fees + , gho_revenue as gho_fees + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + , supply_side_deposit_revenue + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + , flashloan_fees as flashloan_supply_side_revenue + , liquidation_revenue as liquidation_supply_side_revenue + , ecosystem_incentives as ecosystem_supply_side_revenue + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , reserve_factor_revenue + , trading_fees as dao_trading_revenue + , gho_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , ecosystem_incentives + , safety_incentives + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + , token_incentives as total_expenses + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + , outstanding_supply + , net_deposits + , tvl + , treasury_value + , net_treasury_value +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date, chain) +left join aave_liquidation_supply_side_revenue using (date, chain) +left join aave_reserve_factor_revenue using (date, chain) +left join aave_ecosystem_incentives using (date, chain) +left join dao_trading_revenue using (date, chain) +left join safety_incentives using (date, chain) +left join gho_treasury_revenue using (date, chain) +left join treasury using (date, chain) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql new file mode 100644 index 00000000..b665b8e5 --- /dev/null +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -0,0 +1,321 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="core", + alias="ez_metrics_by_token", + ) +}} +-- Liquidation Revenue can not be calculated by token. This is becuase the revenue is based on +-- the difference between the collateral revieved and the debt repaid +with + deposits_borrows_lender_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_deposits_borrows_lender_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_deposits_borrows_lender_revenue")}} + ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , chain + , token_address + , sum(borrows) as outstanding_supply_nominal + , sum(borrows_usd) as outstanding_supply + , sum(supply) as net_deposits_nominal + , sum(supply_usd) as net_deposits + , coalesce(net_deposits_nominal, 0) - coalesce(outstanding_supply_nominal, 0) as tvl_nominal + , coalesce(net_deposits, 0) - coalesce(outstanding_supply, 0) as tvl + , sum(revenue) as supply_side_deposit_revenue + , sum(revenue_nominal) as supply_side_deposit_revenue_nominal + from deposits_borrows_lender_revenue + group by 1, 2, 3 + ) + , flashloan_fees as ( + select * from {{ref("fact_aave_v3_arbitrum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_avalanche_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_base_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_ethereum_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_gnosis_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_optimism_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v2_polygon_flashloan_fees")}} + union all + select * from {{ref("fact_aave_v3_polygon_flashloan_fees")}} + ) + , aave_flashloan_fees as ( + select + date + , chain + , token_address + , sum(amount_usd) as flashloan_fees + , sum(amount_nominal) as flashloan_fees_nominal + from flashloan_fees + group by 1, 2, 3 + ) + , liquidation_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_liquidation_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_liquidation_revenue")}} + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , chain + , 'USD' as token_address + , sum(liquidation_revenue) as liquidation_revenue + , null as liquidation_revenue_nominal + from liquidation_revenue + group by 1, 2, 3 + ) + , reserve_factor_revenue as ( + select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} + union all + select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} + ) + , aave_reserve_factor_revenue as ( + select + date + , chain + , token_address + , sum(reserve_factor_revenue_usd) as reserve_factor_revenue + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + from reserve_factor_revenue + group by 1, 2, 3 + ) + , ecosystem_incentives as ( + select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_avalanche_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_base_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_bsc_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_ethereum_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_gnosis_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_optimism_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v2_polygon_ecosystem_incentives")}} + union all + select * from {{ref("fact_aave_v3_polygon_ecosystem_incentives")}} + ) + + , aave_ecosystem_incentives as ( + select + date + , chain + , token_address + , sum(amount_usd) as ecosystem_incentives + , sum(amount_nominal) as ecosystem_incentives_nominal + from ecosystem_incentives + group by date, chain, token_address + ) + , aave_treasury as ( + select * from {{ref("fact_aave_aavura_treasury")}} + union all + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_safety_module")}} + ) + , treasury as ( + select + date + , chain + , token_address + , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value + , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_nominal else 0 end) as net_treasury_value_nominal + , sum(amount_usd) as treasury_value + , sum(amount_nominal) as treasury_value_nominal + from aave_treasury + group by date, chain, token_address + ) + , dao_trading_revenue as ( + select + date + , chain + , token_address + , sum(trading_fees_usd) as trading_fees + , sum(trading_fees_nominal) as trading_fees_nominal + from {{ ref("fact_aave_dao_balancer_trading_fees")}} + group by 1, 2, 3 + ) + , safety_incentives as ( + select + date + , chain + , token_address + , sum(amount_usd) as safety_incentives + , sum(amount_nominal) as safety_incentives_nominal + from {{ ref("fact_aave_dao_safety_incentives")}} + group by 1, 2, 3 + ) + , gho_treasury_revenue as ( + select + date + , chain + , token_address + , sum(amount_usd) as gho_revenue + , sum(amount_nominal) as gho_revenue_nominal + from {{ ref("fact_aave_gho_treasury_revenue")}} + group by 1, 2, 3 + ) +select + aave_outstanding_supply_net_deposits_deposit_revenue.date + , chain + , token_address + + , coalesce(supply_side_deposit_revenue_nominal, 0) + coalesce(reserve_factor_revenue_nominal, 0) as interest_rate_fees_nominal + , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + + , coalesce(flashloan_fees_nominal, 0) as flashloan_fees_nominal + , flashloan_fees + + , gho_revenue_nominal as gho_fees_nominal + , gho_revenue as gho_fees + + , coalesce(interest_rate_fees_nominal, 0) + coalesce(flashloan_fees_nominal, 0) + coalesce(gho_fees_nominal, 0) as fees_nominal + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + + , supply_side_deposit_revenue_nominal + , supply_side_deposit_revenue + + , coalesce(supply_side_deposit_revenue_nominal, 0) as primary_supply_side_revenue_nominal + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + + , flashloan_fees_nominal as flashloan_supply_side_revenue_nominal + , flashloan_fees as flashloan_supply_side_revenue + + , liquidation_revenue_nominal as liquidation_supply_side_revenue_nominal + , liquidation_revenue as liquidation_supply_side_revenue + + , ecosystem_incentives_nominal as ecosystem_supply_side_revenue_nominal + , ecosystem_incentives as ecosystem_supply_side_revenue + + , coalesce(flashloan_fees_nominal, 0) + coalesce(gho_revenue_nominal, 0) + coalesce(liquidation_revenue_nominal, 0) + coalesce(ecosystem_incentives_nominal, 0) as secondary_supply_side_revenue_nominal + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + + , primary_supply_side_revenue_nominal + secondary_supply_side_revenue_nominal as total_supply_side_revenue_nominal + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + + , reserve_factor_revenue_nominal as reserve_factor_revenue_nominal + , reserve_factor_revenue + + , trading_fees_nominal as dao_trading_revenue_nominal + , trading_fees as dao_trading_revenue + + , gho_revenue_nominal + , gho_revenue + + , coalesce(reserve_factor_revenue_nominal, 0) + coalesce(dao_trading_revenue_nominal, 0) + coalesce(gho_revenue_nominal, 0) as protocol_revenue_nominal + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + + , ecosystem_incentives_nominal as ecosystem_incentives_nominal + , ecosystem_incentives + + , safety_incentives_nominal as safety_incentives_nominal + , safety_incentives + + , coalesce(ecosystem_incentives_nominal, 0) + coalesce(safety_incentives_nominal, 0) as token_incentives_nominal + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + + , token_incentives_nominal as total_expenses_nominal + , token_incentives as total_expenses + + , coalesce(protocol_revenue_nominal, 0) - coalesce(total_expenses_nominal, 0) as protocol_earnings_nominal + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + + , outstanding_supply_nominal + , outstanding_supply + + , net_deposits_nominal + , net_deposits + + , tvl_nominal + , tvl + + , treasury_value_nominal + , treasury_value + + , net_treasury_value_nominal + , net_treasury_value + +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date, chain, token_address) +left join aave_liquidation_supply_side_revenue using (date, chain, token_address) +left join aave_reserve_factor_revenue using (date, chain, token_address) +left join aave_ecosystem_incentives using (date, chain, token_address) +left join dao_trading_revenue using (date, chain, token_address) +left join safety_incentives using (date, chain, token_address) +left join gho_treasury_revenue using (date, chain, token_address) +left join treasury using (date, chain, token_address) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/aave/raw/fact_aave_aavura_treasury.sql b/models/projects/aave/raw/fact_aave_aavura_treasury.sql new file mode 100644 index 00000000..0089eb08 --- /dev/null +++ b/models/projects/aave/raw/fact_aave_aavura_treasury.sql @@ -0,0 +1,77 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_aavura_treasury", + ) +}} + + +WITH +tokens as ( + SELECT LOWER(address) AS address + FROM ( + VALUES + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x5aFE3855358E112B5647B952709E6165e1c1eEEe'), + ('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) AS addresses(address) +) +, base AS ( + select + to_address, + from_address, + contract_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) in (select address from tokens) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + SUM(CASE WHEN to_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2 + ORDER BY 1 DESC +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select address from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.contract_address) +ORDER BY date DESC \ No newline at end of file diff --git a/models/projects/aave/raw/fact_aave_ecosystem_reserve.sql b/models/projects/aave/raw/fact_aave_ecosystem_reserve.sql new file mode 100644 index 00000000..9e6230cb --- /dev/null +++ b/models/projects/aave/raw/fact_aave_ecosystem_reserve.sql @@ -0,0 +1,53 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_ecosystem_reserve", + ) +}} + + +WITH +base AS ( + select + to_address, + from_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + SUM(CASE WHEN to_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1 + ORDER BY 1 DESC +) +, prices as ({{get_coingecko_price_with_latest('aave')}}) + +SELECT + dr.date AS date + , 'ethereum' as chain + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p on p.date = dr.date +ORDER BY date DESC \ No newline at end of file diff --git a/models/projects/aave/raw/fact_aave_safety_module.sql b/models/projects/aave/raw/fact_aave_safety_module.sql new file mode 100644 index 00000000..964e0f5b --- /dev/null +++ b/models/projects/aave/raw/fact_aave_safety_module.sql @@ -0,0 +1,140 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_safety_module", + ) +}} + + +{% set start_date = '2018-01-01' %} +{% set end_date = modules.datetime.date.today().isoformat() %} +{% set days_between = (modules.datetime.datetime.strptime(end_date, '%Y-%m-%d') - modules.datetime.datetime.strptime(start_date, '%Y-%m-%d')).days %} +{% set rowcount = days_between + 1 %} -- Add 1 to include both start and end dates + +with +stkAAVE as ( + select + block_timestamp::date as date + , lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkABPT_mints as ( + select + block_timestamp::date as date + , lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkGHO_mints as ( + select + block_timestamp::date as date + , lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, tokens as ( + SELECT lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + UNION + SELECT lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + UNION + SELECT lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token +) +, dt_spine as ( + SELECT '2018-01-01'::date + seq4() AS date + FROM TABLE(GENERATOR(ROWCOUNT => {{ rowcount }})) + where date <= to_date(sysdate()) +) +, token_days as ( + SELECT tokens.token, dt_spine.date + from tokens + CROSS JOIN dt_spine +) +, daily_mint as ( + SELECT + date + , token + , sum(mint) as daily_mint + FROM ( + SELECT * FROM stkAAVE + UNION ALL + SELECT * FROM stkABPT_mints + UNION ALL + SELECT * FROM stkGHO_mints + ) a + GROUP BY date, token +) +, daily_mints_filled as ( + SELECT + token_days.token + , token_days.date + , COALESCE(daily_mint.daily_mint, 0) as daily_mint + from token_days + LEFT JOIN daily_mint + ON daily_mint.date = token_days.date + AND lower(daily_mint.token) = lower(token_days.token) +) +, result as ( + SELECT + token + , date + , daily_mint + , sum(daily_mint) over(partition by token order by date) as total_supply + FROM daily_mints_filled +) +, aave_prices as ({{get_coingecko_price_with_latest("aave")}}) +, gho_prices as ({{get_coingecko_price_with_latest("gho")}}) +, abpt_prices as ({{get_coingecko_price_with_latest("aave-balancer-pool-token")}}) +, prices as ( + select date, '0x4da27a545c0c5b758a6ba100e3a049001de870f5' as token, price + from aave_prices + + union all + + select date, '0xa1116930326d21fb917d5a27f1e9943a9595fb47' as token, price + from abpt_prices + + union all + + select date, '0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d' as token, price + from gho_prices +) + + +SELECT + result.date + , 'ethereum' as chain + , result.token as token_address + , total_supply as amount_nominal + , coalesce(prices.price, 0) * total_supply as amount_usd +FROM result +LEFT JOIN prices + ON prices.token = result.token + AND prices.date = result.date \ No newline at end of file diff --git a/models/projects/aave/raw/fact_aave_token_holders.sql b/models/projects/aave/raw/fact_aave_token_holders.sql new file mode 100644 index 00000000..004f583c --- /dev/null +++ b/models/projects/aave/raw/fact_aave_token_holders.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_token_holders", + ) +}} + +{{ token_holders('ethereum', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', '2020-09-21')}} + diff --git a/models/projects/aave/raw/fact_aave_v2_collector.sql b/models/projects/aave/raw/fact_aave_v2_collector.sql new file mode 100644 index 00000000..22a220ef --- /dev/null +++ b/models/projects/aave/raw/fact_aave_v2_collector.sql @@ -0,0 +1,121 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="fact_v2_collector", + ) +}} + + +WITH + +tokens as ( + SELECT LOWER(a_token) AS a_token, LOWER(priced_token) AS priced_token + FROM ( + VALUES + ('0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0xae78736Cd615f374D3085123A210448E74Fc6393', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0xBcca60bB61934080951369a648Fb03DF4F96263C', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x018008bfb33d285247A21d44E50697654f754e63', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x0B925eD163218f6662a35e0f0371Ac234f9E9371', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x101cc05f4A51C0319f570d5E146a8C625198e636', '0x0000000000085d4780B73119b644AE5ecd22b376'), + ('0xA361718326c15715591c299427c62086F69923D9', '0x4Fabb145d64652a948d72533023f6E7A623C7C53'), + ('0xC7B4c17861357B8ABB91F25581E7263E08DCB59c', '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F'), + ('0xD37EE7e4f452C6638c96536e68090De8cBcdb583', '0xa0E5A19E091BBe241E655997E50da82DA676b083'), + ('0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x6C5024Cd4F8A59110119C56f8933403A539555EB', '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51'), + ('0xCc9EE9483f662091a1de4795249E24aC0aC2630f', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x3Fe6a295459FAe07DF8A0ceCC36F37160FE86AA9', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'), + ('0xB76CF92076adBF1D9C39294FA8e7A67579FDe357', '0xD33526068D116cE69F19A9ee46F0bd304F21A51f'), + ('0x8A458A9dc9048e005d22849F470891b840296619', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0x977b6fc5dE62598B08C85AC8Cf2b745874E8b78c', '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704'), + ('0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b', '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'), + ('0xd4e245848d6E1220DBE62e155d89fa327E43CB06', '0x853d955aCEf822Db058eb8505911ED77F175b99e'), + ('0xc9BC48c72154ef3e5425641a3c747242112a46AF', '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919'), + ('0xc713e5E149D5D0715DcD1c156a020976e7E56B88', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65', '0xD533a949740bb3306d119CC777fa900bA034cd52'), + ('0xa685a61171bb30d4072B338c80Cb7b2c865c873E', '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942'), + ('0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0xd24946147829DEaA935bE2aD85A3291dbf109c80', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA', '0xdd974D5C2e2928deA5F71b9825b8b646686BD200'), + ('0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x514910771AF9Ca656af840dff83E8264EcF986CA', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x9A44fd41566876A39655f74971a3A6eA0a17a454', '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), + ('0x71Aef7b30728b9BB371578f36c5A1f1502a5723e', '0x111111111117dC0aa78b770fA6A738034120C302'), + ('0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', '0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c'), + ('0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', '0xE41d2489571d322189246DaFA5ebDe1F4699F498'), + ('0x272F97b7a56a387aE942350bBC7Df5700f8a4576', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', '0x0D8775F648430679A709E98d2b0Cb6250d2887EF'), + ('0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + ) AS t(a_token, priced_token) +) +, base AS ( + select + to_address, + from_address, + contract_address, + priced_token, + block_timestamp::date as date, + amount, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + inner join tokens on lower(contract_address) = lower(a_token) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + priced_token, + SUM(CASE WHEN to_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2, 3 +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select distinct priced_token from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.priced_token) diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql index 434abc4f..275f10e3 100644 --- a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_ethereum_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_gnosis_borrows_deposits_revenue')}} \ No newline at end of file diff --git a/models/staging/aave/_test_fact_aave_v2_lending_avalanche.yml b/models/staging/aave/_test_fact_aave_v2_lending_avalanche.yml deleted file mode 100644 index f9295cbd..00000000 --- a/models/staging/aave/_test_fact_aave_v2_lending_avalanche.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v2_lending_avalanche - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v2_lending_ethereum.yml b/models/staging/aave/_test_fact_aave_v2_lending_ethereum.yml deleted file mode 100644 index 9a2f22f9..00000000 --- a/models/staging/aave/_test_fact_aave_v2_lending_ethereum.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v2_lending_ethereum - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v2_lending_polygon.yml b/models/staging/aave/_test_fact_aave_v2_lending_polygon.yml deleted file mode 100644 index 438d02a0..00000000 --- a/models/staging/aave/_test_fact_aave_v2_lending_polygon.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v2_lending_polygon - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_arbitrum.yml b/models/staging/aave/_test_fact_aave_v3_lending_arbitrum.yml deleted file mode 100644 index 537c9451..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_arbitrum.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_arbitrum - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_avalanche.yml b/models/staging/aave/_test_fact_aave_v3_lending_avalanche.yml deleted file mode 100644 index cbb3ee71..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_avalanche.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_avalanche - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_base.yml b/models/staging/aave/_test_fact_aave_v3_lending_base.yml deleted file mode 100644 index 1fd6d84e..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_base.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_base - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_ethereum.yml b/models/staging/aave/_test_fact_aave_v3_lending_ethereum.yml deleted file mode 100644 index f47d1d7f..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_ethereum.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_ethereum - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_fantom.yml b/models/staging/aave/_test_fact_aave_v3_lending_fantom.yml deleted file mode 100644 index 3968f52a..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_fantom.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_fantom - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_harmony.yml b/models/staging/aave/_test_fact_aave_v3_lending_harmony.yml deleted file mode 100644 index 98839808..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_harmony.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_harmony - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_metis.yml b/models/staging/aave/_test_fact_aave_v3_lending_metis.yml deleted file mode 100644 index f6d0cfb3..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_metis.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_metis - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_optimism.yml b/models/staging/aave/_test_fact_aave_v3_lending_optimism.yml deleted file mode 100644 index 61ae6ad7..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_optimism.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_optimism - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/_test_fact_aave_v3_lending_polygon.yml b/models/staging/aave/_test_fact_aave_v3_lending_polygon.yml deleted file mode 100644 index 1a312747..00000000 --- a/models/staging/aave/_test_fact_aave_v3_lending_polygon.yml +++ /dev/null @@ -1,30 +0,0 @@ -models: - - name: fact_aave_v3_lending_polygon - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: CHAIN - tests: - - dbt_expectations.expect_column_to_exist - - name: DAILY_BORROWS_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DAILY_SUPPLY_USD - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: APP - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/aave/fact_aave_lending_arbitrum_gold.sql b/models/staging/aave/fact_aave_lending_arbitrum_gold.sql deleted file mode 100644 index 0b0a6f34..00000000 --- a/models/staging/aave/fact_aave_lending_arbitrum_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_arbitrum_gold") }} diff --git a/models/staging/aave/fact_aave_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_lending_avalanche_gold.sql deleted file mode 100644 index f5b4a17f..00000000 --- a/models/staging/aave/fact_aave_lending_avalanche_gold.sql +++ /dev/null @@ -1,22 +0,0 @@ -{{ config(materialized="table") }} -with - aave_chain_data as ( - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v2_lending_avalanche_gold") }} - union all - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v3_lending_avalanche_gold") }} - ), - combined_aave_data as ( - select - date, - chain, - app, - category, - sum(daily_borrows_usd) as daily_borrows_usd, - sum(daily_supply_usd) as daily_supply_usd - from aave_chain_data - group by date, chain, app, category - ) -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_aave_data diff --git a/models/staging/aave/fact_aave_lending_base_gold.sql b/models/staging/aave/fact_aave_lending_base_gold.sql deleted file mode 100644 index 01c0e9f0..00000000 --- a/models/staging/aave/fact_aave_lending_base_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_base_gold") }} diff --git a/models/staging/aave/fact_aave_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_lending_ethereum_gold.sql deleted file mode 100644 index 24afec10..00000000 --- a/models/staging/aave/fact_aave_lending_ethereum_gold.sql +++ /dev/null @@ -1,23 +0,0 @@ -{{ config(materialized="table") }} -with - aave_chain_data as ( - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v2_lending_ethereum_gold") }} - union all - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v3_lending_ethereum_gold") }} - ), - combined_aave_data as ( - select - date, - chain, - app, - category, - sum(daily_borrows_usd) as daily_borrows_usd, - sum(daily_supply_usd) as daily_supply_usd - - from aave_chain_data - group by date, chain, app, category - ) -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_aave_data diff --git a/models/staging/aave/fact_aave_lending_fantom_gold.sql b/models/staging/aave/fact_aave_lending_fantom_gold.sql deleted file mode 100644 index 528d54f4..00000000 --- a/models/staging/aave/fact_aave_lending_fantom_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_fantom_gold") }} diff --git a/models/staging/aave/fact_aave_lending_optimism_gold.sql b/models/staging/aave/fact_aave_lending_optimism_gold.sql deleted file mode 100644 index ab49fff8..00000000 --- a/models/staging/aave/fact_aave_lending_optimism_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_optimism_gold") }} diff --git a/models/staging/aave/fact_aave_lending_polygon_gold.sql b/models/staging/aave/fact_aave_lending_polygon_gold.sql deleted file mode 100644 index 7955ac33..00000000 --- a/models/staging/aave/fact_aave_lending_polygon_gold.sql +++ /dev/null @@ -1,22 +0,0 @@ -{{ config(materialized="table") }} -with - aave_chain_data as ( - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v2_lending_polygon_gold") }} - union all - select date, chain, 'aave' as app, category, daily_borrows_usd, daily_supply_usd - from {{ ref("fact_aave_v3_lending_polygon_gold") }} - ), - combined_aave_data as ( - select - date, - chain, - app, - category, - sum(daily_borrows_usd) as daily_borrows_usd, - sum(daily_supply_usd) as daily_supply_usd - from aave_chain_data - group by date, chain, app, category - ) -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_aave_data diff --git a/models/staging/aave/fact_aave_v2_lending_avalanche.sql b/models/staging/aave/fact_aave_v2_lending_avalanche.sql deleted file mode 100644 index 5f85a273..00000000 --- a/models/staging/aave/fact_aave_v2_lending_avalanche.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="table") }} -{{ - fact_aave_fork_lending( - "raw_aave_v2_avalanche_borrows_deposits_revenue", "avalanche", "aave_v2" - ) -}} diff --git a/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql deleted file mode 100644 index 5836b6ce..00000000 --- a/models/staging/aave/fact_aave_v2_lending_avalanche_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v2_lending_avalanche") }} diff --git a/models/staging/aave/fact_aave_v2_lending_ethereum.sql b/models/staging/aave/fact_aave_v2_lending_ethereum.sql deleted file mode 100644 index 8387274f..00000000 --- a/models/staging/aave/fact_aave_v2_lending_ethereum.sql +++ /dev/null @@ -1,64 +0,0 @@ -{{ config(materialized="table") }} -with - unioned as ( - select * - from landing_database.prod_landing.raw_aave_v2_lending_ethereum - union all - select * - from - {{ - source( - "PROD_LANDING", "raw_aave_v2_ethereum_borrows_deposits_revenue" - ) - }} - - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"category"::string as category, - flat_json.value:"app"::string as app, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"stable_borrows"::float as stable_borrows, - flat_json.value:"variable_borrows"::float as variable_borrows, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ), - combined_data as ( - select - date, - 'ethereum' as chain, - 'aave' as app, - 'DeFi' as category, - sum(borrows_usd) as daily_borrows_usd, - sum(supply_usd) as daily_supply_usd - from map_reduce_json - group by date - ) - -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_data diff --git a/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql deleted file mode 100644 index d9144f23..00000000 --- a/models/staging/aave/fact_aave_v2_lending_ethereum_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v2_lending_ethereum") }} diff --git a/models/staging/aave/fact_aave_v2_lending_polygon.sql b/models/staging/aave/fact_aave_v2_lending_polygon.sql deleted file mode 100644 index 28d753b2..00000000 --- a/models/staging/aave/fact_aave_v2_lending_polygon.sql +++ /dev/null @@ -1,60 +0,0 @@ -{{ config(materialized="table") }} -with - unioned as ( - select * - from landing_database.prod_landing.raw_aave_v2_lending_polygon - union all - select * - from - {{ source("PROD_LANDING", "raw_aave_v2_polygon_borrows_deposits_revenue") }} - - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"category"::string as category, - flat_json.value:"app"::string as app, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"stable_borrows"::float as stable_borrows, - flat_json.value:"variable_borrows"::float as variable_borrows, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ), - combined_data as ( - select - date, - 'polygon' as chain, - 'aave' as app, - 'DeFi' as category, - sum(borrows_usd) as daily_borrows_usd, - sum(supply_usd) as daily_supply_usd - from map_reduce_json - group by date - ) - -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_data diff --git a/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql b/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql deleted file mode 100644 index f200535b..00000000 --- a/models/staging/aave/fact_aave_v2_lending_polygon_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v2_lending_polygon") }} diff --git a/models/staging/aave/fact_aave_v3_lending_arbitrum.sql b/models/staging/aave/fact_aave_v3_lending_arbitrum.sql deleted file mode 100644 index 52912a08..00000000 --- a/models/staging/aave/fact_aave_v3_lending_arbitrum.sql +++ /dev/null @@ -1,64 +0,0 @@ -{{ config(materialized="table") }} -with - unioned as ( - select * - from landing_database.prod_landing.raw_aave_v3_lending_arbitrum - union all - select * - from - {{ - source( - "PROD_LANDING", "raw_aave_v3_arbitrum_borrows_deposits_revenue" - ) - }} - - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"category"::string as category, - flat_json.value:"app"::string as app, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"stable_borrows"::float as stable_borrows, - flat_json.value:"variable_borrows"::float as variable_borrows, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ), - combined_data as ( - select - date, - 'arbitrum' as chain, - 'aave' as app, - 'DeFi' as category, - sum(borrows_usd) as daily_borrows_usd, - sum(supply_usd) as daily_supply_usd - from map_reduce_json - group by date - ) - -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_data diff --git a/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql b/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql deleted file mode 100644 index 59ba4747..00000000 --- a/models/staging/aave/fact_aave_v3_lending_arbitrum_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_arbitrum") }} diff --git a/models/staging/aave/fact_aave_v3_lending_avalanche.sql b/models/staging/aave/fact_aave_v3_lending_avalanche.sql deleted file mode 100644 index 6d9c4978..00000000 --- a/models/staging/aave/fact_aave_v3_lending_avalanche.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="table") }} -{{ - fact_aave_fork_lending( - "raw_aave_v3_avalanche_borrows_deposits_revenue", "avalanche", "aave_v3" - ) -}} diff --git a/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql b/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql deleted file mode 100644 index 62d15347..00000000 --- a/models/staging/aave/fact_aave_v3_lending_avalanche_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_avalanche") }} diff --git a/models/staging/aave/fact_aave_v3_lending_base.sql b/models/staging/aave/fact_aave_v3_lending_base.sql deleted file mode 100644 index 176038fb..00000000 --- a/models/staging/aave/fact_aave_v3_lending_base.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="table") }} -{{ - fact_aave_fork_lending( - "raw_aave_v3_base_borrows_deposits_revenue", "base", "aave_v3" - ) -}} diff --git a/models/staging/aave/fact_aave_v3_lending_base_gold.sql b/models/staging/aave/fact_aave_v3_lending_base_gold.sql deleted file mode 100644 index 9ba1d354..00000000 --- a/models/staging/aave/fact_aave_v3_lending_base_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_base") }} diff --git a/models/staging/aave/fact_aave_v3_lending_ethereum.sql b/models/staging/aave/fact_aave_v3_lending_ethereum.sql deleted file mode 100644 index 9c610e12..00000000 --- a/models/staging/aave/fact_aave_v3_lending_ethereum.sql +++ /dev/null @@ -1,64 +0,0 @@ -{{ config(materialized="table") }} -with - unioned as ( - select * - from landing_database.prod_landing.raw_aave_v3_lending_ethereum - union all - select * - from - {{ - source( - "PROD_LANDING", "raw_aave_v3_ethereum_borrows_deposits_revenue" - ) - }} - - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"category"::string as category, - flat_json.value:"app"::string as app, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"stable_borrows"::float as stable_borrows, - flat_json.value:"variable_borrows"::float as variable_borrows, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ), - combined_data as ( - select - date, - 'ethereum' as chain, - 'aave' as app, - 'DeFi' as category, - sum(borrows_usd) as daily_borrows_usd, - sum(supply_usd) as daily_supply_usd - from map_reduce_json - group by date - ) - -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_data diff --git a/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql b/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql deleted file mode 100644 index eda6ef81..00000000 --- a/models/staging/aave/fact_aave_v3_lending_ethereum_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_ethereum") }} diff --git a/models/staging/aave/fact_aave_v3_lending_fantom.sql b/models/staging/aave/fact_aave_v3_lending_fantom.sql deleted file mode 100644 index 18478da0..00000000 --- a/models/staging/aave/fact_aave_v3_lending_fantom.sql +++ /dev/null @@ -1,5 +0,0 @@ -{{ config(materialized="table") }} - fact_aave_fork_lending( - "raw_aave_v3_fantom_borrows_deposits_revenue", "fantom", "aave_v3" - ) -}} diff --git a/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql b/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql deleted file mode 100644 index 7fefb4b2..00000000 --- a/models/staging/aave/fact_aave_v3_lending_fantom_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_fantom") }} diff --git a/models/staging/aave/fact_aave_v3_lending_harmony.sql b/models/staging/aave/fact_aave_v3_lending_harmony.sql deleted file mode 100644 index 47b0cf17..00000000 --- a/models/staging/aave/fact_aave_v3_lending_harmony.sql +++ /dev/null @@ -1,2 +0,0 @@ -{{ config(materialized="table") }} -fact_aave_fork_lending("raw_aave_v3_lending_harmony", "harmony", "aave_v3") diff --git a/models/staging/aave/fact_aave_v3_lending_metis.sql b/models/staging/aave/fact_aave_v3_lending_metis.sql deleted file mode 100644 index eaefa900..00000000 --- a/models/staging/aave/fact_aave_v3_lending_metis.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="table") }} -{{ - fact_aave_fork_lending( - "raw_aave_v3_metis_borrows_deposits_revenue", "metis", "aave_v3" - ) -}} diff --git a/models/staging/aave/fact_aave_v3_lending_optimism.sql b/models/staging/aave/fact_aave_v3_lending_optimism.sql deleted file mode 100644 index d5cc7a5b..00000000 --- a/models/staging/aave/fact_aave_v3_lending_optimism.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="table") }} -{{ - fact_aave_fork_lending( - "raw_aave_v3_optimism_borrows_deposits_revenue", "optimism", "aave_v3" - ) -}} diff --git a/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql b/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql deleted file mode 100644 index a545d42d..00000000 --- a/models/staging/aave/fact_aave_v3_lending_optimism_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_optimism") }} diff --git a/models/staging/aave/fact_aave_v3_lending_polygon.sql b/models/staging/aave/fact_aave_v3_lending_polygon.sql deleted file mode 100644 index b0e24f5a..00000000 --- a/models/staging/aave/fact_aave_v3_lending_polygon.sql +++ /dev/null @@ -1,60 +0,0 @@ -{{ config(materialized="table") }} -with - unioned as ( - select * - from landing_database.prod_landing.raw_aave_v3_lending_polygon - union all - select * - from - {{ source("PROD_LANDING", "raw_aave_v3_polygon_borrows_deposits_revenue") }} - - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"category"::string as category, - flat_json.value:"app"::string as app, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"stable_borrows"::float as stable_borrows, - flat_json.value:"variable_borrows"::float as variable_borrows, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ), - combined_data as ( - select - date, - 'polygon' as chain, - 'aave' as app, - 'DeFi' as category, - sum(borrows_usd) as daily_borrows_usd, - sum(supply_usd) as daily_supply_usd - from map_reduce_json - group by date - ) - -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from combined_data diff --git a/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql b/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql deleted file mode 100644 index af857aed..00000000 --- a/models/staging/aave/fact_aave_v3_lending_polygon_gold.sql +++ /dev/null @@ -1,3 +0,0 @@ -{{ config(materialized="table") }} -select date, chain, app, category, daily_borrows_usd, daily_supply_usd -from {{ ref("fact_aave_v3_lending_polygon") }} From 414615a6625a64b663870d38f571041935cbcae2 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 7 Aug 2024 12:04:47 -0400 Subject: [PATCH 114/213] Turned Data Freshness to error instead of warn (#364) --- models/staging/sui/_test_fact_sui_transactions.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/models/staging/sui/_test_fact_sui_transactions.yml b/models/staging/sui/_test_fact_sui_transactions.yml index c0adcd09..6bc7878f 100644 --- a/models/staging/sui/_test_fact_sui_transactions.yml +++ b/models/staging/sui/_test_fact_sui_transactions.yml @@ -12,4 +12,3 @@ - dbt_expectations.expect_row_values_to_have_recent_data: datepart: day interval: 3 - severity: warn From b82239324e8012866274eb26dcf0f7f8c6d5f752 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 7 Aug 2024 18:31:25 -0400 Subject: [PATCH 115/213] Stablecoin V2: Ton (#366) --- macros/p2p/p2p_stablecoin_transfers.sql | 8 +++++++- macros/stablecoins/stablecoin_balances.sql | 10 +++++++++- macros/stablecoins/stablecoin_metrics_all.sql | 6 +++++- macros/stablecoins/stablecoin_metrics_artemis.sql | 6 +++++- macros/stablecoins/stablecoin_metrics_p2p.sql | 6 +++++- .../agg_daily_stablecoin_breakdown_silver.sql | 1 + .../core/ez_ton_stablecoin_metrics_by_address.sql | 13 +++++++++++++ .../ton/raw/ez_ton_p2p_stablecoin_transfers.sql | 12 ++++++++++++ .../ton/raw/ez_ton_stablecoin_transfers.sql | 2 ++ models/staging/ton/fact_ton_stablecoin_balances.sql | 10 ++++++++++ .../staging/ton/fact_ton_stablecoin_metrics_all.sql | 10 ++++++++++ .../ton/fact_ton_stablecoin_metrics_artemis.sql | 10 ++++++++++ .../staging/ton/fact_ton_stablecoin_metrics_p2p.sql | 10 ++++++++++ 13 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 models/projects/ton/core/ez_ton_stablecoin_metrics_by_address.sql create mode 100644 models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql create mode 100644 models/staging/ton/fact_ton_stablecoin_balances.sql create mode 100644 models/staging/ton/fact_ton_stablecoin_metrics_all.sql create mode 100644 models/staging/ton/fact_ton_stablecoin_metrics_artemis.sql create mode 100644 models/staging/ton/fact_ton_stablecoin_metrics_p2p.sql diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index 77ca54dd..4b1916fb 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -1,6 +1,12 @@ {% macro p2p_stablecoin_transfers(chain) %} with - stablecoin_transfers as (select * from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers") }}), + stablecoin_transfers as ( + {% if chain in ("ton") %} + select * from {{ ref("ez_" ~ chain ~ "_stablecoin_transfers") }} + {% else %} + select * from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers") }} + {% endif %} + ), {% if chain in ("tron", "solana", "near") %} distinct_peer_address as ( select address diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 75337fc8..16f247d9 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -16,15 +16,23 @@ with , address {% if chain in ('solana') %} , amount as stablecoin_supply + {% elif chain == 'ton' %} + , balance_token as stablecoin_supply {% else %} , balance_token / pow(10, num_decimals) as stablecoin_supply {% endif %} - from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 + {% if chain == "ton" %} + from {{ ref("ez_" ~ chain ~ "_address_balances_by_token")}} t1 + {% else %} + from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 + {% endif %} inner join {{ ref("fact_" ~ chain ~ "_stablecoin_contracts")}} t2 on lower(t1.contract_address) = lower(t2.contract_address) where block_timestamp < to_date(sysdate()) {% if chain == 'tron' %} and lower(address) != lower('t9yd14nj9j7xab4dbgeix9h8unkkhxuwwb') --Tron Burn Address + {% elif chain == 'ton' %} + and lower(address) != lower('EQAj-peZGPH-cC25EAv4Q-h8cBXszTmkch6ba6wXC8BM4xdo') --TON Burn Address {% endif %} {% if backfill_date != '' %} and block_timestamp < '{{ backfill_date }}' diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index 8d1a1488..d761756d 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -9,7 +9,11 @@ with , symbol , transfer_volume , to_address - from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% if chain in ("ton") %} + from {{ ref("ez_" ~ chain ~ "_stablecoin_transfers")}} t + {% else %} + from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% endif %} {% if is_incremental() %} where block_timestamp >= ( select dateadd('day', -3, max(date)) diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 54a10f76..172dcfd3 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -9,7 +9,11 @@ with , symbol , transfer_volume , to_address - from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% if chain in ("ton") %} + from {{ ref("ez_" ~ chain ~ "_stablecoin_transfers")}} t + {% else %} + from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} + {% endif %} {% if is_incremental() %} where block_timestamp >= ( select dateadd('day', -3, max(date)) diff --git a/macros/stablecoins/stablecoin_metrics_p2p.sql b/macros/stablecoins/stablecoin_metrics_p2p.sql index 9b16472b..6e2736cb 100644 --- a/macros/stablecoins/stablecoin_metrics_p2p.sql +++ b/macros/stablecoins/stablecoin_metrics_p2p.sql @@ -9,7 +9,11 @@ with , symbol , amount_usd as transfer_volume , to_address - from {{ ref("fact_" ~ chain ~ "_p2p_stablecoin_transfers")}} t + {% if chain in ("ton") %} + from {{ ref("ez_" ~ chain ~ "_p2p_stablecoin_transfers")}} t + {% else %} + from {{ ref("fact_" ~ chain ~ "_p2p_stablecoin_transfers")}} t + {% endif %} left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c on lower(t.token_address) = lower(c.contract_address) {% if is_incremental() %} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index b401d003..d6e411e8 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -13,6 +13,7 @@ with ref("ez_solana_stablecoin_metrics_by_address"), ref("ez_tron_stablecoin_metrics_by_address"), ref("ez_bsc_stablecoin_metrics_by_address"), + ref("ez_ton_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/projects/ton/core/ez_ton_stablecoin_metrics_by_address.sql b/models/projects/ton/core/ez_ton_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..40eb52fe --- /dev/null +++ b/models/projects/ton/core/ez_ton_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="ton", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("ton")}} \ No newline at end of file diff --git a/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql new file mode 100644 index 00000000..43332d4e --- /dev/null +++ b/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="TON", + database="ton", + schema="raw", + alias="ez_p2p_stablecoin_transfers", + ) +}} + +{{ p2p_stablecoin_transfers("ton") }} \ No newline at end of file diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index 3ffd9032..88fb9ca5 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -12,6 +12,8 @@ select block_timestamp, trunc(block_timestamp, 'day') as date, + null as block_number, + trace_id as index, trace_id, tx_hash, from_address, diff --git a/models/staging/ton/fact_ton_stablecoin_balances.sql b/models/staging/ton/fact_ton_stablecoin_balances.sql new file mode 100644 index 00000000..68d7dc9f --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("ton")}} \ No newline at end of file diff --git a/models/staging/ton/fact_ton_stablecoin_metrics_all.sql b/models/staging/ton/fact_ton_stablecoin_metrics_all.sql new file mode 100644 index 00000000..cb9a21ae --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("ton")}} \ No newline at end of file diff --git a/models/staging/ton/fact_ton_stablecoin_metrics_artemis.sql b/models/staging/ton/fact_ton_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..96c47986 --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_artemis("ton")}} \ No newline at end of file diff --git a/models/staging/ton/fact_ton_stablecoin_metrics_p2p.sql b/models/staging/ton/fact_ton_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..d888ebdc --- /dev/null +++ b/models/staging/ton/fact_ton_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("ton")}} \ No newline at end of file From 299eba294411698e75ed071066c4dca72de85a90 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 7 Aug 2024 18:53:29 -0400 Subject: [PATCH 116/213] AAVE update ez metrics (#367) --- .../lending/aave_reserve_factor_revenue.sql | 2 - macros/lending/raw_aave_rpc_data.sql | 43 +++++++++++++++++++ models/projects/aave/core/ez_aave_metrics.sql | 2 + .../aave/core/ez_aave_metrics_by_chain.sql | 2 + .../aave/core/ez_aave_metrics_by_token.sql | 5 +++ .../raw_aave_v3_arbitrum_rpc_data.sql | 11 +++++ .../raw_aave_v2_avalanche_rpc_data.sql | 11 +++++ .../raw_aave_v3_avalanche_rpc_data.sql | 11 +++++ .../raw/base/raw_aave_v3_base_rpc_data.sql | 11 +++++ .../aave/raw/bsc/raw_aave_v3_bsc_rpc_data.sql | 11 +++++ .../raw_aave_v2_ethereum_rpc_data copy.sql | 11 +++++ .../raw_aave_v3_ethereum_rpc_data.sql | 11 +++++ .../gnosis/raw_aave_v3_gnosis_rpc_data.sql | 11 +++++ .../raw_aave_v3_optimism_rpc_data.sql | 11 +++++ .../polygon/raw_aave_v2_polygon_rpc_data.sql | 11 +++++ .../polygon/raw_aave_v3_polygon_rpc_data.sql | 11 +++++ 16 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 macros/lending/raw_aave_rpc_data.sql create mode 100644 models/projects/aave/raw/arbitrum/raw_aave_v3_arbitrum_rpc_data.sql create mode 100644 models/projects/aave/raw/avalanche/raw_aave_v2_avalanche_rpc_data.sql create mode 100644 models/projects/aave/raw/avalanche/raw_aave_v3_avalanche_rpc_data.sql create mode 100644 models/projects/aave/raw/base/raw_aave_v3_base_rpc_data.sql create mode 100644 models/projects/aave/raw/bsc/raw_aave_v3_bsc_rpc_data.sql create mode 100644 models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql create mode 100644 models/projects/aave/raw/ethereum/raw_aave_v3_ethereum_rpc_data.sql create mode 100644 models/projects/aave/raw/gnosis/raw_aave_v3_gnosis_rpc_data.sql create mode 100644 models/projects/aave/raw/optimism/raw_aave_v3_optimism_rpc_data.sql create mode 100644 models/projects/aave/raw/polygon/raw_aave_v2_polygon_rpc_data.sql create mode 100644 models/projects/aave/raw/polygon/raw_aave_v3_polygon_rpc_data.sql diff --git a/macros/lending/aave_reserve_factor_revenue.sql b/macros/lending/aave_reserve_factor_revenue.sql index 060e8e7a..9210e5c7 100644 --- a/macros/lending/aave_reserve_factor_revenue.sql +++ b/macros/lending/aave_reserve_factor_revenue.sql @@ -8,8 +8,6 @@ revenue_events as ( from {{chain}}_flipside.core.ez_decoded_event_logs where contract_address = lower('{{contract_address}}') and event_name = 'MintedToTreasury' - and block_timestamp >= '2024-06-08' - and block_timestamp < '2024-07-28' ) , revenue_events_usd as ( select diff --git a/macros/lending/raw_aave_rpc_data.sql b/macros/lending/raw_aave_rpc_data.sql new file mode 100644 index 00000000..da2b5a29 --- /dev/null +++ b/macros/lending/raw_aave_rpc_data.sql @@ -0,0 +1,43 @@ +{% macro raw_aave_rpc_data(raw_source_table, healed_source_table) %} +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + {% if healed_raw_table is defined %} + select * + from landing_database.prod_landing.{{healed_raw_table}} + union all + {% endif %} + select * + from {{ source("PROD_LANDING", raw_source_table) }} + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date +{% endmacro %} \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index 4458b673..ea310ce2 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -164,6 +164,7 @@ with select date , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native , sum(amount_usd) as treasury_value from aave_treasury group by date @@ -251,6 +252,7 @@ select , tvl , treasury_value , net_treasury_value + , treasury_value_native , token_holder_count , price , h24_volume diff --git a/models/projects/aave/core/ez_aave_metrics_by_chain.sql b/models/projects/aave/core/ez_aave_metrics_by_chain.sql index 89034670..3a18cd29 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_chain.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_chain.sql @@ -169,6 +169,7 @@ with date , chain , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native , sum(amount_usd) as treasury_value from aave_treasury group by date, 2 @@ -234,6 +235,7 @@ select , tvl , treasury_value , net_treasury_value + , treasury_value_native from aave_outstanding_supply_net_deposits_deposit_revenue left join aave_flashloan_fees using (date, chain) left join aave_liquidation_supply_side_revenue using (date, chain) diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql index b665b8e5..4c437fa4 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_token.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -196,6 +196,8 @@ with , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_nominal else 0 end) as net_treasury_value_nominal , sum(amount_usd) as treasury_value , sum(amount_nominal) as treasury_value_nominal + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_nominal else 0 end) as treasury_value_native_nominal from aave_treasury group by date, chain, token_address ) @@ -309,6 +311,9 @@ select , net_treasury_value_nominal , net_treasury_value + , treasury_value_native_nominal + , treasury_value_native + from aave_outstanding_supply_net_deposits_deposit_revenue left join aave_flashloan_fees using (date, chain, token_address) left join aave_liquidation_supply_side_revenue using (date, chain, token_address) diff --git a/models/projects/aave/raw/arbitrum/raw_aave_v3_arbitrum_rpc_data.sql b/models/projects/aave/raw/arbitrum/raw_aave_v3_arbitrum_rpc_data.sql new file mode 100644 index 00000000..03112321 --- /dev/null +++ b/models/projects/aave/raw/arbitrum/raw_aave_v3_arbitrum_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_arbitrum_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_arbitrum_borrows_deposits_revenue', 'raw_aave_v3_lending_arbitrum') }} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/raw_aave_v2_avalanche_rpc_data.sql b/models/projects/aave/raw/avalanche/raw_aave_v2_avalanche_rpc_data.sql new file mode 100644 index 00000000..c84890eb --- /dev/null +++ b/models/projects/aave/raw/avalanche/raw_aave_v2_avalanche_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v2_avalanche_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v2_avalanche_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/raw_aave_v3_avalanche_rpc_data.sql b/models/projects/aave/raw/avalanche/raw_aave_v3_avalanche_rpc_data.sql new file mode 100644 index 00000000..77a2453d --- /dev/null +++ b/models/projects/aave/raw/avalanche/raw_aave_v3_avalanche_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_avalanche_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_avalanche_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/base/raw_aave_v3_base_rpc_data.sql b/models/projects/aave/raw/base/raw_aave_v3_base_rpc_data.sql new file mode 100644 index 00000000..30401e8b --- /dev/null +++ b/models/projects/aave/raw/base/raw_aave_v3_base_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_base_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_base_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/raw_aave_v3_bsc_rpc_data.sql b/models/projects/aave/raw/bsc/raw_aave_v3_bsc_rpc_data.sql new file mode 100644 index 00000000..d49bf554 --- /dev/null +++ b/models/projects/aave/raw/bsc/raw_aave_v3_bsc_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_bsc_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_bsc_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql b/models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql new file mode 100644 index 00000000..4720e0d1 --- /dev/null +++ b/models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v2_ethereum_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v2_ethereum_borrows_deposits_revenue', 'raw_aave_v2_lending_ethereum') }} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/raw_aave_v3_ethereum_rpc_data.sql b/models/projects/aave/raw/ethereum/raw_aave_v3_ethereum_rpc_data.sql new file mode 100644 index 00000000..73924ef0 --- /dev/null +++ b/models/projects/aave/raw/ethereum/raw_aave_v3_ethereum_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_ethereum_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_ethereum_borrows_deposits_revenue', 'raw_aave_v3_lending_ethereum') }} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/raw_aave_v3_gnosis_rpc_data.sql b/models/projects/aave/raw/gnosis/raw_aave_v3_gnosis_rpc_data.sql new file mode 100644 index 00000000..62e89514 --- /dev/null +++ b/models/projects/aave/raw/gnosis/raw_aave_v3_gnosis_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_gnosis_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_gnosis_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/raw_aave_v3_optimism_rpc_data.sql b/models/projects/aave/raw/optimism/raw_aave_v3_optimism_rpc_data.sql new file mode 100644 index 00000000..a8cb1add --- /dev/null +++ b/models/projects/aave/raw/optimism/raw_aave_v3_optimism_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_optimism_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_optimism_borrows_deposits_revenue') }} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/raw_aave_v2_polygon_rpc_data.sql b/models/projects/aave/raw/polygon/raw_aave_v2_polygon_rpc_data.sql new file mode 100644 index 00000000..cedbbc70 --- /dev/null +++ b/models/projects/aave/raw/polygon/raw_aave_v2_polygon_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v2_polygon_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v2_polygon_borrows_deposits_revenue', 'raw_aave_v2_lending_polygon') }} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/raw_aave_v3_polygon_rpc_data.sql b/models/projects/aave/raw/polygon/raw_aave_v3_polygon_rpc_data.sql new file mode 100644 index 00000000..dfa89c42 --- /dev/null +++ b/models/projects/aave/raw/polygon/raw_aave_v3_polygon_rpc_data.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="AAVE", + database="aave", + schema="raw", + alias="raw_v3_polygon_rpc_data", + ) +}} + +{{ raw_aave_rpc_data('raw_aave_v3_polygon_borrows_deposits_revenue', 'raw_aave_v3_lending_polygon') }} \ No newline at end of file From 1cd6461bd0ad2cb0d5eca3ab17558a738fd1ff23 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 7 Aug 2024 18:53:40 -0400 Subject: [PATCH 117/213] Remove Parallel Finance (#365) --- dbt_project.yml | 2 -- .../core/ez_parallel_finance_metrics.sql | 33 ----------------- .../__parallel_finance__sources.yml | 8 ----- ..._parallel_finance_daa_gas_gas_usd_txns.yml | 35 ------------------- .../fact_parallel_finance_daa.sql | 17 --------- ..._parallel_finance_daa_gas_gas_usd_txns.sql | 6 ---- .../fact_parallel_finance_gas_gas_usd.sql | 19 ---------- .../fact_parallel_finance_txns.sql | 17 --------- 8 files changed, 137 deletions(-) delete mode 100644 models/projects/parallel_finance/core/ez_parallel_finance_metrics.sql delete mode 100644 models/staging/parallel_finance/__parallel_finance__sources.yml delete mode 100644 models/staging/parallel_finance/_test_fact_parallel_finance_daa_gas_gas_usd_txns.yml delete mode 100644 models/staging/parallel_finance/fact_parallel_finance_daa.sql delete mode 100644 models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql delete mode 100644 models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql delete mode 100644 models/staging/parallel_finance/fact_parallel_finance_txns.sql diff --git a/dbt_project.yml b/dbt_project.yml index 79d1fca1..e70ba3a5 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -115,8 +115,6 @@ models: +snowflake_warehouse: "OSMOSIS" pancakeswap: +snowflake_warehouse: "PANCAKESWAP_SM" - parallel_finance: - +snowflake_warehouse: "PARALLEL_FINANCE" polkadot: +snowflake_warehouse: "POLKADOT" polygon: diff --git a/models/projects/parallel_finance/core/ez_parallel_finance_metrics.sql b/models/projects/parallel_finance/core/ez_parallel_finance_metrics.sql deleted file mode 100644 index 11d5a5aa..00000000 --- a/models/projects/parallel_finance/core/ez_parallel_finance_metrics.sql +++ /dev/null @@ -1,33 +0,0 @@ -{{ - config( - materialized="table" - , snowflake_warehouse="PARALLEL_FINANCE" - , database="parallel_finance" - , schema="core" - , alias="ez_metrics" - ) -}} - -with - fundamental_data as ( - select - date - , txns - , daa as dau - , gas_usd as fees - , gas as fees_native - from {{ ref("fact_parallel_finance_daa_gas_gas_usd_txns") }} - ) - , defillama_data as ({{ get_defillama_metrics("parallel") }}) - -select - fundamental_data.date - , 'parallel_finance' as chain - , txns - , dau - , fees - , fees_native - , tvl -from fundamental_data -left join defillama_data using (date) -where fundamental_data.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/staging/parallel_finance/__parallel_finance__sources.yml b/models/staging/parallel_finance/__parallel_finance__sources.yml deleted file mode 100644 index a8dbd19d..00000000 --- a/models/staging/parallel_finance/__parallel_finance__sources.yml +++ /dev/null @@ -1,8 +0,0 @@ -sources: - - name: PROD_LANDING - schema: PROD_LANDING - database: LANDING_DATABASE - tables: - - name: raw_parallel_finance_gas - - name: raw_parallel_finance_txns - - name: raw_parallel_finance_daa diff --git a/models/staging/parallel_finance/_test_fact_parallel_finance_daa_gas_gas_usd_txns.yml b/models/staging/parallel_finance/_test_fact_parallel_finance_daa_gas_gas_usd_txns.yml deleted file mode 100644 index ab61010c..00000000 --- a/models/staging/parallel_finance/_test_fact_parallel_finance_daa_gas_gas_usd_txns.yml +++ /dev/null @@ -1,35 +0,0 @@ -models: - - name: fact_parallel_finance_daa_gas_gas_usd_txns - tests: - - "dbt_expectations.expect_table_row_count_to_be_between:": - min_value: 1 - max_value: 1000000 - columns: - - name: CHAIN - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: DATE - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - dbt_expectations.expect_row_values_to_have_recent_data: - datepart: day - interval: 3 - severity: warn - - name: gas_usd - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: gas - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: daa - tests: - - not_null - - dbt_expectations.expect_column_to_exist - - name: txns - tests: - - not_null - - dbt_expectations.expect_column_to_exist diff --git a/models/staging/parallel_finance/fact_parallel_finance_daa.sql b/models/staging/parallel_finance/fact_parallel_finance_daa.sql deleted file mode 100644 index 7ef645f9..00000000 --- a/models/staging/parallel_finance/fact_parallel_finance_daa.sql +++ /dev/null @@ -1,17 +0,0 @@ -{{ config(materialized="view") }} - -with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_parallel_finance_daa") }} - ), - raw as ( - select date(value:date) as date, value:"value"::integer as daa - from - {{ source("PROD_LANDING", "raw_parallel_finance_daa") }}, - lateral flatten(input => parse_json(source_json)) - where extraction_date = (select max_date from max_extraction) - ) -select raw.date, 'parallel_finance' as chain, daa -from raw -where raw.date < to_date(sysdate()) diff --git a/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql b/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql deleted file mode 100644 index ba519f00..00000000 --- a/models/staging/parallel_finance/fact_parallel_finance_daa_gas_gas_usd_txns.sql +++ /dev/null @@ -1,6 +0,0 @@ -{{ config(materialized="view") }} -select t1.date, t1.chain, daa, txns, gas, gas_usd -from {{ ref("fact_parallel_finance_txns") }} t1 -left join {{ ref("fact_parallel_finance_daa") }} t2 on t1.date = t2.date -left join {{ ref("fact_parallel_finance_gas_gas_usd") }} t3 on t1.date = t3.date -where t1.date < to_date(sysdate()) diff --git a/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql b/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql deleted file mode 100644 index 72ba38b3..00000000 --- a/models/staging/parallel_finance/fact_parallel_finance_gas_gas_usd.sql +++ /dev/null @@ -1,19 +0,0 @@ -{{ config(materialized="view") }} - -with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_parallel_finance_gas") }} - ), - raw as ( - select date(value:date) as date, value:"value"::float as gas - from - {{ source("PROD_LANDING", "raw_parallel_finance_gas") }}, - lateral flatten(input => parse_json(source_json)) - where extraction_date = (select max_date from max_extraction) - ), - prices as ({{ get_coingecko_price_with_latest("ethereum") }}) -select raw.date, 'parallel_finance' as chain, gas, gas * coalesce(price, 0) as gas_usd -from raw -left join prices on raw.date = prices.date -where raw.date < to_date(sysdate()) diff --git a/models/staging/parallel_finance/fact_parallel_finance_txns.sql b/models/staging/parallel_finance/fact_parallel_finance_txns.sql deleted file mode 100644 index f305cc8c..00000000 --- a/models/staging/parallel_finance/fact_parallel_finance_txns.sql +++ /dev/null @@ -1,17 +0,0 @@ -{{ config(materialized="view") }} - -with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_parallel_finance_txns") }} - ), - raw as ( - select date(value:date) as date, value:"value"::integer as txns - from - {{ source("PROD_LANDING", "raw_parallel_finance_txns") }}, - lateral flatten(input => parse_json(source_json)) - where extraction_date = (select max_date from max_extraction) - ) -select raw.date, 'parallel_finance' as chain, txns -from raw -where raw.date < to_date(sysdate()) From 91969b69e978265c5ee7a41788230b2e86631204 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 7 Aug 2024 19:02:29 -0400 Subject: [PATCH 118/213] aave_quickfix (#368) --- ...hereum_rpc_data copy.sql => raw_aave_v2_ethereum_rpc_data.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename models/projects/aave/raw/ethereum/{raw_aave_v2_ethereum_rpc_data copy.sql => raw_aave_v2_ethereum_rpc_data.sql} (100%) diff --git a/models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql b/models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data.sql similarity index 100% rename from models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data copy.sql rename to models/projects/aave/raw/ethereum/raw_aave_v2_ethereum_rpc_data.sql From 5836baa0a49205838e444f0c3e9cea2dbca18f3d Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 7 Aug 2024 19:23:34 -0400 Subject: [PATCH 119/213] Stablecoin V2: Forcing Ton P2P Lineage (#369) --- models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql index 43332d4e..386bed59 100644 --- a/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_p2p_stablecoin_transfers.sql @@ -1,3 +1,4 @@ +--depends_on: {{ ref("ez_ton_stablecoin_transfers") }} {{ config( materialized="incremental", From c6ecbdaa4bc519c095d6738a0c1103504ee4ab2a Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 8 Aug 2024 09:22:18 -0400 Subject: [PATCH 120/213] C911: ton stablecoin job (#370) --- macros/p2p/p2p_stablecoin_transfers.sql | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index 4b1916fb..e8eacb03 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -23,18 +23,18 @@ with t1.to_address, t1.amount, coalesce( - fact_coingecko_token_date_adjusted_gold.shifted_token_price_usd * transfer_volume, 1 * transfer_volume + pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.shifted_token_price_usd * transfer_volume, 1 * transfer_volume ) as amount_usd from stablecoin_transfers t1 join - fact_{{ chain }}_stablecoin_contracts + pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS on lower(t1.contract_address) - = lower(fact_{{ chain }}_stablecoin_contracts.contract_address) + = lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.contract_address) left join - fact_coingecko_token_date_adjusted_gold - on lower(fact_{{ chain }}_stablecoin_contracts.coingecko_id) - = lower(fact_coingecko_token_date_adjusted_gold.coingecko_id) - and t1.date = fact_coingecko_token_date_adjusted_gold.date + pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD + on lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.coingecko_id) + = lower(pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.coingecko_id) + and t1.date = pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.date inner join distinct_peer_address t2 on lower(t1.to_address) = lower(t2.address) inner join distinct_peer_address t3 on lower(t1.from_address) = lower(t3.address) {% if chain == "solana" %} @@ -68,14 +68,14 @@ with t1.to_address, t1.amount, coalesce( - fact_coingecko_token_date_adjusted_gold.shifted_token_price_usd * transfer_volume, 1 * transfer_volume + pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.shifted_token_price_usd * transfer_volume, 1 * transfer_volume ) as amount_usd from stablecoin_transfers t1 - join fact_{{ chain }}_stablecoin_contracts - on lower(t1.contract_address) = lower(fact_{{ chain }}_stablecoin_contracts.contract_address) - left join fact_coingecko_token_date_adjusted_gold - on lower(fact_{{ chain }}_stablecoin_contracts.coingecko_id) = lower(fact_coingecko_token_date_adjusted_gold.coingecko_id) - and t1.date = fact_coingecko_token_date_adjusted_gold.date + join pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS + on lower(t1.contract_address) = lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.contract_address) + left join pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD + on lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.coingecko_id) = lower(pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.coingecko_id) + and t1.date = pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.date where not t1.to_address in (select contract_address from distinct_contracts) and not t1.from_address in (select contract_address from distinct_contracts) {% if is_incremental() %} From 69655c4818fceceaaab18773fa7f57b17a866156 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 8 Aug 2024 12:48:20 -0400 Subject: [PATCH 121/213] Added Optimism filtered transfers + tagged transfered (#371) --- .../transfers/get_native_token_transfers.sql | 38 +++++++ .../transfers/get_token_transfer_filtered.sql | 56 +++++++++ ...fact_optimism_filtered_token_transfers.sql | 9 ++ .../fact_optimism_labeled_transfers.sql | 107 ++++++++++++++++++ .../fact_optimism_native_transfers.sql | 9 ++ 5 files changed, 219 insertions(+) create mode 100644 macros/transfers/get_native_token_transfers.sql create mode 100644 macros/transfers/get_token_transfer_filtered.sql create mode 100644 models/staging/optimism/fact_optimism_filtered_token_transfers.sql create mode 100644 models/staging/optimism/fact_optimism_labeled_transfers.sql create mode 100644 models/staging/optimism/fact_optimism_native_transfers.sql diff --git a/macros/transfers/get_native_token_transfers.sql b/macros/transfers/get_native_token_transfers.sql new file mode 100644 index 00000000..42ae27ce --- /dev/null +++ b/macros/transfers/get_native_token_transfers.sql @@ -0,0 +1,38 @@ +{% macro get_native_token_transfers(chain) %} +With + {% if chain == "avalanche" %} + prices as ({{ get_coingecko_price_with_latest("avalanche-2") }}) + {% elif chain == "polygon" %} + prices as ({{ get_coingecko_price_with_latest("matic-network") }}) + {% elif chain == "tron" %} + prices as ({{ get_coingecko_price_with_latest("tron") }}) + {% elif chain == "solana" %} + prices as ({{ get_coingecko_price_with_latest("solana") }}) + {% elif chain == "near" %} + prices as ({{ get_coingecko_price_with_latest("near") }}) + {% else %} + prices as ({{ get_coingecko_price_with_latest("ethereum") }}) + {% endif %} + select + block_timestamp, + block_number, + tx_hash, + trace_index as index, + from_address, + to_address, + amount_precise as amount, + 'native' as token_address, + coalesce(t1.amount_precise * price, 0) as amount_usd + from {{ chain }}_flipside.core.ez_native_transfers t1 + left join prices on prices.date = t1.block_timestamp::date + where + to_address != from_address + and lower(from_address) != lower('0x0000000000000000000000000000000000000000') + and lower(to_address) != lower('0x0000000000000000000000000000000000000000') + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(block_timestamp)) + from {{ this }} + ) + {% endif %} +{% endmacro %} diff --git a/macros/transfers/get_token_transfer_filtered.sql b/macros/transfers/get_token_transfer_filtered.sql new file mode 100644 index 00000000..338a2a44 --- /dev/null +++ b/macros/transfers/get_token_transfer_filtered.sql @@ -0,0 +1,56 @@ +{% macro get_token_transfer_filtered(chain, limit_number=1000, blacklist=('')) %} +With + dex_swap_liquidity_pairs as (-- all pairs with non-zero liquidity + select distinct + token_in, + token_out, + sum(amount_in_usd) as amount_in_usd + from {{ chain }}_flipside.defi.ez_dex_swaps + where (amount_in_usd is not null and amount_out_usd is not null) and + (amount_in_usd > 0 and amount_out_usd > 0) and + abs( + ln(coalesce(nullif(amount_in_usd, 0), 1)) / ln(10) + - ln(coalesce(nullif(amount_out_usd, 0), 1)) / ln(10) + ) + < 1 + group by token_in, token_out + order by amount_in_usd desc + limit {{ limit_number }} + ), + tokens as ( + select distinct token_in as token + from {{ chain }}_flipside.defi.ez_dex_swaps + where lower(token_in) in (select lower(token_in) from dex_swap_liquidity_pairs) + union + select distinct token_out as token + from {{ chain }}_flipside.defi.ez_dex_swaps + where lower(token_out) in (select lower(token_out) from dex_swap_liquidity_pairs) + ) + select + block_timestamp, + block_number, + tx_hash, + event_index as index, + from_address, + to_address, + amount_precise as amount, + contract_address as token_address, + amount_usd + from {{ chain }}_flipside.core.ez_token_transfers + where + amount_usd is not null + and token_address in (select token from tokens) + {% if blacklist is string %} and lower(token_address) != lower('{{ blacklist }}') + {% elif blacklist | length > 1 %} and token_address not in {{ blacklist }} --make sure you pass in lower + {% endif %} + and to_address != from_address + and lower(from_address) != lower('0x0000000000000000000000000000000000000000') + and lower(to_address) != lower('0x0000000000000000000000000000000000000000') + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(block_timestamp)) + from {{ this }} + ) + {% endif %} + +{% endmacro %} diff --git a/models/staging/optimism/fact_optimism_filtered_token_transfers.sql b/models/staging/optimism/fact_optimism_filtered_token_transfers.sql new file mode 100644 index 00000000..ab2c5ed3 --- /dev/null +++ b/models/staging/optimism/fact_optimism_filtered_token_transfers.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["tx_hash", "index"], + ) +}} + +{{ get_token_transfer_filtered('optimism') }} diff --git a/models/staging/optimism/fact_optimism_labeled_transfers.sql b/models/staging/optimism/fact_optimism_labeled_transfers.sql new file mode 100644 index 00000000..af30fa06 --- /dev/null +++ b/models/staging/optimism/fact_optimism_labeled_transfers.sql @@ -0,0 +1,107 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["tx_hash", "index", "token_address"], + ) +}} + +with + labeled_optimism_contracts as ( + SELECT + address, + name, + friendly_name, + app, + chain, + category, + sub_category + FROM {{ ref("dim_contracts_gold") }} + WHERE chain = 'optimism' + ), + all_optimism_contracts as ( + SELECT + contract_address as address, + c.name, + c.friendly_name, + c.app, + c.chain, + c.category, + c.sub_category + FROM {{ ref("dim_optimism_contract_addresses") }} + left join labeled_optimism_contracts as c on contract_address = c.address + ), + chain_token_transfers as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_optimism_filtered_token_transfers"), + ref("fact_optimism_native_transfers"), + ] + ) + }} + ), + labeled_chain_transfers as ( + SELECT + block_timestamp, + block_number, + tx_hash, + index, + from_address, + from_contracts.name as from_name, + from_contracts.friendly_name as from_friendly_name, + from_contracts.app as from_app, + from_contracts.chain as from_chain, + case + when from_contracts.address is not NULL and from_contracts.category is not NULL then from_contracts.category + when from_contracts.address is not NULL and from_contracts.category is NULL then 'Unlabeled' + else 'EOA' + end as from_category, + to_address, + to_contracts.name as to_name, + to_contracts.friendly_name as to_friendly_name, + to_contracts.app as to_app, + to_contracts.chain as to_chain, + case + when to_contracts.category is not NULL then to_contracts.category + when to_contracts.address is not NULL and to_contracts.category is NULL then 'Unlabeled' + else 'EOA' + end as to_category, + amount, + token_address, + amount_usd + FROM chain_token_transfers as t + left join all_optimism_contracts as to_contracts on lower(t.to_address) = lower(to_contracts.address) + left join all_optimism_contracts as from_contracts on lower(t.from_address) = lower(from_contracts.address) + {% if is_incremental() %} + WHERE block_timestamp >= ( + select dateadd('day', -3, max(block_timestamp)) + from {{ this }} + ) + {% endif %} + ) +SELECT + max(block_timestamp) as block_timestamp, + max(block_number) as block_number, + tx_hash, + index, + token_address, + max_by(from_address, block_timestamp) as from_address, + max_by(from_name, block_timestamp) as from_name, + max_by(from_friendly_name, block_timestamp) as from_friendly_name, + max_by(from_app, block_timestamp) as from_app, + max_by(from_chain, block_timestamp) as from_chain, + max_by(from_category, block_timestamp) as from_category, + max_by(to_address, block_timestamp) as to_address, + max_by(to_name, block_timestamp) as to_name, + max_by(to_friendly_name, block_timestamp) as to_friendly_name, + max_by(to_app, block_timestamp) as to_app, + max_by(to_chain, block_timestamp) as to_chain, + max_by(to_category, block_timestamp) as to_category, + max_by(amount, block_timestamp) as amount, + max_by(amount_usd, block_timestamp) as amount_usd +FROM labeled_chain_transfers +GROUP BY + tx_hash, + index, + token_address diff --git a/models/staging/optimism/fact_optimism_native_transfers.sql b/models/staging/optimism/fact_optimism_native_transfers.sql new file mode 100644 index 00000000..cf6981d8 --- /dev/null +++ b/models/staging/optimism/fact_optimism_native_transfers.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["tx_hash", "index"], + ) +}} + +{{ get_native_token_transfers('optimism') }} From 83d4983afdba6ff8c3e604e22639ad7d16247c4c Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:17:17 -0400 Subject: [PATCH 122/213] Stablecoin V2: Celo (#372) --- macros/decode/token_transfer_events.sql | 27 ++++++++++++++++--- .../contracts/dim_celo_contract_addresses.sql | 15 +++++++++++ .../agg_daily_stablecoin_breakdown_silver.sql | 1 + .../fact_celo_stablecoin_contracts.sql | 3 ++- .../ez_celo_stablecoin_metrics_by_address.sql | 13 +++++++++ .../fact_celo_p2p_stablecoin_transfers.sql | 9 +++++++ .../celo/fact_celo_stablecoin_balances.sql | 10 +++++++ .../celo/fact_celo_stablecoin_metrics_all.sql | 10 +++++++ .../fact_celo_stablecoin_metrics_artemis.sql | 10 +++++++ .../celo/fact_celo_stablecoin_metrics_p2p.sql | 10 +++++++ 10 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 models/dimensions/contracts/dim_celo_contract_addresses.sql create mode 100644 models/projects/celo/core/ez_celo_stablecoin_metrics_by_address.sql create mode 100644 models/staging/celo/fact_celo_p2p_stablecoin_transfers.sql create mode 100644 models/staging/celo/fact_celo_stablecoin_balances.sql create mode 100644 models/staging/celo/fact_celo_stablecoin_metrics_all.sql create mode 100644 models/staging/celo/fact_celo_stablecoin_metrics_artemis.sql create mode 100644 models/staging/celo/fact_celo_stablecoin_metrics_p2p.sql diff --git a/macros/decode/token_transfer_events.sql b/macros/decode/token_transfer_events.sql index 26b0454e..6fad11d4 100644 --- a/macros/decode/token_transfer_events.sql +++ b/macros/decode/token_transfer_events.sql @@ -17,8 +17,29 @@ and amount is not null and tx_status = 1 {% if is_incremental() %} - and - block_timestamp - >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} + {% if chain in ('celo') %} + union all + select + t1.block_timestamp, + t1.block_number, + t1.transaction_hash, + null as event_index, + t1.from_address as origin_from_address, + t1.to_address as origin_to_address, + t1.fee_currency as contract_address, + t1.from_address, + t2.miner as to_address, + t1.gas * t1.gas_price as amount, + 1 as tx_status -- Fees are paid whether or not the transaction is successful + from {{ref("fact_celo_transactions")}} t1 + left join {{ref("fact_celo_blocks")}} t2 + using (block_number) + where fee_currency is not null + {% if is_incremental() %} + and block_timestamp >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} + {% endif %} {% endmacro %} diff --git a/models/dimensions/contracts/dim_celo_contract_addresses.sql b/models/dimensions/contracts/dim_celo_contract_addresses.sql new file mode 100644 index 00000000..6bf5bd9b --- /dev/null +++ b/models/dimensions/contracts/dim_celo_contract_addresses.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized='incremental', + unique_key='contract_address', + snowflake_warehouse="CELO" + ) +}} +select min(block_timestamp) as block_timestamp, contract_address, 'CREATE' as type -- Celo does not currently support CREATE2 +from {{ref("fact_celo_transactions")}} +where to_address is null + {% if is_incremental() %} + and block_timestamp + >= (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} +group by contract_address \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql index d6e411e8..c944fd4f 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_silver.sql @@ -14,6 +14,7 @@ with ref("ez_tron_stablecoin_metrics_by_address"), ref("ez_bsc_stablecoin_metrics_by_address"), ref("ez_ton_stablecoin_metrics_by_address"), + ref("ez_celo_stablecoin_metrics_by_address"), ] ) }} diff --git a/models/metrics/stablecoins/contracts/fact_celo_stablecoin_contracts.sql b/models/metrics/stablecoins/contracts/fact_celo_stablecoin_contracts.sql index e7b023b0..0a89e1f6 100644 --- a/models/metrics/stablecoins/contracts/fact_celo_stablecoin_contracts.sql +++ b/models/metrics/stablecoins/contracts/fact_celo_stablecoin_contracts.sql @@ -8,5 +8,6 @@ from ('cEUR', '0xd8763cba276a3738e6de85b4b3bf5fded6d6ca73', 18, 'celo-euro', 0), ('cREAL', '0xe8537a3d056da446677b9e9d6c5db704eaab4787', 18, 'celo-real-creal', 0), ('USDGLO', '0x4F604735c1cF31399C6E711D5962b2B3E0225AD3', 18, 'glo-dollar', 0), - ('cUSD', '0x765DE816845861e75A25fCA122bb6898B8B1282a', 18, 'celo-dollar', 0) + ('cUSD', '0x765DE816845861e75A25fCA122bb6898B8B1282a', 18, 'celo-dollar', 0), + ('cKES', '0x456a3d042c0dbd3db53d5489e98dfb038553b0d0', 18, 'celo-kenyan-shilling', 0) ) as results(symbol, contract_address, num_decimals, coingecko_id, initial_supply) diff --git a/models/projects/celo/core/ez_celo_stablecoin_metrics_by_address.sql b/models/projects/celo/core/ez_celo_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..9e478414 --- /dev/null +++ b/models/projects/celo/core/ez_celo_stablecoin_metrics_by_address.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + database="celo", + schema="core", + alias="ez_stablecoin_metrics_by_address", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics("celo")}} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_p2p_stablecoin_transfers.sql b/models/staging/celo/fact_celo_p2p_stablecoin_transfers.sql new file mode 100644 index 00000000..ce493ebd --- /dev/null +++ b/models/staging/celo/fact_celo_p2p_stablecoin_transfers.sql @@ -0,0 +1,9 @@ +--depends_on: {{ ref("fact_celo_stablecoin_transfers") }} +{{ + config( + materialized="incremental", + unique_key=["tx_hash", "index"], + ) +}} + +{{ p2p_stablecoin_transfers("celo") }} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_stablecoin_balances.sql b/models/staging/celo/fact_celo_stablecoin_balances.sql new file mode 100644 index 00000000..34d1160f --- /dev/null +++ b/models/staging/celo/fact_celo_stablecoin_balances.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_balances("celo")}} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_stablecoin_metrics_all.sql b/models/staging/celo/fact_celo_stablecoin_metrics_all.sql new file mode 100644 index 00000000..aa30048f --- /dev/null +++ b/models/staging/celo/fact_celo_stablecoin_metrics_all.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_all("celo")}} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_stablecoin_metrics_artemis.sql b/models/staging/celo/fact_celo_stablecoin_metrics_artemis.sql new file mode 100644 index 00000000..858da93a --- /dev/null +++ b/models/staging/celo/fact_celo_stablecoin_metrics_artemis.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_artemis("celo")}} \ No newline at end of file diff --git a/models/staging/celo/fact_celo_stablecoin_metrics_p2p.sql b/models/staging/celo/fact_celo_stablecoin_metrics_p2p.sql new file mode 100644 index 00000000..c546eb3b --- /dev/null +++ b/models/staging/celo/fact_celo_stablecoin_metrics_p2p.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="incremental", + unique_key="unique_id", + snowflake_warehouse="STABLECOIN_V2_LG_2", + ) +}} + + +{{stablecoin_metrics_p2p("celo")}} \ No newline at end of file From 7cd8fb5bb6451f51d4ac8eff73b0abb493aab221 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:20:23 -0400 Subject: [PATCH 123/213] Stablecoin V2: Clean up (#373) --- ...agg_daily_stablecoin_metrics_breakdown.sql | 221 ----------------- ...illed_stablecoin_balances_by_addresses.sql | 225 ------------------ ...rum_daily_stablecoin_metrics_breakdown.sql | 9 - .../agg_arbitrum_stablecoin_balances.sql | 9 - ...che_daily_stablecoin_metrics_breakdown.sql | 9 - .../agg_avalanche_stablecoin_balances.sql | 9 - ...ase_daily_stablecoin_metrics_breakdown.sql | 9 - .../base/agg_base_stablecoin_balances.sql | 9 - ...ast_daily_stablecoin_metrics_breakdown.sql | 9 - .../blast/agg_blast_stablecoin_balances.sql | 9 - ...bsc_daily_stablecoin_metrics_breakdown.sql | 9 - .../bsc/agg_bsc_stablecoin_balances.sql | 9 - ...eum_daily_stablecoin_metrics_breakdown.sql | 9 - .../agg_ethereum_stablecoin_balances.sql | 9 - ...ism_daily_stablecoin_metrics_breakdown.sql | 9 - .../agg_optimism_stablecoin_balances.sql | 9 - ...gon_daily_stablecoin_metrics_breakdown.sql | 9 - .../agg_polygon_stablecoin_balances.sql | 9 - ...ana_daily_stablecoin_metrics_breakdown.sql | 9 - .../solana/agg_solana_stablecoin_balances.sql | 9 - ...ron_daily_stablecoin_metrics_breakdown.sql | 9 - .../tron/agg_tron_stablecoin_balances.sql | 9 - 22 files changed, 626 deletions(-) delete mode 100644 macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql delete mode 100644 macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql delete mode 100644 models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql delete mode 100644 models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/avalanche/agg_avalanche_stablecoin_balances.sql delete mode 100644 models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/base/agg_base_stablecoin_balances.sql delete mode 100644 models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/blast/agg_blast_stablecoin_balances.sql delete mode 100644 models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/bsc/agg_bsc_stablecoin_balances.sql delete mode 100644 models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/ethereum/agg_ethereum_stablecoin_balances.sql delete mode 100644 models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/optimism/agg_optimism_stablecoin_balances.sql delete mode 100644 models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/polygon/agg_polygon_stablecoin_balances.sql delete mode 100644 models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/solana/agg_solana_stablecoin_balances.sql delete mode 100644 models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql delete mode 100644 models/staging/tron/agg_tron_stablecoin_balances.sql diff --git a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql b/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index d59a9c90..00000000 --- a/macros/stablecoins/agg_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,221 +0,0 @@ -{% macro agg_daily_stablecoin_metrics_breakdown(chain) %} -with - transfer_transactions as ( - select - block_timestamp - , tx_hash - , from_address - , contract_address - , symbol - , transfer_volume - , to_address - , index - -- TODO: Move into stablecoin transfers table if needed - -- Logic is slightly different for solana tron and near - , case - {% if chain not in ('solana', 'tron', 'near') %} - when - to_address not in (select contract_address from {{ ref("dim_" ~ chain ~ "_contract_addresses") }}) - and from_address not in (select contract_address from {{ ref("dim_" ~ chain ~ "_contract_addresses")}}) - then 1 - else 0 - {% else %} - when - to_address in (select address from {{ ref("dim_" ~ chain ~ "_eoa_addresses") }}) - and from_address in (select address from {{ ref("dim_" ~ chain ~ "_eoa_addresses") }}) - then 1 - else 0 - {% endif %} - end as is_p2p - from {{ ref("fact_" ~ chain ~ "_stablecoin_transfers")}} - {% if is_incremental() %} - where block_timestamp >= ( - select dateadd('day', -3, max(date)) - from {{ this }} - ) - {% endif %} - ), - filtered_contracts as ( - select * from {{ ref("dim_contracts_gold")}} where chain = '{{ chain }}' - ), - artemis_mev_filtered as ( - select - st.* - , coalesce(dl.app,'other') as from_app - , coalesce(dlt.app,'other') as to_app - , coalesce(dl.sub_category,'other') as from_category - , coalesce(dlt.sub_category,'other') as to_category - from transfer_transactions st - left join filtered_contracts dl on lower(st.from_address) = lower(dl.address) - left join filtered_contracts dlt on lower(st.to_address) = lower(dlt.address) - where lower(from_app) != 'mev' or lower(to_app) != 'mev' - ), - artemis_cex_filters as ( - select distinct tx_hash - from artemis_mev_filtered - where from_app = to_app - and lower(from_category) in ('exchange', 'market maker') - ), - artemis_ranked_transfer_filter as ( - select - artemis_mev_filtered.*, - row_number() over (partition by tx_hash order by transfer_volume desc) AS rn - from artemis_mev_filtered - where tx_hash not in (select tx_hash from artemis_cex_filters) - ), - artemis_max_transfer_filter as ( - select - block_timestamp - , tx_hash - , contract_address - , symbol - , from_address - , to_address - , transfer_volume as artemis_stablecoin_transfer_volume - from artemis_ranked_transfer_filter - where rn = 1 - ), - artemis_filter_metrics as ( - select - block_timestamp::date as date - , from_address - , contract_address - , symbol - , sum( - case - when from_address is not null - then 1 - else 0 - end - ) as artemis_stablecoin_daily_txns - , sum(artemis_stablecoin_transfer_volume) as artemis_stablecoin_transfer_volume - from artemis_max_transfer_filter - group by 1, 2, 3, 4 - ), - transfer_transactions_agg as ( - select - block_timestamp::date as date - , transfer_transactions.from_address::string as from_address - , transfer_transactions.contract_address as contract_address - , transfer_transactions.symbol as symbol - , sum(transfer_volume) as stablecoin_transfer_volume - , sum( - case - when transfer_transactions.from_address is not null - then 1 - else 0 - end - ) as stablecoin_daily_txns - , sum(transfer_volume * is_p2p) as p2p_stablecoin_transfer_volume - , sum( - case - when transfer_transactions.from_address is not null and is_p2p = 1 - then 1 - else 0 - end - ) as p2p_stablecoin_daily_txns - from transfer_transactions - group by 1, 2, 3, 4 - ), - results as ( - select - coalesce(balances.date, transfer_transactions_agg.date) as date - - , coalesce(balances.contract_address, transfer_transactions_agg.contract_address) as contract_address - , coalesce(balances.symbol, transfer_transactions_agg.symbol) as symbol - - , balances.address as from_address - , filtered_contracts.name as contract_name - , coalesce(filtered_contracts.name, balances.address, transfer_transactions_agg.from_address) as contract - , filtered_contracts.friendly_name as application - , dim_apps_gold.icon as icon - , filtered_contracts.app as app - , case - when filtered_contracts.sub_category = 'Market Maker' then filtered_contracts.sub_category - when filtered_contracts.sub_category = 'Exchange' then filtered_contracts.sub_category - else filtered_contracts.category - end as category - - , coalesce(stablecoin_transfer_volume, 0) as stablecoin_transfer_volume - , coalesce(stablecoin_daily_txns, 0) as stablecoin_daily_txns - , coalesce(stablecoin_supply, 0) as stablecoin_supply - , coalesce(artemis_filter_metrics.artemis_stablecoin_transfer_volume, 0) as artemis_stablecoin_transfer_volume - , coalesce(artemis_filter_metrics.artemis_stablecoin_daily_txns, 0) as artemis_stablecoin_daily_txns - , coalesce(p2p_stablecoin_transfer_volume, 0) as p2p_stablecoin_transfer_volume - , coalesce(p2p_stablecoin_daily_txns, 0) as p2p_stablecoin_daily_txns - , case - {% if chain not in ('solana', 'tron', 'near') %} - when - balances.address not in (select contract_address from {{ ref("dim_" ~ chain ~ "_contract_addresses")}}) - then 1 - else 0 - {% else %} - when - balances.address in (select address from {{ ref("dim_" ~ chain ~ "_eoa_addresses") }}) - then 1 - else 0 - {% endif %} - end as is_wallet - , '{{ chain }}' as chain - from {{ ref("agg_" ~ chain ~ "_stablecoin_balances")}} balances - -- stablecoin_balances needs to go first because of the defined dumby address - -- 0x00000000000000000000000000000DEADARTEMIS - left join transfer_transactions_agg - on lower(transfer_transactions_agg.from_address) = lower(balances.address) - and transfer_transactions_agg.date = balances.date - and lower(transfer_transactions_agg.contract_address) = lower(balances.contract_address) - left join artemis_filter_metrics - on lower(artemis_filter_metrics.from_address) = lower(balances.address) - and artemis_filter_metrics.date = balances.date - and lower(artemis_filter_metrics.contract_address) = lower(balances.contract_address) - left join filtered_contracts - on lower(balances.address) = lower(filtered_contracts.address) - left join pc_dbt_db.prod.dim_apps_gold dim_apps_gold - on filtered_contracts.app = dim_apps_gold.namespace - -- Remove rows that do not add to any metrics - where balances.stablecoin_supply != 0 or transfer_transactions_agg.from_address is not null - {% if is_incremental() %} - and balances.date >= (select dateadd('day', -3, max(date)) from {{ this }}) - {% endif %} - ), - results_dollar_denom as ( - select - results.date - , results.contract_address - , results.symbol - - , from_address - , contract_name - , contract - , application - , icon - , app - , category - , stablecoin_transfer_volume * coalesce( - d.token_current_price, 1 - ) as stablecoin_transfer_volume - , stablecoin_daily_txns - , artemis_stablecoin_transfer_volume * coalesce( - d.token_current_price, 1 - ) as artemis_stablecoin_transfer_volume - , artemis_stablecoin_daily_txns - , p2p_stablecoin_transfer_volume * coalesce( - d.token_current_price, 1 - ) as p2p_stablecoin_transfer_volume - , p2p_stablecoin_daily_txns - , stablecoin_supply * coalesce( - d.token_current_price, 1 - ) as stablecoin_supply - , is_wallet - , chain - from results - left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c - on lower(results.contract_address) = lower(c.contract_address) - left join {{ ref( "fact_coingecko_token_realtime_data") }} d - on lower(c.coingecko_id) = lower(d.token_id) - - ) -select * -from results_dollar_denom -where date < to_date(sysdate()) -{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql b/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql deleted file mode 100644 index b7054ee3..00000000 --- a/macros/stablecoins/agg_foward_filled_stablecoin_balances_by_addresses.sql +++ /dev/null @@ -1,225 +0,0 @@ -{% macro agg_foward_filled_stablecoin_balances_by_addresses(chain) %} - --- Use this for a backfill, --- It is important to backfill 6 months at a time otherwise the query will --- take > 4 hours on an XL to run --- Make sure to set to '' after backfill is complete - - {% set backfill_date = '' %} -with - stablecoin_balances as ( - select - block_timestamp - , lower(t1.contract_address) as contract_address - , symbol - , lower(address) as address - {% if chain in ('solana') %} - , amount_unadj / pow(10, num_decimals) as stablecoin_supply - {% else %} - , balance_token / pow(10, num_decimals) as stablecoin_supply - {% endif %} - from {{ ref("fact_" ~ chain ~ "_address_balances_by_token")}} t1 - inner join {{ ref("fact_" ~ chain ~ "_stablecoin_contracts")}} t2 - on lower(t1.contract_address) = lower(t2.contract_address) - where block_timestamp < to_date(sysdate()) - {% if chain == 'tron' %} - and lower(address) != lower('t9yd14nj9j7xab4dbgeix9h8unkkhxuwwb') --Tron Burn Address - and stablecoin_supply > 0 - {% endif %} - {% if backfill_date != '' %} - and block_timestamp < '{{ backfill_date }}' - {% endif %} - {% if is_incremental() %} - and block_timestamp >= (select dateadd('day', -1, max(date)) from {{ this }}) - {% endif %} - ) - {% if is_incremental() %} - , stale_stablecoin_balances as ( - select - date as block_timestamp - , t.contract_address - , t.symbol - , t.address - , t.stablecoin_supply - from {{this}} t - left join ( - select distinct address, contract_address - from stablecoin_balances - ) sb on t.address = sb.address and t.contract_address = sb.contract_address - where date >= (select dateadd('day', -1, max(date)) from {{ this }}) - and sb.address is null and sb.contract_address is null - ) - {% endif %} - , heal_balance_table as ( - select - block_timestamp - , contract_address - , symbol - , address - , stablecoin_supply - from stablecoin_balances - {% if is_incremental() %} - union - select - block_timestamp - , contract_address - , symbol - , address - , stablecoin_supply - from stale_stablecoin_balances - {% endif %} - ) - , date_range as ( - select - min(block_timestamp)::date as date - , contract_address - , symbol - , address - from heal_balance_table - group by contract_address, address, symbol - - union all - - select - dateadd(day, 1, date) as date - , contract_address - , symbol - , address - from date_range - where date < dateadd(day, -1, to_date(sysdate())) - {% if backfill_date != '' %} - and date < dateadd(day, -1, '{{ backfill_date }}') - {% endif %} - ) - , balances as ( - select - block_timestamp::date as date - , contract_address - , symbol - , address - , stablecoin_supply - from ( - select - block_timestamp - , contract_address - , symbol - , address - , stablecoin_supply - , row_number() over (partition by block_timestamp::date, contract_address, address, symbol order by block_timestamp desc) AS rn - from heal_balance_table - ) - where rn = 1 - ) - , historical_supply_by_address_balances as ( - select - date - , address - , contract_address - , symbol - , coalesce( - stablecoin_supply, - LAST_VALUE(balances.stablecoin_supply ignore nulls) over ( - partition by contract_address, address, symbol - order by date - rows between unbounded preceding and current row - ) - ) as stablecoin_supply - from date_range - left join balances using (date, contract_address, symbol, address) - --TODO CHANGE THIS - {% if chain in ('solana') %} - where address not in (select distinct (premint_address) from {{ ref("fact_"~chain~"_stablecoin_premint_addresses")}}) - {% endif %} - {% if is_incremental() %} - {% if chain in ('solana', 'ethereum', 'tron') %} - and - {% else %} - where - {% endif %} - date > (select max(date) from {{ this }}) - {% endif %} - ) - , daily_flows as ( - select - date - , sum(inflow) inflow - , lower(contract_address) as contract_address - , symbol - from {{ref("fact_" ~ chain ~ "_stablecoin_transfers")}} - {% if backfill_date != '' %} - where date < '{{ backfill_date }}' - {% endif %} - - group by date, contract_address, symbol - union all - select - dateadd( - day, -1, (select min(trunc(date, 'day')) from {{ref("fact_" ~ chain ~ "_stablecoin_transfers")}}) - ) as date - , sum(initial_supply) as inflow - , lower(contract_address) as contract_address - , symbol - from {{ref("fact_" ~ chain ~ "_stablecoin_contracts")}} - {% if backfill_date != '' %} - where date < '{{ backfill_date }}' - {% endif %} - group by contract_address, symbol - ) - , historical_supply_by_inflow_outflow as ( - select - date - , symbol - , stablecoin_supply - , contract_address - from ( - select - date - , symbol - , sum(inflow) over ( - partition by contract_address, symbol order by date asc - ) as stablecoin_supply - , contract_address - from daily_flows - ) - ) - , total_historical_supply_by_address_balances as ( - select - date - , contract_address - , symbol - , sum(stablecoin_supply) as stablecoin_supply - from historical_supply_by_address_balances - group by date, contract_address, symbol - ) - - select - date - , address - , contract_address - , symbol - {% if chain == 'tron' %} - , round(stablecoin_supply, 4) as stablecoin_supply - {% else %} - , stablecoin_supply - {% endif %} - - from historical_supply_by_address_balances - union - -- this is a hacky way to fix the issue with the balances table and get the total supply for that day - select - date - , '0x00000000000000000000000000000DEADARTEMIS' as address - , contract_address - , symbol - {% if chain == 'tron' %} - , round(round(historical_supply_by_inflow_outflow.stablecoin_supply, 4) - round(total_historical_supply_by_address_balances.stablecoin_supply, 4), 0) as stablecoin_supply - {% else %} - , historical_supply_by_inflow_outflow.stablecoin_supply - total_historical_supply_by_address_balances.stablecoin_supply as stablecoin_supply - {% endif %} - - from total_historical_supply_by_address_balances - left join historical_supply_by_inflow_outflow using (date, contract_address, symbol) - -{% endmacro %} - - diff --git a/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql b/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index acae1e23..00000000 --- a/models/staging/arbitrum/agg_arbitrum_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("arbitrum") }} diff --git a/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql b/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql deleted file mode 100644 index 4405d4ce..00000000 --- a/models/staging/arbitrum/agg_arbitrum_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("arbitrum") }} diff --git a/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql b/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 58d8e43d..00000000 --- a/models/staging/avalanche/agg_avalanche_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("avalanche") }} diff --git a/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql b/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql deleted file mode 100644 index b0a5a988..00000000 --- a/models/staging/avalanche/agg_avalanche_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("avalanche") }} diff --git a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql b/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index a624860b..00000000 --- a/models/staging/base/agg_base_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("base") }} diff --git a/models/staging/base/agg_base_stablecoin_balances.sql b/models/staging/base/agg_base_stablecoin_balances.sql deleted file mode 100644 index 6ee7c526..00000000 --- a/models/staging/base/agg_base_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("base") }} diff --git a/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql b/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 7dc62d92..00000000 --- a/models/staging/blast/agg_blast_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG_2", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("blast") }} diff --git a/models/staging/blast/agg_blast_stablecoin_balances.sql b/models/staging/blast/agg_blast_stablecoin_balances.sql deleted file mode 100644 index 28edc881..00000000 --- a/models/staging/blast/agg_blast_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("blast") }} diff --git a/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql b/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 5b0c9054..00000000 --- a/models/staging/bsc/agg_bsc_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("bsc") }} diff --git a/models/staging/bsc/agg_bsc_stablecoin_balances.sql b/models/staging/bsc/agg_bsc_stablecoin_balances.sql deleted file mode 100644 index a8e97b05..00000000 --- a/models/staging/bsc/agg_bsc_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("bsc") }} diff --git a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql b/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index dab81c21..00000000 --- a/models/staging/ethereum/agg_ethereum_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG_2", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("ethereum") }} \ No newline at end of file diff --git a/models/staging/ethereum/agg_ethereum_stablecoin_balances.sql b/models/staging/ethereum/agg_ethereum_stablecoin_balances.sql deleted file mode 100644 index 713d4706..00000000 --- a/models/staging/ethereum/agg_ethereum_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("ethereum") }} \ No newline at end of file diff --git a/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql b/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 66cf716a..00000000 --- a/models/staging/optimism/agg_optimism_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG_2", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("optimism") }} diff --git a/models/staging/optimism/agg_optimism_stablecoin_balances.sql b/models/staging/optimism/agg_optimism_stablecoin_balances.sql deleted file mode 100644 index a55bc13e..00000000 --- a/models/staging/optimism/agg_optimism_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG_2", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("optimism") }} diff --git a/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql b/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 01d79a05..00000000 --- a/models/staging/polygon/agg_polygon_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG_2", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("polygon") }} diff --git a/models/staging/polygon/agg_polygon_stablecoin_balances.sql b/models/staging/polygon/agg_polygon_stablecoin_balances.sql deleted file mode 100644 index fe76a02e..00000000 --- a/models/staging/polygon/agg_polygon_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG_2", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("polygon") }} diff --git a/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql b/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index 053f425b..00000000 --- a/models/staging/solana/agg_solana_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "symbol", "from_address"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("solana") }} \ No newline at end of file diff --git a/models/staging/solana/agg_solana_stablecoin_balances.sql b/models/staging/solana/agg_solana_stablecoin_balances.sql deleted file mode 100644 index ddeea262..00000000 --- a/models/staging/solana/agg_solana_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("solana") }} \ No newline at end of file diff --git a/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql b/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql deleted file mode 100644 index b7c891bd..00000000 --- a/models/staging/tron/agg_tron_daily_stablecoin_metrics_breakdown.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["date", "contract_address", "from_address"], - snowflake_warehouse="STABLECOIN_V2_LG", - ) -}} - -{{ agg_daily_stablecoin_metrics_breakdown("tron") }} diff --git a/models/staging/tron/agg_tron_stablecoin_balances.sql b/models/staging/tron/agg_tron_stablecoin_balances.sql deleted file mode 100644 index 5ee57837..00000000 --- a/models/staging/tron/agg_tron_stablecoin_balances.sql +++ /dev/null @@ -1,9 +0,0 @@ -{{ - config( - materialized="incremental", - unique_key=["address", "contract_address", "date"], - snowflake_warehouse="BALANCES_LG_2", - ) -}} - -{{ agg_foward_filled_stablecoin_balances_by_addresses("tron") }} From 8c5f0a3ebfb5e8d3b91888f6b932763adab493f2 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:32:33 -0400 Subject: [PATCH 124/213] Remove Blast stablecoin from data pipeline (#374) --- .../daily/agg_blast_stablecoin_breakdown_daily.sql | 5 ----- .../breakdowns/daily/agg_stablecoin_breakdown_daily.sql | 1 - .../monthly/agg_blast_stablecoin_breakdown_monthly.sql | 5 ----- .../breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql | 1 - .../weekly/agg_blast_stablecoin_breakdown_weekly.sql | 5 ----- .../breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql | 1 - .../stablecoins/metrics/agg_blast_stablecoin_metrics.sql | 3 --- .../metrics/agg_daily_stablecoin_metrics_silver.sql | 1 - models/projects/blast/core/ez_blast_metrics.sql | 1 - 9 files changed, 23 deletions(-) delete mode 100644 models/metrics/stablecoins/breakdowns/daily/agg_blast_stablecoin_breakdown_daily.sql delete mode 100644 models/metrics/stablecoins/breakdowns/monthly/agg_blast_stablecoin_breakdown_monthly.sql delete mode 100644 models/metrics/stablecoins/breakdowns/weekly/agg_blast_stablecoin_breakdown_weekly.sql delete mode 100644 models/metrics/stablecoins/metrics/agg_blast_stablecoin_metrics.sql diff --git a/models/metrics/stablecoins/breakdowns/daily/agg_blast_stablecoin_breakdown_daily.sql b/models/metrics/stablecoins/breakdowns/daily/agg_blast_stablecoin_breakdown_daily.sql deleted file mode 100644 index eef31663..00000000 --- a/models/metrics/stablecoins/breakdowns/daily/agg_blast_stablecoin_breakdown_daily.sql +++ /dev/null @@ -1,5 +0,0 @@ --- depends_on: {{ ref('fact_blast_stablecoin_contracts') }} --- depends_on: {{ ref('fact_blast_address_balances_by_token') }} --- depends_on: {{ ref('fact_blast_stablecoin_transfers') }} -{{ config(materialized="table", snowflake_warehouse="STABLECOIN_LG_2") }} -{{ agg_chain_stablecoin_breakdown("blast", "day") }} diff --git a/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql b/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql index 724becd8..b5225868 100644 --- a/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql +++ b/models/metrics/stablecoins/breakdowns/daily/agg_stablecoin_breakdown_daily.sql @@ -7,7 +7,6 @@ with ref("agg_arbitrum_stablecoin_breakdown_daily"), ref("agg_avalanche_stablecoin_breakdown_daily"), ref("agg_base_stablecoin_breakdown_daily"), - ref("agg_blast_stablecoin_breakdown_daily"), ref("agg_bsc_stablecoin_breakdown_daily"), ref("agg_celo_stablecoin_breakdown_daily"), ref("agg_ethereum_stablecoin_breakdown_daily"), diff --git a/models/metrics/stablecoins/breakdowns/monthly/agg_blast_stablecoin_breakdown_monthly.sql b/models/metrics/stablecoins/breakdowns/monthly/agg_blast_stablecoin_breakdown_monthly.sql deleted file mode 100644 index 2046b977..00000000 --- a/models/metrics/stablecoins/breakdowns/monthly/agg_blast_stablecoin_breakdown_monthly.sql +++ /dev/null @@ -1,5 +0,0 @@ --- depends_on: {{ ref('fact_blast_stablecoin_contracts') }} --- depends_on: {{ ref('fact_blast_address_balances_by_token') }} --- depends_on: {{ ref('fact_blast_stablecoin_transfers') }} -{{ config(materialized="table", snowflake_warehouse="STABLECOIN_LG_2") }} -{{ agg_chain_stablecoin_breakdown("blast", "month") }} diff --git a/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql b/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql index 52ac1dfb..aeb665dd 100644 --- a/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql +++ b/models/metrics/stablecoins/breakdowns/monthly/agg_stablecoin_breakdown_monthly.sql @@ -7,7 +7,6 @@ with ref("agg_arbitrum_stablecoin_breakdown_monthly"), ref("agg_avalanche_stablecoin_breakdown_monthly"), ref("agg_base_stablecoin_breakdown_monthly"), - ref("agg_blast_stablecoin_breakdown_monthly"), ref("agg_bsc_stablecoin_breakdown_monthly"), ref("agg_celo_stablecoin_breakdown_monthly"), ref("agg_ethereum_stablecoin_breakdown_monthly"), diff --git a/models/metrics/stablecoins/breakdowns/weekly/agg_blast_stablecoin_breakdown_weekly.sql b/models/metrics/stablecoins/breakdowns/weekly/agg_blast_stablecoin_breakdown_weekly.sql deleted file mode 100644 index b5f9b831..00000000 --- a/models/metrics/stablecoins/breakdowns/weekly/agg_blast_stablecoin_breakdown_weekly.sql +++ /dev/null @@ -1,5 +0,0 @@ --- depends_on: {{ ref('fact_blast_stablecoin_contracts') }} --- depends_on: {{ ref('fact_blast_address_balances_by_token') }} --- depends_on: {{ ref('fact_blast_stablecoin_transfers') }} -{{ config(materialized="table", snowflake_warehouse="STABLECOIN_LG_2") }} -{{ agg_chain_stablecoin_breakdown("blast", "week") }} diff --git a/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql b/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql index 6bdd92b6..93b4d72b 100644 --- a/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql +++ b/models/metrics/stablecoins/breakdowns/weekly/agg_stablecoin_breakdown_weekly.sql @@ -7,7 +7,6 @@ with ref("agg_arbitrum_stablecoin_breakdown_weekly"), ref("agg_avalanche_stablecoin_breakdown_weekly"), ref("agg_base_stablecoin_breakdown_weekly"), - ref("agg_blast_stablecoin_breakdown_weekly"), ref("agg_bsc_stablecoin_breakdown_weekly"), ref("agg_celo_stablecoin_breakdown_weekly"), ref("agg_ethereum_stablecoin_breakdown_weekly"), diff --git a/models/metrics/stablecoins/metrics/agg_blast_stablecoin_metrics.sql b/models/metrics/stablecoins/metrics/agg_blast_stablecoin_metrics.sql deleted file mode 100644 index 285c892f..00000000 --- a/models/metrics/stablecoins/metrics/agg_blast_stablecoin_metrics.sql +++ /dev/null @@ -1,3 +0,0 @@ --- depends_on: {{ ref('fact_blast_stablecoin_contracts') }} --- depends_on: {{ ref('fact_blast_stablecoin_transfers') }} -{{ config(materialized="table") }} {{ agg_chain_stablecoin_metrics("blast") }} diff --git a/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql b/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql index 6014e825..a131ccbd 100644 --- a/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql +++ b/models/metrics/stablecoins/metrics/agg_daily_stablecoin_metrics_silver.sql @@ -7,7 +7,6 @@ with ref("agg_arbitrum_stablecoin_metrics"), ref("agg_avalanche_stablecoin_metrics"), ref("agg_base_stablecoin_metrics"), - ref("agg_blast_stablecoin_metrics"), ref("agg_bsc_stablecoin_metrics"), ref("agg_celo_stablecoin_metrics"), ref("agg_ethereum_stablecoin_metrics"), diff --git a/models/projects/blast/core/ez_blast_metrics.sql b/models/projects/blast/core/ez_blast_metrics.sql index 06a7136f..3e8d8962 100644 --- a/models/projects/blast/core/ez_blast_metrics.sql +++ b/models/projects/blast/core/ez_blast_metrics.sql @@ -12,7 +12,6 @@ with fundamental_data as ({{ get_fundamental_data_for_chain("blast") }}), defillama_data as ({{ get_defillama_metrics("blast") }}), - stablecoin_data as ({{ get_stablecoin_metrics("blast") }}), contract_data as ({{ get_contract_metrics("blast") }}), -- NOTE, this says l1 data cost, but that's inaccurate -- its both data and execution cost, but I'm following convention for now and we don't publish From 12be33fe52346f3605e1ec47702eb1e19571d5c4 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 8 Aug 2024 16:52:53 -0400 Subject: [PATCH 125/213] Stablecoin V2: removing clustering (#375) --- .../stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql index beeb14ac..0c50c74c 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", cluster_by=['chain']) }} +{{ config(materialized="table") }} select date , contract_address From 2e79ccf715fb403178a540daeda1c8d6403e45b8 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 8 Aug 2024 19:27:54 -0400 Subject: [PATCH 126/213] Stablecoin V2: Fixing cKES metrics (#376) --- macros/p2p/p2p_stablecoin_transfers.sql | 2 +- macros/stablecoins/stablecoin_balances.sql | 6 +++++- macros/stablecoins/stablecoin_metrics_all.sql | 2 +- macros/stablecoins/stablecoin_metrics_artemis.sql | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index e8eacb03..fe5efc68 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -68,7 +68,7 @@ with t1.to_address, t1.amount, coalesce( - pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.shifted_token_price_usd * transfer_volume, 1 * transfer_volume + pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.shifted_token_price_usd * transfer_volume, case when pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end * transfer_volume ) as amount_usd from stablecoin_transfers t1 join pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 16f247d9..81c0d626 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -143,7 +143,11 @@ with , st.symbol , stablecoin_supply as stablecoin_supply_native , stablecoin_supply * coalesce( - d.shifted_token_price_usd, 1 + d.shifted_token_price_usd, + case + when lower(c.coingecko_id) = lower('celo-kenyan-shilling') then 0.0077 + else 1 + end ) as stablecoin_supply from historical_supply_by_address_balances st left join {{ ref( "fact_" ~ chain ~ "_stablecoin_contracts") }} c diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index d761756d..b41a53cf 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -45,7 +45,7 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.shifted_token_price_usd, 1 + d.shifted_token_price_usd, case when c.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 172dcfd3..7a7a8140 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -85,7 +85,7 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.shifted_token_price_usd, 1 + d.shifted_token_price_usd, case when c.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics From ee74756e800c4a65f9b23451c0a14ff0d76649f6 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:25:15 -0400 Subject: [PATCH 127/213] Add Blast (#378) --- models/projects/blast/core/ez_blast_metrics.sql | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/models/projects/blast/core/ez_blast_metrics.sql b/models/projects/blast/core/ez_blast_metrics.sql index 3e8d8962..2cfb145d 100644 --- a/models/projects/blast/core/ez_blast_metrics.sql +++ b/models/projects/blast/core/ez_blast_metrics.sql @@ -25,7 +25,6 @@ select coalesce( fundamental_data.date, defillama_data.date, - stablecoin_data.date, contract_data.date, expenses_data.date ) as date, @@ -48,15 +47,9 @@ select tvl, dex_volumes, weekly_contracts_deployed, - weekly_contract_deployers, - stablecoin_total_supply, - stablecoin_txns, - stablecoin_dau, - stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume + weekly_contract_deployers from fundamental_data left join defillama_data on fundamental_data.date = defillama_data.date -left join stablecoin_data on fundamental_data.date = stablecoin_data.date left join contract_data on fundamental_data.date = contract_data.date left join expenses_data on fundamental_data.date = expenses_data.date left join rolling_metrics on fundamental_data.date = rolling_metrics.date From b930290c4312eb58e7fd24471e549b1966df79e0 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:38:07 -0400 Subject: [PATCH 128/213] C911: AAVE (#377) --- models/projects/aave/__aave__sources.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/models/projects/aave/__aave__sources.yml b/models/projects/aave/__aave__sources.yml index e2efb2ca..833c870e 100644 --- a/models/projects/aave/__aave__sources.yml +++ b/models/projects/aave/__aave__sources.yml @@ -10,10 +10,7 @@ sources: - name: raw_aave_v3_optimism_borrows_deposits_revenue - name: raw_aave_v3_arbitrum_borrows_deposits_revenue - name: raw_aave_v3_polygon_borrows_deposits_revenue - - name: raw_aave_v3_fantom_borrows_deposits_revenue - name: raw_aave_v3_avalanche_borrows_deposits_revenue - - name: raw_aave_v3_harmony_borrows_deposits_revenue - - name: raw_aave_v3_metis_borrows_deposits_revenue - name: raw_aave_v3_base_borrows_deposits_revenue - name: raw_aave_v3_gnosis_borrows_deposits_revenue - name: raw_aave_v3_bsc_borrows_deposits_revenue From 76501295e62a4ce940685aed559046b0ddd47a56 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 9 Aug 2024 15:09:50 -0400 Subject: [PATCH 129/213] Fixing cKES pricing on v1 tables (#380) --- .../stablecoins/agg_chain_stablecoin_breakdown.sql | 12 ++++++++++-- macros/stablecoins/agg_chain_stablecoin_metrics.sql | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/macros/stablecoins/agg_chain_stablecoin_breakdown.sql b/macros/stablecoins/agg_chain_stablecoin_breakdown.sql index 9b3e739e..346aef9f 100644 --- a/macros/stablecoins/agg_chain_stablecoin_breakdown.sql +++ b/macros/stablecoins/agg_chain_stablecoin_breakdown.sql @@ -127,12 +127,20 @@ category, results.symbol, stablecoin_transfer_volume * coalesce( - fact_coingecko_token_realtime_data.token_current_price, 1 + fact_coingecko_token_realtime_data.token_current_price, + case + when lower(fact_{{ chain }}_stablecoin_contracts.coingecko_id) = lower('celo-kenyan-shilling') then 0.0077 + else 1 + end ) as stablecoin_transfer_volume, stablecoin_daily_txns, stablecoin_dau, stablecoin_supply * coalesce( - fact_coingecko_token_realtime_data.token_current_price, 1 + fact_coingecko_token_realtime_data.token_current_price, + case + when lower(fact_{{ chain }}_stablecoin_contracts.coingecko_id) = lower('celo-kenyan-shilling') then 0.0077 + else 1 + end ) as stablecoin_supply, chain from results diff --git a/macros/stablecoins/agg_chain_stablecoin_metrics.sql b/macros/stablecoins/agg_chain_stablecoin_metrics.sql index b83a4170..a1e02413 100644 --- a/macros/stablecoins/agg_chain_stablecoin_metrics.sql +++ b/macros/stablecoins/agg_chain_stablecoin_metrics.sql @@ -67,7 +67,11 @@ -- TODO: Refactor to support weird currencies. Currently assumes -- everything is $1 if not found coalesce( - fact_coingecko_token_date_adjusted_gold.shifted_token_price_usd, 1 + fact_coingecko_token_date_adjusted_gold.shifted_token_price_usd, + case + when lower(fact_{{ chain }}_stablecoin_contracts.coingecko_id) = lower('celo-kenyan-shilling') then 0.0077 + else 1 + end ) as price, total_supply * price as total_supply, txns, From 126301de6ea4cfda7de089ba602f5d38c736ccd9 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 10 Aug 2024 10:40:51 -0400 Subject: [PATCH 130/213] Stablecoin V2: Adding to Common Database (#381) --- .../ez_stablecoin_metrics_by_address.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 models/common/ez_stablecoin_metrics_by_address.sql diff --git a/models/common/ez_stablecoin_metrics_by_address.sql b/models/common/ez_stablecoin_metrics_by_address.sql new file mode 100644 index 00000000..5df2d815 --- /dev/null +++ b/models/common/ez_stablecoin_metrics_by_address.sql @@ -0,0 +1,35 @@ +-- depends_on: {{ ref('agg_daily_stablecoin_breakdown_silver') }} + +{{ + config( + snowflake_warehouse="COMMON", + database="common", + schema="core", + materialized='view' + ) +}} + +select + date + , from_address + , contract_name + , contract + , application + , icon + , app + , category + , is_wallet + + , contract_address + , symbol + + , stablecoin_transfer_volume + , stablecoin_daily_txns + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns + , stablecoin_supply + , chain + , unique_id +from {{ ref('agg_daily_stablecoin_breakdown_silver') }} \ No newline at end of file From 19ed70105bb3d12c4527056aec08a46f6da81b0b Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 10 Aug 2024 11:09:26 -0400 Subject: [PATCH 131/213] Adding stablecoin transfers to Art Share (#382) --- .../raw/ez_arbitrum_stablecoin_transfers.sql | 13 +++++++++++++ .../raw/ez_avalanche_stablecoin_transfers.sql | 13 +++++++++++++ .../base/raw/ez_base_stablecoin_transfers.sql | 13 +++++++++++++ .../bsc/raw/ez_bsc_stablecoin_transfers.sql | 13 +++++++++++++ .../celo/raw/ez_celo_stablecoin_transfers.sql | 13 +++++++++++++ .../raw/ez_ethereum_stablecoin_transfers.sql | 13 +++++++++++++ .../raw/ez_optimism_stablecoin_transfers.sql | 13 +++++++++++++ .../polygon/raw/ez_polygon_stablecoin_transfers.sql | 13 +++++++++++++ .../solana/raw/ez_solana_stablecoin_transfers.sql | 13 +++++++++++++ .../tron/raw/ez_tron_stablecoin_transfers.sql | 13 +++++++++++++ 10 files changed, 130 insertions(+) create mode 100644 models/projects/arbitrum/raw/ez_arbitrum_stablecoin_transfers.sql create mode 100644 models/projects/avalanche/raw/ez_avalanche_stablecoin_transfers.sql create mode 100644 models/projects/base/raw/ez_base_stablecoin_transfers.sql create mode 100644 models/projects/bsc/raw/ez_bsc_stablecoin_transfers.sql create mode 100644 models/projects/celo/raw/ez_celo_stablecoin_transfers.sql create mode 100644 models/projects/ethereum/raw/ez_ethereum_stablecoin_transfers.sql create mode 100644 models/projects/optimism/raw/ez_optimism_stablecoin_transfers.sql create mode 100644 models/projects/polygon/raw/ez_polygon_stablecoin_transfers.sql create mode 100644 models/projects/solana/raw/ez_solana_stablecoin_transfers.sql create mode 100644 models/projects/tron/raw/ez_tron_stablecoin_transfers.sql diff --git a/models/projects/arbitrum/raw/ez_arbitrum_stablecoin_transfers.sql b/models/projects/arbitrum/raw/ez_arbitrum_stablecoin_transfers.sql new file mode 100644 index 00000000..e59ec835 --- /dev/null +++ b/models/projects/arbitrum/raw/ez_arbitrum_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="ARBITRUM", + database="arbitrum", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_arbitrum_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/avalanche/raw/ez_avalanche_stablecoin_transfers.sql b/models/projects/avalanche/raw/ez_avalanche_stablecoin_transfers.sql new file mode 100644 index 00000000..b972ecc6 --- /dev/null +++ b/models/projects/avalanche/raw/ez_avalanche_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="AVALANCHE", + database="avalanche", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_avalanche_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/base/raw/ez_base_stablecoin_transfers.sql b/models/projects/base/raw/ez_base_stablecoin_transfers.sql new file mode 100644 index 00000000..728a4bca --- /dev/null +++ b/models/projects/base/raw/ez_base_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="BASE", + database="base", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_base_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/bsc/raw/ez_bsc_stablecoin_transfers.sql b/models/projects/bsc/raw/ez_bsc_stablecoin_transfers.sql new file mode 100644 index 00000000..664f3275 --- /dev/null +++ b/models/projects/bsc/raw/ez_bsc_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="BSC_MD", + database="bsc", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_bsc_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/celo/raw/ez_celo_stablecoin_transfers.sql b/models/projects/celo/raw/ez_celo_stablecoin_transfers.sql new file mode 100644 index 00000000..3bc1e240 --- /dev/null +++ b/models/projects/celo/raw/ez_celo_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="CELO", + database="celo", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_celo_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/ethereum/raw/ez_ethereum_stablecoin_transfers.sql b/models/projects/ethereum/raw/ez_ethereum_stablecoin_transfers.sql new file mode 100644 index 00000000..827fdb79 --- /dev/null +++ b/models/projects/ethereum/raw/ez_ethereum_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="ETHEREUM", + database="ethereum", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_ethereum_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/optimism/raw/ez_optimism_stablecoin_transfers.sql b/models/projects/optimism/raw/ez_optimism_stablecoin_transfers.sql new file mode 100644 index 00000000..21528a92 --- /dev/null +++ b/models/projects/optimism/raw/ez_optimism_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="optimism", + database="optimism", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_optimism_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/polygon/raw/ez_polygon_stablecoin_transfers.sql b/models/projects/polygon/raw/ez_polygon_stablecoin_transfers.sql new file mode 100644 index 00000000..0b6fbae0 --- /dev/null +++ b/models/projects/polygon/raw/ez_polygon_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="POLYGON", + database="polygon", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_polygon_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/solana/raw/ez_solana_stablecoin_transfers.sql b/models/projects/solana/raw/ez_solana_stablecoin_transfers.sql new file mode 100644 index 00000000..aeac7c55 --- /dev/null +++ b/models/projects/solana/raw/ez_solana_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="SOLANA", + database="solana", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_solana_stablecoin_transfers")}} \ No newline at end of file diff --git a/models/projects/tron/raw/ez_tron_stablecoin_transfers.sql b/models/projects/tron/raw/ez_tron_stablecoin_transfers.sql new file mode 100644 index 00000000..949355f6 --- /dev/null +++ b/models/projects/tron/raw/ez_tron_stablecoin_transfers.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="view", + snowflake_warehouse="TRON", + database="tron", + schema="raw", + alias="ez_stablecoin_transfers", + ) +}} + +select + * +from {{ref("fact_tron_stablecoin_transfers")}} \ No newline at end of file From b05bd2f5ef8501acfbd585b728a4bf5815ecc176 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sat, 10 Aug 2024 14:23:37 -0400 Subject: [PATCH 132/213] C911: Removing Same Chain Inflows and outflows (#383) --- models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql index 1bf913ea..31ae66b9 100644 --- a/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql +++ b/models/metrics/bridges/agg_daily_bridge_flows_metrics_silver.sql @@ -88,3 +88,4 @@ select || category as unique_id from unioned where date < to_date(sysdate()) + and source_chain != destination_chain From 8c83a825eb731f99830eef6003fba2a94bad980f Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:18:24 -0400 Subject: [PATCH 133/213] C911: Updating Solana Schema's (#384) --- macros/p2p/filter_p2p_token_transfers.sql | 32 ++++++----------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/macros/p2p/filter_p2p_token_transfers.sql b/macros/p2p/filter_p2p_token_transfers.sql index 83237193..91617e18 100644 --- a/macros/p2p/filter_p2p_token_transfers.sql +++ b/macros/p2p/filter_p2p_token_transfers.sql @@ -24,33 +24,17 @@ {% else %} with {% if chain == "solana" %} - token_prices as ( - select - hour::date as date, - token_address, - avg(price) as price - from solana_flipside.price.ez_prices_hourly - {% if is_incremental() %} - where block_timestamp >= ( - select dateadd('day', -3, max(block_timestamp)) - from {{ this }} - ) - {% endif %} - group by date, token_address - ), dex_swap_liquidity_pairs as ( select t1.swap_from_mint as token_in, t1.swap_to_mint as token_out, - sum(swap_from_amount * t2.price) as amount_in_usd - from solana_flipside.defi.fact_swaps t1 - left join token_prices t2 on t2.token_address = t1.swap_from_mint and t1.block_timestamp::date = t2.date - left join token_prices t3 on t3.token_address = t1.swap_to_mint and t1.block_timestamp::date = t3.date - where swap_to_amount = 0 and swap_from_amount = 0 - and swap_from_amount * t2.price is null and swap_to_amount * t3.price is null + swap_from_amount_usd as amount_in_usd + from solana_flipside.defi.ez_dex_swaps t1 + where (swap_from_amount_usd is not null and swap_to_amount_usd is not null) + and (swap_from_amount_usd <> 0 and swap_to_amount_usd <> 0) and and abs( - ln(coalesce(nullif(swap_from_amount * t2.price, 0), 1)) / ln(10) - - ln(coalesce(nullif(swap_to_amount * t3.price, 0), 1)) / ln(10) + ln(coalesce(nullif(swap_from_amount_usd, 0), 1)) / ln(10) + - ln(coalesce(nullif(swap_to_amount_usd, 0), 1)) / ln(10) ) < 1 group by token_in, token_out @@ -59,12 +43,12 @@ ), tokens as ( select distinct swap_from_mint as token - from {{ chain }}_flipside.defi.fact_swaps + from solana_flipside.defi.ez_dex_swaps where lower(swap_from_mint) not in (select lower(contract_address) from {{ref("fact_" ~ chain ~ "_stablecoin_contracts") }}) and lower(swap_from_mint) in (select lower(token_in) from dex_swap_liquidity_pairs) union select distinct swap_to_mint as token - from {{ chain }}_flipside.defi.fact_swaps + from solana_flipside.defi.ez_dex_swaps where lower(swap_to_mint) not in (select lower(contract_address) from {{ref("fact_" ~ chain ~ "_stablecoin_contracts") }}) and lower(swap_to_mint) in (select lower(token_out) from dex_swap_liquidity_pairs) ) From be695b72ba0b0b7ad16d52bc6378ce8d315560d6 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 11 Aug 2024 16:33:23 -0400 Subject: [PATCH 134/213] Paypal: Adding Dim Contracts to Art Share (#385) --- models/common/dim_contracts.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 models/common/dim_contracts.sql diff --git a/models/common/dim_contracts.sql b/models/common/dim_contracts.sql new file mode 100644 index 00000000..353b0831 --- /dev/null +++ b/models/common/dim_contracts.sql @@ -0,0 +1,13 @@ +{{ + config( + snowflake_warehouse="COMMON", + database="common", + schema="core", + materialized='view' + ) +}} + + +select + * +from {{ref("dim_contracts_gold")}} \ No newline at end of file From 19f775fb281c385601aad698a617bf0e1bfa2e4c Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 11 Aug 2024 21:48:25 -0400 Subject: [PATCH 135/213] Solana P2P Token Transfers (#386) --- macros/p2p/filter_p2p_token_transfers.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/p2p/filter_p2p_token_transfers.sql b/macros/p2p/filter_p2p_token_transfers.sql index 91617e18..2f95b6f7 100644 --- a/macros/p2p/filter_p2p_token_transfers.sql +++ b/macros/p2p/filter_p2p_token_transfers.sql @@ -28,10 +28,10 @@ select t1.swap_from_mint as token_in, t1.swap_to_mint as token_out, - swap_from_amount_usd as amount_in_usd + sum(swap_from_amount_usd) as amount_in_usd from solana_flipside.defi.ez_dex_swaps t1 where (swap_from_amount_usd is not null and swap_to_amount_usd is not null) - and (swap_from_amount_usd <> 0 and swap_to_amount_usd <> 0) and + and (swap_from_amount_usd > 0 and swap_to_amount_usd > 0) and abs( ln(coalesce(nullif(swap_from_amount_usd, 0), 1)) / ln(10) - ln(coalesce(nullif(swap_to_amount_usd, 0), 1)) / ln(10) From 57c6277efc043b782202b3017d9a1a5cc6cf772b Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:55:07 -0400 Subject: [PATCH 136/213] added Optimism chain sankey dbt (#388) --- .../staging/optimism/fact_optimism_flows.sql | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 models/staging/optimism/fact_optimism_flows.sql diff --git a/models/staging/optimism/fact_optimism_flows.sql b/models/staging/optimism/fact_optimism_flows.sql new file mode 100644 index 00000000..48409192 --- /dev/null +++ b/models/staging/optimism/fact_optimism_flows.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["chain", "date", "from_category"], + ) +}} + +WITH category_flows as ( + SELECT + DATE_TRUNC('day', block_timestamp) as date, + from_category, + to_category, + sum(amount_usd) as amount_usd + FROM {{ ref("fact_optimism_labeled_transfers") }} + GROUP BY from_category, to_category, date +), application_flows as ( + SELECT + DATE_TRUNC('day', block_timestamp) as date, + from_category, + to_app, + max(to_friendly_name) as to_friendly_name, + sum(amount_usd) as amount_usd + FROM {{ ref("fact_optimism_labeled_transfers") }} + GROUP BY from_category, to_app, date +) +SELECT + 'optimism' as chain, + cf.date, + cf.from_category, + cf.to_category, + cf.amount_usd as category_amount_usd, + af.to_app, + af.to_friendly_name, + af.amount_usd as application_amount_usd +FROM category_flows cf +left JOIN application_flows af +ON cf.date = af.date AND cf.to_category = af.from_category From dca7d8db761ac001025ee5f95d234c07bfc71a79 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:38:21 -0400 Subject: [PATCH 137/213] Optimism Models to Flip the Chain Flow Sankey (#389) --- macros/flows/get_category_inflows.sql | 47 +++++++++++++++++++ .../flows/get_category_outflows.sql | 31 +++++++----- .../agg_daily_category_inflows_by_chain.sql | 22 +++++++++ .../agg_daily_category_outflows_by_chain.sql | 22 +++++++++ .../fact_optimism_category_inflows.sql | 9 ++++ .../fact_optimism_category_outflows.sql | 9 ++++ 6 files changed, 129 insertions(+), 11 deletions(-) create mode 100644 macros/flows/get_category_inflows.sql rename models/staging/optimism/fact_optimism_flows.sql => macros/flows/get_category_outflows.sql (56%) create mode 100644 models/metrics/flows/agg_daily_category_inflows_by_chain.sql create mode 100644 models/metrics/flows/agg_daily_category_outflows_by_chain.sql create mode 100644 models/staging/optimism/fact_optimism_category_inflows.sql create mode 100644 models/staging/optimism/fact_optimism_category_outflows.sql diff --git a/macros/flows/get_category_inflows.sql b/macros/flows/get_category_inflows.sql new file mode 100644 index 00000000..b9581b1d --- /dev/null +++ b/macros/flows/get_category_inflows.sql @@ -0,0 +1,47 @@ +{% macro get_category_inflows(chain) %} + +WITH application_outflows as ( + SELECT + DATE_TRUNC('day', block_timestamp) as date, + from_app, + max(from_friendly_name) as from_friendly_name, + to_category, + sum(amount_usd) as amount_usd + FROM {{ ref("fact_" ~ chain ~ "_labeled_transfers") }} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + GROUP BY from_app, to_category, date +), category_outflows as ( + SELECT + DATE_TRUNC('day', block_timestamp) as date, + from_category, + to_category, + max(to_friendly_name) as to_friendly_name, + sum(amount_usd) as amount_usd + FROM {{ ref("fact_" ~ chain ~ "_labeled_transfers") }} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} + GROUP BY from_category, to_category, date +) +SELECT + '{{ chain }}' as chain, + af.date, + af.from_app, + af.from_friendly_name, + af.amount_usd as application_amount_usd, + af.to_category, + cf.amount_usd as category_amount_usd, + cf.to_category as category +FROM application_outflows af +left JOIN category_outflows cf +ON af.date = cf.date AND af.to_category = cf.from_category + +{% endmacro %} diff --git a/models/staging/optimism/fact_optimism_flows.sql b/macros/flows/get_category_outflows.sql similarity index 56% rename from models/staging/optimism/fact_optimism_flows.sql rename to macros/flows/get_category_outflows.sql index 48409192..08735aad 100644 --- a/models/staging/optimism/fact_optimism_flows.sql +++ b/macros/flows/get_category_outflows.sql @@ -1,10 +1,4 @@ -{{ - config( - materialized="incremental", - snowflake_warehouse="OPTIMISM", - unique_key=["chain", "date", "from_category"], - ) -}} +{% macro get_category_outflows(chain) %} WITH category_flows as ( SELECT @@ -12,8 +6,15 @@ WITH category_flows as ( from_category, to_category, sum(amount_usd) as amount_usd - FROM {{ ref("fact_optimism_labeled_transfers") }} + FROM {{ ref("fact_" ~ chain ~ "_labeled_transfers") }} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} GROUP BY from_category, to_category, date + ), application_flows as ( SELECT DATE_TRUNC('day', block_timestamp) as date, @@ -21,13 +22,19 @@ WITH category_flows as ( to_app, max(to_friendly_name) as to_friendly_name, sum(amount_usd) as amount_usd - FROM {{ ref("fact_optimism_labeled_transfers") }} + FROM {{ ref("fact_" ~ chain ~ "_labeled_transfers") }} + {% if is_incremental() %} + where block_timestamp >= ( + select dateadd('day', -3, max(date)) + from {{ this }} + ) + {% endif %} GROUP BY from_category, to_app, date ) SELECT - 'optimism' as chain, + '{{ chain }}' as chain, cf.date, - cf.from_category, + cf.from_category as category, cf.to_category, cf.amount_usd as category_amount_usd, af.to_app, @@ -36,3 +43,5 @@ SELECT FROM category_flows cf left JOIN application_flows af ON cf.date = af.date AND cf.to_category = af.from_category + +{% endmacro %} diff --git a/models/metrics/flows/agg_daily_category_inflows_by_chain.sql b/models/metrics/flows/agg_daily_category_inflows_by_chain.sql new file mode 100644 index 00000000..6664a89b --- /dev/null +++ b/models/metrics/flows/agg_daily_category_inflows_by_chain.sql @@ -0,0 +1,22 @@ +{{ config(materialized="table") }} + +with daily_data as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_optimism_category_inflows"), + ] + ) + }} + ) +SELECT + chain, + date, + from_app, + from_friendly_name, + application_amount_usd, + to_category, + category_amount_usd, + category, + date::string || '-' || chain || '-' || from_app || '-' || to_category || '-' || category as unique_id +FROM daily_data diff --git a/models/metrics/flows/agg_daily_category_outflows_by_chain.sql b/models/metrics/flows/agg_daily_category_outflows_by_chain.sql new file mode 100644 index 00000000..ac32dbee --- /dev/null +++ b/models/metrics/flows/agg_daily_category_outflows_by_chain.sql @@ -0,0 +1,22 @@ +{{ config(materialized="table") }} + +with daily_data as ( + {{ + dbt_utils.union_relations( + relations=[ + ref("fact_optimism_category_outflows"), + ] + ) + }} + ) +SELECT + chain, + date, + category, + to_category, + category_amount_usd, + to_app, + to_friendly_name, + application_amount_usd, + date::string || '-' || chain || '-' || category || '-' || to_category || '-' || to_app as unique_id +FROM daily_data diff --git a/models/staging/optimism/fact_optimism_category_inflows.sql b/models/staging/optimism/fact_optimism_category_inflows.sql new file mode 100644 index 00000000..bf90afbe --- /dev/null +++ b/models/staging/optimism/fact_optimism_category_inflows.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["chain", "date", "from_app", "to_category", "category"], + ) +}} + +{{ get_category_inflows('optimism') }} diff --git a/models/staging/optimism/fact_optimism_category_outflows.sql b/models/staging/optimism/fact_optimism_category_outflows.sql new file mode 100644 index 00000000..226f59e5 --- /dev/null +++ b/models/staging/optimism/fact_optimism_category_outflows.sql @@ -0,0 +1,9 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="OPTIMISM", + unique_key=["chain", "date", "category", "to_category", "to_app"], + ) +}} + +{{ get_category_outflows('optimism') }} From fd5485704675f612cb7ed5cf42b01ce202f95baf Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 12 Aug 2024 20:16:21 -0400 Subject: [PATCH 138/213] Polygon: Add L1 Da Cost (#390) --- models/projects/polygon/core/ez_polygon_metrics.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/models/projects/polygon/core/ez_polygon_metrics.sql b/models/projects/polygon/core/ez_polygon_metrics.sql index 6b0867e2..3af7ec66 100644 --- a/models/projects/polygon/core/ez_polygon_metrics.sql +++ b/models/projects/polygon/core/ez_polygon_metrics.sql @@ -20,6 +20,15 @@ with select date, native_token_burn as revenue_native, revenue from {{ ref("agg_daily_polygon_revenue") }} ), + l1_cost_data as ( + select + raw_date as date, + sum(tx_fee) as l1_data_cost_native, + sum(gas_usd) as l1_data_cost + from {{ref("ez_ethereum_transactions")}} + where lower(contract_address) = lower('0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287') + group by date + ), nft_metrics as ({{ get_nft_metrics("polygon") }}), p2p_metrics as ({{ get_p2p_metrics("polygon") }}), rolling_metrics as ({{ get_rolling_active_address_metrics("polygon") }}) @@ -36,6 +45,8 @@ select avg_txn_fee, revenue_native, revenue, + l1_data_cost_native, + l1_data_cost, sybil_users, non_sybil_users, returning_users, @@ -76,4 +87,5 @@ left join revenue_data on fundamental_data.date = revenue_data.date left join nft_metrics on fundamental_data.date = nft_metrics.date left join p2p_metrics on fundamental_data.date = p2p_metrics.date left join rolling_metrics on fundamental_data.date = rolling_metrics.date +left join l1_cost_data on fundamental_data.date = l1_cost_data.date where fundamental_data.date < to_date(sysdate()) From 2e3f3e002de26e8376d43eb4b882899aee66be95 Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 13 Aug 2024 13:49:30 -0400 Subject: [PATCH 139/213] Alw add uniswap (#387) --- .../fact_daily_uniswap_tvl_by_token.sql | 43 +++++ ...y_uniswap_v2_fork_trading_vol_and_fees.sql | 4 +- ...fact_daily_uniswap_v2_fork_tvl_by_pool.sql | 35 +++- ...fact_daily_uniswap_v3_fork_tvl_by_pool.sql | 29 +++- .../fact_uniswap_daily_metrics.sql | 25 ++- .../fact_uniswap_v2_fork_dex_swaps.sql | 88 +++++++--- .../fact_uniswap_v3_fork_dex_swaps.sql | 42 ++++- .../maker/prod_core/ez_maker_metrics.sql | 10 +- .../prod_core/ez_maker_metrics_by_token.sql | 6 +- .../prod_raw/fact_treasury_lp_balances.sql | 12 +- .../uniswap/core/ez_uniswap_metrics.sql | 117 +++++++++++++ .../core/ez_uniswap_metrics_by_chain.sql | 145 +++++++++++----- .../core/ez_uniswap_metrics_by_pool.sql | 62 +++---- .../core/ez_uniswap_metrics_by_token.sql | 119 ++++++++++++++ .../uniswap/raw/ez_uniswap_dex_swaps.sql | 1 + .../raw/fact_uni_tokenholder_count.sql | 11 ++ .../fact_uniswap_arbitrum_tvl_by_token.sql | 15 ++ .../fact_uniswap_avalanche_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_base_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_blast_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_bsc_tvl_by_token.sql | 15 ++ .../fact_uniswap_ethereum_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_fdv_and_turnover.sql | 20 +++ .../fact_uniswap_optimism_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_polygon_tvl_by_token.sql | 15 ++ .../raw/fact_uniswap_token_incentives.sql | 44 +++++ .../raw/fact_uniswap_treasury_by_token.sql | 155 ++++++++++++++++++ .../uniswap/raw/fact_uniswap_treasury_usd.sql | 13 ++ .../fact_uniswap_v3_blast_dex_swaps.sql | 11 ++ ...blast_trading_vol_fees_traders_by_pool.sql | 10 ++ .../fact_uniswap_v3_blast_tvl_by_pool.sql | 6 + 31 files changed, 987 insertions(+), 141 deletions(-) create mode 100644 macros/decentralized_exchanges/fact_daily_uniswap_tvl_by_token.sql create mode 100644 models/projects/uniswap/core/ez_uniswap_metrics.sql create mode 100644 models/projects/uniswap/core/ez_uniswap_metrics_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uni_tokenholder_count.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_arbitrum_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_avalanche_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_base_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_blast_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_bsc_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_ethereum_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_fdv_and_turnover.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_optimism_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_polygon_tvl_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_token_incentives.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_treasury_by_token.sql create mode 100644 models/projects/uniswap/raw/fact_uniswap_treasury_usd.sql create mode 100644 models/staging/uniswap/fact_uniswap_v3_blast_dex_swaps.sql create mode 100644 models/staging/uniswap/fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool.sql create mode 100644 models/staging/uniswap/fact_uniswap_v3_blast_tvl_by_pool.sql diff --git a/macros/decentralized_exchanges/fact_daily_uniswap_tvl_by_token.sql b/macros/decentralized_exchanges/fact_daily_uniswap_tvl_by_token.sql new file mode 100644 index 00000000..f08de46f --- /dev/null +++ b/macros/decentralized_exchanges/fact_daily_uniswap_tvl_by_token.sql @@ -0,0 +1,43 @@ +{% macro fact_daily_uniswap_tvl_by_token(chain) %} + +with agg as ( + SELECT + date, + token_0_symbol as token, + token_0_amount_native as tvl_native, + token_0_amount_usd as tvl_usd + FROM + {{ ref('fact_uniswap_v3_' ~ chain ~ '_tvl_by_pool') }} + UNION ALL + SELECT + date, + token_1_symbol as token, + token_1_amount_native as tvl_native, + token_1_amount_usd as tvl_usd + FROM + {{ ref('fact_uniswap_v3_' ~ chain ~ '_tvl_by_pool') }} + {% if chain == 'ethereum' %} + UNION ALL + SELECT + date, + token_0_symbol as token, + token_0_amount_native as tvl_native, + token_0_amount_usd as tvl_usd + FROM + {{ ref('fact_uniswap_v2_' ~ chain ~ '_tvl_by_pool') }} + UNION ALL + SELECT + date, + token_1_symbol as token, + token_1_amount_native as tvl_native, + token_1_amount_usd as tvl_usd + FROM + {{ ref('fact_uniswap_v2_' ~ chain ~ '_tvl_by_pool') }} + {% endif %} +) +SELECT date, '{{chain}}' as chain, token, sum(tvl_native) as tvl_native, sum(tvl_usd) as tvl_usd +FROM agg +WHERE token is not null +GROUP BY 1, 2, 3 + +{% endmacro %} \ No newline at end of file diff --git a/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_trading_vol_and_fees.sql b/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_trading_vol_and_fees.sql index bf88d76e..d5beeabb 100644 --- a/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_trading_vol_and_fees.sql +++ b/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_trading_vol_and_fees.sql @@ -51,7 +51,7 @@ token1_out_amount * fee as token1_out_fee from all_pool_events ), - swaps_asdjusted as ( + swaps_adjusted as ( select t1.hour, tx_hash, @@ -112,7 +112,7 @@ trunc(hour, 'day') as date, least(total_out, total_in) as volume_per_trade, total_fees - from swaps_asdjusted + from swaps_adjusted ) select date, diff --git a/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_tvl_by_pool.sql b/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_tvl_by_pool.sql index 1b335395..16bb5696 100644 --- a/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_tvl_by_pool.sql +++ b/macros/decentralized_exchanges/fact_daily_uniswap_v2_fork_tvl_by_pool.sql @@ -165,7 +165,18 @@ and lower(t1.token1) = lower(t3.token_address) ), viable_pools as ( - select date, pool, token0, token0_symbol, token1, token1_symbol, token0_amount_usd + token1_amount_usd as tvl + select + date, + pool, + token0, + token0_symbol, + token0_cumulative as token0_amount_native, + token0_amount_usd, + token1, + token1_symbol, + token1_cumulative as token1_amount_native, + token1_amount_usd, + token0_amount_usd + token1_amount_usd as tvl from with_price where abs( @@ -175,29 +186,39 @@ < 2 ), tvl_daily_sum as ( - select - date, + select + date, pool, token0, token0_symbol, token1, token1_symbol, + sum(token0_amount_native) as token_0_amount_native, + sum(token0_amount_usd) as token_0_amount_usd, + sum(token1_amount_native) as token_1_amount_native, + sum(token1_amount_usd) as token_1_amount_usd, sum(tvl) as tvl from viable_pools where date is not null group by date, pool, token0, token0_symbol, token1, token1_symbol ) select - date, - '{{ chain }}' as chain, - '{{ app }}' as app, + date, + '{{ chain }}' as chain, + '{{ app }}' as app, '{{ version }}' as version, - 'DeFi' as category, + 'DeFi' as category, pool, token0 as token_0, token0_symbol as token_0_symbol, token1 as token_1, token1_symbol as token_1_symbol, + {% if app == 'uniswap' %} + token_0_amount_native, + token_0_amount_usd, + token_1_amount_native, + token_1_amount_usd, + {% endif %} tvl as tvl from tvl_daily_sum where date is not null diff --git a/macros/decentralized_exchanges/fact_daily_uniswap_v3_fork_tvl_by_pool.sql b/macros/decentralized_exchanges/fact_daily_uniswap_v3_fork_tvl_by_pool.sql index c6128158..ae0e8f8f 100644 --- a/macros/decentralized_exchanges/fact_daily_uniswap_v3_fork_tvl_by_pool.sql +++ b/macros/decentralized_exchanges/fact_daily_uniswap_v3_fork_tvl_by_pool.sql @@ -164,7 +164,18 @@ and lower(t1.token1) = lower(t3.token_address) ), viable_pools as ( - select date, pool, token0, token0_symbol, token1, token1_symbol, token0_amount_usd + token1_amount_usd as pool_tvl + select + date, + pool, + token0, + token0_symbol, + token0_cumulative as token0_amount_native, + token0_amount_usd, + token1, + token1_symbol, + token1_cumulative as token1_amount_native, + token1_amount_usd, + token0_amount_usd + token1_amount_usd as pool_tvl from with_price where abs( @@ -173,17 +184,23 @@ ) < 1 ) - select - date, - '{{ chain }}' as chain, - '{{ app }}' as app, + select + date, + '{{ chain }}' as chain, + '{{ app }}' as app, '{{ version }}' as version, - 'DeFi' as category, + 'DeFi' as category, pool, token0 as token_0, token0_symbol as token_0_symbol, token1 as token_1, token1_symbol as token_1_symbol, + {% if app == 'uniswap' %} + sum(token0_amount_native) as token_0_amount_native, + sum(token0_amount_usd) as token_0_amount_usd, + sum(token1_amount_native) as token_1_amount_native, + sum(token1_amount_usd) as token_1_amount_usd, + {% endif %} sum(pool_tvl) as tvl from viable_pools where date is not null diff --git a/macros/decentralized_exchanges/fact_uniswap_daily_metrics.sql b/macros/decentralized_exchanges/fact_uniswap_daily_metrics.sql index 41d5c457..90dc3e88 100644 --- a/macros/decentralized_exchanges/fact_uniswap_daily_metrics.sql +++ b/macros/decentralized_exchanges/fact_uniswap_daily_metrics.sql @@ -3,8 +3,8 @@ ) %} {% set _version = version.lower() %} - with - {% if chain == 'avalanche' %} + with + {% if chain == 'avalanche' %} prices as ({{get_coingecko_price_with_latest("avalanche-2")}}) {% elif chain == 'polygon' %} prices as ({{get_coingecko_price_with_latest("matic-network")}}) @@ -25,16 +25,31 @@ token_1_symbol, sum(trading_volume) as trading_volume, sum(trading_fees) as trading_fees, + {% if app == 'uniswap' %} + sum(token_0_volume_native) as token_0_volume_native, + sum(token_1_volume_native) as token_1_volume_native, + SUM(token_fee_amount_native) as token_fee_amount_native, + token_fee_amount_native_symbol, + {% endif %} count(distinct - case + case when sender not in (select pool from {{ ref(source_table) }}) then sender else null end ) as unique_traders, sum(coalesce(gas_cost_native, 0)) as gas_cost_native, sum(coalesce(gas_cost_native * prices.price, 0)) as gas_cost_usd - from {{ ref(source_table) }} + from {{ ref(source_table) }} left join prices on block_timestamp::date = prices.date where block_timestamp::date is not null - group by block_timestamp::date, pool, token_0, token_0_symbol, token_1, token_1_symbol + group by + block_timestamp::date, + pool, + token_0, + token_0_symbol, + token_1, + token_1_symbol + {% if app == 'uniswap' %} + , token_fee_amount_native_symbol + {% endif %} {% endmacro %} \ No newline at end of file diff --git a/macros/decentralized_exchanges/fact_uniswap_v2_fork_dex_swaps.sql b/macros/decentralized_exchanges/fact_uniswap_v2_fork_dex_swaps.sql index f33591e4..bf5b370e 100644 --- a/macros/decentralized_exchanges/fact_uniswap_v2_fork_dex_swaps.sql +++ b/macros/decentralized_exchanges/fact_uniswap_v2_fork_dex_swaps.sql @@ -53,7 +53,7 @@ token1_out_amount * fee as token1_out_fee from all_pool_events ), - swaps_asdjusted as ( + swaps_adjusted as ( select t1.block_timestamp, t1.hour, @@ -67,35 +67,23 @@ t2.symbol as token0_symbol, t2.decimals as token0_decimals, coalesce(t2.price, 0) as token0_price, - token0_in_fee - / pow(10, token0_decimals) - * token0_price as token0_in_fee_usd, - token0_out_fee - / pow(10, token0_decimals) - * token0_price as token0_out_fee_usd, - token0_in_amount - / pow(10, token0_decimals) - * token0_price as token0_in_amount_usd, - token0_out_amount - / pow(10, token0_decimals) - * token0_price as token0_out_amount_usd, + token0_in_fee * token0_price / pow(10, token0_decimals) as token0_in_fee_usd, + token0_out_fee * token0_price / pow(10, token0_decimals) as token0_out_fee_usd, + token0_in_amount * token0_price / pow(10, token0_decimals) as token0_in_amount_usd, + token0_out_amount * token0_price / pow(10, token0_decimals) as token0_out_amount_usd, + (token0_in_amount + token0_out_amount) / pow(10, token0_decimals) as token0_amount_native, + (token0_in_fee + token0_out_fee) / pow(10, token0_decimals) as token0_fee_amount_native, token1, t3.symbol as token1_symbol, t3.decimals as token1_decimals, coalesce(t3.price, 0) as token1_price, - token1_in_fee - / pow(10, token1_decimals) - * token1_price as token1_in_fee_usd, - token1_out_fee - / pow(10, token1_decimals) - * token1_price as token1_out_fee_usd, - token1_in_amount - / pow(10, token1_decimals) - * token1_price as token1_in_amount_usd, - token1_out_amount - / pow(10, token1_decimals) - * token1_price as token1_out_amount_usd, + token1_in_fee * token1_price / pow(10, token1_decimals) as token1_in_fee_usd, + token1_out_fee * token1_price / pow(10, token1_decimals) as token1_out_fee_usd, + token1_in_amount * token1_price / pow(10, token1_decimals) as token1_in_amount_usd, + token1_out_amount * token1_price / pow(10, token1_decimals) as token1_out_amount_usd, + (token1_in_amount + token1_out_amount) / pow(10, token1_decimals) as token1_amount_native, + (token1_in_fee + token1_out_fee) / pow(10, token1_decimals) as token1_fee_amount_native, case when @@ -104,6 +92,36 @@ then token0_out_fee_usd + token1_out_fee_usd else token0_in_fee_usd + token1_in_fee_usd end as total_fees, + case + when + token0_in_fee_usd > token1_in_fee_usd then + case + when token0_in_fee_usd * 10 > token1_out_fee_usd + then token1_fee_amount_native + else token0_fee_amount_native + end + else + case + when token1_in_fee_usd * 10 > token0_out_fee_usd + then token0_fee_amount_native + else token1_fee_amount_native + end + end as token_fee_amount_native, + case + when + token0_in_fee_usd > token1_in_fee_usd then + case + when token0_in_fee_usd * 10 > token1_out_fee_usd + then token1_symbol + else token0_symbol + end + else + case + when token1_in_fee_usd * 10 > token0_out_fee_usd + then token0_symbol + else token1_symbol + end + end as token_fee_amount_native_symbol, token0_in_amount_usd + token1_in_amount_usd as total_in, token0_out_amount_usd + token1_out_amount_usd as total_out from swaps t1 @@ -130,11 +148,17 @@ pair as pool, token0 as token_0, token0_symbol as token_0_symbol, + token0_amount_native as token0_volume_native, + token0_fee_amount_native, token1 as token_1, token1_symbol as token_1_symbol, + token1_amount_native as token1_volume_native, + token1_fee_amount_native, + token_fee_amount_native, + token_fee_amount_native_symbol, least(total_out, total_in) as trading_volume, total_fees as trading_fees - from swaps_asdjusted + from swaps_adjusted ), events as ( select @@ -146,8 +170,14 @@ pool, token_0, token_0_symbol, + token0_volume_native as token_0_volume_native, + token0_fee_amount_native, token_1, token_1_symbol, + token1_volume_native as token_1_volume_native, + token1_fee_amount_native, + token_fee_amount_native, + token_fee_amount_native_symbol, trading_volume, trading_fees, ROW_NUMBER() OVER (PARTITION by tx_hash, pool ORDER BY event_index) AS row_number @@ -190,6 +220,12 @@ token_1_symbol, trading_volume, trading_fees, + {% if app == 'uniswap' %} + token_0_volume_native, + token_1_volume_native, + token_fee_amount_native, + token_fee_amount_native_symbol, + {% endif %} gas_price * gas_used as raw_gas_cost_native, raw_gas_cost_native / 1e9 as gas_cost_native from events diff --git a/macros/decentralized_exchanges/fact_uniswap_v3_fork_dex_swaps.sql b/macros/decentralized_exchanges/fact_uniswap_v3_fork_dex_swaps.sql index d04fbe82..a1d5761d 100644 --- a/macros/decentralized_exchanges/fact_uniswap_v3_fork_dex_swaps.sql +++ b/macros/decentralized_exchanges/fact_uniswap_v3_fork_dex_swaps.sql @@ -48,7 +48,7 @@ fee from all_pool_events ), - swaps_asdjusted as ( + swaps_adjusted as ( select t1.block_timestamp, t1.hour, @@ -74,6 +74,14 @@ then token0_amount_usd * fee else token1_amount_usd * fee end as token_fee_amount, + case when token0_amount_adj > 0 + then token0_amount_adj * fee + else token1_amount_adj * fee + end as token_fee_amount_native, + case when token0_amount_adj > 0 + then token0_symbol + else token1_symbol + end as token_fee_amount_native_symbol, fee from swaps t1 @@ -95,15 +103,23 @@ pool, token0, token0_symbol, + token0_amount_adj as token_0_volume_native, token1, token1_symbol, + token1_amount_adj as token_1_volume_native, least(token0_amount_usd, token1_amount_usd) as volume_per_trade, case when volume_per_trade > token_fee_amount then token_fee_amount else 0 - end as token_fee_amount - from swaps_asdjusted + end as token_fee_amount, + case + when volume_per_trade > token_fee_amount + then token_fee_amount_native + else 0 + end as token_fee_amount_native, + token_fee_amount_native_symbol + from swaps_adjusted ), events as ( select @@ -115,16 +131,20 @@ pool, token0 as token_0, token0_symbol as token_0_symbol, + token_0_volume_native, token1 as token_1, token1_symbol as token_1_symbol, + token_1_volume_native, volume_per_trade as trading_volume, token_fee_amount as trading_fees, + token_fee_amount_native, + token_fee_amount_native_symbol, ROW_NUMBER() OVER (PARTITION by tx_hash, pool ORDER BY event_index) AS row_number from filtered_pairs ), traces as ( - select - t1.*, + select + t1.*, {% if chain in ("arbitrum") %} t3.gas_price_paid as gas_price, {% else %} @@ -132,8 +152,8 @@ {% endif %} ROW_NUMBER() OVER (PARTITION by t1.tx_hash, t1.to_address ORDER BY t1.trace_index) AS row_number from {{ chain }}_flipside.core.fact_traces t1 - inner join filtered_pairs t2 on - t1.tx_hash = t2.tx_hash + inner join filtered_pairs t2 on + t1.tx_hash = t2.tx_hash and lower(t1.to_address) = lower(t2.pool) and substr(t1.input, 0, 10) = '0x128acb08' --Swap function left join {{ chain }}_flipside.core.fact_transactions t3 on t1.tx_hash = t3.tx_hash @@ -159,10 +179,16 @@ token_1_symbol, trading_volume, trading_fees, + {% if app == 'uniswap' %} + token_0_volume_native, + token_1_volume_native, + token_fee_amount_native, + token_fee_amount_native_symbol, + {% endif %} gas_price * gas_used as raw_gas_cost_native, raw_gas_cost_native / 1e9 as gas_cost_native from events - left join traces on + left join traces on events.tx_hash = traces.tx_hash and events.pool = traces.to_address and events.row_number = traces.row_number diff --git a/models/projects/maker/prod_core/ez_maker_metrics.sql b/models/projects/maker/prod_core/ez_maker_metrics.sql index d41b9b60..fe859c61 100644 --- a/models/projects/maker/prod_core/ez_maker_metrics.sql +++ b/models/projects/maker/prod_core/ez_maker_metrics.sql @@ -68,11 +68,11 @@ select , COALESCE(operating_expenses, 0) AS operating_expenses , COALESCE(direct_expenses, 0) AS direct_expenses , COALESCE(total_expenses, 0) AS total_expenses - , COALESCE(protocol_revenue - total_expenses, 0) AS earnings - , COALESCE(treasury_usd, 0) AS treasury_usd - , COALESCE(treasury_native, 0) AS treasury_native - , COALESCE(net_treasury_usd, 0) AS net_treasury_usd - , COALESCE(net_deposit, 0) AS net_deposit + , COALESCE(protocol_revenue - total_expenses, 0) AS protocol_earnings + , COALESCE(treasury_usd, 0) AS treasury_value + , COALESCE(treasury_native, 0) AS treasury_native_value + , COALESCE(net_treasury_usd, 0) AS net_treasury_value + , COALESCE(net_deposit, 0) AS net_deposits , COALESCE(outstanding_supply, 0) AS outstanding_supply , COALESCE(tvl, 0) AS tvl , COALESCE(price, 0) AS price diff --git a/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql b/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql index b73b463f..773b4233 100644 --- a/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql +++ b/models/projects/maker/prod_core/ez_maker_metrics_by_token.sql @@ -90,11 +90,11 @@ select , COALESCE(operating_expenses, 0) AS operating_expenses , COALESCE(direct_expenses, 0) AS direct_expenses , COALESCE(total_expenses, 0) AS total_expenses - , COALESCE(protocol_revenue - total_expenses, 0) AS earnings - , COALESCE(treasury, 0) as treasury + , COALESCE(protocol_revenue - total_expenses, 0) AS protocol_earnings + , COALESCE(treasury, 0) as treasury_value , COALESCE(treasury_native,0) as treasury_native , COALESCE(net_treasury, 0) as net_treasury - , COALESCE(tvl, 0) as net_deposit + , COALESCE(tvl, 0) as net_deposits , COALESCE(outstanding_supply,0) as outstanding_supply , COALESCE(tvl, 0) as tvl FROM fees_revenue_expenses diff --git a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql index 68e199fb..4d36c4ca 100644 --- a/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql +++ b/models/projects/maker/prod_raw/fact_treasury_lp_balances.sql @@ -31,13 +31,13 @@ dates as ( value_per_token_cte as ( SELECT s.date, - v.amount_usd / s.circulating_supply as value_per_token, + v.amount_usd / s.circulating_supply as value_per_token_usd, s.circulating_supply FROM {{ ref('fact_uni_lp_supply') }} s LEFT JOIN {{ ref('fact_uni_lp_value') }} v ON v.date = s.date where - value_per_token is not null + value_per_token_usd is not null ) , filled_data as ( SELECT @@ -46,10 +46,10 @@ value_per_token_cte as ( ORDER BY d.date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) as amount_native, - LAST_VALUE(v.value_per_token IGNORE NULLS) OVER ( + LAST_VALUE(v.value_per_token_usd IGNORE NULLS) OVER ( ORDER BY d.date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW - ) as value_per_token + ) as value_per_token_usd FROM dates d LEFT JOIN treasury_balance t ON d.date = t.date @@ -58,8 +58,8 @@ value_per_token_cte as ( SELECT date, amount_native, - value_per_token, - amount_native * value_per_token as amount_usd, + value_per_token_usd, + amount_native * value_per_token_usd as amount_usd, 'UNI V2: DAI-MKR' as token FROM filled_data diff --git a/models/projects/uniswap/core/ez_uniswap_metrics.sql b/models/projects/uniswap/core/ez_uniswap_metrics.sql new file mode 100644 index 00000000..4e75d879 --- /dev/null +++ b/models/projects/uniswap/core/ez_uniswap_metrics.sql @@ -0,0 +1,117 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="core", + alias="ez_metrics", + ) +}} + + +WITH + fees as ( + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool') }} + ) + , fees_agg AS ( + SELECT + date, + sum(trading_fees) as fees + FROM fees + GROUP BY 1 + ) + , token_incentives_cte as ( + SELECT + date, + token_incentives_usd + FROM {{ ref('fact_uniswap_token_incentives') }} + ) + , treasury_usd_cte AS ( + SELECT + date, + treasury_usd + FROM {{ ref('fact_uniswap_treasury_usd') }} + ) + , treasury_native_cte AS( + SELECT + date, + treasury_native + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token = 'UNI' + ) + , net_treasury_cte AS ( + SELECT + date, + sum(usd_balance) as net_treasury_usd + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token <> 'UNI' + GROUP BY 1 + ) + , tvl_cte AS ( + SELECT + date, + sum(tvl) AS tvl + FROM {{ ref('ez_uniswap_metrics_by_chain') }} + GROUP BY 1 + ) + , token_turnover_metrics_cte as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from {{ ref("fact_uniswap_fdv_and_turnover")}} + ) + , price_data_cte as ({{ get_coingecko_metrics("uniswap") }}) + , tokenholder_cte as ( + SELECT * FROM {{ ref('fact_uni_tokenholder_count') }} + ) +SELECT + date + , fees as trading_fees + , fees + , fees as primary_supply_side_revenue + , 0 as secondary_supply_side_revenue + , fees as total_supply_side_revenue + , 0 as protocol_revenue + , token_incentives_usd as token_incentives + , 0 as operating_expenses + , token_incentives + operating_expenses as total_expenses + , protocol_revenue - total_expenses as protocol_earnings + , treasury_usd as treausry_value + , treasury_native as treasury_native_value + , net_treasury_usd as net_treasury_value + , tvl as net_deposits + , tvl + , fdmc + , market_cap + , token_volume + , token_turnover_fdv + , token_turnover_circulating + , token_holder_count +FROM fees_agg +LEFT JOIN token_incentives_cte using(date) +LEFT JOIN treasury_usd_cte using(date) +LEFT JOIN treasury_native_cte using(date) +LEFT JOIN net_treasury_cte using(date) +LEFT JOIN tvl_cte using(date) +LEFT JOIN token_turnover_metrics_cte using(date) +LEFT JOIN price_data_cte using(date) +LEFT JOIN tokenholder_cte using(date) +WHERE date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/uniswap/core/ez_uniswap_metrics_by_chain.sql b/models/projects/uniswap/core/ez_uniswap_metrics_by_chain.sql index 882522b4..c885cf07 100644 --- a/models/projects/uniswap/core/ez_uniswap_metrics_by_chain.sql +++ b/models/projects/uniswap/core/ez_uniswap_metrics_by_chain.sql @@ -10,22 +10,25 @@ with trading_volume_by_pool as ( - {{ - dbt_utils.union_relations( - relations=[ - ref("fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_base_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool"), - ], - ) - }} - ), - trading_volume_by_chain as ( + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool') }} + ) + , trading_volume_by_chain as ( select trading_volume_by_pool.date, trading_volume_by_pool.chain, @@ -36,24 +39,59 @@ with sum(trading_volume_by_pool.gas_cost_usd) as gas_cost_usd from trading_volume_by_pool group by trading_volume_by_pool.date, trading_volume_by_pool.chain - ), - tvl_by_pool as ( - {{ - dbt_utils.union_relations( - relations=[ - ref("fact_uniswap_v2_ethereum_tvl_by_pool"), - ref("fact_uniswap_v3_arbitrum_tvl_by_pool"), - ref("fact_uniswap_v3_avalanche_tvl_by_pool"), - ref("fact_uniswap_v3_base_tvl_by_pool"), - ref("fact_uniswap_v3_bsc_tvl_by_pool"), - ref("fact_uniswap_v3_ethereum_tvl_by_pool"), - ref("fact_uniswap_v3_optimism_tvl_by_pool"), - ref("fact_uniswap_v3_polygon_tvl_by_pool"), - ], - ) - }} - ), - tvl_by_chain as ( + ) + , token_incentives_cte as ( + SELECT + date + , 'ethereum' as chain + , token_incentives_usd + FROM {{ ref('fact_uniswap_token_incentives') }} + ) + , treasury_cte AS( + SELECT + date + , 'ethereum' as chain + , sum(usd_balance) as treasury_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + GROUP BY 1, 2 + ) + , treasury_native_cte AS( + SELECT + date + , 'ethereum' as chain + , treasury_native as treasury_native_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token = 'UNI' + ) + , net_treasury_cte AS( + SELECT + date + , 'ethereum' as chain + , sum(usd_balance) as net_treasury_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token <> 'UNI' + GROUP BY 1, 2 + ) + , tvl_by_pool as ( + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_tvl_by_pool') }} + ) + , tvl_by_chain as ( select tvl_by_pool.date, tvl_by_pool.chain, @@ -62,16 +100,33 @@ with group by tvl_by_pool.date, tvl_by_pool.chain ) select - tvl_by_chain.date, - 'uniswap' as app, - 'DeFi' as category, - tvl_by_chain.chain, - tvl_by_chain.tvl, - trading_volume_by_chain.trading_volume, - trading_volume_by_chain.trading_fees, - trading_volume_by_chain.unique_traders, - trading_volume_by_chain.gas_cost_native, - trading_volume_by_chain.gas_cost_usd + tvl_by_chain.date + , 'uniswap' as app + , 'DeFi' as category + , tvl_by_chain.chain + , trading_fees + , trading_fees as fees + , trading_fees as primary_supply_side_revenue + , trading_fees as total_supply_side_revenue + , 0 as secondary_supply_side_revenue + , 0 as protocol_revenue + , 0 as operating_expenses + , token_incentives_usd as token_incentives + , -token_incentives_usd as protocol_earnings + , tvl_by_chain.tvl + , treasury_value + , treasury_native_value + , net_treasury_value + , tvl_by_chain.tvl as net_deposits + , trading_volume_by_chain.trading_volume + , trading_volume_by_chain.unique_traders + , trading_volume_by_chain.gas_cost_native + , trading_volume_by_chain.gas_cost_usd from tvl_by_chain +left join token_incentives_cte using(date, chain) left join trading_volume_by_chain using(date, chain) -where tvl_by_chain.date < to_date(sysdate()) \ No newline at end of file +left join treasury_cte using(date, chain) +left join treasury_native_cte using(date, chain) +left join net_treasury_cte using(date, chain) +where tvl_by_chain.date < to_date(sysdate()) +order by 1 desc \ No newline at end of file diff --git a/models/projects/uniswap/core/ez_uniswap_metrics_by_pool.sql b/models/projects/uniswap/core/ez_uniswap_metrics_by_pool.sql index b66e7678..2066bab7 100644 --- a/models/projects/uniswap/core/ez_uniswap_metrics_by_pool.sql +++ b/models/projects/uniswap/core/ez_uniswap_metrics_by_pool.sql @@ -10,36 +10,42 @@ with trading_volume_pool as ( - {{ - dbt_utils.union_relations( - relations=[ - ref("fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_base_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool"), - ref("fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool"), - ], - ) - }} + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool') }} ), tvl_by_pool as ( - {{ - dbt_utils.union_relations( - relations=[ - ref("fact_uniswap_v2_ethereum_tvl_by_pool"), - ref("fact_uniswap_v3_arbitrum_tvl_by_pool"), - ref("fact_uniswap_v3_avalanche_tvl_by_pool"), - ref("fact_uniswap_v3_base_tvl_by_pool"), - ref("fact_uniswap_v3_bsc_tvl_by_pool"), - ref("fact_uniswap_v3_ethereum_tvl_by_pool"), - ref("fact_uniswap_v3_optimism_tvl_by_pool"), - ref("fact_uniswap_v3_polygon_tvl_by_pool"), - ], - ) - }} + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_tvl_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_tvl_by_pool') }} ) select tvl_by_pool.date, diff --git a/models/projects/uniswap/core/ez_uniswap_metrics_by_token.sql b/models/projects/uniswap/core/ez_uniswap_metrics_by_token.sql new file mode 100644 index 00000000..c3bf1479 --- /dev/null +++ b/models/projects/uniswap/core/ez_uniswap_metrics_by_token.sql @@ -0,0 +1,119 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="core", + alias="ez_metrics_by_token", + ) +}} + + +WITH + fees_cte as ( + SELECT * FROM {{ ref('fact_uniswap_v2_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_arbitrum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_avalanche_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_base_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_bsc_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_ethereum_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_optimism_trading_vol_fees_traders_by_pool') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_v3_polygon_trading_vol_fees_traders_by_pool') }} + ) + , fees_agg as( + SELECT + date + , chain + , token_fee_amount_native_symbol as token + , SUM(token_fee_amount_native) as fees_native + FROM fees_cte + GROUP BY 1, 2, 3 + ) + , token_incentives_cte as ( + SELECT + date + , 'ethereum' as chain + , token + , token_incentives_native + FROM {{ ref('fact_uniswap_token_incentives') }} + ) + , treasury_cte AS( + SELECT + date + , 'ethereum' as chain + , token + , treasury_native as treasury_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + ) + , treasury_native_cte AS( + SELECT + date + , 'ethereum' as chain + , token + , treasury_native as treasury_native_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token = 'UNI' + ) + , net_treasury_cte AS( + SELECT + date + , 'ethereum' as chain + , token + , treasury_native as net_treasury_value + FROM {{ ref('fact_uniswap_treasury_by_token') }} + WHERE token <> 'UNI' + ) + , tvl_cte AS ( + SELECT * FROM {{ ref('fact_uniswap_bsc_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_base_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_blast_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_polygon_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_ethereum_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_arbitrum_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_optimism_tvl_by_token') }} + UNION ALL + SELECT * FROM {{ ref('fact_uniswap_avalanche_tvl_by_token') }} + ) + , tvl_agg as( + SELECT + date, + chain, + token, + SUM(tvl_native) as tvl + FROM + tvl_cte + GROUP BY 1,2,3 + ) +SELECT + date, + token, + chain, + fees_native as trading_fees, + token_incentives_native, + treasury_value, + treasury_native_value, + net_treasury_value, + tvl +FROM + fees_agg +LEFT JOIN token_incentives_cte using(date, chain, token) +LEFT JOIN treasury_native_cte using (date, chain, token) +LEFT JOIN treasury_cte using (date, chain, token) +LEFT JOIN net_treasury_cte using (date, chain, token) +LEFT JOIN tvl_agg using(date, chain,token) +order by 1 desc \ No newline at end of file diff --git a/models/projects/uniswap/raw/ez_uniswap_dex_swaps.sql b/models/projects/uniswap/raw/ez_uniswap_dex_swaps.sql index 1e7ef2e1..7a9b101a 100644 --- a/models/projects/uniswap/raw/ez_uniswap_dex_swaps.sql +++ b/models/projects/uniswap/raw/ez_uniswap_dex_swaps.sql @@ -17,6 +17,7 @@ with ref("fact_uniswap_v3_arbitrum_dex_swaps"), ref("fact_uniswap_v3_avalanche_dex_swaps"), ref("fact_uniswap_v3_base_dex_swaps"), + ref("fact_uniswap_v3_blast_dex_swaps"), ref("fact_uniswap_v3_bsc_dex_swaps"), ref("fact_uniswap_v3_ethereum_dex_swaps"), ref("fact_uniswap_v3_optimism_dex_swaps"), diff --git a/models/projects/uniswap/raw/fact_uni_tokenholder_count.sql b/models/projects/uniswap/raw/fact_uni_tokenholder_count.sql new file mode 100644 index 00000000..683a7eec --- /dev/null +++ b/models/projects/uniswap/raw/fact_uni_tokenholder_count.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_tokenholder_count", + ) +}} + +{{ token_holders('ethereum', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', '2020-09-14')}} diff --git a/models/projects/uniswap/raw/fact_uniswap_arbitrum_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_arbitrum_tvl_by_token.sql new file mode 100644 index 00000000..32eb0d99 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_arbitrum_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_arbitrum_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "arbitrum" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_avalanche_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_avalanche_tvl_by_token.sql new file mode 100644 index 00000000..2071cb34 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_avalanche_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_avalanche_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "avalanche" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_base_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_base_tvl_by_token.sql new file mode 100644 index 00000000..75446264 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_base_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_base_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "base" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_blast_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_blast_tvl_by_token.sql new file mode 100644 index 00000000..d3775481 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_blast_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_blast_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "blast" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_bsc_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_bsc_tvl_by_token.sql new file mode 100644 index 00000000..dbe2b6a1 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_bsc_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_bsc_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "bsc" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_ethereum_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_ethereum_tvl_by_token.sql new file mode 100644 index 00000000..b3289117 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_ethereum_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_ethereum_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "ethereum" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_fdv_and_turnover.sql b/models/projects/uniswap/raw/fact_uniswap_fdv_and_turnover.sql new file mode 100644 index 00000000..064be61f --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_fdv_and_turnover.sql @@ -0,0 +1,20 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_fdv_and_turnover", + ) +}} + + +SELECT + date, + shifted_token_h24_volume_usd as token_volume, + shifted_token_price_usd * 1000000000 as fully_diluted_market_cap, + shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, + shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv +FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold +where coingecko_id = 'uniswap' +order by date desc \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_optimism_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_optimism_tvl_by_token.sql new file mode 100644 index 00000000..321fe2f6 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_optimism_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_optimism_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "optimism" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_polygon_tvl_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_polygon_tvl_by_token.sql new file mode 100644 index 00000000..29a10251 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_polygon_tvl_by_token.sql @@ -0,0 +1,15 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_polygon_tvl_by_token", + ) +}} + +{{ + fact_daily_uniswap_tvl_by_token( + "polygon" + ) +}} \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_token_incentives.sql b/models/projects/uniswap/raw/fact_uniswap_token_incentives.sql new file mode 100644 index 00000000..bab1503e --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_token_incentives.sql @@ -0,0 +1,44 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_token_incentives", + ) +}} + + +with prices as ( + SELECT date(hour) as date, AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + WHERE lower(token_address) = lower('0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984') + GROUP BY 1 +) + +, logs as ( + SELECT + date(l.block_timestamp) as date, + 'UNI' as token, + sum(l.decoded_log:reward::number / 1e18) as reward_native + FROM + ethereum_flipside.core.fact_decoded_event_logs l + WHERE + contract_address in ( + lower('0xca35e32e7926b96a9988f61d510e038108d8068e') + , lower('0xa1484c3aa22a66c62b77e0ae78e15258bd0cb711') + , lower('0x7fba4b8dc5e7616e59622806932dbea72537a56b') + , lower('0x6c3e4cb2e96b01f4b866965a91ed4437839a121a') + ) + and event_name = 'RewardPaid' + GROUP BY + 1, + 2 +) +SELECT + p.date + , token + , coalesce(l.reward_native, 0) as token_incentives_native + , coalesce(reward_native * p.price, 0) as token_incentives_usd +FROM prices p +left join logs l on p.date = l.date \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_treasury_by_token.sql b/models/projects/uniswap/raw/fact_uniswap_treasury_by_token.sql new file mode 100644 index 00000000..78361ef4 --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_treasury_by_token.sql @@ -0,0 +1,155 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_treasury_by_token", + ) +}} + +WITH dates AS ( + SELECT + DISTINCT DATE(hour) AS date + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + symbol = 'UNI' +), +treasury_addresses AS ( + SELECT + addresses + FROM + ( + VALUES + ( + LOWER('0x1a9C8182C09F50C8318d769245beA52c32BE35BC') + ), + ( + LOWER('0x3D30B1aB88D487B0F3061F40De76845Bec3F1e94') + ), + ( + LOWER('0x4750c43867EF5F89869132ecCF19B9b6C4286E1a') + ), + ( + LOWER('0x4b4e140D1f131fdaD6fb59C13AF796fD194e4135') + ), + ( + LOWER('0xe3953D9d317B834592aB58AB2c7A6aD22b54075D') + ) + ) AS treasury_addresses(addresses) +), +tokens AS ( + SELECT + DISTINCT LOWER(contract_address) AS token_address + FROM + ethereum_flipside.core.ez_token_transfers + WHERE + LOWER(to_address) IN ( + SELECT + addresses + FROM + treasury_addresses + ) +), +sparse_balances AS ( + SELECT + DATE(block_timestamp) AS date, + user_address, + contract_address, + MAX_BY(balance, block_timestamp) / 1e18 AS balance_daily + FROM + ethereum_flipside.core.fact_token_balances + WHERE + LOWER(contract_address) IN ( + SELECT + token_address + FROM + tokens + ) + AND LOWER(user_address) IN ( + SELECT + addresses + FROM + treasury_addresses + ) + GROUP BY + 1, + 2, + 3 +), +full_balances AS ( + SELECT + d.date, + ta.addresses AS user_address, + t.token_address AS contract_address, + COALESCE( + LAST_VALUE(sb.balance_daily) IGNORE NULLS OVER ( + PARTITION BY ta.addresses, + t.token_address + ORDER BY + d.date ROWS BETWEEN UNBOUNDED PRECEDING + AND CURRENT ROW + ), + 0 + ) AS balance_daily + FROM + dates d + CROSS JOIN treasury_addresses ta + CROSS JOIN tokens t + LEFT JOIN sparse_balances sb ON d.date = sb.date + AND ta.addresses = sb.user_address + AND t.token_address = sb.contract_address +), +daily_prices AS ( + SELECT + DATE(hour) AS date, + token_address, + symbol, + AVG(price) AS avg_daily_price, + MAX(decimals) as decimals + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + token_address IN ( + SELECT + token_address + FROM + tokens + ) + GROUP BY + 1, + 2, + 3 +), +full_table as ( + SELECT + fb.date, + fb.user_address, + fb.contract_address, + dp.symbol, + fb.balance_daily as balance_daily, + COALESCE(dp.avg_daily_price, 0) AS avg_daily_price, + fb.balance_daily * COALESCE(dp.avg_daily_price, 0) AS usd_balance + FROM + full_balances fb + LEFT JOIN daily_prices dp ON fb.date = dp.date + AND fb.contract_address = dp.token_address -- AND dp.decimals is not null + -- and dp.decimals > 0 + WHERE + symbol is not null +) +SELECT + date, + symbol as token, + SUM(balance_daily) as treasury_native, + SUM(usd_balance) as usd_balance +FROM + full_table +WHERE + USD_BALANCE > 1 +GROUP BY + 1 + , 2 +ORDER BY + 1 DESC \ No newline at end of file diff --git a/models/projects/uniswap/raw/fact_uniswap_treasury_usd.sql b/models/projects/uniswap/raw/fact_uniswap_treasury_usd.sql new file mode 100644 index 00000000..785bc14e --- /dev/null +++ b/models/projects/uniswap/raw/fact_uniswap_treasury_usd.sql @@ -0,0 +1,13 @@ +{{ + config( + materialized="table", + snowflake_warehouse="UNISWAP_SM", + database="uniswap", + schema="raw", + alias="fact_uniswap_treasury_usd", + ) +}} + +SELECT date, sum(usd_balance) as treasury_usd +FROM {{ ref('fact_uniswap_treasury_by_token') }} +GROUP BY 1 \ No newline at end of file diff --git a/models/staging/uniswap/fact_uniswap_v3_blast_dex_swaps.sql b/models/staging/uniswap/fact_uniswap_v3_blast_dex_swaps.sql new file mode 100644 index 00000000..bac93e1b --- /dev/null +++ b/models/staging/uniswap/fact_uniswap_v3_blast_dex_swaps.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + unique_key=["tx_hash", "event_index"], + ) +}} +{{ + fact_uniswap_v3_fork_dex_swaps( + "0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd", "blast", (), "uniswap", "v3" + ) +}} diff --git a/models/staging/uniswap/fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool.sql new file mode 100644 index 00000000..0d7d7c7d --- /dev/null +++ b/models/staging/uniswap/fact_uniswap_v3_blast_trading_vol_fees_traders_by_pool.sql @@ -0,0 +1,10 @@ +{{ + config( + materialized="table", + ) +}} +{{ + fact_daily_uniswap_fork_trading_vol_fees_traders_by_pool( + "blast", "uniswap", "v3", "fact_uniswap_v3_blast_dex_swaps" + ) +}} \ No newline at end of file diff --git a/models/staging/uniswap/fact_uniswap_v3_blast_tvl_by_pool.sql b/models/staging/uniswap/fact_uniswap_v3_blast_tvl_by_pool.sql new file mode 100644 index 00000000..4e88efa4 --- /dev/null +++ b/models/staging/uniswap/fact_uniswap_v3_blast_tvl_by_pool.sql @@ -0,0 +1,6 @@ +{{ config(materialized="table", snowflake_warehouse="UNISWAP_TVL_SM") }} +{{ + fact_daily_uniswap_v3_fork_tvl_by_pool( + "0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd", "blast", "uniswap" + ) +}} From 1c9d6cb0b4e1532357e064a46229a5976d1d701b Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 13 Aug 2024 14:24:46 -0400 Subject: [PATCH 140/213] Maker: ez metrics by chain (#391) --- .../maker/prod_core/ez_maker_metrics.sql | 8 +- .../prod_core/ez_maker_metrics_by_chain.sql | 95 +++++++++++++++++++ 2 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 models/projects/maker/prod_core/ez_maker_metrics_by_chain.sql diff --git a/models/projects/maker/prod_core/ez_maker_metrics.sql b/models/projects/maker/prod_core/ez_maker_metrics.sql index fe859c61..1f67a52a 100644 --- a/models/projects/maker/prod_core/ez_maker_metrics.sql +++ b/models/projects/maker/prod_core/ez_maker_metrics.sql @@ -68,10 +68,10 @@ select , COALESCE(operating_expenses, 0) AS operating_expenses , COALESCE(direct_expenses, 0) AS direct_expenses , COALESCE(total_expenses, 0) AS total_expenses - , COALESCE(protocol_revenue - total_expenses, 0) AS protocol_earnings - , COALESCE(treasury_usd, 0) AS treasury_value - , COALESCE(treasury_native, 0) AS treasury_native_value - , COALESCE(net_treasury_usd, 0) AS net_treasury_value + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury_usd, 0) AS treasury_usd + , COALESCE(treasury_native, 0) AS treasury_native + , COALESCE(net_treasury_usd, 0) AS net_treasury_usd , COALESCE(net_deposit, 0) AS net_deposits , COALESCE(outstanding_supply, 0) AS outstanding_supply , COALESCE(tvl, 0) AS tvl diff --git a/models/projects/maker/prod_core/ez_maker_metrics_by_chain.sql b/models/projects/maker/prod_core/ez_maker_metrics_by_chain.sql new file mode 100644 index 00000000..c7eeb6be --- /dev/null +++ b/models/projects/maker/prod_core/ez_maker_metrics_by_chain.sql @@ -0,0 +1,95 @@ +{{ + config( + materialized="table", + snowflake_warehouse="MAKER", + database="maker", + schema="core", + alias="ez_metrics_by_chain" + ) +}} + +WITH + fees_revenue_expenses AS ( + SELECT + date, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM {{ ref('fact_maker_fees_revenue_expenses') }} + ) + , treasury_usd AS ( + SELECT date, treasury_usd FROM {{ ref('fact_treasury_usd') }} + ) + , treasury_native AS ( + SELECT date, amount_mkr as treasury_native FROM {{ ref('fact_treasury_mkr') }} + ) + , net_treasury AS ( + SELECT date, net_treasury_usd FROM {{ ref('fact_net_treasury_usd') }} + ) + , tvl_metrics AS ( + SELECT date, tvl_usd as net_deposit, tvl_usd as tvl FROM {{ ref('fact_maker_tvl') }} + ) + , outstanding_supply AS ( + SELECT date, outstanding_supply FROM {{ ref('fact_dai_supply') }} + ) + , token_turnover_metrics as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from {{ ref("fact_maker_fdv_and_turnover")}} + ) + , price_data as ({{ get_coingecko_metrics("maker") }}) + , token_holder_data as ( + select + date + , tokenholder_count + from {{ ref("fact_mkr_tokenholder_count")}} + ) + + +select + date + , 'ethereum' as chain + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury_usd, 0) AS treasury_usd + , COALESCE(treasury_native, 0) AS treasury_native + , COALESCE(net_treasury_usd, 0) AS net_treasury_usd + , COALESCE(net_deposit, 0) AS net_deposits + , COALESCE(outstanding_supply, 0) AS outstanding_supply + , COALESCE(tvl, 0) AS tvl + , COALESCE(price, 0) AS price + , COALESCE(fdmc, 0) AS fdmc + , COALESCE(market_cap, 0) AS market_cap + , COALESCE(token_volume, 0) AS token_volume + , COALESCE(token_turnover_fdv, 0) AS token_turnover_fdv + , COALESCE(token_turnover_circulating, 0) AS token_turnover_circulating + , COALESCE(tokenholder_count, 0) AS tokenholder_count +FROM token_holder_data +left join treasury_usd using (date) +left join treasury_native using (date) +left join net_treasury using (date) +left join tvl_metrics using (date) +left join outstanding_supply using (date) +left join token_turnover_metrics using (date) +left join price_data using (date) +left join fees_revenue_expenses using (date) +where date < to_date(sysdate()) \ No newline at end of file From ac00018e7f4b5b6aaaa756376f0ed56087692fe7 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 13 Aug 2024 15:50:57 -0400 Subject: [PATCH 141/213] AAVE add raw data (#392) --- .../aave_deposits_borrows_lender_revenue.sql | 94 +++++++------------ macros/lending/raw_aave_rpc_data.sql | 6 +- models/projects/aave/core/ez_aave_metrics.sql | 6 +- ...bitrum_deposits_borrows_lender_revenue.sql | 2 +- ...lanche_deposits_borrows_lender_revenue.sql | 2 +- ...lanche_deposits_borrows_lender_revenue.sql | 2 +- ...3_base_deposits_borrows_lender_revenue.sql | 3 +- ...v3_bsc_deposits_borrows_lender_revenue.sql | 2 +- ...hereum_deposits_borrows_lender_revenue.sql | 2 +- ...hereum_deposits_borrows_lender_revenue.sql | 2 +- ...gnosis_deposits_borrows_lender_revenue.sql | 2 +- ...timism_deposits_borrows_lender_revenue.sql | 2 +- ...olygon_deposits_borrows_lender_revenue.sql | 2 +- ...olygon_deposits_borrows_lender_revenue.sql | 2 +- 14 files changed, 53 insertions(+), 76 deletions(-) diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql index fec57be2..39dbb26c 100644 --- a/macros/lending/aave_deposits_borrows_lender_revenue.sql +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -1,84 +1,56 @@ {% macro aave_deposits_borrows_lender_revenue(chain, protocol, contract_address, raw_table, healed_raw_table) %} with - unioned as ( - --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill - --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) - {% if healed_raw_table is defined %} - select * - from landing_database.prod_landing.{{healed_raw_table}} - union all - {% endif %} - select * - from {{ source("PROD_LANDING", raw_table) }} - ), - dates as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date - from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json - group by date, extraction_date - ), - max_extraction_per_day as ( - select date, max(extraction_date) as extraction_date - from dates - group by date - order by date - ), - flattened_json as ( - select - extraction_date, - to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, - flat_json.value:"underlying_token"::string as underlying_token, - flat_json.value:"underlying_token_price"::float as underlying_token_price, - flat_json.value:"borrows"::float as borrows, - flat_json.value:"borrows_usd"::float as borrows_usd, - flat_json.value:"supply"::float as supply, - flat_json.value:"supply_usd"::float as supply_usd - from unioned, lateral flatten(input => parse_json(source_json)) as flat_json - ), - map_reduce_json as ( - select t1.* - from flattened_json t1 - left join max_extraction_per_day t2 on t1.date = t2.date - where t1.extraction_date = t2.extraction_date - ) - , average_liquidity_rate as ( + average_liquidity_rate as ( select block_timestamp::date as date , decoded_log:reserve::string as reserve - , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as first_liquidity_index - , max_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as last_liquidity_index + , max(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , min(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + -- , min_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as borrow_index + -- , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as liquidity_index + -- , min_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as first_borrow_index + -- , max_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as last_borrow_index + -- , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as first_liquidity_index + -- , max_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as last_liquidity_index from {{ chain }}_flipside.core.ez_decoded_event_logs where contract_address = lower('{{ contract_address }}') and event_name = 'ReserveDataUpdated' group by 1, 2 ) - , liquidity_daily_rate as ( + , daily_rate as ( select date , reserve - , first_liquidity_index - , last_liquidity_index - , (last_liquidity_index / first_liquidity_index) - 1 as daily_rate + , 1 + (stable_borrow_rate/365) as stable_borrow_rate + , (borrow_index / coalesce(LAG(borrow_index) IGNORE NULLS OVER (partition by reserve ORDER BY date), borrow_index)) - 1 as daily_borrow_rate + , (liquidity_index / coalesce(LAG(liquidity_index) IGNORE NULLS OVER (partition by reserve ORDER BY date), liquidity_index)) - 1 as daily_liquidity_rate + + -- , (last_borrow_index / first_borrow_index) - 1 as daily_borrow_rate + -- , (last_liquidity_index / first_liquidity_index) - 1 as daily_liquidity_rate from average_liquidity_rate ) , data as ( select - map_reduce_json.date - , reserve + raw_data.date , underlying_token_price , underlying_token , supply , supply_usd - , coalesce(supply * daily_rate, 0) as revenue_nominal - , coalesce(supply_usd * daily_rate, 0) as revenue + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue , borrows , borrows_usd - from map_reduce_json - left join liquidity_daily_rate - on map_reduce_json.date = liquidity_daily_rate.date - and lower(map_reduce_json.underlying_token) = lower(liquidity_daily_rate.reserve) - order by date + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + from {{ref(raw_table)}} as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) ) select date @@ -90,8 +62,10 @@ select , sum(borrows_usd) as borrows_usd , sum(supply) as supply , sum(supply_usd) as supply_usd - , sum(revenue) as revenue - , sum(revenue_nominal) as revenue_nominal + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees from data group by 1, 2 {% endmacro %} \ No newline at end of file diff --git a/macros/lending/raw_aave_rpc_data.sql b/macros/lending/raw_aave_rpc_data.sql index da2b5a29..54c1c3f9 100644 --- a/macros/lending/raw_aave_rpc_data.sql +++ b/macros/lending/raw_aave_rpc_data.sql @@ -3,9 +3,9 @@ with unioned as ( --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) - {% if healed_raw_table is defined %} + {% if healed_source_table is defined %} select * - from landing_database.prod_landing.{{healed_raw_table}} + from landing_database.prod_landing.{{healed_source_table}} union all {% endif %} select * @@ -30,6 +30,8 @@ with to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, flat_json.value:"underlying_token"::string as underlying_token, flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, flat_json.value:"borrows"::float as borrows, flat_json.value:"borrows_usd"::float as borrows_usd, flat_json.value:"supply"::float as supply, diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index ea310ce2..a96cd35a 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -38,7 +38,8 @@ with , sum(borrows_usd) as outstanding_supply , sum(supply_usd) as net_deposits , net_deposits - outstanding_supply as tvl - , sum(revenue) as supply_side_deposit_revenue + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(interest_rate_fees) as interest_rate_fees from deposits_borrows_lender_revenue group by 1 ) @@ -227,7 +228,7 @@ with ) select aave_outstanding_supply_net_deposits_deposit_revenue.date - , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + , interest_rate_fees as interest_rate_fees , flashloan_fees , gho_revenue as gho_fees , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees @@ -239,6 +240,7 @@ select , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue , reserve_factor_revenue + , interest_rate_fees - supply_side_deposit_revenue as protocol_revenue_testing , trading_fees as dao_trading_revenue , gho_revenue , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql index 686a539a..033d57d2 100644 --- a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('arbitrum', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_arbitrum_borrows_deposits_revenue', 'raw_aave_v3_lending_arbitrum')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('arbitrum', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_arbitrum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql index c78c4624..79d4cd74 100644 --- a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C', 'raw_aave_v2_avalanche_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C', 'raw_aave_v2_avalanche_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql index a32380f2..d8f7d12a 100644 --- a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_avalanche_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_avalanche_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql index 6ec8ddab..00a643a1 100644 --- a/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql @@ -1,11 +1,10 @@ {{ config( materialized="table", - snowflake_warehouse="AAVE", database="aave", schema="raw", alias="fact_v3_base_deposits_borrows_lender_revenue", ) }} -{{ aave_deposits_borrows_lender_revenue('base', 'AAVE V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', 'raw_aave_v3_base_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('base', 'AAVE V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', 'raw_aave_v3_base_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql index f650acd0..9481b78b 100644 --- a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('bsc', 'AAVE V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', 'raw_aave_v3_bsc_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('bsc', 'AAVE V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', 'raw_aave_v3_bsc_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql index 280b7b40..3bae8fa6 100644 --- a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', 'raw_aave_v2_ethereum_borrows_deposits_revenue', 'raw_aave_v2_lending_ethereum')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', 'raw_aave_v2_ethereum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql index 7841549c..26526175 100644 --- a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', 'raw_aave_v3_ethereum_borrows_deposits_revenue', 'raw_aave_v3_lending_ethereum')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', 'raw_aave_v3_ethereum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql index 275f10e3..b7e60e46 100644 --- a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_gnosis_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_gnosis_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql index 0d3ea5bd..0da83958 100644 --- a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('optimism', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_optimism_borrows_deposits_revenue')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('optimism', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_optimism_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql index 855ff964..2a2aad96 100644 --- a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', 'raw_aave_v2_polygon_borrows_deposits_revenue', 'raw_aave_v2_lending_polygon')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', 'raw_aave_v2_polygon_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql index 66aa7376..9368e71b 100644 --- a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_polygon_borrows_deposits_revenue', 'raw_aave_v3_lending_polygon')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_polygon_rpc_data')}} \ No newline at end of file From cb1188f00fcd497d0dc5b33be9d7a081b4410987 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 13 Aug 2024 19:05:16 -0400 Subject: [PATCH 142/213] Updated Ton to use Raw Transaction (#393) --- models/projects/ton/core/ez_ton_metrics.sql | 37 +++++----- models/staging/ton/__ton__sources.yml | 1 + .../ton/fact_ton_fundamental_metrics.sql | 50 ++++++++++++++ models/staging/ton/fact_ton_transactions.sql | 68 +++++++++++++++++++ 4 files changed, 135 insertions(+), 21 deletions(-) create mode 100644 models/staging/ton/fact_ton_fundamental_metrics.sql create mode 100644 models/staging/ton/fact_ton_transactions.sql diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index 2237c6a2..f4dc14cf 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -14,19 +14,15 @@ with date, txns as transaction_nodes from {{ ref("fact_ton_daa_txns_gas_gas_usd_revenue_revenue_native") }} - ), ton_app_daa as ( + ), + ton_apps_fundamental_data as ( select - date, - daa as dau - from {{ ref("fact_ton_app_daa") }} - ), - ton_app_txns_fees as ( - select - date, - txns, - fees_native, - avg_txn_fee_native, - from {{ ref("fact_ton_app_fees_txns") }} + date + , dau + , fees_native + , txns + , avg_txn_fee_native + from {{ ref("fact_ton_fundamental_metrics") }} ), price_data as ({{ get_coingecko_metrics("the-open-network") }}), defillama_data as ({{ get_defillama_metrics("ton") }}), @@ -38,7 +34,7 @@ with ), github_data as ({{ get_github_metrics("ton") }}) select - ton_app_daa.date, + ton.date, 'ton' as chain, transaction_nodes, price, @@ -57,11 +53,10 @@ select fees_native / 2 as revenue_native, (fees_native / 2) * price as revenue, avg_txn_fee_native * price as avg_txn_fee -from ton_app_daa -left join price_data on ton_app_daa.date = price_data.date -left join defillama_data on ton_app_daa.date = defillama_data.date -left join github_data on ton_app_daa.date = github_data.date -left join dex_data on ton_app_daa.date = dex_data.date -left join fundamental_data on ton_app_daa.date = fundamental_data.date -left join ton_app_txns_fees on ton_app_daa.date = ton_app_txns_fees.date -where ton_app_daa.date < to_date(sysdate()) +from ton_apps_fundamental_data as ton +left join price_data on ton.date = price_data.date +left join defillama_data on ton.date = defillama_data.date +left join github_data on ton.date = github_data.date +left join dex_data on ton.date = dex_data.date +left join fundamental_data on ton.date = fundamental_data.date +where ton.date < to_date(sysdate()) diff --git a/models/staging/ton/__ton__sources.yml b/models/staging/ton/__ton__sources.yml index ecd24440..8c0448dd 100644 --- a/models/staging/ton/__ton__sources.yml +++ b/models/staging/ton/__ton__sources.yml @@ -13,3 +13,4 @@ sources: - name: raw_ton_tokens_openleague - name: raw_ton_app_daa - name: raw_ton_app_txns_fees + - name: raw_ton_transactions diff --git a/models/staging/ton/fact_ton_fundamental_metrics.sql b/models/staging/ton/fact_ton_fundamental_metrics.sql new file mode 100644 index 00000000..c194efc1 --- /dev/null +++ b/models/staging/ton/fact_ton_fundamental_metrics.sql @@ -0,0 +1,50 @@ +{{ config( + materialized="incremental", + unique_key="date", +) }} + +with flatten_ton_transaction as ( + select + NOT ARRAY_CONTAINS(0, ARRAY_UNIQUE_AGG(success)) as success + , trace_id + , max(block_timestamp::date) as date + , min_by(transaction_account_interfaces, lt) as interfaces + , min_by(transaction_account, lt) as first_account + , min_by(transaction_account_workchain, lt) as workchain + , sum(total_fees) as transaction_fees + from {{ ref('fact_ton_transactions') }} + {% if is_incremental() %} + where block_timestamp::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} + group by trace_id +), txns as ( + SELECT + date + , count(*) as txns + , (sum(transaction_fees) / POWER(10, 9)) / count(*) as avg_txn_fee_native + from flatten_ton_transaction + where success and workchain <> -1 + group by date +), fees as ( + SELECT + date + , sum(transaction_fees) / POWER(10, 9) as fees_native + FROM flatten_ton_transaction + GROUP by date +), +dau as ( + select + date + , count(distinct first_account) as dau + from flatten_ton_transaction + where success and interfaces[1] like 'wallet_v%' + group by date +) +SELECT + coalesce(fees.date, txns.date, dau.date) as date + , dau + , fees_native + , txns + , avg_txn_fee_native +FROM fees left join txns on fees.date = txns.date +left join dau on fees.date = dau.date diff --git a/models/staging/ton/fact_ton_transactions.sql b/models/staging/ton/fact_ton_transactions.sql new file mode 100644 index 00000000..b27528ca --- /dev/null +++ b/models/staging/ton/fact_ton_transactions.sql @@ -0,0 +1,68 @@ +{{ + config( + materialized="incremental", + unique_key="tx_id", + ) +}} +with raw_data as ( + select + extraction_date + , parse_json(source_json) as source_json + , parse_json(source_json):"decoded_hash"::string as tx_hash + , parse_json(source_json):"tx_id"::string as tx_id + , TO_TIMESTAMP(parse_json(source_json):"utime") as block_timestamp + , parse_json(source_json):"total_fees"::bigint as total_fees + , parse_json(source_json):"storage_ph_fees_collected"::bigint as storage_ph_fees_collected + , parse_json(source_json):"success"::boolean as success + , parse_json(source_json):"in_msg"::string as in_msg + , parse_json(source_json):"lt"::bigint as lt + , parse_json(source_json):"transaction_account"::string as transaction_account + , parse_json(source_json):"transaction_account_workchain"::int as transaction_account_workchain + , parse_json(source_json):"transaction_account_interfaces"::array as transaction_account_interfaces + , parse_json(source_json):"from_address"::string as from_address + , parse_json(source_json):"from_workchain"::int as from_workchain + , parse_json(source_json):"from_interfaces"::array as from_interfaces + , parse_json(source_json):"to_address"::string as to_address + , parse_json(source_json):"to_workchain"::int as to_workchain + , parse_json(source_json):"to_interfaces"::array as to_interfaces + , parse_json(source_json):"trace_id"::string as trace_id + , parse_json(source_json):"op_code"::string as op_code + , parse_json(parse_json(source_json):"decoded_body") as decoded_body + , parse_json(source_json):"init"::string as init + , parse_json(source_json):"value"::bigint as value + , parse_json(source_json):"msg_type"::string as msg_type + , parse_json(source_json):"init_interfaces"::array as init_interfaces + from + {{ source("PROD_LANDING", "raw_ton_transactions") }} + {% if is_incremental() %} + where TO_TIMESTAMP(parse_json(source_json):"utime") > (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + and extraction_date > (select dateadd('day', -3, max(block_timestamp)) from {{ this }}) + {% endif %} +) +select + max_by(tx_hash, extraction_date) as tx_hash + , tx_id + , max_by(block_timestamp, extraction_date) as block_timestamp + , max_by(total_fees, extraction_date) as total_fees + , max_by(storage_ph_fees_collected, extraction_date) as storage_ph_fees_collected + , max_by(success, extraction_date) as success + , max_by(in_msg, extraction_date) as in_msg + , max_by(lt, extraction_date) as lt + , max_by(transaction_account, extraction_date) as transaction_account + , max_by(transaction_account_workchain, extraction_date) as transaction_account_workchain + , max_by(transaction_account_interfaces, extraction_date) as transaction_account_interfaces + , max_by(from_address, extraction_date) as from_address + , max_by(from_workchain, extraction_date) as from_workchain + , max_by(from_interfaces, extraction_date) as from_interfaces + , max_by(to_address, extraction_date) as to_address + , max_by(to_workchain, extraction_date) as to_workchain + , max_by(to_interfaces, extraction_date) as to_interfaces + , max_by(trace_id, extraction_date) as trace_id + , max_by(op_code, extraction_date) as op_code + , max_by(decoded_body, extraction_date) as decoded_body + , max_by(init, extraction_date) as init + , max_by(value, extraction_date) as value + , max_by(msg_type, extraction_date) as msg_type + , max_by(init_interfaces, extraction_date) as init_interfaces +from raw_data +group by tx_id From 37fff930e48726d914db040f29f84d0c3dd0993e Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 13 Aug 2024 20:40:54 -0400 Subject: [PATCH 143/213] Stablecoin V2: Clustering (#394) --- .../stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql index 0c50c74c..0f2d72c9 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table") }} +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG", cluster_by="chain") }} select date , contract_address From 64774df27d5b0a4b647908d85af7a18d33980c70 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 13 Aug 2024 23:16:38 -0400 Subject: [PATCH 144/213] AAVE update ez metrics (#395) --- models/projects/aave/core/ez_aave_metrics.sql | 6 +++--- models/projects/aave/core/ez_aave_metrics_by_chain.sql | 8 +++++--- models/projects/aave/core/ez_aave_metrics_by_token.sql | 10 ++++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index a96cd35a..152fbb31 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -239,11 +239,11 @@ select , ecosystem_incentives as ecosystem_supply_side_revenue , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue - , reserve_factor_revenue - , interest_rate_fees - supply_side_deposit_revenue as protocol_revenue_testing , trading_fees as dao_trading_revenue , gho_revenue - , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , reserve_factor_revenue + , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) as protocol_reserve_factor_revenue + , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue , ecosystem_incentives , safety_incentives , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives diff --git a/models/projects/aave/core/ez_aave_metrics_by_chain.sql b/models/projects/aave/core/ez_aave_metrics_by_chain.sql index 3a18cd29..cac40162 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_chain.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_chain.sql @@ -39,7 +39,8 @@ with , sum(borrows_usd) as outstanding_supply , sum(supply_usd) as net_deposits , net_deposits - outstanding_supply as tvl - , sum(revenue) as supply_side_deposit_revenue + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(interest_rate_fees) as interest_rate_fees from deposits_borrows_lender_revenue group by 1, 2 ) @@ -210,7 +211,7 @@ with select aave_outstanding_supply_net_deposits_deposit_revenue.date , chain - , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + , coalesce(interest_rate_fees, 0) as interest_rate_fees , flashloan_fees , gho_revenue as gho_fees , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees @@ -224,7 +225,8 @@ select , reserve_factor_revenue , trading_fees as dao_trading_revenue , gho_revenue - , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) as protocol_reserve_factor_revenue + , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue , ecosystem_incentives , safety_incentives , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql index 4c437fa4..63b5b421 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_token.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -44,8 +44,10 @@ with , sum(supply_usd) as net_deposits , coalesce(net_deposits_nominal, 0) - coalesce(outstanding_supply_nominal, 0) as tvl_nominal , coalesce(net_deposits, 0) - coalesce(outstanding_supply, 0) as tvl - , sum(revenue) as supply_side_deposit_revenue - , sum(revenue_nominal) as supply_side_deposit_revenue_nominal + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(deposit_revenue_nominal) as supply_side_deposit_revenue_nominal + , sum(interest_rate_fees) as interest_rate_fees + , sum(interest_rate_fees_nominal) as interest_rate_fees_nominal from deposits_borrows_lender_revenue group by 1, 2, 3 ) @@ -236,8 +238,8 @@ select , chain , token_address - , coalesce(supply_side_deposit_revenue_nominal, 0) + coalesce(reserve_factor_revenue_nominal, 0) as interest_rate_fees_nominal - , coalesce(supply_side_deposit_revenue, 0) + coalesce(reserve_factor_revenue, 0) as interest_rate_fees + , coalesce(interest_rate_fees_nominal, 0) as interest_rate_fees_nominal + , coalesce(interest_rate_fees, 0) as interest_rate_fees , coalesce(flashloan_fees_nominal, 0) as flashloan_fees_nominal , flashloan_fees From 801109619137578daa31f3898abbba537f587234 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 13 Aug 2024 23:19:01 -0400 Subject: [PATCH 145/213] Ethereum: Share `dim_contracts_addresses` (#396) --- .../contracts/dim_ethereum_contract_addresses.sql | 8 -------- .../ethereum/raw/dim_ethereum_contract_addresses.sql | 11 +++++++++++ 2 files changed, 11 insertions(+), 8 deletions(-) delete mode 100644 models/dimensions/contracts/dim_ethereum_contract_addresses.sql create mode 100644 models/projects/ethereum/raw/dim_ethereum_contract_addresses.sql diff --git a/models/dimensions/contracts/dim_ethereum_contract_addresses.sql b/models/dimensions/contracts/dim_ethereum_contract_addresses.sql deleted file mode 100644 index 05a83e9c..00000000 --- a/models/dimensions/contracts/dim_ethereum_contract_addresses.sql +++ /dev/null @@ -1,8 +0,0 @@ -{{ - config( - materialized="incremental", - snowflake_warehouse="ETHEREUM" - ) -}} - -{{distinct_contract_addresses("ethereum")}} \ No newline at end of file diff --git a/models/projects/ethereum/raw/dim_ethereum_contract_addresses.sql b/models/projects/ethereum/raw/dim_ethereum_contract_addresses.sql new file mode 100644 index 00000000..6ae20f16 --- /dev/null +++ b/models/projects/ethereum/raw/dim_ethereum_contract_addresses.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="incremental", + snowflake_warehouse="ETHEREUM", + database="ethereum", + schema="raw", + alias="dim_contract_addresses", + ) +}} + +{{distinct_contract_addresses("ethereum")}} \ No newline at end of file From 4a83d87c1f6ecf8043468fd651931283207b484b Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:20:13 -0400 Subject: [PATCH 146/213] Fix Fact Ton DAU (#397) --- models/staging/ton/fact_ton_fundamental_metrics.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/staging/ton/fact_ton_fundamental_metrics.sql b/models/staging/ton/fact_ton_fundamental_metrics.sql index c194efc1..493ec09c 100644 --- a/models/staging/ton/fact_ton_fundamental_metrics.sql +++ b/models/staging/ton/fact_ton_fundamental_metrics.sql @@ -37,7 +37,7 @@ dau as ( date , count(distinct first_account) as dau from flatten_ton_transaction - where success and interfaces[1] like 'wallet_v%' + where success and GET(interfaces, 0) like 'wallet_v%' group by date ) SELECT From e5af6e1e1095b50583b76fc6fa0f1adead6ec4e2 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 14 Aug 2024 14:55:37 -0400 Subject: [PATCH 147/213] Adding usdc as an Asset (#398) --- databases.csv | 3 ++- models/projects/usdc/core/ez_usdc_metrics.sql | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 models/projects/usdc/core/ez_usdc_metrics.sql diff --git a/databases.csv b/databases.csv index 45c87857..c5a7ac58 100644 --- a/databases.csv +++ b/databases.csv @@ -74,5 +74,6 @@ SWELL SUI TON TRON +UNISWAP +USDC ZKSYNC -UNISWAP \ No newline at end of file diff --git a/models/projects/usdc/core/ez_usdc_metrics.sql b/models/projects/usdc/core/ez_usdc_metrics.sql new file mode 100644 index 00000000..1925dd24 --- /dev/null +++ b/models/projects/usdc/core/ez_usdc_metrics.sql @@ -0,0 +1,21 @@ +{{ + config( + materialized="table", + snowflake_warehouse="USDC", + database="usdc", + schema="core", + alias="ez_metrics", + ) +}} + +select + 'usdc' as symbol + , date + , sum(transfer_volume) as stablecoin_transfer_volume + , sum(deduped_transfer_volume) as deduped_stablecoin_transfer_volume + , sum(dau) as stablecoin_dau + , sum(txns) as stablecoin_txns + , sum(total_supply) as stablecoin_total_supply +from {{ ref("agg_daily_stablecoin_metrics") }} +where symbol = 'USDC' +group by date From 6dbd81b31a3af09565dca7be565cac55d21b694e Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:19:47 -0400 Subject: [PATCH 148/213] Adding complete asset queries (#399) --- .../maker/ez_maker_metrics__complete__.sql | 2360 ++++++++++++++++ .../ez_maker_metrics_by_chain__complete__.sql | 2361 +++++++++++++++++ .../ez_maker_metrics_by_token__complete__.sql | 2205 +++++++++++++++ 3 files changed, 6926 insertions(+) create mode 100644 models/_complete_asset_models/maker/ez_maker_metrics__complete__.sql create mode 100644 models/_complete_asset_models/maker/ez_maker_metrics_by_chain__complete__.sql create mode 100644 models/_complete_asset_models/maker/ez_maker_metrics_by_token__complete__.sql diff --git a/models/_complete_asset_models/maker/ez_maker_metrics__complete__.sql b/models/_complete_asset_models/maker/ez_maker_metrics__complete__.sql new file mode 100644 index 00000000..afbca460 --- /dev/null +++ b/models/_complete_asset_models/maker/ez_maker_metrics__complete__.sql @@ -0,0 +1,2360 @@ +WITH + __dbt__cte__dim_chart_of_accounts as ( + + +SELECT code, primary_label, secondary_label, account_label, category_label, subcategory_label + FROM (VALUES + (11110, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'ETH', 'ETH'), + (11120, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'BTC', 'BTC'), + (11130, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'WSTETH', 'WSTETH'), + (11140, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Stable LP'), + (11141, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Volatile LP'), + (11199, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Other', 'Other'), + (11210, 'Assets', 'Collateralized Lending', 'Money Market', 'Money Market', 'D3M'), + (11510, 'Assets', 'Collateralized Lending', 'Legacy', 'Stablecoins', 'Stablecoins'), + (12310, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Off-Chain Private Credit'), + (12311, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Tokenized Private Credit'), + (12320, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Off-Chain Public Credit'), + (12321, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Tokenized Public Credit'), + (13410, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Non-Yielding Stablecoin'), + (13411, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Yielding Stablecoin'), + (14620, 'Assets', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (19999, 'Assets', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (21110, 'Liabilities', 'Stablecoin', 'Circulating', 'Interest-bearing', 'Dai'), + (21120, 'Liabilities', 'Stablecoin', 'Circulating', 'Non-interest bearing', 'Dai'), + (29999, 'Liabilities', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (31110, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'ETH', 'ETH SF'), + (31120, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'BTC', 'BTC SF'), + (31130, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'WSTETH', 'WSTETH SF'), + (31140, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Stable LP SF'), + (31141, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Volatile LP SF'), + (31150, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Other', 'Other SF'), + (31160, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Money Market', 'D3M SF'), + (31170, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Private Credit SF'), + (31171, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Private Credit SF'), + (31172, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Public Credit Interest'), + (31173, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Public Credit Interest'), + (31180, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'PSM', 'Yielding Stablecoin Interest'), + (31190, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Stablecoins', 'Stablecoins SF'), + (31210, 'Equity', 'Protocol Surplus', 'Liquidation Revenues', 'Liquidation Revenues', 'Liquidation Revenues'), + (31310, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Trading Revenues'), + (31311, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Teleport Revenues'), + (31410, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Mints', 'MKR Mints'), + (31420, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Burns', 'MKR Burns'), + (31510, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Inflow', 'Sin Inflow'), + (31520, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Outflow', 'Sin Outflow'), + (31610, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'DSR', 'Circulating Dai'), + (31620, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Liquidation Expenses', 'Liquidation Expenses'), + (31630, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Oracle Gas Expenses', 'Oracle Gas Expenses'), + (31710, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Keeper Maintenance', 'Keeper Maintenance'), + (31720, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Workforce Expenses'), + (31730, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Returned Workforce Expenses'), + (31740, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Direct to Third Party Expenses', 'Direct to Third Party Expenses'), + (32110, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Direct MKR Token Expenses', 'Direct MKR Token Expenses'), + (32120, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Vested MKR Token Expenses', 'Vested MKR Token Expenses'), + (32210, 'Equity', 'Reserved MKR Surplus', 'MKR Contra Equity', 'MKR Contra Equity', 'MKR Contra Equity'), + (33110, 'Equity', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (39999, 'Equity', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token') + + ) AS t(code, primary_label, secondary_label, account_label, category_label, subcategory_label) +), __dbt__cte__fact_dai_burn as ( + + +SELECT + block_timestamp, + tx_hash, + from_address as usr +FROM ethereum_flipside.core.fact_token_transfers +where to_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__dim_dao_wallet as ( + + +SELECT * FROM (VALUES + ( '0x9e1585d9ca64243ce43d42f7dd7333190f66ca09' , 'RWF Core Unit Multisig + Operational 1', 'Fixed', 'RWF-001') + , ( '0xd1505ee500791490de8642353ba6a5b92e3550f7' , 'RWF Core Unit Multisig + Operational 2', 'Fixed', 'RWF-001') + , ( '0xe2c16c308b843ed02b09156388cb240ced58c01c' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 1', 'Fixed', 'PE-001') + , ( '0x83e36aaa1c7b99e2d3d07789f7b70fce46f0d45e' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 2', 'Fixed', 'PE-001') + , ( '0x01d26f8c5cc009868a4bf66e268c17b057ff7a73' , 'GovAlpha Multisig', 'Fixed', 'GOV-001') + , ( '0xdcaf2c84e1154c8ddd3203880e5db965bff09b60' , 'Content Prod Multisig 1', 'Fixed', 'OLD-001') + , ( '0x6a0ce7dbb43fe537e3fd0be12dc1882393895237' , 'Content Prod Multisig 2', 'Fixed', 'OLD-001') + , ( '0x1ee3eca7aef17d1e74ed7c447ccba61ac76adba9' , 'GovCom Multisig + Continuous Operation 1', 'Fixed', 'COM-001') + , ( '0x99e1696a680c0d9f426be20400e468089e7fdb0f' , 'GovCom Multisig + Continuous Operation 2', 'Fixed', 'COM-001') + , ( '0x7800c137a645c07132886539217ce192b9f0528e' , 'Growth Emergency Multisig', 'Fixed', 'GRO-001') + , ( '0xb5eb779ce300024edb3df9b6c007e312584f6f4f' , 'SES Multisigs (Permanent Team, Incubation, Grants) 1', 'Fixed', 'SES-001') + , ( '0x7c09ff9b59baaebfd721cbda3676826aa6d7bae8' , 'SES Multisigs (Permanent Team, Incubation, Grants) 2', 'Fixed', 'SES-001') + , ( '0xf95eb8ec63d6059ba62b0a8a7f843c7d92f41de2' , 'SES Multisigs (Permanent Team, Incubation, Grants) 3', 'Fixed', 'SES-001') + , ( '0xd98ef20520048a35eda9a202137847a62120d2d9' , 'Risk Multisig', 'Fixed', 'RISK-001') + , ( '0x8cd0ad5c55498aacb72b6689e1da5a284c69c0c7' , 'DUX Team Wallet', 'Fixed', 'DUX-001') + , ( '0x6d348f18c88d45243705d4fdeeb6538c6a9191f1' , 'StarkNet Team Wallet', 'Fixed', 'SNE-001') + , ( '0x955993df48b0458a01cfb5fd7df5f5dca6443550' , 'Strategic Happiness Wallet 1', 'Fixed', 'SH-001') --prior primary wallet, still uses for smaller payments + , ( '0xc657ac882fb2d6ccf521801da39e910f8519508d' , 'Strategic Happiness Wallet 2', 'Fixed', 'SH-001') --multisig for most expenses + , ( '0xd740882b8616b50d0b317fdff17ec3f4f853f44f' , 'CES Team Wallet', 'Fixed', 'CES-001') + , ( '0x56349a38e09f36039f6af77309690d217beaf0bf' , 'DECO Ops + DECO Protocol Wallets 1', 'Fixed', 'DECO-001') + , ( '0xa78f1f5698f8d345a14d7323745c6c56fb8227f0' , 'DECO Ops + DECO Protocol Wallets 2', 'Fixed', 'DECO-001') + , ( '0x465aa62a82e220b331f5ecca697c20e89554b298' , 'SAS Team Wallet', 'Fixed', 'SAS-001') + , ( '0x124c759d1084e67b19a206ab85c4527fab26c342' , 'IS Ops Wallet', 'Fixed', 'IS-001') + , ( '0x7327aed0ddf75391098e8753512d8aec8d740a1f' , 'Data Insights Wallet', 'Fixed', 'DIN-001') + , ( '0x2dc0420a736d1f40893b9481d8968e4d7424bc0b' , 'TechOps', 'Fixed', 'TECH-001') + , ( '0x2b6180b413511ce6e3da967ec503b2cc19b78db6' , 'Oracle Gas Cost Multisig + Emergency Fund 1', 'Variable', 'GAS') + , ( '0x1a5b692029b157df517b7d21a32c8490b8692b0f' , 'Oracle Gas Cost Multisig + Emergency Fund 2', 'Variable', 'GAS') + , ( '0x53ccaa8e3bef14254041500acc3f1d4edb5b6d24' , 'Oracle Multisig, Emergency Multisig 1', 'Fixed', 'ORA-001') + , ( '0x2d09b7b95f3f312ba6ddfb77ba6971786c5b50cf' , 'Oracle Multisig, Emergency Multisig 2', 'Fixed', 'ORA-001') + , ( '0xf737c76d2b358619f7ef696cf3f94548fecec379' , 'Strategic Finance Multisig', 'Fixed', 'SF-001') + , ( '0x3d274fbac29c92d2f624483495c0113b44dbe7d2' , 'Events Multisig', 'Fixed', 'EVENTS-001') + , ( '0x34d8d61050ef9d2b48ab00e6dc8a8ca6581c5d63' , 'Foundation Operational Wallet', 'Fixed', 'DAIF-001') + , ( '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' , 'DS Pause Proxy', 'Variable', 'DSPP') + , ( '0x73f09254a81e1f835ee442d1b3262c1f1d7a13ff' , 'Interim Multisig', 'Fixed', 'INTERIM') + , ( '0x87acdd9208f73bfc9207e1f6f0fde906bca95cc6' , 'SES Multisig (Auditor)', 'Fixed', 'SES-001') + , ( '0x5a994d8428ccebcc153863ccda9d2be6352f89ad' , 'DUX Auditor Wallet', 'Fixed', 'DUX-001') + , ( '0x25307ab59cd5d8b4e2c01218262ddf6a89ff86da' , 'CES Auditor Wallet', 'Fixed', 'CES-001') + , ( '0xf482d1031e5b172d42b2daa1b6e5cbf6519596f7' , 'DECO Auditor Wallet', 'Fixed', 'DECO-001') + , ( '0xb1f950a51516a697e103aaa69e152d839182f6fe' , 'SAS Auditor Wallet', 'Fixed', 'SAS-001') + , ( '0xd1f2eef8576736c1eba36920b957cd2af07280f4' , 'IS Auditor Wallet', 'Fixed', 'IS-001') + , ( '0x96d7b01cc25b141520c717fa369844d34ff116ec' , 'RWF Auditor Wallet', 'Fixed', 'RWF-001') + , ( '0x1a3da79ee7db30466ca752de6a75def5e635b2f6' , 'TechOps Auditor Wallet', 'Fixed', 'TECH-001') + , ( '0x5f5c328732c9e52dfcb81067b8ba56459b33921f' , 'Foundation Reserves', 'Fixed', 'DAIF-001') + , ( '0x478c7ce3e1df09130f8d65a23ad80e05b352af62' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x926c21602fec84d6d0fa6450b40edba595b5c6e4' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x37b375e3d418fbecba6b283e704f840ab32f3b3c' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x5a6007d17302238d63ab21407ff600a67765f982' , 'Techops Keepers', 'Variable', 'TECHOPS') + , ( '0xfb5e1d841bda584af789bdfabe3c6419140ec065' , 'Chainlink Keepers', 'Variable', 'CHAINLINK') + , ( '0xaefed819b6657b3960a8515863abe0529dfc444a' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x0b5a34d084b6a5ae4361de033d1e6255623b41ed' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0xc6a048550c9553f8ac20fbdeb06f114c27eccabb' , 'Gelato Keepers', 'Variable', 'GELATO') + --, ( '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' , 'DSS Blow', 'Variable', 'BLOW') + , ( '0xb386bc4e8bae87c3f67ae94da36f385c100a370a' , 'New Risk Multisig', 'Fixed', 'RISK-001') + ) AS t(wallet_address, wallet_label, varfix, code) +), __dbt__cte__fact_team_dai_burns_tx as ( + + +SELECT + tx_hash, + usr, + is_keeper +FROM ( + SELECT + d_c_b.tx_hash, + d_c_b.usr, + dao_wallet.wallet_label LIKE '% Keepers' as is_keeper + FROM __dbt__cte__fact_dai_burn as d_c_b + JOIN __dbt__cte__dim_dao_wallet dao_wallet ON d_c_b.usr = dao_wallet.wallet_address + + UNION ALL + + SELECT + tx_hash, + usr, + FALSE as is_keeper + FROM __dbt__cte__fact_dai_burn + WHERE usr = '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' +) +GROUP BY tx_hash, usr, is_keeper +), __dbt__cte__fact_team_dai_burns as ( + + +WITH team_dai_burns_preunioned AS ( + SELECT vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.is_keeper, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_team_dai_burns_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.is_keeper +) + +SELECT ts, + hash, + (CASE WHEN is_keeper THEN 31710 ELSE 31730 END) AS code, + value -- increased equity +FROM team_dai_burns_preunioned + +UNION ALL + +SELECT ts, + hash, + 21120 AS code, + -value AS value -- decreased liability +FROM team_dai_burns_preunioned +), __dbt__cte__dim_maker_contracts as ( + + +SELECT * FROM (VALUES + ( 'FlapFlop', '0x4d95a049d5b0b7d32058cd3f2163015747522e99' ) + , ( 'FlapFlop', '0xa4f79bc4a5612bdda35904fdf55fc4cb53d1bff6' ) + , ( 'FlapFlop', '0x0c10ae443ccb4604435ba63da80ccc63311615bc' ) + , ( 'FlapFlop', '0xa41b6ef151e06da0e34b009b86e828308986736d' ) + , ( 'FlapFlop', '0xc4269cc7acdedc3794b221aa4d9205f564e27f0d' ) + , ( 'PSM', '0x961ae24a1ceba861d1fdf723794f6024dc5485cf' ) + , ( 'PSM', '0x204659b2fd2ad5723975c362ce2230fba11d3900' ) + , ( 'PSM', '0x89b78cfa322f6c5de0abceecab66aee45393cc5a' ) + ) AS t(contract_type, contract_address) +), __dbt__cte__fact_liquidation_excluded_tx as ( + + +SELECT DISTINCT t.tx_hash +FROM ethereum_flipside.core.fact_traces t +JOIN __dbt__cte__dim_maker_contracts c + ON t.from_address = c.contract_address + AND c.contract_type IN ('FlapFlop') +), __dbt__cte__fact_psm_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0xf2e7a5b83525c3017383deed19bb05fe34a62c27' + THEN 'PSM-GUSD-A' + WHEN usr = lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787') + THEN 'PSM-USDP-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0xf2e7a5b83525c3017383deed19bb05fe34a62c27', lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787')) -- GUSD interest payment contract +), __dbt__cte__fact_rwa_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0x6c6d4be2223b5d202263515351034861dd9afdb6' THEN 'RWA009-A' + WHEN usr = '0xef1b095f700be471981aae025f92b03091c3ad47' THEN 'RWA007-A' + WHEN usr = '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf' THEN 'RWA014-A' + WHEN usr = lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf') THEN 'RWA015-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0x6c6d4be2223b5d202263515351034861dd9afdb6', '0xef1b095f700be471981aae025f92b03091c3ad47', '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf', lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf')) +), __dbt__cte__fact_liquidation_revenue as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value +FROM ethereum_flipside.maker.fact_vat_move +WHERE + dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts) + AND src_address NOT IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' + ) -- aave v2 d3m, compound v2 d3m + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_liquidation_excluded_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_team_dai_burns_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_psm_yield_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_rwa_yield_tx) +GROUP BY block_timestamp, tx_hash +), __dbt__cte__fact_vow_fess as ( + + +SELECT + block_timestamp, + pc_dbt_db.prod.hex_to_int(topics[2])::double/1e45 as tab, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x697efb7800000000000000000000000000000000000000000000000000000000' +and contract_address = lower('0xA950524441892A31ebddF91d3cEEFa04Bf454466') +), __dbt__cte__fact_liquidation_expenses as ( + + +SELECT block_timestamp + , tx_hash + , SUM(tab) AS value +FROM __dbt__cte__fact_vow_fess +GROUP BY block_timestamp + , tx_hash +), __dbt__cte__fact_liquidation as ( + + +-- Liquidation Revenues +SELECT + ts, + hash, + 31210 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +-- Liquidation Expenses +SELECT + block_timestamp as ts, + tx_hash as hash, + 31620 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_expenses + +UNION ALL + +SELECT + block_timestamp as ts, + tx_hash as hash, + 21120 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_expenses +), __dbt__cte__dim_psms as ( + + +SELECT DISTINCT + u_address as psm_address, + ilk +FROM ethereum_flipside.maker.fact_vat_frob +WHERE ilk LIKE 'PSM-%' +), __dbt__cte__fact_trading_revenues as ( + + +WITH trading_revenues_preunion AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + psms.ilk, + SUM(CAST(vat.rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__dim_psms psms + ON vat.src_address = psms.psm_address + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + GROUP BY vat.block_timestamp, vat.tx_hash, psms.ilk +) + +SELECT + ts, + hash, + 31310 AS code, + value AS value, + ilk +FROM trading_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM trading_revenues_preunion +), __dbt__cte__fact_mkr_mints as ( + + +WITH mkr_mints_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_liquidation_excluded_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND vat.src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts WHERE contract_type = 'PSM') + GROUP BY vat.block_timestamp, vat.tx_hash +) + +SELECT + ts, + hash, + 31410 AS code, + value --increased equity +FROM mkr_mints_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM mkr_mints_preunioned +), __dbt__cte__fact_mkr_burns as ( + + +WITH mkr_burns_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY block_timestamp, tx_hash +) + +SELECT + ts, + hash, + 31420 AS code, + -value AS value --decreased equity +FROM mkr_burns_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value --increased liability +FROM mkr_burns_preunioned +), __dbt__cte__fact_vat_grab as ( + + +with logs as ( + SELECT + * + FROM + ethereum_flipside.core.fact_event_logs + WHERE + topics [0] in ( + '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c', + '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28', + '0x7bab3f4000000000000000000000000000000000000000000000000000000000', + '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' + ) +), +bark as( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c' +), +grab as( + SELECT + block_timestamp, + tx_hash, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7bab3f4000000000000000000000000000000000000000000000000000000000' +), +bite as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28' +), +slip_raw as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' + AND length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(topics [3]) + WHEN length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN pc_dbt_db.prod.HEX_TO_INT(topics [3])::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' +), +slip as( + SELECT + block_timestamp, + tx_hash, + min(dart) as dart, + -- collision on certain tx where there are two calls to slip() + ilk + FROM + slip_raw + GROUP BY + 1, + 2, + 4 +), +agg as( + SELECT + distinct g.block_timestamp, + g.tx_hash as tx_hash, + coalesce(b.dart, t.dart, s.dart) as dart, + g.ilk as ilk + FROM + grab g + LEFT JOIN bark b on b.tx_hash = g.tx_hash + and g.ilk = b.ilk + LEFT JOIN bite t on t.tx_hash = g.tx_hash + and g.ilk = t.ilk + LEFT JOIN slip s on s.tx_hash = g.tx_hash + and g.ilk = s.ilk +) +select + * +from + agg +where + dart is not null +), __dbt__cte__fact_interest_accruals_1 as ( + + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart, + CAST(NULL AS NUMBER) AS rate +FROM ethereum_flipside.maker.fact_vat_frob +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart/1e18, + 0 AS rate +FROM __dbt__cte__fact_vat_grab +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + CAST(NULL AS NUMBER) AS dart, + rate +FROM ethereum_flipside.maker.fact_vat_fold +WHERE rate != 0 +), __dbt__cte__fact_interest_accruals_2 as ( + + +SELECT + *, + SUM(dart) OVER (PARTITION BY ilk ORDER BY ts) AS cumulative_dart +FROM __dbt__cte__fact_interest_accruals_1 +), __dbt__cte__fact_interest_accruals_3 as ( + + +SELECT + ilk, + ts, + hash, + SUM(cumulative_dart * rate * 10) AS interest_accruals +FROM __dbt__cte__fact_interest_accruals_2 +WHERE rate IS NOT NULL +GROUP BY ilk, ts, hash +), __dbt__cte__dim_ilk_list_manual_input as ( + + +SELECT * FROM (VALUES + ('RWA009-A', NULL, NULL, 12310, 31170, NULL), + ('RWA007-A', NULL, NULL, 12310, 31172, NULL), + ('RWA015-A', NULL, NULL, 12310, 31172, NULL), + ('RWA014-A', NULL, NULL, 12310, 31180, NULL) +) AS t(ilk, begin_dt, end_dt, asset_code, equity_code, apr) +), __dbt__cte__fact_spot_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2], 0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x1a0b287e00000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3' +), __dbt__cte__fact_jug_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2],0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x29ae811400000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x19c0976f590D67707E62397C87829d896Dc0f1F1' +), __dbt__cte__fact_ilk_list as ( + + +SELECT DISTINCT ilk +FROM ( + SELECT ilk + FROM ethereum_flipside.maker.fact_vat_frob + + UNION + + SELECT ilk + FROM __dbt__cte__fact_spot_file + + UNION + + SELECT ilk + FROM __dbt__cte__fact_jug_file +) +), __dbt__cte__dim_ilk_list_labeled as ( + + +-- This table should contain your ilk mappings +-- You may need to adjust this based on your specific ilk categorizations +SELECT + ilk, + begin_dt, + end_dt, + asset_code, + equity_code +FROM __dbt__cte__dim_ilk_list_manual_input + +UNION ALL + +SELECT + ilk, + CAST(NULL AS DATE) AS begin_dt, + CAST(NULL AS DATE) AS end_dt, + CASE + WHEN ilk LIKE 'ETH-%' THEN 11110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 11120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 11130 + WHEN ilk LIKE 'GUNI%' THEN 11140 + WHEN ilk LIKE 'UNIV2%' THEN 11141 + WHEN ilk LIKE 'DIRECT%' THEN 11210 + WHEN ilk LIKE 'RWA%' THEN 12310 + WHEN ilk LIKE 'PSM%' THEN 13410 + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A') THEN 11510 + ELSE 11199 + END AS asset_code, + CASE + WHEN ilk LIKE 'ETH-%' THEN 31110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 31120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 31130 + WHEN ilk LIKE 'GUNI%' THEN 31140 + WHEN ilk LIKE 'UNIV2%' THEN 31141 + WHEN ilk LIKE 'DIRECT%' THEN 31160 + WHEN ilk LIKE 'RWA%' THEN 31170 + WHEN ilk LIKE 'PSM%' THEN NULL + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A','PAXUSD-A') THEN 31190 + ELSE 31150 + END AS equity_code +FROM __dbt__cte__fact_ilk_list +WHERE ilk NOT IN (SELECT ilk FROM __dbt__cte__dim_ilk_list_manual_input) +AND ilk <> 'TELEPORT-FW-A' +), __dbt__cte__fact_interest_accruals as ( + + +WITH interest_accruals AS ( + SELECT + ia.ts, + ia.hash, + il.equity_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND ia.ts BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.equity_code, ia.ilk + + UNION ALL + + SELECT + ia.ts, + ia.hash, + il.asset_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND CAST(ia.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.asset_code, ia.ilk +) + +SELECT * FROM interest_accruals +), __dbt__cte__fact_dai_mint as ( + + +SELECT + block_timestamp, + tx_hash, + to_address as usr, + raw_amount_precise as wad +FROM ethereum_flipside.core.fact_token_transfers +where from_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__fact_opex_suck_hashes as ( + + +SELECT suck.tx_hash +FROM ethereum_flipside.maker.fact_vat_suck suck +WHERE suck.u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' + AND suck.v_address IN ( + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' + ) + AND suck.rad != 0 +GROUP BY 1 +), __dbt__cte__fact_opex as ( + + +WITH opex_preunion AS ( + SELECT + mints.block_timestamp AS ts, + mints.tx_hash AS hash, + CASE + WHEN dao_wallet.code IN ('GELATO', 'KEEP3R', 'CHAINLINK', 'TECHOPS') THEN 31710 --keeper maintenance expenses + WHEN dao_wallet.code = 'GAS' THEN 31630 -- oracle gas expenses + WHEN dao_wallet.code IS NOT NULL THEN 31720 --workforce expenses + ELSE 31740 --direct opex - when a suck operation is used to directly transfer DAI to a third party + END AS equity_code, + mints.wad / POW(10, 18) AS expense + FROM __dbt__cte__fact_dai_mint mints + JOIN __dbt__cte__fact_opex_suck_hashes opex + ON mints.tx_hash = opex.tx_hash + LEFT JOIN __dbt__cte__dim_dao_wallet dao_wallet + ON mints.usr = dao_wallet.wallet_address + LEFT JOIN ethereum_flipside.maker.fact_vat_frob AS frobs + ON mints.tx_hash = frobs.tx_hash + AND mints.wad::number/1e18 = frobs.dart + WHERE frobs.tx_hash IS NULL --filtering out draws from psm that happened in the same tx as expenses +) + +SELECT + ts, + hash, + equity_code AS code, + -CAST(expense AS DOUBLE) AS value --reduced equity +FROM opex_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + expense AS value --increased liability +FROM opex_preunion +), __dbt__cte__fact_dsr_expenses as ( + + +WITH dsr_expenses_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot +) + +SELECT + ts, + hash, + 31610 AS code, + -value AS value --reduced equity +FROM dsr_expenses_raw + +UNION ALL + +SELECT + ts, + hash, + 21110 AS code, + value AS value --increased liability +FROM dsr_expenses_raw +), __dbt__cte__fact_other_sin_outflows as ( + + +WITH other_sin_outflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address NOT IN ( + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7', -- Pot (DSR) + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', -- Pause Proxy + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', -- Old Pause Proxy + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' -- Old Pause Proxy + ) +) + +SELECT + ts, + hash, + 31520 AS code, + -value AS value --reduced equity +FROM other_sin_outflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value AS value --increased liability +FROM other_sin_outflows_raw +), __dbt__cte__fact_sin_inflows as ( + + +WITH sin_inflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE v_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow +) + +SELECT + ts, + hash, + 31510 AS code, + value AS value --increased equity +FROM sin_inflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM sin_inflows_raw +), __dbt__cte__fact_dsr_flows as ( + + +WITH dsr_flows_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract +) + +SELECT + ts, + hash, + 21110 AS code, + dsr_flow AS value -- positive dsr flow increases interest-bearing dai liability +FROM dsr_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -dsr_flow AS value -- positive dsr flow decreases non-interest-bearing dai liability +FROM dsr_flows_preunioned +), __dbt__cte__dim_treasury_erc20s as ( + + +SELECT * FROM (VALUES + ('0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', 18, 'ENS'), + ('0x4da27a545c0c5b758a6ba100e3a049001de870f5', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'stkAAVE'), + ('0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'AAVE'), + ('0xc00e94cb662c3520282e6f5717214004a7f26888', '0xc00e94cb662c3520282e6f5717214004a7f26888', 18, 'COMP') +) AS t(contract_address, price_address, decimals, token) +), __dbt__cte__fact_treasury_flows as ( + + +WITH treasury_flows_preunioned AS ( + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token + + UNION ALL + + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + -SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + AND evt.to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token +) + +SELECT + ts, + hash, + 33110 AS code, + value, --increased equity + token +FROM treasury_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 14620 AS code, + value, --increased assets + token +FROM treasury_flows_preunioned +), __dbt__cte__fact_loan_actions_2 as ( + + +SELECT + ilk, + ts, + hash, + dart, + COALESCE(POW(10,27) + SUM(rate) OVER(PARTITION BY ilk ORDER BY ts ASC), POW(10,27)) AS rate +FROM __dbt__cte__fact_interest_accruals_1 +WHERE ilk != 'TELEPORT-FW-A' +), __dbt__cte__fact_loan_actions as ( + + + +SELECT + la.ts, + la.hash, + il.asset_code AS code, + SUM(la.dart) AS value, + la.ilk +FROM __dbt__cte__fact_loan_actions_2 la +LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON la.ilk = il.ilk + AND CAST(la.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') +GROUP BY la.ts, la.hash, il.asset_code, la.ilk +-- HAVING SUM(la.dart * la.rate) / POW(10, 45) != 0 + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + SUM(dart) AS value, + ilk +FROM __dbt__cte__fact_loan_actions_2 +GROUP BY ts, hash, ilk +HAVING SUM(dart) != 0 +), __dbt__cte__fact_d3m_revenues as ( + + +WITH d3m_revenues_preunion AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CASE + WHEN src_address = '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a' THEN 'DIRECT-AAVEV2-DAI' + WHEN src_address = '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' THEN 'DIRECT-COMPV2-DAI' + END AS ilk, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', -- aave d3m + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' -- compound v2 d3m + ) + AND dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY 1, 2, 3 + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + ilk, + SUM(dart) / 1e18 AS value + FROM __dbt__cte__fact_vat_grab + WHERE dart > 0 + GROUP BY 1, 2, 3 +) + +SELECT + ts, + hash, + 31160 AS code, + value AS value, + ilk +FROM d3m_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM d3m_revenues_preunion +), __dbt__cte__fact_psm_yield as ( + + +WITH psm_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__fact_psm_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + 31180 AS code, + value, --increased equity + ilk +FROM psm_yield_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM psm_yield_preunioned +), __dbt__cte__fact_rwa_yield as ( + + +WITH rwa_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_rwa_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + COALESCE(ilm.equity_code, 31170) AS code, --default to off-chain private credit + value, --increased equity + rwy.ilk +FROM rwa_yield_preunioned rwy +LEFT JOIN __dbt__cte__dim_ilk_list_manual_input ilm + USING (ilk) + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM rwa_yield_preunioned +), __dbt__cte__fact_dssvesttransferrable_create as ( + + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) = '0xdb64ff8f' +) +SELECT + block_timestamp, + tx_hash, + '0x' || SUBSTR(raw_input_data, 25, 40) as _usr, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _tot, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 129, 64)) as _bgn, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 193, 64)) as _tau, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 257, 64)) as _eta, + ROW_NUMBER() OVER (ORDER BY block_timestamp, trace_index) AS output_id +FROM raw +), __dbt__cte__fact_mkr_vest_creates as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + output_id, + _bgn, + _tau, + _tot::number / 1e18 AS total_mkr +FROM __dbt__cte__fact_dssvesttransferrable_create +), __dbt__cte__fact_dssvesttransferrable_yank as ( + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) in ('0x509aaa1d', '0x26e027f1') +) +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 1, 64)) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _end +FROM raw +), __dbt__cte__fact_mkr_yanks as ( + + +WITH yanks_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + _end, + _id + FROM __dbt__cte__fact_dssvesttransferrable_yank +), + +yanks_with_context AS ( + SELECT + y.*, + c._bgn, + c._tau, + c.total_mkr, + CASE + WHEN DATEADD(second, y._end, '1970-01-01'::timestamp) > y.ts + THEN DATEADD(second, y._end, '1970-01-01'::timestamp) + ELSE y.ts + END AS end_time + FROM yanks_raw y + LEFT JOIN __dbt__cte__fact_mkr_vest_creates c + ON y._id = c.output_id +) + +SELECT + ts, + hash, + _id, + TO_TIMESTAMP(CAST(_bgn AS VARCHAR)) AS begin_time, + end_time, + _tau, + total_mkr AS original_total_mkr, + (1 - (DATEDIFF(second, '1970-01-01'::timestamp, end_time) - _bgn) / _tau) * total_mkr AS yanked_mkr +FROM yanks_with_context +), __dbt__cte__fact_mkr_vest_creates_yanks as ( + + +-- MKR Vest Creates +SELECT + ts, + hash, + 32110 AS code, -- MKR expense realized + -total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts increases + total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +-- MKR Yanks +SELECT + ts, + hash, + 32110 AS code, -- MKR expense reversed (yanked) + yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts yanked (decreases) + -yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks +), __dbt__cte__fact_pause_proxy_mkr_trxns_raw as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(raw_amount_precise AS DOUBLE) AS expense, + to_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- excluding transfers to itself + +UNION ALL + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(raw_amount_precise AS DOUBLE) AS expense, + from_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND from_address NOT IN ('0x8ee7d9235e01e6b42345120b5d270bdb763624c7', '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb') -- excluding initial transfers in and transfers from itself +), __dbt__cte__fact_dssvesttransferrable_vest as ( + + + +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(topics[1]) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(data) as _max_amt +FROM ethereum_flipside.core.fact_event_logs +where contract_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and topics[0] = '0xa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847' +), __dbt__cte__fact_mkr_vest_tx as ( + + +SELECT + tx_hash AS hash, + 1 AS vested +FROM __dbt__cte__fact_dssvesttransferrable_vest +), __dbt__cte__fact_pause_proxy_mkr_trxns as ( + + +WITH pause_proxy_mkr_trxns_preunion AS ( + SELECT + raw.ts, + raw.hash, + CASE + WHEN vest.vested IS NOT NULL THEN 32120 -- reserved surplus depletion for vested transactions + ELSE 32110 -- direct protocol surplus impact for non-vested transactions + END AS code, + -raw.expense / 1e18 AS value + FROM __dbt__cte__fact_pause_proxy_mkr_trxns_raw raw + LEFT JOIN __dbt__cte__fact_mkr_vest_tx vest + ON raw.hash = vest.hash +) + +SELECT + ts, + hash, + code, + value +FROM pause_proxy_mkr_trxns_preunion + +UNION ALL + +SELECT + ts, + hash, + 32210 AS code, -- MKR contra equity + -value +FROM pause_proxy_mkr_trxns_preunion +), __dbt__cte__fact_m2m_levels as ( + + +WITH treasury_tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'DAI' AS token, '0x6b175474e89094c44da98b954eedeac495271d0f' AS price_address +) + +SELECT + p.hour AS ts, + tt.token, + CASE WHEN tt.token = 'DAI' THEN 1 ELSE p.price END AS price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN treasury_tokens tt ON p.token_address = tt.price_address +WHERE p.hour >= '2019-11-01' + AND EXTRACT(HOUR FROM p.hour) = 23 +), __dbt__cte__fact_token_prices as ( + + +WITH tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'MKR' AS token, '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' AS price_address + + UNION ALL + + SELECT 'ETH' AS token, '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' AS price_address +) + +SELECT + p.hour AS ts, + t.token, + p.price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN tokens t ON lower(p.token_address) = lower(t.price_address) +WHERE p.hour >= '2019-11-01' + +UNION ALL + +SELECT + TIMESTAMP '2021-11-09 00:02' AS ts, + 'ENS' AS token, + 44.3 AS price +), __dbt__cte__fact_eth_prices as ( + + +SELECT * +FROM __dbt__cte__fact_token_prices +WHERE token = 'ETH' +), __dbt__cte__fact_with_prices as ( + + +WITH unioned_data AS ( + SELECT ts, hash, code, value, 'DAI' AS token, 'Returned Workforce Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_team_dai_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Liquidation Revenues/Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_liquidation + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Trading Revenues' AS descriptor, ilk FROM __dbt__cte__fact_trading_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Mints' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_mints + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Burns' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Interest Accruals' AS descriptor, ilk FROM __dbt__cte__fact_interest_accruals + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'OpEx' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_opex + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_expenses + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Other Sin Outflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_other_sin_outflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Sin Inflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_sin_inflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_flows + UNION ALL + SELECT ts, hash, code, value, token, 'Treasury Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_treasury_flows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Loan Draws/Repays' AS descriptor, ilk FROM __dbt__cte__fact_loan_actions + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'D3M Revenues' AS descriptor, ilk FROM __dbt__cte__fact_d3m_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'PSM Yield' AS descriptor, ilk FROM __dbt__cte__fact_psm_yield + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'RWA Yield' AS descriptor, ilk FROM __dbt__cte__fact_rwa_yield + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Vest Creates/Yanks' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_mkr_vest_creates_yanks + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Pause Proxy Trxns' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_pause_proxy_mkr_trxns + UNION ALL + SELECT ts, NULL AS hash, 19999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 29999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 39999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels +) + +SELECT + coa.code, + u.ts, + u.hash, + u.value, + u.token, + u.descriptor, + u.ilk, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END AS dai_value, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END / ep.price AS eth_value, + ep.price AS eth_price +FROM __dbt__cte__dim_chart_of_accounts coa +LEFT JOIN unioned_data u USING (code) +LEFT JOIN __dbt__cte__fact_token_prices tp + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', tp.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM tp.ts) + AND u.token = tp.token +LEFT JOIN __dbt__cte__fact_eth_prices ep + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', ep.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM ep.ts) +WHERE u.value IS NOT NULL +), __dbt__cte__fact_cumulative_sums as ( + + +SELECT + wp.*, + SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_token_value, + SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_dai_value, + SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_eth_value, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_value_if_converted_all_once, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_value_if_converted_all_once, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_m2m, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_m2m +FROM __dbt__cte__fact_with_prices wp +LEFT JOIN __dbt__cte__fact_m2m_levels m2m + ON wp.token = m2m.token + AND DATE_TRUNC('day', wp.ts) = DATE_TRUNC('day', m2m.ts) + -- AND EXTRACT(HOUR FROM wp.ts) = EXTRACT(HOUR FROM m2m.ts) +), __dbt__cte__fact_incremental_m2m as ( + + +SELECT + *, + dai_m2m - COALESCE(LAG(dai_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_dai_m2m, + eth_m2m - COALESCE(LAG(eth_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_eth_m2m +FROM __dbt__cte__fact_cumulative_sums +WHERE cumulative_ale_token_value > 0 + AND SUBSTRING(CAST(code AS VARCHAR), -4) = '9999' +), __dbt__cte__fact_final as ( + + +-- Non-M2M entries +SELECT + code, + ts, + hash, + value, + token, + descriptor, + ilk, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE dai_value END AS dai_value, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE eth_value END AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_with_prices +WHERE SUBSTRING(CAST(code AS VARCHAR), -4) <> '9999' + +UNION ALL + +-- M2M entries +SELECT + code, + ts, + hash, + NULL AS value, + token, + descriptor, + ilk, + incremental_dai_m2m AS dai_value, + incremental_eth_m2m AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_incremental_m2m + +-- Final filter +WHERE (COALESCE(value, 0) <> 0 OR dai_value <> 0 OR eth_value <> 0) +), __dbt__cte__fact_accounting_agg as ( + + +with + chart_of_accounts as ( + select cast(code as varchar) as account_id from __dbt__cte__dim_chart_of_accounts -- CoA simplified + ), + periods as ( + select + distinct(date(hour)) as date + from ethereum_flipside.price.ez_prices_hourly + where symbol = 'MKR' + ), + accounting as ( + select + date_trunc('day', acc.ts) as period, + cast(acc.code as varchar) as account_id, + acc.dai_value as usd_value, + acc.value as token_value, + token + from __dbt__cte__fact_final acc + ), + accounting_agg as ( + select + date_trunc('day', period) as period, + account_id, + token, + sum(coalesce(token_value,0)) as token_sum_value, + sum(coalesce(usd_value, 0)) AS usd_sum_value + from accounting + group by 1,2,3 + ), + accounting_liq as ( + select distinct + period, + token, + sum(coalesce(token_sum_value, 0)) over (partition by date_trunc('day', period)) as token_liq_cum, + sum(coalesce(usd_sum_value, 0)) over (partition by date_trunc('day', period)) as usd_liq_cum + from accounting_agg + where account_id in ( + '31210', -- Liquidation Revenues + '31620' -- Liquidation Expenses + ) + ) +select + a.period, + a.account_id, + a.token, + case + when account_id = '31210' then iff(usd_liq_cum > 0, usd_liq_cum, 0) + when account_id = '31620' then iff(usd_liq_cum > 0, 0, usd_liq_cum) + else coalesce(usd_sum_value, 0) + end as sum_value, + case + when account_id = '31210' then iff(token_liq_cum > 0, token_liq_cum, 0) + when account_id = '31620' then iff(token_liq_cum > 0, 0, token_liq_cum) + else coalesce(token_sum_value,0) + end as sum_value_token +from accounting_agg a +left join accounting_liq l + on a.period = l.period + and a.token = l.token +), __dbt__cte__fact_maker_fees_revenue_expenses as ( + + + +select + date(period) as date, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180')-- Stability fees + then sum_value + end + ) as stability_fees, + sum(case + when account_id like '313%' -- Trading fees + then sum_value + end + ) as trading_fees, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180') -- Stability fees + or account_id like '313%' -- Trading fees + then sum_value + end + ) as fees, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as primary_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + then sum_value + end + ) as other_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + or account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as protocol_revenue, + sum( + case + when account_id = '31410' -- MKR Mints + then sum_value + end + ) as token_incentives, + sum( + case + when account_id like '316%' -- Direct Expenses + then -sum_value + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then -sum_value + end + ) as operating_expenses, + sum( + case + when account_id like '316%' -- Direct Expenses + or account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + or account_id = '31410' + then -sum_value + end + ) as total_expenses +from __dbt__cte__fact_accounting_agg +group by 1 +), __dbt__cte__fact_system_surplus_dai as ( + + +with bs_equity as ( + select + date(ts) as date, + sum(case when acc.code not like '33%' and acc.code not like '39%' then acc.value else 0 end) as surplus + from __dbt__cte__fact_final acc + where code like '3%' + and acc.code not like '33%' and acc.code not like '39%' + group by 1 +) +select + date, + sum(surplus) over (order by date) as surplus, + 'DAI' as token +from bs_equity +), __dbt__cte__fact_treasury_mkr as ( + + +with prices as ( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' + GROUP BY 1 +), +mkr_balance_cte as ( + SELECT + date(block_timestamp) as date, + MAX_BY(balance,date(block_timestamp))/1e18 as mkr_balance, + user_address + FROM ethereum_flipside.core.fact_token_balances + where user_address in (lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB'), lower('0x8EE7D9235e01e6B42345120b5d270bdB763624C7')) + and contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' + GROUP BY 1, 3 +), +date_sequence AS ( + SELECT DISTINCT date + FROM prices +), +user_addresses AS ( + SELECT DISTINCT user_address + FROM mkr_balance_cte +), +all_dates_users AS ( + SELECT + d.date, + u.user_address + FROM date_sequence d + CROSS JOIN user_addresses u +), +joined_balances AS ( + SELECT + a.date, + a.user_address, + p.price, + m.mkr_balance AS balance_token + FROM all_dates_users a + LEFT JOIN prices p ON p.date = a.date + LEFT JOIN mkr_balance_cte m ON m.date = a.date AND m.user_address = a.user_address +) +,filled_balances AS ( + SELECT + date, + user_address, + price, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token, + COALESCE( + user_address, + LAST_VALUE(user_address IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS filled_user_address + FROM joined_balances +) + +SELECT + date, + SUM(balance_token) amount_mkr, + SUM(balance_token *price) as amount_usd, + 'MKR' as token +FROM filled_balances +GROUP BY date +), __dbt__cte__fact_uni_lp_supply as ( + + +WITH token_transfers AS ( + SELECT + date(block_timestamp) AS date, + from_address, + to_address, + raw_amount_precise::number / 1e18 AS amount + FROM ethereum_flipside.core.fact_token_transfers + WHERE contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') +), +daily_mints AS ( + SELECT + date, + SUM(amount) AS daily_minted + FROM token_transfers + WHERE from_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_burns AS ( + SELECT + date, + SUM(amount) AS daily_burned + FROM token_transfers + WHERE to_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_net_supply AS ( + SELECT + d.date_day as date, + COALESCE(m.daily_minted, 0) AS daily_minted, + COALESCE(b.daily_burned, 0) AS daily_burned, + COALESCE(m.daily_minted, 0) - COALESCE(b.daily_burned, 0) AS daily_net + FROM ethereum_flipside.core.dim_dates d + LEFT JOIN daily_mints m ON d.date_day = m.date + LEFT JOIN daily_burns b ON d.date_day = b.date + WHERE date_day < to_date(sysdate()) +), +cumulative_supply AS ( + SELECT + date, + daily_minted, + daily_burned, + daily_net, + SUM(daily_net) OVER ( + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS circulating_supply + FROM daily_net_supply +) +SELECT + date, + circulating_supply +FROM cumulative_supply +ORDER BY date +), __dbt__cte__fact_uni_lp_value as ( + + +with token_balances as ( + SELECT + DATE(block_timestamp) as date, + case + when contract_address = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') then 'DAI' + when contract_address = lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2') then 'MKR' + END AS token, + MAX_BY(balance, block_timestamp)::number / 1e18 as balance + FROM + ethereum_flipside.core.fact_token_balances + WHERE + user_address = lower('0x517F9dD285e75b599234F7221227339478d0FcC8') + AND contract_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 2 +), +prices as ( + SELECT + date(hour) as date, + MAX_BY(price, hour) as price, + symbol + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + token_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 3 +), +daily_prices_by_token as ( + SELECT + b.date, + p.price * b.balance as balance_usd, + b.token + FROM + token_balances b + LEFT JOIN prices p on p.date = b.date + AND p.symbol = b.token +) +SELECT + date, + sum(balance_usd) as amount_usd +FROM + daily_prices_by_token +GROUP BY 1 +ORDER BY 1 DESC +), __dbt__cte__fact_treasury_lp_balances as ( + + + +with +dates as ( + SELECT + DISTINCT date(hour) as date + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' +) +, treasury_balance as ( + select + date(block_timestamp) as date, + MAX(balance)::number / 1e18 as treasury_lp_balance + from + ethereum_flipside.core.fact_token_balances + where + contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') + and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') + GROUP BY + 1 +), +value_per_token_cte as ( + SELECT + s.date, + v.amount_usd / s.circulating_supply as value_per_token_usd, + s.circulating_supply + FROM + __dbt__cte__fact_uni_lp_supply s + LEFT JOIN __dbt__cte__fact_uni_lp_value v ON v.date = s.date + where + value_per_token_usd is not null +) +, filled_data as ( + SELECT + d.date, + LAST_VALUE(t.treasury_lp_balance IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as amount_native, + LAST_VALUE(v.value_per_token_usd IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as value_per_token_usd + FROM + dates d + LEFT JOIN treasury_balance t ON d.date = t.date + LEFT JOIN value_per_token_cte v ON d.date = v.date +) +SELECT + date, + amount_native, + value_per_token_usd, + amount_native * value_per_token_usd as amount_usd, + 'UNI V2: DAI-MKR' as token +FROM + filled_data +WHERE amount_native is not null +ORDER BY + date +), __dbt__cte__fact_treasury_usd as ( + + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_mkr + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_lp_balances +) +SELECT + date, + SUM(amount_usd) AS treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC +), __dbt__cte__fact_net_treasury_usd as ( + + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_lp_balances +) +SELECT + date, + SUM(amount_usd) AS net_treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC +), __dbt__cte__dim_gem_join_addresses as ( + + +with join_addresses as ( + select + '0x' || SUBSTR(topics [1], 27) as join_address, + * + from + ethereum_flipside.core.fact_event_logs + where + topics [0] = lower( + '0x65fae35e00000000000000000000000000000000000000000000000000000000' + ) + and contract_address = lower('0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b') +) +, contract_creation_hashes as( + select + address as join_address, + created_tx_hash + from + ethereum_flipside.core.dim_contracts + where + address in (SELECT lower(join_address) FROM join_addresses) +) +SELECT + '0x' || RIGHT(t.input, 40) as gem_address, + h.join_address +FROM + contract_creation_hashes h +LEFT JOIN ethereum_flipside.core.fact_traces t ON h.created_tx_hash = t.tx_hash +), __dbt__cte__fact_maker_tvl_by_asset as ( + + + +WITH weth AS ( + SELECT DISTINCT + m.symbol, + g.gem_address, + g.join_address, + m.decimals + FROM + __dbt__cte__dim_gem_join_addresses g + LEFT JOIN ethereum_flipside.price.ez_asset_metadata m ON g.gem_address = m.token_address + WHERE + symbol IS NOT NULL +), +daily_balances AS ( + SELECT + DATE(t.block_timestamp) AS date, + t.user_address, + t.contract_address, + w.symbol, + w.decimals, + AVG(t.balance / POWER(10, w.decimals)) AS amount_native + FROM + ethereum_flipside.core.fact_token_balances t + JOIN weth w ON t.user_address = w.join_address AND t.contract_address = w.gem_address + GROUP BY 1, 2, 3, 4, 5 +), +date_series AS ( + SELECT date_day as date + FROM ethereum_flipside.core.dim_dates + WHERE date_day < to_date(sysdate()) +), +all_combinations AS ( + SELECT DISTINCT + d.date, + db.user_address, + db.contract_address + FROM + date_series d + CROSS JOIN (SELECT DISTINCT user_address, contract_address FROM daily_balances) db +), +forward_filled_balances AS ( + SELECT + ac.date, + ac.user_address, + ac.contract_address, + LAST_VALUE(db.symbol IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS symbol, + LAST_VALUE(db.decimals IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS decimals, + LAST_VALUE(db.amount_native IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS amount_native + FROM + all_combinations ac + LEFT JOIN daily_balances db + ON ac.date = db.date + AND ac.user_address = db.user_address + AND ac.contract_address = db.contract_address +), +usd_values AS ( + SELECT + ffb.date, + ffb.user_address, + ffb.contract_address, + ffb.symbol, + ffb.amount_native, + ffb.amount_native * COALESCE( + p.price, + FIRST_VALUE(p.price) OVER ( + PARTITION BY ffb.contract_address + ORDER BY CASE WHEN p.price IS NOT NULL THEN ffb.date END DESC + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS amount_usd + FROM + forward_filled_balances ffb + LEFT JOIN ethereum_flipside.price.ez_prices_hourly p + ON p.hour = DATE_TRUNC('day', ffb.date) + AND p.token_address = ffb.contract_address + WHERE + ffb.amount_native IS NOT NULL +) +SELECT + date, + SUM(amount_native) AS total_amount_native, + symbol, + SUM(amount_usd) AS total_amount_usd +FROM + usd_values +GROUP BY 1, 3 +ORDER BY 1 +), __dbt__cte__fact_maker_tvl as ( + + +SELECT + date, + sum(total_amount_usd) as tvl_usd +FROM + __dbt__cte__fact_maker_tvl_by_asset +GROUP BY + 1 +), __dbt__cte__fact_dai_eth_supply as ( + + +with eth_raw as( + select + block_timestamp, + CASE + WHEN lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN AMOUNT + WHEN lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN - AMOUNT + END AS amount + from + ethereum_flipside.core.ez_token_transfers + where + lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + and ( + lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + or lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + ) +), +daily_amounts AS ( + SELECT + date(block_timestamp) as date, + SUM(amount) as daily_amount + FROM eth_raw + GROUP BY date(block_timestamp) +) +SELECT + date, + SUM(daily_amount) OVER (ORDER BY date) as dai_supply, + 'Ethereum' as chain +FROM daily_amounts +ORDER BY date DESC +), __dbt__cte__fact_dai_dsr_supply as ( + + + +WITH + deltas AS ( + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + CAST(rad AS DOUBLE) AS delta, + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + - CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) as dt, + CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_suck + WHERE v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' +) +, daily_supply as ( + SELECT + dt, + sum(delta) as dai_supply + FROM deltas + GROUP BY 1 +) +SELECT + dt as date, + SUM(dai_supply) OVER (ORDER BY dt) as dai_supply, + 'Ethereum' as chain +FROM daily_supply +), __dbt__cte__fact_dai_supply_by_chain as ( + + + +select * from __dbt__cte__fact_dai_eth_supply +union all +select * from __dbt__cte__fact_dai_dsr_supply +), __dbt__cte__fact_dai_supply as ( + + + + +SELECT date, SUM(dai_supply) as outstanding_supply FROM __dbt__cte__fact_dai_supply_by_chain +GROUP BY 1 +), __dbt__cte__fact_maker_fdv_and_turnover as ( + + + +SELECT + date, + shifted_token_h24_volume_usd as token_volume, + shifted_token_price_usd * 1005577 as fully_diluted_market_cap, + shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, + shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv +FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold +where coingecko_id = 'maker' +and shifted_token_market_cap > 0 +and fully_diluted_market_cap > 0 +order by date desc +), __dbt__cte__fact_mkr_tokenholder_count as ( + + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + where block_timestamp > '2017-12-19' -- set token contract creation date +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select date, count(*) as tokenholder_count from filled_balances +where balance_token > 0 +group by date +order by date desc +), fees_revenue_expenses AS ( + SELECT + date, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM __dbt__cte__fact_maker_fees_revenue_expenses + ) + , treasury_usd AS ( + SELECT date, treasury_usd FROM __dbt__cte__fact_treasury_usd + ) + , treasury_native AS ( + SELECT date, amount_mkr as treasury_native FROM __dbt__cte__fact_treasury_mkr + ) + , net_treasury AS ( + SELECT date, net_treasury_usd FROM __dbt__cte__fact_net_treasury_usd + ) + , tvl_metrics AS ( + SELECT date, tvl_usd as net_deposit, tvl_usd as tvl FROM __dbt__cte__fact_maker_tvl + ) + , outstanding_supply AS ( + SELECT date, outstanding_supply FROM __dbt__cte__fact_dai_supply + ) + , token_turnover_metrics as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from __dbt__cte__fact_maker_fdv_and_turnover + ) + , price_data as ( + select + date as date, + shifted_token_price_usd as price, + shifted_token_market_cap as market_cap, + t2.total_supply * price as fdmc + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold t1 + inner join + ( + select + token_id, coalesce(token_max_supply, token_total_supply) as total_supply + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'maker' + ) t2 + on t1.coingecko_id = t2.token_id + where + coingecko_id = 'maker' + and date < dateadd(day, -1, to_date(sysdate())) + union + select + dateadd('day', -1, to_date(sysdate())) as date, + token_current_price as price, + token_market_cap as market_cap, + coalesce(token_max_supply, token_total_supply) * price as fdmc + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'maker' +) + , token_holder_data as ( + select + date + , tokenholder_count + from __dbt__cte__fact_mkr_tokenholder_count + ) + + +select + date + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury_usd, 0) AS treasury_usd + , COALESCE(treasury_native, 0) AS treasury_native + , COALESCE(net_treasury_usd, 0) AS net_treasury_usd + , COALESCE(net_deposit, 0) AS net_deposits + , COALESCE(outstanding_supply, 0) AS outstanding_supply + , COALESCE(tvl, 0) AS tvl + , COALESCE(price, 0) AS price + , COALESCE(fdmc, 0) AS fdmc + , COALESCE(market_cap, 0) AS market_cap + , COALESCE(token_volume, 0) AS token_volume + , COALESCE(token_turnover_fdv, 0) AS token_turnover_fdv + , COALESCE(token_turnover_circulating, 0) AS token_turnover_circulating + , COALESCE(tokenholder_count, 0) AS tokenholder_count +FROM token_holder_data +left join treasury_usd using (date) +left join treasury_native using (date) +left join net_treasury using (date) +left join tvl_metrics using (date) +left join outstanding_supply using (date) +left join token_turnover_metrics using (date) +left join price_data using (date) +left join fees_revenue_expenses using (date) +where date < to_date(sysdate()) diff --git a/models/_complete_asset_models/maker/ez_maker_metrics_by_chain__complete__.sql b/models/_complete_asset_models/maker/ez_maker_metrics_by_chain__complete__.sql new file mode 100644 index 00000000..8a89dfbf --- /dev/null +++ b/models/_complete_asset_models/maker/ez_maker_metrics_by_chain__complete__.sql @@ -0,0 +1,2361 @@ +WITH + __dbt__cte__dim_chart_of_accounts as ( + + +SELECT code, primary_label, secondary_label, account_label, category_label, subcategory_label + FROM (VALUES + (11110, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'ETH', 'ETH'), + (11120, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'BTC', 'BTC'), + (11130, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'WSTETH', 'WSTETH'), + (11140, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Stable LP'), + (11141, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Volatile LP'), + (11199, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Other', 'Other'), + (11210, 'Assets', 'Collateralized Lending', 'Money Market', 'Money Market', 'D3M'), + (11510, 'Assets', 'Collateralized Lending', 'Legacy', 'Stablecoins', 'Stablecoins'), + (12310, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Off-Chain Private Credit'), + (12311, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Tokenized Private Credit'), + (12320, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Off-Chain Public Credit'), + (12321, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Tokenized Public Credit'), + (13410, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Non-Yielding Stablecoin'), + (13411, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Yielding Stablecoin'), + (14620, 'Assets', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (19999, 'Assets', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (21110, 'Liabilities', 'Stablecoin', 'Circulating', 'Interest-bearing', 'Dai'), + (21120, 'Liabilities', 'Stablecoin', 'Circulating', 'Non-interest bearing', 'Dai'), + (29999, 'Liabilities', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (31110, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'ETH', 'ETH SF'), + (31120, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'BTC', 'BTC SF'), + (31130, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'WSTETH', 'WSTETH SF'), + (31140, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Stable LP SF'), + (31141, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Volatile LP SF'), + (31150, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Other', 'Other SF'), + (31160, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Money Market', 'D3M SF'), + (31170, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Private Credit SF'), + (31171, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Private Credit SF'), + (31172, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Public Credit Interest'), + (31173, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Public Credit Interest'), + (31180, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'PSM', 'Yielding Stablecoin Interest'), + (31190, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Stablecoins', 'Stablecoins SF'), + (31210, 'Equity', 'Protocol Surplus', 'Liquidation Revenues', 'Liquidation Revenues', 'Liquidation Revenues'), + (31310, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Trading Revenues'), + (31311, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Teleport Revenues'), + (31410, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Mints', 'MKR Mints'), + (31420, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Burns', 'MKR Burns'), + (31510, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Inflow', 'Sin Inflow'), + (31520, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Outflow', 'Sin Outflow'), + (31610, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'DSR', 'Circulating Dai'), + (31620, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Liquidation Expenses', 'Liquidation Expenses'), + (31630, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Oracle Gas Expenses', 'Oracle Gas Expenses'), + (31710, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Keeper Maintenance', 'Keeper Maintenance'), + (31720, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Workforce Expenses'), + (31730, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Returned Workforce Expenses'), + (31740, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Direct to Third Party Expenses', 'Direct to Third Party Expenses'), + (32110, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Direct MKR Token Expenses', 'Direct MKR Token Expenses'), + (32120, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Vested MKR Token Expenses', 'Vested MKR Token Expenses'), + (32210, 'Equity', 'Reserved MKR Surplus', 'MKR Contra Equity', 'MKR Contra Equity', 'MKR Contra Equity'), + (33110, 'Equity', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (39999, 'Equity', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token') + + ) AS t(code, primary_label, secondary_label, account_label, category_label, subcategory_label) +), __dbt__cte__fact_dai_burn as ( + + +SELECT + block_timestamp, + tx_hash, + from_address as usr +FROM ethereum_flipside.core.fact_token_transfers +where to_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__dim_dao_wallet as ( + + +SELECT * FROM (VALUES + ( '0x9e1585d9ca64243ce43d42f7dd7333190f66ca09' , 'RWF Core Unit Multisig + Operational 1', 'Fixed', 'RWF-001') + , ( '0xd1505ee500791490de8642353ba6a5b92e3550f7' , 'RWF Core Unit Multisig + Operational 2', 'Fixed', 'RWF-001') + , ( '0xe2c16c308b843ed02b09156388cb240ced58c01c' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 1', 'Fixed', 'PE-001') + , ( '0x83e36aaa1c7b99e2d3d07789f7b70fce46f0d45e' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 2', 'Fixed', 'PE-001') + , ( '0x01d26f8c5cc009868a4bf66e268c17b057ff7a73' , 'GovAlpha Multisig', 'Fixed', 'GOV-001') + , ( '0xdcaf2c84e1154c8ddd3203880e5db965bff09b60' , 'Content Prod Multisig 1', 'Fixed', 'OLD-001') + , ( '0x6a0ce7dbb43fe537e3fd0be12dc1882393895237' , 'Content Prod Multisig 2', 'Fixed', 'OLD-001') + , ( '0x1ee3eca7aef17d1e74ed7c447ccba61ac76adba9' , 'GovCom Multisig + Continuous Operation 1', 'Fixed', 'COM-001') + , ( '0x99e1696a680c0d9f426be20400e468089e7fdb0f' , 'GovCom Multisig + Continuous Operation 2', 'Fixed', 'COM-001') + , ( '0x7800c137a645c07132886539217ce192b9f0528e' , 'Growth Emergency Multisig', 'Fixed', 'GRO-001') + , ( '0xb5eb779ce300024edb3df9b6c007e312584f6f4f' , 'SES Multisigs (Permanent Team, Incubation, Grants) 1', 'Fixed', 'SES-001') + , ( '0x7c09ff9b59baaebfd721cbda3676826aa6d7bae8' , 'SES Multisigs (Permanent Team, Incubation, Grants) 2', 'Fixed', 'SES-001') + , ( '0xf95eb8ec63d6059ba62b0a8a7f843c7d92f41de2' , 'SES Multisigs (Permanent Team, Incubation, Grants) 3', 'Fixed', 'SES-001') + , ( '0xd98ef20520048a35eda9a202137847a62120d2d9' , 'Risk Multisig', 'Fixed', 'RISK-001') + , ( '0x8cd0ad5c55498aacb72b6689e1da5a284c69c0c7' , 'DUX Team Wallet', 'Fixed', 'DUX-001') + , ( '0x6d348f18c88d45243705d4fdeeb6538c6a9191f1' , 'StarkNet Team Wallet', 'Fixed', 'SNE-001') + , ( '0x955993df48b0458a01cfb5fd7df5f5dca6443550' , 'Strategic Happiness Wallet 1', 'Fixed', 'SH-001') --prior primary wallet, still uses for smaller payments + , ( '0xc657ac882fb2d6ccf521801da39e910f8519508d' , 'Strategic Happiness Wallet 2', 'Fixed', 'SH-001') --multisig for most expenses + , ( '0xd740882b8616b50d0b317fdff17ec3f4f853f44f' , 'CES Team Wallet', 'Fixed', 'CES-001') + , ( '0x56349a38e09f36039f6af77309690d217beaf0bf' , 'DECO Ops + DECO Protocol Wallets 1', 'Fixed', 'DECO-001') + , ( '0xa78f1f5698f8d345a14d7323745c6c56fb8227f0' , 'DECO Ops + DECO Protocol Wallets 2', 'Fixed', 'DECO-001') + , ( '0x465aa62a82e220b331f5ecca697c20e89554b298' , 'SAS Team Wallet', 'Fixed', 'SAS-001') + , ( '0x124c759d1084e67b19a206ab85c4527fab26c342' , 'IS Ops Wallet', 'Fixed', 'IS-001') + , ( '0x7327aed0ddf75391098e8753512d8aec8d740a1f' , 'Data Insights Wallet', 'Fixed', 'DIN-001') + , ( '0x2dc0420a736d1f40893b9481d8968e4d7424bc0b' , 'TechOps', 'Fixed', 'TECH-001') + , ( '0x2b6180b413511ce6e3da967ec503b2cc19b78db6' , 'Oracle Gas Cost Multisig + Emergency Fund 1', 'Variable', 'GAS') + , ( '0x1a5b692029b157df517b7d21a32c8490b8692b0f' , 'Oracle Gas Cost Multisig + Emergency Fund 2', 'Variable', 'GAS') + , ( '0x53ccaa8e3bef14254041500acc3f1d4edb5b6d24' , 'Oracle Multisig, Emergency Multisig 1', 'Fixed', 'ORA-001') + , ( '0x2d09b7b95f3f312ba6ddfb77ba6971786c5b50cf' , 'Oracle Multisig, Emergency Multisig 2', 'Fixed', 'ORA-001') + , ( '0xf737c76d2b358619f7ef696cf3f94548fecec379' , 'Strategic Finance Multisig', 'Fixed', 'SF-001') + , ( '0x3d274fbac29c92d2f624483495c0113b44dbe7d2' , 'Events Multisig', 'Fixed', 'EVENTS-001') + , ( '0x34d8d61050ef9d2b48ab00e6dc8a8ca6581c5d63' , 'Foundation Operational Wallet', 'Fixed', 'DAIF-001') + , ( '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' , 'DS Pause Proxy', 'Variable', 'DSPP') + , ( '0x73f09254a81e1f835ee442d1b3262c1f1d7a13ff' , 'Interim Multisig', 'Fixed', 'INTERIM') + , ( '0x87acdd9208f73bfc9207e1f6f0fde906bca95cc6' , 'SES Multisig (Auditor)', 'Fixed', 'SES-001') + , ( '0x5a994d8428ccebcc153863ccda9d2be6352f89ad' , 'DUX Auditor Wallet', 'Fixed', 'DUX-001') + , ( '0x25307ab59cd5d8b4e2c01218262ddf6a89ff86da' , 'CES Auditor Wallet', 'Fixed', 'CES-001') + , ( '0xf482d1031e5b172d42b2daa1b6e5cbf6519596f7' , 'DECO Auditor Wallet', 'Fixed', 'DECO-001') + , ( '0xb1f950a51516a697e103aaa69e152d839182f6fe' , 'SAS Auditor Wallet', 'Fixed', 'SAS-001') + , ( '0xd1f2eef8576736c1eba36920b957cd2af07280f4' , 'IS Auditor Wallet', 'Fixed', 'IS-001') + , ( '0x96d7b01cc25b141520c717fa369844d34ff116ec' , 'RWF Auditor Wallet', 'Fixed', 'RWF-001') + , ( '0x1a3da79ee7db30466ca752de6a75def5e635b2f6' , 'TechOps Auditor Wallet', 'Fixed', 'TECH-001') + , ( '0x5f5c328732c9e52dfcb81067b8ba56459b33921f' , 'Foundation Reserves', 'Fixed', 'DAIF-001') + , ( '0x478c7ce3e1df09130f8d65a23ad80e05b352af62' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x926c21602fec84d6d0fa6450b40edba595b5c6e4' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x37b375e3d418fbecba6b283e704f840ab32f3b3c' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x5a6007d17302238d63ab21407ff600a67765f982' , 'Techops Keepers', 'Variable', 'TECHOPS') + , ( '0xfb5e1d841bda584af789bdfabe3c6419140ec065' , 'Chainlink Keepers', 'Variable', 'CHAINLINK') + , ( '0xaefed819b6657b3960a8515863abe0529dfc444a' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x0b5a34d084b6a5ae4361de033d1e6255623b41ed' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0xc6a048550c9553f8ac20fbdeb06f114c27eccabb' , 'Gelato Keepers', 'Variable', 'GELATO') + --, ( '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' , 'DSS Blow', 'Variable', 'BLOW') + , ( '0xb386bc4e8bae87c3f67ae94da36f385c100a370a' , 'New Risk Multisig', 'Fixed', 'RISK-001') + ) AS t(wallet_address, wallet_label, varfix, code) +), __dbt__cte__fact_team_dai_burns_tx as ( + + +SELECT + tx_hash, + usr, + is_keeper +FROM ( + SELECT + d_c_b.tx_hash, + d_c_b.usr, + dao_wallet.wallet_label LIKE '% Keepers' as is_keeper + FROM __dbt__cte__fact_dai_burn as d_c_b + JOIN __dbt__cte__dim_dao_wallet dao_wallet ON d_c_b.usr = dao_wallet.wallet_address + + UNION ALL + + SELECT + tx_hash, + usr, + FALSE as is_keeper + FROM __dbt__cte__fact_dai_burn + WHERE usr = '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' +) +GROUP BY tx_hash, usr, is_keeper +), __dbt__cte__fact_team_dai_burns as ( + + +WITH team_dai_burns_preunioned AS ( + SELECT vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.is_keeper, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_team_dai_burns_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.is_keeper +) + +SELECT ts, + hash, + (CASE WHEN is_keeper THEN 31710 ELSE 31730 END) AS code, + value -- increased equity +FROM team_dai_burns_preunioned + +UNION ALL + +SELECT ts, + hash, + 21120 AS code, + -value AS value -- decreased liability +FROM team_dai_burns_preunioned +), __dbt__cte__dim_maker_contracts as ( + + +SELECT * FROM (VALUES + ( 'FlapFlop', '0x4d95a049d5b0b7d32058cd3f2163015747522e99' ) + , ( 'FlapFlop', '0xa4f79bc4a5612bdda35904fdf55fc4cb53d1bff6' ) + , ( 'FlapFlop', '0x0c10ae443ccb4604435ba63da80ccc63311615bc' ) + , ( 'FlapFlop', '0xa41b6ef151e06da0e34b009b86e828308986736d' ) + , ( 'FlapFlop', '0xc4269cc7acdedc3794b221aa4d9205f564e27f0d' ) + , ( 'PSM', '0x961ae24a1ceba861d1fdf723794f6024dc5485cf' ) + , ( 'PSM', '0x204659b2fd2ad5723975c362ce2230fba11d3900' ) + , ( 'PSM', '0x89b78cfa322f6c5de0abceecab66aee45393cc5a' ) + ) AS t(contract_type, contract_address) +), __dbt__cte__fact_liquidation_excluded_tx as ( + + +SELECT DISTINCT t.tx_hash +FROM ethereum_flipside.core.fact_traces t +JOIN __dbt__cte__dim_maker_contracts c + ON t.from_address = c.contract_address + AND c.contract_type IN ('FlapFlop') +), __dbt__cte__fact_psm_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0xf2e7a5b83525c3017383deed19bb05fe34a62c27' + THEN 'PSM-GUSD-A' + WHEN usr = lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787') + THEN 'PSM-USDP-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0xf2e7a5b83525c3017383deed19bb05fe34a62c27', lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787')) -- GUSD interest payment contract +), __dbt__cte__fact_rwa_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0x6c6d4be2223b5d202263515351034861dd9afdb6' THEN 'RWA009-A' + WHEN usr = '0xef1b095f700be471981aae025f92b03091c3ad47' THEN 'RWA007-A' + WHEN usr = '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf' THEN 'RWA014-A' + WHEN usr = lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf') THEN 'RWA015-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0x6c6d4be2223b5d202263515351034861dd9afdb6', '0xef1b095f700be471981aae025f92b03091c3ad47', '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf', lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf')) +), __dbt__cte__fact_liquidation_revenue as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value +FROM ethereum_flipside.maker.fact_vat_move +WHERE + dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts) + AND src_address NOT IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' + ) -- aave v2 d3m, compound v2 d3m + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_liquidation_excluded_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_team_dai_burns_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_psm_yield_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_rwa_yield_tx) +GROUP BY block_timestamp, tx_hash +), __dbt__cte__fact_vow_fess as ( + + +SELECT + block_timestamp, + pc_dbt_db.prod.hex_to_int(topics[2])::double/1e45 as tab, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x697efb7800000000000000000000000000000000000000000000000000000000' +and contract_address = lower('0xA950524441892A31ebddF91d3cEEFa04Bf454466') +), __dbt__cte__fact_liquidation_expenses as ( + + +SELECT block_timestamp + , tx_hash + , SUM(tab) AS value +FROM __dbt__cte__fact_vow_fess +GROUP BY block_timestamp + , tx_hash +), __dbt__cte__fact_liquidation as ( + + +-- Liquidation Revenues +SELECT + ts, + hash, + 31210 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +-- Liquidation Expenses +SELECT + block_timestamp as ts, + tx_hash as hash, + 31620 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_expenses + +UNION ALL + +SELECT + block_timestamp as ts, + tx_hash as hash, + 21120 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_expenses +), __dbt__cte__dim_psms as ( + + +SELECT DISTINCT + u_address as psm_address, + ilk +FROM ethereum_flipside.maker.fact_vat_frob +WHERE ilk LIKE 'PSM-%' +), __dbt__cte__fact_trading_revenues as ( + + +WITH trading_revenues_preunion AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + psms.ilk, + SUM(CAST(vat.rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__dim_psms psms + ON vat.src_address = psms.psm_address + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + GROUP BY vat.block_timestamp, vat.tx_hash, psms.ilk +) + +SELECT + ts, + hash, + 31310 AS code, + value AS value, + ilk +FROM trading_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM trading_revenues_preunion +), __dbt__cte__fact_mkr_mints as ( + + +WITH mkr_mints_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_liquidation_excluded_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND vat.src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts WHERE contract_type = 'PSM') + GROUP BY vat.block_timestamp, vat.tx_hash +) + +SELECT + ts, + hash, + 31410 AS code, + value --increased equity +FROM mkr_mints_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM mkr_mints_preunioned +), __dbt__cte__fact_mkr_burns as ( + + +WITH mkr_burns_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY block_timestamp, tx_hash +) + +SELECT + ts, + hash, + 31420 AS code, + -value AS value --decreased equity +FROM mkr_burns_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value --increased liability +FROM mkr_burns_preunioned +), __dbt__cte__fact_vat_grab as ( + + +with logs as ( + SELECT + * + FROM + ethereum_flipside.core.fact_event_logs + WHERE + topics [0] in ( + '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c', + '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28', + '0x7bab3f4000000000000000000000000000000000000000000000000000000000', + '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' + ) +), +bark as( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c' +), +grab as( + SELECT + block_timestamp, + tx_hash, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7bab3f4000000000000000000000000000000000000000000000000000000000' +), +bite as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28' +), +slip_raw as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' + AND length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(topics [3]) + WHEN length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN pc_dbt_db.prod.HEX_TO_INT(topics [3])::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' +), +slip as( + SELECT + block_timestamp, + tx_hash, + min(dart) as dart, + -- collision on certain tx where there are two calls to slip() + ilk + FROM + slip_raw + GROUP BY + 1, + 2, + 4 +), +agg as( + SELECT + distinct g.block_timestamp, + g.tx_hash as tx_hash, + coalesce(b.dart, t.dart, s.dart) as dart, + g.ilk as ilk + FROM + grab g + LEFT JOIN bark b on b.tx_hash = g.tx_hash + and g.ilk = b.ilk + LEFT JOIN bite t on t.tx_hash = g.tx_hash + and g.ilk = t.ilk + LEFT JOIN slip s on s.tx_hash = g.tx_hash + and g.ilk = s.ilk +) +select + * +from + agg +where + dart is not null +), __dbt__cte__fact_interest_accruals_1 as ( + + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart, + CAST(NULL AS NUMBER) AS rate +FROM ethereum_flipside.maker.fact_vat_frob +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart/1e18, + 0 AS rate +FROM __dbt__cte__fact_vat_grab +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + CAST(NULL AS NUMBER) AS dart, + rate +FROM ethereum_flipside.maker.fact_vat_fold +WHERE rate != 0 +), __dbt__cte__fact_interest_accruals_2 as ( + + +SELECT + *, + SUM(dart) OVER (PARTITION BY ilk ORDER BY ts) AS cumulative_dart +FROM __dbt__cte__fact_interest_accruals_1 +), __dbt__cte__fact_interest_accruals_3 as ( + + +SELECT + ilk, + ts, + hash, + SUM(cumulative_dart * rate * 10) AS interest_accruals +FROM __dbt__cte__fact_interest_accruals_2 +WHERE rate IS NOT NULL +GROUP BY ilk, ts, hash +), __dbt__cte__dim_ilk_list_manual_input as ( + + +SELECT * FROM (VALUES + ('RWA009-A', NULL, NULL, 12310, 31170, NULL), + ('RWA007-A', NULL, NULL, 12310, 31172, NULL), + ('RWA015-A', NULL, NULL, 12310, 31172, NULL), + ('RWA014-A', NULL, NULL, 12310, 31180, NULL) +) AS t(ilk, begin_dt, end_dt, asset_code, equity_code, apr) +), __dbt__cte__fact_spot_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2], 0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x1a0b287e00000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3' +), __dbt__cte__fact_jug_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2],0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x29ae811400000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x19c0976f590D67707E62397C87829d896Dc0f1F1' +), __dbt__cte__fact_ilk_list as ( + + +SELECT DISTINCT ilk +FROM ( + SELECT ilk + FROM ethereum_flipside.maker.fact_vat_frob + + UNION + + SELECT ilk + FROM __dbt__cte__fact_spot_file + + UNION + + SELECT ilk + FROM __dbt__cte__fact_jug_file +) +), __dbt__cte__dim_ilk_list_labeled as ( + + +-- This table should contain your ilk mappings +-- You may need to adjust this based on your specific ilk categorizations +SELECT + ilk, + begin_dt, + end_dt, + asset_code, + equity_code +FROM __dbt__cte__dim_ilk_list_manual_input + +UNION ALL + +SELECT + ilk, + CAST(NULL AS DATE) AS begin_dt, + CAST(NULL AS DATE) AS end_dt, + CASE + WHEN ilk LIKE 'ETH-%' THEN 11110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 11120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 11130 + WHEN ilk LIKE 'GUNI%' THEN 11140 + WHEN ilk LIKE 'UNIV2%' THEN 11141 + WHEN ilk LIKE 'DIRECT%' THEN 11210 + WHEN ilk LIKE 'RWA%' THEN 12310 + WHEN ilk LIKE 'PSM%' THEN 13410 + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A') THEN 11510 + ELSE 11199 + END AS asset_code, + CASE + WHEN ilk LIKE 'ETH-%' THEN 31110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 31120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 31130 + WHEN ilk LIKE 'GUNI%' THEN 31140 + WHEN ilk LIKE 'UNIV2%' THEN 31141 + WHEN ilk LIKE 'DIRECT%' THEN 31160 + WHEN ilk LIKE 'RWA%' THEN 31170 + WHEN ilk LIKE 'PSM%' THEN NULL + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A','PAXUSD-A') THEN 31190 + ELSE 31150 + END AS equity_code +FROM __dbt__cte__fact_ilk_list +WHERE ilk NOT IN (SELECT ilk FROM __dbt__cte__dim_ilk_list_manual_input) +AND ilk <> 'TELEPORT-FW-A' +), __dbt__cte__fact_interest_accruals as ( + + +WITH interest_accruals AS ( + SELECT + ia.ts, + ia.hash, + il.equity_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND ia.ts BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.equity_code, ia.ilk + + UNION ALL + + SELECT + ia.ts, + ia.hash, + il.asset_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND CAST(ia.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.asset_code, ia.ilk +) + +SELECT * FROM interest_accruals +), __dbt__cte__fact_dai_mint as ( + + +SELECT + block_timestamp, + tx_hash, + to_address as usr, + raw_amount_precise as wad +FROM ethereum_flipside.core.fact_token_transfers +where from_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__fact_opex_suck_hashes as ( + + +SELECT suck.tx_hash +FROM ethereum_flipside.maker.fact_vat_suck suck +WHERE suck.u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' + AND suck.v_address IN ( + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' + ) + AND suck.rad != 0 +GROUP BY 1 +), __dbt__cte__fact_opex as ( + + +WITH opex_preunion AS ( + SELECT + mints.block_timestamp AS ts, + mints.tx_hash AS hash, + CASE + WHEN dao_wallet.code IN ('GELATO', 'KEEP3R', 'CHAINLINK', 'TECHOPS') THEN 31710 --keeper maintenance expenses + WHEN dao_wallet.code = 'GAS' THEN 31630 -- oracle gas expenses + WHEN dao_wallet.code IS NOT NULL THEN 31720 --workforce expenses + ELSE 31740 --direct opex - when a suck operation is used to directly transfer DAI to a third party + END AS equity_code, + mints.wad / POW(10, 18) AS expense + FROM __dbt__cte__fact_dai_mint mints + JOIN __dbt__cte__fact_opex_suck_hashes opex + ON mints.tx_hash = opex.tx_hash + LEFT JOIN __dbt__cte__dim_dao_wallet dao_wallet + ON mints.usr = dao_wallet.wallet_address + LEFT JOIN ethereum_flipside.maker.fact_vat_frob AS frobs + ON mints.tx_hash = frobs.tx_hash + AND mints.wad::number/1e18 = frobs.dart + WHERE frobs.tx_hash IS NULL --filtering out draws from psm that happened in the same tx as expenses +) + +SELECT + ts, + hash, + equity_code AS code, + -CAST(expense AS DOUBLE) AS value --reduced equity +FROM opex_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + expense AS value --increased liability +FROM opex_preunion +), __dbt__cte__fact_dsr_expenses as ( + + +WITH dsr_expenses_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot +) + +SELECT + ts, + hash, + 31610 AS code, + -value AS value --reduced equity +FROM dsr_expenses_raw + +UNION ALL + +SELECT + ts, + hash, + 21110 AS code, + value AS value --increased liability +FROM dsr_expenses_raw +), __dbt__cte__fact_other_sin_outflows as ( + + +WITH other_sin_outflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address NOT IN ( + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7', -- Pot (DSR) + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', -- Pause Proxy + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', -- Old Pause Proxy + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' -- Old Pause Proxy + ) +) + +SELECT + ts, + hash, + 31520 AS code, + -value AS value --reduced equity +FROM other_sin_outflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value AS value --increased liability +FROM other_sin_outflows_raw +), __dbt__cte__fact_sin_inflows as ( + + +WITH sin_inflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE v_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow +) + +SELECT + ts, + hash, + 31510 AS code, + value AS value --increased equity +FROM sin_inflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM sin_inflows_raw +), __dbt__cte__fact_dsr_flows as ( + + +WITH dsr_flows_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract +) + +SELECT + ts, + hash, + 21110 AS code, + dsr_flow AS value -- positive dsr flow increases interest-bearing dai liability +FROM dsr_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -dsr_flow AS value -- positive dsr flow decreases non-interest-bearing dai liability +FROM dsr_flows_preunioned +), __dbt__cte__dim_treasury_erc20s as ( + + +SELECT * FROM (VALUES + ('0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', 18, 'ENS'), + ('0x4da27a545c0c5b758a6ba100e3a049001de870f5', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'stkAAVE'), + ('0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'AAVE'), + ('0xc00e94cb662c3520282e6f5717214004a7f26888', '0xc00e94cb662c3520282e6f5717214004a7f26888', 18, 'COMP') +) AS t(contract_address, price_address, decimals, token) +), __dbt__cte__fact_treasury_flows as ( + + +WITH treasury_flows_preunioned AS ( + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token + + UNION ALL + + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + -SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + AND evt.to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token +) + +SELECT + ts, + hash, + 33110 AS code, + value, --increased equity + token +FROM treasury_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 14620 AS code, + value, --increased assets + token +FROM treasury_flows_preunioned +), __dbt__cte__fact_loan_actions_2 as ( + + +SELECT + ilk, + ts, + hash, + dart, + COALESCE(POW(10,27) + SUM(rate) OVER(PARTITION BY ilk ORDER BY ts ASC), POW(10,27)) AS rate +FROM __dbt__cte__fact_interest_accruals_1 +WHERE ilk != 'TELEPORT-FW-A' +), __dbt__cte__fact_loan_actions as ( + + + +SELECT + la.ts, + la.hash, + il.asset_code AS code, + SUM(la.dart) AS value, + la.ilk +FROM __dbt__cte__fact_loan_actions_2 la +LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON la.ilk = il.ilk + AND CAST(la.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') +GROUP BY la.ts, la.hash, il.asset_code, la.ilk +-- HAVING SUM(la.dart * la.rate) / POW(10, 45) != 0 + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + SUM(dart) AS value, + ilk +FROM __dbt__cte__fact_loan_actions_2 +GROUP BY ts, hash, ilk +HAVING SUM(dart) != 0 +), __dbt__cte__fact_d3m_revenues as ( + + +WITH d3m_revenues_preunion AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CASE + WHEN src_address = '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a' THEN 'DIRECT-AAVEV2-DAI' + WHEN src_address = '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' THEN 'DIRECT-COMPV2-DAI' + END AS ilk, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', -- aave d3m + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' -- compound v2 d3m + ) + AND dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY 1, 2, 3 + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + ilk, + SUM(dart) / 1e18 AS value + FROM __dbt__cte__fact_vat_grab + WHERE dart > 0 + GROUP BY 1, 2, 3 +) + +SELECT + ts, + hash, + 31160 AS code, + value AS value, + ilk +FROM d3m_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM d3m_revenues_preunion +), __dbt__cte__fact_psm_yield as ( + + +WITH psm_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__fact_psm_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + 31180 AS code, + value, --increased equity + ilk +FROM psm_yield_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM psm_yield_preunioned +), __dbt__cte__fact_rwa_yield as ( + + +WITH rwa_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_rwa_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + COALESCE(ilm.equity_code, 31170) AS code, --default to off-chain private credit + value, --increased equity + rwy.ilk +FROM rwa_yield_preunioned rwy +LEFT JOIN __dbt__cte__dim_ilk_list_manual_input ilm + USING (ilk) + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM rwa_yield_preunioned +), __dbt__cte__fact_dssvesttransferrable_create as ( + + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) = '0xdb64ff8f' +) +SELECT + block_timestamp, + tx_hash, + '0x' || SUBSTR(raw_input_data, 25, 40) as _usr, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _tot, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 129, 64)) as _bgn, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 193, 64)) as _tau, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 257, 64)) as _eta, + ROW_NUMBER() OVER (ORDER BY block_timestamp, trace_index) AS output_id +FROM raw +), __dbt__cte__fact_mkr_vest_creates as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + output_id, + _bgn, + _tau, + _tot::number / 1e18 AS total_mkr +FROM __dbt__cte__fact_dssvesttransferrable_create +), __dbt__cte__fact_dssvesttransferrable_yank as ( + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) in ('0x509aaa1d', '0x26e027f1') +) +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 1, 64)) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _end +FROM raw +), __dbt__cte__fact_mkr_yanks as ( + + +WITH yanks_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + _end, + _id + FROM __dbt__cte__fact_dssvesttransferrable_yank +), + +yanks_with_context AS ( + SELECT + y.*, + c._bgn, + c._tau, + c.total_mkr, + CASE + WHEN DATEADD(second, y._end, '1970-01-01'::timestamp) > y.ts + THEN DATEADD(second, y._end, '1970-01-01'::timestamp) + ELSE y.ts + END AS end_time + FROM yanks_raw y + LEFT JOIN __dbt__cte__fact_mkr_vest_creates c + ON y._id = c.output_id +) + +SELECT + ts, + hash, + _id, + TO_TIMESTAMP(CAST(_bgn AS VARCHAR)) AS begin_time, + end_time, + _tau, + total_mkr AS original_total_mkr, + (1 - (DATEDIFF(second, '1970-01-01'::timestamp, end_time) - _bgn) / _tau) * total_mkr AS yanked_mkr +FROM yanks_with_context +), __dbt__cte__fact_mkr_vest_creates_yanks as ( + + +-- MKR Vest Creates +SELECT + ts, + hash, + 32110 AS code, -- MKR expense realized + -total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts increases + total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +-- MKR Yanks +SELECT + ts, + hash, + 32110 AS code, -- MKR expense reversed (yanked) + yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts yanked (decreases) + -yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks +), __dbt__cte__fact_pause_proxy_mkr_trxns_raw as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(raw_amount_precise AS DOUBLE) AS expense, + to_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- excluding transfers to itself + +UNION ALL + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(raw_amount_precise AS DOUBLE) AS expense, + from_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND from_address NOT IN ('0x8ee7d9235e01e6b42345120b5d270bdb763624c7', '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb') -- excluding initial transfers in and transfers from itself +), __dbt__cte__fact_dssvesttransferrable_vest as ( + + + +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(topics[1]) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(data) as _max_amt +FROM ethereum_flipside.core.fact_event_logs +where contract_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and topics[0] = '0xa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847' +), __dbt__cte__fact_mkr_vest_tx as ( + + +SELECT + tx_hash AS hash, + 1 AS vested +FROM __dbt__cte__fact_dssvesttransferrable_vest +), __dbt__cte__fact_pause_proxy_mkr_trxns as ( + + +WITH pause_proxy_mkr_trxns_preunion AS ( + SELECT + raw.ts, + raw.hash, + CASE + WHEN vest.vested IS NOT NULL THEN 32120 -- reserved surplus depletion for vested transactions + ELSE 32110 -- direct protocol surplus impact for non-vested transactions + END AS code, + -raw.expense / 1e18 AS value + FROM __dbt__cte__fact_pause_proxy_mkr_trxns_raw raw + LEFT JOIN __dbt__cte__fact_mkr_vest_tx vest + ON raw.hash = vest.hash +) + +SELECT + ts, + hash, + code, + value +FROM pause_proxy_mkr_trxns_preunion + +UNION ALL + +SELECT + ts, + hash, + 32210 AS code, -- MKR contra equity + -value +FROM pause_proxy_mkr_trxns_preunion +), __dbt__cte__fact_m2m_levels as ( + + +WITH treasury_tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'DAI' AS token, '0x6b175474e89094c44da98b954eedeac495271d0f' AS price_address +) + +SELECT + p.hour AS ts, + tt.token, + CASE WHEN tt.token = 'DAI' THEN 1 ELSE p.price END AS price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN treasury_tokens tt ON p.token_address = tt.price_address +WHERE p.hour >= '2019-11-01' + AND EXTRACT(HOUR FROM p.hour) = 23 +), __dbt__cte__fact_token_prices as ( + + +WITH tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'MKR' AS token, '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' AS price_address + + UNION ALL + + SELECT 'ETH' AS token, '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' AS price_address +) + +SELECT + p.hour AS ts, + t.token, + p.price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN tokens t ON lower(p.token_address) = lower(t.price_address) +WHERE p.hour >= '2019-11-01' + +UNION ALL + +SELECT + TIMESTAMP '2021-11-09 00:02' AS ts, + 'ENS' AS token, + 44.3 AS price +), __dbt__cte__fact_eth_prices as ( + + +SELECT * +FROM __dbt__cte__fact_token_prices +WHERE token = 'ETH' +), __dbt__cte__fact_with_prices as ( + + +WITH unioned_data AS ( + SELECT ts, hash, code, value, 'DAI' AS token, 'Returned Workforce Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_team_dai_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Liquidation Revenues/Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_liquidation + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Trading Revenues' AS descriptor, ilk FROM __dbt__cte__fact_trading_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Mints' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_mints + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Burns' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Interest Accruals' AS descriptor, ilk FROM __dbt__cte__fact_interest_accruals + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'OpEx' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_opex + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_expenses + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Other Sin Outflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_other_sin_outflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Sin Inflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_sin_inflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_flows + UNION ALL + SELECT ts, hash, code, value, token, 'Treasury Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_treasury_flows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Loan Draws/Repays' AS descriptor, ilk FROM __dbt__cte__fact_loan_actions + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'D3M Revenues' AS descriptor, ilk FROM __dbt__cte__fact_d3m_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'PSM Yield' AS descriptor, ilk FROM __dbt__cte__fact_psm_yield + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'RWA Yield' AS descriptor, ilk FROM __dbt__cte__fact_rwa_yield + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Vest Creates/Yanks' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_mkr_vest_creates_yanks + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Pause Proxy Trxns' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_pause_proxy_mkr_trxns + UNION ALL + SELECT ts, NULL AS hash, 19999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 29999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 39999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels +) + +SELECT + coa.code, + u.ts, + u.hash, + u.value, + u.token, + u.descriptor, + u.ilk, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END AS dai_value, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END / ep.price AS eth_value, + ep.price AS eth_price +FROM __dbt__cte__dim_chart_of_accounts coa +LEFT JOIN unioned_data u USING (code) +LEFT JOIN __dbt__cte__fact_token_prices tp + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', tp.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM tp.ts) + AND u.token = tp.token +LEFT JOIN __dbt__cte__fact_eth_prices ep + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', ep.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM ep.ts) +WHERE u.value IS NOT NULL +), __dbt__cte__fact_cumulative_sums as ( + + +SELECT + wp.*, + SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_token_value, + SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_dai_value, + SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_eth_value, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_value_if_converted_all_once, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_value_if_converted_all_once, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_m2m, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_m2m +FROM __dbt__cte__fact_with_prices wp +LEFT JOIN __dbt__cte__fact_m2m_levels m2m + ON wp.token = m2m.token + AND DATE_TRUNC('day', wp.ts) = DATE_TRUNC('day', m2m.ts) + -- AND EXTRACT(HOUR FROM wp.ts) = EXTRACT(HOUR FROM m2m.ts) +), __dbt__cte__fact_incremental_m2m as ( + + +SELECT + *, + dai_m2m - COALESCE(LAG(dai_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_dai_m2m, + eth_m2m - COALESCE(LAG(eth_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_eth_m2m +FROM __dbt__cte__fact_cumulative_sums +WHERE cumulative_ale_token_value > 0 + AND SUBSTRING(CAST(code AS VARCHAR), -4) = '9999' +), __dbt__cte__fact_final as ( + + +-- Non-M2M entries +SELECT + code, + ts, + hash, + value, + token, + descriptor, + ilk, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE dai_value END AS dai_value, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE eth_value END AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_with_prices +WHERE SUBSTRING(CAST(code AS VARCHAR), -4) <> '9999' + +UNION ALL + +-- M2M entries +SELECT + code, + ts, + hash, + NULL AS value, + token, + descriptor, + ilk, + incremental_dai_m2m AS dai_value, + incremental_eth_m2m AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_incremental_m2m + +-- Final filter +WHERE (COALESCE(value, 0) <> 0 OR dai_value <> 0 OR eth_value <> 0) +), __dbt__cte__fact_accounting_agg as ( + + +with + chart_of_accounts as ( + select cast(code as varchar) as account_id from __dbt__cte__dim_chart_of_accounts -- CoA simplified + ), + periods as ( + select + distinct(date(hour)) as date + from ethereum_flipside.price.ez_prices_hourly + where symbol = 'MKR' + ), + accounting as ( + select + date_trunc('day', acc.ts) as period, + cast(acc.code as varchar) as account_id, + acc.dai_value as usd_value, + acc.value as token_value, + token + from __dbt__cte__fact_final acc + ), + accounting_agg as ( + select + date_trunc('day', period) as period, + account_id, + token, + sum(coalesce(token_value,0)) as token_sum_value, + sum(coalesce(usd_value, 0)) AS usd_sum_value + from accounting + group by 1,2,3 + ), + accounting_liq as ( + select distinct + period, + token, + sum(coalesce(token_sum_value, 0)) over (partition by date_trunc('day', period)) as token_liq_cum, + sum(coalesce(usd_sum_value, 0)) over (partition by date_trunc('day', period)) as usd_liq_cum + from accounting_agg + where account_id in ( + '31210', -- Liquidation Revenues + '31620' -- Liquidation Expenses + ) + ) +select + a.period, + a.account_id, + a.token, + case + when account_id = '31210' then iff(usd_liq_cum > 0, usd_liq_cum, 0) + when account_id = '31620' then iff(usd_liq_cum > 0, 0, usd_liq_cum) + else coalesce(usd_sum_value, 0) + end as sum_value, + case + when account_id = '31210' then iff(token_liq_cum > 0, token_liq_cum, 0) + when account_id = '31620' then iff(token_liq_cum > 0, 0, token_liq_cum) + else coalesce(token_sum_value,0) + end as sum_value_token +from accounting_agg a +left join accounting_liq l + on a.period = l.period + and a.token = l.token +), __dbt__cte__fact_maker_fees_revenue_expenses as ( + + + +select + date(period) as date, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180')-- Stability fees + then sum_value + end + ) as stability_fees, + sum(case + when account_id like '313%' -- Trading fees + then sum_value + end + ) as trading_fees, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180') -- Stability fees + or account_id like '313%' -- Trading fees + then sum_value + end + ) as fees, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as primary_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + then sum_value + end + ) as other_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + or account_id like '311%' -- Gross Interest Revenues + then sum_value + end + ) as protocol_revenue, + sum( + case + when account_id = '31410' -- MKR Mints + then sum_value + end + ) as token_incentives, + sum( + case + when account_id like '316%' -- Direct Expenses + then -sum_value + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then -sum_value + end + ) as operating_expenses, + sum( + case + when account_id like '316%' -- Direct Expenses + or account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + or account_id = '31410' + then -sum_value + end + ) as total_expenses +from __dbt__cte__fact_accounting_agg +group by 1 +), __dbt__cte__fact_system_surplus_dai as ( + + +with bs_equity as ( + select + date(ts) as date, + sum(case when acc.code not like '33%' and acc.code not like '39%' then acc.value else 0 end) as surplus + from __dbt__cte__fact_final acc + where code like '3%' + and acc.code not like '33%' and acc.code not like '39%' + group by 1 +) +select + date, + sum(surplus) over (order by date) as surplus, + 'DAI' as token +from bs_equity +), __dbt__cte__fact_treasury_mkr as ( + + +with prices as ( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' + GROUP BY 1 +), +mkr_balance_cte as ( + SELECT + date(block_timestamp) as date, + MAX_BY(balance,date(block_timestamp))/1e18 as mkr_balance, + user_address + FROM ethereum_flipside.core.fact_token_balances + where user_address in (lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB'), lower('0x8EE7D9235e01e6B42345120b5d270bdB763624C7')) + and contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' + GROUP BY 1, 3 +), +date_sequence AS ( + SELECT DISTINCT date + FROM prices +), +user_addresses AS ( + SELECT DISTINCT user_address + FROM mkr_balance_cte +), +all_dates_users AS ( + SELECT + d.date, + u.user_address + FROM date_sequence d + CROSS JOIN user_addresses u +), +joined_balances AS ( + SELECT + a.date, + a.user_address, + p.price, + m.mkr_balance AS balance_token + FROM all_dates_users a + LEFT JOIN prices p ON p.date = a.date + LEFT JOIN mkr_balance_cte m ON m.date = a.date AND m.user_address = a.user_address +) +,filled_balances AS ( + SELECT + date, + user_address, + price, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token, + COALESCE( + user_address, + LAST_VALUE(user_address IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS filled_user_address + FROM joined_balances +) + +SELECT + date, + SUM(balance_token) amount_mkr, + SUM(balance_token *price) as amount_usd, + 'MKR' as token +FROM filled_balances +GROUP BY date +), __dbt__cte__fact_uni_lp_supply as ( + + +WITH token_transfers AS ( + SELECT + date(block_timestamp) AS date, + from_address, + to_address, + raw_amount_precise::number / 1e18 AS amount + FROM ethereum_flipside.core.fact_token_transfers + WHERE contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') +), +daily_mints AS ( + SELECT + date, + SUM(amount) AS daily_minted + FROM token_transfers + WHERE from_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_burns AS ( + SELECT + date, + SUM(amount) AS daily_burned + FROM token_transfers + WHERE to_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_net_supply AS ( + SELECT + d.date_day as date, + COALESCE(m.daily_minted, 0) AS daily_minted, + COALESCE(b.daily_burned, 0) AS daily_burned, + COALESCE(m.daily_minted, 0) - COALESCE(b.daily_burned, 0) AS daily_net + FROM ethereum_flipside.core.dim_dates d + LEFT JOIN daily_mints m ON d.date_day = m.date + LEFT JOIN daily_burns b ON d.date_day = b.date + WHERE date_day < to_date(sysdate()) +), +cumulative_supply AS ( + SELECT + date, + daily_minted, + daily_burned, + daily_net, + SUM(daily_net) OVER ( + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS circulating_supply + FROM daily_net_supply +) +SELECT + date, + circulating_supply +FROM cumulative_supply +ORDER BY date +), __dbt__cte__fact_uni_lp_value as ( + + +with token_balances as ( + SELECT + DATE(block_timestamp) as date, + case + when contract_address = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') then 'DAI' + when contract_address = lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2') then 'MKR' + END AS token, + MAX_BY(balance, block_timestamp)::number / 1e18 as balance + FROM + ethereum_flipside.core.fact_token_balances + WHERE + user_address = lower('0x517F9dD285e75b599234F7221227339478d0FcC8') + AND contract_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 2 +), +prices as ( + SELECT + date(hour) as date, + MAX_BY(price, hour) as price, + symbol + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + token_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 3 +), +daily_prices_by_token as ( + SELECT + b.date, + p.price * b.balance as balance_usd, + b.token + FROM + token_balances b + LEFT JOIN prices p on p.date = b.date + AND p.symbol = b.token +) +SELECT + date, + sum(balance_usd) as amount_usd +FROM + daily_prices_by_token +GROUP BY 1 +ORDER BY 1 DESC +), __dbt__cte__fact_treasury_lp_balances as ( + + + +with +dates as ( + SELECT + DISTINCT date(hour) as date + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' +) +, treasury_balance as ( + select + date(block_timestamp) as date, + MAX(balance)::number / 1e18 as treasury_lp_balance + from + ethereum_flipside.core.fact_token_balances + where + contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') + and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') + GROUP BY + 1 +), +value_per_token_cte as ( + SELECT + s.date, + v.amount_usd / s.circulating_supply as value_per_token_usd, + s.circulating_supply + FROM + __dbt__cte__fact_uni_lp_supply s + LEFT JOIN __dbt__cte__fact_uni_lp_value v ON v.date = s.date + where + value_per_token_usd is not null +) +, filled_data as ( + SELECT + d.date, + LAST_VALUE(t.treasury_lp_balance IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as amount_native, + LAST_VALUE(v.value_per_token_usd IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as value_per_token_usd + FROM + dates d + LEFT JOIN treasury_balance t ON d.date = t.date + LEFT JOIN value_per_token_cte v ON d.date = v.date +) +SELECT + date, + amount_native, + value_per_token_usd, + amount_native * value_per_token_usd as amount_usd, + 'UNI V2: DAI-MKR' as token +FROM + filled_data +WHERE amount_native is not null +ORDER BY + date +), __dbt__cte__fact_treasury_usd as ( + + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_mkr + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_lp_balances +) +SELECT + date, + SUM(amount_usd) AS treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC +), __dbt__cte__fact_net_treasury_usd as ( + + +with agg as( + SELECT + date, + surplus as amount_usd + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + amount_usd + FROM + __dbt__cte__fact_treasury_lp_balances +) +SELECT + date, + SUM(amount_usd) AS net_treasury_usd +FROM + agg +GROUP BY + 1 +ORDER BY + 1 DESC +), __dbt__cte__dim_gem_join_addresses as ( + + +with join_addresses as ( + select + '0x' || SUBSTR(topics [1], 27) as join_address, + * + from + ethereum_flipside.core.fact_event_logs + where + topics [0] = lower( + '0x65fae35e00000000000000000000000000000000000000000000000000000000' + ) + and contract_address = lower('0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b') +) +, contract_creation_hashes as( + select + address as join_address, + created_tx_hash + from + ethereum_flipside.core.dim_contracts + where + address in (SELECT lower(join_address) FROM join_addresses) +) +SELECT + '0x' || RIGHT(t.input, 40) as gem_address, + h.join_address +FROM + contract_creation_hashes h +LEFT JOIN ethereum_flipside.core.fact_traces t ON h.created_tx_hash = t.tx_hash +), __dbt__cte__fact_maker_tvl_by_asset as ( + + + +WITH weth AS ( + SELECT DISTINCT + m.symbol, + g.gem_address, + g.join_address, + m.decimals + FROM + __dbt__cte__dim_gem_join_addresses g + LEFT JOIN ethereum_flipside.price.ez_asset_metadata m ON g.gem_address = m.token_address + WHERE + symbol IS NOT NULL +), +daily_balances AS ( + SELECT + DATE(t.block_timestamp) AS date, + t.user_address, + t.contract_address, + w.symbol, + w.decimals, + AVG(t.balance / POWER(10, w.decimals)) AS amount_native + FROM + ethereum_flipside.core.fact_token_balances t + JOIN weth w ON t.user_address = w.join_address AND t.contract_address = w.gem_address + GROUP BY 1, 2, 3, 4, 5 +), +date_series AS ( + SELECT date_day as date + FROM ethereum_flipside.core.dim_dates + WHERE date_day < to_date(sysdate()) +), +all_combinations AS ( + SELECT DISTINCT + d.date, + db.user_address, + db.contract_address + FROM + date_series d + CROSS JOIN (SELECT DISTINCT user_address, contract_address FROM daily_balances) db +), +forward_filled_balances AS ( + SELECT + ac.date, + ac.user_address, + ac.contract_address, + LAST_VALUE(db.symbol IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS symbol, + LAST_VALUE(db.decimals IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS decimals, + LAST_VALUE(db.amount_native IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS amount_native + FROM + all_combinations ac + LEFT JOIN daily_balances db + ON ac.date = db.date + AND ac.user_address = db.user_address + AND ac.contract_address = db.contract_address +), +usd_values AS ( + SELECT + ffb.date, + ffb.user_address, + ffb.contract_address, + ffb.symbol, + ffb.amount_native, + ffb.amount_native * COALESCE( + p.price, + FIRST_VALUE(p.price) OVER ( + PARTITION BY ffb.contract_address + ORDER BY CASE WHEN p.price IS NOT NULL THEN ffb.date END DESC + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS amount_usd + FROM + forward_filled_balances ffb + LEFT JOIN ethereum_flipside.price.ez_prices_hourly p + ON p.hour = DATE_TRUNC('day', ffb.date) + AND p.token_address = ffb.contract_address + WHERE + ffb.amount_native IS NOT NULL +) +SELECT + date, + SUM(amount_native) AS total_amount_native, + symbol, + SUM(amount_usd) AS total_amount_usd +FROM + usd_values +GROUP BY 1, 3 +ORDER BY 1 +), __dbt__cte__fact_maker_tvl as ( + + +SELECT + date, + sum(total_amount_usd) as tvl_usd +FROM + __dbt__cte__fact_maker_tvl_by_asset +GROUP BY + 1 +), __dbt__cte__fact_dai_eth_supply as ( + + +with eth_raw as( + select + block_timestamp, + CASE + WHEN lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN AMOUNT + WHEN lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN - AMOUNT + END AS amount + from + ethereum_flipside.core.ez_token_transfers + where + lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + and ( + lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + or lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + ) +), +daily_amounts AS ( + SELECT + date(block_timestamp) as date, + SUM(amount) as daily_amount + FROM eth_raw + GROUP BY date(block_timestamp) +) +SELECT + date, + SUM(daily_amount) OVER (ORDER BY date) as dai_supply, + 'Ethereum' as chain +FROM daily_amounts +ORDER BY date DESC +), __dbt__cte__fact_dai_dsr_supply as ( + + + +WITH + deltas AS ( + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + CAST(rad AS DOUBLE) AS delta, + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + - CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) as dt, + CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_suck + WHERE v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' +) +, daily_supply as ( + SELECT + dt, + sum(delta) as dai_supply + FROM deltas + GROUP BY 1 +) +SELECT + dt as date, + SUM(dai_supply) OVER (ORDER BY dt) as dai_supply, + 'Ethereum' as chain +FROM daily_supply +), __dbt__cte__fact_dai_supply_by_chain as ( + + + +select * from __dbt__cte__fact_dai_eth_supply +union all +select * from __dbt__cte__fact_dai_dsr_supply +), __dbt__cte__fact_dai_supply as ( + + + + +SELECT date, SUM(dai_supply) as outstanding_supply FROM __dbt__cte__fact_dai_supply_by_chain +GROUP BY 1 +), __dbt__cte__fact_maker_fdv_and_turnover as ( + + + +SELECT + date, + shifted_token_h24_volume_usd as token_volume, + shifted_token_price_usd * 1005577 as fully_diluted_market_cap, + shifted_token_h24_volume_usd / shifted_token_market_cap as token_turnover_circulating, + shifted_token_h24_volume_usd / fully_diluted_market_cap as token_turnover_fdv +FROM pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold +where coingecko_id = 'maker' +and shifted_token_market_cap > 0 +and fully_diluted_market_cap > 0 +order by date desc +), __dbt__cte__fact_mkr_tokenholder_count as ( + + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + where block_timestamp > '2017-12-19' -- set token contract creation date +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM pc_dbt_db.prod.fact_ethereum_address_balances_by_token + WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- set token contract address + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select date, count(*) as tokenholder_count from filled_balances +where balance_token > 0 +group by date +order by date desc +), fees_revenue_expenses AS ( + SELECT + date, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM __dbt__cte__fact_maker_fees_revenue_expenses + ) + , treasury_usd AS ( + SELECT date, treasury_usd FROM __dbt__cte__fact_treasury_usd + ) + , treasury_native AS ( + SELECT date, amount_mkr as treasury_native FROM __dbt__cte__fact_treasury_mkr + ) + , net_treasury AS ( + SELECT date, net_treasury_usd FROM __dbt__cte__fact_net_treasury_usd + ) + , tvl_metrics AS ( + SELECT date, tvl_usd as net_deposit, tvl_usd as tvl FROM __dbt__cte__fact_maker_tvl + ) + , outstanding_supply AS ( + SELECT date, outstanding_supply FROM __dbt__cte__fact_dai_supply + ) + , token_turnover_metrics as ( + select + date + , token_turnover_circulating + , token_turnover_fdv + , token_volume + from __dbt__cte__fact_maker_fdv_and_turnover + ) + , price_data as ( + select + date as date, + shifted_token_price_usd as price, + shifted_token_market_cap as market_cap, + t2.total_supply * price as fdmc + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold t1 + inner join + ( + select + token_id, coalesce(token_max_supply, token_total_supply) as total_supply + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'maker' + ) t2 + on t1.coingecko_id = t2.token_id + where + coingecko_id = 'maker' + and date < dateadd(day, -1, to_date(sysdate())) + union + select + dateadd('day', -1, to_date(sysdate())) as date, + token_current_price as price, + token_market_cap as market_cap, + coalesce(token_max_supply, token_total_supply) * price as fdmc + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'maker' +) + , token_holder_data as ( + select + date + , tokenholder_count + from __dbt__cte__fact_mkr_tokenholder_count + ) + + +select + date + , 'ethereum' as chain + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS earnings + , COALESCE(treasury_usd, 0) AS treasury_usd + , COALESCE(treasury_native, 0) AS treasury_native + , COALESCE(net_treasury_usd, 0) AS net_treasury_usd + , COALESCE(net_deposit, 0) AS net_deposits + , COALESCE(outstanding_supply, 0) AS outstanding_supply + , COALESCE(tvl, 0) AS tvl + , COALESCE(price, 0) AS price + , COALESCE(fdmc, 0) AS fdmc + , COALESCE(market_cap, 0) AS market_cap + , COALESCE(token_volume, 0) AS token_volume + , COALESCE(token_turnover_fdv, 0) AS token_turnover_fdv + , COALESCE(token_turnover_circulating, 0) AS token_turnover_circulating + , COALESCE(tokenholder_count, 0) AS tokenholder_count +FROM token_holder_data +left join treasury_usd using (date) +left join treasury_native using (date) +left join net_treasury using (date) +left join tvl_metrics using (date) +left join outstanding_supply using (date) +left join token_turnover_metrics using (date) +left join price_data using (date) +left join fees_revenue_expenses using (date) +where date < to_date(sysdate()) diff --git a/models/_complete_asset_models/maker/ez_maker_metrics_by_token__complete__.sql b/models/_complete_asset_models/maker/ez_maker_metrics_by_token__complete__.sql new file mode 100644 index 00000000..a18b7575 --- /dev/null +++ b/models/_complete_asset_models/maker/ez_maker_metrics_by_token__complete__.sql @@ -0,0 +1,2205 @@ +WITH + __dbt__cte__dim_chart_of_accounts as ( + + +SELECT code, primary_label, secondary_label, account_label, category_label, subcategory_label + FROM (VALUES + (11110, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'ETH', 'ETH'), + (11120, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'BTC', 'BTC'), + (11130, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'WSTETH', 'WSTETH'), + (11140, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Stable LP'), + (11141, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Liquidity Pool', 'Volatile LP'), + (11199, 'Assets', 'Collateralized Lending', 'Crypto-Loans', 'Other', 'Other'), + (11210, 'Assets', 'Collateralized Lending', 'Money Market', 'Money Market', 'D3M'), + (11510, 'Assets', 'Collateralized Lending', 'Legacy', 'Stablecoins', 'Stablecoins'), + (12310, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Off-Chain Private Credit'), + (12311, 'Assets', 'Real-World Lending', 'RWA', 'Private Credit RWA', 'Tokenized Private Credit'), + (12320, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Off-Chain Public Credit'), + (12321, 'Assets', 'Real-World Lending', 'RWA', 'Public Credit RWA', 'Tokenized Public Credit'), + (13410, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Non-Yielding Stablecoin'), + (13411, 'Assets', 'Liquidity Pool', 'PSM', 'PSM', 'Yielding Stablecoin'), + (14620, 'Assets', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (19999, 'Assets', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (21110, 'Liabilities', 'Stablecoin', 'Circulating', 'Interest-bearing', 'Dai'), + (21120, 'Liabilities', 'Stablecoin', 'Circulating', 'Non-interest bearing', 'Dai'), + (29999, 'Liabilities', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token'), + (31110, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'ETH', 'ETH SF'), + (31120, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'BTC', 'BTC SF'), + (31130, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'WSTETH', 'WSTETH SF'), + (31140, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Stable LP SF'), + (31141, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Liquidity Pool', 'Volatile LP SF'), + (31150, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Other', 'Other SF'), + (31160, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Money Market', 'D3M SF'), + (31170, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Private Credit SF'), + (31171, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Private Credit SF'), + (31172, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Off-Chain Public Credit Interest'), + (31173, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'RWA', 'Tokenized Public Credit Interest'), + (31180, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'PSM', 'Yielding Stablecoin Interest'), + (31190, 'Equity', 'Protocol Surplus', 'Gross Interest Revenues', 'Stablecoins', 'Stablecoins SF'), + (31210, 'Equity', 'Protocol Surplus', 'Liquidation Revenues', 'Liquidation Revenues', 'Liquidation Revenues'), + (31310, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Trading Revenues'), + (31311, 'Equity', 'Protocol Surplus', 'Trading Revenues', 'Trading Revenues', 'Teleport Revenues'), + (31410, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Mints', 'MKR Mints'), + (31420, 'Equity', 'Protocol Surplus', 'MKR Mints Burns', 'MKR Burns', 'MKR Burns'), + (31510, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Inflow', 'Sin Inflow'), + (31520, 'Equity', 'Protocol Surplus', 'Sin', 'Sin Outflow', 'Sin Outflow'), + (31610, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'DSR', 'Circulating Dai'), + (31620, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Liquidation Expenses', 'Liquidation Expenses'), + (31630, 'Equity', 'Protocol Surplus', 'Direct Expenses', 'Oracle Gas Expenses', 'Oracle Gas Expenses'), + (31710, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Keeper Maintenance', 'Keeper Maintenance'), + (31720, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Workforce Expenses'), + (31730, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Workforce Expenses', 'Returned Workforce Expenses'), + (31740, 'Equity', 'Protocol Surplus', 'Indirect Expenses', 'Direct to Third Party Expenses', 'Direct to Third Party Expenses'), + (32110, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Direct MKR Token Expenses', 'Direct MKR Token Expenses'), + (32120, 'Equity', 'Reserved MKR Surplus', 'MKR Token Expenses', 'Vested MKR Token Expenses', 'Vested MKR Token Expenses'), + (32210, 'Equity', 'Reserved MKR Surplus', 'MKR Contra Equity', 'MKR Contra Equity', 'MKR Contra Equity'), + (33110, 'Equity', 'Proprietary Treasury', 'Holdings', 'Treasury Assets', 'DS Pause Proxy'), + (39999, 'Equity', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token', 'Currency Translation to Presentation Token') + + ) AS t(code, primary_label, secondary_label, account_label, category_label, subcategory_label) +), __dbt__cte__fact_dai_burn as ( + + +SELECT + block_timestamp, + tx_hash, + from_address as usr +FROM ethereum_flipside.core.fact_token_transfers +where to_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__dim_dao_wallet as ( + + +SELECT * FROM (VALUES + ( '0x9e1585d9ca64243ce43d42f7dd7333190f66ca09' , 'RWF Core Unit Multisig + Operational 1', 'Fixed', 'RWF-001') + , ( '0xd1505ee500791490de8642353ba6a5b92e3550f7' , 'RWF Core Unit Multisig + Operational 2', 'Fixed', 'RWF-001') + , ( '0xe2c16c308b843ed02b09156388cb240ced58c01c' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 1', 'Fixed', 'PE-001') + , ( '0x83e36aaa1c7b99e2d3d07789f7b70fce46f0d45e' , 'PE Core Unit Multisig + PE Continuous Ops Multisig 2', 'Fixed', 'PE-001') + , ( '0x01d26f8c5cc009868a4bf66e268c17b057ff7a73' , 'GovAlpha Multisig', 'Fixed', 'GOV-001') + , ( '0xdcaf2c84e1154c8ddd3203880e5db965bff09b60' , 'Content Prod Multisig 1', 'Fixed', 'OLD-001') + , ( '0x6a0ce7dbb43fe537e3fd0be12dc1882393895237' , 'Content Prod Multisig 2', 'Fixed', 'OLD-001') + , ( '0x1ee3eca7aef17d1e74ed7c447ccba61ac76adba9' , 'GovCom Multisig + Continuous Operation 1', 'Fixed', 'COM-001') + , ( '0x99e1696a680c0d9f426be20400e468089e7fdb0f' , 'GovCom Multisig + Continuous Operation 2', 'Fixed', 'COM-001') + , ( '0x7800c137a645c07132886539217ce192b9f0528e' , 'Growth Emergency Multisig', 'Fixed', 'GRO-001') + , ( '0xb5eb779ce300024edb3df9b6c007e312584f6f4f' , 'SES Multisigs (Permanent Team, Incubation, Grants) 1', 'Fixed', 'SES-001') + , ( '0x7c09ff9b59baaebfd721cbda3676826aa6d7bae8' , 'SES Multisigs (Permanent Team, Incubation, Grants) 2', 'Fixed', 'SES-001') + , ( '0xf95eb8ec63d6059ba62b0a8a7f843c7d92f41de2' , 'SES Multisigs (Permanent Team, Incubation, Grants) 3', 'Fixed', 'SES-001') + , ( '0xd98ef20520048a35eda9a202137847a62120d2d9' , 'Risk Multisig', 'Fixed', 'RISK-001') + , ( '0x8cd0ad5c55498aacb72b6689e1da5a284c69c0c7' , 'DUX Team Wallet', 'Fixed', 'DUX-001') + , ( '0x6d348f18c88d45243705d4fdeeb6538c6a9191f1' , 'StarkNet Team Wallet', 'Fixed', 'SNE-001') + , ( '0x955993df48b0458a01cfb5fd7df5f5dca6443550' , 'Strategic Happiness Wallet 1', 'Fixed', 'SH-001') --prior primary wallet, still uses for smaller payments + , ( '0xc657ac882fb2d6ccf521801da39e910f8519508d' , 'Strategic Happiness Wallet 2', 'Fixed', 'SH-001') --multisig for most expenses + , ( '0xd740882b8616b50d0b317fdff17ec3f4f853f44f' , 'CES Team Wallet', 'Fixed', 'CES-001') + , ( '0x56349a38e09f36039f6af77309690d217beaf0bf' , 'DECO Ops + DECO Protocol Wallets 1', 'Fixed', 'DECO-001') + , ( '0xa78f1f5698f8d345a14d7323745c6c56fb8227f0' , 'DECO Ops + DECO Protocol Wallets 2', 'Fixed', 'DECO-001') + , ( '0x465aa62a82e220b331f5ecca697c20e89554b298' , 'SAS Team Wallet', 'Fixed', 'SAS-001') + , ( '0x124c759d1084e67b19a206ab85c4527fab26c342' , 'IS Ops Wallet', 'Fixed', 'IS-001') + , ( '0x7327aed0ddf75391098e8753512d8aec8d740a1f' , 'Data Insights Wallet', 'Fixed', 'DIN-001') + , ( '0x2dc0420a736d1f40893b9481d8968e4d7424bc0b' , 'TechOps', 'Fixed', 'TECH-001') + , ( '0x2b6180b413511ce6e3da967ec503b2cc19b78db6' , 'Oracle Gas Cost Multisig + Emergency Fund 1', 'Variable', 'GAS') + , ( '0x1a5b692029b157df517b7d21a32c8490b8692b0f' , 'Oracle Gas Cost Multisig + Emergency Fund 2', 'Variable', 'GAS') + , ( '0x53ccaa8e3bef14254041500acc3f1d4edb5b6d24' , 'Oracle Multisig, Emergency Multisig 1', 'Fixed', 'ORA-001') + , ( '0x2d09b7b95f3f312ba6ddfb77ba6971786c5b50cf' , 'Oracle Multisig, Emergency Multisig 2', 'Fixed', 'ORA-001') + , ( '0xf737c76d2b358619f7ef696cf3f94548fecec379' , 'Strategic Finance Multisig', 'Fixed', 'SF-001') + , ( '0x3d274fbac29c92d2f624483495c0113b44dbe7d2' , 'Events Multisig', 'Fixed', 'EVENTS-001') + , ( '0x34d8d61050ef9d2b48ab00e6dc8a8ca6581c5d63' , 'Foundation Operational Wallet', 'Fixed', 'DAIF-001') + , ( '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' , 'DS Pause Proxy', 'Variable', 'DSPP') + , ( '0x73f09254a81e1f835ee442d1b3262c1f1d7a13ff' , 'Interim Multisig', 'Fixed', 'INTERIM') + , ( '0x87acdd9208f73bfc9207e1f6f0fde906bca95cc6' , 'SES Multisig (Auditor)', 'Fixed', 'SES-001') + , ( '0x5a994d8428ccebcc153863ccda9d2be6352f89ad' , 'DUX Auditor Wallet', 'Fixed', 'DUX-001') + , ( '0x25307ab59cd5d8b4e2c01218262ddf6a89ff86da' , 'CES Auditor Wallet', 'Fixed', 'CES-001') + , ( '0xf482d1031e5b172d42b2daa1b6e5cbf6519596f7' , 'DECO Auditor Wallet', 'Fixed', 'DECO-001') + , ( '0xb1f950a51516a697e103aaa69e152d839182f6fe' , 'SAS Auditor Wallet', 'Fixed', 'SAS-001') + , ( '0xd1f2eef8576736c1eba36920b957cd2af07280f4' , 'IS Auditor Wallet', 'Fixed', 'IS-001') + , ( '0x96d7b01cc25b141520c717fa369844d34ff116ec' , 'RWF Auditor Wallet', 'Fixed', 'RWF-001') + , ( '0x1a3da79ee7db30466ca752de6a75def5e635b2f6' , 'TechOps Auditor Wallet', 'Fixed', 'TECH-001') + , ( '0x5f5c328732c9e52dfcb81067b8ba56459b33921f' , 'Foundation Reserves', 'Fixed', 'DAIF-001') + , ( '0x478c7ce3e1df09130f8d65a23ad80e05b352af62' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x926c21602fec84d6d0fa6450b40edba595b5c6e4' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0x37b375e3d418fbecba6b283e704f840ab32f3b3c' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x5a6007d17302238d63ab21407ff600a67765f982' , 'Techops Keepers', 'Variable', 'TECHOPS') + , ( '0xfb5e1d841bda584af789bdfabe3c6419140ec065' , 'Chainlink Keepers', 'Variable', 'CHAINLINK') + , ( '0xaefed819b6657b3960a8515863abe0529dfc444a' , 'Keep3r Keepers', 'Variable', 'KEEP3R') + , ( '0x0b5a34d084b6a5ae4361de033d1e6255623b41ed' , 'Gelato Keepers', 'Variable', 'GELATO') + , ( '0xc6a048550c9553f8ac20fbdeb06f114c27eccabb' , 'Gelato Keepers', 'Variable', 'GELATO') + --, ( '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' , 'DSS Blow', 'Variable', 'BLOW') + , ( '0xb386bc4e8bae87c3f67ae94da36f385c100a370a' , 'New Risk Multisig', 'Fixed', 'RISK-001') + ) AS t(wallet_address, wallet_label, varfix, code) +), __dbt__cte__fact_team_dai_burns_tx as ( + + +SELECT + tx_hash, + usr, + is_keeper +FROM ( + SELECT + d_c_b.tx_hash, + d_c_b.usr, + dao_wallet.wallet_label LIKE '% Keepers' as is_keeper + FROM __dbt__cte__fact_dai_burn as d_c_b + JOIN __dbt__cte__dim_dao_wallet dao_wallet ON d_c_b.usr = dao_wallet.wallet_address + + UNION ALL + + SELECT + tx_hash, + usr, + FALSE as is_keeper + FROM __dbt__cte__fact_dai_burn + WHERE usr = '0x0048fc4357db3c0f45adea433a07a20769ddb0cf' +) +GROUP BY tx_hash, usr, is_keeper +), __dbt__cte__fact_team_dai_burns as ( + + +WITH team_dai_burns_preunioned AS ( + SELECT vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.is_keeper, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_team_dai_burns_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.is_keeper +) + +SELECT ts, + hash, + (CASE WHEN is_keeper THEN 31710 ELSE 31730 END) AS code, + value -- increased equity +FROM team_dai_burns_preunioned + +UNION ALL + +SELECT ts, + hash, + 21120 AS code, + -value AS value -- decreased liability +FROM team_dai_burns_preunioned +), __dbt__cte__dim_maker_contracts as ( + + +SELECT * FROM (VALUES + ( 'FlapFlop', '0x4d95a049d5b0b7d32058cd3f2163015747522e99' ) + , ( 'FlapFlop', '0xa4f79bc4a5612bdda35904fdf55fc4cb53d1bff6' ) + , ( 'FlapFlop', '0x0c10ae443ccb4604435ba63da80ccc63311615bc' ) + , ( 'FlapFlop', '0xa41b6ef151e06da0e34b009b86e828308986736d' ) + , ( 'FlapFlop', '0xc4269cc7acdedc3794b221aa4d9205f564e27f0d' ) + , ( 'PSM', '0x961ae24a1ceba861d1fdf723794f6024dc5485cf' ) + , ( 'PSM', '0x204659b2fd2ad5723975c362ce2230fba11d3900' ) + , ( 'PSM', '0x89b78cfa322f6c5de0abceecab66aee45393cc5a' ) + ) AS t(contract_type, contract_address) +), __dbt__cte__fact_liquidation_excluded_tx as ( + + +SELECT DISTINCT t.tx_hash +FROM ethereum_flipside.core.fact_traces t +JOIN __dbt__cte__dim_maker_contracts c + ON t.from_address = c.contract_address + AND c.contract_type IN ('FlapFlop') +), __dbt__cte__fact_psm_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0xf2e7a5b83525c3017383deed19bb05fe34a62c27' + THEN 'PSM-GUSD-A' + WHEN usr = lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787') + THEN 'PSM-USDP-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0xf2e7a5b83525c3017383deed19bb05fe34a62c27', lower('0x8bF8b5C58bb57Ee9C97D0FEA773eeE042B10a787')) -- GUSD interest payment contract +), __dbt__cte__fact_rwa_yield_tx as ( + + +SELECT DISTINCT + tx_hash, + CASE + WHEN usr = '0x6c6d4be2223b5d202263515351034861dd9afdb6' THEN 'RWA009-A' + WHEN usr = '0xef1b095f700be471981aae025f92b03091c3ad47' THEN 'RWA007-A' + WHEN usr = '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf' THEN 'RWA014-A' + WHEN usr = lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf') THEN 'RWA015-A' + END AS ilk +FROM __dbt__cte__fact_dai_burn +WHERE usr IN ('0x6c6d4be2223b5d202263515351034861dd9afdb6', '0xef1b095f700be471981aae025f92b03091c3ad47', '0x71ec6d5ee95b12062139311ca1fe8fd698cbe0cf', lower('0xc27C3D3130563C1171feCC4F76C217Db603997cf')) +), __dbt__cte__fact_liquidation_revenue as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value +FROM ethereum_flipside.maker.fact_vat_move +WHERE + dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts) + AND src_address NOT IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' + ) -- aave v2 d3m, compound v2 d3m + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_liquidation_excluded_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_team_dai_burns_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_psm_yield_tx) + AND tx_hash NOT IN (SELECT tx_hash FROM __dbt__cte__fact_rwa_yield_tx) +GROUP BY block_timestamp, tx_hash +), __dbt__cte__fact_vow_fess as ( + + +SELECT + block_timestamp, + pc_dbt_db.prod.hex_to_int(topics[2])::double/1e45 as tab, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x697efb7800000000000000000000000000000000000000000000000000000000' +and contract_address = lower('0xA950524441892A31ebddF91d3cEEFa04Bf454466') +), __dbt__cte__fact_liquidation_expenses as ( + + +SELECT block_timestamp + , tx_hash + , SUM(tab) AS value +FROM __dbt__cte__fact_vow_fess +GROUP BY block_timestamp + , tx_hash +), __dbt__cte__fact_liquidation as ( + + +-- Liquidation Revenues +SELECT + ts, + hash, + 31210 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_revenue + +UNION ALL + +-- Liquidation Expenses +SELECT + block_timestamp as ts, + tx_hash as hash, + 31620 AS code, + -value AS value +FROM __dbt__cte__fact_liquidation_expenses + +UNION ALL + +SELECT + block_timestamp as ts, + tx_hash as hash, + 21120 AS code, + value AS value +FROM __dbt__cte__fact_liquidation_expenses +), __dbt__cte__dim_psms as ( + + +SELECT DISTINCT + u_address as psm_address, + ilk +FROM ethereum_flipside.maker.fact_vat_frob +WHERE ilk LIKE 'PSM-%' +), __dbt__cte__fact_trading_revenues as ( + + +WITH trading_revenues_preunion AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + psms.ilk, + SUM(CAST(vat.rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__dim_psms psms + ON vat.src_address = psms.psm_address + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + GROUP BY vat.block_timestamp, vat.tx_hash, psms.ilk +) + +SELECT + ts, + hash, + 31310 AS code, + value AS value, + ilk +FROM trading_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM trading_revenues_preunion +), __dbt__cte__fact_mkr_mints as ( + + +WITH mkr_mints_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_liquidation_excluded_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + AND vat.src_address NOT IN (SELECT contract_address FROM __dbt__cte__dim_maker_contracts WHERE contract_type = 'PSM') + GROUP BY vat.block_timestamp, vat.tx_hash +) + +SELECT + ts, + hash, + 31410 AS code, + value --increased equity +FROM mkr_mints_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM mkr_mints_preunioned +), __dbt__cte__fact_mkr_burns as ( + + +WITH mkr_burns_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY block_timestamp, tx_hash +) + +SELECT + ts, + hash, + 31420 AS code, + -value AS value --decreased equity +FROM mkr_burns_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value --increased liability +FROM mkr_burns_preunioned +), __dbt__cte__fact_vat_grab as ( + + +with logs as ( + SELECT + * + FROM + ethereum_flipside.core.fact_event_logs + WHERE + topics [0] in ( + '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c', + '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28', + '0x7bab3f4000000000000000000000000000000000000000000000000000000000', + '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' + ) +), +bark as( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x85258d09e1e4ef299ff3fc11e74af99563f022d21f3f940db982229dc2a3358c' +), +grab as( + SELECT + block_timestamp, + tx_hash, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7bab3f4000000000000000000000000000000000000000000000000000000000' +), +bite as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64)) + ELSE pc_dbt_db.prod.HEX_TO_INT(SUBSTR(data, 67, 64))::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0xa716da86bc1fb6d43d1493373f34d7a418b619681cd7b90f7ea667ba1489be28' +), +slip_raw as ( + SELECT + block_timestamp, + tx_hash, + CASE + WHEN topics [1] LIKE '%4449524543542%' + AND length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN -- Direct modules + pc_dbt_db.prod.HEX_TO_INT(topics [3]) + WHEN length(pc_dbt_db.prod.HEX_TO_INT(topics [3])) < 50 THEN pc_dbt_db.prod.HEX_TO_INT(topics [3])::numeric * -1 + END AS dart, + pc_dbt_db.prod.HEX_TO_UTF8(RTRIM(topics [1], 0)) as ilk + FROM + logs + WHERE + topics [0] = '0x7cdd3fde00000000000000000000000000000000000000000000000000000000' +), +slip as( + SELECT + block_timestamp, + tx_hash, + min(dart) as dart, + -- collision on certain tx where there are two calls to slip() + ilk + FROM + slip_raw + GROUP BY + 1, + 2, + 4 +), +agg as( + SELECT + distinct g.block_timestamp, + g.tx_hash as tx_hash, + coalesce(b.dart, t.dart, s.dart) as dart, + g.ilk as ilk + FROM + grab g + LEFT JOIN bark b on b.tx_hash = g.tx_hash + and g.ilk = b.ilk + LEFT JOIN bite t on t.tx_hash = g.tx_hash + and g.ilk = t.ilk + LEFT JOIN slip s on s.tx_hash = g.tx_hash + and g.ilk = s.ilk +) +select + * +from + agg +where + dart is not null +), __dbt__cte__fact_interest_accruals_1 as ( + + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart, + CAST(NULL AS NUMBER) AS rate +FROM ethereum_flipside.maker.fact_vat_frob +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + dart/1e18, + 0 AS rate +FROM __dbt__cte__fact_vat_grab +WHERE dart != 0 + +UNION ALL + +SELECT + ilk, + block_timestamp AS ts, + tx_hash AS hash, + CAST(NULL AS NUMBER) AS dart, + rate +FROM ethereum_flipside.maker.fact_vat_fold +WHERE rate != 0 +), __dbt__cte__fact_interest_accruals_2 as ( + + +SELECT + *, + SUM(dart) OVER (PARTITION BY ilk ORDER BY ts) AS cumulative_dart +FROM __dbt__cte__fact_interest_accruals_1 +), __dbt__cte__fact_interest_accruals_3 as ( + + +SELECT + ilk, + ts, + hash, + SUM(cumulative_dart * rate * 10) AS interest_accruals +FROM __dbt__cte__fact_interest_accruals_2 +WHERE rate IS NOT NULL +GROUP BY ilk, ts, hash +), __dbt__cte__dim_ilk_list_manual_input as ( + + +SELECT * FROM (VALUES + ('RWA009-A', NULL, NULL, 12310, 31170, NULL), + ('RWA007-A', NULL, NULL, 12310, 31172, NULL), + ('RWA015-A', NULL, NULL, 12310, 31172, NULL), + ('RWA014-A', NULL, NULL, 12310, 31180, NULL) +) AS t(ilk, begin_dt, end_dt, asset_code, equity_code, apr) +), __dbt__cte__fact_spot_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2], 0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x1a0b287e00000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x65C79fcB50Ca1594B025960e539eD7A9a6D434A3' +), __dbt__cte__fact_jug_file as ( + + + +SELECT + block_timestamp, + pc_dbt_db.prod.HEX_TO_UTF8(rtrim(topics[2],0)) as ilk, + tx_hash +FROM ethereum_flipside.core.fact_event_logs +where topics[0] = '0x29ae811400000000000000000000000000000000000000000000000000000000' +and contract_address ilike '0x19c0976f590D67707E62397C87829d896Dc0f1F1' +), __dbt__cte__fact_ilk_list as ( + + +SELECT DISTINCT ilk +FROM ( + SELECT ilk + FROM ethereum_flipside.maker.fact_vat_frob + + UNION + + SELECT ilk + FROM __dbt__cte__fact_spot_file + + UNION + + SELECT ilk + FROM __dbt__cte__fact_jug_file +) +), __dbt__cte__dim_ilk_list_labeled as ( + + +-- This table should contain your ilk mappings +-- You may need to adjust this based on your specific ilk categorizations +SELECT + ilk, + begin_dt, + end_dt, + asset_code, + equity_code +FROM __dbt__cte__dim_ilk_list_manual_input + +UNION ALL + +SELECT + ilk, + CAST(NULL AS DATE) AS begin_dt, + CAST(NULL AS DATE) AS end_dt, + CASE + WHEN ilk LIKE 'ETH-%' THEN 11110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 11120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 11130 + WHEN ilk LIKE 'GUNI%' THEN 11140 + WHEN ilk LIKE 'UNIV2%' THEN 11141 + WHEN ilk LIKE 'DIRECT%' THEN 11210 + WHEN ilk LIKE 'RWA%' THEN 12310 + WHEN ilk LIKE 'PSM%' THEN 13410 + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A') THEN 11510 + ELSE 11199 + END AS asset_code, + CASE + WHEN ilk LIKE 'ETH-%' THEN 31110 + WHEN ilk LIKE 'WBTC-%' OR ilk = 'RENBTC-A' THEN 31120 + WHEN ilk LIKE 'WSTETH-%' OR ilk LIKE 'RETH-%' OR ilk = 'CRVV1ETHSTETH-A' THEN 31130 + WHEN ilk LIKE 'GUNI%' THEN 31140 + WHEN ilk LIKE 'UNIV2%' THEN 31141 + WHEN ilk LIKE 'DIRECT%' THEN 31160 + WHEN ilk LIKE 'RWA%' THEN 31170 + WHEN ilk LIKE 'PSM%' THEN NULL + WHEN ilk IN ('USDC-A','USDC-B', 'USDT-A', 'TUSD-A','GUSD-A','PAXUSD-A') THEN 31190 + ELSE 31150 + END AS equity_code +FROM __dbt__cte__fact_ilk_list +WHERE ilk NOT IN (SELECT ilk FROM __dbt__cte__dim_ilk_list_manual_input) +AND ilk <> 'TELEPORT-FW-A' +), __dbt__cte__fact_interest_accruals as ( + + +WITH interest_accruals AS ( + SELECT + ia.ts, + ia.hash, + il.equity_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND ia.ts BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.equity_code, ia.ilk + + UNION ALL + + SELECT + ia.ts, + ia.hash, + il.asset_code AS code, + SUM(ia.interest_accruals) AS value, + ia.ilk + FROM __dbt__cte__fact_interest_accruals_3 ia + LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON ia.ilk = il.ilk + AND CAST(ia.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') + GROUP BY ia.ts, ia.hash, il.asset_code, ia.ilk +) + +SELECT * FROM interest_accruals +), __dbt__cte__fact_dai_mint as ( + + +SELECT + block_timestamp, + tx_hash, + to_address as usr, + raw_amount_precise as wad +FROM ethereum_flipside.core.fact_token_transfers +where from_address = '0x0000000000000000000000000000000000000000' +and lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') +), __dbt__cte__fact_opex_suck_hashes as ( + + +SELECT suck.tx_hash +FROM ethereum_flipside.maker.fact_vat_suck suck +WHERE suck.u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' + AND suck.v_address IN ( + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' + ) + AND suck.rad != 0 +GROUP BY 1 +), __dbt__cte__fact_opex as ( + + +WITH opex_preunion AS ( + SELECT + mints.block_timestamp AS ts, + mints.tx_hash AS hash, + CASE + WHEN dao_wallet.code IN ('GELATO', 'KEEP3R', 'CHAINLINK', 'TECHOPS') THEN 31710 --keeper maintenance expenses + WHEN dao_wallet.code = 'GAS' THEN 31630 -- oracle gas expenses + WHEN dao_wallet.code IS NOT NULL THEN 31720 --workforce expenses + ELSE 31740 --direct opex - when a suck operation is used to directly transfer DAI to a third party + END AS equity_code, + mints.wad / POW(10, 18) AS expense + FROM __dbt__cte__fact_dai_mint mints + JOIN __dbt__cte__fact_opex_suck_hashes opex + ON mints.tx_hash = opex.tx_hash + LEFT JOIN __dbt__cte__dim_dao_wallet dao_wallet + ON mints.usr = dao_wallet.wallet_address + LEFT JOIN ethereum_flipside.maker.fact_vat_frob AS frobs + ON mints.tx_hash = frobs.tx_hash + AND mints.wad::number/1e18 = frobs.dart + WHERE frobs.tx_hash IS NULL --filtering out draws from psm that happened in the same tx as expenses +) + +SELECT + ts, + hash, + equity_code AS code, + -CAST(expense AS DOUBLE) AS value --reduced equity +FROM opex_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + expense AS value --increased liability +FROM opex_preunion +), __dbt__cte__fact_dsr_expenses as ( + + +WITH dsr_expenses_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot +) + +SELECT + ts, + hash, + 31610 AS code, + -value AS value --reduced equity +FROM dsr_expenses_raw + +UNION ALL + +SELECT + ts, + hash, + 21110 AS code, + value AS value --increased liability +FROM dsr_expenses_raw +), __dbt__cte__fact_other_sin_outflows as ( + + +WITH other_sin_outflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE u_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow + AND v_address NOT IN ( + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7', -- Pot (DSR) + '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb', -- Pause Proxy + '0x2cc583c0aacdac9e23cb601fda8f1a0c56cdcb71', -- Old Pause Proxy + '0xa4c22f0e25c6630b2017979acf1f865e94695c4b' -- Old Pause Proxy + ) +) + +SELECT + ts, + hash, + 31520 AS code, + -value AS value --reduced equity +FROM other_sin_outflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + value AS value --increased liability +FROM other_sin_outflows_raw +), __dbt__cte__fact_sin_inflows as ( + + +WITH sin_inflows_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS value + FROM ethereum_flipside.maker.fact_vat_suck + WHERE v_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- Vow +) + +SELECT + ts, + hash, + 31510 AS code, + value AS value --increased equity +FROM sin_inflows_raw + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value --decreased liability +FROM sin_inflows_raw +), __dbt__cte__fact_dsr_flows as ( + + +WITH dsr_flows_preunioned AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(rad AS DOUBLE) AS dsr_flow + FROM ethereum_flipside.maker.fact_vat_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' -- Pot (DSR) contract +) + +SELECT + ts, + hash, + 21110 AS code, + dsr_flow AS value -- positive dsr flow increases interest-bearing dai liability +FROM dsr_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -dsr_flow AS value -- positive dsr flow decreases non-interest-bearing dai liability +FROM dsr_flows_preunioned +), __dbt__cte__dim_treasury_erc20s as ( + + +SELECT * FROM (VALUES + ('0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', '0xc18360217d8f7ab5e7c516566761ea12ce7f9d72', 18, 'ENS'), + ('0x4da27a545c0c5b758a6ba100e3a049001de870f5', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'stkAAVE'), + ('0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', 18, 'AAVE'), + ('0xc00e94cb662c3520282e6f5717214004a7f26888', '0xc00e94cb662c3520282e6f5717214004a7f26888', 18, 'COMP') +) AS t(contract_address, price_address, decimals, token) +), __dbt__cte__fact_treasury_flows as ( + + +WITH treasury_flows_preunioned AS ( + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token + + UNION ALL + + SELECT + evt.block_timestamp AS ts, + evt.tx_hash AS hash, + t.token, + -SUM(evt.RAW_AMOUNT_PRECISE / POW(10, t.decimals)) AS value + FROM ethereum_flipside.core.fact_token_transfers evt + JOIN __dbt__cte__dim_treasury_erc20s t + ON evt.contract_address = t.contract_address + WHERE evt.from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + AND evt.to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' + GROUP BY evt.block_timestamp, evt.tx_hash, t.token +) + +SELECT + ts, + hash, + 33110 AS code, + value, --increased equity + token +FROM treasury_flows_preunioned + +UNION ALL + +SELECT + ts, + hash, + 14620 AS code, + value, --increased assets + token +FROM treasury_flows_preunioned +), __dbt__cte__fact_loan_actions_2 as ( + + +SELECT + ilk, + ts, + hash, + dart, + COALESCE(POW(10,27) + SUM(rate) OVER(PARTITION BY ilk ORDER BY ts ASC), POW(10,27)) AS rate +FROM __dbt__cte__fact_interest_accruals_1 +WHERE ilk != 'TELEPORT-FW-A' +), __dbt__cte__fact_loan_actions as ( + + + +SELECT + la.ts, + la.hash, + il.asset_code AS code, + SUM(la.dart) AS value, + la.ilk +FROM __dbt__cte__fact_loan_actions_2 la +LEFT JOIN __dbt__cte__dim_ilk_list_labeled il + ON la.ilk = il.ilk + AND CAST(la.ts AS DATE) BETWEEN COALESCE(il.begin_dt, '2000-01-01') AND COALESCE(il.end_dt, '2222-12-31') +GROUP BY la.ts, la.hash, il.asset_code, la.ilk +-- HAVING SUM(la.dart * la.rate) / POW(10, 45) != 0 + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + SUM(dart) AS value, + ilk +FROM __dbt__cte__fact_loan_actions_2 +GROUP BY ts, hash, ilk +HAVING SUM(dart) != 0 +), __dbt__cte__fact_d3m_revenues as ( + + +WITH d3m_revenues_preunion AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + CASE + WHEN src_address = '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a' THEN 'DIRECT-AAVEV2-DAI' + WHEN src_address = '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' THEN 'DIRECT-COMPV2-DAI' + END AS ilk, + SUM(CAST(rad AS DOUBLE)) AS value + FROM ethereum_flipside.maker.fact_vat_move + WHERE src_address IN ( + '0xa13c0c8eb109f5a13c6c90fc26afb23beb3fb04a', -- aave d3m + '0x621fe4fde2617ea8ffade08d0ff5a862ad287ec2' -- compound v2 d3m + ) + AND dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY 1, 2, 3 + + UNION ALL + + SELECT + block_timestamp AS ts, + tx_hash AS hash, + ilk, + SUM(dart) / 1e18 AS value + FROM __dbt__cte__fact_vat_grab + WHERE dart > 0 + GROUP BY 1, 2, 3 +) + +SELECT + ts, + hash, + 31160 AS code, + value AS value, + ilk +FROM d3m_revenues_preunion + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, + ilk +FROM d3m_revenues_preunion +), __dbt__cte__fact_psm_yield as ( + + +WITH psm_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + INNER JOIN __dbt__cte__fact_psm_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + 31180 AS code, + value, --increased equity + ilk +FROM psm_yield_preunioned + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM psm_yield_preunioned +), __dbt__cte__fact_rwa_yield as ( + + +WITH rwa_yield_preunioned AS ( + SELECT + vat.block_timestamp AS ts, + vat.tx_hash AS hash, + tx.ilk, + SUM(vat.rad) AS value + FROM ethereum_flipside.maker.fact_vat_move vat + JOIN __dbt__cte__fact_rwa_yield_tx tx + ON vat.tx_hash = tx.tx_hash + WHERE vat.dst_address = '0xa950524441892a31ebddf91d3ceefa04bf454466' -- vow + GROUP BY vat.block_timestamp, vat.tx_hash, tx.ilk +) + +SELECT + ts, + hash, + COALESCE(ilm.equity_code, 31170) AS code, --default to off-chain private credit + value, --increased equity + rwy.ilk +FROM rwa_yield_preunioned rwy +LEFT JOIN __dbt__cte__dim_ilk_list_manual_input ilm + USING (ilk) + +UNION ALL + +SELECT + ts, + hash, + 21120 AS code, + -value AS value, --decreased liability + ilk +FROM rwa_yield_preunioned +), __dbt__cte__fact_dssvesttransferrable_create as ( + + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) = '0xdb64ff8f' +) +SELECT + block_timestamp, + tx_hash, + '0x' || SUBSTR(raw_input_data, 25, 40) as _usr, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _tot, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 129, 64)) as _bgn, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 193, 64)) as _tau, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 257, 64)) as _eta, + ROW_NUMBER() OVER (ORDER BY block_timestamp, trace_index) AS output_id +FROM raw +), __dbt__cte__fact_mkr_vest_creates as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + output_id, + _bgn, + _tau, + _tot::number / 1e18 AS total_mkr +FROM __dbt__cte__fact_dssvesttransferrable_create +), __dbt__cte__fact_dssvesttransferrable_yank as ( + + +with raw as ( +SELECT + trace_index, + identifier, + block_timestamp, + tx_hash, + SUBSTR(input, 11) as raw_input_data +FROM ethereum_flipside.core.fact_traces +where to_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and left(input, 10) in ('0x509aaa1d', '0x26e027f1') +) +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 1, 64)) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(SUBSTR(raw_input_data, 65, 64)) as _end +FROM raw +), __dbt__cte__fact_mkr_yanks as ( + + +WITH yanks_raw AS ( + SELECT + block_timestamp AS ts, + tx_hash AS hash, + _end, + _id + FROM __dbt__cte__fact_dssvesttransferrable_yank +), + +yanks_with_context AS ( + SELECT + y.*, + c._bgn, + c._tau, + c.total_mkr, + CASE + WHEN DATEADD(second, y._end, '1970-01-01'::timestamp) > y.ts + THEN DATEADD(second, y._end, '1970-01-01'::timestamp) + ELSE y.ts + END AS end_time + FROM yanks_raw y + LEFT JOIN __dbt__cte__fact_mkr_vest_creates c + ON y._id = c.output_id +) + +SELECT + ts, + hash, + _id, + TO_TIMESTAMP(CAST(_bgn AS VARCHAR)) AS begin_time, + end_time, + _tau, + total_mkr AS original_total_mkr, + (1 - (DATEDIFF(second, '1970-01-01'::timestamp, end_time) - _bgn) / _tau) * total_mkr AS yanked_mkr +FROM yanks_with_context +), __dbt__cte__fact_mkr_vest_creates_yanks as ( + + +-- MKR Vest Creates +SELECT + ts, + hash, + 32110 AS code, -- MKR expense realized + -total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts increases + total_mkr AS value +FROM __dbt__cte__fact_mkr_vest_creates + +UNION ALL + +-- MKR Yanks +SELECT + ts, + hash, + 32110 AS code, -- MKR expense reversed (yanked) + yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks + +UNION ALL + +SELECT + ts, + hash, + 33110 AS code, -- MKR in vest contracts yanked (decreases) + -yanked_mkr AS value +FROM __dbt__cte__fact_mkr_yanks +), __dbt__cte__fact_pause_proxy_mkr_trxns_raw as ( + + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + CAST(raw_amount_precise AS DOUBLE) AS expense, + to_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND from_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND to_address != '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- excluding transfers to itself + +UNION ALL + +SELECT + block_timestamp AS ts, + tx_hash AS hash, + -CAST(raw_amount_precise AS DOUBLE) AS expense, + from_address AS address +FROM ethereum_flipside.core.fact_token_transfers +WHERE contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' -- MKR token address + AND to_address = '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb' -- pause proxy + AND from_address NOT IN ('0x8ee7d9235e01e6b42345120b5d270bdb763624c7', '0xbe8e3e3618f7474f8cb1d074a26affef007e98fb') -- excluding initial transfers in and transfers from itself +), __dbt__cte__fact_dssvesttransferrable_vest as ( + + + +SELECT + block_timestamp, + tx_hash, + PC_DBT_DB.PROD.HEX_TO_INT(topics[1]) as _id, + PC_DBT_DB.PROD.HEX_TO_INT(data) as _max_amt +FROM ethereum_flipside.core.fact_event_logs +where contract_address = lower('0x6D635c8d08a1eA2F1687a5E46b666949c977B7dd') +and topics[0] = '0xa2906882572b0e9dfe893158bb064bc308eb1bd87d1da481850f9d17fc293847' +), __dbt__cte__fact_mkr_vest_tx as ( + + +SELECT + tx_hash AS hash, + 1 AS vested +FROM __dbt__cte__fact_dssvesttransferrable_vest +), __dbt__cte__fact_pause_proxy_mkr_trxns as ( + + +WITH pause_proxy_mkr_trxns_preunion AS ( + SELECT + raw.ts, + raw.hash, + CASE + WHEN vest.vested IS NOT NULL THEN 32120 -- reserved surplus depletion for vested transactions + ELSE 32110 -- direct protocol surplus impact for non-vested transactions + END AS code, + -raw.expense / 1e18 AS value + FROM __dbt__cte__fact_pause_proxy_mkr_trxns_raw raw + LEFT JOIN __dbt__cte__fact_mkr_vest_tx vest + ON raw.hash = vest.hash +) + +SELECT + ts, + hash, + code, + value +FROM pause_proxy_mkr_trxns_preunion + +UNION ALL + +SELECT + ts, + hash, + 32210 AS code, -- MKR contra equity + -value +FROM pause_proxy_mkr_trxns_preunion +), __dbt__cte__fact_m2m_levels as ( + + +WITH treasury_tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'DAI' AS token, '0x6b175474e89094c44da98b954eedeac495271d0f' AS price_address +) + +SELECT + p.hour AS ts, + tt.token, + CASE WHEN tt.token = 'DAI' THEN 1 ELSE p.price END AS price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN treasury_tokens tt ON p.token_address = tt.price_address +WHERE p.hour >= '2019-11-01' + AND EXTRACT(HOUR FROM p.hour) = 23 +), __dbt__cte__fact_token_prices as ( + + +WITH tokens AS ( + SELECT token, price_address + FROM __dbt__cte__dim_treasury_erc20s + + UNION ALL + + SELECT 'MKR' AS token, '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' AS price_address + + UNION ALL + + SELECT 'ETH' AS token, '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' AS price_address +) + +SELECT + p.hour AS ts, + t.token, + p.price +FROM ethereum_flipside.price.ez_prices_hourly p +INNER JOIN tokens t ON lower(p.token_address) = lower(t.price_address) +WHERE p.hour >= '2019-11-01' + +UNION ALL + +SELECT + TIMESTAMP '2021-11-09 00:02' AS ts, + 'ENS' AS token, + 44.3 AS price +), __dbt__cte__fact_eth_prices as ( + + +SELECT * +FROM __dbt__cte__fact_token_prices +WHERE token = 'ETH' +), __dbt__cte__fact_with_prices as ( + + +WITH unioned_data AS ( + SELECT ts, hash, code, value, 'DAI' AS token, 'Returned Workforce Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_team_dai_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Liquidation Revenues/Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_liquidation + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Trading Revenues' AS descriptor, ilk FROM __dbt__cte__fact_trading_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Mints' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_mints + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'MKR Burns' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_mkr_burns + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Interest Accruals' AS descriptor, ilk FROM __dbt__cte__fact_interest_accruals + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'OpEx' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_opex + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Expenses' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_expenses + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Other Sin Outflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_other_sin_outflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Sin Inflows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_sin_inflows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'DSR Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_dsr_flows + UNION ALL + SELECT ts, hash, code, value, token, 'Treasury Flows' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_treasury_flows + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'Loan Draws/Repays' AS descriptor, ilk FROM __dbt__cte__fact_loan_actions + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'D3M Revenues' AS descriptor, ilk FROM __dbt__cte__fact_d3m_revenues + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'PSM Yield' AS descriptor, ilk FROM __dbt__cte__fact_psm_yield + UNION ALL + SELECT ts, hash, code, value, 'DAI' AS token, 'RWA Yield' AS descriptor, ilk FROM __dbt__cte__fact_rwa_yield + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Vest Creates/Yanks' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_mkr_vest_creates_yanks + UNION ALL + SELECT ts, hash, code, value, 'MKR' AS token, 'MKR Pause Proxy Trxns' AS descriptor, NULL AS ilk FROM __dbt__cte__fact_pause_proxy_mkr_trxns + UNION ALL + SELECT ts, NULL AS hash, 19999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 29999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels + UNION ALL + SELECT ts, NULL AS hash, 39999 AS code, 0 AS value, token, 'Currency Translation to Presentation Token' AS descriptor, CAST(NULL AS VARCHAR) AS ilk FROM __dbt__cte__fact_m2m_levels +) + +SELECT + coa.code, + u.ts, + u.hash, + u.value, + u.token, + u.descriptor, + u.ilk, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END AS dai_value, + u.value * CASE WHEN u.token = 'DAI' THEN 1 ELSE tp.price END / ep.price AS eth_value, + ep.price AS eth_price +FROM __dbt__cte__dim_chart_of_accounts coa +LEFT JOIN unioned_data u USING (code) +LEFT JOIN __dbt__cte__fact_token_prices tp + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', tp.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM tp.ts) + AND u.token = tp.token +LEFT JOIN __dbt__cte__fact_eth_prices ep + ON DATE_TRUNC('day', u.ts) = DATE_TRUNC('day', ep.ts) + AND EXTRACT(HOUR FROM u.ts) = EXTRACT(HOUR FROM ep.ts) +WHERE u.value IS NOT NULL +), __dbt__cte__fact_cumulative_sums as ( + + +SELECT + wp.*, + SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_token_value, + SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_dai_value, + SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS cumulative_ale_eth_value, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_value_if_converted_all_once, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_value_if_converted_all_once, + m2m.price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.dai_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS dai_m2m, + m2m.price/wp.eth_price * SUM(wp.value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) - SUM(wp.eth_value) OVER (PARTITION BY SUBSTRING(CAST(wp.code AS VARCHAR), 1, 1), wp.token ORDER BY wp.ts) AS eth_m2m +FROM __dbt__cte__fact_with_prices wp +LEFT JOIN __dbt__cte__fact_m2m_levels m2m + ON wp.token = m2m.token + AND DATE_TRUNC('day', wp.ts) = DATE_TRUNC('day', m2m.ts) + -- AND EXTRACT(HOUR FROM wp.ts) = EXTRACT(HOUR FROM m2m.ts) +), __dbt__cte__fact_incremental_m2m as ( + + +SELECT + *, + dai_m2m - COALESCE(LAG(dai_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_dai_m2m, + eth_m2m - COALESCE(LAG(eth_m2m) OVER (PARTITION BY SUBSTRING(CAST(code AS VARCHAR), 1, 1), token ORDER BY ts), 0) AS incremental_eth_m2m +FROM __dbt__cte__fact_cumulative_sums +WHERE cumulative_ale_token_value > 0 + AND SUBSTRING(CAST(code AS VARCHAR), -4) = '9999' +), __dbt__cte__fact_final as ( + + +-- Non-M2M entries +SELECT + code, + ts, + hash, + value, + token, + descriptor, + ilk, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE dai_value END AS dai_value, + CASE WHEN descriptor = 'MKR Vest Creates/Yanks' THEN 0 ELSE eth_value END AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_with_prices +WHERE SUBSTRING(CAST(code AS VARCHAR), -4) <> '9999' + +UNION ALL + +-- M2M entries +SELECT + code, + ts, + hash, + NULL AS value, + token, + descriptor, + ilk, + incremental_dai_m2m AS dai_value, + incremental_eth_m2m AS eth_value, + DATE(ts) AS dt +FROM __dbt__cte__fact_incremental_m2m + +-- Final filter +WHERE (COALESCE(value, 0) <> 0 OR dai_value <> 0 OR eth_value <> 0) +), __dbt__cte__fact_accounting_agg as ( + + +with + chart_of_accounts as ( + select cast(code as varchar) as account_id from __dbt__cte__dim_chart_of_accounts -- CoA simplified + ), + periods as ( + select + distinct(date(hour)) as date + from ethereum_flipside.price.ez_prices_hourly + where symbol = 'MKR' + ), + accounting as ( + select + date_trunc('day', acc.ts) as period, + cast(acc.code as varchar) as account_id, + acc.dai_value as usd_value, + acc.value as token_value, + token + from __dbt__cte__fact_final acc + ), + accounting_agg as ( + select + date_trunc('day', period) as period, + account_id, + token, + sum(coalesce(token_value,0)) as token_sum_value, + sum(coalesce(usd_value, 0)) AS usd_sum_value + from accounting + group by 1,2,3 + ), + accounting_liq as ( + select distinct + period, + token, + sum(coalesce(token_sum_value, 0)) over (partition by date_trunc('day', period)) as token_liq_cum, + sum(coalesce(usd_sum_value, 0)) over (partition by date_trunc('day', period)) as usd_liq_cum + from accounting_agg + where account_id in ( + '31210', -- Liquidation Revenues + '31620' -- Liquidation Expenses + ) + ) +select + a.period, + a.account_id, + a.token, + case + when account_id = '31210' then iff(usd_liq_cum > 0, usd_liq_cum, 0) + when account_id = '31620' then iff(usd_liq_cum > 0, 0, usd_liq_cum) + else coalesce(usd_sum_value, 0) + end as sum_value, + case + when account_id = '31210' then iff(token_liq_cum > 0, token_liq_cum, 0) + when account_id = '31620' then iff(token_liq_cum > 0, 0, token_liq_cum) + else coalesce(token_sum_value,0) + end as sum_value_token +from accounting_agg a +left join accounting_liq l + on a.period = l.period + and a.token = l.token +), __dbt__cte__fact_maker_fees_revenue_expenses_by_token as ( + + + +select + date(period) as date, + token, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180')-- Stability fees + then sum_value_token + end + ) as stability_fees, + sum(case + when account_id like '313%' -- Trading fees + then sum_value_token + end + ) as trading_fees, + sum(case + when + account_id like '311%' AND account_id NOT IN ('31172', '31173', '31180') -- Stability fees + or account_id like '313%' -- Trading fees + then sum_value_token + end + ) as fees, + sum( + case + when account_id like '311%' -- Gross Interest Revenues + then sum_value_token + end + ) as primary_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + then sum_value_token + end + ) as other_revenue, + sum( + case + when account_id like '312%' -- Liquidation Revenues + or account_id like '313%' -- Trading Revenues + or account_id like '311%' -- Gross Interest Revenues + then sum_value_token + end + ) as protocol_revenue, + sum( + case + when account_id = '31410' -- MKR Mints + then sum_value_token + end + ) as token_incentives, + sum( + case + when account_id like '316%' -- Direct Expenses + then -sum_value_token + end + ) as direct_expenses, + sum( + case + when account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + then -sum_value_token + end + ) as operating_expenses, + sum( + case + when account_id like '316%' -- Direct Expenses + or account_id like '317%' -- Indirect Expenses + or account_id like '321%' -- MKR Token Expenses + or account_id like '331%' -- DS Pause Proxy + or account_id = '31410' + then -sum_value_token + end + ) as total_expenses +from __dbt__cte__fact_accounting_agg +group by 1, 2 +), __dbt__cte__fact_system_surplus_dai as ( + + +with bs_equity as ( + select + date(ts) as date, + sum(case when acc.code not like '33%' and acc.code not like '39%' then acc.value else 0 end) as surplus + from __dbt__cte__fact_final acc + where code like '3%' + and acc.code not like '33%' and acc.code not like '39%' + group by 1 +) +select + date, + sum(surplus) over (order by date) as surplus, + 'DAI' as token +from bs_equity +), __dbt__cte__fact_treasury_mkr as ( + + +with prices as ( + SELECT + date(hour) as date, + AVG(price) as price + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' + GROUP BY 1 +), +mkr_balance_cte as ( + SELECT + date(block_timestamp) as date, + MAX_BY(balance,date(block_timestamp))/1e18 as mkr_balance, + user_address + FROM ethereum_flipside.core.fact_token_balances + where user_address in (lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB'), lower('0x8EE7D9235e01e6B42345120b5d270bdB763624C7')) + and contract_address = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' + GROUP BY 1, 3 +), +date_sequence AS ( + SELECT DISTINCT date + FROM prices +), +user_addresses AS ( + SELECT DISTINCT user_address + FROM mkr_balance_cte +), +all_dates_users AS ( + SELECT + d.date, + u.user_address + FROM date_sequence d + CROSS JOIN user_addresses u +), +joined_balances AS ( + SELECT + a.date, + a.user_address, + p.price, + m.mkr_balance AS balance_token + FROM all_dates_users a + LEFT JOIN prices p ON p.date = a.date + LEFT JOIN mkr_balance_cte m ON m.date = a.date AND m.user_address = a.user_address +) +,filled_balances AS ( + SELECT + date, + user_address, + price, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token, + COALESCE( + user_address, + LAST_VALUE(user_address IGNORE NULLS) OVER ( + PARTITION BY user_address + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS filled_user_address + FROM joined_balances +) + +SELECT + date, + SUM(balance_token) amount_mkr, + SUM(balance_token *price) as amount_usd, + 'MKR' as token +FROM filled_balances +GROUP BY date +), __dbt__cte__fact_uni_lp_supply as ( + + +WITH token_transfers AS ( + SELECT + date(block_timestamp) AS date, + from_address, + to_address, + raw_amount_precise::number / 1e18 AS amount + FROM ethereum_flipside.core.fact_token_transfers + WHERE contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') +), +daily_mints AS ( + SELECT + date, + SUM(amount) AS daily_minted + FROM token_transfers + WHERE from_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_burns AS ( + SELECT + date, + SUM(amount) AS daily_burned + FROM token_transfers + WHERE to_address = LOWER('0x0000000000000000000000000000000000000000') + GROUP BY date +), +daily_net_supply AS ( + SELECT + d.date_day as date, + COALESCE(m.daily_minted, 0) AS daily_minted, + COALESCE(b.daily_burned, 0) AS daily_burned, + COALESCE(m.daily_minted, 0) - COALESCE(b.daily_burned, 0) AS daily_net + FROM ethereum_flipside.core.dim_dates d + LEFT JOIN daily_mints m ON d.date_day = m.date + LEFT JOIN daily_burns b ON d.date_day = b.date + WHERE date_day < to_date(sysdate()) +), +cumulative_supply AS ( + SELECT + date, + daily_minted, + daily_burned, + daily_net, + SUM(daily_net) OVER ( + ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS circulating_supply + FROM daily_net_supply +) +SELECT + date, + circulating_supply +FROM cumulative_supply +ORDER BY date +), __dbt__cte__fact_uni_lp_value as ( + + +with token_balances as ( + SELECT + DATE(block_timestamp) as date, + case + when contract_address = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') then 'DAI' + when contract_address = lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2') then 'MKR' + END AS token, + MAX_BY(balance, block_timestamp)::number / 1e18 as balance + FROM + ethereum_flipside.core.fact_token_balances + WHERE + user_address = lower('0x517F9dD285e75b599234F7221227339478d0FcC8') + AND contract_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 2 +), +prices as ( + SELECT + date(hour) as date, + MAX_BY(price, hour) as price, + symbol + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE + token_address in ( + lower('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) + GROUP BY + 1, + 3 +), +daily_prices_by_token as ( + SELECT + b.date, + p.price * b.balance as balance_usd, + b.token + FROM + token_balances b + LEFT JOIN prices p on p.date = b.date + AND p.symbol = b.token +) +SELECT + date, + sum(balance_usd) as amount_usd +FROM + daily_prices_by_token +GROUP BY 1 +ORDER BY 1 DESC +), __dbt__cte__fact_treasury_lp_balances as ( + + + +with +dates as ( + SELECT + DISTINCT date(hour) as date + FROM ethereum_flipside.price.ez_prices_hourly + WHERE symbol = 'MKR' +) +, treasury_balance as ( + select + date(block_timestamp) as date, + MAX(balance)::number / 1e18 as treasury_lp_balance + from + ethereum_flipside.core.fact_token_balances + where + contract_address = LOWER('0x517F9dD285e75b599234F7221227339478d0FcC8') + and user_address = lower('0xBE8E3e3618f7474F8cB1d074A26afFef007E98FB') + GROUP BY + 1 +), +value_per_token_cte as ( + SELECT + s.date, + v.amount_usd / s.circulating_supply as value_per_token_usd, + s.circulating_supply + FROM + __dbt__cte__fact_uni_lp_supply s + LEFT JOIN __dbt__cte__fact_uni_lp_value v ON v.date = s.date + where + value_per_token_usd is not null +) +, filled_data as ( + SELECT + d.date, + LAST_VALUE(t.treasury_lp_balance IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as amount_native, + LAST_VALUE(v.value_per_token_usd IGNORE NULLS) OVER ( + ORDER BY d.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) as value_per_token_usd + FROM + dates d + LEFT JOIN treasury_balance t ON d.date = t.date + LEFT JOIN value_per_token_cte v ON d.date = v.date +) +SELECT + date, + amount_native, + value_per_token_usd, + amount_native * value_per_token_usd as amount_usd, + 'UNI V2: DAI-MKR' as token +FROM + filled_data +WHERE amount_native is not null +ORDER BY + date +), __dbt__cte__dim_gem_join_addresses as ( + + +with join_addresses as ( + select + '0x' || SUBSTR(topics [1], 27) as join_address, + * + from + ethereum_flipside.core.fact_event_logs + where + topics [0] = lower( + '0x65fae35e00000000000000000000000000000000000000000000000000000000' + ) + and contract_address = lower('0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b') +) +, contract_creation_hashes as( + select + address as join_address, + created_tx_hash + from + ethereum_flipside.core.dim_contracts + where + address in (SELECT lower(join_address) FROM join_addresses) +) +SELECT + '0x' || RIGHT(t.input, 40) as gem_address, + h.join_address +FROM + contract_creation_hashes h +LEFT JOIN ethereum_flipside.core.fact_traces t ON h.created_tx_hash = t.tx_hash +), __dbt__cte__fact_maker_tvl_by_asset as ( + + + +WITH weth AS ( + SELECT DISTINCT + m.symbol, + g.gem_address, + g.join_address, + m.decimals + FROM + __dbt__cte__dim_gem_join_addresses g + LEFT JOIN ethereum_flipside.price.ez_asset_metadata m ON g.gem_address = m.token_address + WHERE + symbol IS NOT NULL +), +daily_balances AS ( + SELECT + DATE(t.block_timestamp) AS date, + t.user_address, + t.contract_address, + w.symbol, + w.decimals, + AVG(t.balance / POWER(10, w.decimals)) AS amount_native + FROM + ethereum_flipside.core.fact_token_balances t + JOIN weth w ON t.user_address = w.join_address AND t.contract_address = w.gem_address + GROUP BY 1, 2, 3, 4, 5 +), +date_series AS ( + SELECT date_day as date + FROM ethereum_flipside.core.dim_dates + WHERE date_day < to_date(sysdate()) +), +all_combinations AS ( + SELECT DISTINCT + d.date, + db.user_address, + db.contract_address + FROM + date_series d + CROSS JOIN (SELECT DISTINCT user_address, contract_address FROM daily_balances) db +), +forward_filled_balances AS ( + SELECT + ac.date, + ac.user_address, + ac.contract_address, + LAST_VALUE(db.symbol IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS symbol, + LAST_VALUE(db.decimals IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS decimals, + LAST_VALUE(db.amount_native IGNORE NULLS) OVER ( + PARTITION BY ac.user_address, ac.contract_address + ORDER BY ac.date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) AS amount_native + FROM + all_combinations ac + LEFT JOIN daily_balances db + ON ac.date = db.date + AND ac.user_address = db.user_address + AND ac.contract_address = db.contract_address +), +usd_values AS ( + SELECT + ffb.date, + ffb.user_address, + ffb.contract_address, + ffb.symbol, + ffb.amount_native, + ffb.amount_native * COALESCE( + p.price, + FIRST_VALUE(p.price) OVER ( + PARTITION BY ffb.contract_address + ORDER BY CASE WHEN p.price IS NOT NULL THEN ffb.date END DESC + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS amount_usd + FROM + forward_filled_balances ffb + LEFT JOIN ethereum_flipside.price.ez_prices_hourly p + ON p.hour = DATE_TRUNC('day', ffb.date) + AND p.token_address = ffb.contract_address + WHERE + ffb.amount_native IS NOT NULL +) +SELECT + date, + SUM(amount_native) AS total_amount_native, + symbol, + SUM(amount_usd) AS total_amount_usd +FROM + usd_values +GROUP BY 1, 3 +ORDER BY 1 +), __dbt__cte__fact_dai_eth_supply as ( + + +with eth_raw as( + select + block_timestamp, + CASE + WHEN lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN AMOUNT + WHEN lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') THEN - AMOUNT + END AS amount + from + ethereum_flipside.core.ez_token_transfers + where + lower(contract_address) = lower('0x6B175474E89094C44Da98b954EedeAC495271d0F') + and ( + lower(FROM_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + or lower(TO_ADDRESS) = lower('0x0000000000000000000000000000000000000000') + ) +), +daily_amounts AS ( + SELECT + date(block_timestamp) as date, + SUM(amount) as daily_amount + FROM eth_raw + GROUP BY date(block_timestamp) +) +SELECT + date, + SUM(daily_amount) OVER (ORDER BY date) as dai_supply, + 'Ethereum' as chain +FROM daily_amounts +ORDER BY date DESC +), __dbt__cte__fact_dai_dsr_supply as ( + + + +WITH + deltas AS ( + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + CAST(rad AS DOUBLE) AS delta, + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE dst_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) AS dt, + - CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_move + WHERE src_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + UNION ALL + SELECT + '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AS wallet, + DATE(block_timestamp) as dt, + CAST(rad AS DOUBLE) AS delta + FROM + ethereum_flipside.maker.fact_VAT_suck + WHERE v_address = '0x197e90f9fad81970ba7976f33cbd77088e5d7cf7' +) +, daily_supply as ( + SELECT + dt, + sum(delta) as dai_supply + FROM deltas + GROUP BY 1 +) +SELECT + dt as date, + SUM(dai_supply) OVER (ORDER BY dt) as dai_supply, + 'Ethereum' as chain +FROM daily_supply +), __dbt__cte__fact_dai_supply_by_chain as ( + + + +select * from __dbt__cte__fact_dai_eth_supply +union all +select * from __dbt__cte__fact_dai_dsr_supply +), __dbt__cte__fact_dai_supply as ( + + + + +SELECT date, SUM(dai_supply) as outstanding_supply FROM __dbt__cte__fact_dai_supply_by_chain +GROUP BY 1 +), fees_revenue_expenses AS ( + SELECT + date, + token, + stability_fees, + trading_fees, + fees, + primary_revenue, + other_revenue, + protocol_revenue, + token_incentives, + direct_expenses, + operating_expenses, + total_expenses + FROM __dbt__cte__fact_maker_fees_revenue_expenses_by_token + ) + , treasury AS ( + SELECT + date, + token, + surplus as treasury + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + token, + amount_mkr as treasury + FROM + __dbt__cte__fact_treasury_mkr + UNION ALL + SELECT + date, + token, + amount_native as treasury + FROM + __dbt__cte__fact_treasury_lp_balances + ) + , treasury_native AS ( + SELECT date, token, amount_mkr as treasury_native FROM __dbt__cte__fact_treasury_mkr + ) + , net_treasury AS ( + SELECT + date, + 'DAI' as token, + surplus as net_treasury + FROM + __dbt__cte__fact_system_surplus_dai + UNION ALL + SELECT + date, + token, + amount_native as net_treasury + FROM + __dbt__cte__fact_treasury_lp_balances + ) + , tvl_metrics AS ( + SELECT + date, + symbol as token, + total_amount_native as tvl + FROM __dbt__cte__fact_maker_tvl_by_asset + ) + , outstanding_supply AS ( + SELECT date, 'DAI' as token, outstanding_supply FROM __dbt__cte__fact_dai_supply + ) + + +select + date + , token + , COALESCE(stability_fees,0) as stability_fees + , COALESCE(trading_fees, 0) AS trading_fees + , COALESCE(fees, 0) AS fees + , COALESCE(primary_revenue, 0) AS primary_revenue + , COALESCE(other_revenue, 0) AS other_revenue + , COALESCE(protocol_revenue, 0) AS protocol_revenue + , COALESCE(token_incentives, 0) AS token_incentives + , COALESCE(operating_expenses, 0) AS operating_expenses + , COALESCE(direct_expenses, 0) AS direct_expenses + , COALESCE(total_expenses, 0) AS total_expenses + , COALESCE(protocol_revenue - total_expenses, 0) AS protocol_earnings + , COALESCE(treasury, 0) as treasury_value + , COALESCE(treasury_native,0) as treasury_native + , COALESCE(net_treasury, 0) as net_treasury + , COALESCE(tvl, 0) as net_deposits + , COALESCE(outstanding_supply,0) as outstanding_supply + , COALESCE(tvl, 0) as tvl +FROM fees_revenue_expenses +full join treasury using (date, token) +full join treasury_native using (date, token) +full join net_treasury using (date, token) +full join tvl_metrics using (date, token) +full join outstanding_supply using (date, token) +where date < to_date(sysdate()) From e3b0c54155277cd87e9b157c7e1c3f86ec2dd6ac Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:44:19 -0400 Subject: [PATCH 149/213] Adding Hex to UTF8 UDF (#400) --- udfs/hex_to_utf8.sql | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 udfs/hex_to_utf8.sql diff --git a/udfs/hex_to_utf8.sql b/udfs/hex_to_utf8.sql new file mode 100644 index 00000000..08a6b152 --- /dev/null +++ b/udfs/hex_to_utf8.sql @@ -0,0 +1,15 @@ +CREATE OR REPLACE FUNCTION PC_DBT_DB.PROD.HEX_TO_UTF8("hex_str" VARCHAR(16777216)) +RETURNS VARCHAR(16777216) +LANGUAGE PYTHON +RUNTIME_VERSION = '3.8' +HANDLER = 'hex_to_utf8' +AS ' +def hex_to_utf8(hex_str) -> str: + if hex_str.startswith("0x"): + hex_str = hex_str[2:] + try: + bytes_obj = bytes.fromhex(hex_str) + return bytes_obj.decode("utf-8") + except ValueError: + return None +'; \ No newline at end of file From 9783ec6706f98a7d919ea9b2f0708e118c28f951 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 14 Aug 2024 18:57:06 -0400 Subject: [PATCH 150/213] Stablecoin V2: Adding new stablecoin models (#401) --- macros/stablecoins/stablecoin_breakdown.sql | 37 +++++++++++++++++++ ...gg_daily_stablecoin_breakdown_category.sql | 3 ++ ...ly_stablecoin_breakdown_category_chain.sql | 3 ++ ...lecoin_breakdown_category_symbol_chain.sql | 2 + .../agg_daily_stablecoin_breakdown_chain.sql | 3 ++ .../agg_daily_stablecoin_breakdown_symbol.sql | 3 ++ ...aily_stablecoin_breakdown_symbol_chain.sql | 3 ++ 7 files changed, 54 insertions(+) create mode 100644 macros/stablecoins/stablecoin_breakdown.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol_chain.sql diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql new file mode 100644 index 00000000..97e13903 --- /dev/null +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -0,0 +1,37 @@ +{% macro stablecoin_breakdown(breakdowns=[]) %} +select + date + {% for breakdown in breakdowns %} + , {{ breakdown }} + {% endfor %} + , count(distinct case when stablecoin_daily_txns > 0 then from_address end) as stablecoin_dau + , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume + , sum(stablecoin_daily_txns) as stablecoin_daily_txns + , case + when sum(stablecoin_daily_txns) > 0 then sum(stablecoin_transfer_volume) / sum(stablecoin_daily_txns) + else 0 + end as stablecoin_avg_txn_value + , count(distinct case when artemis_stablecoin_daily_txns > 0 then from_address end) as artemis_stablecoin_dau + , sum(artemis_stablecoin_transfer_volume) as artemis_stablecoin_transfer_volume + , sum(artemis_stablecoin_daily_txns) as artemis_stablecoin_daily_txns + , case + when sum(artemis_stablecoin_daily_txns) > 0 then sum(artemis_stablecoin_transfer_volume) / sum(artemis_stablecoin_daily_txns) + else 0 + end as artemis_stablecoin_avg_txn_value + , count(distinct case when p2p_stablecoin_daily_txns > 0 then from_address end) as p2p_stablecoin_dau + , sum(p2p_stablecoin_transfer_volume) as p2p_stablecoin_transfer_volume + , sum(p2p_stablecoin_daily_txns) as p2p_stablecoin_daily_txns + , case + when sum(p2p_stablecoin_daily_txns) > 0 then sum(p2p_stablecoin_transfer_volume) / sum(p2p_stablecoin_daily_txns) + else 0 + end as p2p_stablecoin_avg_txn_value + + , sum(stablecoin_supply) as stablecoin_supply + , sum(case when is_wallet::number = 1 then stablecoin_supply else 0 end) as p2p_stablecoin_supply +from {{ ref("agg_daily_stablecoin_breakdown_silver") }} +group by date {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} +order by date + + + +{% endmacro %} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category.sql new file mode 100644 index 00000000..eae95f8c --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["category"]) }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_chain.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_chain.sql new file mode 100644 index 00000000..353e7d2b --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{stablecoin_breakdown(["chain", "category"])}} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol_chain.sql new file mode 100644 index 00000000..1836627d --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol_chain.sql @@ -0,0 +1,2 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} +{{ stablecoin_breakdown(["chain", "category", "symbol"]) }} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_chain.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_chain.sql new file mode 100644 index 00000000..544ac13f --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["chain"]) }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol.sql new file mode 100644 index 00000000..4c892b40 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["symbol"]) }} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol_chain.sql new file mode 100644 index 00000000..4a9473fa --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_symbol_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["symbol", "chain"]) }} From b558a1bf338a22f3eb34323972b374591e10a37a Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 14 Aug 2024 19:40:58 -0400 Subject: [PATCH 151/213] Stablecoin V2: removing clustering on final table (#402) --- .../stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql index 0f2d72c9..bc414380 100644 --- a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG", cluster_by="chain") }} +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} select date , contract_address From 4ad47d9f930b5922361d0cc472404f78f8e9ea88 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:11:13 -0400 Subject: [PATCH 152/213] Converted Aptos data to incremental (#403) --- .../fact_aptos_daa_txns_gas_gas_usd_revenue.sql | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql b/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql index cc1ce302..66db9f85 100644 --- a/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql +++ b/models/staging/aptos/fact_aptos_daa_txns_gas_gas_usd_revenue.sql @@ -1,4 +1,4 @@ -{{ config(materialized="table") }} +{{ config(materialized="incremental", unique_key='date') }} with apt_prices as ({{ get_coingecko_price_with_latest("aptos") }}), single_signed_transactions as ( @@ -8,6 +8,9 @@ with tx_type = 'user_transaction' and success = 'true' and parse_json(signature):public_key is not null + {% if is_incremental() %} + and block_timestamp::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ), primary_multi_signed_transactions as ( select @@ -18,6 +21,9 @@ with tx_type = 'user_transaction' and success = 'true' and parse_json(signature):sender is not null + {% if is_incremental() %} + and block_timestamp::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ), raw_secondary_multi_signed_transactions as ( select @@ -28,6 +34,9 @@ with tx_type = 'user_transaction' and success = 'true' and parse_json(signature):secondary_signers is not null + {% if is_incremental() %} + and block_timestamp::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} ), secondary_multi_signed_transactions as ( select block_timestamp::date as date, value:"public_key" as signer @@ -69,6 +78,9 @@ with sum(gas_used * gas_unit_price) / 1E8 as gas from aptos_flipside.core.fact_transactions where tx_type = 'user_transaction' + {% if is_incremental() %} + and block_timestamp::date > (select dateadd('day', -3, max(date)) from {{ this }}) + {% endif %} group by block_timestamp::date ), raw as ( From 9627d245ba6ec25d50164f2429841b97b14ab486 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Fri, 16 Aug 2024 14:51:06 -0400 Subject: [PATCH 153/213] Added macros for adding new stablecoins (#404) --- macros/stablecoins/stablecoin_ez_metrics.sql | 18 ++++++++++++++++++ models/projects/usdc/core/ez_usdc_metrics.sql | 15 +++------------ 2 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 macros/stablecoins/stablecoin_ez_metrics.sql diff --git a/macros/stablecoins/stablecoin_ez_metrics.sql b/macros/stablecoins/stablecoin_ez_metrics.sql new file mode 100644 index 00000000..c8dd9b60 --- /dev/null +++ b/macros/stablecoins/stablecoin_ez_metrics.sql @@ -0,0 +1,18 @@ +{% macro get_stablecoin_ez_metrics(symbol) %} + +select + '{{ symbol }}' as symbol + , date + , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume + , sum(artemis_stablecoin_transfer_volume) as deduped_stablecoin_transfer_volume + , count(distinct from_address) as stablecoin_dau + , sum(stablecoin_daily_txns) as stablecoin_txns + , sum(stablecoin_supply) as stablecoin_total_supply +from {{ ref("agg_daily_stablecoin_breakdown_silver") }} +where lower(symbol) = lower('{{ symbol }}') +{% if is_incremental() %} + and date >= (select dateadd('day', -3, max(date)) from {{ this }}) +{% endif %} +group by date + +{% endmacro %} diff --git a/models/projects/usdc/core/ez_usdc_metrics.sql b/models/projects/usdc/core/ez_usdc_metrics.sql index 1925dd24..dd4357bf 100644 --- a/models/projects/usdc/core/ez_usdc_metrics.sql +++ b/models/projects/usdc/core/ez_usdc_metrics.sql @@ -1,6 +1,7 @@ {{ config( - materialized="table", + materialized="incremental", + unique_key="date", snowflake_warehouse="USDC", database="usdc", schema="core", @@ -8,14 +9,4 @@ ) }} -select - 'usdc' as symbol - , date - , sum(transfer_volume) as stablecoin_transfer_volume - , sum(deduped_transfer_volume) as deduped_stablecoin_transfer_volume - , sum(dau) as stablecoin_dau - , sum(txns) as stablecoin_txns - , sum(total_supply) as stablecoin_total_supply -from {{ ref("agg_daily_stablecoin_metrics") }} -where symbol = 'USDC' -group by date +{{ get_stablecoin_ez_metrics("USDC") }} From e75ecce7e6fbda35a6c4a8c480359d5e5640ef4b Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:51:20 -0400 Subject: [PATCH 154/213] AAVE Reserve Factor (#407) --- .../aave_deposits_borrows_lender_revenue.sql | 91 ++++++++++++------- models/projects/aave/core/ez_aave_metrics.sql | 37 +------- .../aave/core/ez_aave_metrics_by_chain.sql | 38 +------- .../aave/core/ez_aave_metrics_by_token.sql | 35 +------ ...bitrum_deposits_borrows_lender_revenue.sql | 2 +- ...lanche_deposits_borrows_lender_revenue.sql | 2 +- ...lanche_deposits_borrows_lender_revenue.sql | 2 +- ...3_base_deposits_borrows_lender_revenue.sql | 2 +- ...v3_bsc_deposits_borrows_lender_revenue.sql | 2 +- ...hereum_deposits_borrows_lender_revenue.sql | 2 +- ...hereum_deposits_borrows_lender_revenue.sql | 2 +- ...gnosis_deposits_borrows_lender_revenue.sql | 2 +- ...timism_deposits_borrows_lender_revenue.sql | 2 +- ...olygon_deposits_borrows_lender_revenue.sql | 2 +- ...olygon_deposits_borrows_lender_revenue.sql | 2 +- 15 files changed, 79 insertions(+), 144 deletions(-) diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql index 39dbb26c..a986cfa3 100644 --- a/macros/lending/aave_deposits_borrows_lender_revenue.sql +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -1,34 +1,53 @@ -{% macro aave_deposits_borrows_lender_revenue(chain, protocol, contract_address, raw_table, healed_raw_table) %} +{% macro aave_deposits_borrows_lender_revenue(chain, protocol, contract_address, reserve_factor_address, raw_table, healed_raw_table) %} with average_liquidity_rate as ( select - block_timestamp::date as date + block_timestamp::date as date , decoded_log:reserve::string as reserve - , max(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index - , min(decoded_log:liquidityIndex::float / 1e27) as liquidity_index - -- , min_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as borrow_index - -- , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as liquidity_index - -- , min_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as first_borrow_index - -- , max_by(decoded_log:variableBorrowIndex::float / 1e27, block_timestamp) as last_borrow_index - -- , min_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as first_liquidity_index - -- , max_by(decoded_log:liquidityIndex::float / 1e27, block_timestamp) as last_liquidity_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index from {{ chain }}_flipside.core.ez_decoded_event_logs where contract_address = lower('{{ contract_address }}') and event_name = 'ReserveDataUpdated' group by 1, 2 ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(decoded_log:newReserveFactor::number) / 1E4 as reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('{{reserve_factor_address}}') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) , daily_rate as ( select date , reserve - , 1 + (stable_borrow_rate/365) as stable_borrow_rate - , (borrow_index / coalesce(LAG(borrow_index) IGNORE NULLS OVER (partition by reserve ORDER BY date), borrow_index)) - 1 as daily_borrow_rate - , (liquidity_index / coalesce(LAG(liquidity_index) IGNORE NULLS OVER (partition by reserve ORDER BY date), liquidity_index)) - 1 as daily_liquidity_rate - - -- , (last_borrow_index / first_borrow_index) - 1 as daily_borrow_rate - -- , (last_liquidity_index / first_liquidity_index) - 1 as daily_liquidity_rate + , (stable_borrow_rate)/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , LAG(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + , 0 + ) as reserve_factor from average_liquidity_rate + left join reserve_factor_data using(date, reserve) ) , data as ( select @@ -47,25 +66,33 @@ with , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue from {{ref(raw_table)}} as raw_data left join daily_rate on raw_data.date = daily_rate.date and lower(raw_data.underlying_token) = lower(daily_rate.reserve) ) -select - date - , underlying_token as token_address - , '{{ chain }}' as chain - , '{{ protocol }}' as app - , avg(underlying_token_price) as underlying_token_price - , sum(borrows) as borrows - , sum(borrows_usd) as borrows_usd - , sum(supply) as supply - , sum(supply_usd) as supply_usd - , sum(deposit_revenue) as deposit_revenue - , sum(deposit_revenue_nominal) as deposit_revenue_nominal - , sum(borrow_fees_nominal) as interest_rate_fees_nominal - , sum(borrow_fees) as interest_rate_fees -from data -group by 1, 2 + select + data.date + , data.underlying_token as token_address + , '{{ chain }}' as chain + , '{{ protocol }}' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 {% endmacro %} \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index 152fbb31..2a7342df 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -40,6 +40,7 @@ with , net_deposits - outstanding_supply as tvl , sum(deposit_revenue) as supply_side_deposit_revenue , sum(interest_rate_fees) as interest_rate_fees + , sum(reserve_factor_revenue) as reserve_factor_revenue from deposits_borrows_lender_revenue group by 1 ) @@ -101,36 +102,6 @@ with from liquidation_revenue group by 1 ) - , reserve_factor_revenue as ( - select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} - ) - , aave_reserve_factor_revenue as ( - select - date - , sum(reserve_factor_revenue_usd) as reserve_factor_revenue - from reserve_factor_revenue - group by 1 - ) , ecosystem_incentives as ( select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} union all @@ -241,9 +212,9 @@ select , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue , trading_fees as dao_trading_revenue , gho_revenue - , reserve_factor_revenue - , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) as protocol_reserve_factor_revenue - , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , coalesce(reserve_factor_revenue, 0) as reserve_factor_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + -- Checkouted , ecosystem_incentives , safety_incentives , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives diff --git a/models/projects/aave/core/ez_aave_metrics_by_chain.sql b/models/projects/aave/core/ez_aave_metrics_by_chain.sql index cac40162..959ad555 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_chain.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_chain.sql @@ -41,6 +41,7 @@ with , net_deposits - outstanding_supply as tvl , sum(deposit_revenue) as supply_side_deposit_revenue , sum(interest_rate_fees) as interest_rate_fees + , sum(reserve_factor_revenue) as reserve_factor_revenue from deposits_borrows_lender_revenue group by 1, 2 ) @@ -104,37 +105,6 @@ with from liquidation_revenue group by 1, 2 ) - , reserve_factor_revenue as ( - select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} - ) - , aave_reserve_factor_revenue as ( - select - date - , chain - , sum(reserve_factor_revenue_usd) as reserve_factor_revenue - from reserve_factor_revenue - group by 1, 2 - ) , ecosystem_incentives as ( select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} union all @@ -222,11 +192,10 @@ select , ecosystem_incentives as ecosystem_supply_side_revenue , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue - , reserve_factor_revenue , trading_fees as dao_trading_revenue , gho_revenue - , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) as protocol_reserve_factor_revenue - , coalesce(interest_rate_fees, 0) - coalesce(supply_side_deposit_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , coalesce(reserve_factor_revenue, 0) as reserve_factor_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue , ecosystem_incentives , safety_incentives , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives @@ -241,7 +210,6 @@ select from aave_outstanding_supply_net_deposits_deposit_revenue left join aave_flashloan_fees using (date, chain) left join aave_liquidation_supply_side_revenue using (date, chain) -left join aave_reserve_factor_revenue using (date, chain) left join aave_ecosystem_incentives using (date, chain) left join dao_trading_revenue using (date, chain) left join safety_incentives using (date, chain) diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql index 63b5b421..9df5df4b 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_token.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -48,6 +48,8 @@ with , sum(deposit_revenue_nominal) as supply_side_deposit_revenue_nominal , sum(interest_rate_fees) as interest_rate_fees , sum(interest_rate_fees_nominal) as interest_rate_fees_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal from deposits_borrows_lender_revenue group by 1, 2, 3 ) @@ -115,39 +117,6 @@ with from liquidation_revenue group by 1, 2, 3 ) - , reserve_factor_revenue as ( - select * from {{ref("fact_aave_v3_arbitrum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_avalanche_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_base_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_bsc_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_ethereum_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_gnosis_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_optimism_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v2_polygon_reserve_factor_revenue")}} - union all - select * from {{ref("fact_aave_v3_polygon_reserve_factor_revenue")}} - ) - , aave_reserve_factor_revenue as ( - select - date - , chain - , token_address - , sum(reserve_factor_revenue_usd) as reserve_factor_revenue - , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal - from reserve_factor_revenue - group by 1, 2, 3 - ) , ecosystem_incentives as ( select * from {{ref("fact_aave_v3_arbitrum_ecosystem_incentives")}} union all diff --git a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql index 033d57d2..12f15d9c 100644 --- a/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/arbitrum/fact_aave_v3_arbitrum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('arbitrum', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_arbitrum_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('arbitrum', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', '0x8145eddDf43f50276641b55bd3AD95944510021E', 'raw_aave_v3_arbitrum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql index 79d4cd74..4e40e774 100644 --- a/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/avalanche/fact_aave_v2_avalanche_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C', 'raw_aave_v2_avalanche_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V2', '0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C', '0x230B618aD4C475393A7239aE03630042281BD86e', 'raw_aave_v2_avalanche_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql index d8f7d12a..0d75b437 100644 --- a/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/avalanche/fact_aave_v3_avalanche_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_avalanche_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('avalanche', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', '0x8145eddDf43f50276641b55bd3AD95944510021E', 'raw_aave_v3_avalanche_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql index 00a643a1..3fec8120 100644 --- a/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/base/fact_aave_v3_base_deposits_borrows_lender_revenue.sql @@ -7,4 +7,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('base', 'AAVE V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', 'raw_aave_v3_base_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('base', 'AAVE V3', '0xA238Dd80C259a72e81d7e4664a9801593F98d1c5', '0x5731a04B1E775f0fdd454Bf70f3335886e9A96be', 'raw_aave_v3_base_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql index 9481b78b..f9cd53b9 100644 --- a/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/bsc/fact_aave_v3_bsc_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('bsc', 'AAVE V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', 'raw_aave_v3_bsc_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('bsc', 'AAVE V3', '0x6807dc923806fE8Fd134338EABCA509979a7e0cB', '0x67bdF23C7fCE7C65fF7415Ba3F2520B45D6f9584', 'raw_aave_v3_bsc_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql index 3bae8fa6..a6d4b2ec 100644 --- a/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/ethereum/fact_aave_v2_ethereum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', 'raw_aave_v2_ethereum_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V2', '0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9', '0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756', 'raw_aave_v2_ethereum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql index 26526175..bae23709 100644 --- a/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/ethereum/fact_aave_v3_ethereum_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', 'raw_aave_v3_ethereum_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('ethereum', 'AAVE V3', '0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2', '0x64b761D848206f447Fe2dd461b0c635Ec39EbB27', 'raw_aave_v3_ethereum_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql index b7e60e46..03e16e2a 100644 --- a/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/gnosis/fact_aave_v3_gnosis_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', 'raw_aave_v3_gnosis_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('gnosis', 'AAVE V3', '0xb50201558B00496A145fE76f7424749556E326D8', '0x7304979ec9E4EaA0273b6A037a31c4e9e5A75D16', 'raw_aave_v3_gnosis_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql index 0da83958..77b053d7 100644 --- a/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/optimism/fact_aave_v3_optimism_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('optimism', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_optimism_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('optimism', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', '0x8145eddDf43f50276641b55bd3AD95944510021E', 'raw_aave_v3_optimism_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql index 2a2aad96..d9bb980b 100644 --- a/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/polygon/fact_aave_v2_polygon_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', 'raw_aave_v2_polygon_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V2', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', '0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf', 'raw_aave_v2_polygon_rpc_data')}} \ No newline at end of file diff --git a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql index 9368e71b..98e366c4 100644 --- a/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql +++ b/models/projects/aave/raw/polygon/fact_aave_v3_polygon_deposits_borrows_lender_revenue.sql @@ -8,4 +8,4 @@ ) }} -{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', 'raw_aave_v3_polygon_rpc_data')}} \ No newline at end of file +{{ aave_deposits_borrows_lender_revenue('polygon', 'AAVE V3', '0x794a61358D6845594F94dc1DB02A252b5b4814aD', '0x8145eddDf43f50276641b55bd3AD95944510021E', 'raw_aave_v3_polygon_rpc_data')}} \ No newline at end of file From 5f0f4ec6645f0850e0951fc1ced60e5a9b83cc0b Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:51:32 -0400 Subject: [PATCH 155/213] Starknet: Dune (#406) --- .../starknet/fact_starknet_transactions.sql | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/models/staging/starknet/fact_starknet_transactions.sql b/models/staging/starknet/fact_starknet_transactions.sql index fee6fbcd..013d0676 100644 --- a/models/staging/starknet/fact_starknet_transactions.sql +++ b/models/staging/starknet/fact_starknet_transactions.sql @@ -30,27 +30,32 @@ with {{ get_coingecko_price_with_latest("starknet") }} ) ) -select - t2.tx_hash, - coalesce(t1.to_address, t2.from_address) as contract_address, - t2.block_timestamp, - date_trunc('day', t2.block_timestamp) raw_date, - coalesce(t2.from_address, t2.to_address) as from_address, - t2.actual_fee / 1E18 as tx_fee, - t2.actual_fee_unit as currency, +select + t1.block_time as block_timestamp, + t1.transaction_hash_hex as tx_hash, + t2.contract_address_hex as contract_address, + t1.block_date as raw_date, + coalesce(t1.sender_address_hex, t1.contract_address_hex) as from_address, + t1.actual_fee_amount / 1E18 as tx_fee, + t1.actual_fee_unit as currency, (tx_fee * price) gas_usd, 'starknet' as chain, + t1.execution_status as status, + new_contracts.name, new_contracts.app, new_contracts.friendly_name, new_contracts.sub_category, new_contracts.category --EOA Transfers are more complicated on Starknet -from starknet_data_warehouse__t1.starknet.calls t1 -left join starknet_data_warehouse__t1.starknet.transactions t2 on t1.tx_hash = t2.tx_hash -left join new_contracts on lower(t1.to_address) = lower(new_contracts.address) -left join prices on raw_date = prices.date and curr = t2.actual_fee_unit -where - t1.invocation_type = 'execute' and t1.call_depth = 0 + +from zksync_dune.starknet.transactions t1 +left join zksync_dune.starknet.calls t2 + on t1.transaction_hash_hex = t2.transaction_hash_hex + and t1.sender_address_hex = t2.caller_address_hex + and callstack_index = [0] +left join new_contracts on lower(t2.contract_address_hex) = lower(new_contracts.address) +left join prices on raw_date = prices.date and curr = t1.actual_fee_unit +where coalesce(t1.sender_address_hex, t1.contract_address_hex) is not null {% if is_incremental() %} -- this filter will only be applied on an incremental run and t2.block_timestamp From 366ffdc24034c020d0a6300589ff4d36c950a115 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Mon, 19 Aug 2024 21:26:48 +0300 Subject: [PATCH 156/213] add usdt model (#408) --- databases.csv | 1 + models/projects/usdt/core/ez_usdt_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/usdt/core/ez_usdt_metrics.sql diff --git a/databases.csv b/databases.csv index c5a7ac58..d20e6075 100644 --- a/databases.csv +++ b/databases.csv @@ -76,4 +76,5 @@ TON TRON UNISWAP USDC +USDT ZKSYNC diff --git a/models/projects/usdt/core/ez_usdt_metrics.sql b/models/projects/usdt/core/ez_usdt_metrics.sql new file mode 100644 index 00000000..e12d1c58 --- /dev/null +++ b/models/projects/usdt/core/ez_usdt_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="USDT", + database="usdt", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("USDT") }} From f6883e06a4336019a4b87b80c055c94b45722c45 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:40:10 -0400 Subject: [PATCH 157/213] Paypal: EZ Token Transfers Solana and Ethereum (#409) --- .../transfers/get_token_transfer_filtered.sql | 181 +++++++++++++----- .../raw/ez_ethereum_token_transfers.sql | 46 +++++ .../solana/raw/ez_solana_token_transfers.sql | 25 +++ 3 files changed, 201 insertions(+), 51 deletions(-) create mode 100644 models/projects/ethereum/raw/ez_ethereum_token_transfers.sql create mode 100644 models/projects/solana/raw/ez_solana_token_transfers.sql diff --git a/macros/transfers/get_token_transfer_filtered.sql b/macros/transfers/get_token_transfer_filtered.sql index 338a2a44..72b9db9a 100644 --- a/macros/transfers/get_token_transfer_filtered.sql +++ b/macros/transfers/get_token_transfer_filtered.sql @@ -1,56 +1,135 @@ -{% macro get_token_transfer_filtered(chain, limit_number=1000, blacklist=('')) %} +{% macro get_token_transfer_filtered(chain, limit_number=1000, blacklist=(''), whitelist=(''), include_full_history="FALSE" ) %} With - dex_swap_liquidity_pairs as (-- all pairs with non-zero liquidity - select distinct - token_in, - token_out, - sum(amount_in_usd) as amount_in_usd - from {{ chain }}_flipside.defi.ez_dex_swaps - where (amount_in_usd is not null and amount_out_usd is not null) and - (amount_in_usd > 0 and amount_out_usd > 0) and - abs( - ln(coalesce(nullif(amount_in_usd, 0), 1)) / ln(10) - - ln(coalesce(nullif(amount_out_usd, 0), 1)) / ln(10) - ) - < 1 - group by token_in, token_out - order by amount_in_usd desc - limit {{ limit_number }} - ), - tokens as ( - select distinct token_in as token - from {{ chain }}_flipside.defi.ez_dex_swaps - where lower(token_in) in (select lower(token_in) from dex_swap_liquidity_pairs) - union - select distinct token_out as token - from {{ chain }}_flipside.defi.ez_dex_swaps - where lower(token_out) in (select lower(token_out) from dex_swap_liquidity_pairs) - ) - select - block_timestamp, - block_number, - tx_hash, - event_index as index, - from_address, - to_address, - amount_precise as amount, - contract_address as token_address, - amount_usd - from {{ chain }}_flipside.core.ez_token_transfers - where - amount_usd is not null - and token_address in (select token from tokens) + {% if chain == "solana" %} + dex_swap_liquidity_pairs as ( + select + t1.swap_from_mint as token_in, + t1.swap_to_mint as token_out, + sum(swap_from_amount_usd) as amount_in_usd + from solana_flipside.defi.ez_dex_swaps t1 + where (swap_from_amount_usd is not null and swap_to_amount_usd is not null) + and (swap_from_amount_usd > 0 and swap_to_amount_usd > 0) + and abs( + ln(coalesce(nullif(swap_from_amount_usd, 0), 1)) / ln(10) + - ln(coalesce(nullif(swap_to_amount_usd, 0), 1)) / ln(10) + ) + < 1 + group by token_in, token_out + order by amount_in_usd desc + limit {{ limit_number }} + ) + , tokens as ( + select distinct swap_from_mint as token + from solana_flipside.defi.ez_dex_swaps + where lower(swap_from_mint) in (select lower(token_in) from dex_swap_liquidity_pairs) + union + select distinct swap_to_mint as token + from solana_flipside.defi.ez_dex_swaps + where lower(swap_to_mint) in (select lower(token_out) from dex_swap_liquidity_pairs) + {% if whitelist is string %} + union + select '{{ whitelist }}' as token + {% elif whitelist | length > 1 %} + union + select distinct token_address as token + from values {{whitelist}} as t(token_address) + {% endif %} + ) + , token_prices as ( + select + hour::date as date, + token_address, + avg(price) as price + from solana_flipside.price.ez_prices_hourly + group by date, token_address + ) + select + t2.block_timestamp, + t1.block_id as block_number, + t1.tx_id as tx_hash, + t1.index, + t1.tx_from as from_address, + t1.tx_to as to_address, + t1.amount, + mint as token_address, + coalesce(amount * price, 0) as amount_usd + from solana_flipside.core.fact_transfers t1 + inner join solana_flipside.core.fact_blocks t2 using(block_id) + left join token_prices t5 on t1.mint = t5.token_address and t2.block_timestamp::date = t5.date + where mint <> 'So11111111111111111111111111111111111111112' + {% if include_full_history=="FALSE" %} + and t1.tx_from != t1.tx_to + and lower(t1.tx_from) != lower('1nc1nerator11111111111111111111111111111111') -- Burn address of solana + and lower(t1.tx_to) != lower('1nc1nerator11111111111111111111111111111111') + {% endif %} + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(block_timestamp)) + from {{ this }} + ) + {% endif %} + {% else %} + dex_swap_liquidity_pairs as (-- all pairs with non-zero liquidity + select distinct + token_in, + token_out, + sum(amount_in_usd) as amount_in_usd + from {{ chain }}_flipside.defi.ez_dex_swaps + where (amount_in_usd is not null and amount_out_usd is not null) and + (amount_in_usd > 0 and amount_out_usd > 0) and + abs( + ln(coalesce(nullif(amount_in_usd, 0), 1)) / ln(10) + - ln(coalesce(nullif(amount_out_usd, 0), 1)) / ln(10) + ) + < 1 + group by token_in, token_out + order by amount_in_usd desc + limit {{ limit_number }} + ) + , tokens as ( + select distinct token_in as token + from {{ chain }}_flipside.defi.ez_dex_swaps + where lower(token_in) in (select lower(token_in) from dex_swap_liquidity_pairs) + union + select distinct token_out as token + from {{ chain }}_flipside.defi.ez_dex_swaps + where lower(token_out) in (select lower(token_out) from dex_swap_liquidity_pairs) + {% if whitelist is string %} + union + select '{{ whitelist }}' as token + {% elif whitelist | length > 1 %} + union + select distinct token_address as token + from values {{whitelist}} as t(token_address) + {% endif %} + + ) + select + block_timestamp, + block_number, + tx_hash, + event_index as index, + from_address, + to_address, + amount_precise as amount, + contract_address as token_address, + amount_usd + from {{ chain }}_flipside.core.ez_token_transfers + where token_address in (select token from tokens) {% if blacklist is string %} and lower(token_address) != lower('{{ blacklist }}') {% elif blacklist | length > 1 %} and token_address not in {{ blacklist }} --make sure you pass in lower {% endif %} - and to_address != from_address - and lower(from_address) != lower('0x0000000000000000000000000000000000000000') - and lower(to_address) != lower('0x0000000000000000000000000000000000000000') - {% if is_incremental() %} - and block_timestamp >= ( - select dateadd('day', -3, max(block_timestamp)) - from {{ this }} - ) - {% endif %} - + {% if include_full_history=="FALSE" %} + and amount_usd is not null + and to_address != from_address + and lower(from_address) != lower('0x0000000000000000000000000000000000000000') + and lower(to_address) != lower('0x0000000000000000000000000000000000000000') + {% endif %} + {% if is_incremental() %} + and block_timestamp >= ( + select dateadd('day', -3, max(block_timestamp)) + from {{ this }} + ) + {% endif %} + {% endif %} {% endmacro %} diff --git a/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql b/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql new file mode 100644 index 00000000..b196fc09 --- /dev/null +++ b/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql @@ -0,0 +1,46 @@ +{{ + config( + materialized="table", + unique_key=["tx_hash", "index"], + snowflake_warehouse="ETHEREUM", + database="ethereum", + schema="raw", + alias="ez_token_transfers", + ) +}} + +{{ + get_token_transfer_filtered( + 'ethereum' + , limit_number=300 + , blacklist=( + "0x130914e1b240a7f4c5d460b7d3a2fd3846b576fa", + "0x087b81c5312bcb45179a05aff5aec5cdddc789b6", + "0x62cc7d1790e5a9470be22ae9f14065cbfe44bf10", + "0xddb3422497e61e13543bea06989c0789117555c5", + "0x630d98424efe0ea27fb1b3ab7741907dffeaad78", + "0x8c3ee4f778e282b59d42d693a97b80b1ed80f4ee", + "0x3f7aff0ef20aa2e646290dfa4e67611b2220c597", + "0xc89b4a8a121dd3e726fe7515e703936cf83e3350", + "0xbd4b2dd8fbcecb2af5904ff5f218037b0f693275", + "0x4d67edef87a5ff910954899f4e5a0aaf107afd42", + "0x84fa8f52e437ac04107ec1768764b2b39287cb3e", + "0xa2253b08b04a61441c0cba8e83226ac4f69405b7", + "0x33d6064f0dfb62462a74049f30909ddd4f683ba2", + "0x432d03d11a324b90ba14141d4bc75b68d2350bb8", + "0x04a5198063e45d84b1999516d3228167146417a6", + "0x15f20f9dfdf96ccf6ac96653b7c0abfe4a9c9f0f", + "0xdfef6416ea3e6ce587ed42aa7cb2e586362cbbfa", + "0xbe77212a6c7f55567470c2c95aff7b0b0e0c3ef5", + "0xd2b274cfbf9534f56b59ad0fb7e645e0354f4941", + "0x2b591e99afe9f32eaa6214f7b7629768c40eeb39", + "0xba12222222228d8ba445958a75a0704d566bf2c8" + ) + , whitelist=( + "0xc5f0f7b66764f6ec8c8dff7ba683102295e16409", + "0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6", + "0x853d955acef822db058eb8505911ed77f175b99e" + ) + , include_full_history="TRUE" + ) +}} \ No newline at end of file diff --git a/models/projects/solana/raw/ez_solana_token_transfers.sql b/models/projects/solana/raw/ez_solana_token_transfers.sql new file mode 100644 index 00000000..95cc77cc --- /dev/null +++ b/models/projects/solana/raw/ez_solana_token_transfers.sql @@ -0,0 +1,25 @@ +{{ + config( + materialized="incremental", + unique_key=["tx_hash", "index"], + snowflake_warehouse="SOLANA", + database="solana", + schema="raw", + alias="ez_token_transfers", + ) +}} + +{{ + get_token_transfer_filtered( + 'solana' + , limit_number=200 + , blacklist=( + "o1Mw5Y3n68o8TakZFuGKLZMGjm72qv4JeoZvGiCLEvK", + "SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt", + "GiBrdw1tF8nuJxWuhTp83ULEMY9uJkYUHQUBzwfEnw5R", + "B584xmGMbrJz2FewT6fxNx64vQ74zrbQijHHijszSa7K", + "NLBLjgKvSVtiporRdVEcyssTyr5oPRmjeajVJ4EGW9B" + ) + , include_full_history="TRUE" + ) +}} \ No newline at end of file From aeaeb3d0e03cacc95889fa33a409e40a6a101f81 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 16:33:11 -0400 Subject: [PATCH 158/213] Making ethereum token transfers incremental (#410) --- models/projects/ethereum/raw/ez_ethereum_token_transfers.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql b/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql index b196fc09..5a8958c1 100644 --- a/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql +++ b/models/projects/ethereum/raw/ez_ethereum_token_transfers.sql @@ -1,6 +1,6 @@ {{ config( - materialized="table", + materialized="incremental", unique_key=["tx_hash", "index"], snowflake_warehouse="ETHEREUM", database="ethereum", From 647f8796d208ff432bb3d40f549d4c1de156f871 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Mon, 19 Aug 2024 14:40:46 -0700 Subject: [PATCH 159/213] Add Drift Trump + Kamala Prediction Market Data (#411) --- models/staging/drift/__drift__sources.yml | 2 ++ .../drift/fact_drift_prediction_markets.sql | 25 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 models/staging/drift/fact_drift_prediction_markets.sql diff --git a/models/staging/drift/__drift__sources.yml b/models/staging/drift/__drift__sources.yml index 3ae29d9d..c0687612 100644 --- a/models/staging/drift/__drift__sources.yml +++ b/models/staging/drift/__drift__sources.yml @@ -4,3 +4,5 @@ sources: database: LANDING_DATABASE tables: - name: raw_drift_trading_volume + - name: raw_drift_fill_price_kamala + - name: raw_drift_fill_price_trump diff --git a/models/staging/drift/fact_drift_prediction_markets.sql b/models/staging/drift/fact_drift_prediction_markets.sql new file mode 100644 index 00000000..b83f7991 --- /dev/null +++ b/models/staging/drift/fact_drift_prediction_markets.sql @@ -0,0 +1,25 @@ +{{ config(materialized="table") }} +with + trump_data as ( + select + DATE_TRUNC('DAY', extraction_date)::date as date, + source_json as trump_price + from {{ source("PROD_LANDING", "raw_drift_fill_price_trump") }} + ), kamala_data as ( + select + DATE_TRUNC('DAY', extraction_date)::date as date, + source_json as kamala_price + from {{ source("PROD_LANDING", "raw_drift_fill_price_kamala") }} + ) + +select + trump_data.date, + 'drift' as app, + 'DeFi' as category, + 'solana' as chain, + trump_price, + kamala_price +from trump_data +left join kamala_data + on trump_data.date = kamala_data.date + From 74dc391f72c70abd430aaaeda6e81a3703858405 Mon Sep 17 00:00:00 2001 From: alexwes Date: Mon, 19 Aug 2024 17:49:48 -0400 Subject: [PATCH 160/213] Adding complete Lido data models (#405) --- macros/get_treasury_balance.sql | 139 ++++++++++++++++++ macros/metrics/get_coingecko_metrics.sql | 22 ++- models/projects/lido/core/ez_lido_metrics.sql | 109 ++++++++++++++ .../lido/core/ez_lido_metrics_by_chain.sql | 118 ++++++++++++--- .../lido/core/ez_lido_metrics_by_token.sql | 109 ++++++++++++++ .../lido/raw/fact_ldo_tokenholder_count.sql | 11 ++ .../lido/raw/fact_lido_dao_treasury.sql | 11 ++ .../lido/raw/fact_lido_fees_revs_expenses.sql | 71 +++++++++ .../lido/raw/fact_lido_token_incentives.sql | 37 +++++ 9 files changed, 602 insertions(+), 25 deletions(-) create mode 100644 macros/get_treasury_balance.sql create mode 100644 models/projects/lido/core/ez_lido_metrics.sql create mode 100644 models/projects/lido/core/ez_lido_metrics_by_token.sql create mode 100644 models/projects/lido/raw/fact_ldo_tokenholder_count.sql create mode 100644 models/projects/lido/raw/fact_lido_dao_treasury.sql create mode 100644 models/projects/lido/raw/fact_lido_fees_revs_expenses.sql create mode 100644 models/projects/lido/raw/fact_lido_token_incentives.sql diff --git a/macros/get_treasury_balance.sql b/macros/get_treasury_balance.sql new file mode 100644 index 00000000..f6590ed0 --- /dev/null +++ b/macros/get_treasury_balance.sql @@ -0,0 +1,139 @@ +{% macro get_treasury_balance(chain, addresses)%} + +WITH dates AS ( + SELECT + DISTINCT DATE(hour) AS date + FROM + {{ chain }}_flipside.price.ez_prices_hourly + WHERE + symbol = 'UNI' +), +tokens AS ( + SELECT + DISTINCT LOWER(contract_address) AS token_address + FROM + {{ chain }}_flipside.core.ez_token_transfers + WHERE + {% if addresses is string %} LOWER(to_address) = '{{ addresses }}' + {% elif addresses | length > 1 %} LOWER(to_address) in {{addresses}} + {% endif %} +), +sparse_balances AS ( + SELECT + DATE(block_timestamp) AS date, + user_address, + contract_address, + MAX_BY(balance, block_timestamp) / 1e18 AS balance_daily + FROM + {{ chain }}_flipside.core.fact_token_balances + WHERE + LOWER(contract_address) IN ( + SELECT + token_address + FROM + tokens + ) + AND + {% if addresses is string %} LOWER(user_address) = '{{ addresses }}' + {% elif addresses | length > 1 %} LOWER(user_address) in {{addresses}} + {% endif %} + GROUP BY + 1, + 2, + 3 +), +full_balances AS ( + SELECT + d.date, + {% if addresses is string %} + '{{ addresses }}' AS user_address, + {% else %} + ta.address AS user_address, + {% endif %} + t.token_address AS contract_address, + COALESCE( + LAST_VALUE(sb.balance_daily) IGNORE NULLS OVER ( + PARTITION BY + {% if addresses is string %} + '{{ addresses }}' + {% else %} + ta.address + {% endif %}, + t.token_address + ORDER BY + d.date ROWS BETWEEN UNBOUNDED PRECEDING + AND CURRENT ROW + ), + 0 + ) AS balance_daily + FROM + dates d + {% if addresses is string %} + CROSS JOIN (SELECT '{{ addresses }}' AS address) ta + {% else %} + CROSS JOIN (SELECT unnest({{ addresses }}) AS address) ta + {% endif %} + CROSS JOIN tokens t + LEFT JOIN sparse_balances sb ON d.date = sb.date + AND + {% if addresses is string %} + '{{ addresses }}' = sb.user_address + {% else %} + ta.address = sb.user_address + {% endif %} + AND t.token_address = sb.contract_address +), +daily_prices AS ( + SELECT + DATE(hour) AS date, + token_address, + symbol, + AVG(price) AS avg_daily_price, + MAX(decimals) as decimals + FROM + {{ chain }}_flipside.price.ez_prices_hourly + WHERE + token_address IN ( + SELECT + token_address + FROM + tokens + ) + GROUP BY + 1, + 2, + 3 +), +full_table as ( + SELECT + fb.date, + fb.user_address, + fb.contract_address, + dp.symbol, + fb.balance_daily as balance_daily, + COALESCE(dp.avg_daily_price, 0) AS avg_daily_price, + fb.balance_daily * COALESCE(dp.avg_daily_price, 0) AS usd_balance + FROM + full_balances fb + LEFT JOIN daily_prices dp ON fb.date = dp.date + AND fb.contract_address = dp.token_address -- AND dp.decimals is not null + -- and dp.decimals > 0 + WHERE + symbol is not null +) +SELECT + date, + symbol as token, + SUM(balance_daily) as native_balance, + SUM(usd_balance) as usd_balance +FROM + full_table +WHERE + USD_BALANCE > 1 +GROUP BY + 1 + , 2 +ORDER BY + 1 DESC + +{% endmacro %} \ No newline at end of file diff --git a/macros/metrics/get_coingecko_metrics.sql b/macros/metrics/get_coingecko_metrics.sql index 8e8a1019..9cebfec1 100644 --- a/macros/metrics/get_coingecko_metrics.sql +++ b/macros/metrics/get_coingecko_metrics.sql @@ -1,9 +1,12 @@ {% macro get_coingecko_metrics(coingecko_id) %} select - date as date, - shifted_token_price_usd as price, - shifted_token_market_cap as market_cap, - t2.total_supply * price as fdmc + date as date + , shifted_token_price_usd as price + , shifted_token_market_cap as market_cap + , t2.total_supply * price as fdmc + , shifted_token_h24_volume_usd / market_cap as token_turnover_circulating + , shifted_token_h24_volume_usd / fdmc as token_turnover_fdv + , shifted_token_h24_volume_usd as token_volume from {{ ref("fact_coingecko_token_date_adjusted_gold") }} t1 inner join ( @@ -18,10 +21,13 @@ and date < dateadd(day, -1, to_date(sysdate())) union select - dateadd('day', -1, to_date(sysdate())) as date, - token_current_price as price, - token_market_cap as market_cap, - coalesce(token_max_supply, token_total_supply) * price as fdmc + dateadd('day', -1, to_date(sysdate())) as date + , token_current_price as price + , token_market_cap as market_cap + , coalesce(token_max_supply, token_total_supply) * price as fdmc + , token_total_volume / market_cap as token_turnover_circulating + , token_total_volume / fdmc as token_turnover_fdv + , token_total_volume as token_volume from {{ ref("fact_coingecko_token_realtime_data") }} where token_id = '{{ coingecko_id }}' {% endmacro %} diff --git a/models/projects/lido/core/ez_lido_metrics.sql b/models/projects/lido/core/ez_lido_metrics.sql new file mode 100644 index 00000000..3151ab2e --- /dev/null +++ b/models/projects/lido/core/ez_lido_metrics.sql @@ -0,0 +1,109 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="core", + alias="ez_metrics", + ) +}} + +with + fees_revenue_expenses as ( + SELECT + date + , block_rewards + , mev_priority_fees + , total_staking_yield as fees + , operating_expenses + , protocol_revenue + , primary_supply_side_revenue + , secondary_supply_side_revenue + , total_supply_side_revenue + FROM {{ ref('fact_lido_fees_revs_expenses') }} + ) + , staked_eth_metrics as ( + select + date + , num_staked_eth + , amount_staked_usd + from {{ ref('fact_lido_staked_eth_count_with_USD_and_change') }} + ) + , treasury_cte as ( + SELECT + date + , sum(usd_balance) as treasury_value + FROM + {{ ref('fact_lido_dao_treasury') }} + GROUP BY 1 + ) + , treasury_native_cte as ( + SELECT + date + , sum(native_balance) as treasury_native + FROM + {{ ref('fact_lido_dao_treasury') }} + where token = 'LDO' + GROUP BY 1 + ) + , net_treasury_cte as ( + SELECT + date + , sum(usd_balance) as net_treasury_value + FROM {{ ref('fact_lido_dao_treasury') }} + where token <> 'LDO' + group by 1 + ) + , token_incentives_cte as ( + SELECT + date + , sum(amount_usd) as token_incentives + FROM + {{ ref('fact_lido_token_incentives') }} + GROUP BY 1 + ) + , price_data as ( + {{ get_coingecko_metrics('lido-dao') }} + ) + , tokenholder_cte as ( + SELECT + date, + token_holder_count + FROM + {{ ref('fact_ldo_tokenholder_count')}} + ) +select + s.date + , COALESCE(f.mev_priority_fees, 0) as mev_priority_fees + , COALESCE(f.block_rewards, 0) as block_rewards + , COALESCE(f.fees, 0) as fees + , COALESCE(f.primary_supply_side_revenue, 0) as primary_supply_side_revenue + , COALESCE(f.secondary_supply_side_revenue, 0) as secondary_supply_side_revenue + , COALESCE(f.total_supply_side_revenue, 0) as total_supply_side_revenue + , COALESCE(f.protocol_revenue, 0) as protocol_revenue + , COALESCE(f.operating_expenses, 0) as operating_expenses + , COALESCE(ti.token_incentives, 0) as token_incentives + , COALESCE(f.protocol_revenue, 0) - COALESCE(f.operating_expenses, 0) - COALESCE(ti.token_incentives, 0) as protocol_earnings + , COALESCE(t.treasury_value, 0) as treasury_value + , COALESCE(tn.treasury_native, 0) as treasury_native + , COALESCE(nt.net_treasury_value, 0) as net_treasury_value + , COALESCE(s.amount_staked_usd, 0) as net_deposits + , COALESCE(s.num_staked_eth, 0) as outstanding_supply + , COALESCE(s.amount_staked_usd, 0) as tvl + , COALESCE(s.amount_staked_usd, 0) as amount_staked_usd + , COALESCE(s.num_staked_eth, 0) as num_staked_eth + , COALESCE(p.fdmc, 0) as fdmc + , COALESCE(p.market_cap, 0) as market_cap + , COALESCE(p.token_volume, 0) as token_volume + , COALESCE(p.token_turnover_fdv, 0) as token_turnover_fdv + , COALESCE(p.token_turnover_circulating, 0) as token_turnover_circulating + , COALESCE(th.token_holder_count, 0) as token_holder_count +from staked_eth_metrics s +left join fees_revenue_expenses f using(date) +left join treasury_cte t using(date) +left join treasury_native_cte tn using(date) +left join net_treasury_cte nt using(date) +left join token_incentives_cte ti using(date) +left join price_data p using(date) +left join tokenholder_cte th using(date) +where s.date < current_date() \ No newline at end of file diff --git a/models/projects/lido/core/ez_lido_metrics_by_chain.sql b/models/projects/lido/core/ez_lido_metrics_by_chain.sql index c200f3de..aefbf4fb 100644 --- a/models/projects/lido/core/ez_lido_metrics_by_chain.sql +++ b/models/projects/lido/core/ez_lido_metrics_by_chain.sql @@ -9,24 +9,108 @@ }} with - staked_eth_metrics as ( + fees_revenue_expenses as ( + SELECT + date + , block_rewards + , mev_priority_fees + , total_staking_yield as fees + , operating_expenses + , protocol_revenue + , primary_supply_side_revenue + , secondary_supply_side_revenue + , total_supply_side_revenue + FROM {{ ref('fact_lido_fees_revs_expenses') }} + ) + , token_incentives_cte as ( + SELECT + date + , sum(amount_usd) as token_incentives + FROM + {{ ref('fact_lido_token_incentives') }} + GROUP BY 1 + ) + , staked_eth_metrics as ( select - date, - 'ethereum' as chain, - num_staked_eth, - amount_staked_usd, - num_staked_eth_net_change, - amount_staked_usd_net_change + date + , num_staked_eth + , amount_staked_usd + , num_staked_eth_net_change + , amount_staked_usd_net_change from {{ ref('fact_lido_staked_eth_count_with_USD_and_change') }} ) + , treasury_cte as ( + SELECT + date + , sum(usd_balance) as treasury_value + FROM + {{ ref('fact_lido_dao_treasury') }} + GROUP BY 1 + ) + , treasury_native_cte as ( + SELECT + date + , sum(native_balance) as treasury_native + FROM + {{ ref('fact_lido_dao_treasury') }} + where token = 'LDO' + GROUP BY 1 + ) + , net_treasury_cte as ( + SELECT + date + , sum(usd_balance) as net_treasury_value + FROM {{ ref('fact_lido_dao_treasury') }} + where token <> 'LDO' + group by 1 + ) + , price_data as ( + {{ get_coingecko_metrics('lido-dao') }} + ) + , tokenholder_cte as ( + SELECT + date, + token_holder_count + FROM + {{ ref('fact_ldo_tokenholder_count')}} + ) select - staked_eth_metrics.date, - 'lido' as app, - 'DeFi' as category, - staked_eth_metrics.chain, - staked_eth_metrics.num_staked_eth, - staked_eth_metrics.amount_staked_usd, - staked_eth_metrics.num_staked_eth_net_change, - staked_eth_metrics.amount_staked_usd_net_change -from staked_eth_metrics -where staked_eth_metrics.date < to_date(sysdate()) + s.date + , 'lido' as app + , 'DeFi' as category + , 'ethereum' as chain + , COALESCE(s.num_staked_eth, 0) as num_staked_eth + , COALESCE(s.amount_staked_usd, 0) as amount_staked_usd + , COALESCE(s.num_staked_eth_net_change, 0) as num_staked_eth_net_change + , COALESCE(s.amount_staked_usd_net_change, 0) as amount_staked_usd_net_change + , COALESCE(f.mev_priority_fees, 0) as mev_priority_fees + , COALESCE(f.block_rewards, 0) as block_rewards + , COALESCE(f.fees, 0) as fees + , COALESCE(f.primary_supply_side_revenue, 0) as primary_supply_side_revenue + , COALESCE(f.secondary_supply_side_revenue, 0) as secondary_supply_side_revenue + , COALESCE(f.total_supply_side_revenue, 0) as total_supply_side_revenue + , COALESCE(f.protocol_revenue, 0) as protocol_revenue + , COALESCE(f.operating_expenses, 0) as operating_expenses + , COALESCE(ti.token_incentives, 0) as token_incentives + , COALESCE(f.protocol_revenue, 0) - COALESCE(f.operating_expenses, 0) - COALESCE(ti.token_incentives, 0) as protocol_earnings + , COALESCE(t.treasury_value, 0) as treasury_value + , COALESCE(tn.treasury_native, 0) as treasury_native + , COALESCE(nt.net_treasury_value, 0) as net_treasury_value + , COALESCE(s.amount_staked_usd, 0) as net_deposits + , COALESCE(s.num_staked_eth, 0) as outstanding_supply + , COALESCE(s.amount_staked_usd, 0) as tvl + , COALESCE(p.fdmc, 0) as fdmc + , COALESCE(p.market_cap, 0) as market_cap + , COALESCE(p.token_volume, 0) as token_volume + , COALESCE(p.token_turnover_fdv, 0) as token_turnover_fdv + , COALESCE(p.token_turnover_circulating, 0) as token_turnover_circulating + , COALESCE(th.token_holder_count, 0) as token_holder_count +from staked_eth_metrics s +left join fees_revenue_expenses f using(date) +left join treasury_cte t using(date) +left join treasury_native_cte tn using(date) +left join net_treasury_cte nt using(date) +left join token_incentives_cte ti using(date) +left join price_data p using(date) +left join tokenholder_cte th using(date) +where s.date < current_date() \ No newline at end of file diff --git a/models/projects/lido/core/ez_lido_metrics_by_token.sql b/models/projects/lido/core/ez_lido_metrics_by_token.sql new file mode 100644 index 00000000..fa214fa7 --- /dev/null +++ b/models/projects/lido/core/ez_lido_metrics_by_token.sql @@ -0,0 +1,109 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="core", + alias="ez_metrics_by_token", + ) +}} + +WITH + fees AS ( + SELECT + date + , 'ETH' AS token + , block_rewards_native + , mev_priority_fees_native + , total_staking_yield_native AS fees + FROM {{ ref('fact_lido_fees_revs_expenses') }} + ) + , revenues_expenses AS ( + SELECT + date + , 'stETH' AS token + , operating_expenses_native + , protocol_revenue_native + , primary_supply_side_revenue_native + , secondary_supply_side_revenue_native + , total_supply_side_revenue_native + FROM {{ ref('fact_lido_fees_revs_expenses') }} + ) + , token_incentives_cte AS ( + SELECT + date + , token + , amount_native AS token_incentives_native + FROM + {{ ref('fact_lido_token_incentives') }} + ) + , eth_deposited AS ( + SELECT + date + , 'ETH' AS token + , num_staked_eth + FROM {{ ref('fact_lido_staked_eth_count_with_USD_and_change') }} + ) + , steth_outstanding AS ( + SELECT + date + , 'stETH' AS token + , num_staked_eth AS outstanding_supply_native + FROM {{ ref('fact_lido_staked_eth_count_with_USD_and_change') }} + ) + , treasury_cte AS ( + SELECT + date + , token + , SUM(native_balance) AS treasury_value_native + FROM + {{ ref('fact_lido_dao_treasury') }} + GROUP BY 1, 2 + ) + , treasury_native_cte AS ( + SELECT + date + , token + , SUM(native_balance) AS treasury_native + FROM + {{ ref('fact_lido_dao_treasury') }} + WHERE token = 'LDO' + GROUP BY 1, 2 + ) + , net_treasury_cte AS ( + SELECT + date + , token + , SUM(native_balance) AS net_treasury_value_native + FROM {{ ref('fact_lido_dao_treasury') }} + WHERE token <> 'LDO' + GROUP BY 1, 2 + ) +SELECT + date + , token + , COALESCE(f.mev_priority_fees_native, 0) AS mev_priority_fees + , COALESCE(f.block_rewards_native, 0) AS block_rewards + , COALESCE(f.fees, 0) AS fees + , COALESCE(primary_supply_side_revenue_native, 0) AS primary_supply_side_revenue + , COALESCE(secondary_supply_side_revenue_native, 0) AS secondary_supply_side_revenue + , COALESCE(total_supply_side_revenue_native, 0) AS total_supply_side_revenue + , COALESCE(protocol_revenue_native, 0) AS protocol_revenue + , COALESCE(operating_expenses_native, 0) AS operating_expenses + , COALESCE(ti.token_incentives_native, 0) AS token_incentives + , COALESCE(protocol_revenue_native, 0) - COALESCE(operating_expenses_native, 0) - COALESCE(ti.token_incentives_native, 0) AS protocol_earnings + , COALESCE(t.treasury_value_native, 0) AS treasury_value + , COALESCE(tn.treasury_native, 0) AS treasury_native + , COALESCE(nt.net_treasury_value_native, 0) AS net_treasury_value + , COALESCE(s.num_staked_eth, 0) AS net_deposits + , COALESCE(sto.outstanding_supply_native, 0) AS outstanding_supply + , COALESCE(s.num_staked_eth, 0) AS tvl +FROM fees f +FULL JOIN revenues_expenses e USING (date, token) +FULL JOIN treasury_cte t USING(date, token) +FULL JOIN treasury_native_cte tn USING(date, token) +FULL JOIN net_treasury_cte nt USING(date, token) +FULL JOIN token_incentives_cte ti USING(date, token) +LEFT JOIN steth_outstanding sto USING(date, token) +LEFT JOIN eth_deposited s USING(date, token) +WHERE date < CURRENT_DATE() \ No newline at end of file diff --git a/models/projects/lido/raw/fact_ldo_tokenholder_count.sql b/models/projects/lido/raw/fact_ldo_tokenholder_count.sql new file mode 100644 index 00000000..b37fe7c0 --- /dev/null +++ b/models/projects/lido/raw/fact_ldo_tokenholder_count.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="raw", + alias="fact_ldo_tokenholder_count", + ) +}} + +{{ token_holders('ethereum', '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32', '2020-12-17')}} diff --git a/models/projects/lido/raw/fact_lido_dao_treasury.sql b/models/projects/lido/raw/fact_lido_dao_treasury.sql new file mode 100644 index 00000000..f243875b --- /dev/null +++ b/models/projects/lido/raw/fact_lido_dao_treasury.sql @@ -0,0 +1,11 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="raw", + alias="fact_lido_dao_treasury", + ) +}} + +{{ get_treasury_balance('ethereum', '0x3e40d73eb977dc6a537af587d48316fee66e9c8c')}} \ No newline at end of file diff --git a/models/projects/lido/raw/fact_lido_fees_revs_expenses.sql b/models/projects/lido/raw/fact_lido_fees_revs_expenses.sql new file mode 100644 index 00000000..7ce49547 --- /dev/null +++ b/models/projects/lido/raw/fact_lido_fees_revs_expenses.sql @@ -0,0 +1,71 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="raw", + alias="fact_fees_revs_expenses", + ) +}} + +with steth_prices as ( + SELECT + hour, + price as price + FROM + ethereum_flipside.price.ez_prices_hourly + WHERE token_address = lower('0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84') +) +, fees_revs_expenses as ( + select + date(block_timestamp) as date + , 'ethereum' as chain + , 'stETH' as token + , sum(raw_amount_precise::number / 1e18 * 20) as total_staking_yield_native + , sum(raw_amount_precise::number / 1e18 * p.price * 20) as total_staking_yield_usd + from + ethereum_flipside.core.fact_token_transfers t + left join steth_prices p on date_trunc('hour', t.block_timestamp) = p.hour + where + contract_address = lower('0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84') + and from_address = lower('0x0000000000000000000000000000000000000000') + and to_address = lower('0x3e40d73eb977dc6a537af587d48316fee66e9c8c') + and origin_function_signature <> lower('0xf98a4eca') + group by 1 +) +, mev as ( + SELECT + date(hour) as date + , COALESCE(pc_dbt_db.prod.HEX_TO_INT(data)::number,0) / 1e18 as mev_priority_fees_amount_eth + , COALESCE(pc_dbt_db.prod.HEX_TO_INT(data)::number,0) / 1e18 * COALESCE(p.price, 0) as mev_priority_fees_amount_usd + FROM + ethereum_flipside.core.fact_event_logs l + LEFT JOIN ethereum_flipside.price.ez_prices_hourly p ON p.hour = date_trunc('hour', l.block_timestamp) + AND p.symbol = 'ETH' AND is_native = True + WHERE + topics [0] = '0xd27f9b0c98bdee27044afa149eadcd2047d6399cb6613a45c5b87e6aca76e6b5' +) +SELECT + f.date + -- NATIVE + , 'ETH' as symbol + , COALESCE(f.total_staking_yield_native, 0) - COALESCE(m.mev_priority_fees_amount_eth, 0) AS block_rewards_native + , COALESCE(m.mev_priority_fees_amount_eth, 0) AS mev_priority_fees_native + , COALESCE(f.total_staking_yield_native, 0) AS total_staking_yield_native + , COALESCE(f.total_staking_yield_native, 0) * 0.05 as operating_expenses_native + , COALESCE(f.total_staking_yield_native, 0) * 0.10 as protocol_revenue_native + , block_rewards_native * 0.90 as primary_supply_side_revenue_native + , mev_priority_fees_amount_eth * 0.90 as secondary_supply_side_revenue_native + , total_staking_yield_native * 0.90 as total_supply_side_revenue_native + -- USD + , COALESCE(f.total_staking_yield_usd, 0) - COALESCE(m.mev_priority_fees_amount_usd, 0) AS block_rewards + , COALESCE(m.mev_priority_fees_amount_usd, 0) AS mev_priority_fees + , COALESCE(f.total_staking_yield_usd, 0) AS total_staking_yield + , COALESCE(f.total_staking_yield_usd, 0) * 0.05 as operating_expenses + , COALESCE(f.total_staking_yield_usd, 0) * 0.10 as protocol_revenue + , block_rewards * 0.90 as primary_supply_side_revenue + , mev_priority_fees * 0.90 as secondary_supply_side_revenue + , total_staking_yield * 0.90 as total_supply_side_revenue +FROM + fees_revs_expenses f +LEFT JOIN mev m ON m.date = f.date \ No newline at end of file diff --git a/models/projects/lido/raw/fact_lido_token_incentives.sql b/models/projects/lido/raw/fact_lido_token_incentives.sql new file mode 100644 index 00000000..15a083d3 --- /dev/null +++ b/models/projects/lido/raw/fact_lido_token_incentives.sql @@ -0,0 +1,37 @@ +{{ + config( + materialized="table", + snowflake_warehouse="LIDO", + database="lido", + schema="raw", + alias="fact_lido_token_incentives", + ) +}} + +with ldo_prices as ( + SELECT + hour + , price + , token_address + , symbol + FROM ethereum_flipside.price.ez_prices_hourly + WHERE token_address in ( + lower('0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), + lower('0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84') + ) +) +select + date(p.hour) as date + , symbol as token + , sum(coalesce(t.raw_amount_precise::number / 1e18,0)) as amount_native + , sum(coalesce(t.raw_amount_precise::number / 1e18 * p.price,0)) as amount_usd +from ldo_prices p +LEFT JOIN ethereum_flipside.core.fact_token_transfers t + ON p.hour = DATE_TRUNC('hour', t.block_timestamp) + AND p.token_address = t.contract_address + AND t.from_address IN ( + LOWER('0x87d93d9b2c672bf9c9642d853a8682546a5012b5'), + LOWER('0x753D5167C31fBEB5b49624314d74A957Eb271709') + ) + and contract_address in (lower('0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), lower('0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84')) +GROUP BY 1, 2 \ No newline at end of file From 8daa24c41beaa908b6120fd762455b3740a8b315 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 19:14:33 -0400 Subject: [PATCH 161/213] Updating AAVE Protocol Revenue (#413) --- .../aave_deposits_borrows_lender_revenue.sql | 41 ++++++++++++++++--- models/projects/aave/core/ez_aave_metrics.sql | 1 - .../aave/core/ez_aave_metrics_by_token.sql | 1 - 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql index a986cfa3..4b16d518 100644 --- a/macros/lending/aave_deposits_borrows_lender_revenue.sql +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -16,17 +16,48 @@ with select block_timestamp::date as date , decoded_log:asset::string as reserve - , max(decoded_log:newReserveFactor::number) / 1E4 as reserve_factor - from ethereum_flipside.core.ez_decoded_event_logs + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from {{chain}}_flipside.core.ez_decoded_event_logs where contract_address = lower('{{reserve_factor_address}}') and event_name = 'ReserveFactorChanged' group by 1, 2 ) + , dates as ( + select distinct block_timestamp::date as date + from {{chain}}_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) , daily_rate as ( select date , reserve - , (stable_borrow_rate)/365 as stable_borrow_rate + , stable_borrow_rate/365 as stable_borrow_rate , (borrow_index / case when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) @@ -43,11 +74,11 @@ with ) - 1 as daily_liquidity_rate , coalesce( reserve_factor - , LAG(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + , old_reserve_factor , 0 ) as reserve_factor from average_liquidity_rate - left join reserve_factor_data using(date, reserve) + left join forward_filled_reserve_factor using(date, reserve) ) , data as ( select diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index 2a7342df..1a49dfee 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -236,7 +236,6 @@ select from aave_outstanding_supply_net_deposits_deposit_revenue left join aave_flashloan_fees using (date) left join aave_liquidation_supply_side_revenue using (date) -left join aave_reserve_factor_revenue using (date) left join aave_ecosystem_incentives using (date) left join dao_trading_revenue using (date) left join safety_incentives using (date) diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql index 9df5df4b..084cfbe2 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_token.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -288,7 +288,6 @@ select from aave_outstanding_supply_net_deposits_deposit_revenue left join aave_flashloan_fees using (date, chain, token_address) left join aave_liquidation_supply_side_revenue using (date, chain, token_address) -left join aave_reserve_factor_revenue using (date, chain, token_address) left join aave_ecosystem_incentives using (date, chain, token_address) left join dao_trading_revenue using (date, chain, token_address) left join safety_incentives using (date, chain, token_address) From 2805f198eca9d816d9980684d608e69397016063 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 19 Aug 2024 21:54:26 -0400 Subject: [PATCH 162/213] Coingecko fixing division by zero (#415) --- macros/metrics/get_coingecko_metrics.sql | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/macros/metrics/get_coingecko_metrics.sql b/macros/metrics/get_coingecko_metrics.sql index 9cebfec1..05c3e391 100644 --- a/macros/metrics/get_coingecko_metrics.sql +++ b/macros/metrics/get_coingecko_metrics.sql @@ -4,8 +4,14 @@ , shifted_token_price_usd as price , shifted_token_market_cap as market_cap , t2.total_supply * price as fdmc - , shifted_token_h24_volume_usd / market_cap as token_turnover_circulating - , shifted_token_h24_volume_usd / fdmc as token_turnover_fdv + , case + when market_cap > 0 then shifted_token_h24_volume_usd / market_cap + else 0 + end as token_turnover_circulating + , case + when fdmc > 0 then shifted_token_h24_volume_usd / fdmc + else 0 + end as token_turnover_fdv , shifted_token_h24_volume_usd as token_volume from {{ ref("fact_coingecko_token_date_adjusted_gold") }} t1 inner join From 21fd7750f8abcde3f5b64274bcf041eb045baad4 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Tue, 20 Aug 2024 13:03:24 +0300 Subject: [PATCH 163/213] add dai model (#416) --- databases.csv | 1 + models/projects/dai/core/ez_dai_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/dai/core/ez_dai_metrics.sql diff --git a/databases.csv b/databases.csv index d20e6075..b150ec82 100644 --- a/databases.csv +++ b/databases.csv @@ -28,6 +28,7 @@ CHAINLINK COMMON COMPOUND COSMOSHUB +DAI DEXALOT DFK EIGENPIE diff --git a/models/projects/dai/core/ez_dai_metrics.sql b/models/projects/dai/core/ez_dai_metrics.sql new file mode 100644 index 00000000..460971cd --- /dev/null +++ b/models/projects/dai/core/ez_dai_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="DAI", + database="dai", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("DAI") }} From bdd0a93a9f13c23eb525b4b41a3ae3a8456be5ed Mon Sep 17 00:00:00 2001 From: adim1973 Date: Tue, 20 Aug 2024 14:34:59 +0300 Subject: [PATCH 164/213] Add USDe dbt model (#417) --- databases.csv | 1 + models/projects/usde/core/ez_usde_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/usde/core/ez_usde_metrics.sql diff --git a/databases.csv b/databases.csv index b150ec82..0f3a0f87 100644 --- a/databases.csv +++ b/databases.csv @@ -77,5 +77,6 @@ TON TRON UNISWAP USDC +USDE USDT ZKSYNC diff --git a/models/projects/usde/core/ez_usde_metrics.sql b/models/projects/usde/core/ez_usde_metrics.sql new file mode 100644 index 00000000..04d83293 --- /dev/null +++ b/models/projects/usde/core/ez_usde_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="USDE", + database="usde", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("USDE") }} From 533d735c9953b170c806953c0e8987ddca0f3fa9 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Tue, 20 Aug 2024 15:57:44 +0300 Subject: [PATCH 165/213] add PYUSD dbt model (#418) --- databases.csv | 1 + models/projects/pyusd/core/ez_pyusd_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/pyusd/core/ez_pyusd_metrics.sql diff --git a/databases.csv b/databases.csv index 0f3a0f87..f5a7fee7 100644 --- a/databases.csv +++ b/databases.csv @@ -61,6 +61,7 @@ POLYGON POLYGON_FLIPSIDE POLYGON_ZK PUFFER_FINANCE +PYUSD RAINBOW_BRIDGE RENZO_PROTOCOL SEI diff --git a/models/projects/pyusd/core/ez_pyusd_metrics.sql b/models/projects/pyusd/core/ez_pyusd_metrics.sql new file mode 100644 index 00000000..ca04da2b --- /dev/null +++ b/models/projects/pyusd/core/ez_pyusd_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="PYUSD", + database="pyusd", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("PYUSD") }} From bc3afab4ed1e074b0d4cb3b5f3ea22605741fdf0 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 20 Aug 2024 09:31:55 -0400 Subject: [PATCH 166/213] Fixing Starknet (#419) --- models/staging/starknet/fact_starknet_transactions.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/staging/starknet/fact_starknet_transactions.sql b/models/staging/starknet/fact_starknet_transactions.sql index 013d0676..ae2ac1ee 100644 --- a/models/staging/starknet/fact_starknet_transactions.sql +++ b/models/staging/starknet/fact_starknet_transactions.sql @@ -58,6 +58,6 @@ left join prices on raw_date = prices.date and curr = t1.actual_fee_unit where coalesce(t1.sender_address_hex, t1.contract_address_hex) is not null {% if is_incremental() %} -- this filter will only be applied on an incremental run - and t2.block_timestamp + and t1.block_time >= (select dateadd('day', -7, max(block_timestamp)) from {{ this }}) {% endif %} \ No newline at end of file From bf2533a30a3818095ade7e318a1017525135ee51 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 20 Aug 2024 11:00:53 -0400 Subject: [PATCH 167/213] Stablecoin V2: Celo Stablecoin Supply (#420) --- .../agg_chain_stablecoin_transfers.sql | 60 ++++++++++++++----- macros/stablecoins/stablecoin_metrics.sql | 2 +- ...fact_celo_stablecoin_premint_addresses.sql | 12 ++++ 3 files changed, 57 insertions(+), 17 deletions(-) create mode 100644 models/metrics/stablecoins/contracts/fact_celo_stablecoin_premint_addresses.sql diff --git a/macros/stablecoins/agg_chain_stablecoin_transfers.sql b/macros/stablecoins/agg_chain_stablecoin_transfers.sql index 0bc132b7..ef37e343 100644 --- a/macros/stablecoins/agg_chain_stablecoin_transfers.sql +++ b/macros/stablecoins/agg_chain_stablecoin_transfers.sql @@ -198,17 +198,53 @@ from fact_{{ chain }}_stablecoin_contracts ) and transfer_type = 'nep141' + + {% elif chain in ("celo") %} + select + block_timestamp, + trunc(block_timestamp, 'day') as date, + block_number, + event_index as index, + transaction_hash as tx_hash, + from_address, + to_address, + from_address = '0x0000000000000000000000000000000000000000' + or lower(from_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_"~chain~"_stablecoin_premint_addresses") }} + ) + as is_mint, + to_address = '0x0000000000000000000000000000000000000000' + or lower(to_address) in ( + select distinct (lower(premint_address)) + from {{ ref("fact_"~chain~"_stablecoin_premint_addresses") }} + ) + as is_burn, + amount, + case + when is_mint then amount when is_burn then -1 * amount else 0 + end as inflow, + case + when not is_mint and not is_burn then amount else 0 + end as transfer_volume, + t1.contract_address, + contracts.symbol + from {{ref("fact_" ~ chain ~ "_token_transfers")}} t1 + join {{ref("fact_" ~chain~ "_stablecoin_contracts")}} contracts + on lower(t1.contract_address) = lower(contracts.contract_address) + where lower(t1.contract_address) in ( + select lower(contract_address) + from {{ref("fact_" ~chain~ "_stablecoin_contracts")}} + ) + -- DO NOT include mint / burn events here - they will be duped + and tx_status = 1 {% else %} select block_timestamp, trunc(block_timestamp, 'day') as date, block_number, event_index as index, - {% if chain in ("celo") %} - transaction_hash as tx_hash, - {% else %} - tx_hash, - {% endif %} + tx_hash, -- Notably, we do NOT use the Mint / Burn events here because the -- basic IERC20 interface does not require them to be implemented coalesce( @@ -222,7 +258,7 @@ {% if chain in ("ethereum") %} or lower(from_address) in ( select distinct (lower(premint_address)) - from {{ ref("fact_ethereum_stablecoin_premint_addresses") }} + from {{ ref("fact_"~chain~"_stablecoin_premint_addresses") }} ) {% endif %} as is_mint, @@ -231,7 +267,7 @@ {% if chain in ("ethereum") %} or lower(to_address) in ( select distinct (lower(premint_address)) - from {{ ref("fact_ethereum_stablecoin_premint_addresses") }} + from {{ ref("fact_"~chain~"_stablecoin_premint_addresses") }} ) {% endif %} as is_burn, @@ -264,11 +300,7 @@ end as transfer_volume, t1.contract_address, fact_{{ chain }}_stablecoin_contracts.symbol - {% if chain in ("celo")%} - from {{ref("fact_" ~ chain ~ "_decoded_events")}} t1 - {% else %} - from {{ chain }}_flipside.core.ez_decoded_event_logs t1 - {% endif %} + from {{ chain }}_flipside.core.ez_decoded_event_logs t1 join fact_{{ chain }}_stablecoin_contracts on lower(t1.contract_address) @@ -280,11 +312,7 @@ ) -- DO NOT include mint / burn events here - they will be duped and event_name in ('Transfer', 'Issue', 'Redeem') - {% if chain in ("celo") %} - and tx_status = 1 - {% else %} and tx_status = 'SUCCESS' - {% endif %} {% endif %} {% if is_incremental() %} and block_timestamp >= ( diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index e479488c..261135d8 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -12,7 +12,7 @@ when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_bridge_addresses")}}) then 0 else stablecoin_supply end as stablecoin_supply - {% elif chain in ('solana') %} + {% elif chain in ('solana', 'celo') %} , case when lower(address) in (select lower(premint_address) from {{ref("fact_"~chain~"_stablecoin_premint_addresses")}}) then 0 diff --git a/models/metrics/stablecoins/contracts/fact_celo_stablecoin_premint_addresses.sql b/models/metrics/stablecoins/contracts/fact_celo_stablecoin_premint_addresses.sql new file mode 100644 index 00000000..8672c5ee --- /dev/null +++ b/models/metrics/stablecoins/contracts/fact_celo_stablecoin_premint_addresses.sql @@ -0,0 +1,12 @@ +{{ config(materialized="table") }} +-- Premint addresses for ethereum are representative of USDT that has been bridged to other L2s +select contract_address, premint_address +from + ( + values + -- Un-released Supply + ( + '0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e', + '0x5754284f345afc66a98fbb0a0afe71e0f007b949' + ) + ) as results(contract_address, premint_address) \ No newline at end of file From d73f0eca25dc293271650a0be982d3f1ae00a009 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Tue, 20 Aug 2024 20:25:23 +0300 Subject: [PATCH 168/213] add BUSD dbt model (#421) --- databases.csv | 1 + models/projects/busd/core/ez_busd_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/busd/core/ez_busd_metrics.sql diff --git a/databases.csv b/databases.csv index f5a7fee7..23a070e6 100644 --- a/databases.csv +++ b/databases.csv @@ -20,6 +20,7 @@ BLAST BLAST_FLIPSIDE BSC BSC_FLIPSIDE +BUSD CARDANO CCTP CELESTIA diff --git a/models/projects/busd/core/ez_busd_metrics.sql b/models/projects/busd/core/ez_busd_metrics.sql new file mode 100644 index 00000000..427d37c7 --- /dev/null +++ b/models/projects/busd/core/ez_busd_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="BUSD", + database="busd", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("BUSD") }} From cd3e31e91fb2404b0a22296283366589a0a946cc Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 20 Aug 2024 14:20:15 -0400 Subject: [PATCH 169/213] converting current_date to to_date(sysdate()) (#422) --- models/projects/lido/core/ez_lido_metrics.sql | 2 +- models/projects/lido/core/ez_lido_metrics_by_chain.sql | 2 +- models/projects/lido/core/ez_lido_metrics_by_token.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/models/projects/lido/core/ez_lido_metrics.sql b/models/projects/lido/core/ez_lido_metrics.sql index 3151ab2e..5f1aafbc 100644 --- a/models/projects/lido/core/ez_lido_metrics.sql +++ b/models/projects/lido/core/ez_lido_metrics.sql @@ -106,4 +106,4 @@ left join net_treasury_cte nt using(date) left join token_incentives_cte ti using(date) left join price_data p using(date) left join tokenholder_cte th using(date) -where s.date < current_date() \ No newline at end of file +where s.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/lido/core/ez_lido_metrics_by_chain.sql b/models/projects/lido/core/ez_lido_metrics_by_chain.sql index aefbf4fb..a8554203 100644 --- a/models/projects/lido/core/ez_lido_metrics_by_chain.sql +++ b/models/projects/lido/core/ez_lido_metrics_by_chain.sql @@ -113,4 +113,4 @@ left join net_treasury_cte nt using(date) left join token_incentives_cte ti using(date) left join price_data p using(date) left join tokenholder_cte th using(date) -where s.date < current_date() \ No newline at end of file +where s.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/lido/core/ez_lido_metrics_by_token.sql b/models/projects/lido/core/ez_lido_metrics_by_token.sql index fa214fa7..92a6ba2b 100644 --- a/models/projects/lido/core/ez_lido_metrics_by_token.sql +++ b/models/projects/lido/core/ez_lido_metrics_by_token.sql @@ -106,4 +106,4 @@ FULL JOIN net_treasury_cte nt USING(date, token) FULL JOIN token_incentives_cte ti USING(date, token) LEFT JOIN steth_outstanding sto USING(date, token) LEFT JOIN eth_deposited s USING(date, token) -WHERE date < CURRENT_DATE() \ No newline at end of file +WHERE date < to_date(sysdate()) \ No newline at end of file From 71b4523ac74f61f572ab6890001297b84ec4cd73 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:44:21 -0400 Subject: [PATCH 170/213] Stablecoin DQ Issue: Celo (#423) --- macros/stablecoins/agg_chain_stablecoin_transfers.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/macros/stablecoins/agg_chain_stablecoin_transfers.sql b/macros/stablecoins/agg_chain_stablecoin_transfers.sql index ef37e343..540590f0 100644 --- a/macros/stablecoins/agg_chain_stablecoin_transfers.sql +++ b/macros/stablecoins/agg_chain_stablecoin_transfers.sql @@ -220,12 +220,12 @@ from {{ ref("fact_"~chain~"_stablecoin_premint_addresses") }} ) as is_burn, - amount, + amount / pow(10, num_decimals) as amount, case - when is_mint then amount when is_burn then -1 * amount else 0 + when is_mint then amount / pow(10, num_decimals) when is_burn then -1 * amount / pow(10, num_decimals) else 0 end as inflow, case - when not is_mint and not is_burn then amount else 0 + when not is_mint and not is_burn then amount / pow(10, num_decimals) else 0 end as transfer_volume, t1.contract_address, contracts.symbol From f88e5580284dfe7257822b231999297e9879cb51 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:36:51 -0400 Subject: [PATCH 171/213] Stablecoin V2.5: Stablecoin and Sector Breakdown (#425) --- macros/stablecoins/stablecoin_breakdown.sql | 8 ++++++-- .../agg_daily_stablecoin_breakdown_category_symbol.sql | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol.sql diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql index 97e13903..e5ca592e 100644 --- a/macros/stablecoins/stablecoin_breakdown.sql +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -1,6 +1,10 @@ -{% macro stablecoin_breakdown(breakdowns=[]) %} +{% macro stablecoin_breakdown(breakdowns=[], granularity='daily') %} select - date + {% if granularity == 'daily' %} + date + {% elif granularity == 'monthly' %} + date_trunc('month', date) as date + {% endif %} {% for breakdown in breakdowns %} , {{ breakdown }} {% endfor %} diff --git a/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol.sql new file mode 100644 index 00000000..68195f6c --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_daily_stablecoin_breakdown_category_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{stablecoin_breakdown(["symbol", "category"])}} From 19faf13a9005967902aa87548308d74e739e8f57 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 20 Aug 2024 14:00:18 -0700 Subject: [PATCH 172/213] Add prediction market metrics to ez_drift_metrics_by_chain (#412) --- .../projects/drift/core/ez_drift_metrics.sql | 18 +++++++++++ models/staging/drift/__drift__sources.yml | 4 +-- .../drift/fact_drift_prediction_markets.sql | 31 +++++-------------- 3 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 models/projects/drift/core/ez_drift_metrics.sql diff --git a/models/projects/drift/core/ez_drift_metrics.sql b/models/projects/drift/core/ez_drift_metrics.sql new file mode 100644 index 00000000..4a6b43a8 --- /dev/null +++ b/models/projects/drift/core/ez_drift_metrics.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="DRIFT", + database="drift", + schema="core", + alias="ez_metrics", + ) +}} + +SELECT + date, + 'drift' AS app, + 'DeFi' AS category, + "'TRUMP-WIN-2024-BET'" AS trump_prediction_market_100k_buy_order_price, + "'KAMALA-POPULAR-VOTE-2024-BET'" AS kamala_prediction_market_100k_buy_order_price +FROM {{ ref("fact_drift_prediction_markets") }} +PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) diff --git a/models/staging/drift/__drift__sources.yml b/models/staging/drift/__drift__sources.yml index c0687612..32522788 100644 --- a/models/staging/drift/__drift__sources.yml +++ b/models/staging/drift/__drift__sources.yml @@ -4,5 +4,5 @@ sources: database: LANDING_DATABASE tables: - name: raw_drift_trading_volume - - name: raw_drift_fill_price_kamala - - name: raw_drift_fill_price_trump + - name: raw_drift_fill_price_by_market + \ No newline at end of file diff --git a/models/staging/drift/fact_drift_prediction_markets.sql b/models/staging/drift/fact_drift_prediction_markets.sql index b83f7991..458e669b 100644 --- a/models/staging/drift/fact_drift_prediction_markets.sql +++ b/models/staging/drift/fact_drift_prediction_markets.sql @@ -1,25 +1,10 @@ {{ config(materialized="table") }} -with - trump_data as ( - select - DATE_TRUNC('DAY', extraction_date)::date as date, - source_json as trump_price - from {{ source("PROD_LANDING", "raw_drift_fill_price_trump") }} - ), kamala_data as ( - select - DATE_TRUNC('DAY', extraction_date)::date as date, - source_json as kamala_price - from {{ source("PROD_LANDING", "raw_drift_fill_price_kamala") }} - ) -select - trump_data.date, - 'drift' as app, - 'DeFi' as category, - 'solana' as chain, - trump_price, - kamala_price -from trump_data -left join kamala_data - on trump_data.date = kamala_data.date - +SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_buy_order_price +FROM {{ source("PROD_LANDING", "raw_drift_fill_price_by_market") }}, +lateral flatten(input => parse_json(source_json)) +GROUP BY + 1, 2 From 3eed3ecb74fcf4412b4d2c9e210f631cb9305ef9 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 20 Aug 2024 18:44:15 -0400 Subject: [PATCH 173/213] Son/sei fact transactions (#426) --- .../sei/fact_sei_wasm_transactions.sql | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 models/staging/sei/fact_sei_wasm_transactions.sql diff --git a/models/staging/sei/fact_sei_wasm_transactions.sql b/models/staging/sei/fact_sei_wasm_transactions.sql new file mode 100644 index 00000000..336fa70e --- /dev/null +++ b/models/staging/sei/fact_sei_wasm_transactions.sql @@ -0,0 +1,125 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="SEI_LG", + ) +}} +with + new_contracts as ( + select distinct + address, + contract.name, + contract.category, + contract.sub_category, + contract.app, + contract.friendly_name + from {{ ref("dim_contracts_gold") }} as contract + where chain = 'sei' + ), + prices as ( + select date as price_date, shifted_token_price_usd as price + from pc_dbt_db.prod.fact_coingecko_token_date_adjusted_gold + where coingecko_id = 'sei-network' + union + select dateadd('day', -1, date) as price_date, token_current_price as price + from pc_dbt_db.prod.fact_coingecko_token_realtime_data + where token_id = 'sei-network' + ), + collapsed_prices as ( + select price_date, max(price) as price from prices group by price_date + ), + msg_atts_base AS ( + SELECT + max(block_timestamp) as block_timestamp, + max(date(block_timestamp)) as raw_date, + max(tx_succeeded) as tx_succeeded, + tx_id, + max (case when attribute_key in ('_contract_address', 'contract_address') then attribute_value else null end) as contract_address_1, + max ( + case + when msg_type = 'transfer' then 'sei_token_transfer' + when msg_type = 'ibc_transfer' then 'sei_ibc_transfer' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/seiprotocol.seichain.oracle.MsgAggregateExchangeRateVote' + then 'sei_oracle_votes' + when msg_type = 'instantiate' AND attribute_key = 'contract_address' then 'sei_create_contract' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/cosmos.gov.v1beta1.MsgVote' then 'sei_governance_votes' + when msg_type = 'message' and attribute_key = 'module' and attribute_key = 'staking' then 'sei_staking' + when msg_type = 'message' and attribute_key = 'module' and attribute_value = 'oracle' then 'sei_oracle' + when msg_type = 'withdraw_rewards' then 'sei_staking_withdraw' + when msg_type = 'aggregate_vote' then 'sei_voting' + when msg_type = 'coin_spent' then 'sei_staking_coin_spent' + when msg_type in ('delegate','redelegate','unbond','create_validator') then 'sei_staking' + else null + end + ) as contract_address_2, + max(inserted_timestamp) as inserted_timestamp + FROM + sei_flipside.core.fact_msg_attributes + {% if is_incremental() %} + WHERE + inserted_timestamp >= ( + SELECT + MAX(inserted_timestamp) + FROM + {{ this }} + ) + {% endif %} + GROUP BY tx_id + ), + transaction_contract_data as ( + SELECT + tx_id as tx_hash + , block_timestamp + , raw_date + , tx_succeeded + , coalesce(contract_address_1, contract_address_2) as contract_address + , inserted_timestamp + FROM + msg_atts_base + ) + SELECT + t1.tx_hash + , t1.block_timestamp + , t1.raw_date + , t1.tx_succeeded + , t1.contract_address + , t3.name + , t3.app + , t3.friendly_name + , t3.sub_category + , t3.category + , t2.tx_from as signer + , (split(t2.fee, 'usei')[0] / pow(10, 6)) as tx_fee + , (split(t2.fee, 'usei')[0] / pow(10, 6)) * t4.price as gas_usd + , t1.inserted_timestamp + , null as user_type + , null as address_life_span + , null as cur_total_txns + , null as cur_distinct_to_address_count + , null as probability + , null as engagement_type + , null as balance_usd + , null as native_token_balance + , null as stablecoin_balance + FROM + transaction_contract_data as t1 + LEFT JOIN + sei_flipside.core.fact_transactions as t2 + ON t1.tx_hash = t2.tx_id + LEFT JOIN + new_contracts as t3 + ON t1.contract_address = t3.address + LEFT JOIN + prices as t4 + ON t1.raw_date = t4.price_date + WHERE + t1.block_timestamp < date(sysdate()) + {% if is_incremental() %} + AND t2.inserted_timestamp >= ( + SELECT + max(inserted_timestamp) + FROM + {{ this }} + ) + {% endif %} From 0a60d043d288d934682417fa32e8043e29f36e93 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 20 Aug 2024 19:30:48 -0400 Subject: [PATCH 174/213] Stablecoin V2.5: Adding weekly and monthly breakdowns (#427) --- macros/stablecoins/stablecoin_breakdown.sql | 8 ++------ .../agg_monthly_stablecoin_breakdown_category.sql | 3 +++ .../agg_monthly_stablecoin_breakdown_category_chain.sql | 3 +++ .../agg_monthly_stablecoin_breakdown_category_symbol.sql | 3 +++ ...monthly_stablecoin_breakdown_category_symbol_chain.sql | 4 ++++ .../breakdowns/agg_monthly_stablecoin_breakdown_chain.sql | 3 +++ .../agg_monthly_stablecoin_breakdown_symbol.sql | 3 +++ .../agg_monthly_stablecoin_breakdown_symbol_chain.sql | 3 +++ .../agg_weekly_stablecoin_breakdown_category.sql | 3 +++ .../agg_weekly_stablecoin_breakdown_category_chain.sql | 3 +++ .../agg_weekly_stablecoin_breakdown_category_symbol.sql | 3 +++ ..._weekly_stablecoin_breakdown_category_symbol_chain.sql | 3 +++ .../breakdowns/agg_weekly_stablecoin_breakdown_chain.sql | 3 +++ .../breakdowns/agg_weekly_stablecoin_breakdown_symbol.sql | 3 +++ .../agg_weekly_stablecoin_breakdown_symbol_chain.sql | 3 +++ 15 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol_chain.sql diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql index e5ca592e..ce52c433 100644 --- a/macros/stablecoins/stablecoin_breakdown.sql +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -1,10 +1,6 @@ -{% macro stablecoin_breakdown(breakdowns=[], granularity='daily') %} +{% macro stablecoin_breakdown(breakdowns=[], granularity='day') %} select - {% if granularity == 'daily' %} - date - {% elif granularity == 'monthly' %} - date_trunc('month', date) as date - {% endif %} + date_trunc('{{granularity}}', date) as date {% for breakdown in breakdowns %} , {{ breakdown }} {% endfor %} diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category.sql new file mode 100644 index 00000000..b15aeaff --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["category"], 'month') }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_chain.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_chain.sql new file mode 100644 index 00000000..71b4d4d2 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{stablecoin_breakdown(["chain", "category"], "month")}} diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol.sql new file mode 100644 index 00000000..e43dcc93 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{stablecoin_breakdown(["symbol", "category"], "month")}} diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol_chain.sql new file mode 100644 index 00000000..20b0713f --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_category_symbol_chain.sql @@ -0,0 +1,4 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["chain", "category", "symbol"], "month") }} + diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_chain.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_chain.sql new file mode 100644 index 00000000..d6449eb9 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["chain"], "month") }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol.sql new file mode 100644 index 00000000..e47a966e --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["symbol"], "month") }} diff --git a/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol_chain.sql new file mode 100644 index 00000000..a055836a --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_monthly_stablecoin_breakdown_symbol_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["symbol", "chain"], "month") }} diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category.sql new file mode 100644 index 00000000..f7b2583f --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["category"], 'week') }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_chain.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_chain.sql new file mode 100644 index 00000000..5c6c87c8 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{stablecoin_breakdown(["chain", "category"], "week")}} diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol.sql new file mode 100644 index 00000000..2f48e83c --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{stablecoin_breakdown(["symbol", "category"], "week")}} diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol_chain.sql new file mode 100644 index 00000000..67145e94 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_category_symbol_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["chain", "category", "symbol"], "week") }} diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_chain.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_chain.sql new file mode 100644 index 00000000..81d744a7 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG") }} + +{{ stablecoin_breakdown(["chain"], "week") }} \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol.sql new file mode 100644 index 00000000..9bc959eb --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["symbol"], "week") }} diff --git a/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol_chain.sql b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol_chain.sql new file mode 100644 index 00000000..5739fcc0 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_weekly_stablecoin_breakdown_symbol_chain.sql @@ -0,0 +1,3 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +{{ stablecoin_breakdown(["symbol", "chain"], "week") }} From e89d45a7272849b54ec9532a2f0785a219e1cdd4 Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:38:23 -0700 Subject: [PATCH 175/213] Add polymarket trump and kamala metrics (#428) --- .../polymarket/core/ez_polymarket_metrics.sql | 18 ++++++++++++++++++ .../polymarket/__polymarket__sources.yml | 7 +++++++ .../fact_polymarket_prediction_markets.sql | 10 ++++++++++ 3 files changed, 35 insertions(+) create mode 100644 models/projects/polymarket/core/ez_polymarket_metrics.sql create mode 100644 models/staging/polymarket/__polymarket__sources.yml create mode 100644 models/staging/polymarket/fact_polymarket_prediction_markets.sql diff --git a/models/projects/polymarket/core/ez_polymarket_metrics.sql b/models/projects/polymarket/core/ez_polymarket_metrics.sql new file mode 100644 index 00000000..8d9c4ddd --- /dev/null +++ b/models/projects/polymarket/core/ez_polymarket_metrics.sql @@ -0,0 +1,18 @@ +{{ + config( + materialized="table", + snowflake_warehouse="POLYMARKET", + database="polymarket", + schema="core", + alias="ez_metrics", + ) +}} + +SELECT + date, + 'polymarket' AS app, + 'DeFi' AS category, + "'21742633143463906290569050155826241533067272736897614950488156847949938836455'" AS trump_prediction_market_100k_buy_order_price, + "'21271000291843361249209065706097167029083067325856089903026951915683588703117'" AS kamala_prediction_market_100k_buy_order_price +FROM {{ ref("fact_polymarket_prediction_markets") }} +PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) diff --git a/models/staging/polymarket/__polymarket__sources.yml b/models/staging/polymarket/__polymarket__sources.yml new file mode 100644 index 00000000..94b8c339 --- /dev/null +++ b/models/staging/polymarket/__polymarket__sources.yml @@ -0,0 +1,7 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_polymarket_fill_price_by_market + \ No newline at end of file diff --git a/models/staging/polymarket/fact_polymarket_prediction_markets.sql b/models/staging/polymarket/fact_polymarket_prediction_markets.sql new file mode 100644 index 00000000..4048f968 --- /dev/null +++ b/models/staging/polymarket/fact_polymarket_prediction_markets.sql @@ -0,0 +1,10 @@ +{{ config(materialized="table") }} + +SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_buy_order_price +FROM {{ source("PROD_LANDING", "raw_polymarket_fill_price_by_market") }}, +lateral flatten(input => parse_json(source_json)) +GROUP BY + 1, 2 From b0eea5bfbe21561f5c29c4b0b7f38d2dd7c67eba Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:48:51 -0400 Subject: [PATCH 176/213] updating AAVE ez_metric tables (#429) --- models/projects/aave/core/ez_aave_metrics.sql | 19 +++++++++++++++--- .../aave/core/ez_aave_metrics_by_chain.sql | 17 +++++++++++++++- .../aave/core/ez_aave_metrics_by_token.sql | 20 +++++++++++++++++-- 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/models/projects/aave/core/ez_aave_metrics.sql b/models/projects/aave/core/ez_aave_metrics.sql index 1a49dfee..91cfaee6 100644 --- a/models/projects/aave/core/ez_aave_metrics.sql +++ b/models/projects/aave/core/ez_aave_metrics.sql @@ -131,16 +131,29 @@ with select * from {{ref("fact_aave_v2_collector")}} union all select * from {{ref("fact_aave_safety_module")}} + union all + select * from {{ref("fact_aave_ecosystem_reserve")}} ) , treasury as ( select date - , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native , sum(amount_usd) as treasury_value from aave_treasury group by date ) + , aave_net_treasury as ( + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_aavura_treasury")}} + ) + , net_treasury_data as ( + select + date + , sum(amount_usd) as net_treasury_value + from aave_net_treasury + group by 1 + ) , aave_ecosystem_incentives as ( select date @@ -214,7 +227,6 @@ select , gho_revenue , coalesce(reserve_factor_revenue, 0) as reserve_factor_revenue , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue - -- Checkouted , ecosystem_incentives , safety_incentives , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives @@ -224,8 +236,8 @@ select , net_deposits , tvl , treasury_value - , net_treasury_value , treasury_value_native + , net_treasury_value , token_holder_count , price , h24_volume @@ -241,6 +253,7 @@ left join dao_trading_revenue using (date) left join safety_incentives using (date) left join gho_treasury_revenue using (date) left join treasury using (date) +left join net_treasury_data using (date) left join aave_token_holders using (date) left join coingecko_metrics using (date) where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics_by_chain.sql b/models/projects/aave/core/ez_aave_metrics_by_chain.sql index 959ad555..e2aa0329 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_chain.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_chain.sql @@ -134,17 +134,31 @@ with select * from {{ref("fact_aave_v2_collector")}} union all select * from {{ref("fact_aave_safety_module")}} + union all + select * from {{ref("fact_aave_ecosystem_reserve")}} ) , treasury as ( select date , chain - , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native , sum(amount_usd) as treasury_value from aave_treasury group by date, 2 ) + , aave_net_treasury as ( + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_aavura_treasury")}} + ) + , net_treasury_data as ( + select + date + , chain + , sum(amount_usd) as net_treasury_value + from aave_net_treasury + group by 1, 2 + ) , aave_ecosystem_incentives as ( select date @@ -215,4 +229,5 @@ left join dao_trading_revenue using (date, chain) left join safety_incentives using (date, chain) left join gho_treasury_revenue using (date, chain) left join treasury using (date, chain) +left join net_treasury_data using (date, chain) where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/projects/aave/core/ez_aave_metrics_by_token.sql b/models/projects/aave/core/ez_aave_metrics_by_token.sql index 084cfbe2..28506b46 100644 --- a/models/projects/aave/core/ez_aave_metrics_by_token.sql +++ b/models/projects/aave/core/ez_aave_metrics_by_token.sql @@ -157,14 +157,14 @@ with select * from {{ref("fact_aave_v2_collector")}} union all select * from {{ref("fact_aave_safety_module")}} + union all + select * from {{ref("fact_aave_ecosystem_reserve")}} ) , treasury as ( select date , chain , token_address - , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as net_treasury_value - , sum(case when token_address <> lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_nominal else 0 end) as net_treasury_value_nominal , sum(amount_usd) as treasury_value , sum(amount_nominal) as treasury_value_nominal , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native @@ -172,6 +172,21 @@ with from aave_treasury group by date, chain, token_address ) + , aave_net_treasury as ( + select * from {{ref("fact_aave_v2_collector")}} + union all + select * from {{ref("fact_aave_aavura_treasury")}} + ) + , net_treasury_data as ( + select + date + , chain + , token_address + , sum(amount_usd) as net_treasury_value + , sum(amount_nominal) as net_treasury_value_nominal + from aave_net_treasury + group by 1, 2, 3 + ) , dao_trading_revenue as ( select date @@ -293,4 +308,5 @@ left join dao_trading_revenue using (date, chain, token_address) left join safety_incentives using (date, chain, token_address) left join gho_treasury_revenue using (date, chain, token_address) left join treasury using (date, chain, token_address) +left join net_treasury_data using (date, chain, token_address) where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) \ No newline at end of file From d6ec9585ff8d2951626555842cc1754113a9230c Mon Sep 17 00:00:00 2001 From: Alex Kan <29241719+akan72@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:50:52 -0700 Subject: [PATCH 177/213] Add sell metrics for drift + polymarket (#430) --- .../projects/drift/core/ez_drift_metrics.sql | 7 +-- .../polymarket/core/ez_polymarket_metrics.sql | 9 ++-- models/staging/drift/__drift__sources.yml | 1 + .../drift/fact_drift_prediction_markets.sql | 49 ++++++++++++++++--- .../polymarket/__polymarket__sources.yml | 1 + .../fact_polymarket_prediction_markets.sql | 49 ++++++++++++++++--- 6 files changed, 95 insertions(+), 21 deletions(-) diff --git a/models/projects/drift/core/ez_drift_metrics.sql b/models/projects/drift/core/ez_drift_metrics.sql index 4a6b43a8..8ccce725 100644 --- a/models/projects/drift/core/ez_drift_metrics.sql +++ b/models/projects/drift/core/ez_drift_metrics.sql @@ -12,7 +12,8 @@ SELECT date, 'drift' AS app, 'DeFi' AS category, - "'TRUMP-WIN-2024-BET'" AS trump_prediction_market_100k_buy_order_price, - "'KAMALA-POPULAR-VOTE-2024-BET'" AS kamala_prediction_market_100k_buy_order_price + trump_prediction_market_100k_buy_order_price, + kamala_prediction_market_100k_buy_order_price, + trump_prediction_market_100k_sell_order_price, + kamala_prediction_market_100k_sell_order_price FROM {{ ref("fact_drift_prediction_markets") }} -PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) diff --git a/models/projects/polymarket/core/ez_polymarket_metrics.sql b/models/projects/polymarket/core/ez_polymarket_metrics.sql index 8d9c4ddd..f1702202 100644 --- a/models/projects/polymarket/core/ez_polymarket_metrics.sql +++ b/models/projects/polymarket/core/ez_polymarket_metrics.sql @@ -12,7 +12,8 @@ SELECT date, 'polymarket' AS app, 'DeFi' AS category, - "'21742633143463906290569050155826241533067272736897614950488156847949938836455'" AS trump_prediction_market_100k_buy_order_price, - "'21271000291843361249209065706097167029083067325856089903026951915683588703117'" AS kamala_prediction_market_100k_buy_order_price -FROM {{ ref("fact_polymarket_prediction_markets") }} -PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) + trump_prediction_market_100k_buy_order_price, + kamala_prediction_market_100k_buy_order_price, + trump_prediction_market_100k_sell_order_price, + kamala_prediction_market_100k_sell_order_price +FROM {{ ref("fact_polymarket_prediction_markets") }} \ No newline at end of file diff --git a/models/staging/drift/__drift__sources.yml b/models/staging/drift/__drift__sources.yml index 32522788..1dd655bb 100644 --- a/models/staging/drift/__drift__sources.yml +++ b/models/staging/drift/__drift__sources.yml @@ -5,4 +5,5 @@ sources: tables: - name: raw_drift_trading_volume - name: raw_drift_fill_price_by_market + - name: raw_drift_sell_fill_price_by_market \ No newline at end of file diff --git a/models/staging/drift/fact_drift_prediction_markets.sql b/models/staging/drift/fact_drift_prediction_markets.sql index 458e669b..5e0d2fc6 100644 --- a/models/staging/drift/fact_drift_prediction_markets.sql +++ b/models/staging/drift/fact_drift_prediction_markets.sql @@ -1,10 +1,45 @@ {{ config(materialized="table") }} +WITH buys AS ( + SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_buy_order_price + FROM {{ source("PROD_LANDING", "raw_drift_fill_price_by_market") }}, + lateral flatten(input => parse_json(source_json)) + GROUP BY + 1, 2 +), sells AS ( + SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_sell_order_price + FROM {{ source("PROD_LANDING", "raw_drift_sell_fill_price_by_market") }}, + lateral flatten(input => parse_json(source_json)) + GROUP BY + 1, 2 +), pivoted_buys AS ( + SELECT + date, + "'TRUMP-WIN-2024-BET'" AS trump_prediction_market_100k_buy_order_price, + "'KAMALA-POPULAR-VOTE-2024-BET'" AS kamala_prediction_market_100k_buy_order_price + FROM buys + PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) + +), pivoted_sells AS ( + SELECT + date, + "'TRUMP-WIN-2024-BET'" AS trump_prediction_market_100k_sell_order_price, + "'KAMALA-POPULAR-VOTE-2024-BET'" AS kamala_prediction_market_100k_sell_order_price + FROM sells + PIVOT(SUM(PREDICTION_MARKET_100K_SELL_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) +) SELECT - DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, - value:market::varchar as market, - AVG(value:average_fill_price) as prediction_market_100k_buy_order_price -FROM {{ source("PROD_LANDING", "raw_drift_fill_price_by_market") }}, -lateral flatten(input => parse_json(source_json)) -GROUP BY - 1, 2 + pivoted_buys.date, + trump_prediction_market_100k_buy_order_price, + kamala_prediction_market_100k_buy_order_price, + trump_prediction_market_100k_sell_order_price, + kamala_prediction_market_100k_sell_order_price +FROM pivoted_buys +LEFT JOIN pivoted_sells + ON pivoted_buys.date = pivoted_sells.date \ No newline at end of file diff --git a/models/staging/polymarket/__polymarket__sources.yml b/models/staging/polymarket/__polymarket__sources.yml index 94b8c339..3bd4235e 100644 --- a/models/staging/polymarket/__polymarket__sources.yml +++ b/models/staging/polymarket/__polymarket__sources.yml @@ -4,4 +4,5 @@ sources: database: LANDING_DATABASE tables: - name: raw_polymarket_fill_price_by_market + - name: raw_polymarket_sell_fill_price_by_market \ No newline at end of file diff --git a/models/staging/polymarket/fact_polymarket_prediction_markets.sql b/models/staging/polymarket/fact_polymarket_prediction_markets.sql index 4048f968..2975be48 100644 --- a/models/staging/polymarket/fact_polymarket_prediction_markets.sql +++ b/models/staging/polymarket/fact_polymarket_prediction_markets.sql @@ -1,10 +1,45 @@ {{ config(materialized="table") }} +WITH buys AS ( + SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_buy_order_price + FROM {{ source("PROD_LANDING", "raw_polymarket_fill_price_by_market") }}, + lateral flatten(input => parse_json(source_json)) + GROUP BY + 1, 2 +), sells AS ( + SELECT + DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, + value:market::varchar as market, + AVG(value:average_fill_price) as prediction_market_100k_sell_order_price + FROM {{ source("PROD_LANDING", "raw_polymarket_sell_fill_price_by_market") }}, + lateral flatten(input => parse_json(source_json)) + GROUP BY + 1, 2 +), pivoted_buys AS ( + SELECT + date, + "'21742633143463906290569050155826241533067272736897614950488156847949938836455'" AS trump_prediction_market_100k_buy_order_price, + "'21271000291843361249209065706097167029083067325856089903026951915683588703117'" AS kamala_prediction_market_100k_buy_order_price + FROM buys + PIVOT(SUM(PREDICTION_MARKET_100K_BUY_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) + +), pivoted_sells AS ( + SELECT + date, + "'21742633143463906290569050155826241533067272736897614950488156847949938836455'" AS trump_prediction_market_100k_sell_order_price, + "'21271000291843361249209065706097167029083067325856089903026951915683588703117'" AS kamala_prediction_market_100k_sell_order_price + FROM sells + PIVOT(SUM(PREDICTION_MARKET_100K_SELL_ORDER_PRICE) FOR market IN (ANY ORDER BY market)) +) SELECT - DATEADD('DAY', -1, DATE_TRUNC('DAY', extraction_date)::date) AS date, - value:market::varchar as market, - AVG(value:average_fill_price) as prediction_market_100k_buy_order_price -FROM {{ source("PROD_LANDING", "raw_polymarket_fill_price_by_market") }}, -lateral flatten(input => parse_json(source_json)) -GROUP BY - 1, 2 + pivoted_buys.date, + trump_prediction_market_100k_buy_order_price, + kamala_prediction_market_100k_buy_order_price, + trump_prediction_market_100k_sell_order_price, + kamala_prediction_market_100k_sell_order_price +FROM pivoted_buys +LEFT JOIN pivoted_sells + ON pivoted_buys.date = pivoted_sells.date \ No newline at end of file From e2bffd2d917dbb3b6598e31df4d241aa2ec1d8cf Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:13:26 -0400 Subject: [PATCH 178/213] Stablecoin V2.5 (#431) --- macros/stablecoins/stablecoin_breakdown.sql | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql index ce52c433..d102b7d0 100644 --- a/macros/stablecoins/stablecoin_breakdown.sql +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -26,8 +26,13 @@ select else 0 end as p2p_stablecoin_avg_txn_value - , sum(stablecoin_supply) as stablecoin_supply - , sum(case when is_wallet::number = 1 then stablecoin_supply else 0 end) as p2p_stablecoin_supply + {% if granularity == 'day' %} + , sum(stablecoin_supply) as stablecoin_supply + , sum(case when is_wallet::number = 1 then stablecoin_supply else 0 end) as p2p_stablecoin_supply + {% else %} + , sum(case when date = date_trunc('{{granularity}}', date) then stablecoin_supply else 0 end) as stablecoin_supply + , sum(case when is_wallet::number = 1 and date = date_trunc('{{granularity}}', date) then stablecoin_supply else 0 end) as p2p_stablecoin_supply + {% endif %} from {{ ref("agg_daily_stablecoin_breakdown_silver") }} group by date {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} order by date From 234bf5f08b05ad39c9c46d456e330001211191ec Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 21 Aug 2024 18:50:53 -0400 Subject: [PATCH 179/213] Stablecoin v2.5: (#432) --- macros/stablecoins/stablecoin_breakdown.sql | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql index d102b7d0..61f33b6f 100644 --- a/macros/stablecoins/stablecoin_breakdown.sql +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -1,6 +1,7 @@ {% macro stablecoin_breakdown(breakdowns=[], granularity='day') %} select - date_trunc('{{granularity}}', date) as date + date_trunc('{{granularity}}', date) as date_granularity + , date_trunc('{{granularity}}', date) as date {% for breakdown in breakdowns %} , {{ breakdown }} {% endfor %} @@ -34,9 +35,6 @@ select , sum(case when is_wallet::number = 1 and date = date_trunc('{{granularity}}', date) then stablecoin_supply else 0 end) as p2p_stablecoin_supply {% endif %} from {{ ref("agg_daily_stablecoin_breakdown_silver") }} -group by date {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} -order by date - - - +group by date_granularity, date {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} +order by date_granularity {% endmacro %} \ No newline at end of file From 06bb7919319308e5e053c4d879321f8d8bbe5c3d Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 21 Aug 2024 21:04:16 -0400 Subject: [PATCH 180/213] Stablecoin V2.5: Clean up stablecoin breakdown (#433) --- macros/stablecoins/stablecoin_breakdown.sql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/macros/stablecoins/stablecoin_breakdown.sql b/macros/stablecoins/stablecoin_breakdown.sql index 61f33b6f..e1e126fd 100644 --- a/macros/stablecoins/stablecoin_breakdown.sql +++ b/macros/stablecoins/stablecoin_breakdown.sql @@ -1,7 +1,6 @@ {% macro stablecoin_breakdown(breakdowns=[], granularity='day') %} select date_trunc('{{granularity}}', date) as date_granularity - , date_trunc('{{granularity}}', date) as date {% for breakdown in breakdowns %} , {{ breakdown }} {% endfor %} @@ -35,6 +34,6 @@ select , sum(case when is_wallet::number = 1 and date = date_trunc('{{granularity}}', date) then stablecoin_supply else 0 end) as p2p_stablecoin_supply {% endif %} from {{ ref("agg_daily_stablecoin_breakdown_silver") }} -group by date_granularity, date {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} +group by date_granularity {% for breakdown in breakdowns %}, {{ breakdown }} {% endfor %} order by date_granularity {% endmacro %} \ No newline at end of file From ebed7f36ef16cc6f79ad2716ad9a66702afd2541 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 22 Aug 2024 18:36:17 -0400 Subject: [PATCH 181/213] Stablecoin V2.5: updating stablecoin pricing for non-usd stablecoins (#434) --- macros/coingecko/avg_coingecko_price_7d.sql | 7 +++++++ macros/p2p/p2p_stablecoin_transfers.sql | 21 ++++++++++++------- macros/stablecoins/stablecoin_balances.sql | 8 ++++--- macros/stablecoins/stablecoin_metrics_all.sql | 9 +++++++- .../stablecoin_metrics_artemis.sql | 15 ++++++++++++- 5 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 macros/coingecko/avg_coingecko_price_7d.sql diff --git a/macros/coingecko/avg_coingecko_price_7d.sql b/macros/coingecko/avg_coingecko_price_7d.sql new file mode 100644 index 00000000..2303e09e --- /dev/null +++ b/macros/coingecko/avg_coingecko_price_7d.sql @@ -0,0 +1,7 @@ +{% macro avg_l7d_coingecko_price(coingecko_id) %} + select + avg(shifted_token_price_usd) as avg_price_7d + from {{ref("fact_coingecko_token_date_adjusted_gold")}} + where coingecko_id = '{{ coingecko_id }}' + and date >= dateadd('day', -7, to_date(sysdate())::date) +{% endmacro %} diff --git a/macros/p2p/p2p_stablecoin_transfers.sql b/macros/p2p/p2p_stablecoin_transfers.sql index fe5efc68..181c4169 100644 --- a/macros/p2p/p2p_stablecoin_transfers.sql +++ b/macros/p2p/p2p_stablecoin_transfers.sql @@ -67,15 +67,22 @@ with t1.from_address, t1.to_address, t1.amount, - coalesce( - pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.shifted_token_price_usd * transfer_volume, case when pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end * transfer_volume + transfer_volume * coalesce( + p.shifted_token_price_usd, + case + when c.coingecko_id = 'euro-coin' then ({{ avg_l7d_coingecko_price('euro-coin') }}) + when c.coingecko_id = 'celo-euro' then ({{ avg_l7d_coingecko_price('celo-euro') }}) + when c.coingecko_id = 'celo-real-creal' then ({{ avg_l7d_coingecko_price('celo-real-creal') }}) + when c.coingecko_id = 'celo-kenyan-shilling' then ({{ avg_l7d_coingecko_price('celo-kenyan-shilling') }}) + else 1 + end ) as amount_usd from stablecoin_transfers t1 - join pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS - on lower(t1.contract_address) = lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.contract_address) - left join pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD - on lower(pc_dbt_db.prod.FACT_{{ chain }}_STABLECOIN_CONTRACTS.coingecko_id) = lower(pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.coingecko_id) - and t1.date = pc_dbt_db.prod.FACT_COINGECKO_TOKEN_DATE_ADJUSTED_GOLD.date + join {{ ref("fact_"~chain~"_stablecoin_contracts") }} c + on lower(t1.contract_address) = lower(c.contract_address) + left join {{ ref("fact_coingecko_token_date_adjusted_gold") }} p + on lower(c.coingecko_id) = lower(p.coingecko_id) + and t1.date = p.date where not t1.to_address in (select contract_address from distinct_contracts) and not t1.from_address in (select contract_address from distinct_contracts) {% if is_incremental() %} diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 81c0d626..786b42f1 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -145,8 +145,11 @@ with , stablecoin_supply * coalesce( d.shifted_token_price_usd, case - when lower(c.coingecko_id) = lower('celo-kenyan-shilling') then 0.0077 - else 1 + when c.coingecko_id = 'euro-coin' then ({{ avg_l7d_coingecko_price('euro-coin') }}) + when c.coingecko_id = 'celo-euro' then ({{ avg_l7d_coingecko_price('celo-euro') }}) + when c.coingecko_id = 'celo-real-creal' then ({{ avg_l7d_coingecko_price('celo-real-creal') }}) + when c.coingecko_id = 'celo-kenyan-shilling' then ({{ avg_l7d_coingecko_price('celo-kenyan-shilling') }}) + else 1 end ) as stablecoin_supply from historical_supply_by_address_balances st @@ -167,5 +170,4 @@ select , date || '-' || address || '-' || contract_address as unique_id from stablecoin_balances_with_price where date < to_date(sysdate()) - {% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_metrics_all.sql b/macros/stablecoins/stablecoin_metrics_all.sql index b41a53cf..6f28297c 100644 --- a/macros/stablecoins/stablecoin_metrics_all.sql +++ b/macros/stablecoins/stablecoin_metrics_all.sql @@ -45,7 +45,14 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.shifted_token_price_usd, case when c.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end + d.shifted_token_price_usd, + case + when c.coingecko_id = 'euro-coin' then ({{ avg_l7d_coingecko_price('euro-coin') }}) + when c.coingecko_id = 'celo-euro' then ({{ avg_l7d_coingecko_price('celo-euro') }}) + when c.coingecko_id = 'celo-real-creal' then ({{ avg_l7d_coingecko_price('celo-real-creal') }}) + when c.coingecko_id = 'celo-kenyan-shilling' then ({{ avg_l7d_coingecko_price('celo-kenyan-shilling') }}) + else 1 + end ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index 7a7a8140..e962dee1 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -78,6 +78,12 @@ with from artemis_max_transfer_filter group by 1, 2, 3, 4 ), + eurc_7d_avg as ( + select + avg(shifted_token_price_usd) as euro_7d_avg + from {{ ref("fact_coingecko_token_date_adjusted_gold") }} + where coingecko_id = 'eurc' + ) results_dollar_denom as ( select stablecoin_metrics.date @@ -85,7 +91,14 @@ with , stablecoin_metrics.symbol , from_address , stablecoin_transfer_volume * coalesce( - d.shifted_token_price_usd, case when c.coingecko_id = 'celo-kenyan-shilling' then 0.0077 else 1 end + d.shifted_token_price_usd, + case + when c.coingecko_id = 'euro-coin' then ({{ avg_l7d_coingecko_price('euro-coin') }}) + when c.coingecko_id = 'celo-euro' then ({{ avg_l7d_coingecko_price('celo-euro') }}) + when c.coingecko_id = 'celo-real-creal' then ({{ avg_l7d_coingecko_price('celo-real-creal') }}) + when c.coingecko_id = 'celo-kenyan-shilling' then ({{ avg_l7d_coingecko_price('celo-kenyan-shilling') }}) + else 1 + end ) as stablecoin_transfer_volume , stablecoin_daily_txns from stablecoin_metrics From ee58343e0feaf63ce7657ff93479a2789c879246 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 22 Aug 2024 18:39:35 -0400 Subject: [PATCH 182/213] Son/add fact sei evm transactions (#435) --- .../all_chains_gas_dau_txns_by_category.sql | 1 + .../all_chains_gas_dau_txns_by_chain.sql | 1 + .../all_chains_gas_dau_txns_by_contract.sql | 18 ++ .../all_chains_gas_dau_txns_by_namespace.sql | 1 + .../contracts/dim_flipside_sei_contracts.sql | 26 +++ .../core/ez_sei_metrics_by_application.sql | 12 ++ .../sei/core/ez_sei_metrics_by_category.sql | 12 ++ .../sei/core/ez_sei_metrics_by_contract.sql | 12 ++ .../projects/sei/raw/ez_sei_transactions.sql | 42 ++++ .../staging/sei/fact_sei_evm_transactions.sql | 62 ++++++ models/staging/sei/fact_sei_transactions.sql | 99 +++++++++ .../sei/fact_sei_wasm_transactions.sql | 18 +- models/staging/sei/sei_trending_daily.sql | 133 ++++++++++++ .../sei/sei_trending_weekly_monthly.sql | 189 ++++++++++++++++++ models/trending/bam_trending_data.sql | 6 + 15 files changed, 618 insertions(+), 14 deletions(-) create mode 100644 models/projects/sei/core/ez_sei_metrics_by_application.sql create mode 100644 models/projects/sei/core/ez_sei_metrics_by_category.sql create mode 100644 models/projects/sei/core/ez_sei_metrics_by_contract.sql create mode 100644 models/projects/sei/raw/ez_sei_transactions.sql create mode 100644 models/staging/sei/fact_sei_evm_transactions.sql create mode 100644 models/staging/sei/fact_sei_transactions.sql create mode 100644 models/staging/sei/sei_trending_daily.sql create mode 100644 models/staging/sei/sei_trending_weekly_monthly.sql diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql index 0caba3c4..85a859dc 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_category.sql @@ -13,6 +13,7 @@ with ref("ez_near_metrics_by_category"), ref("ez_optimism_metrics_by_category"), ref("ez_polygon_metrics_by_category"), + ref("ez_sei_metrics_by_category"), ref("ez_solana_metrics_by_category"), ref("ez_sui_metrics_by_category"), ref("ez_tron_metrics_by_category"), diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql index 61553dec..84dc7ca6 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_chain.sql @@ -14,6 +14,7 @@ with ref("ez_near_metrics"), ref("ez_optimism_metrics"), ref("ez_polygon_metrics"), + ref("ez_sei_metrics"), ref("ez_solana_metrics"), ref("ez_sui_metrics"), ref("ez_tron_metrics"), diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql index 6cc39f17..58957533 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_contract.sql @@ -144,6 +144,24 @@ select 'polygon' as chain from {{ ref("ez_polygon_metrics_by_contract") }} union +select + contract_address, + date, + name, + null as symbol, + app as namespace, + friendly_name, + category, + gas as total_gas, + gas_usd as total_gas_usd, + txns as transactions, + dau, + null as token_transfer_usd, + null as token_transfer, + null as avg_token_price, + 'sei' as chain +from {{ ref("ez_sei_metrics_by_contract") }} +union select contract_address, date, diff --git a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql index 913bb5cc..661c1a8b 100644 --- a/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql +++ b/models/bam_models/all_chains/all_chains_gas_dau_txns_by_namespace.sql @@ -14,6 +14,7 @@ with ref("ez_near_metrics_by_application"), ref("ez_optimism_metrics_by_application"), ref("ez_polygon_metrics_by_application"), + ref("ez_sei_metrics_by_application"), ref("ez_solana_metrics_by_application"), ref("ez_sui_metrics_by_application"), ref("ez_tron_metrics_by_application"), diff --git a/models/dimensions/contracts/dim_flipside_sei_contracts.sql b/models/dimensions/contracts/dim_flipside_sei_contracts.sql index 47818f29..2a1ecd1c 100644 --- a/models/dimensions/contracts/dim_flipside_sei_contracts.sql +++ b/models/dimensions/contracts/dim_flipside_sei_contracts.sql @@ -45,6 +45,32 @@ with filtered_address as ( else null end as sub_category from sei_flipside.core.dim_labels as labels + union all + select + address, + name, + lower( + trim( + replace( + replace(regexp_replace( + name, + '[^\x00-\x7F]', ''), ' ', '_' + ), + '-', + '_' + ), + '_' + ) + ) as namespace, + case + when name = 'Dragonswap' + then 'DeFi' + when symbol is not null and decimals is not null + then 'Token' + else null + end as category, + null as sub_category + from sei_flipside.core_evm.dim_contracts ) select address, diff --git a/models/projects/sei/core/ez_sei_metrics_by_application.sql b/models/projects/sei/core/ez_sei_metrics_by_application.sql new file mode 100644 index 00000000..bf825e3a --- /dev/null +++ b/models/projects/sei/core/ez_sei_metrics_by_application.sql @@ -0,0 +1,12 @@ +-- depends_on {{ ref("ez_sei_transactions") }} +{{ + config( + materialized="table", + snowflake_warehouse="sei", + database="sei", + schema="core", + alias="ez_metrics_by_application", + ) +}} + +{{ get_fundamental_data_for_chain_by_application("sei") }} diff --git a/models/projects/sei/core/ez_sei_metrics_by_category.sql b/models/projects/sei/core/ez_sei_metrics_by_category.sql new file mode 100644 index 00000000..23e0ab22 --- /dev/null +++ b/models/projects/sei/core/ez_sei_metrics_by_category.sql @@ -0,0 +1,12 @@ +-- depends_on {{ ref("ez_sei_transactions") }} +{{ + config( + materialized="table", + snowflake_warehouse="sei", + database="sei", + schema="core", + alias="ez_metrics_by_category", + ) +}} + +{{ get_fundamental_data_for_chain_by_category("sei") }} diff --git a/models/projects/sei/core/ez_sei_metrics_by_contract.sql b/models/projects/sei/core/ez_sei_metrics_by_contract.sql new file mode 100644 index 00000000..6b9b40b7 --- /dev/null +++ b/models/projects/sei/core/ez_sei_metrics_by_contract.sql @@ -0,0 +1,12 @@ +-- depends_on {{ ref("ez_sei_transactions") }} +{{ + config( + materialized="table", + snowflake_warehouse="sei", + database="sei", + schema="core", + alias="ez_metrics_by_contract", + ) +}} + +{{ get_fundamental_data_for_chain_by_contract("sei") }} diff --git a/models/projects/sei/raw/ez_sei_transactions.sql b/models/projects/sei/raw/ez_sei_transactions.sql new file mode 100644 index 00000000..920c6e46 --- /dev/null +++ b/models/projects/sei/raw/ez_sei_transactions.sql @@ -0,0 +1,42 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="SEI_LG", + database="SEI", + schema="raw", + alias="ez_transactions", + ) +}} +SELECT + tx_hash, + success, + block_timestamp, + raw_date, + from_address, + tx_fee, + gas_usd, + chain, + contract_address, + name, + app, + friendly_name, + sub_category, + inserted_timestamp, + category, + user_type, + address_life_span, + cur_total_txns, + cur_distinct_to_address_count, + probability, + engagement_type, + balance_usd, + native_token_balance, + stablecoin_balance +FROM {{ ref("fact_sei_transactions") }} +{% if is_incremental() %} +where + -- this filter will only be applied on an incremental run + inserted_timestamp + >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) +{% endif %} diff --git a/models/staging/sei/fact_sei_evm_transactions.sql b/models/staging/sei/fact_sei_evm_transactions.sql new file mode 100644 index 00000000..1017e294 --- /dev/null +++ b/models/staging/sei/fact_sei_evm_transactions.sql @@ -0,0 +1,62 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="BAM_TRANSACTION_MD", + ) +}} + +with + new_contracts as ( + select distinct + address, + contract.name, + contract.chain, + contract.category, + contract.sub_category, + contract.app, + contract.friendly_name + from {{ ref("dim_contracts_gold") }} as contract + where chain = 'sei' + ), + prices as ({{ get_coingecko_price_with_latest("sei-network") }}) +select + tx_hash, + status, + block_timestamp, + date_trunc('day', block_timestamp) raw_date, + t.from_address, + tx_fee, + (tx_fee * price) gas_usd, + 'sei' as chain, + new_contracts.address as contract_address, + new_contracts.name, + new_contracts.app, + new_contracts.friendly_name, + new_contracts.sub_category, + inserted_timestamp, + case + when t.input_data = '0x' and t.value > 0 + then 'EOA' + when new_contracts.category is not null + then new_contracts.category + else null + end as category, + null as user_type, + null as address_life_span, + null as cur_total_txns, + null as cur_distinct_to_address_count, + null as probability, + null as engagement_type, + null as balance_usd, + null as native_token_balance, + null as stablecoin_balance +from sei_flipside.core_evm.fact_transactions as t +left join new_contracts on lower(t.to_address) = lower(new_contracts.address) +left join prices on raw_date = prices.date +{% if is_incremental() %} +where + -- this filter will only be applied on an incremental run + inserted_timestamp + >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) +{% endif %} diff --git a/models/staging/sei/fact_sei_transactions.sql b/models/staging/sei/fact_sei_transactions.sql new file mode 100644 index 00000000..a1ec547b --- /dev/null +++ b/models/staging/sei/fact_sei_transactions.sql @@ -0,0 +1,99 @@ +{{ + config( + materialized="incremental", + unique_key="tx_hash", + snowflake_warehouse="SEI_LG", + ) +}} +WITH transaction_data as ( + SELECT + tx_hash, + status = 'SUCCESS' as success, + block_timestamp, + raw_date, + from_address, + tx_fee, + gas_usd, + contract_address, + name, + app, + friendly_name, + sub_category, + inserted_timestamp, + category, + user_type, + address_life_span, + cur_total_txns, + cur_distinct_to_address_count, + probability, + engagement_type, + balance_usd, + native_token_balance, + stablecoin_balance + FROM {{ ref("fact_sei_evm_transactions") }} + {% if is_incremental() %} + where + -- this filter will only be applied on an incremental run + inserted_timestamp + >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) + {% endif %} + UNION ALL + SELECT + tx_hash, + success, + block_timestamp, + raw_date, + signer as from_address, + tx_fee, + gas_usd, + contract_address, + name, + app, + friendly_name, + sub_category, + inserted_timestamp, + category, + user_type, + address_life_span, + cur_total_txns, + cur_distinct_to_address_count, + probability, + engagement_type, + balance_usd, + native_token_balance, + stablecoin_balance + FROM {{ ref("fact_sei_wasm_transactions") }} + {% if is_incremental() %} + where + -- this filter will only be applied on an incremental run + inserted_timestamp + >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) + {% endif %} +) +SELECT + tx_hash, + max(success) as success, + max(block_timestamp) as block_timestamp, + max(raw_date) as raw_date, + max(from_address) as from_address, + max(tx_fee) as tx_fee, + max(gas_usd) as gas_usd, + 'sei' as chain, + max(contract_address) as contract_address, + max(name) as name, + max(app) as app, + max(friendly_name) as friendly_name, + max(sub_category) as sub_category, + max(inserted_timestamp) as inserted_timestamp, + max(category) as category, + max(user_type) as user_type, + max(address_life_span) as address_life_span, + max(cur_total_txns) as cur_total_txns, + max(cur_distinct_to_address_count) as cur_distinct_to_address_count, + max(probability) as probability, + max(engagement_type) as engagement_type, + max(balance_usd) as balance_usd, + max(native_token_balance) as native_token_balance, + max(stablecoin_balance) as stablecoin_balance +FROM transaction_data +GROUP BY tx_hash diff --git a/models/staging/sei/fact_sei_wasm_transactions.sql b/models/staging/sei/fact_sei_wasm_transactions.sql index 336fa70e..733c2656 100644 --- a/models/staging/sei/fact_sei_wasm_transactions.sql +++ b/models/staging/sei/fact_sei_wasm_transactions.sql @@ -57,13 +57,7 @@ with FROM sei_flipside.core.fact_msg_attributes {% if is_incremental() %} - WHERE - inserted_timestamp >= ( - SELECT - MAX(inserted_timestamp) - FROM - {{ this }} - ) + WHERE inserted_timestamp >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) {% endif %} GROUP BY tx_id ), @@ -82,7 +76,7 @@ with t1.tx_hash , t1.block_timestamp , t1.raw_date - , t1.tx_succeeded + , t1.tx_succeeded as success , t1.contract_address , t3.name , t3.app @@ -116,10 +110,6 @@ with WHERE t1.block_timestamp < date(sysdate()) {% if is_incremental() %} - AND t2.inserted_timestamp >= ( - SELECT - max(inserted_timestamp) - FROM - {{ this }} - ) + AND + t2.inserted_timestamp >= (select dateadd('day', -5, max(inserted_timestamp)) from {{ this }}) {% endif %} diff --git a/models/staging/sei/sei_trending_daily.sql b/models/staging/sei/sei_trending_daily.sql new file mode 100644 index 00000000..fd4437cd --- /dev/null +++ b/models/staging/sei/sei_trending_daily.sql @@ -0,0 +1,133 @@ +{{ config(materialized="table", snowflake_warehouse="BAM_TRENDING_WAREHOUSE_MD") }} + +with + sei_contracts as ( + + select address, name, app as namespace, friendly_name, category + from {{ ref("dim_contracts_gold") }} + where chain = 'sei' + ), + prices as ({{ get_coingecko_price_for_trending("sei-network") }}), + msg_atts_base AS ( + SELECT + max(block_timestamp) as block_timestamp, + max(date_trunc('day', block_timestamp)) as date, + max(tx_succeeded) as tx_succeeded, + tx_id, + max (case when attribute_key in ('_contract_address', 'contract_address') then attribute_value else null end) as contract_address_1, + max ( + case + when msg_type = 'transfer' then 'sei_token_transfer' + when msg_type = 'ibc_transfer' then 'sei_ibc_transfer' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/seiprotocol.seichain.oracle.MsgAggregateExchangeRateVote' + then 'sei_oracle_votes' + when msg_type = 'instantiate' AND attribute_key = 'contract_address' then 'sei_create_contract' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/cosmos.gov.v1beta1.MsgVote' then 'sei_governance_votes' + when msg_type = 'message' and attribute_key = 'module' and attribute_key = 'staking' then 'sei_staking' + when msg_type = 'message' and attribute_key = 'module' and attribute_value = 'oracle' then 'sei_oracle' + when msg_type = 'withdraw_rewards' then 'sei_staking_withdraw' + when msg_type = 'aggregate_vote' then 'sei_voting' + when msg_type = 'coin_spent' then 'sei_staking_coin_spent' + when msg_type in ('delegate','redelegate','unbond','create_validator') then 'sei_staking' + else null + end + ) as contract_address_2 + FROM + sei_flipside.core.fact_msg_attributes + WHERE block_timestamp >= dateadd(day, -2, current_date) + GROUP BY tx_id + ), + transaction_contract_data as ( + SELECT + tx_id as tx_hash + , block_timestamp + , date + , tx_succeeded + , coalesce(contract_address_1, contract_address_2) as contract_address + FROM + msg_atts_base + ), + last_2_day as ( + SELECT + t1.tx_hash + , t1.block_timestamp + , t1.date + , t2.tx_from as from_address + , (split(t2.fee, 'usei')[0] / pow(10, 6)) as tx_fee + , (split(t2.fee, 'usei')[0] / pow(10, 6)) * t4.price as gas_usd + , t1.contract_address as to_address + , t3.name + , t3.namespace + , t3.friendly_name + , t3.category + from transaction_contract_data as t1 + LEFT JOIN sei_flipside.core.fact_transactions as t2 on t1.tx_hash = t2.tx_id + left join sei_contracts as t3 on lower(t1.contract_address) = lower(t3.address) + left join prices as t4 on t1.date= t4.date + where + t2.block_timestamp >= dateadd(day, -2, current_date) + union all + select + tx_hash, + block_timestamp, + date_trunc('day', block_timestamp) date, + t.from_address, + tx_fee, + (tx_fee * price) gas_usd, + sei_contracts.address as to_address, + sei_contracts.name, + sei_contracts.namespace, + sei_contracts.friendly_name, + sei_contracts.category, + from sei_flipside.core_evm.fact_transactions as t + left join sei_contracts on lower(t.to_address) = lower(sei_contracts.address) + left join prices on date_trunc('day', block_timestamp) = prices.date + where + block_timestamp >= dateadd(day, -2, current_date) + ), + last_day as ( + select + t.to_address to_address, + count(*) txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd, + max(name) name, + max(namespace) namespace, + max(friendly_name) friendly_name, + max(category) category + from last_2_day as t + where t.to_address is not null and t.date >= dateadd(day, -1, current_date) + group by t.to_address + ), + two_days as ( + select + t.to_address to_address, + count(*) txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd + from last_2_day as t + where + t.to_address is not null + and t.date < dateadd(day, -1, current_date) + and t.date >= dateadd(day, -2, current_date) + group by t.to_address + ) +select + last_day.to_address, + last_day.txns, + last_day.gas, + last_day.gas_usd gas_usd, + last_day.dau, + two_days.txns prev_txns, + two_days.gas prev_gas, + two_days.gas_usd prev_gas_usd, + two_days.dau prev_dau, + last_day.name, + last_day.namespace, + last_day.friendly_name, + last_day.category, + 'daily' as granularity +from last_day +left join two_days on lower(last_day.to_address) = lower(two_days.to_address) diff --git a/models/staging/sei/sei_trending_weekly_monthly.sql b/models/staging/sei/sei_trending_weekly_monthly.sql new file mode 100644 index 00000000..524180d8 --- /dev/null +++ b/models/staging/sei/sei_trending_weekly_monthly.sql @@ -0,0 +1,189 @@ +{{ config(materialized="table", snowflake_warehouse="BAM_TRENDING_WAREHOUSE_MD") }} + +with + sei_contracts as ( + + select address, name, app as namespace, friendly_name, category + from {{ ref("dim_contracts_gold") }} + where chain = 'sei' + ), + prices as ({{ get_coingecko_price_for_trending("sei-network") }}), + msg_atts_base AS ( + SELECT + max(block_timestamp) as block_timestamp, + max(date_trunc('day', block_timestamp)) as date, + max(tx_succeeded) as tx_succeeded, + tx_id, + max (case when attribute_key in ('_contract_address', 'contract_address') then attribute_value else null end) as contract_address_1, + max ( + case + when msg_type = 'transfer' then 'sei_token_transfer' + when msg_type = 'ibc_transfer' then 'sei_ibc_transfer' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/seiprotocol.seichain.oracle.MsgAggregateExchangeRateVote' + then 'sei_oracle_votes' + when msg_type = 'instantiate' AND attribute_key = 'contract_address' then 'sei_create_contract' + when msg_type = 'message' AND attribute_key = 'action' AND attribute_value = '/cosmos.gov.v1beta1.MsgVote' then 'sei_governance_votes' + when msg_type = 'message' and attribute_key = 'module' and attribute_key = 'staking' then 'sei_staking' + when msg_type = 'message' and attribute_key = 'module' and attribute_value = 'oracle' then 'sei_oracle' + when msg_type = 'withdraw_rewards' then 'sei_staking_withdraw' + when msg_type = 'aggregate_vote' then 'sei_voting' + when msg_type = 'coin_spent' then 'sei_staking_coin_spent' + when msg_type in ('delegate','redelegate','unbond','create_validator') then 'sei_staking' + else null + end + ) as contract_address_2 + FROM + sei_flipside.core.fact_msg_attributes + WHERE block_timestamp >= dateadd(day, -60, current_date) + GROUP BY tx_id + ), + transaction_contract_data as ( + SELECT + tx_id as tx_hash + , block_timestamp + , date + , tx_succeeded + , coalesce(contract_address_1, contract_address_2) as contract_address + FROM + msg_atts_base + ), + last_2_month as ( + SELECT + t1.tx_hash + , t1.block_timestamp + , t1.date + , t2.tx_from as from_address + , (split(t2.fee, 'usei')[0] / pow(10, 6)) as tx_fee + , (split(t2.fee, 'usei')[0] / pow(10, 6)) * t4.price as gas_usd + , t1.contract_address as to_address + , t3.name + , t3.namespace + , t3.friendly_name + , t3.category + from transaction_contract_data as t1 + LEFT JOIN sei_flipside.core.fact_transactions as t2 on t1.tx_hash = t2.tx_id + left join sei_contracts as t3 on lower(t1.contract_address) = lower(t3.address) + left join prices as t4 on t1.date= t4.date + where + t2.block_timestamp >= dateadd(day, -60, current_date) + union all + select + tx_hash, + block_timestamp, + date_trunc('day', block_timestamp) date, + t.from_address, + tx_fee, + (tx_fee * price) gas_usd, + sei_contracts.address as to_address, + sei_contracts.name, + sei_contracts.namespace, + sei_contracts.friendly_name, + sei_contracts.category, + from sei_flipside.core_evm.fact_transactions as t + left join sei_contracts on lower(t.to_address) = lower(sei_contracts.address) + left join prices on date_trunc('day', block_timestamp) = prices.date + where + block_timestamp >= dateadd(day, -60, current_date) + ), + last_week as ( + select + t.to_address to_address, + count(*) txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd, + max(name) name, + max(namespace) namespace, + max(friendly_name) friendly_name, + max(category) category + from last_2_month as t + where t.to_address is not null and t.date >= dateadd(day, -7, current_date) + group by t.to_address + ), + two_week as ( + select + t.to_address to_address, + count(*) txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd + from last_2_month as t + where + t.to_address is not null + and t.date < dateadd(day, -7, current_date) + and t.date >= dateadd(day, -14, current_date) + group by t.to_address + ), + trending_week as ( + select + last_week.to_address, + last_week.txns, + last_week.gas, + last_week.gas_usd, + last_week.dau, + two_week.txns prev_txns, + two_week.gas prev_gas, + two_week.gas_usd prev_gas_usd, + two_week.dau prev_dau, + last_week.name, + last_week.namespace, + last_week.friendly_name, + last_week.category, + 'weekly' as granularity + from last_week + left join two_week on lower(last_week.to_address) = lower(two_week.to_address) + ), + last_month as ( + select + to_address to_address, + count(*) as txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd, + max(name) name, + max(namespace) namespace, + max(friendly_name) friendly_name, + max(category) category + from last_2_month + where to_address is not null and date >= dateadd(day, -30, current_date) + group by to_address + ), + two_month as ( + select + to_address to_address, + count(*) txns, + count(distinct(from_address)) dau, + sum(tx_fee) as gas, + sum(gas_usd) as gas_usd + from last_2_month + where + to_address is not null + and date < dateadd(day, -30, current_date) + and date >= dateadd(day, -60, current_date) + group by to_address + ), + trending_month as ( + select + last_month.to_address, + last_month.txns, + last_month.gas, + last_month.gas_usd, + last_month.dau, + two_month.txns prev_txns, + two_month.gas prev_gas, + two_month.gas_usd prev_gas_usd, + two_month.dau prev_dau, + last_month.name, + last_month.namespace, + last_month.friendly_name, + last_month.category, + 'monthly' as granularity + from last_month + left join + two_month on lower(last_month.to_address) = lower(two_month.to_address) + ) +select * +from trending_week +union +select * +from trending_month diff --git a/models/trending/bam_trending_data.sql b/models/trending/bam_trending_data.sql index 81cb7a13..f8cf5b12 100644 --- a/models/trending/bam_trending_data.sql +++ b/models/trending/bam_trending_data.sql @@ -48,6 +48,12 @@ union all select *, 'polygon' as chain from {{ ref("polygon_trending_weekly_monthly") }} union all +select *, 'sei' as chain +from {{ ref("sei_trending_daily") }} +union all +select *, 'sei' as chain +from {{ ref("sei_trending_weekly_monthly") }} +union all select *, 'solana' as chain from {{ ref("solana_trending_daily") }} union all From a9dced5cb9533dc35deec2b3b7fab7eb59178bd2 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Fri, 23 Aug 2024 04:58:24 +0300 Subject: [PATCH 183/213] add cUSD dbt model (#436) --- databases.csv | 1 + models/projects/cusd/core/ez_cusd_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/cusd/core/ez_cusd_metrics.sql diff --git a/databases.csv b/databases.csv index 23a070e6..b682fb82 100644 --- a/databases.csv +++ b/databases.csv @@ -29,6 +29,7 @@ CHAINLINK COMMON COMPOUND COSMOSHUB +CUSD DAI DEXALOT DFK diff --git a/models/projects/cusd/core/ez_cusd_metrics.sql b/models/projects/cusd/core/ez_cusd_metrics.sql new file mode 100644 index 00000000..d5699800 --- /dev/null +++ b/models/projects/cusd/core/ez_cusd_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="CUSD", + database="cusd", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("CUSD") }} From cd1cbd5cd0b00a2deeef95484c43688bf1a2105f Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 22 Aug 2024 23:34:16 -0400 Subject: [PATCH 184/213] Stablecoins: quickfix (#437) --- macros/stablecoins/stablecoin_metrics_artemis.sql | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics_artemis.sql b/macros/stablecoins/stablecoin_metrics_artemis.sql index e962dee1..9c47a289 100644 --- a/macros/stablecoins/stablecoin_metrics_artemis.sql +++ b/macros/stablecoins/stablecoin_metrics_artemis.sql @@ -77,14 +77,8 @@ with , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume from artemis_max_transfer_filter group by 1, 2, 3, 4 - ), - eurc_7d_avg as ( - select - avg(shifted_token_price_usd) as euro_7d_avg - from {{ ref("fact_coingecko_token_date_adjusted_gold") }} - where coingecko_id = 'eurc' ) - results_dollar_denom as ( + , results_dollar_denom as ( select stablecoin_metrics.date , stablecoin_metrics.contract_address From 5e7978e21712acc6d2ce86ace8f3c8c3e4a87559 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 23 Aug 2024 10:52:26 -0400 Subject: [PATCH 185/213] Stablecoins: Fix Balances Bug (#438) --- macros/stablecoins/stablecoin_balances.sql | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/macros/stablecoins/stablecoin_balances.sql b/macros/stablecoins/stablecoin_balances.sql index 786b42f1..40d95c5e 100644 --- a/macros/stablecoins/stablecoin_balances.sql +++ b/macros/stablecoins/stablecoin_balances.sql @@ -15,11 +15,11 @@ with , symbol , address {% if chain in ('solana') %} - , amount as stablecoin_supply + , amount as stablecoin_supply_native {% elif chain == 'ton' %} - , balance_token as stablecoin_supply + , balance_token as stablecoin_supply_native {% else %} - , balance_token / pow(10, num_decimals) as stablecoin_supply + , balance_token / pow(10, num_decimals) as stablecoin_supply_native {% endif %} {% if chain == "ton" %} from {{ ref("ez_" ~ chain ~ "_address_balances_by_token")}} t1 @@ -49,7 +49,7 @@ with , t.contract_address , t.symbol , t.address - , t.stablecoin_supply + , t.stablecoin_supply_native from {{ this }} t where date = (select dateadd('day', -3, max(date)) from {{ this }}) ) @@ -63,7 +63,7 @@ with , contract_address , symbol , address - , stablecoin_supply + , stablecoin_supply_native from stablecoin_balances {% if is_incremental() %} union @@ -72,7 +72,7 @@ with , contract_address , symbol , address - , stablecoin_supply + , stablecoin_supply_native from stale_stablecoin_balances {% endif %} ) @@ -83,14 +83,14 @@ with , contract_address , symbol , address - , stablecoin_supply + , stablecoin_supply_native from ( select block_timestamp , contract_address , symbol , address - , stablecoin_supply + , stablecoin_supply_native , row_number() over (partition by block_timestamp::date, contract_address, address, symbol order by block_timestamp desc) AS rn from heal_balance_table ) @@ -125,13 +125,13 @@ with , contract_address , symbol , coalesce( - stablecoin_supply, - LAST_VALUE(balances.stablecoin_supply ignore nulls) over ( + stablecoin_supply_native, + LAST_VALUE(balances.stablecoin_supply_native ignore nulls) over ( partition by contract_address, address, symbol order by date rows between unbounded preceding and current row ) - ) as stablecoin_supply + ) as stablecoin_supply_native from date_range left join balances using (date, contract_address, symbol, address) ) @@ -141,8 +141,8 @@ with , address , st.contract_address , st.symbol - , stablecoin_supply as stablecoin_supply_native - , stablecoin_supply * coalesce( + , stablecoin_supply_native + , stablecoin_supply_native * coalesce( d.shifted_token_price_usd, case when c.coingecko_id = 'euro-coin' then ({{ avg_l7d_coingecko_price('euro-coin') }}) From b285078061a97f7983f1843e390b6276cdff4900 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 23 Aug 2024 11:19:58 -0400 Subject: [PATCH 186/213] Updating Datahub Warehouse (#439) --- models/data_hubs/fact_daily_app_datahub.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models/data_hubs/fact_daily_app_datahub.sql b/models/data_hubs/fact_daily_app_datahub.sql index e17d6bbe..3cbe4cc7 100644 --- a/models/data_hubs/fact_daily_app_datahub.sql +++ b/models/data_hubs/fact_daily_app_datahub.sql @@ -1,4 +1,7 @@ -{{ config(materialized="table") }} +{{ config( + materialized="table", + snowflake_warehouse="PC_DBT_WH" +) }} with app_datahub as ( {{ From 272460c3155f7bbe26b757b2fd1067791efc5184 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:53:10 -0400 Subject: [PATCH 187/213] Script and AAVE Complete Queries (#440) --- dbt_scripts/create_fidelity_queries.sh | 52 + .../aave/ez_aave_metrics__complete__.sql | 3847 +++++++++++++++++ .../ez_aave_metrics_by_chain__complete__.sql | 3754 ++++++++++++++++ .../ez_aave_metrics_by_token__complete__.sql | 3833 ++++++++++++++++ 4 files changed, 11486 insertions(+) create mode 100755 dbt_scripts/create_fidelity_queries.sh create mode 100644 models/_complete_asset_models/aave/ez_aave_metrics__complete__.sql create mode 100644 models/_complete_asset_models/aave/ez_aave_metrics_by_chain__complete__.sql create mode 100644 models/_complete_asset_models/aave/ez_aave_metrics_by_token__complete__.sql diff --git a/dbt_scripts/create_fidelity_queries.sh b/dbt_scripts/create_fidelity_queries.sh new file mode 100755 index 00000000..20ffac11 --- /dev/null +++ b/dbt_scripts/create_fidelity_queries.sh @@ -0,0 +1,52 @@ +# Assumtions: +# 1. Everything is stored in the projects folder not staging + +# Check if exactly one argument is provided +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +PROJECT_NAME="$1" + +INPUT_FOLDER="models/projects/$PROJECT_NAME" +OUTPUT_FOLDER="models/_complete_asset_models/$PROJECT_NAME" + +mkdir -p "$OUTPUT_FOLDER" + +BACKUP_FILE="materialized_backup.txt" + +echo "Backing up original materialized settings with filenames..." +grep -r 'materialized="' "$INPUT_FOLDER" | sed 's/^\(.*\):.*materialized="\(.*\)".*/\1:\2/' > "$BACKUP_FILE" + +echo "Changing all materialized settings to ephemeral..." +find "$INPUT_FOLDER" -type f -name "*.sql" | while read -r file; do + sed -i '' 's/materialized="table"/materialized="ephemeral"/' "$file" + sed -i '' 's/materialized="incremental"/materialized="ephemeral"/' "$file" +done + +CORE_FOLDER_PATH="$INPUT_FOLDER/core" +echo "Running dbt compile for each file..." +find "$CORE_FOLDER_PATH" -type f -name "*.sql" | while read -r file; do + base_filename=$(basename "$file" .sql) + + output_file="$OUTPUT_FOLDER/${base_filename}__complete__.sql" + + dbt compile --select "$file" > "$output_file" + # Remove unwanted log lines from the first 7 lines of the output file + head -n 7 "$output_file" | sed '/^\[0m/d' | sed '/^Found /d' | sed '/^Concurrency: /d' > "${output_file}.tmp" + tail -n +8 "$output_file" >> "${output_file}.tmp" + mv "${output_file}.tmp" "$output_file" + + echo "Compiled and created: $output_file" +done + +#Restore the original `materialized` settings +echo "Restoring original materialized settings..." +while IFS=: read -r filepath materialized_value; do + sed -i '' "s/materialized=\"ephemeral\"/materialized=\"$materialized_value\"/" "$filepath" +done < "$BACKUP_FILE" + +Clean up the backup file +rm "$BACKUP_FILE" +echo "All files restored to original materialized settings." \ No newline at end of file diff --git a/models/_complete_asset_models/aave/ez_aave_metrics__complete__.sql b/models/_complete_asset_models/aave/ez_aave_metrics__complete__.sql new file mode 100644 index 00000000..7add4fa0 --- /dev/null +++ b/models/_complete_asset_models/aave/ez_aave_metrics__complete__.sql @@ -0,0 +1,3847 @@ + + +with + __dbt__cte__raw_aave_v3_arbitrum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_arbitrum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_arbitrum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from arbitrum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_arbitrum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'arbitrum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x230B618aD4C475393A7239aE03630042281BD86e') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_base_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_base_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x5731a04B1E775f0fdd454Bf70f3335886e9A96be') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from base_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_base_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'base' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_bsc_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_bsc_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x67bdF23C7fCE7C65fF7415Ba3F2520B45D6f9584') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from bsc_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_bsc_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'bsc' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x64b761D848206f447Fe2dd461b0c635Ec39EbB27') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_gnosis_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_gnosis_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7304979ec9E4EaA0273b6A037a31c4e9e5A75D16') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from gnosis_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_gnosis_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'gnosis' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_optimism_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_optimism_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from optimism_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_optimism_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'optimism' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from arbitrum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_base_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from base_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_gnosis_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from gnosis_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_optimism_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from optimism_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from arbitrum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join arbitrum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join arbitrum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_base_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from base_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + +) +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join base_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join base_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_bsc_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from bsc_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + +) +select + block_timestamp::date as date + , 'bsc' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join bsc_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join bsc_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from gnosis_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + +) +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join gnosis_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join gnosis_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_optimism_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from optimism_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join optimism_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join optimism_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join arbitrum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'arbitrum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'avalanche' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'avalanche' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x01D83Fe6A10D2f2B7AF17034343746188272cAc9') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'avalanche' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join avalanche_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'avalanche' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_base_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xf9cc4F0D883F1a1eb2c253bdb46c254Ca51E1F44') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join base_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'base' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC206C2764A9dBF27d599613b8F9A63ACd1160ab4') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join bsc_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'bsc' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'ethereum' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'ethereum' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'ethereum' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'ethereum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xaD4F91D26254B6B0C6346b390dDA2991FDE2F20d') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join gnosis_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'gnosis' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join optimism_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'optimism' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'polygon' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'polygon' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x357D51124f59836DeD84c8a1730D72B749d8BC23') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'polygon' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join polygon_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'polygon' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_aavura_treasury as ( + + + +WITH +tokens as ( + SELECT LOWER(address) AS address + FROM ( + VALUES + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x5aFE3855358E112B5647B952709E6165e1c1eEEe'), + ('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) AS addresses(address) +) +, base AS ( + select + to_address, + from_address, + contract_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) in (select address from tokens) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + SUM(CASE WHEN to_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2 + ORDER BY 1 DESC +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select address from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.contract_address) +ORDER BY date DESC +), __dbt__cte__fact_aave_v2_collector as ( + + + +WITH + +tokens as ( + SELECT LOWER(a_token) AS a_token, LOWER(priced_token) AS priced_token + FROM ( + VALUES + ('0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0xae78736Cd615f374D3085123A210448E74Fc6393', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0xBcca60bB61934080951369a648Fb03DF4F96263C', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x018008bfb33d285247A21d44E50697654f754e63', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x0B925eD163218f6662a35e0f0371Ac234f9E9371', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x101cc05f4A51C0319f570d5E146a8C625198e636', '0x0000000000085d4780B73119b644AE5ecd22b376'), + ('0xA361718326c15715591c299427c62086F69923D9', '0x4Fabb145d64652a948d72533023f6E7A623C7C53'), + ('0xC7B4c17861357B8ABB91F25581E7263E08DCB59c', '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F'), + ('0xD37EE7e4f452C6638c96536e68090De8cBcdb583', '0xa0E5A19E091BBe241E655997E50da82DA676b083'), + ('0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x6C5024Cd4F8A59110119C56f8933403A539555EB', '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51'), + ('0xCc9EE9483f662091a1de4795249E24aC0aC2630f', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x3Fe6a295459FAe07DF8A0ceCC36F37160FE86AA9', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'), + ('0xB76CF92076adBF1D9C39294FA8e7A67579FDe357', '0xD33526068D116cE69F19A9ee46F0bd304F21A51f'), + ('0x8A458A9dc9048e005d22849F470891b840296619', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0x977b6fc5dE62598B08C85AC8Cf2b745874E8b78c', '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704'), + ('0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b', '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'), + ('0xd4e245848d6E1220DBE62e155d89fa327E43CB06', '0x853d955aCEf822Db058eb8505911ED77F175b99e'), + ('0xc9BC48c72154ef3e5425641a3c747242112a46AF', '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919'), + ('0xc713e5E149D5D0715DcD1c156a020976e7E56B88', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65', '0xD533a949740bb3306d119CC777fa900bA034cd52'), + ('0xa685a61171bb30d4072B338c80Cb7b2c865c873E', '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942'), + ('0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0xd24946147829DEaA935bE2aD85A3291dbf109c80', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA', '0xdd974D5C2e2928deA5F71b9825b8b646686BD200'), + ('0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x514910771AF9Ca656af840dff83E8264EcF986CA', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x9A44fd41566876A39655f74971a3A6eA0a17a454', '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), + ('0x71Aef7b30728b9BB371578f36c5A1f1502a5723e', '0x111111111117dC0aa78b770fA6A738034120C302'), + ('0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', '0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c'), + ('0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', '0xE41d2489571d322189246DaFA5ebDe1F4699F498'), + ('0x272F97b7a56a387aE942350bBC7Df5700f8a4576', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', '0x0D8775F648430679A709E98d2b0Cb6250d2887EF'), + ('0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + ) AS t(a_token, priced_token) +) +, base AS ( + select + to_address, + from_address, + contract_address, + priced_token, + block_timestamp::date as date, + amount, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + inner join tokens on lower(contract_address) = lower(a_token) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + priced_token, + SUM(CASE WHEN to_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2, 3 +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select distinct priced_token from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.priced_token) +), __dbt__cte__fact_aave_safety_module as ( + + + + + + + -- Add 1 to include both start and end dates + +with +stkAAVE as ( + select + block_timestamp::date as date + , lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkABPT_mints as ( + select + block_timestamp::date as date + , lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkGHO_mints as ( + select + block_timestamp::date as date + , lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, tokens as ( + SELECT lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + UNION + SELECT lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + UNION + SELECT lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token +) +, dt_spine as ( + SELECT '2018-01-01'::date + seq4() AS date + FROM TABLE(GENERATOR(ROWCOUNT => 2427)) + where date <= to_date(sysdate()) +) +, token_days as ( + SELECT tokens.token, dt_spine.date + from tokens + CROSS JOIN dt_spine +) +, daily_mint as ( + SELECT + date + , token + , sum(mint) as daily_mint + FROM ( + SELECT * FROM stkAAVE + UNION ALL + SELECT * FROM stkABPT_mints + UNION ALL + SELECT * FROM stkGHO_mints + ) a + GROUP BY date, token +) +, daily_mints_filled as ( + SELECT + token_days.token + , token_days.date + , COALESCE(daily_mint.daily_mint, 0) as daily_mint + from token_days + LEFT JOIN daily_mint + ON daily_mint.date = token_days.date + AND lower(daily_mint.token) = lower(token_days.token) +) +, result as ( + SELECT + token + , date + , daily_mint + , sum(daily_mint) over(partition by token order by date) as total_supply + FROM daily_mints_filled +) +, aave_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, gho_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'gho' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'gho' +) +, abpt_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave-balancer-pool-token' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave-balancer-pool-token' +) +, prices as ( + select date, '0x4da27a545c0c5b758a6ba100e3a049001de870f5' as token, price + from aave_prices + + union all + + select date, '0xa1116930326d21fb917d5a27f1e9943a9595fb47' as token, price + from abpt_prices + + union all + + select date, '0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d' as token, price + from gho_prices +) + + +SELECT + result.date + , 'ethereum' as chain + , result.token as token_address + , total_supply as amount_nominal + , coalesce(prices.price, 0) * total_supply as amount_usd +FROM result +LEFT JOIN prices + ON prices.token = result.token + AND prices.date = result.date +), __dbt__cte__fact_aave_ecosystem_reserve as ( + + + +WITH +base AS ( + select + to_address, + from_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + SUM(CASE WHEN to_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1 + ORDER BY 1 DESC +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p on p.date = dr.date +ORDER BY date DESC +), __dbt__cte__fact_aave_dao_balancer_trading_fees as ( + + +with +swaps as ( + select + block_timestamp + , decoded_log:tokenIn::string as token_address + , decoded_log:tokenAmountIn::float * 0.001 as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC697051d1C6296C24aE3bceF39acA743861D9A81') + and event_name = 'LOG_SWAP' +) +, swap_revenue as ( + select + block_timestamp::date as date + , swaps.token_address + , coalesce(amount / pow(10, decimals), 0) as amount_nominal + , coalesce(amount_nominal * price, 0) as amount_usd + from swaps + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(swaps.token_address) = lower(p.token_address) +) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as trading_fees_nominal + , sum(coalesce(amount_usd, 0)) as trading_fees_usd +from swap_revenue +where date < to_date(sysdate()) +group by 1, 2 +order by 1 desc +), __dbt__cte__fact_aave_dao_safety_incentives as ( + + +with + logs as ( + select + block_timestamp + , decoded_log:amount::float / 1E18 as amount_nominal + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4da27a545c0c5B758a6BA100e3a049001de870f5') + and event_name = 'RewardsClaimed' + ) + , prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + , priced_logs as ( + select + block_timestamp::date as date + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , amount_nominal + , amount_nominal * price as amount_usd + from logs + left join prices on block_timestamp::date = date + ) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 2 +), __dbt__cte__fact_aave_gho_treasury_revenue as ( + + +with +event_logs as ( + select + block_timestamp + , '0x' || substr(topics[2]::string, 27, 40) as asset + , pc_dbt_db.prod.hex_to_int(data) as amount + from ethereum_flipside.core.fact_event_logs + where contract_address = lower('0x00907f9921424583e7ffBfEdf84F92B7B2Be4977') + and topics[0]::string = '0xb29fcda740927812f5a71075b62e132bead3769a455319c29b9a1cc461a65475' +) +, priced_logs as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'AAVE GHO' as protocol + , 'ethereum' as chain + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 4 +order by 1 desc +), __dbt__cte__fact_aave_token_holders as ( + + + +WITH filtered_balances AS ( + SELECT + DATE(block_timestamp) AS date, + address, + MAX_BY(balance_token / 1e18, block_timestamp) AS balance_token + FROM PC_DBT_DB.PROD.fact_ethereum_address_balances_by_token + WHERE contract_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + GROUP BY 1, 2 +), +unique_dates AS ( + SELECT DISTINCT DATE(block_timestamp) AS date + FROM PC_DBT_DB.PROD.fact_ethereum_address_balances_by_token + where block_timestamp > '2020-09-21' +), +addresses AS ( + SELECT + address, + MIN(DATE(block_timestamp)) AS first_date + FROM PC_DBT_DB.PROD.fact_ethereum_address_balances_by_token + WHERE contract_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + GROUP BY address +), +all_combinations AS ( + SELECT + ud.date, + a.address + FROM unique_dates ud + JOIN addresses a + ON ud.date >= a.first_date +) +, joined_balances AS ( + SELECT + ac.date, + ac.address, + fb.balance_token + FROM all_combinations ac + LEFT JOIN filtered_balances fb + ON ac.date = fb.date + AND ac.address = fb.address +) +, filled_balances AS ( + SELECT + date, + address, + COALESCE( + balance_token, + LAST_VALUE(balance_token IGNORE NULLS) OVER ( + PARTITION BY address ORDER BY date + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW + ) + ) AS balance_token + FROM joined_balances +) + +select + date + , 'ethereum' as chain + , count(*) as token_holder_count +from filled_balances +where balance_token > 0 +group by date +order by date desc + +), deposits_borrows_lender_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue + ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , sum(borrows_usd) as outstanding_supply + , sum(supply_usd) as net_deposits + , net_deposits - outstanding_supply as tvl + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(interest_rate_fees) as interest_rate_fees + , sum(reserve_factor_revenue) as reserve_factor_revenue + from deposits_borrows_lender_revenue + group by 1 + ) + , flashloan_fees as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_base_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_gnosis_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_optimism_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_polygon_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_polygon_flashloan_fees + ) + , aave_flashloan_fees as ( + select + date + , sum(amount_usd) as flashloan_fees + from flashloan_fees + group by 1 + ) + , liquidation_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_liquidation_revenue + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , sum(liquidation_revenue) as liquidation_revenue + from liquidation_revenue + group by 1 + ) + , ecosystem_incentives as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_base_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives + ) + , aave_treasury as ( + select * from __dbt__cte__fact_aave_aavura_treasury + union all + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_safety_module + union all + select * from __dbt__cte__fact_aave_ecosystem_reserve + ) + , treasury as ( + select + date + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native + , sum(amount_usd) as treasury_value + from aave_treasury + group by date + ) + , aave_net_treasury as ( + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_aavura_treasury + ) + , net_treasury_data as ( + select + date + , sum(amount_usd) as net_treasury_value + from aave_net_treasury + group by 1 + ) + , aave_ecosystem_incentives as ( + select + date + , sum(amount_usd) as ecosystem_incentives + from ecosystem_incentives + group by 1 + ) + , dao_trading_revenue as ( + select + date + , sum(trading_fees_usd) as trading_fees + from __dbt__cte__fact_aave_dao_balancer_trading_fees + group by 1 + ) + , safety_incentives as ( + select + date + , sum(amount_usd) as safety_incentives + from __dbt__cte__fact_aave_dao_safety_incentives + group by 1 + ) + , gho_treasury_revenue as ( + select + date + , sum(amount_usd) as gho_revenue + from __dbt__cte__fact_aave_gho_treasury_revenue + group by 1 + ) + , aave_token_holders as ( + select + date + , token_holder_count + from __dbt__cte__fact_aave_token_holders + ) + , coingecko_metrics as ( + select + date + , shifted_token_price_usd as price + , shifted_token_h24_volume_usd as h24_volume + , shifted_token_market_cap as market_cap + , t2.total_supply * price as fdmc + , shifted_token_h24_volume_usd / market_cap as token_turnover_circulating + , shifted_token_h24_volume_usd / fdmc as token_turnover_fdv + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold t1 + inner join + ( + select + token_id, coalesce(token_max_supply, token_total_supply) as total_supply + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' + ) t2 + on t1.coingecko_id = t2.token_id + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + ) +select + aave_outstanding_supply_net_deposits_deposit_revenue.date + , interest_rate_fees as interest_rate_fees + , flashloan_fees + , gho_revenue as gho_fees + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + , supply_side_deposit_revenue + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + , flashloan_fees as flashloan_supply_side_revenue + , liquidation_revenue as liquidation_supply_side_revenue + , ecosystem_incentives as ecosystem_supply_side_revenue + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , trading_fees as dao_trading_revenue + , gho_revenue + , coalesce(reserve_factor_revenue, 0) as reserve_factor_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , ecosystem_incentives + , safety_incentives + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + , token_incentives as total_expenses + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + , outstanding_supply + , net_deposits + , tvl + , treasury_value + , treasury_value_native + , net_treasury_value + , token_holder_count + , price + , h24_volume + , market_cap + , fdmc + , token_turnover_circulating + , token_turnover_fdv +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date) +left join aave_liquidation_supply_side_revenue using (date) +left join aave_ecosystem_incentives using (date) +left join dao_trading_revenue using (date) +left join safety_incentives using (date) +left join gho_treasury_revenue using (date) +left join treasury using (date) +left join net_treasury_data using (date) +left join aave_token_holders using (date) +left join coingecko_metrics using (date) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) diff --git a/models/_complete_asset_models/aave/ez_aave_metrics_by_chain__complete__.sql b/models/_complete_asset_models/aave/ez_aave_metrics_by_chain__complete__.sql new file mode 100644 index 00000000..50f52aa0 --- /dev/null +++ b/models/_complete_asset_models/aave/ez_aave_metrics_by_chain__complete__.sql @@ -0,0 +1,3754 @@ + + +with + __dbt__cte__raw_aave_v3_arbitrum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_arbitrum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_arbitrum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from arbitrum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_arbitrum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'arbitrum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x230B618aD4C475393A7239aE03630042281BD86e') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_base_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_base_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x5731a04B1E775f0fdd454Bf70f3335886e9A96be') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from base_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_base_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'base' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_bsc_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_bsc_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x67bdF23C7fCE7C65fF7415Ba3F2520B45D6f9584') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from bsc_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_bsc_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'bsc' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x64b761D848206f447Fe2dd461b0c635Ec39EbB27') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_gnosis_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_gnosis_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7304979ec9E4EaA0273b6A037a31c4e9e5A75D16') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from gnosis_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_gnosis_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'gnosis' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_optimism_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_optimism_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from optimism_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_optimism_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'optimism' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from arbitrum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_base_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from base_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_gnosis_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from gnosis_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_optimism_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from optimism_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from arbitrum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join arbitrum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join arbitrum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_base_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from base_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + +) +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join base_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join base_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_bsc_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from bsc_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + +) +select + block_timestamp::date as date + , 'bsc' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join bsc_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join bsc_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from gnosis_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + +) +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join gnosis_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join gnosis_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_optimism_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from optimism_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join optimism_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join optimism_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join arbitrum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'arbitrum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'avalanche' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'avalanche' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x01D83Fe6A10D2f2B7AF17034343746188272cAc9') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'avalanche' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join avalanche_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'avalanche' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_base_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xf9cc4F0D883F1a1eb2c253bdb46c254Ca51E1F44') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join base_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'base' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC206C2764A9dBF27d599613b8F9A63ACd1160ab4') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join bsc_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'bsc' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'ethereum' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'ethereum' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'ethereum' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'ethereum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xaD4F91D26254B6B0C6346b390dDA2991FDE2F20d') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join gnosis_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'gnosis' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join optimism_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'optimism' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'polygon' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'polygon' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x357D51124f59836DeD84c8a1730D72B749d8BC23') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'polygon' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join polygon_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'polygon' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_aavura_treasury as ( + + + +WITH +tokens as ( + SELECT LOWER(address) AS address + FROM ( + VALUES + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x5aFE3855358E112B5647B952709E6165e1c1eEEe'), + ('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) AS addresses(address) +) +, base AS ( + select + to_address, + from_address, + contract_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) in (select address from tokens) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + SUM(CASE WHEN to_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2 + ORDER BY 1 DESC +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select address from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.contract_address) +ORDER BY date DESC +), __dbt__cte__fact_aave_v2_collector as ( + + + +WITH + +tokens as ( + SELECT LOWER(a_token) AS a_token, LOWER(priced_token) AS priced_token + FROM ( + VALUES + ('0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0xae78736Cd615f374D3085123A210448E74Fc6393', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0xBcca60bB61934080951369a648Fb03DF4F96263C', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x018008bfb33d285247A21d44E50697654f754e63', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x0B925eD163218f6662a35e0f0371Ac234f9E9371', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x101cc05f4A51C0319f570d5E146a8C625198e636', '0x0000000000085d4780B73119b644AE5ecd22b376'), + ('0xA361718326c15715591c299427c62086F69923D9', '0x4Fabb145d64652a948d72533023f6E7A623C7C53'), + ('0xC7B4c17861357B8ABB91F25581E7263E08DCB59c', '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F'), + ('0xD37EE7e4f452C6638c96536e68090De8cBcdb583', '0xa0E5A19E091BBe241E655997E50da82DA676b083'), + ('0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x6C5024Cd4F8A59110119C56f8933403A539555EB', '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51'), + ('0xCc9EE9483f662091a1de4795249E24aC0aC2630f', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x3Fe6a295459FAe07DF8A0ceCC36F37160FE86AA9', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'), + ('0xB76CF92076adBF1D9C39294FA8e7A67579FDe357', '0xD33526068D116cE69F19A9ee46F0bd304F21A51f'), + ('0x8A458A9dc9048e005d22849F470891b840296619', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0x977b6fc5dE62598B08C85AC8Cf2b745874E8b78c', '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704'), + ('0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b', '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'), + ('0xd4e245848d6E1220DBE62e155d89fa327E43CB06', '0x853d955aCEf822Db058eb8505911ED77F175b99e'), + ('0xc9BC48c72154ef3e5425641a3c747242112a46AF', '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919'), + ('0xc713e5E149D5D0715DcD1c156a020976e7E56B88', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65', '0xD533a949740bb3306d119CC777fa900bA034cd52'), + ('0xa685a61171bb30d4072B338c80Cb7b2c865c873E', '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942'), + ('0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0xd24946147829DEaA935bE2aD85A3291dbf109c80', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA', '0xdd974D5C2e2928deA5F71b9825b8b646686BD200'), + ('0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x514910771AF9Ca656af840dff83E8264EcF986CA', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x9A44fd41566876A39655f74971a3A6eA0a17a454', '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), + ('0x71Aef7b30728b9BB371578f36c5A1f1502a5723e', '0x111111111117dC0aa78b770fA6A738034120C302'), + ('0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', '0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c'), + ('0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', '0xE41d2489571d322189246DaFA5ebDe1F4699F498'), + ('0x272F97b7a56a387aE942350bBC7Df5700f8a4576', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', '0x0D8775F648430679A709E98d2b0Cb6250d2887EF'), + ('0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + ) AS t(a_token, priced_token) +) +, base AS ( + select + to_address, + from_address, + contract_address, + priced_token, + block_timestamp::date as date, + amount, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + inner join tokens on lower(contract_address) = lower(a_token) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + priced_token, + SUM(CASE WHEN to_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2, 3 +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select distinct priced_token from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.priced_token) +), __dbt__cte__fact_aave_safety_module as ( + + + + + + + -- Add 1 to include both start and end dates + +with +stkAAVE as ( + select + block_timestamp::date as date + , lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkABPT_mints as ( + select + block_timestamp::date as date + , lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkGHO_mints as ( + select + block_timestamp::date as date + , lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, tokens as ( + SELECT lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + UNION + SELECT lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + UNION + SELECT lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token +) +, dt_spine as ( + SELECT '2018-01-01'::date + seq4() AS date + FROM TABLE(GENERATOR(ROWCOUNT => 2427)) + where date <= to_date(sysdate()) +) +, token_days as ( + SELECT tokens.token, dt_spine.date + from tokens + CROSS JOIN dt_spine +) +, daily_mint as ( + SELECT + date + , token + , sum(mint) as daily_mint + FROM ( + SELECT * FROM stkAAVE + UNION ALL + SELECT * FROM stkABPT_mints + UNION ALL + SELECT * FROM stkGHO_mints + ) a + GROUP BY date, token +) +, daily_mints_filled as ( + SELECT + token_days.token + , token_days.date + , COALESCE(daily_mint.daily_mint, 0) as daily_mint + from token_days + LEFT JOIN daily_mint + ON daily_mint.date = token_days.date + AND lower(daily_mint.token) = lower(token_days.token) +) +, result as ( + SELECT + token + , date + , daily_mint + , sum(daily_mint) over(partition by token order by date) as total_supply + FROM daily_mints_filled +) +, aave_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, gho_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'gho' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'gho' +) +, abpt_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave-balancer-pool-token' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave-balancer-pool-token' +) +, prices as ( + select date, '0x4da27a545c0c5b758a6ba100e3a049001de870f5' as token, price + from aave_prices + + union all + + select date, '0xa1116930326d21fb917d5a27f1e9943a9595fb47' as token, price + from abpt_prices + + union all + + select date, '0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d' as token, price + from gho_prices +) + + +SELECT + result.date + , 'ethereum' as chain + , result.token as token_address + , total_supply as amount_nominal + , coalesce(prices.price, 0) * total_supply as amount_usd +FROM result +LEFT JOIN prices + ON prices.token = result.token + AND prices.date = result.date +), __dbt__cte__fact_aave_ecosystem_reserve as ( + + + +WITH +base AS ( + select + to_address, + from_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + SUM(CASE WHEN to_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1 + ORDER BY 1 DESC +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p on p.date = dr.date +ORDER BY date DESC +), __dbt__cte__fact_aave_dao_balancer_trading_fees as ( + + +with +swaps as ( + select + block_timestamp + , decoded_log:tokenIn::string as token_address + , decoded_log:tokenAmountIn::float * 0.001 as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC697051d1C6296C24aE3bceF39acA743861D9A81') + and event_name = 'LOG_SWAP' +) +, swap_revenue as ( + select + block_timestamp::date as date + , swaps.token_address + , coalesce(amount / pow(10, decimals), 0) as amount_nominal + , coalesce(amount_nominal * price, 0) as amount_usd + from swaps + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(swaps.token_address) = lower(p.token_address) +) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as trading_fees_nominal + , sum(coalesce(amount_usd, 0)) as trading_fees_usd +from swap_revenue +where date < to_date(sysdate()) +group by 1, 2 +order by 1 desc +), __dbt__cte__fact_aave_dao_safety_incentives as ( + + +with + logs as ( + select + block_timestamp + , decoded_log:amount::float / 1E18 as amount_nominal + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4da27a545c0c5B758a6BA100e3a049001de870f5') + and event_name = 'RewardsClaimed' + ) + , prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + , priced_logs as ( + select + block_timestamp::date as date + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , amount_nominal + , amount_nominal * price as amount_usd + from logs + left join prices on block_timestamp::date = date + ) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 2 +), __dbt__cte__fact_aave_gho_treasury_revenue as ( + + +with +event_logs as ( + select + block_timestamp + , '0x' || substr(topics[2]::string, 27, 40) as asset + , pc_dbt_db.prod.hex_to_int(data) as amount + from ethereum_flipside.core.fact_event_logs + where contract_address = lower('0x00907f9921424583e7ffBfEdf84F92B7B2Be4977') + and topics[0]::string = '0xb29fcda740927812f5a71075b62e132bead3769a455319c29b9a1cc461a65475' +) +, priced_logs as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'AAVE GHO' as protocol + , 'ethereum' as chain + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 4 +order by 1 desc +), deposits_borrows_lender_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue + ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , chain + , sum(borrows_usd) as outstanding_supply + , sum(supply_usd) as net_deposits + , net_deposits - outstanding_supply as tvl + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(interest_rate_fees) as interest_rate_fees + , sum(reserve_factor_revenue) as reserve_factor_revenue + from deposits_borrows_lender_revenue + group by 1, 2 + ) + , flashloan_fees as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_base_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_gnosis_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_optimism_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_polygon_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_polygon_flashloan_fees + ) + , aave_flashloan_fees as ( + select + date + , chain + , sum(amount_usd) as flashloan_fees + from flashloan_fees + group by 1, 2 + ) + , liquidation_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_liquidation_revenue + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , chain + , sum(liquidation_revenue) as liquidation_revenue + from liquidation_revenue + group by 1, 2 + ) + , ecosystem_incentives as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_base_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives + ) + , aave_treasury as ( + select * from __dbt__cte__fact_aave_aavura_treasury + union all + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_safety_module + union all + select * from __dbt__cte__fact_aave_ecosystem_reserve + ) + , treasury as ( + select + date + , chain + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native + , sum(amount_usd) as treasury_value + from aave_treasury + group by date, 2 + ) + , aave_net_treasury as ( + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_aavura_treasury + ) + , net_treasury_data as ( + select + date + , chain + , sum(amount_usd) as net_treasury_value + from aave_net_treasury + group by 1, 2 + ) + , aave_ecosystem_incentives as ( + select + date + , chain + , sum(amount_usd) as ecosystem_incentives + from ecosystem_incentives + group by 1, 2 + ) + , dao_trading_revenue as ( + select + date + , chain + , sum(trading_fees_usd) as trading_fees + from __dbt__cte__fact_aave_dao_balancer_trading_fees + group by 1, 2 + ) + , safety_incentives as ( + select + date + , chain + , sum(amount_usd) as safety_incentives + from __dbt__cte__fact_aave_dao_safety_incentives + group by 1, 2 + ) + , gho_treasury_revenue as ( + select + date + , chain + , sum(amount_usd) as gho_revenue + from __dbt__cte__fact_aave_gho_treasury_revenue + group by 1, 2 + ) + +select + aave_outstanding_supply_net_deposits_deposit_revenue.date + , chain + , coalesce(interest_rate_fees, 0) as interest_rate_fees + , flashloan_fees + , gho_revenue as gho_fees + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + , supply_side_deposit_revenue + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + , flashloan_fees as flashloan_supply_side_revenue + , liquidation_revenue as liquidation_supply_side_revenue + , ecosystem_incentives as ecosystem_supply_side_revenue + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + , trading_fees as dao_trading_revenue + , gho_revenue + , coalesce(reserve_factor_revenue, 0) as reserve_factor_revenue + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + , ecosystem_incentives + , safety_incentives + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + , token_incentives as total_expenses + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + , outstanding_supply + , net_deposits + , tvl + , treasury_value + , net_treasury_value + , treasury_value_native +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date, chain) +left join aave_liquidation_supply_side_revenue using (date, chain) +left join aave_ecosystem_incentives using (date, chain) +left join dao_trading_revenue using (date, chain) +left join safety_incentives using (date, chain) +left join gho_treasury_revenue using (date, chain) +left join treasury using (date, chain) +left join net_treasury_data using (date, chain) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) diff --git a/models/_complete_asset_models/aave/ez_aave_metrics_by_token__complete__.sql b/models/_complete_asset_models/aave/ez_aave_metrics_by_token__complete__.sql new file mode 100644 index 00000000..9d77d1c4 --- /dev/null +++ b/models/_complete_asset_models/aave/ez_aave_metrics_by_token__complete__.sql @@ -0,0 +1,3833 @@ + +-- Liquidation Revenue can not be calculated by token. This is becuase the revenue is based on +-- the difference between the collateral revieved and the debt repaid +with + __dbt__cte__raw_aave_v3_arbitrum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_arbitrum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_arbitrum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from arbitrum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_arbitrum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'arbitrum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x230B618aD4C475393A7239aE03630042281BD86e') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_avalanche_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_avalanche_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from avalanche_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_avalanche_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'avalanche' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_base_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_base_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x5731a04B1E775f0fdd454Bf70f3335886e9A96be') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from base_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_base_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'base' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_bsc_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_bsc_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x67bdF23C7fCE7C65fF7415Ba3F2520B45D6f9584') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from bsc_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_bsc_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'bsc' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x311Bb771e4F8952E6Da169b425E7e92d6Ac45756') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_ethereum_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_ethereum + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_ethereum_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x64b761D848206f447Fe2dd461b0c635Ec39EbB27') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from ethereum_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_ethereum_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'ethereum' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_gnosis_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_gnosis_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x7304979ec9E4EaA0273b6A037a31c4e9e5A75D16') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from gnosis_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_gnosis_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'gnosis' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_optimism_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_optimism_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from optimism_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_optimism_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'optimism' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v2_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v2_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v2_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v2_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V2' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__raw_aave_v3_polygon_rpc_data as ( + + + +with + unioned as ( + --Earlier this year aave data was borked. In order to heal the data without doing a complete backfill + --we pull from the older avve tables. The extract logic is the exact same as the current table (raw_table) + + select * + from landing_database.prod_landing.raw_aave_v3_lending_polygon + union all + + select * + from LANDING_DATABASE.PROD_LANDING.raw_aave_v3_polygon_borrows_deposits_revenue + ), + dates as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date + from unioned t1, lateral flatten(input => parse_json(source_json)) as flat_json + group by date, extraction_date + ), + max_extraction_per_day as ( + select date, max(extraction_date) as extraction_date + from dates + group by date + order by date + ), + flattened_json as ( + select + extraction_date, + to_timestamp(trunc(flat_json.value:"day"::timestamp, 'day')) as date, + flat_json.value:"underlying_token"::string as underlying_token, + flat_json.value:"underlying_token_price"::float as underlying_token_price, + flat_json.value:"stable_borrows"::float as stable_borrows, + flat_json.value:"variable_borrows"::float as variable_borrows, + flat_json.value:"borrows"::float as borrows, + flat_json.value:"borrows_usd"::float as borrows_usd, + flat_json.value:"supply"::float as supply, + flat_json.value:"supply_usd"::float as supply_usd + from unioned, lateral flatten(input => parse_json(source_json)) as flat_json + ) +select t1.* +from flattened_json t1 +left join max_extraction_per_day t2 on t1.date = t2.date +where t1.extraction_date = t2.extraction_date + +), __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue as ( + + + +with + average_liquidity_rate as ( + select + block_timestamp::date as date + , decoded_log:reserve::string as reserve + , avg(decoded_log:stableBorrowRate::float / 1e27) as stable_borrow_rate + , avg(decoded_log:variableBorrowIndex::float / 1e27) as borrow_index + , avg(decoded_log:liquidityIndex::float / 1e27) as liquidity_index + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + and event_name = 'ReserveDataUpdated' + group by 1, 2 + ) + , reserve_factor_data as ( + select + block_timestamp::date as date + , decoded_log:asset::string as reserve + , max(coalesce(decoded_log:newReserveFactor::number, decoded_log:factor::number)) / 1E4 as reserve_factor + , max(decoded_log:oldReserveFactor::number) / 1E4 as old_reserve_factor + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8145eddDf43f50276641b55bd3AD95944510021E') + and event_name = 'ReserveFactorChanged' + group by 1, 2 + ) + , dates as ( + select distinct block_timestamp::date as date + from polygon_flipside.core.ez_decoded_event_logs + where date >= (select min(date) from reserve_factor_data) + ) + , cross_join_reserve_dates as ( + select + reserve + , date + from dates + cross join ( + select distinct reserve + from reserve_factor_data + ) + ) + , forward_filled_reserve_factor as ( + select + date + , reserve + , coalesce( + reserve_factor + , lag(reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as reserve_factor + , coalesce( + old_reserve_factor + , lag(old_reserve_factor) ignore nulls OVER (partition by reserve ORDER BY date) + ) as old_reserve_factor + from cross_join_reserve_dates + left join reserve_factor_data using(date, reserve) + ) + , daily_rate as ( + select + date + , reserve + , stable_borrow_rate/365 as stable_borrow_rate + , (borrow_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(borrow_index) OVER (partition by reserve ORDER BY date) + else borrow_index + end + ) - 1 as daily_borrow_rate + , ( liquidity_index / + case + when dateadd(day, -1, date) = lag(date) over (partition by reserve order by date) + then LAG(liquidity_index) OVER (partition by reserve ORDER BY date) + else liquidity_index + end + ) - 1 as daily_liquidity_rate + , coalesce( + reserve_factor + , old_reserve_factor + , 0 + ) as reserve_factor + from average_liquidity_rate + left join forward_filled_reserve_factor using(date, reserve) + ) + , data as ( + select + raw_data.date + , underlying_token_price + , underlying_token + , supply + , supply_usd + , coalesce(supply * daily_liquidity_rate, 0) as deposit_revenue_nominal + , coalesce(deposit_revenue_nominal * underlying_token_price, 0) as deposit_revenue + , borrows + , borrows_usd + , coalesce(variable_borrows * daily_borrow_rate, 0) as variable_borrow_fees_nominal + , coalesce(stable_borrows * stable_borrow_rate, 0) as stable_borrow_fees_nominal + , coalesce(variable_borrow_fees_nominal * underlying_token_price, 0) as variable_borrow_fees + , coalesce(stable_borrow_fees_nominal * underlying_token_price, 0) as stable_borrow_fees + , coalesce(variable_borrow_fees_nominal, 0) + coalesce(stable_borrow_fees_nominal, 0) as borrow_fees_nominal + , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees + , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal + , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + from __dbt__cte__raw_aave_v3_polygon_rpc_data as raw_data + left join daily_rate + on raw_data.date = daily_rate.date + and lower(raw_data.underlying_token) = lower(daily_rate.reserve) + ) + select + data.date + , data.underlying_token as token_address + , 'polygon' as chain + , 'AAVE V3' as app + , avg(underlying_token_price) as underlying_token_price + , sum(borrows) as borrows + , sum(borrows_usd) as borrows_usd + , sum(supply) as supply + , sum(supply_usd) as supply_usd + , sum(deposit_revenue) as deposit_revenue + , sum(deposit_revenue_nominal) as deposit_revenue_nominal + , sum(variable_borrow_fees) as variable_borrow_fees + , sum(variable_borrow_fees_nominal) as variable_borrow_fees_nominal + , sum(stable_borrow_fees) as stable_borrow_fees + , sum(stable_borrow_fees_nominal) as stable_borrow_fees_nominal + , sum(borrow_fees_nominal) as interest_rate_fees_nominal + , sum(borrow_fees) as interest_rate_fees + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + from data + group by 1, 2 + +), __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from arbitrum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_avalanche_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from avalanche_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_base_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from base_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_ethereum_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from ethereum_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_gnosis_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from gnosis_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_optimism_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from optimism_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v2_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V2' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_polygon_flashloan_fees as ( + + + + +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , flashloan_token as token_address + , sum(premium_amount) as amount_nominal + , sum(coalesce(premium_amount_usd, 0)) as amount_usd +from polygon_flipside.defi.ez_lending_flashloans +where platform = 'Aave V3' +group by 1, 2, 3, 4 + +), __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from arbitrum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'arbitrum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join arbitrum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join arbitrum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x4F01AeD16D97E3aB5ab2B501154DC9bb0F1A5A2C') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from avalanche_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'avalanche' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join avalanche_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join avalanche_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_base_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from base_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xA238Dd80C259a72e81d7e4664a9801593F98d1c5') + +) +select + block_timestamp::date as date + , 'base' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join base_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join base_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_bsc_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from bsc_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x6807dc923806fE8Fd134338EABCA509979a7e0cB') + +) +select + block_timestamp::date as date + , 'bsc' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join bsc_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join bsc_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from ethereum_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2') + +) +select + block_timestamp::date as date + , 'ethereum' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join ethereum_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join ethereum_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from gnosis_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0xb50201558B00496A145fE76f7424749556E326D8') + +) +select + block_timestamp::date as date + , 'gnosis' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join gnosis_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join gnosis_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_optimism_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from optimism_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'optimism' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join optimism_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join optimism_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v2_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x8dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V2' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_polygon_liquidation_revenue as ( + + + +with +liquidator_events as ( + select + block_timestamp + , tx_hash + , event_index + , decoded_log:liquidator::string as liquidator + , decoded_log:user::string as user + , coalesce(decoded_log:collateralAsset::string, decoded_log:collateral::string) as collateral_asset + , decoded_log:liquidatedCollateralAmount::float as liquidated_collateral_amount + , coalesce(decoded_log:debtAsset::string, decoded_log:principal::string) as debt_asset + , decoded_log:debtToCover::float as debt_to_cover + from polygon_flipside.core.ez_decoded_event_logs + where event_name = 'LiquidationCall' + and contract_address = lower('0x794a61358D6845594F94dc1DB02A252b5b4814aD') + +) +select + block_timestamp::date as date + , 'polygon' as chain + , 'Aave V3' as protocol + , block_timestamp + , tx_hash + , event_index + , collateral_asset + , liquidated_collateral_amount/pow(10, collateral_price.decimals) as collateral_amount_nominal + , collateral_amount_nominal * collateral_price.price as collateral_amount_usd + , debt_asset + , debt_to_cover / pow(10, debt_price.decimals) as debt_amount_nominal + , debt_amount_nominal * debt_price.price as debt_amount_usd + , collateral_amount_usd - debt_amount_usd as liquidation_revenue +from liquidator_events +left join polygon_flipside.price.ez_prices_hourly collateral_price + on lower(collateral_asset) = lower(collateral_price.token_address) + and date_trunc(hour, block_timestamp) = hour +left join polygon_flipside.price.ez_prices_hourly debt_price + on lower(debt_asset) = lower(debt_price.token_address) + and date_trunc(hour, block_timestamp) = debt_price.hour + +), __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from arbitrum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join arbitrum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'arbitrum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'avalanche' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'avalanche' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x01D83Fe6A10D2f2B7AF17034343746188272cAc9') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'avalanche' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from avalanche_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join avalanche_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'avalanche' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_base_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from base_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xf9cc4F0D883F1a1eb2c253bdb46c254Ca51E1F44') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join base_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'base' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from bsc_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC206C2764A9dBF27d599613b8F9A63ACd1160ab4') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join bsc_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'bsc' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'ethereum' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'ethereum' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'ethereum' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'ethereum' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from gnosis_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xaD4F91D26254B6B0C6346b390dDA2991FDE2F20d') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join gnosis_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'gnosis' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from optimism_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join optimism_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'optimism' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives as ( + + + +with +event_logs as ( + select + block_timestamp + , case + when 'polygon' = 'etherum' then '0x4da27a545c0c5B758a6BA100e3a049001de870f5' + when 'polygon' = 'avalanche' then '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + else '0x63a72806098Bd3D9520cC43356dD78afe5D386D9' + end as asset + , decoded_log:amount::float as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x357D51124f59836DeD84c8a1730D72B749d8BC23') + and event_name = 'RewardsClaimed' +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset as token_address + , amount + , amount / 1E18 as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join prices on block_timestamp::date = date +) +select + date + , 'polygon' as chain + , 'AAVE V2' as protocol + , token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives as ( + + + +with +event_logs as( + select + block_timestamp + , decoded_log:amount::float as amount + , decoded_log:reward::string as asset + from polygon_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x929EC64c34a17401F460460D4B9390518E5B473e') + and event_name = 'RewardsClaimed' +) +, event_logs_priced as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join polygon_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'polygon' as chain + , 'AAVE V3' as protocol + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from event_logs_priced +group by 1, 4 + +), __dbt__cte__fact_aave_aavura_treasury as ( + + + +WITH +tokens as ( + SELECT LOWER(address) AS address + FROM ( + VALUES + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x5aFE3855358E112B5647B952709E6165e1c1eEEe'), + ('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F') + ) AS addresses(address) +) +, base AS ( + select + to_address, + from_address, + contract_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) in (select address from tokens) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + SUM(CASE WHEN to_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x89C51828427F70D77875C6747759fB17Ba10Ceb0') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2 + ORDER BY 1 DESC +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select address from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.contract_address) +ORDER BY date DESC +), __dbt__cte__fact_aave_v2_collector as ( + + + +WITH + +tokens as ( + SELECT LOWER(a_token) AS a_token, LOWER(priced_token) AS priced_token + FROM ( + VALUES + ('0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0xae78736Cd615f374D3085123A210448E74Fc6393', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f', '0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f'), + ('0x4d5F47FA6A74757f35C14fD3a6Ef8E3C9BC514E8', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0xBcca60bB61934080951369a648Fb03DF4F96263C', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x3Ed3B47Dd13EC9a98b44e6204A523E766B225811', '0xdAC17F958D2ee523a2206206994597C13D831ec7'), + ('0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x5Ee5bf7ae06D1Be5997A1A72006FE6C607eC6DE8', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x018008bfb33d285247A21d44E50697654f754e63', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x028171bCA77440897B824Ca71D1c56caC55b68A3', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x0B925eD163218f6662a35e0f0371Ac234f9E9371', '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0'), + ('0x030bA81f1c18d280636F32af80b9AAd02Cf0854e', '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'), + ('0x5E8C8A7243651DB1384C0dDfDbE39761E8e7E51a', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0', '0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0'), + ('0x6B175474E89094C44Da98b954EedeAC495271d0F', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0x101cc05f4A51C0319f570d5E146a8C625198e636', '0x0000000000085d4780B73119b644AE5ecd22b376'), + ('0xA361718326c15715591c299427c62086F69923D9', '0x4Fabb145d64652a948d72533023f6E7A623C7C53'), + ('0xC7B4c17861357B8ABB91F25581E7263E08DCB59c', '0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F'), + ('0xD37EE7e4f452C6638c96536e68090De8cBcdb583', '0xa0E5A19E091BBe241E655997E50da82DA676b083'), + ('0xA700b4eB416Be35b2911fd5Dee80678ff64fF6C9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9'), + ('0x9ff58f4fFB29fA2266Ab25e75e2A8b3503311656', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x6C5024Cd4F8A59110119C56f8933403A539555EB', '0x57Ab1ec28D129707052df4dF418D58a2D46d5f51'), + ('0xCc9EE9483f662091a1de4795249E24aC0aC2630f', '0xae78736Cd615f374D3085123A210448E74Fc6393'), + ('0x3Fe6a295459FAe07DF8A0ceCC36F37160FE86AA9', '0x5f98805A4E8be255a32880FDeC7F6728C6568bA0'), + ('0xB76CF92076adBF1D9C39294FA8e7A67579FDe357', '0xD33526068D116cE69F19A9ee46F0bd304F21A51f'), + ('0x8A458A9dc9048e005d22849F470891b840296619', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0xF6D2224916DDFbbab6e6bd0D1B7034f4Ae0CaB18', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0x977b6fc5dE62598B08C85AC8Cf2b745874E8b78c', '0xBe9895146f7AF43049ca1c1AE358B0541Ea49704'), + ('0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b', '0x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'), + ('0xd4e245848d6E1220DBE62e155d89fa327E43CB06', '0x853d955aCEf822Db058eb8505911ED77F175b99e'), + ('0xc9BC48c72154ef3e5425641a3c747242112a46AF', '0x03ab458634910AaD20eF5f1C8ee96F1D6ac54919'), + ('0xc713e5E149D5D0715DcD1c156a020976e7E56B88', '0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2'), + ('0x7B95Ec873268a6BFC6427e7a28e396Db9D0ebc65', '0xD533a949740bb3306d119CC777fa900bA034cd52'), + ('0xa685a61171bb30d4072B338c80Cb7b2c865c873E', '0x0F5D2fB29fb7d3CFeE444a200298f468908cC942'), + ('0xB9D7CB55f463405CDfBe4E90a6D2Df01C2B92BF1', '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984'), + ('0xd24946147829DEaA935bE2aD85A3291dbf109c80', '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'), + ('0x39C6b3e42d6A679d7D776778Fe880BC9487C2EDA', '0xdd974D5C2e2928deA5F71b9825b8b646686BD200'), + ('0x2516E7B3F76294e03C42AA4c5b5b4DCE9C436fB8', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x514910771AF9Ca656af840dff83E8264EcF986CA', '0x514910771AF9Ca656af840dff83E8264EcF986CA'), + ('0x9A44fd41566876A39655f74971a3A6eA0a17a454', '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32'), + ('0x71Aef7b30728b9BB371578f36c5A1f1502a5723e', '0x111111111117dC0aa78b770fA6A738034120C302'), + ('0xaC6Df26a590F08dcC95D5a4705ae8abbc88509Ef', '0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c'), + ('0x79bE75FFC64DD58e66787E4Eae470c8a1FD08ba4', '0x6B175474E89094C44Da98b954EedeAC495271d0F'), + ('0xDf7FF54aAcAcbFf42dfe29DD6144A69b629f8C9e', '0xE41d2489571d322189246DaFA5ebDe1F4699F498'), + ('0x272F97b7a56a387aE942350bBC7Df5700f8a4576', '0xba100000625a3754423978a60c9317c58a424e3D'), + ('0x05Ec93c0365baAeAbF7AefFb0972ea7ECdD39CF1', '0x0D8775F648430679A709E98d2b0Cb6250d2887EF'), + ('0x13B2f6928D7204328b0E8E4BCd0379aA06EA21FA', '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'), + ('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') + ) AS t(a_token, priced_token) +) +, base AS ( + select + to_address, + from_address, + contract_address, + priced_token, + block_timestamp::date as date, + amount, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + inner join tokens on lower(contract_address) = lower(a_token) +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + contract_address, + priced_token, + SUM(CASE WHEN to_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c') THEN amount ELSE 0 END) AS amount_out + FROM base + GROUP BY 1, 2, 3 +) +, prices as ( + select + hour::date as date + , token_address + , avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where token_address in (select distinct priced_token from tokens) + group by 1, 2 +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , contract_address as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (partition by contract_address ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p + on p.date = dr.date + and lower(p.token_address) = lower(f.priced_token) +), __dbt__cte__fact_aave_safety_module as ( + + + + + + + -- Add 1 to include both start and end dates + +with +stkAAVE as ( + select + block_timestamp::date as date + , lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkABPT_mints as ( + select + block_timestamp::date as date + , lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, stkGHO_mints as ( + select + block_timestamp::date as date + , lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token + , case + when to_address = '0x0000000000000000000000000000000000000000' then -amount + when from_address = '0x0000000000000000000000000000000000000000' then amount + end as mint + from ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') + and ( + to_address = '0x0000000000000000000000000000000000000000' + or from_address = '0x0000000000000000000000000000000000000000' + ) +) +, tokens as ( + SELECT lower('0x4da27a545c0c5b758a6ba100e3a049001de870f5') as token + UNION + SELECT lower('0xa1116930326d21fb917d5a27f1e9943a9595fb47') as token + UNION + SELECT lower('0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d') as token +) +, dt_spine as ( + SELECT '2018-01-01'::date + seq4() AS date + FROM TABLE(GENERATOR(ROWCOUNT => 2427)) + where date <= to_date(sysdate()) +) +, token_days as ( + SELECT tokens.token, dt_spine.date + from tokens + CROSS JOIN dt_spine +) +, daily_mint as ( + SELECT + date + , token + , sum(mint) as daily_mint + FROM ( + SELECT * FROM stkAAVE + UNION ALL + SELECT * FROM stkABPT_mints + UNION ALL + SELECT * FROM stkGHO_mints + ) a + GROUP BY date, token +) +, daily_mints_filled as ( + SELECT + token_days.token + , token_days.date + , COALESCE(daily_mint.daily_mint, 0) as daily_mint + from token_days + LEFT JOIN daily_mint + ON daily_mint.date = token_days.date + AND lower(daily_mint.token) = lower(token_days.token) +) +, result as ( + SELECT + token + , date + , daily_mint + , sum(daily_mint) over(partition by token order by date) as total_supply + FROM daily_mints_filled +) +, aave_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) +, gho_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'gho' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'gho' +) +, abpt_prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave-balancer-pool-token' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave-balancer-pool-token' +) +, prices as ( + select date, '0x4da27a545c0c5b758a6ba100e3a049001de870f5' as token, price + from aave_prices + + union all + + select date, '0xa1116930326d21fb917d5a27f1e9943a9595fb47' as token, price + from abpt_prices + + union all + + select date, '0x1a88df1cfe15af22b3c4c783d4e6f7f9e0c1885d' as token, price + from gho_prices +) + + +SELECT + result.date + , 'ethereum' as chain + , result.token as token_address + , total_supply as amount_nominal + , coalesce(prices.price, 0) * total_supply as amount_usd +FROM result +LEFT JOIN prices + ON prices.token = result.token + AND prices.date = result.date +), __dbt__cte__fact_aave_ecosystem_reserve as ( + + + +WITH +base AS ( + select + to_address, + from_address, + block_timestamp::date as date, + amount_precise, + min(block_timestamp::date) OVER() as min_date + FROM ethereum_flipside.core.ez_token_transfers + where lower(contract_address) = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') +) +, date_range AS ( + SELECT * + FROM ( + SELECT + min_date + SEQ4() AS date + FROM base + ) + WHERE date <= TO_DATE(SYSDATE()) +) +, flows as ( + SELECT + date, + SUM(CASE WHEN to_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_in, + SUM(CASE WHEN from_address = lower('0x25F2226B597E8F9514B3F68F00f494cF4f286491') THEN amount_precise ELSE 0 END) AS amount_out + FROM base + GROUP BY 1 + ORDER BY 1 DESC +) +, prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + +SELECT + dr.date AS date + , 'ethereum' as chain + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , SUM(COALESCE(f.amount_in, 0) - COALESCE(f.amount_out, 0)) OVER (ORDER BY dr.date) as amount_nominal + , amount_nominal * p.price as amount_usd +FROM date_range dr +LEFT JOIN flows f + ON f.date = dr.date +LEFT JOIN prices p on p.date = dr.date +ORDER BY date DESC +), __dbt__cte__fact_aave_dao_balancer_trading_fees as ( + + +with +swaps as ( + select + block_timestamp + , decoded_log:tokenIn::string as token_address + , decoded_log:tokenAmountIn::float * 0.001 as amount + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0xC697051d1C6296C24aE3bceF39acA743861D9A81') + and event_name = 'LOG_SWAP' +) +, swap_revenue as ( + select + block_timestamp::date as date + , swaps.token_address + , coalesce(amount / pow(10, decimals), 0) as amount_nominal + , coalesce(amount_nominal * price, 0) as amount_usd + from swaps + left join ethereum_flipside.price.ez_prices_hourly p + on date_trunc(hour, block_timestamp) = hour + and lower(swaps.token_address) = lower(p.token_address) +) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as trading_fees_nominal + , sum(coalesce(amount_usd, 0)) as trading_fees_usd +from swap_revenue +where date < to_date(sysdate()) +group by 1, 2 +order by 1 desc +), __dbt__cte__fact_aave_dao_safety_incentives as ( + + +with + logs as ( + select + block_timestamp + , decoded_log:amount::float / 1E18 as amount_nominal + from ethereum_flipside.core.ez_decoded_event_logs + where contract_address = lower('0x4da27a545c0c5B758a6BA100e3a049001de870f5') + and event_name = 'RewardsClaimed' + ) + , prices as ( + select date as date, shifted_token_price_usd as price + from PC_DBT_DB.PROD.fact_coingecko_token_date_adjusted_gold + where + coingecko_id = 'aave' + and date < dateadd(day, -1, to_date(sysdate())) + union + select dateadd('day', -1, to_date(sysdate())) as date, token_current_price as price + from PC_DBT_DB.PROD.fact_coingecko_token_realtime_data + where token_id = 'aave' +) + , priced_logs as ( + select + block_timestamp::date as date + , '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9' as token_address + , amount_nominal + , amount_nominal * price as amount_usd + from logs + left join prices on block_timestamp::date = date + ) +select + date + , token_address + , 'AAVE DAO' as protocol + , 'ethereum' as chain + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 2 +), __dbt__cte__fact_aave_gho_treasury_revenue as ( + + +with +event_logs as ( + select + block_timestamp + , '0x' || substr(topics[2]::string, 27, 40) as asset + , pc_dbt_db.prod.hex_to_int(data) as amount + from ethereum_flipside.core.fact_event_logs + where contract_address = lower('0x00907f9921424583e7ffBfEdf84F92B7B2Be4977') + and topics[0]::string = '0xb29fcda740927812f5a71075b62e132bead3769a455319c29b9a1cc461a65475' +) +, priced_logs as ( + select + block_timestamp::date as date + , asset + , amount / pow(10, decimals) as amount_nominal + , amount_nominal * price as amount_usd + from event_logs + left join ethereum_flipside.price.ez_prices_hourly + on date_trunc(hour, block_timestamp) = hour + and lower(asset) = lower(token_address) +) +select + date + , 'AAVE GHO' as protocol + , 'ethereum' as chain + , asset as token_address + , sum(coalesce(amount_nominal, 0)) as amount_nominal + , sum(coalesce(amount_usd, 0)) as amount_usd +from priced_logs +group by 1, 4 +order by 1 desc +), deposits_borrows_lender_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_deposits_borrows_lender_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_deposits_borrows_lender_revenue + ) + , aave_outstanding_supply_net_deposits_deposit_revenue as ( + select + date + , chain + , token_address + , sum(borrows) as outstanding_supply_nominal + , sum(borrows_usd) as outstanding_supply + , sum(supply) as net_deposits_nominal + , sum(supply_usd) as net_deposits + , coalesce(net_deposits_nominal, 0) - coalesce(outstanding_supply_nominal, 0) as tvl_nominal + , coalesce(net_deposits, 0) - coalesce(outstanding_supply, 0) as tvl + , sum(deposit_revenue) as supply_side_deposit_revenue + , sum(deposit_revenue_nominal) as supply_side_deposit_revenue_nominal + , sum(interest_rate_fees) as interest_rate_fees + , sum(interest_rate_fees_nominal) as interest_rate_fees_nominal + , sum(reserve_factor_revenue) as reserve_factor_revenue + , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal + from deposits_borrows_lender_revenue + group by 1, 2, 3 + ) + , flashloan_fees as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_avalanche_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_base_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_ethereum_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_gnosis_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_optimism_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v2_polygon_flashloan_fees + union all + select * from __dbt__cte__fact_aave_v3_polygon_flashloan_fees + ) + , aave_flashloan_fees as ( + select + date + , chain + , token_address + , sum(amount_usd) as flashloan_fees + , sum(amount_nominal) as flashloan_fees_nominal + from flashloan_fees + group by 1, 2, 3 + ) + , liquidation_revenue as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_avalanche_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_base_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_bsc_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_ethereum_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_gnosis_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_optimism_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v2_polygon_liquidation_revenue + union all + select * from __dbt__cte__fact_aave_v3_polygon_liquidation_revenue + ) + , aave_liquidation_supply_side_revenue as ( + select + date + , chain + , 'USD' as token_address + , sum(liquidation_revenue) as liquidation_revenue + , null as liquidation_revenue_nominal + from liquidation_revenue + group by 1, 2, 3 + ) + , ecosystem_incentives as ( + select * from __dbt__cte__fact_aave_v3_arbitrum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_avalanche_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_base_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_bsc_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_ethereum_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_gnosis_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_optimism_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v2_polygon_ecosystem_incentives + union all + select * from __dbt__cte__fact_aave_v3_polygon_ecosystem_incentives + ) + + , aave_ecosystem_incentives as ( + select + date + , chain + , token_address + , sum(amount_usd) as ecosystem_incentives + , sum(amount_nominal) as ecosystem_incentives_nominal + from ecosystem_incentives + group by date, chain, token_address + ) + , aave_treasury as ( + select * from __dbt__cte__fact_aave_aavura_treasury + union all + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_safety_module + union all + select * from __dbt__cte__fact_aave_ecosystem_reserve + ) + , treasury as ( + select + date + , chain + , token_address + , sum(amount_usd) as treasury_value + , sum(amount_nominal) as treasury_value_nominal + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_usd else 0 end) as treasury_value_native + , sum(case when token_address = lower('0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9') then amount_nominal else 0 end) as treasury_value_native_nominal + from aave_treasury + group by date, chain, token_address + ) + , aave_net_treasury as ( + select * from __dbt__cte__fact_aave_v2_collector + union all + select * from __dbt__cte__fact_aave_aavura_treasury + ) + , net_treasury_data as ( + select + date + , chain + , token_address + , sum(amount_usd) as net_treasury_value + , sum(amount_nominal) as net_treasury_value_nominal + from aave_net_treasury + group by 1, 2, 3 + ) + , dao_trading_revenue as ( + select + date + , chain + , token_address + , sum(trading_fees_usd) as trading_fees + , sum(trading_fees_nominal) as trading_fees_nominal + from __dbt__cte__fact_aave_dao_balancer_trading_fees + group by 1, 2, 3 + ) + , safety_incentives as ( + select + date + , chain + , token_address + , sum(amount_usd) as safety_incentives + , sum(amount_nominal) as safety_incentives_nominal + from __dbt__cte__fact_aave_dao_safety_incentives + group by 1, 2, 3 + ) + , gho_treasury_revenue as ( + select + date + , chain + , token_address + , sum(amount_usd) as gho_revenue + , sum(amount_nominal) as gho_revenue_nominal + from __dbt__cte__fact_aave_gho_treasury_revenue + group by 1, 2, 3 + ) +select + aave_outstanding_supply_net_deposits_deposit_revenue.date + , chain + , token_address + + , coalesce(interest_rate_fees_nominal, 0) as interest_rate_fees_nominal + , coalesce(interest_rate_fees, 0) as interest_rate_fees + + , coalesce(flashloan_fees_nominal, 0) as flashloan_fees_nominal + , flashloan_fees + + , gho_revenue_nominal as gho_fees_nominal + , gho_revenue as gho_fees + + , coalesce(interest_rate_fees_nominal, 0) + coalesce(flashloan_fees_nominal, 0) + coalesce(gho_fees_nominal, 0) as fees_nominal + , coalesce(interest_rate_fees, 0) + coalesce(flashloan_fees, 0) + coalesce(gho_fees, 0) as fees + + , supply_side_deposit_revenue_nominal + , supply_side_deposit_revenue + + , coalesce(supply_side_deposit_revenue_nominal, 0) as primary_supply_side_revenue_nominal + , coalesce(supply_side_deposit_revenue, 0) as primary_supply_side_revenue + + , flashloan_fees_nominal as flashloan_supply_side_revenue_nominal + , flashloan_fees as flashloan_supply_side_revenue + + , liquidation_revenue_nominal as liquidation_supply_side_revenue_nominal + , liquidation_revenue as liquidation_supply_side_revenue + + , ecosystem_incentives_nominal as ecosystem_supply_side_revenue_nominal + , ecosystem_incentives as ecosystem_supply_side_revenue + + , coalesce(flashloan_fees_nominal, 0) + coalesce(gho_revenue_nominal, 0) + coalesce(liquidation_revenue_nominal, 0) + coalesce(ecosystem_incentives_nominal, 0) as secondary_supply_side_revenue_nominal + , coalesce(flashloan_fees, 0) + coalesce(gho_revenue, 0) + coalesce(liquidation_revenue, 0) + coalesce(ecosystem_incentives, 0) as secondary_supply_side_revenue + + , primary_supply_side_revenue_nominal + secondary_supply_side_revenue_nominal as total_supply_side_revenue_nominal + , primary_supply_side_revenue + secondary_supply_side_revenue as total_supply_side_revenue + + , reserve_factor_revenue_nominal as reserve_factor_revenue_nominal + , reserve_factor_revenue + + , trading_fees_nominal as dao_trading_revenue_nominal + , trading_fees as dao_trading_revenue + + , gho_revenue_nominal + , gho_revenue + + , coalesce(reserve_factor_revenue_nominal, 0) + coalesce(dao_trading_revenue_nominal, 0) + coalesce(gho_revenue_nominal, 0) as protocol_revenue_nominal + , coalesce(reserve_factor_revenue, 0) + coalesce(dao_trading_revenue, 0) + coalesce(gho_revenue, 0) as protocol_revenue + + , ecosystem_incentives_nominal as ecosystem_incentives_nominal + , ecosystem_incentives + + , safety_incentives_nominal as safety_incentives_nominal + , safety_incentives + + , coalesce(ecosystem_incentives_nominal, 0) + coalesce(safety_incentives_nominal, 0) as token_incentives_nominal + , coalesce(ecosystem_incentives, 0) + coalesce(safety_incentives, 0) as token_incentives + + , token_incentives_nominal as total_expenses_nominal + , token_incentives as total_expenses + + , coalesce(protocol_revenue_nominal, 0) - coalesce(total_expenses_nominal, 0) as protocol_earnings_nominal + , coalesce(protocol_revenue, 0) - coalesce(total_expenses, 0) as protocol_earnings + + , outstanding_supply_nominal + , outstanding_supply + + , net_deposits_nominal + , net_deposits + + , tvl_nominal + , tvl + + , treasury_value_nominal + , treasury_value + + , net_treasury_value_nominal + , net_treasury_value + + , treasury_value_native_nominal + , treasury_value_native + +from aave_outstanding_supply_net_deposits_deposit_revenue +left join aave_flashloan_fees using (date, chain, token_address) +left join aave_liquidation_supply_side_revenue using (date, chain, token_address) +left join aave_ecosystem_incentives using (date, chain, token_address) +left join dao_trading_revenue using (date, chain, token_address) +left join safety_incentives using (date, chain, token_address) +left join gho_treasury_revenue using (date, chain, token_address) +left join treasury using (date, chain, token_address) +left join net_treasury_data using (date, chain, token_address) +where aave_outstanding_supply_net_deposits_deposit_revenue.date < to_date(sysdate()) From 5c7d74c84b1c3c890b4dfc6fbdb443c71ccd8f9b Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:12:52 -0400 Subject: [PATCH 188/213] Updated Tagging + Fix Sei Transactions (#441) --- models/dimensions/apps/dim_apps_silver.sql | 86 ++++++++++++-------- models/staging/sei/fact_sei_transactions.sql | 1 + 2 files changed, 52 insertions(+), 35 deletions(-) diff --git a/models/dimensions/apps/dim_apps_silver.sql b/models/dimensions/apps/dim_apps_silver.sql index 0e8775b0..ef2ffb4a 100644 --- a/models/dimensions/apps/dim_apps_silver.sql +++ b/models/dimensions/apps/dim_apps_silver.sql @@ -52,40 +52,56 @@ with {{ ref("dim_coingecko_tokens") }} as token on sigma_apps.coingecko_id = token.coingecko_token_id group by namespace + ), + all_apps as ( + select + coalesce( + sigma_app_tagged.namespace, sui.namespace, dune_namespace.namespace, flipside.namespace + ) as namespace, + coalesce( + sigma_app_tagged.friendly_name, + sui.friendly_name, + initcap(replace(dune_namespace.namespace, '_', ' ')), + flipside.friendly_name + ) as friendly_name, + coalesce(sigma_app_tagged.sub_category, sui.sub_category, flipside.sub_category) as sub_category, + coalesce(sigma_app_tagged.category, sui.category, flipside.category) as category, + artemis_id, + coingecko_id, + ecosystem_id, + cast(defillama_protocol_id as string) as defillama_protocol_id, + parent_app, + coalesce(visibility, 1) as visibility, + symbol, + coalesce(sigma_app_tagged.icon, sui.icon) as icon + from sigma_app_tagged + full join + {{ ref("dim_dune_namespaces") }} as dune_namespace + on sigma_app_tagged.namespace = dune_namespace.namespace + full join + {{ ref("dim_flipside_namespaces") }} as flipside + on sigma_app_tagged.namespace = flipside.namespace + full join + {{ ref("dim_sui_namespaces") }} as sui + on sigma_app_tagged.namespace = sui.namespace + where + sigma_app_tagged.namespace is not null + or dune_namespace.namespace is not null + or flipside.namespace is not null + or sui.namespace is not null ) + SELECT + namespace, + friendly_name, + case when sub_category = 'None' then null else sub_category end as sub_category, + case when category = 'None' then null else category end as category, + case when artemis_id = 'None' then null else artemis_id end as artemis_id, + coingecko_id, + ecosystem_id, + defillama_protocol_id, + case when parent_app = 'None' then null else parent_app end as parent_app, + visibility, + symbol, + icon + FROM all_apps -select - coalesce( - sigma_app_tagged.namespace, sui.namespace, dune_namespace.namespace, flipside.namespace - ) as namespace, - coalesce( - sigma_app_tagged.friendly_name, - sui.friendly_name, - initcap(replace(dune_namespace.namespace, '_', ' ')), - flipside.friendly_name - ) as friendly_name, - coalesce(sigma_app_tagged.sub_category, sui.sub_category, flipside.sub_category) as sub_category, - coalesce(sigma_app_tagged.category, sui.category, flipside.category) as category, - artemis_id, - coingecko_id, - ecosystem_id, - cast(defillama_protocol_id as string) as defillama_protocol_id, - parent_app, - coalesce(visibility, 1) as visibility, - symbol, - coalesce(sigma_app_tagged.icon, sui.icon) as icon -from sigma_app_tagged -full join - {{ ref("dim_dune_namespaces") }} as dune_namespace - on sigma_app_tagged.namespace = dune_namespace.namespace -full join - {{ ref("dim_flipside_namespaces") }} as flipside - on sigma_app_tagged.namespace = flipside.namespace -full join - {{ ref("dim_sui_namespaces") }} as sui - on sigma_app_tagged.namespace = sui.namespace -where - sigma_app_tagged.namespace is not null - or dune_namespace.namespace is not null - or flipside.namespace is not null - or sui.namespace is not null diff --git a/models/staging/sei/fact_sei_transactions.sql b/models/staging/sei/fact_sei_transactions.sql index a1ec547b..f30583c6 100644 --- a/models/staging/sei/fact_sei_transactions.sql +++ b/models/staging/sei/fact_sei_transactions.sql @@ -96,4 +96,5 @@ SELECT max(native_token_balance) as native_token_balance, max(stablecoin_balance) as stablecoin_balance FROM transaction_data +WHERE block_timestamp <= date_trunc('day', sysdate()) GROUP BY tx_hash From 9fd55bfbd0714ae11ee9a0f59352d1f662decabe Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sat, 24 Aug 2024 08:53:28 +0300 Subject: [PATCH 189/213] add EURC dbt model (#442) --- databases.csv | 1 + models/projects/eurc/core/ez_eurc_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/eurc/core/ez_eurc_metrics.sql diff --git a/databases.csv b/databases.csv index b682fb82..92461b52 100644 --- a/databases.csv +++ b/databases.csv @@ -37,6 +37,7 @@ EIGENPIE ETHEREUM ETHEREUM_FLIPSIDE ETHERFI +EURC FANTOM FLOW FLOW_FLIPSIDE diff --git a/models/projects/eurc/core/ez_eurc_metrics.sql b/models/projects/eurc/core/ez_eurc_metrics.sql new file mode 100644 index 00000000..18c8a663 --- /dev/null +++ b/models/projects/eurc/core/ez_eurc_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="EURC", + database="eurc", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("EURC") }} From aaa234cc5bb40605aa65642a391d52d21f70bb12 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sat, 24 Aug 2024 13:39:41 +0300 Subject: [PATCH 190/213] add cEUR dbt model (#443) --- databases.csv | 1 + models/projects/ceur/core/ez_ceur_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/ceur/core/ez_ceur_metrics.sql diff --git a/databases.csv b/databases.csv index 92461b52..2eabdc91 100644 --- a/databases.csv +++ b/databases.csv @@ -25,6 +25,7 @@ CARDANO CCTP CELESTIA CELO +CEUR CHAINLINK COMMON COMPOUND diff --git a/models/projects/ceur/core/ez_ceur_metrics.sql b/models/projects/ceur/core/ez_ceur_metrics.sql new file mode 100644 index 00000000..6273d0fe --- /dev/null +++ b/models/projects/ceur/core/ez_ceur_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="CEUR", + database="ceur", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("CEUR") }} From 16babf2662e18b8d164d8d5552f940ac4a24f3e3 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sat, 24 Aug 2024 14:31:34 +0300 Subject: [PATCH 191/213] add cKES dbt model (#444) --- databases.csv | 1 + models/projects/ckes/core/ez_ckes_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/ckes/core/ez_ckes_metrics.sql diff --git a/databases.csv b/databases.csv index 2eabdc91..53abc040 100644 --- a/databases.csv +++ b/databases.csv @@ -27,6 +27,7 @@ CELESTIA CELO CEUR CHAINLINK +CKES COMMON COMPOUND COSMOSHUB diff --git a/models/projects/ckes/core/ez_ckes_metrics.sql b/models/projects/ckes/core/ez_ckes_metrics.sql new file mode 100644 index 00000000..dc4c4db1 --- /dev/null +++ b/models/projects/ckes/core/ez_ckes_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="CKES", + database="ckes", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("CKES") }} From cef455c5ef04c222374e9744fde8931c3f693e1b Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sat, 24 Aug 2024 15:29:11 +0300 Subject: [PATCH 192/213] add cREAL dbt model (#445) --- databases.csv | 1 + models/projects/creal/core/ez_creal_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/creal/core/ez_creal_metrics.sql diff --git a/databases.csv b/databases.csv index 53abc040..6a191273 100644 --- a/databases.csv +++ b/databases.csv @@ -31,6 +31,7 @@ CKES COMMON COMPOUND COSMOSHUB +CREAL CUSD DAI DEXALOT diff --git a/models/projects/creal/core/ez_creal_metrics.sql b/models/projects/creal/core/ez_creal_metrics.sql new file mode 100644 index 00000000..dd0bb2a2 --- /dev/null +++ b/models/projects/creal/core/ez_creal_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="CREAL", + database="creal", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("CREAL") }} From bdb17ec5e7ef12cbdfc6897f0fdc39fa4f7fbd70 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sun, 25 Aug 2024 13:13:28 +0300 Subject: [PATCH 193/213] add USDP dbt model (#447) --- databases.csv | 1 + models/projects/usdp/core/ez_usdp_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/usdp/core/ez_usdp_metrics.sql diff --git a/databases.csv b/databases.csv index 6a191273..d6474d4d 100644 --- a/databases.csv +++ b/databases.csv @@ -85,5 +85,6 @@ TRON UNISWAP USDC USDE +USDP USDT ZKSYNC diff --git a/models/projects/usdp/core/ez_usdp_metrics.sql b/models/projects/usdp/core/ez_usdp_metrics.sql new file mode 100644 index 00000000..733c1aba --- /dev/null +++ b/models/projects/usdp/core/ez_usdp_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="USDP", + database="usdp", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("USDP") }} From 31b8f48efcffd6e6b503ca32fcbc4cbd66ec5876 Mon Sep 17 00:00:00 2001 From: adim1973 Date: Sun, 25 Aug 2024 14:26:17 +0300 Subject: [PATCH 194/213] add USDGLO dbt model (#448) --- databases.csv | 1 + models/projects/usdglo/core/ez_usdglo_metrics.sql | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 models/projects/usdglo/core/ez_usdglo_metrics.sql diff --git a/databases.csv b/databases.csv index d6474d4d..65ec2505 100644 --- a/databases.csv +++ b/databases.csv @@ -85,6 +85,7 @@ TRON UNISWAP USDC USDE +USDGLO USDP USDT ZKSYNC diff --git a/models/projects/usdglo/core/ez_usdglo_metrics.sql b/models/projects/usdglo/core/ez_usdglo_metrics.sql new file mode 100644 index 00000000..002a6b81 --- /dev/null +++ b/models/projects/usdglo/core/ez_usdglo_metrics.sql @@ -0,0 +1,12 @@ +{{ + config( + materialized="incremental", + unique_key="date", + snowflake_warehouse="USDGLO", + database="usdglo", + schema="core", + alias="ez_metrics", + ) +}} + +{{ get_stablecoin_ez_metrics("USDGLO") }} From 6900ad186110a9177132474fe16c2489dd0bceba Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 26 Aug 2024 22:39:05 -0400 Subject: [PATCH 195/213] Updating AAVE with APY (#449) --- .../aave_deposits_borrows_lender_revenue.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/macros/lending/aave_deposits_borrows_lender_revenue.sql b/macros/lending/aave_deposits_borrows_lender_revenue.sql index 4b16d518..b5f3fd1b 100644 --- a/macros/lending/aave_deposits_borrows_lender_revenue.sql +++ b/macros/lending/aave_deposits_borrows_lender_revenue.sql @@ -99,6 +99,13 @@ with , coalesce(variable_borrow_fees, 0) + coalesce(stable_borrow_fees, 0) as borrow_fees , borrow_fees_nominal * coalesce(reserve_factor, 0) as reserve_factor_revenue_nominal , borrow_fees * coalesce(reserve_factor, 0) as reserve_factor_revenue + , daily_liquidity_rate + , daily_borrow_rate + , stable_borrow_rate + , pow(1 + daily_liquidity_rate, 365) - 1 as liquidity_apy + , pow(1 + daily_borrow_rate, 365) - 1 as variable_borrow_apy + , pow(1 + stable_borrow_rate, 365) - 1 as stable_borrow_apy + from {{ref(raw_table)}} as raw_data left join daily_rate on raw_data.date = daily_rate.date @@ -124,6 +131,12 @@ with , sum(borrow_fees) as interest_rate_fees , sum(reserve_factor_revenue_nominal) as reserve_factor_revenue_nominal , sum(reserve_factor_revenue) as reserve_factor_revenue + , avg(daily_liquidity_rate) as daily_liquidity_rate + , avg(daily_borrow_rate) as daily_borrow_rate + , avg(stable_borrow_rate) as stable_borrow_rate + , avg(liquidity_apy) as liquidity_apy + , avg(variable_borrow_apy) as variable_borrow_apy + , avg(stable_borrow_apy) as stable_borrow_apy from data group by 1, 2 {% endmacro %} \ No newline at end of file From 1c3a28e728b3d51aba9fb9d8e5284e41c68281c4 Mon Sep 17 00:00:00 2001 From: alexwes Date: Tue, 27 Aug 2024 17:44:19 -0400 Subject: [PATCH 196/213] adding lido earnings and total expenses (#414) --- models/projects/lido/core/ez_lido_metrics.sql | 3 ++- models/projects/lido/core/ez_lido_metrics_by_chain.sql | 3 ++- models/projects/lido/core/ez_lido_metrics_by_token.sql | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/models/projects/lido/core/ez_lido_metrics.sql b/models/projects/lido/core/ez_lido_metrics.sql index 5f1aafbc..fce49e6f 100644 --- a/models/projects/lido/core/ez_lido_metrics.sql +++ b/models/projects/lido/core/ez_lido_metrics.sql @@ -83,7 +83,8 @@ select , COALESCE(f.protocol_revenue, 0) as protocol_revenue , COALESCE(f.operating_expenses, 0) as operating_expenses , COALESCE(ti.token_incentives, 0) as token_incentives - , COALESCE(f.protocol_revenue, 0) - COALESCE(f.operating_expenses, 0) - COALESCE(ti.token_incentives, 0) as protocol_earnings + , token_incentives + operating_expenses as total_expenses + , protocol_revenue - total_expenses as protocol_earnings , COALESCE(t.treasury_value, 0) as treasury_value , COALESCE(tn.treasury_native, 0) as treasury_native , COALESCE(nt.net_treasury_value, 0) as net_treasury_value diff --git a/models/projects/lido/core/ez_lido_metrics_by_chain.sql b/models/projects/lido/core/ez_lido_metrics_by_chain.sql index a8554203..da81cc44 100644 --- a/models/projects/lido/core/ez_lido_metrics_by_chain.sql +++ b/models/projects/lido/core/ez_lido_metrics_by_chain.sql @@ -92,7 +92,8 @@ select , COALESCE(f.protocol_revenue, 0) as protocol_revenue , COALESCE(f.operating_expenses, 0) as operating_expenses , COALESCE(ti.token_incentives, 0) as token_incentives - , COALESCE(f.protocol_revenue, 0) - COALESCE(f.operating_expenses, 0) - COALESCE(ti.token_incentives, 0) as protocol_earnings + , token_incentives + operating_expenses as total_expenses + , protocol_revenue - total_expenses as protocol_earnings , COALESCE(t.treasury_value, 0) as treasury_value , COALESCE(tn.treasury_native, 0) as treasury_native , COALESCE(nt.net_treasury_value, 0) as net_treasury_value diff --git a/models/projects/lido/core/ez_lido_metrics_by_token.sql b/models/projects/lido/core/ez_lido_metrics_by_token.sql index 92a6ba2b..b3434180 100644 --- a/models/projects/lido/core/ez_lido_metrics_by_token.sql +++ b/models/projects/lido/core/ez_lido_metrics_by_token.sql @@ -91,7 +91,8 @@ SELECT , COALESCE(protocol_revenue_native, 0) AS protocol_revenue , COALESCE(operating_expenses_native, 0) AS operating_expenses , COALESCE(ti.token_incentives_native, 0) AS token_incentives - , COALESCE(protocol_revenue_native, 0) - COALESCE(operating_expenses_native, 0) - COALESCE(ti.token_incentives_native, 0) AS protocol_earnings + , token_incentives + operating_expenses as total_expenses + , protocol_revenue - total_expenses as protocol_earnings , COALESCE(t.treasury_value_native, 0) AS treasury_value , COALESCE(tn.treasury_native, 0) AS treasury_native , COALESCE(nt.net_treasury_value_native, 0) AS net_treasury_value From 74ad954ad680d1911f6ac58866bd04de0842dd37 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:17:10 -0400 Subject: [PATCH 197/213] Updating coingecko metadata (#452) --- models/staging/coingecko/fact_coingecko_token_metadata.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models/staging/coingecko/fact_coingecko_token_metadata.sql b/models/staging/coingecko/fact_coingecko_token_metadata.sql index f9101e11..d1b0e9ab 100644 --- a/models/staging/coingecko/fact_coingecko_token_metadata.sql +++ b/models/staging/coingecko/fact_coingecko_token_metadata.sql @@ -56,7 +56,7 @@ with select fd.*, fc.token_categories, fh.token_homepage_link, fcu.token_chat_url from flattened_data fd -join flattened_categories fc using (date, coingecko_token_id) -join flattened_homepage fh using (date, coingecko_token_id) -join flattened_chat_url fcu using (date, coingecko_token_id) +left join flattened_categories fc using (date, coingecko_token_id) +left join flattened_homepage fh using (date, coingecko_token_id) +left join flattened_chat_url fcu using (date, coingecko_token_id) order by token_market_cap_rank asc From f2022edcc26e83bc4bd2d79ea8f35af072a5b4cd Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:20:34 -0400 Subject: [PATCH 198/213] updating zksync to be on dune data (#454) --- models/staging/zksync/__zksync__sources.yml | 6 ---- .../fact_zksync_daa_txns_gas_gas_usd.sql | 36 +++++++++---------- 2 files changed, 18 insertions(+), 24 deletions(-) delete mode 100644 models/staging/zksync/__zksync__sources.yml diff --git a/models/staging/zksync/__zksync__sources.yml b/models/staging/zksync/__zksync__sources.yml deleted file mode 100644 index ff719de3..00000000 --- a/models/staging/zksync/__zksync__sources.yml +++ /dev/null @@ -1,6 +0,0 @@ -sources: - - name: PROD_LANDING - schema: PROD_LANDING - database: LANDING_DATABASE - tables: - - name: raw_zksync_data diff --git a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql index 6b5b58d6..1a37aecf 100644 --- a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql +++ b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql @@ -1,21 +1,21 @@ -{{ config(materialized="view") }} - +{{ config(materialized="table") }} with - max_extraction as ( - select max(extraction_date) as max_date - from {{ source("PROD_LANDING", "raw_zksync_data") }} - ), - zksync_data as ( - select parse_json(source_json) as data - from {{ source("PROD_LANDING", "raw_zksync_data") }} - where extraction_date = (select max_date from max_extraction) + prices as ( {{ get_coingecko_price_with_latest("ethereum") }}) + , fundamentals as ( + select + block_date as date + , count(distinct case when success = 'TRUE' then hash_hex end) as txns + , count(distinct from_hex) as daa + , sum(gas_used * gas_price) / 1E18 as gas + from zksync_dune.zksync.transactions + group by 1 ) select - date(left(value:"date_time"::string, 10)) as date, - value:unique_active_users as daa, - value:all_transactions as txns, - coalesce(value:txn_fees, 0) as gas, - coalesce(value:txn_fees_usd, 0) as gas_usd, - value as source, - 'zksync' as chain -from zksync_data, lateral flatten(input => data:data:records) + date + , txns + , daa + , gas + , gas * price as gas_usd +from fundamentals +left join prices using(date) +order by date desc \ No newline at end of file From 37cc761615eda98b298327d8143f4eddc063386d Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Thu, 29 Aug 2024 19:36:06 -0400 Subject: [PATCH 199/213] Quickfix: Adding chain to zksync query (#455) --- models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql index 1a37aecf..a67455d4 100644 --- a/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql +++ b/models/staging/zksync/fact_zksync_daa_txns_gas_gas_usd.sql @@ -12,6 +12,7 @@ with ) select date + , 'zksync' as chain , txns , daa , gas From 08bebac612909f0c26e02e8afa02558908baec74 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Mon, 2 Sep 2024 21:02:21 -0400 Subject: [PATCH 200/213] Stablecoins (TON): Updating stablecoin metrics for ton (#457) --- macros/stablecoins/stablecoin_metrics.sql | 24 +++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/macros/stablecoins/stablecoin_metrics.sql b/macros/stablecoins/stablecoin_metrics.sql index 261135d8..59786a59 100644 --- a/macros/stablecoins/stablecoin_metrics.sql +++ b/macros/stablecoins/stablecoin_metrics.sql @@ -170,12 +170,24 @@ select date , from_address - , contract_name - , contract - , application - , icon - , app - , category + -- There is currently an issue with ton data + -- In order to fix this in the short term we need to remove all tags. + {% if chain == 'ton' %} + , null as contract_name + , null as contract + , null as application + , null as icon + , null as app + , null as category + {% else %} + , contract_name + , contract + , application + , icon + , app + , category + {% endif %} + , is_wallet , contract_address From 57c897adaba53800dca57bc1cfa805319fe72352 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:54:55 -0400 Subject: [PATCH 201/213] [Stablecoin Dashboard] Adding ton stablecoin metrics to ez table (#458) --- models/projects/ton/core/ez_ton_metrics.sql | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index f4dc14cf..2a498241 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -32,11 +32,17 @@ with dex_volumes from {{ ref("fact_ton_dex_volumes") }} ), + stablecoin_data as ({{ get_stablecoin_metrics("ton") }}), github_data as ({{ get_github_metrics("ton") }}) select ton.date, 'ton' as chain, transaction_nodes, + stablecoin_total_supply, + stablecoin_txns, + stablecoin_dau, + stablecoin_transfer_volume, + deduped_stablecoin_transfer_volume, price, market_cap, fdmc, @@ -59,4 +65,5 @@ left join defillama_data on ton.date = defillama_data.date left join github_data on ton.date = github_data.date left join dex_data on ton.date = dex_data.date left join fundamental_data on ton.date = fundamental_data.date +left join stablecoin_data on ton.date = stablecoin_data.date where ton.date < to_date(sysdate()) From f03ca3eb58f825652866d704b20b091284f66a58 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Tue, 3 Sep 2024 16:54:08 -0400 Subject: [PATCH 202/213] Added Defillama as its own project (#459) --- databases.csv | 1 + .../core/ez_defillama_metrics_by_chains.sql | 17 +++++++++++++++++ .../core/ez_defillama_metrics_by_protocols.sql | 17 +++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 models/projects/defillama/core/ez_defillama_metrics_by_chains.sql create mode 100644 models/projects/defillama/core/ez_defillama_metrics_by_protocols.sql diff --git a/databases.csv b/databases.csv index 65ec2505..7d7f4361 100644 --- a/databases.csv +++ b/databases.csv @@ -35,6 +35,7 @@ CREAL CUSD DAI DEXALOT +DEFILLAMA DFK EIGENPIE ETHEREUM diff --git a/models/projects/defillama/core/ez_defillama_metrics_by_chains.sql b/models/projects/defillama/core/ez_defillama_metrics_by_chains.sql new file mode 100644 index 00000000..f2743772 --- /dev/null +++ b/models/projects/defillama/core/ez_defillama_metrics_by_chains.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="defillama", + database="defillama", + schema="core", + alias="ez_defillama_metrics_by_chains", + ) +}} + +select + date, + defillama_chain_name as chain, + dex_volumes, + tvl +from {{ref("agg_defillama_chain_fees_rev_tvl_dex_vol")}} +where date is not null diff --git a/models/projects/defillama/core/ez_defillama_metrics_by_protocols.sql b/models/projects/defillama/core/ez_defillama_metrics_by_protocols.sql new file mode 100644 index 00000000..85bf32c7 --- /dev/null +++ b/models/projects/defillama/core/ez_defillama_metrics_by_protocols.sql @@ -0,0 +1,17 @@ +{{ + config( + materialized="table", + snowflake_warehouse="defillama", + database="defillama", + schema="core", + alias="ez_defillama_metrics_by_protocols", + ) +}} + +select + date, + name, + dex_volumes, + tvl +from {{ref("agg_defillama_protocol_fees_rev_tvl_dex_vol")}} +where date is not null From a967a657d81992d55a8fe66cff1305c126d30631 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Wed, 4 Sep 2024 11:14:07 -0400 Subject: [PATCH 203/213] Filtered out un verified stablecoin transfers and accounts (#460) --- models/projects/ton/raw/ez_ton_stablecoin_transfers.sql | 1 + models/staging/ton/fact_ton_stablecoin_transfers.sql | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index 88fb9ca5..f550d753 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -55,6 +55,7 @@ select fact_ton_stablecoin_contracts.contract_address from {{ ref('fact_ton_stablecoin_transfers') }} as transfers +where dest_verified and source_verified and account_verified left join pc_dbt_db.prod.fact_ton_stablecoin_contracts on lower(transfers.symbol) diff --git a/models/staging/ton/fact_ton_stablecoin_transfers.sql b/models/staging/ton/fact_ton_stablecoin_transfers.sql index b88ea022..1cad68cd 100644 --- a/models/staging/ton/fact_ton_stablecoin_transfers.sql +++ b/models/staging/ton/fact_ton_stablecoin_transfers.sql @@ -20,6 +20,9 @@ with raw_data as ( , source_json:"decimals"::int as decimal , source_json:"symbol"::string as symbol , source_json:"trace_id"::string as trace_id + , source_json:"dest_verified"::boolean as dest_verified + , source_json:"source_verified"::boolean as source_verified + , source_json:"account_verified"::boolean as account_verified from {{ source("PROD_LANDING", "raw_ton_stablecoin_transfers") }} {% if is_incremental() %} @@ -38,6 +41,9 @@ select , max_by(trace_id, extraction_date) as trace_id , max_by(decimal, extraction_date) as decimal , case when (max_by(symbol, extraction_date) = 'USDâ‚®' or max_by(url, extraction_date) = 'https://tether.to/usdt-ton.json') then 'USDT' else max_by(symbol, extraction_date) end as symbol + , max_by(dest_verified, extraction_date) as dest_verified + , max_by(source_verified, extraction_date) as source_verified + , max_by(account_verified, extraction_date) as account_verified from raw_data where from_address is not null and From db1cc6738a7cbdb1a85cbbf8d9cffc4304de474d Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Wed, 4 Sep 2024 13:32:28 -0400 Subject: [PATCH 204/213] Stablecoin Dashboard: Adding new stablecoin metrics (#461) --- macros/metrics/get_p2p_metrics.sql | 6 +- macros/metrics/get_stablecoin_metrics.sql | 69 ++++++++++++++++--- macros/stablecoins/stablecoin_ez_metrics.sql | 18 ----- .../arbitrum/core/ez_arbitrum_metrics.sql | 13 +++- .../avalanche/core/ez_avalanche_metrics.sql | 13 +++- models/projects/base/core/ez_base_metrics.sql | 13 +++- models/projects/bsc/core/ez_bsc_metrics.sql | 10 ++- models/projects/busd/core/ez_busd_metrics.sql | 5 +- models/projects/celo/core/ez_celo_metrics.sql | 10 ++- models/projects/ceur/core/ez_ceur_metrics.sql | 5 +- models/projects/ckes/core/ez_ckes_metrics.sql | 5 +- .../projects/creal/core/ez_creal_metrics.sql | 5 +- models/projects/cusd/core/ez_cusd_metrics.sql | 5 +- models/projects/dai/core/ez_dai_metrics.sql | 5 +- .../ethereum/core/ez_ethereum_metrics.sql | 15 +++- models/projects/eurc/core/ez_eurc_metrics.sql | 5 +- .../optimism/core/ez_optimism_metrics.sql | 13 +++- .../polygon/core/ez_polygon_metrics.sql | 13 +++- .../projects/pyusd/core/ez_pyusd_metrics.sql | 5 +- .../solana/core/ez_solana_metrics.sql | 11 ++- models/projects/ton/core/ez_ton_metrics.sql | 10 ++- models/projects/tron/core/ez_tron_metrics.sql | 13 +++- models/projects/usdc/core/ez_usdc_metrics.sql | 5 +- models/projects/usde/core/ez_usde_metrics.sql | 5 +- .../usdglo/core/ez_usdglo_metrics.sql | 5 +- models/projects/usdp/core/ez_usdp_metrics.sql | 5 +- models/projects/usdt/core/ez_usdt_metrics.sql | 5 +- 27 files changed, 197 insertions(+), 95 deletions(-) delete mode 100644 macros/stablecoins/stablecoin_ez_metrics.sql diff --git a/macros/metrics/get_p2p_metrics.sql b/macros/metrics/get_p2p_metrics.sql index 31debc22..7503514a 100644 --- a/macros/metrics/get_p2p_metrics.sql +++ b/macros/metrics/get_p2p_metrics.sql @@ -1,4 +1,8 @@ {% macro get_p2p_metrics(chain) %} - select date, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_stablecoin_transfer_volume, p2p_transfer_volume + select + date + , p2p_native_transfer_volume + , p2p_token_transfer_volume + , p2p_transfer_volume from {{ ref("fact_" ~ chain ~ "_p2p_transfer_volume") }} {% endmacro %} diff --git a/macros/metrics/get_stablecoin_metrics.sql b/macros/metrics/get_stablecoin_metrics.sql index 506efa09..ae704797 100644 --- a/macros/metrics/get_stablecoin_metrics.sql +++ b/macros/metrics/get_stablecoin_metrics.sql @@ -1,12 +1,59 @@ -{% macro get_stablecoin_metrics(chain) %} +{% macro get_stablecoin_metrics(identifier, breakdown="chain") %} +with mau as ( select - chain, - date, - sum(total_supply) as stablecoin_total_supply, - sum(txns) as stablecoin_txns, - sum(dau) as stablecoin_dau, - sum(transfer_volume) as stablecoin_transfer_volume, - sum(deduped_transfer_volume) as deduped_stablecoin_transfer_volume - from {{ ref("agg_" ~ chain ~ "_stablecoin_metrics") }} - group by chain, date -{% endmacro %} + date_granularity as date + , '{{ identifier }}' as {{breakdown}} + , stablecoin_dau as stablecoin_mau + , artemis_stablecoin_dau as artemis_stablecoin_mau + , p2p_stablecoin_dau as p2p_stablecoin_mau + from {{ ref("agg_monthly_stablecoin_breakdown_" ~ breakdown) }} + {% if breakdown == "chain" %} + where lower(chain) = lower('{{ identifier }}') + {% elif breakdown == "symbol" %} + where lower(symbol) = lower('{{ identifier }}') + {% endif %} +) +, daily_metrics as ( + select + date_granularity as date + , '{{ identifier }}' as {{ breakdown }} + + , stablecoin_transfer_volume as stablecoin_transfer_volume + , stablecoin_daily_txns as stablecoin_txns + , stablecoin_dau + + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_daily_txns as artemis_stablecoin_txns + , artemis_stablecoin_dau + + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_daily_txns as p2p_stablecoin_txns + , p2p_stablecoin_dau + + , stablecoin_supply as stablecoin_total_supply + from {{ ref("agg_daily_stablecoin_breakdown_" ~ breakdown) }} + {% if breakdown == "chain" %} + where lower(chain) = lower('{{ identifier }}') + {% elif breakdown == "symbol" %} + where lower(symbol) = lower('{{ identifier }}') + {% endif %} +) +select + daily_metrics.date + , daily_metrics.{{breakdown}} as {{ breakdown }} + , stablecoin_transfer_volume + , stablecoin_txns + , stablecoin_dau + , stablecoin_mau + , artemis_stablecoin_transfer_volume + , artemis_stablecoin_txns + , artemis_stablecoin_dau + , artemis_stablecoin_mau + , p2p_stablecoin_transfer_volume + , p2p_stablecoin_txns + , p2p_stablecoin_dau + , p2p_stablecoin_mau + , stablecoin_total_supply +from daily_metrics +left join mau on daily_metrics.date = mau.date +{% endmacro %} \ No newline at end of file diff --git a/macros/stablecoins/stablecoin_ez_metrics.sql b/macros/stablecoins/stablecoin_ez_metrics.sql deleted file mode 100644 index c8dd9b60..00000000 --- a/macros/stablecoins/stablecoin_ez_metrics.sql +++ /dev/null @@ -1,18 +0,0 @@ -{% macro get_stablecoin_ez_metrics(symbol) %} - -select - '{{ symbol }}' as symbol - , date - , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume - , sum(artemis_stablecoin_transfer_volume) as deduped_stablecoin_transfer_volume - , count(distinct from_address) as stablecoin_dau - , sum(stablecoin_daily_txns) as stablecoin_txns - , sum(stablecoin_supply) as stablecoin_total_supply -from {{ ref("agg_daily_stablecoin_breakdown_silver") }} -where lower(symbol) = lower('{{ symbol }}') -{% if is_incremental() %} - and date >= (select dateadd('day', -3, max(date)) from {{ this }}) -{% endif %} -group by date - -{% endmacro %} diff --git a/models/projects/arbitrum/core/ez_arbitrum_metrics.sql b/models/projects/arbitrum/core/ez_arbitrum_metrics.sql index 64c2ee6a..0a00deec 100644 --- a/models/projects/arbitrum/core/ez_arbitrum_metrics.sql +++ b/models/projects/arbitrum/core/ez_arbitrum_metrics.sql @@ -58,14 +58,21 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/avalanche/core/ez_avalanche_metrics.sql b/models/projects/avalanche/core/ez_avalanche_metrics.sql index e57aed61..ace2c12c 100644 --- a/models/projects/avalanche/core/ez_avalanche_metrics.sql +++ b/models/projects/avalanche/core/ez_avalanche_metrics.sql @@ -59,17 +59,24 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, total_staked_native, total_staked_usd, issuance, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from staking_data left join fundamental_data on staking_data.date = fundamental_data.date diff --git a/models/projects/base/core/ez_base_metrics.sql b/models/projects/base/core/ez_base_metrics.sql index f64f28e5..58afa2f8 100644 --- a/models/projects/base/core/ez_base_metrics.sql +++ b/models/projects/base/core/ez_base_metrics.sql @@ -49,14 +49,21 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join defillama_data on fundamental_data.date = defillama_data.date diff --git a/models/projects/bsc/core/ez_bsc_metrics.sql b/models/projects/bsc/core/ez_bsc_metrics.sql index ed41e169..1b338eda 100644 --- a/models/projects/bsc/core/ez_bsc_metrics.sql +++ b/models/projects/bsc/core/ez_bsc_metrics.sql @@ -51,8 +51,16 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, nft_trading_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/busd/core/ez_busd_metrics.sql b/models/projects/busd/core/ez_busd_metrics.sql index 427d37c7..249cf04a 100644 --- a/models/projects/busd/core/ez_busd_metrics.sql +++ b/models/projects/busd/core/ez_busd_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="BUSD", database="busd", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("BUSD") }} +{{ get_stablecoin_metrics("BUSD", breakdown='symbol') }} diff --git a/models/projects/celo/core/ez_celo_metrics.sql b/models/projects/celo/core/ez_celo_metrics.sql index 1cf0a948..d11a728d 100644 --- a/models/projects/celo/core/ez_celo_metrics.sql +++ b/models/projects/celo/core/ez_celo_metrics.sql @@ -39,8 +39,16 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, from fundamental_data left join price_data on fundamental_data.date = price_data.date left join defillama_data on fundamental_data.date = defillama_data.date diff --git a/models/projects/ceur/core/ez_ceur_metrics.sql b/models/projects/ceur/core/ez_ceur_metrics.sql index 6273d0fe..a8500b83 100644 --- a/models/projects/ceur/core/ez_ceur_metrics.sql +++ b/models/projects/ceur/core/ez_ceur_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="CEUR", database="ceur", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("CEUR") }} +{{ get_stablecoin_metrics("cEUR", breakdown='symbol') }} diff --git a/models/projects/ckes/core/ez_ckes_metrics.sql b/models/projects/ckes/core/ez_ckes_metrics.sql index dc4c4db1..1865390d 100644 --- a/models/projects/ckes/core/ez_ckes_metrics.sql +++ b/models/projects/ckes/core/ez_ckes_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="CKES", database="ckes", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("CKES") }} +{{ get_stablecoin_metrics("cKES", breakdown='symbol') }} diff --git a/models/projects/creal/core/ez_creal_metrics.sql b/models/projects/creal/core/ez_creal_metrics.sql index dd0bb2a2..923d27f1 100644 --- a/models/projects/creal/core/ez_creal_metrics.sql +++ b/models/projects/creal/core/ez_creal_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="CREAL", database="creal", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("CREAL") }} +{{ get_stablecoin_metrics("cREAL", breakdown='symbol') }} diff --git a/models/projects/cusd/core/ez_cusd_metrics.sql b/models/projects/cusd/core/ez_cusd_metrics.sql index d5699800..2e3c5ebb 100644 --- a/models/projects/cusd/core/ez_cusd_metrics.sql +++ b/models/projects/cusd/core/ez_cusd_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="CUSD", database="cusd", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("CUSD") }} +{{ get_stablecoin_metrics("cUSD", breakdown='symbol') }} diff --git a/models/projects/dai/core/ez_dai_metrics.sql b/models/projects/dai/core/ez_dai_metrics.sql index 460971cd..2c9ad84f 100644 --- a/models/projects/dai/core/ez_dai_metrics.sql +++ b/models/projects/dai/core/ez_dai_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="DAI", database="dai", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("DAI") }} +{{ get_stablecoin_metrics("DAI", breakdown='symbol') }} diff --git a/models/projects/ethereum/core/ez_ethereum_metrics.sql b/models/projects/ethereum/core/ez_ethereum_metrics.sql index 1c5ff9d9..b94ef7fd 100644 --- a/models/projects/ethereum/core/ez_ethereum_metrics.sql +++ b/models/projects/ethereum/core/ez_ethereum_metrics.sql @@ -72,11 +72,21 @@ select weekly_developers_sub_ecosystem, weekly_contracts_deployed, weekly_contract_deployers, + stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, + censored_blocks, semi_censored_blocks, non_censored_blocks, @@ -92,9 +102,8 @@ select nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume, blob_fees_native, blob_fees, diff --git a/models/projects/eurc/core/ez_eurc_metrics.sql b/models/projects/eurc/core/ez_eurc_metrics.sql index 18c8a663..cc76f60f 100644 --- a/models/projects/eurc/core/ez_eurc_metrics.sql +++ b/models/projects/eurc/core/ez_eurc_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="EURC", database="eurc", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("EURC") }} +{{ get_stablecoin_metrics("EURC", breakdown='symbol') }} diff --git a/models/projects/optimism/core/ez_optimism_metrics.sql b/models/projects/optimism/core/ez_optimism_metrics.sql index 5ba23abd..c63c081b 100644 --- a/models/projects/optimism/core/ez_optimism_metrics.sql +++ b/models/projects/optimism/core/ez_optimism_metrics.sql @@ -67,14 +67,21 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/polygon/core/ez_polygon_metrics.sql b/models/projects/polygon/core/ez_polygon_metrics.sql index 3af7ec66..f1605c4f 100644 --- a/models/projects/polygon/core/ez_polygon_metrics.sql +++ b/models/projects/polygon/core/ez_polygon_metrics.sql @@ -68,14 +68,21 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/pyusd/core/ez_pyusd_metrics.sql b/models/projects/pyusd/core/ez_pyusd_metrics.sql index ca04da2b..e56435f4 100644 --- a/models/projects/pyusd/core/ez_pyusd_metrics.sql +++ b/models/projects/pyusd/core/ez_pyusd_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="PYUSD", database="pyusd", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("PYUSD") }} +{{ get_stablecoin_metrics("PYUSD", breakdown='symbol') }} diff --git a/models/projects/solana/core/ez_solana_metrics.sql b/models/projects/solana/core/ez_solana_metrics.sql index b4c2cbf6..2afe60d6 100644 --- a/models/projects/solana/core/ez_solana_metrics.sql +++ b/models/projects/solana/core/ez_solana_metrics.sql @@ -166,15 +166,22 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, total_staked_native, total_staked_usd, issuance, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_usage diff --git a/models/projects/ton/core/ez_ton_metrics.sql b/models/projects/ton/core/ez_ton_metrics.sql index 2a498241..9695541f 100644 --- a/models/projects/ton/core/ez_ton_metrics.sql +++ b/models/projects/ton/core/ez_ton_metrics.sql @@ -41,8 +41,16 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, price, market_cap, fdmc, diff --git a/models/projects/tron/core/ez_tron_metrics.sql b/models/projects/tron/core/ez_tron_metrics.sql index 0530192b..1e4c2e4a 100644 --- a/models/projects/tron/core/ez_tron_metrics.sql +++ b/models/projects/tron/core/ez_tron_metrics.sql @@ -48,13 +48,20 @@ select stablecoin_total_supply, stablecoin_txns, stablecoin_dau, + stablecoin_mau, stablecoin_transfer_volume, - deduped_stablecoin_transfer_volume, + artemis_stablecoin_txns, + artemis_stablecoin_dau, + artemis_stablecoin_mau, + artemis_stablecoin_transfer_volume, + p2p_stablecoin_txns, + p2p_stablecoin_dau, + p2p_stablecoin_mau, + p2p_stablecoin_transfer_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, - p2p_stablecoin_transfer_volume, p2p_transfer_volume, - coalesce(deduped_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/usdc/core/ez_usdc_metrics.sql b/models/projects/usdc/core/ez_usdc_metrics.sql index dd4357bf..ac28925c 100644 --- a/models/projects/usdc/core/ez_usdc_metrics.sql +++ b/models/projects/usdc/core/ez_usdc_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="USDC", database="usdc", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("USDC") }} +{{ get_stablecoin_metrics("USDC", breakdown='symbol') }} diff --git a/models/projects/usde/core/ez_usde_metrics.sql b/models/projects/usde/core/ez_usde_metrics.sql index 04d83293..9af90d96 100644 --- a/models/projects/usde/core/ez_usde_metrics.sql +++ b/models/projects/usde/core/ez_usde_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="USDE", database="usde", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("USDE") }} +{{ get_stablecoin_metrics("USDe", breakdown='symbol') }} diff --git a/models/projects/usdglo/core/ez_usdglo_metrics.sql b/models/projects/usdglo/core/ez_usdglo_metrics.sql index 002a6b81..51e2f896 100644 --- a/models/projects/usdglo/core/ez_usdglo_metrics.sql +++ b/models/projects/usdglo/core/ez_usdglo_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="USDGLO", database="usdglo", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("USDGLO") }} +{{ get_stablecoin_metrics("USDGLO", breakdown='symbol') }} diff --git a/models/projects/usdp/core/ez_usdp_metrics.sql b/models/projects/usdp/core/ez_usdp_metrics.sql index 733c1aba..257080f0 100644 --- a/models/projects/usdp/core/ez_usdp_metrics.sql +++ b/models/projects/usdp/core/ez_usdp_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="USDP", database="usdp", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("USDP") }} +{{ get_stablecoin_metrics("USDP", breakdown='symbol') }} diff --git a/models/projects/usdt/core/ez_usdt_metrics.sql b/models/projects/usdt/core/ez_usdt_metrics.sql index e12d1c58..9a12f899 100644 --- a/models/projects/usdt/core/ez_usdt_metrics.sql +++ b/models/projects/usdt/core/ez_usdt_metrics.sql @@ -1,7 +1,6 @@ {{ config( - materialized="incremental", - unique_key="date", + materialized="table", snowflake_warehouse="USDT", database="usdt", schema="core", @@ -9,4 +8,4 @@ ) }} -{{ get_stablecoin_ez_metrics("USDT") }} +{{ get_stablecoin_metrics("USDT", breakdown='symbol') }} From 326ed33d058a4e9a41a4f5c23e6c0f4ff0263039 Mon Sep 17 00:00:00 2001 From: alexwes Date: Wed, 4 Sep 2024 21:06:19 -0400 Subject: [PATCH 205/213] Blur: inital fundamentals commit (#453) --- databases.csv | 1 + dbt_project.yml | 2 ++ models/projects/blur/core/ez_blur_metrics.sql | 34 +++++++++++++++++++ models/staging/blur/__blur__sources.yml | 8 +++++ models/staging/blur/fact_blur_daily_txns.sql | 26 ++++++++++++++ models/staging/blur/fact_blur_daus.sql | 26 ++++++++++++++ models/staging/blur/fact_blur_fees.sql | 26 ++++++++++++++ 7 files changed, 123 insertions(+) create mode 100644 models/projects/blur/core/ez_blur_metrics.sql create mode 100644 models/staging/blur/__blur__sources.yml create mode 100644 models/staging/blur/fact_blur_daily_txns.sql create mode 100644 models/staging/blur/fact_blur_daus.sql create mode 100644 models/staging/blur/fact_blur_fees.sql diff --git a/databases.csv b/databases.csv index 7d7f4361..c1f825d1 100644 --- a/databases.csv +++ b/databases.csv @@ -18,6 +18,7 @@ BITCOIN BITCOIN_FLIPSIDE BLAST BLAST_FLIPSIDE +BLUR BSC BSC_FLIPSIDE BUSD diff --git a/dbt_project.yml b/dbt_project.yml index e70ba3a5..ea9b2f6b 100644 --- a/dbt_project.yml +++ b/dbt_project.yml @@ -63,6 +63,8 @@ models: +snowflake_warehouse: "BITCOIN" blast: +snowflake_warehouse: "BLAST" + blur: + +snowflake_warehouse: "BLUR" cardano: +snowflake_warehouse: "CARDANO" cctp: diff --git a/models/projects/blur/core/ez_blur_metrics.sql b/models/projects/blur/core/ez_blur_metrics.sql new file mode 100644 index 00000000..0cb9da72 --- /dev/null +++ b/models/projects/blur/core/ez_blur_metrics.sql @@ -0,0 +1,34 @@ +{{ + config( + materialized = 'table', + snowflake_warehouse = 'BLUR', + database = 'blur', + schema = 'core', + alias = 'ez_metrics' + ) +}} + +with + blur_fees as ( + select * + from {{ ref("fact_blur_fees") }} + ) + , blur_daus as ( + select * + from {{ ref("fact_blur_daus") }} + ) + , blur_daily_txns as ( + select * + from {{ ref("fact_blur_daily_txns") }} + ) + +select + blur_daus.date, + blur_daus.dau, + blur_daily_txns.daily_txns as txns, + blur_fees.fees +from blur_daus +left join blur_daily_txns + on blur_daus.date = blur_daily_txns.date +left join blur_fees + on blur_daus.date = blur_fees.date \ No newline at end of file diff --git a/models/staging/blur/__blur__sources.yml b/models/staging/blur/__blur__sources.yml new file mode 100644 index 00000000..1d3a64f9 --- /dev/null +++ b/models/staging/blur/__blur__sources.yml @@ -0,0 +1,8 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_blur_dau + - name: raw_blur_fees + - name: raw_blur_daily_txns diff --git a/models/staging/blur/fact_blur_daily_txns.sql b/models/staging/blur/fact_blur_daily_txns.sql new file mode 100644 index 00000000..0f91a249 --- /dev/null +++ b/models/staging/blur/fact_blur_daily_txns.sql @@ -0,0 +1,26 @@ +{{ + config( + materialized = 'table' + ) +}} + +with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_blur_daily_txns") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_blur_daily_txns") }} + where extraction_date = (select max_date from max_extraction) + ), + flattened_data as ( + select + date(to_timestamp(SUBSTR(f.value:time, 0, 10)::date)) as date, + f.value:trades::number as daily_txns + from latest_data, lateral flatten(input => data) as f + ) +select date, daily_txns, 'ethereum' as chain, 'blur' as app +from flattened_data +where date < to_date(sysdate()) +order by date desc \ No newline at end of file diff --git a/models/staging/blur/fact_blur_daus.sql b/models/staging/blur/fact_blur_daus.sql new file mode 100644 index 00000000..71574e88 --- /dev/null +++ b/models/staging/blur/fact_blur_daus.sql @@ -0,0 +1,26 @@ +{{ + config( + materialized = 'table' + ) +}} + +with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_blur_dau") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_blur_dau") }} + where extraction_date = (select max_date from max_extraction) + ), + flattened_data as ( + select + date(to_timestamp(SUBSTR(f.value:time, 0, 10)::date)) as date, + f.value:traders::number as dau + from latest_data, lateral flatten(input => data) as f + ) +select date, dau, 'ethereum' as chain, 'blur' as app +from flattened_data +where date < to_date(sysdate()) +order by date desc \ No newline at end of file diff --git a/models/staging/blur/fact_blur_fees.sql b/models/staging/blur/fact_blur_fees.sql new file mode 100644 index 00000000..d22b054a --- /dev/null +++ b/models/staging/blur/fact_blur_fees.sql @@ -0,0 +1,26 @@ +{{ + config( + materialized = 'table' + ) +}} + +with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_blur_fees") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_blur_fees") }} + where extraction_date = (select max_date from max_extraction) + ), + flattened_data as ( + select + date(to_timestamp(SUBSTR(f.value:time, 0, 10)::date)) as date, + f.value:fees_paid::number as fees + from latest_data, lateral flatten(input => data) as f + ) +select date, fees, 'ethereum' as chain, 'blur' as app +from flattened_data +where date < to_date(sysdate()) +order by date desc \ No newline at end of file From b52ca10650abdef3ad2e9b896eb2ba3b0137dc1a Mon Sep 17 00:00:00 2001 From: alexwes Date: Wed, 4 Sep 2024 21:25:22 -0400 Subject: [PATCH 206/213] adding jupiter perps txns + ez metrics by chain (#456) --- .../projects/jupiter/ez_jupiter_metrics.sql | 3 +- .../jupiter/ez_jupiter_metrics_by_chain.sql | 34 +++++++++++++++++++ .../jupiter/fact_jupiter_perps_silver.sql | 8 ++++- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 models/projects/jupiter/ez_jupiter_metrics_by_chain.sql diff --git a/models/projects/jupiter/ez_jupiter_metrics.sql b/models/projects/jupiter/ez_jupiter_metrics.sql index df4e4a7a..f0fc8ad3 100644 --- a/models/projects/jupiter/ez_jupiter_metrics.sql +++ b/models/projects/jupiter/ez_jupiter_metrics.sql @@ -14,7 +14,7 @@ with from {{ ref("fact_jupiter_fees_silver") }} ), perps_data as ( - select date, volume, traders + select date, volume, traders, txns from {{ ref("fact_jupiter_perps_silver")}} ), price_data as ({{ get_coingecko_metrics("jupiter-exchange-solana") }}) @@ -25,6 +25,7 @@ select fees_data.fees as fees, volume as trading_volume, traders as unique_traders, + txns, price, market_cap, fdmc diff --git a/models/projects/jupiter/ez_jupiter_metrics_by_chain.sql b/models/projects/jupiter/ez_jupiter_metrics_by_chain.sql new file mode 100644 index 00000000..8a6f5d73 --- /dev/null +++ b/models/projects/jupiter/ez_jupiter_metrics_by_chain.sql @@ -0,0 +1,34 @@ +{{ + config( + materialized="table", + snowflake_warehouse="JUPITER", + database="jupiter", + schema="core", + alias="ez_metrics_by_chain", + ) +}} + +with + fees_data as ( + select date, fees + from {{ ref("fact_jupiter_fees_silver") }} + ), + perps_data as ( + select date, volume, traders, txns + from {{ ref("fact_jupiter_perps_silver")}} + ), + price_data as ({{ get_coingecko_metrics("jupiter-exchange-solana") }}) +select + fees_data.date as date, + 'solana' as chain, + fees_data.fees as fees, + volume as trading_volume, + traders as unique_traders, + txns, + price, + market_cap, + fdmc +from fees_data +left join perps_data on perps_data.date = fees_data.date +left join price_data on fees_data.date = price_data.date +where fees_data.date < to_date(sysdate()) diff --git a/models/projects/jupiter/fact_jupiter_perps_silver.sql b/models/projects/jupiter/fact_jupiter_perps_silver.sql index b655da9d..10926dad 100644 --- a/models/projects/jupiter/fact_jupiter_perps_silver.sql +++ b/models/projects/jupiter/fact_jupiter_perps_silver.sql @@ -62,4 +62,10 @@ perps_mat as( FROM hex_cte WHERE substring(hex_data,1+16,16) IN ('68452084d423bf2f', '806547a880485654') --LiquidatePosition, LiquidateFullPosition ) -SELECT date, sum(size_usd) as volume, sum(fees_usd) as fees, count(distinct owner) as traders FROM perps_mat group by 1 order by 1 desc \ No newline at end of file +SELECT + date + , sum(size_usd) as volume + , sum(fees_usd) as fees + , count(distinct owner) as traders + , count(distinct tx_id) as txns +FROM perps_mat group by 1 order by 1 desc \ No newline at end of file From 10d04b6475eb8734bfe42c865825fbd58c033be8 Mon Sep 17 00:00:00 2001 From: Son Do <34179343+Sunny77D@users.noreply.github.com> Date: Thu, 5 Sep 2024 10:34:38 -0400 Subject: [PATCH 207/213] Quick Fix for ton stablecoin (#464) --- models/projects/ton/raw/ez_ton_stablecoin_transfers.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql index f550d753..2410e648 100644 --- a/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql +++ b/models/projects/ton/raw/ez_ton_stablecoin_transfers.sql @@ -55,8 +55,8 @@ select fact_ton_stablecoin_contracts.contract_address from {{ ref('fact_ton_stablecoin_transfers') }} as transfers -where dest_verified and source_verified and account_verified left join pc_dbt_db.prod.fact_ton_stablecoin_contracts on lower(transfers.symbol) = lower(fact_ton_stablecoin_contracts.symbol) +where dest_verified and source_verified and account_verified From 4c45ff3bee68181c5088c826bb763d9bba796369 Mon Sep 17 00:00:00 2001 From: alexwes Date: Thu, 5 Sep 2024 14:14:44 -0400 Subject: [PATCH 208/213] replacing old Axelar data with Axelarscan data (#463) --- .../axelar/core/ez_axelar_metrics.sql | 6 +++-- models/staging/axelar/__axelar__sources.yml | 6 +++++ ...axelar_crosschain_dau_txns_fees_volume.sql | 26 +++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 models/staging/axelar/__axelar__sources.yml create mode 100644 models/staging/axelar/fact_axelar_crosschain_dau_txns_fees_volume.sql diff --git a/models/projects/axelar/core/ez_axelar_metrics.sql b/models/projects/axelar/core/ez_axelar_metrics.sql index fe709d2b..2a07dde3 100644 --- a/models/projects/axelar/core/ez_axelar_metrics.sql +++ b/models/projects/axelar/core/ez_axelar_metrics.sql @@ -13,8 +13,9 @@ with select date , txns - , daa as dau - from {{ ref("fact_axelar_daa_txns") }} + , dau + , fees + from {{ ref("fact_axelar_crosschain_dau_txns_fees_volume") }} ) , github_data as ({{ get_github_metrics("Axelar Network") }}) , price_data as ({{ get_coingecko_metrics("axelar") }}) @@ -23,6 +24,7 @@ select , 'axelar' as chain , txns , dau + , fees , weekly_commits_core_ecosystem , weekly_commits_sub_ecosystem , weekly_developers_core_ecosystem diff --git a/models/staging/axelar/__axelar__sources.yml b/models/staging/axelar/__axelar__sources.yml new file mode 100644 index 00000000..4fccaef1 --- /dev/null +++ b/models/staging/axelar/__axelar__sources.yml @@ -0,0 +1,6 @@ +sources: + - name: PROD_LANDING + schema: PROD_LANDING + database: LANDING_DATABASE + tables: + - name: raw_axelar_dau_txns_volume_fees \ No newline at end of file diff --git a/models/staging/axelar/fact_axelar_crosschain_dau_txns_fees_volume.sql b/models/staging/axelar/fact_axelar_crosschain_dau_txns_fees_volume.sql new file mode 100644 index 00000000..8a24ba83 --- /dev/null +++ b/models/staging/axelar/fact_axelar_crosschain_dau_txns_fees_volume.sql @@ -0,0 +1,26 @@ +with +max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_axelar_dau_txns_volume_fees") }} +) +,latest_data as ( + select + date(value:timestamp) as date + , value:users::number as dau + , value:fee::number as fees + , value:num_txs::number as txns + , value:volume::number as volume + from {{ source("PROD_LANDING", "raw_axelar_dau_txns_volume_fees") }}, + lateral flatten(input => parse_json(source_json):data) + where extraction_date = (select max_date from max_extraction) + and value:timestamp <> 0 +) +select + date + , dau + , fees + , txns + , volume + , 'axelar' as chain + , 'axelar' as app +from latest_data From a9853dab6457730b423b840905564fe6e961262a Mon Sep 17 00:00:00 2001 From: alexwes Date: Thu, 5 Sep 2024 21:43:40 -0400 Subject: [PATCH 209/213] Wormhole: EZ metrics + Txns (#465) --- .../wormhole/core/ez_wormhole_metrics.sql | 29 +++++++++++++++++++ .../staging/wormhole/fact_wormhole_txns.sql | 12 ++++++++ 2 files changed, 41 insertions(+) create mode 100644 models/projects/wormhole/core/ez_wormhole_metrics.sql create mode 100644 models/staging/wormhole/fact_wormhole_txns.sql diff --git a/models/projects/wormhole/core/ez_wormhole_metrics.sql b/models/projects/wormhole/core/ez_wormhole_metrics.sql new file mode 100644 index 00000000..31edcfc0 --- /dev/null +++ b/models/projects/wormhole/core/ez_wormhole_metrics.sql @@ -0,0 +1,29 @@ +{{ config( + materialized="table", + warehouse="WORMHOLE", + database="WORMHOLE", + schema="CORE", + alias="ez_metrics" +) }} + +with txns as ( + select + date, + txns + from {{ ref("fact_wormhole_txns") }} +) +, daa as ( + select + date, + bridge_daa + from {{ ref("fact_wormhole_bridge_daa_gold") }} +) + +select + coalesce(txns.date, daa.date) as date, + coalesce(txns.txns, 0) as txns, + coalesce(daa.bridge_daa, 0) as bridge_daa, + 0 as fees +from txns +left join daa on txns.date = daa.date +where coalesce(txns.date, daa.date) < to_date(sysdate()) diff --git a/models/staging/wormhole/fact_wormhole_txns.sql b/models/staging/wormhole/fact_wormhole_txns.sql new file mode 100644 index 00000000..8185c970 --- /dev/null +++ b/models/staging/wormhole/fact_wormhole_txns.sql @@ -0,0 +1,12 @@ +{{ config(materialized="table") }} + + +select + date(timestamp) as date, + count(distinct(id)) as txns +from + {{ ref("fact_wormhole_transfers") }} +group by + 1 +order by + 1 desc \ No newline at end of file From 6769446280f0efb0b596abf51a18911a26c0c6f5 Mon Sep 17 00:00:00 2001 From: alexwes Date: Thu, 5 Sep 2024 22:33:40 -0400 Subject: [PATCH 210/213] Chiliz: Fundamental metrics (#466) --- .../convert_routescan_api_daus_for_chain.sql | 22 ++++++++++ ...rt_routescan_api_fees_native_for_chain.sql | 43 +++++++++++++++++++ .../convert_routescan_api_txns_for_chain.sql | 23 ++++++++++ .../chiliz/core/ez_chiliz_metrics.sql | 38 ++++++++++++++++ models/staging/chiliz/__chiliz__sources.yml | 4 ++ models/staging/chiliz/fact_chiliz_dau.sql | 3 ++ models/staging/chiliz/fact_chiliz_fees.sql | 15 +++++++ .../chiliz/fact_chiliz_fees_native.sql | 3 ++ models/staging/chiliz/fact_chiliz_txns.sql | 3 ++ 9 files changed, 154 insertions(+) create mode 100644 macros/routescan_helpers/convert_routescan_api_daus_for_chain.sql create mode 100644 macros/routescan_helpers/convert_routescan_api_fees_native_for_chain.sql create mode 100644 macros/routescan_helpers/convert_routescan_api_txns_for_chain.sql create mode 100644 models/projects/chiliz/core/ez_chiliz_metrics.sql create mode 100644 models/staging/chiliz/fact_chiliz_dau.sql create mode 100644 models/staging/chiliz/fact_chiliz_fees.sql create mode 100644 models/staging/chiliz/fact_chiliz_fees_native.sql create mode 100644 models/staging/chiliz/fact_chiliz_txns.sql diff --git a/macros/routescan_helpers/convert_routescan_api_daus_for_chain.sql b/macros/routescan_helpers/convert_routescan_api_daus_for_chain.sql new file mode 100644 index 00000000..ed1072b6 --- /dev/null +++ b/macros/routescan_helpers/convert_routescan_api_daus_for_chain.sql @@ -0,0 +1,22 @@ +{% macro convert_routescan_api_daus_for_chain(chain) %} + with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_dau") }} + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_dau") }} + where extraction_date = (select max_date from max_extraction) + ), + data as ( + select + f.value:date::date as date, + f.value:addresses::int as dau + from latest_data, lateral flatten(input => data) f + ) + select date, dau + from data + where date < to_date(sysdate()) + order by date desc +{% endmacro %} \ No newline at end of file diff --git a/macros/routescan_helpers/convert_routescan_api_fees_native_for_chain.sql b/macros/routescan_helpers/convert_routescan_api_fees_native_for_chain.sql new file mode 100644 index 00000000..9818766e --- /dev/null +++ b/macros/routescan_helpers/convert_routescan_api_fees_native_for_chain.sql @@ -0,0 +1,43 @@ +{% macro convert_routescan_api_fees_native_for_chain(chain) %} + with + max_extraction_gas_used as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas_used") }} + + ), + latest_data_gas_used as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_gas_used") }} + where extraction_date = (select max_date from max_extraction_gas_used) + ), + gas_used as ( + select + f.value:date::date as date, + f.value:"gas-used"::int as gas_used + from latest_data_gas_used, lateral flatten(input => data) f + ), + max_extraction_avg_gas_price as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_avg_gas_price") }} + + ), + latest_data_avg_gas_price as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_avg_gas_price") }} + where extraction_date = (select max_date from max_extraction_avg_gas_price) + ), + avg_gas_price as ( + select + f.value:date::date as date, + f.value:"avg-gas-price"::int as avg_gas_price + from latest_data_avg_gas_price, lateral flatten(input => data) f + ) + select + gas_used.date, + gas_used.gas_used, + avg_gas_price.avg_gas_price, + gas_used.gas_used * avg_gas_price.avg_gas_price / pow(10, 18) as fees_native + from gas_used + left join avg_gas_price on gas_used.date = avg_gas_price.date + +{% endmacro %} \ No newline at end of file diff --git a/macros/routescan_helpers/convert_routescan_api_txns_for_chain.sql b/macros/routescan_helpers/convert_routescan_api_txns_for_chain.sql new file mode 100644 index 00000000..034f3ced --- /dev/null +++ b/macros/routescan_helpers/convert_routescan_api_txns_for_chain.sql @@ -0,0 +1,23 @@ +{% macro convert_routescan_api_txns_for_chain(chain) %} + with + max_extraction as ( + select max(extraction_date) as max_date + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }} + + ), + latest_data as ( + select parse_json(source_json) as data + from {{ source("PROD_LANDING", "raw_" ~ chain ~ "_txns") }} + where extraction_date = (select max_date from max_extraction) + ), + data as ( + select + f.value:date::date as date, + f.value:txs::int as txns + from latest_data, lateral flatten(input => data) f + ) + select date, txns + from data + where date < to_date(sysdate()) + order by date desc +{% endmacro %} \ No newline at end of file diff --git a/models/projects/chiliz/core/ez_chiliz_metrics.sql b/models/projects/chiliz/core/ez_chiliz_metrics.sql new file mode 100644 index 00000000..bd9ed12b --- /dev/null +++ b/models/projects/chiliz/core/ez_chiliz_metrics.sql @@ -0,0 +1,38 @@ +{{ + config( + materialized = "table", + snowflake_warehouse = "CHILIZ", + database = "CHILIZ", + schema = "CORE", + alias = "ez_metrics" + ) +}} + +with fees as ( + select + date, + fees_usd + from {{ref("fact_chiliz_fees")}} +), +txns as ( + select + date, + txns + from {{ref("fact_chiliz_txns")}} +) +, daus as ( + select + date, + dau + from {{ref("fact_chiliz_dau")}} + where dau < 170000 -- There is a DQ issue with the Chiliz dau data: 2 days with > 170k DAU while the rest of the data around those days is < 1k +) + +select + coalesce(fees.date, txns.date, daus.date) as date, + dau, + txns, + fees_usd as fees +from fees +left join txns on fees.date = txns.date +left join daus on fees.date = daus.date \ No newline at end of file diff --git a/models/staging/chiliz/__chiliz__sources.yml b/models/staging/chiliz/__chiliz__sources.yml index f1ca85c4..59da1b40 100644 --- a/models/staging/chiliz/__chiliz__sources.yml +++ b/models/staging/chiliz/__chiliz__sources.yml @@ -4,3 +4,7 @@ sources: database: LANDING_DATABASE tables: - name: raw_chiliz_trading_volume + - name: raw_chiliz_txns + - name: raw_chiliz_gas_used + - name: raw_chiliz_avg_gas_price + - name: raw_chiliz_dau diff --git a/models/staging/chiliz/fact_chiliz_dau.sql b/models/staging/chiliz/fact_chiliz_dau.sql new file mode 100644 index 00000000..d228c178 --- /dev/null +++ b/models/staging/chiliz/fact_chiliz_dau.sql @@ -0,0 +1,3 @@ +{{ + convert_routescan_api_daus_for_chain(chain="chiliz") +}} \ No newline at end of file diff --git a/models/staging/chiliz/fact_chiliz_fees.sql b/models/staging/chiliz/fact_chiliz_fees.sql new file mode 100644 index 00000000..d278cb8a --- /dev/null +++ b/models/staging/chiliz/fact_chiliz_fees.sql @@ -0,0 +1,15 @@ + +with prices as ( + select + date(hour) as date, + avg(price) as price + from ethereum_flipside.price.ez_prices_hourly + where lower(token_address) = lower('0x3506424f91fd33084466f402d5d97f05f8e3b4af') + group by 1 +) +select + f.date, + f.fees_native * p.price as fees_usd +from {{ref("fact_chiliz_fees_native")}} f +left join prices p on p.date = f.date +where f.date < to_date(sysdate()) \ No newline at end of file diff --git a/models/staging/chiliz/fact_chiliz_fees_native.sql b/models/staging/chiliz/fact_chiliz_fees_native.sql new file mode 100644 index 00000000..da5fb7cf --- /dev/null +++ b/models/staging/chiliz/fact_chiliz_fees_native.sql @@ -0,0 +1,3 @@ +{{ + convert_routescan_api_fees_native_for_chain(chain="chiliz") +}} \ No newline at end of file diff --git a/models/staging/chiliz/fact_chiliz_txns.sql b/models/staging/chiliz/fact_chiliz_txns.sql new file mode 100644 index 00000000..5c000260 --- /dev/null +++ b/models/staging/chiliz/fact_chiliz_txns.sql @@ -0,0 +1,3 @@ +{{ + convert_routescan_api_txns_for_chain(chain="chiliz") +}} \ No newline at end of file From 0d1a8e8a901729d5bd926da841e20d7bbba733d5 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Fri, 6 Sep 2024 18:06:22 -0400 Subject: [PATCH 211/213] Customer 911: updating tables to fix issue with near and tron (#471) --- macros/metrics/get_p2p_metrics.sql | 1 + models/projects/arbitrum/core/ez_arbitrum_metrics.sql | 4 ++-- models/projects/avalanche/core/ez_avalanche_metrics.sql | 4 ++-- models/projects/base/core/ez_base_metrics.sql | 4 ++-- models/projects/ethereum/core/ez_ethereum_metrics.sql | 4 ++-- models/projects/optimism/core/ez_optimism_metrics.sql | 4 ++-- models/projects/polygon/core/ez_polygon_metrics.sql | 4 ++-- models/projects/solana/core/ez_solana_metrics.sql | 2 +- models/projects/tron/core/ez_tron_metrics.sql | 4 ++-- models/staging/tron/fact_tron_p2p_token_transfers.sql | 2 +- 10 files changed, 17 insertions(+), 16 deletions(-) diff --git a/macros/metrics/get_p2p_metrics.sql b/macros/metrics/get_p2p_metrics.sql index 7503514a..61fc2f1b 100644 --- a/macros/metrics/get_p2p_metrics.sql +++ b/macros/metrics/get_p2p_metrics.sql @@ -3,6 +3,7 @@ date , p2p_native_transfer_volume , p2p_token_transfer_volume + , p2p_stablecoin_transfer_volume , p2p_transfer_volume from {{ ref("fact_" ~ chain ~ "_p2p_transfer_volume") }} {% endmacro %} diff --git a/models/projects/arbitrum/core/ez_arbitrum_metrics.sql b/models/projects/arbitrum/core/ez_arbitrum_metrics.sql index 0a00deec..3a692d6b 100644 --- a/models/projects/arbitrum/core/ez_arbitrum_metrics.sql +++ b/models/projects/arbitrum/core/ez_arbitrum_metrics.sql @@ -67,12 +67,12 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/avalanche/core/ez_avalanche_metrics.sql b/models/projects/avalanche/core/ez_avalanche_metrics.sql index ace2c12c..9910b11c 100644 --- a/models/projects/avalanche/core/ez_avalanche_metrics.sql +++ b/models/projects/avalanche/core/ez_avalanche_metrics.sql @@ -68,7 +68,7 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, total_staked_native, total_staked_usd, issuance, @@ -76,7 +76,7 @@ select p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from staking_data left join fundamental_data on staking_data.date = fundamental_data.date diff --git a/models/projects/base/core/ez_base_metrics.sql b/models/projects/base/core/ez_base_metrics.sql index 58afa2f8..46d68b63 100644 --- a/models/projects/base/core/ez_base_metrics.sql +++ b/models/projects/base/core/ez_base_metrics.sql @@ -58,12 +58,12 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join defillama_data on fundamental_data.date = defillama_data.date diff --git a/models/projects/ethereum/core/ez_ethereum_metrics.sql b/models/projects/ethereum/core/ez_ethereum_metrics.sql index b94ef7fd..44f575c9 100644 --- a/models/projects/ethereum/core/ez_ethereum_metrics.sql +++ b/models/projects/ethereum/core/ez_ethereum_metrics.sql @@ -85,7 +85,7 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, censored_blocks, semi_censored_blocks, @@ -103,7 +103,7 @@ select p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume, blob_fees_native, blob_fees, diff --git a/models/projects/optimism/core/ez_optimism_metrics.sql b/models/projects/optimism/core/ez_optimism_metrics.sql index c63c081b..e4357147 100644 --- a/models/projects/optimism/core/ez_optimism_metrics.sql +++ b/models/projects/optimism/core/ez_optimism_metrics.sql @@ -76,12 +76,12 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/polygon/core/ez_polygon_metrics.sql b/models/projects/polygon/core/ez_polygon_metrics.sql index f1605c4f..9aa19947 100644 --- a/models/projects/polygon/core/ez_polygon_metrics.sql +++ b/models/projects/polygon/core/ez_polygon_metrics.sql @@ -77,12 +77,12 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, nft_trading_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(nft_trading_volume, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/projects/solana/core/ez_solana_metrics.sql b/models/projects/solana/core/ez_solana_metrics.sql index 2afe60d6..2db463ba 100644 --- a/models/projects/solana/core/ez_solana_metrics.sql +++ b/models/projects/solana/core/ez_solana_metrics.sql @@ -175,7 +175,7 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, total_staked_native, total_staked_usd, issuance, diff --git a/models/projects/tron/core/ez_tron_metrics.sql b/models/projects/tron/core/ez_tron_metrics.sql index 1e4c2e4a..2b66268d 100644 --- a/models/projects/tron/core/ez_tron_metrics.sql +++ b/models/projects/tron/core/ez_tron_metrics.sql @@ -57,11 +57,11 @@ select p2p_stablecoin_txns, p2p_stablecoin_dau, p2p_stablecoin_mau, - p2p_stablecoin_transfer_volume, + stablecoin_data.p2p_stablecoin_transfer_volume, p2p_native_transfer_volume, p2p_token_transfer_volume, p2p_transfer_volume, - coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, + coalesce(artemis_stablecoin_transfer_volume, 0) - coalesce(stablecoin_data.p2p_stablecoin_transfer_volume, 0) as non_p2p_stablecoin_transfer_volume, coalesce(dex_volumes, 0) + coalesce(p2p_transfer_volume, 0) as settlement_volume from fundamental_data left join price_data on fundamental_data.date = price_data.date diff --git a/models/staging/tron/fact_tron_p2p_token_transfers.sql b/models/staging/tron/fact_tron_p2p_token_transfers.sql index 8af992c6..440d3040 100644 --- a/models/staging/tron/fact_tron_p2p_token_transfers.sql +++ b/models/staging/tron/fact_tron_p2p_token_transfers.sql @@ -4,4 +4,4 @@ ) }} -{{ filter_p2p_token_transfers("tron", blacklist=('TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S')) }} \ No newline at end of file +{{ filter_p2p_token_transfers("tron", blacklist=('TAFjULxiVgT4qWk6UZwjqwZXTSaGaqnVp4', 'TSSMHYeV2uE9qYH95DqyoCuNCzEL1NvU3S', 'TR95WcjR78Y4puyv8BkbFuxaf4WcvmmPpd')) }} \ No newline at end of file From 70c4dfb4cbd4504ecd95439555f6322e750445b6 Mon Sep 17 00:00:00 2001 From: Anthony Yim Date: Sat, 7 Sep 2024 16:20:06 -0400 Subject: [PATCH 212/213] [911 Mitigation] Don't select rows that have null defillamaIds (#472) --- models/staging/defillama/fact_defillama_protocol_fees.sql | 1 + models/staging/defillama/fact_defillama_protocol_revenue.sql | 1 + 2 files changed, 2 insertions(+) diff --git a/models/staging/defillama/fact_defillama_protocol_fees.sql b/models/staging/defillama/fact_defillama_protocol_fees.sql index 97a2631c..a7dfb1ca 100644 --- a/models/staging/defillama/fact_defillama_protocol_fees.sql +++ b/models/staging/defillama/fact_defillama_protocol_fees.sql @@ -19,3 +19,4 @@ with select * from flattened_data +where defillama_protocol_id is not null diff --git a/models/staging/defillama/fact_defillama_protocol_revenue.sql b/models/staging/defillama/fact_defillama_protocol_revenue.sql index 287ce916..cdd9b8ff 100644 --- a/models/staging/defillama/fact_defillama_protocol_revenue.sql +++ b/models/staging/defillama/fact_defillama_protocol_revenue.sql @@ -19,3 +19,4 @@ with select * from flattened_data +where defillama_protocol_id is not null From f337073205aff9287ae659a69758f686d0967526 Mon Sep 17 00:00:00 2001 From: SebMelendez01 <78228475+SebMelendez01@users.noreply.github.com> Date: Sun, 8 Sep 2024 21:34:39 -0400 Subject: [PATCH 213/213] [Stablecoin V3] Adding models for stablecoin tiles (#473) --- .../agg_stablecoin_tiles_breakdown_chain.sql | 17 +++++++++++++++++ .../agg_stablecoin_tiles_breakdown_symbol.sql | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_chain.sql create mode 100644 models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_symbol.sql diff --git a/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_chain.sql b/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_chain.sql new file mode 100644 index 00000000..042b774d --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_chain.sql @@ -0,0 +1,17 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +with +max_date as ( + select max(date) as date + from {{ ref("agg_daily_stablecoin_breakdown") }} +) + +select + chain as breakdown + , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume + , sum(stablecoin_daily_txns) as stablecoin_daily_txns + , count(distinct case when stablecoin_transfer_volume > 0 then from_address end) as stablecoin_dau + , sum(case when date = (select date from max_date) then stablecoin_supply end) as stablecoin_supply +from {{ ref("agg_daily_stablecoin_breakdown") }} +where date >= dateadd(day, -31, to_date(sysdate())) +group by chain \ No newline at end of file diff --git a/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_symbol.sql b/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_symbol.sql new file mode 100644 index 00000000..82a32735 --- /dev/null +++ b/models/metrics/stablecoins/breakdowns/agg_stablecoin_tiles_breakdown_symbol.sql @@ -0,0 +1,17 @@ +{{ config(materialized="table", snowflake_warehouse="STABLECOIN_V2_LG_2") }} + +with +max_date as ( + select max(date) as date + from {{ ref("agg_daily_stablecoin_breakdown") }} +) + +select + symbol as breakdown + , sum(stablecoin_transfer_volume) as stablecoin_transfer_volume + , sum(stablecoin_daily_txns) as stablecoin_daily_txns + , count(distinct case when stablecoin_transfer_volume > 0 then from_address end) as stablecoin_dau + , sum(case when date = (select date from max_date) then stablecoin_supply end) as stablecoin_supply +from {{ ref("agg_daily_stablecoin_breakdown") }} +where date >= dateadd(day, -31, to_date(sysdate())) +group by symbol \ No newline at end of file