nft-deal-score/scratch.sql

10811 lines
319 KiB
MySQL
Raw Permalink Normal View History

2022-07-14 22:10:02 +00:00
1. Build in Public (Bravery)
2. Zero assumptions
When will you be out for?
Should we help out that 1st rock at all?
Thought leadership for NFTs as a utility
Why do we not have partners on Ethereum outside of Sushi?
Whats our sales pipeline look like?
Buillding stuff instead of analysis
VGX*dup.umt!rum4bqx
SELECT * FROM information_schema.tables
ProAd DLU
Chat + data for Michele to highlight the powers of the Flipside program for chains + analysts
Version 1.0 of THORChain ecosystem map
Chatted with Katana and built SDK demo for them
THORChain bounty GP reviewing
Launched flash bounty for ATOM launch
FYI ATOM launch has been a dud - they had to pause swaps for the last few days due to bug
Working with analytics to fix some data issues
Can we send ideas to you (Eric)?
Is the focus more on L2s or on Ethereum itself?
WITH sc1 AS (
SELECT *
, date_trunc('month', block_timestamp) AS month
, rune_price
, ROW_NUMBER() OVER (PARTITION BY month ORDER BY rune_liquidity DESC) AS rn
FROM thorchain.daily_pool_stats
WHERE pool_name IN ('BNB.BUSD-BD1','ETH.DAI-0X6B175474E89094C44DA98B954EEDEAC495271D0F','ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48')
)
SELECT *
FROM sc1
WHERE rn = 1
2022-04-20 22:47:18 +00:00
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
Is solana too dependent on Serum
They use their transaction flows
Planning stage of expanding into other chains
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
Transactions for each month - report on network performance
From the start of 2022 - touch on the outages
Improvements in the network when they implemented quick
How many failed transactions from the same address (from top 10 addresses)
Work on skeleton of the report - do they want to collaborate on it
What caused the network outage
TPS / number of transactions
How to get the explorer involved
Detail + labeling in transaction logs (e.g. Program IDs are labeled)
We provide some of the charts, they provide context
"State of Solana" every quarter
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT DATE_TRUNC('week', block_timestamp) AS date
, signers[0]::string AS address
, COUNT(1) AS n
FROM solana.fact_transactions
WHERE block_timestamp::date >= '2022-01-01'
AND succeeded = FALSE
GROUP BY 1, 2
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY date ORDER BY n DESC) AS rn
FROM base
), b3 AS (
SELECT date
, CASE
WHEN rn <= 10 THEN 'Top 10'
WHEN rn <= 100 THEN 'Top 100'
ELSE 'Other' END AS address_type
, SUM(n) AS n
FROM b2
WHERE rn <= 10
GROUP BY 1, 2
)
SELECT *
, n / (SUM(n) OVER ()) AS pct
FROM b3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM thorchain.swaps
WHERE pool_name LIKE 'GAIA.ATOM%'
ORDER BY block_timestamp
LIMIT 100
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT native_to_address
, COUNT(1) AS n_swaps
, SUM(to_amount_usd) AS volume
FROM thorchain.swaps
WHERE to_asset LIKE 'ETH%'
GROUP BY 1
ORDER BY 3 DESC
LIMIT 25
)
2022-04-20 22:47:18 +00:00
2022-05-17 21:52:44 +00:00
WITH base AS (
2022-07-14 22:10:02 +00:00
SELECT signers[0]::string AS address
, COUNT(1) AS n
FROM solana.fact_transactions
WHERE block_timestamp::date >= '2022-01-01'
AND succeeded = FALSE
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1000
2022-06-06 19:15:10 +00:00
), b2 AS (
2022-07-14 22:10:02 +00:00
SELECT *
, ROW_NUMBER() OVER (PARTITION BY date ORDER BY n DESC) AS rn
2022-06-06 19:15:10 +00:00
FROM base
2022-07-14 22:10:02 +00:00
), b3 AS (
SELECT date
, CASE
WHEN rn <= 10 THEN 'Top 10'
WHEN rn <= 100 THEN 'Top 100'
ELSE 'Other' END AS address_type
, SUM(n) AS n
2022-06-06 19:15:10 +00:00
FROM b2
2022-07-14 22:10:02 +00:00
WHERE rn <= 10
GROUP BY 1, 2
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, n / (SUM(n) OVER ()) AS pct
FROM b3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT s.block_timestamp::date AS date
, SUM(s.sales_amount) AS volume
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_nft_metadata m ON m.mint = s.mint AND m.collection = '${collection}'
WHERE s.block_timestamp::date < CURRENT_DATE::date
GROUP BY 1
ORDER BY 1
2022-06-06 19:15:10 +00:00
WITH base AS (
2022-07-14 22:10:02 +00:00
SELECT day, date_trunc('month', day) AS month, SUM(asset_liquidity * asset_price_usd) AS non_rune_asset_value
2022-06-06 19:15:10 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), b2 AS (
2022-06-06 19:15:10 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, ROW_NUMBER() OVER (PARTITION BY month ORDER BY day DESC) AS rn
), b3 AS (
SELECT month
, non_rune_asset_value
FROM b2
2022-06-06 19:15:10 +00:00
WHERE rn = 1
)
2022-07-14 22:10:02 +00:00
SELECT *
FROM b3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
FROM FLIPSIDE_PROD_DB.THORCHAIN.DAILY_POOL_STATS
WHERE day = '2022-07-08'
ORDER BY non_rune_asset_value desc
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
, ARRAY_SIZE(t.instructions) AS arr_sz
FROM solana.core.fact_transactions t
WHERE block_timestamp >= '2022-07-03'
AND block_timestamp <= '2022-07-07'
AND tx_id = '3Gb17jSPuEpXDZjNLQ2VfoBEv7NCYz8dU9fjprouGCBzgKtqB7J4CQ5sX6UDxEd4rEBrDbWxyzHBcVJNp3uzwG2p'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.core.dim_labels
WHERE label = '3d sniping demons'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT date_trunc('hour', block_timestamp) AS sacrifice_time
, SUM(ARRAY_SIZE(t.instructions) / 2) AS n_burns
FROM solana.core.fact_transactions t
JOIN solana.core.dim_labels l ON l.address = t.instructions[0]:parsed:info:mint::string
WHERE block_timestamp >= '2022-07-01'
AND block_timestamp <= '2022-07-10'
AND l.label = 'degentown'
AND instructions[0]:parsed:type = 'burn'
GROUP BY 1
)
2022-05-17 21:52:44 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, SUM(n_burns) OVER (ORDER BY sacrifice_time) AS cumu_burns
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
with base as (select date_trunc('day', block_timestamp) as day,
pool_name,
CASE
WHEN CHARINDEX('-', pool_name) > 0 THEN LEFT(pool_name, CHARINDEX('-', pool_name)-1) ELSE pool_name END AS pool_names,
case
when pool_name ilike 'BTC.%' then 'BTC'
when pool_name ilike 'ETH.%' then 'ETH'
when pool_name ilike 'BNB.%' then 'BNB'
when pool_name ilike 'LTC.%' then 'LTC'
when pool_name ilike 'DOGE.%' then 'DOGE'
when pool_name ilike 'TERRA.%' then 'TERRA'
when pool_name ilike 'BCH.%' then 'BCH'
when pool_name ilike 'BNB.%' then 'BNB'
else pool_name
end as chain,
avg(asset_amount_usd) as asset_liq,
asset_liq * 2 as TVL,
case
when chain = 'TERRA' and day >= '2022-05-09' then 0
else TVL
end as real_TVL
from thorchain.pool_block_balances
where asset_amount > 0
and date_trunc('day', block_timestamp) >= '2022-01-01'
group by 1,2
order by real_TVL desc),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
base4 as (select day,
sum(real_TVL) as real_TVLz
from base
group by 1),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
base5 as (select date_trunc('day', day) as day,
sum(total_value_bonded_usd) as total_value_bonded_usdz
from thorchain.daily_tvl
group by 1),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
base2 as (select a.day,
((real_TVLz / 2) + total_value_bonded_usdz) / 301000000 as deterministic_price
from base4 a
join base5 b
on a.day = b.day),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
base3 as (select date_trunc('day', block_timestamp) as day,
avg(rune_usd) as daily_rune_price
from thorchain.prices
group by 1)
select a.day,
deterministic_price,
daily_rune_price,
daily_rune_price / deterministic_price as speculative_multiplier
from base2 a
join base3 b
on a.day = b.day
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
with degen as (SELECT address, label
FROM solana.core.dim_labels
WHERE label = 'degentown'),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
discord_mods as (select purchaser, count(distinct mint) as number
from solana.core.fact_nft_mints mints
inner join degen on mints.mint = degen.address
group by purchaser
order by number desc),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
mint_count as (select mint.purchaser as person, count(distinct mint) as mints
from solana.core.fact_nft_mints mint
inner join discord_mods on mint.purchaser = discord_mods.purchaser
where mint.block_timestamp > CURRENT_DATE - 30
group by person
order by mints desc),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
lisht as (select distinct purchaser as name
from solana.core.fact_nft_mints mints
inner join degen on mints.mint = degen.address)
,
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
rishi as (
select *
from solana.core.fact_nft_mints a
inner join lisht on a.purchaser = lisht.name
),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
too as (Select distinct purchaser,block_timestamp
From (SELECT RANK() OVER (PARTITION BY purchaser order by block_timestamp asc)
as RN,purchaser,block_TIMESTAMP
from rishi) as ST
Where st.rn = 1
order by block_timestamp asc)
, first_tx AS (
SELECT tx_to AS address, MIN(block_timestamp) AS mn
FROM solana.core.fact_transfers
GROUP BY 1
UNION ALL
SELECT tx_from AS address, MIN(block_timestamp) AS mn
FROM solana.core.fact_transfers
GROUP BY 1
), f2 AS (
SELECT address, MIN(mn) AS first_tx_time
FROM first_tx
GROUP BY 1
)
, base AS (
select DISTINCT t.purchaser, CASE
WHEN COALESCE(f2.first_tx_time, t.block_timestamp)::date >= '2022-06-30' AND t.block_timestamp::date = '2022-07-01' THEN 'Burner'
WHEN t.block_timestamp::date = '2022-07-01' THEN 'New Minter'
ELSE 'Experienced Minter' END AS wallet_type
from too t
LEFT JOIN f2 ON f2.address = t.purchaser
)
select
case when COALESCE(m.mints, 0) <= 1 then '1 - Normie'
when m.mints < 10 then '2 - NFT Enthusiast'
when m.mints < 50 then '3 - Degen'
when m.mints < 100 then '4 - High Power Degen'
else '5 - GOD MODE DEGEN' end as power_level, count(*) as numba
FROM base b
LEFT JOIN mint_count m ON b.purchaser = m.person
where wallet_type = 'Experienced Minter'
group by power_level
order by numba desc
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
with degen as (SELECT address, label
FROM solana.core.dim_labels
WHERE label = 'degentown'),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
lisht as (select distinct purchaser as name
from solana.core.fact_nft_mints mints
inner join degen on mints.mint = degen.address)
,
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
rishi as (
select *
from solana.core.fact_nft_mints a
inner join lisht on a.purchaser = lisht.name
),
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
too as (Select distinct purchaser,block_timestamp
From (SELECT RANK() OVER (PARTITION BY purchaser order by block_timestamp asc)
as RN,purchaser,block_TIMESTAMP
from rishi) as ST
Where st.rn = 1
order by block_timestamp asc)
, first_tx AS (
SELECT tx_to AS address, MIN(block_timestamp) AS mn
FROM solana.core.fact_transfers
GROUP BY 1
UNION ALL
SELECT tx_from AS address, MIN(block_timestamp) AS mn
FROM solana.core.fact_transfers
GROUP BY 1
), f2 AS (
SELECT address, MIN(mn) AS first_tx_time
FROM first_tx
GROUP BY 1
)
, base AS (
select CASE
WHEN COALESCE(f2.first_tx_time, t.block_timestamp)::date >= '2022-06-30' AND t.block_timestamp::date = '2022-07-01' THEN 'Burner'
WHEN t.block_timestamp::date = '2022-07-01' THEN 'New Minter'
ELSE 'Non-Burner' END AS wallet_type
2022-06-06 19:15:10 +00:00
, block_timestamp::date AS date
2022-07-14 22:10:02 +00:00
, count(1) AS n_wallets
from too t
LEFT JOIN f2 ON f2.address = t.purchaser
group by 1, 2
order by 2 desc
2022-06-06 19:15:10 +00:00
)
SELECT *
2022-07-14 22:10:02 +00:00
, SUM(n_wallets) OVER () AS total_wallets
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
[
{
"parsed": {
"info": {
"account": "3XRvFfcjoqXeTT4t9DLnqJBgok7tepMcvgG6sNPXLpW9",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "CKz4MabakdGnJ5icKXv9VdBAVjCcodWVA6D2Zop1ztz8"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "3XRvFfcjoqXeTT4t9DLnqJBgok7tepMcvgG6sNPXLpW9",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "8YDvXGdN7jxEh5A3TsS3KgHpaxEkjhJgXrzRpRKUwTMt",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "3XLdZCEpkZnrNpw3qv2AcRdQGgbk85T1QN2HBiRVXqUB"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "8YDvXGdN7jxEh5A3TsS3KgHpaxEkjhJgXrzRpRKUwTMt",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "36DZPspQzx61sti7porCqvHkiUf6zZPgKgoV1XdCevQj",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "7wShpK34PBwR8ys4oC4mR2zMYFTnB6ZhVQWxP2auo1dh"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "36DZPspQzx61sti7porCqvHkiUf6zZPgKgoV1XdCevQj",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "59JVeBTm4vtkWwjvmB7raB2nyW3wKj6NbV9ZgXzUutQv",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "EcaTM9LqBRqce9dLNu2kdWHm6kbW3cA4EjcZrWMeN1hm"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "59JVeBTm4vtkWwjvmB7raB2nyW3wKj6NbV9ZgXzUutQv",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "9Nfso2ao2E57KDjeFSsWGXQmEtDBT7WUnRGNAAof8vbH",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "6YAbarAamgwVggsKVfcK8VxaKfd33JB9sbnu5xrvXGyX"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "9Nfso2ao2E57KDjeFSsWGXQmEtDBT7WUnRGNAAof8vbH",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Nbp9GwLWoCaVGJfqfiMpMXbTWaiAZt42kPtkPVrmxEQ",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "GtzGYEERyzAkXweXdzoSmUStMqhwS4y27q9DbHxDjfhV"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Nbp9GwLWoCaVGJfqfiMpMXbTWaiAZt42kPtkPVrmxEQ",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "12xmesVmUBWeE4VTBJEQf8tJmxxGrdZzwBozMSptqKqF",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "91SAd85gQeCYNKHun94RDhYG8hMJmJzF2jAY6WisFHri"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "12xmesVmUBWeE4VTBJEQf8tJmxxGrdZzwBozMSptqKqF",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "HpNxFhnAfo4xCw1Rhf4wSf6A77VP3ySPXKHJSe9DavDA",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "GuFyccsRnc8JPhab5hyr3vv8k7WvoVShdDxGW9RHhJsh"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "HpNxFhnAfo4xCw1Rhf4wSf6A77VP3ySPXKHJSe9DavDA",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Es36Bvuroth81DntriTDnNkkGdVAGMTrHf1DwYWame1M",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "9UcrGSbihtpMZQC1beAjM2WY6H9GC7PkkmDAxEsqeWqK"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Es36Bvuroth81DntriTDnNkkGdVAGMTrHf1DwYWame1M",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "4Cjt4voswT1bJ3FWjUcx1bpUdyafciG9QRxe7UD7oHnG",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "5a8sxfwUUWkjZ6BgHWT6NZjZAjYQkiywFu2wYsu6YzVJ"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "4Cjt4voswT1bJ3FWjUcx1bpUdyafciG9QRxe7UD7oHnG",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Etah1rY8SkS43V15kSi1YaxgZ63REiLuZwARrrHp4YRv",
"amount": "1",
"authority": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"mint": "H4W2WozmMcLgCfoe5EERgS57wcKupEwmhjr4CDr1viqF"
},
"type": "burn"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "Etah1rY8SkS43V15kSi1YaxgZ63REiLuZwARrrHp4YRv",
"destination": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"multisigOwner": "835dotUpwzNnvWuHQW5DKpFjrvZp4zWJN2D2VmbPpz79",
"signers": [
"burn68h9dS2tvZwtCFMt79SyaEgvqtcZZWJphizQxgt"
]
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
]
Some idears...
"Flipside API in Python or R." -> Carlos or me?
"EVM conceptual deep dive" -> Austin or Jim?
"ShroomDK deep dive." -> Jim or Chris or Don?
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT INITCAP(l.label) AS collection
, COUNT(DISTINCT l.address) AS n_tokens
, COUNT(DISTINCT m.mint) AS n_mints
, AVG(m.mint_price) AS avg_mint_price
, MIN(m.block_timestamp::date) AS mint_date
, MIN(date_trunc('month', m.block_timestamp)) AS mint_month
FROM solana.core.dim_labels l
LEFT JOIN solana.core.fact_nft_mints m ON m.mint = l.address AND m.mint_price > 0 AND m.mint_price < 10
WHERE label_subtype = 'nf_token_contract'
GROUP BY 1
), volume AS (
SELECT INITCAP(l.label) AS collection
, COUNT(1) AS n_sales
, COUNT(DISTINCT block_timestamp::date) AS n_days
, SUM(sales_amount) AS volume
, volume / n_days AS daily_volume
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
GROUP BY 1
)
SELECT b.*
, COALESCE(b.avg_mint_price, 0) * b.n_tokens AS mint_volume
, v.n_sales
, v.n_days
, v.volume
, v.daily_volume
FROM base b
JOIN volume v ON v.collection = b.collection
ORDER BY mint_month DESC, mint_volume DESC
2022-06-06 19:15:10 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM solana.core.dim_labels
WHERE label ilike 'DegenTown'
2022-06-06 19:15:10 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM solana.core.fact_transactions t
JOIN solana.core.dim_labels l ON l.address = t.instructions[8]:parsed:info:mint::string
WHERE block_timestamp >= '2022-07-01'
AND instructions[0]:parsed:type = 'burn'
AND tx_id = '4RtsBQJ8EnDL2kh7cLQfuJrY4sMQVBUagRkHjvivzs1mcWGvdrgmqJ8yKUcF3r911XqeSGq5uswzD5ouWRBJCjGz'
with data_sol as (
select
instruction:accounts[0]::string as address
, MIN(block_timestamp) AS wormhole_time
from
solana.core.fact_events
where
block_timestamp::date >= CURRENT_DATE - 30
and
program_id = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
and
instruction:data = '4' -- retrieve from other chains
and
(
inner_instruction:instructions[1]:parsed:type = 'mintTo' -- have careated associated token account
or
inner_instruction:instructions[3]:parsed:type = 'mintTo' -- not yet created associated token account
)
and
succeeded = true
group by 1
)
, data_user_programs as (
select
b.address,
case when label is null then COALESCE(program_id, 'None') else label end as labeling,
ROW_NUMBER() OVER (PARTITION BY b.address ORDER BY block_timestamp) AS rn
from
data_sol b
LEFT JOIN
solana.core.fact_events a on a.block_timestamp > b.wormhole_time AND a.block_timestamp <= DATEADD('days', 4, b.wormhole_time) AND
b.address IN (
instruction:accounts[0]
, instruction:accounts[1]
, instruction:accounts[2]
, instruction:accounts[3]
, instruction:accounts[4]
, instruction:accounts[5]
, instruction:accounts[6]
, instruction:accounts[7]
, instruction:accounts[8]
, instruction:accounts[9]
)
left join solana.core.dim_labels c on a.program_id = c.address
where
a.block_timestamp::date >= CURRENT_DATE - 30
and
succeeded = true
and
program_id not in (
'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb', -- exclude wormhole
'worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth', -- exclude wormhole
'DeJBGdMFa1uynnnKiwrVioatTuHmNLpyFKnmB5kaFdzQ', -- Phantom wallet program id for trasnfer https://docs.phantom.app/resources/faq
'4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5' -- transfer token program
) -- exclude wormhole program id
-- and
-- block_timestamp::date >= CURRENT_DATE - 90
and labeling != 'solana'
-- group by 1, 2
and ROW_NUMBER() OVER (PARTITION BY b.address ORDER BY block_timestamp) <= 3
)
select
CASE
when labeling = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K' then 'Magic Eden V2'
when labeling = '3Katmm9dhvLQijAvomteYMo6rfVbY5NaCRNq9ZBqBgr6' then 'Francium Lend Reward Program'
when labeling = 'QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB' then 'Quarry Protocol'
when labeling = 'VoLT1mJz1sbnxwq5Fv2SXjdVDgPXrb9tJyC8WpMDkSp' then 'Friktion Protocol'
when labeling = 'hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk' then 'Opensea'
when labeling = '2nAAsYdXF3eTQzaeUQS3fr4o782dDg8L28mX39Wr5j8N' then 'lyfRaydiumProgramID'
else labeling end as label,
count(*) as total
from data_user_programs
where label != 'solana' -- remove program id that dedicated to solana
and rn <=3
group by 1 order by 2
desc
// limit 10
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
https://twitter.com/pinehearst_/status/1542532946632265728
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
Updates / Accomplishments
Ran our first THORChain flash bounty this week, done by Pinehearst
THORChain analysis on Terra LPs
Added Famous Foxes and Primates to NFT Deal Score
Helped Jack Forlines with some queries for wormhole + Michael with some stuff for Metaplex report
Finished the Solana NFT Metadata update script
Added THORNames + slash_points tables and updates to switch events tables
Solana data sleuthing - worked with Jessica + Desmond to fix nft_mints + nft_sales tables
Problems Encountered
Wormhole query took a REALLY long time to run
Pretty clean week
Priorities
Get Solana NFT Metadata update script running on server
Chat with Eric about doing that cool wallet unique identifier thingy
Concerns
Nothing at the moment
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT block_timestamp, SPLIT(to_asset, '-')[0] AS asset, from_address, to_amount AS usd_amount
FROM flipside_prod_db.thorchain.swaps
WHERE (to_asset ILIKE '%/BUSD%' OR to_asset = 'ETH/USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48') AND
block_timestamp >= TO_DATE('2022-01-01')
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT block_timestamp, SPLIT(to_asset, '-')[0] AS asset, from_address, to_amount AS usd_amount
FROM flipside_prod_db.thorchain.swaps
WHERE (to_asset ILIKE '%/BUSD%' OR to_asset = 'ETH/USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48') AND
block_timestamp >= TO_DATE('2022-01-01')
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT SUM(to_e8) * POWER(10, -8) AS amt
FROM midgard.swap_events
WHERE to_asset ILIKE '%/BUSD%'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT SUM(to_e8) * POWER(10, -8) AS amt
FROM thorchain.swap_events
WHERE to_asset ILIKE '%/BUSD%'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_address
, SUM(from_amount_usd) AS volume_usd
FROM thorchain.swaps
WHERE pool_name LIKE '%BUSD%'
AND block_timestamp >= '2022-04-01'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
)
SELECT *
FROM base
ORDER BY 2
2022-06-06 19:15:10 +00:00
WITH base AS (
2022-07-14 22:10:02 +00:00
SELECT SPLIT(pool_name, '-')[0] AS pool_name
, COUNT(1) AS n_swaps
, ROUND(SUM(from_amount_usd)) AS usd_volume
FROM thorchain.swaps
WHERE from_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
OR native_to_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
2022-06-06 19:15:10 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY usd_volume DESC) AS rn
FROM base
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, CONCAT(CASE WHEN rn < 10 THEN '0', ELSE '' END, rn::varchar, '. ', pool_name) AS label
FROM b2
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT DISTINCT date_trunc('hour', block_timestamp) AS hour
FROM thorchain.UPDATE_NODE_ACCOUNT_STATUS_EVENTS
ORDER BY 1 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n, MAX(block_timestamp)
FROM thorchain.swaps
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
189779216.728215 - 188233930.596686
1,545,286
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN (
from_address IN ('thor1dhlfhswuqs64s0askzmkq3nqutaajunjj5n6wn','thor170e2xv7atjepzr8cjsjlpyq4fah6ykdagg6c2u','bnb1z3s7lqa96pw0netgzgge476xy8wp5eavg5vxv5')
OR native_to_address IN ('thor1dhlfhswuqs64s0askzmkq3nqutaajunjj5n6wn','thor170e2xv7atjepzr8cjsjlpyq4fah6ykdagg6c2u','bnb1z3s7lqa96pw0netgzgge476xy8wp5eavg5vxv5')
) THEN 'Synth Hoarders' ELSE 'Others' END AS swapper
, COUNT(1) AS n_swaps
, ROUND(SUM(from_amount_usd)) AS usd_volume
FROM thorchain.swaps
WHERE pool_name LIKE '%.BUSD%'
AND block_timestamp::date >= '2022-04-25'
GROUP BY 1
ORDER BY 3 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT REPLACE(SPLIT(pool_name, '-')[0], '/', '.') AS poolname
, SUM(CASE WHEN from_asset LIKE '%/%' THEN from_amount_usd ELSE 0 END) AS synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE from_amount_usd END) AS non_synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN liq_fee_rune_usd + liq_fee_asset_usd ELSE 0 END) AS synth_swap_fees
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE liq_fee_rune_usd + liq_fee_asset_usd END) AS non_synth_swap_fees
FROM thorchain.swaps
WHERE block_timestamp::date >= '2022-04-25'
GROUP BY 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT CASE WHEN pool_name LIKE '%BUSD%' THEN 'BUSD' ELSE 'Others' AS pool
, SUM(CASE WHEN from_asset LIKE '%/%' THEN from_amount_usd ELSE 0 END) AS synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE from_amount_usd END) AS non_synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN liq_fee_rune_usd + liq_fee_asset_usd ELSE 0 END) AS synth_swap_fees
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE liq_fee_rune_usd + liq_fee_asset_usd END) AS non_synth_swap_fees
FROM thorchain.swaps
WHERE block_timestamp::date >= '2022-04-25'
GROUP BY 1
)
SELECT *
, synth_swap_fees / non_synth_swap_volume AS synth_swap_fees_vs_non_synth_swap_volume_ratio
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT CASE WHEN pool_name LIKE '%BUSD%' THEN 'BUSD' ELSE 'Others' END AS pool
, SUM(CASE WHEN from_asset LIKE '%/%' THEN from_amount_usd ELSE 0 END) AS synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE from_amount_usd END) AS non_synth_swap_volume
, SUM(CASE WHEN from_asset LIKE '%/%' THEN liq_fee_rune_usd + liq_fee_asset_usd ELSE 0 END) AS synth_swap_fees
, SUM(CASE WHEN from_asset LIKE '%/%' THEN 0 ELSE liq_fee_rune_usd + liq_fee_asset_usd END) AS non_synth_swap_fees
FROM thorchain.swaps
WHERE block_timestamp::date >= '2022-04-25'
GROUP BY 1
2022-06-06 19:15:10 +00:00
), b2 AS (
SELECT *
2022-07-14 22:10:02 +00:00
, synth_swap_fees / non_synth_swap_volume AS synth_swap_fees_vs_non_synth_swap_volume_ratio
FROM base b
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT b2.*
, b3.synth_swap_fees_vs_non_synth_swap_volume_ratio * b2.synth_swap_volume AS expected_synth_swap_fees
, b2.synth_swap_fees - expected_synth_swap_fees AS difference
FROM b2
JOIN b2 b3 ON b3.pool = 'Others'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH synths AS (
SELECT CASE WHEN native_to_address = '' THEN from_address ELSE native_to_address END AS address
, SUM(to_amount) AS to_amount
, COUNT(1) AS n_synths
FROM thorchain.swaps
WHERE to_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
), burns AS (
SELECT from_address AS address
, SUM(from_amount) AS from_amount
, COUNT(1) AS n_burns
FROM thorchain.swaps
WHERE from_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
), base AS (
SELECT COALESCE(s.address, b.address) AS address
, COALESCE(s.to_amount, 0) AS synth_amount
, COALESCE(b.from_amount, 0) AS burn_amount
, COALESCE(s.n_synths, 0) AS n_synths
, COALESCE(b.n_burns, 0) AS n_burns
, synth_amount - burn_amount AS net_synth_amount
, ROW_NUMBER() OVER (ORDER BY net_synth_amount DESC) AS rn
FROM synths s
FULL OUTER JOIN burns b on b.address = s.address
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT * FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM thorchain.swaps
WHERE (
from_address = 'thor163jhxz3tyf4qpgmsqjnmmdv80z40yr3hn6e6f9'
OR to_pool_address = 'thor163jhxz3tyf4qpgmsqjnmmdv80z40yr3hn6e6f9'
OR native_to_address = 'thor163jhxz3tyf4qpgmsqjnmmdv80z40yr3hn6e6f9'
) AND (
from_asset LIKE '%/BUSD%'
OR to_asset LIKE '%/BUSD%'
)
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT SUM(to_amount) AS to_amount
FROM thorchain.swaps
WHERE to_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
SELECT SUM(from_amount) AS from_amount
FROM thorchain.swaps
WHERE from_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
), burns AS (
SELECT from_address
, SUM(from_amount) AS from_amount
FROM thorchain.swaps
WHERE from_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH synths AS (
SELECT DATE_TRUNC('week', block_timestamp) AS week
, SUM(to_amount) AS to_amount
FROM thorchain.swaps
WHERE to_asset LIKE '%/BUSD%'
AND from_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
GROUP BY 1
ORDER BY 2 DESC
), burns AS (
SELECT DATE_TRUNC('week', block_timestamp) AS week
, SUM(from_amount) AS from_amount
FROM thorchain.swaps
WHERE from_asset LIKE '%/BUSD%'
AND from_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
GROUP BY 1
ORDER BY 2 DESC
)
SELECT COALESCE(s.week, b.week) AS week
, COALESCE(s.to_amount, 0) AS synth_amount
, COALESCE(b.from_amount, 0) AS burn_amount
, synth_amount - burn_amount AS net_synth_amount
, SUM(net_synth_amount) OVER (ORDER BY COALESCE(s.week, b.week)) AS cumu_net_synth_amount
FROM synths s
FULL OUTER JOIN burns b on b.week = s.week
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT from_address
, to_address
, from_asset
, to_asset
, COUNT(1) AS n_swaps
, SUM(from_amount_usd) AS swaps_volume
FROM thorchain.swaps
WHERE from_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
OR to_address = 'thor1yd6m7pek6h6zh7p32d5xt20xcegz96pml0n208'
GROUP BY 1, 2, 3, 4
ORDER BY 6 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH synths AS (
SELECT from_address
, SUM(to_amount) AS to_amount
FROM thorchain.swaps
WHERE to_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
), burns AS (
SELECT from_address
, SUM(from_amount) AS from_amount
FROM thorchain.swaps
WHERE from_asset LIKE '%/BUSD%'
GROUP BY 1
ORDER BY 2 DESC
), base AS (
SELECT COALESCE(s.from_address, b.from_address) AS from_address
, COALESCE(s.to_amount, 0) AS synth_amount
, COALESCE(b.from_amount, 0) AS burn_amount
, synth_amount - burn_amount AS net_synth_amount
, ROW_NUMBER() OVER (ORDER BY net_synth_amount DESC) AS rn
FROM synths s
FULL OUTER JOIN burns b on b.from_address = s.from_address
WHERE net_synth_amount > 0
ORDER BY net_synth_amount DESC
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', from_address)
ELSE '10. Others' END AS label
FROM base
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH to_synths AS (
SELECT DATE_TRUNC({{timeframe}}, block_timestamp) AS time, SPLIT(to_asset, '-')[0] AS asset, SUM(to_amount) AS to_amount, SUM(to_amount_usd) AS to_amount_usd
FROM flipside_prod_db.thorchain.swaps
WHERE block_timestamp >= TO_DATE('2022-03-11')
AND (to_asset ILIKE '%/%')
GROUP BY 1, 2
),
from_synths AS (
SELECT DATE_TRUNC({{timeframe}}, block_timestamp) AS time, SPLIT(from_asset, '-')[0] AS asset, SUM(from_amount) AS from_amount, SUM(from_amount_usd) AS from_amount_usd
FROM flipside_prod_db.thorchain.swaps
WHERE block_timestamp >= TO_DATE('2022-03-11')
AND (from_asset ILIKE '%/%')
GROUP BY 1, 2
),
base AS (
SELECT COALESCE(t.asset, f.asset) AS asset
, COALESCE(t.time, f.time) AS time
, COALESCE(to_amount, 0) AS to_amount
, COALESCE(to_amount_usd, 0) AS to_amount_usd
, COALESCE(from_amount, 0) AS from_amount
, COALESCE(from_amount_usd, 0) AS from_amount_usd
FROM to_synths t
FULL OUTER JOIN from_synths f ON f.time = t.time AND f.asset = t.asset
)
SELECT *
, CASE WHEN from_amount = 0 THEN NULL ELSE to_amount * 1.0 / from_amount END AS amount_ratio
, to_amount_usd - from_amount_usd AS net_mint_amount_usd
, CASE WHEN from_amount_usd = 0 THEN NULL ELSE to_amount_usd * 1.0 / from_amount_usd END AS usd_ratio
, CASE WHEN to_amount = 0 THEN NULL ELSE from_amount * 1.0 / to_amount END AS amount_ratio_2
, CASE WHEN to_amount_usd = 0 THEN NULL ELSE from_amount_usd * 1.0 / to_amount_usd END AS usd_ratio_2
FROM base
WHERE (from_amount_usd + to_amount_usd) > 10000
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Lean into IBC
What is topical
Reach out directly on Twitter or on Discord
Getting retweets from big accounts
Use Reddit + Discord
Knowing what does well - adding NFT communities
Scanning mentions
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Do we skip over regulatory?
Do we use money?
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
DraftKings + FanDuel were saying it's a skill game
Spin it up as a skill game?
VC funding comes first
From a legal standpoint that's huge
Shifting to real money is a high priority
Invite Manny to git
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
https://linktr.ee/multichain
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Baller gonna ball in any market.
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Holla at a Balla.
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM information_schema.tables
Got the most airdrops
Have we run any bounties on the number of the number of unique program ids?
Interactions bby programId
Solana dApp Store
FTX is positioning itself as a way to pay in crypto by converting on their platform
The benefit of having a bunch of Qualcomm guys running the show
Stocks are coming to FTX
I think FTX might replace Robinhood for me
I think SBF might be one of my favorite people - had to slow down video
The Orca girl is incredible
Mobile focus is bullish for props
with
-- We are interested in knowing how many users are currently in the ecosystem.
-- In this case, how many are holding $RUNE in their wallet or have an open LP position.
-- What is this number currently, and how has it trended over time?
t1 as (
2022-05-17 21:52:44 +00:00
SELECT
2022-07-14 22:10:02 +00:00
distinct from_address as user,
min(block_timestamp) as debut
from flipside_prod_db.thorchain.bond_events
group by 1
),
t2 as (
SELECT
distinct from_address as user ,
min(block_timestamp) as debut
from flipside_prod_db.thorchain.message_events
group by 1
),
t3 as (
SELECT
distinct rune_address as user ,
min(block_timestamp) as debut
from flipside_prod_db.thorchain.stake_events
group by 1
),
t4 as (
SELECT
distinct from_address as user,
min(block_timestamp) as debut
from flipside_prod_db.thorchain.swap_events
group by 1
),
t5 as (
SELECT
distinct from_address as user,
min(block_timestamp) as debut
from flipside_prod_db.thorchain.transfer_events
group by 1
),
final as (
select * from t1
UNION
select * from t2
UNION
select * from t3
UNION
select * from t4
UNION
select * from t5
),
final2 as (
SELECT
distinct user,
min(debut) as final_debut
from final
group by 1
),
total_users as (
SELECT
trunc(final_debut,'day') as date,
count(distinct user) as new_users,--,
sum(new_users) over (order by date) as total_users
from final2
group by 1
order by 1 asc
),
t6 as (
SELECT
trunc(block_timestamp,'day') as date,
from_address as user,
sum(rune_amount) as rune_out,
sum(rune_out) over (order by date) as cum_rune_out
FROM flipside_prod_db.thorchain.transfers
group by 1,2
2022-05-17 21:52:44 +00:00
),
2022-07-14 22:10:02 +00:00
t7 as (
SELECT
trunc(block_timestamp,'day') as date,
to_address as user,
sum(rune_amount) as rune_in,
sum(rune_in) over (order by date) as cum_rune_in
FROM flipside_prod_db.thorchain.transfers
group by 1,2
),
final_rune_holders as (
SELECT
t7.date,
t7.user,
cum_rune_in-cum_rune_out as net_rune
from t7
left join t6 on t7.user=t6.user and t7.date=t6.date
),
rune_holders as (
select date, count(distinct user) as new_users, sum(new_users) over (order by date) as total_users from final_rune_holders where net_rune>0 group by 1
),
t8 as (
SELECT
trunc(block_timestamp,'day') as date,
from_address as user,
pool_name,
sum(asset_amount) as staked,
sum(staked) over (partition by user,pool_name order by date) as cum_staked
FROM flipside_prod_db.thorchain.liquidity_actions
group by 1,2,3
2022-05-17 21:52:44 +00:00
),
2022-07-14 22:10:02 +00:00
t9 as (
SELECT
trunc(block_timestamp,'day') as date,
to_address as user,
pool_name,
sum(asset_amount) as unstaked,
sum(unstaked) over (partition by user,pool_name order by date) as cum_unstaked
FROM flipside_prod_db.thorchain.liquidity_actions
group by 1,2,3
2022-05-17 21:52:44 +00:00
),
2022-07-14 22:10:02 +00:00
final_loopers as (
SELECT
t8.date,
t8.user,
t8.pool_name,
cum_staked-cum_unstaked as net_staked
from t8
left join t9 on t8.user=t9.user and t8.pool_name=t9.pool_name
),
final_loopers2 as (
SELECT
date,user,sum(net_staked) as total_staked
from final_loopers
group by 1,2
),
loopers as (
select date, count(distinct user) as new_users, sum(new_users) over (order by date) as total_users from final_loopers2 where total_staked>0 group by 1
)
select 'RUNE holders' as type,* from rune_holders
UNION
select 'Loopers' as type,* from loopers
UNION
select 'All users' as type,* from total_users
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT project_name, COUNT(DISTINCT mint) AS n_mint
FROM solana.dim_nft_metadata
GROUP BY 1
ORDER BY 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT project_name AS collection
, COUNT(DISTINCT mint) AS n_mint
FROM solana.dim_nft_metadata
GROUP BY 1
), b2 AS (
SELECT CAST(((n_mint - 1) / 1000.0) AS INT) AS n_mint_grp
, COUNT(1) AS n
FROM base
GROUP BY 1
)
SELECT CASE WHEN n_mint_grp >= 10 THEN '[10k, +)'
ELSE CONCAT('[',n_mint_grp,'k, ',n_mint_grp + 1,'k)') END AS n_mint_grp_2
, SUM(n) AS n
FROM b2
GROUP BY 1
ORDER BY 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT m.project_name AS collection
, SUM(sales_amount) AS sales_amount
FROM solana.fact_nft_sales s
JOIN solana.dim_nft_metadata m ON m.mint = s.mint
WHERE s.block_timestamp >= '2022-01-01'
GROUP BY 1
), b2 AS (
SELECT collection
, ROW_NUMBER() OVER (ORDER BY sales_amount DESC) AS rn
FROM base
), b3 AS (
SELECT m.project_name AS collection
, date_trunc('month', s.block_timestamp) AS month
, SUM(sales_amount) AS sales_amount
FROM solana.fact_nft_sales s
JOIN solana.dim_nft_metadata m ON m.mint = s.mint
JOIN b2 ON b2.collection = m.project_name AND b2.rn <= 10
WHERE s.block_timestamp >= '2022-01-01'
GROUP BY 1, 2
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, sales_amount / SUM(sales_amount) OVER (PARTITION BY month) AS pct
FROM b3
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.dim_nft_metadata
WHERE LOWER(project_name) IN (
'cets on creck'
, 'astrals'
, 'solstein'
, 'solgods'
, 'okay bears'
, 'meerkat millionaires'
, 'catalina whale mixer'
, 'citizens by solsteads'
, 'defi pirates'
)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.dim_nft_metadata
WHERE LOWER(project_name) IN (
'astrals'
)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH mult_currency AS(
SELECT DISTINCT l.label
FROM solana_dev.silver.nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
WHERE m.mint_currency <> 'So11111111111111111111111111111111111111111'
), sales AS (
SELECT l.label
, COUNT(1) AS n_sales
, SUM(s.sales_amount) AS volume
, COUNT(DISTINCT s.mint) AS n_mints
, MIN(block_timestamp::date) AS start_date
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l on s.mint = l.address
2022-05-17 21:52:44 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), mints AS (
SELECT l.label
, CASE WHEN e.label IS NULL THEN 0 ELSE 1 END AS is_mult_currency
, COUNT(1) AS n_mints
, COUNT(DISTINCT m.mint) AS n_unique_mints
, SUM(m.mint_price) AS sol_mint_volume
FROM solana_dev.silver.nft_mints
JOIN solana.dim_labels l ON m.mint = l.address
LEFT JOIN mult_currency e ON e.label = l.label
GROUP BY 1, 2
)
SELECT s.*
, m.is_mult_currency
, m.n_mints
, m.n_unique_mints
, m.sol_mint_volume
, CASE WHEN s.n_mints > COALESCE(m.n_unique_mints, 0) THEN 1 ELSE 0 END AS is_missing_mint_events
FROM sales s
LEFT JOIN mints m ON m.label = s.label
WHERE s.start_date >= '2022-01-01'
ORDER BY s.volume DESC
WITH mult_currency AS(
SELECT DISTINCT l.label
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
WHERE m.mint_currency <> 'So11111111111111111111111111111111111111111'
), sales AS (
SELECT l.label
, COUNT(1) AS n_sales
, SUM(s.sales_amount) AS volume
, COUNT(DISTINCT s.mint) AS n_mints
, MIN(block_timestamp::date) AS start_date
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l on s.mint = l.address
2022-05-17 21:52:44 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), mints AS (
SELECT l.label
, CASE WHEN e.label IS NULL THEN 0 ELSE 1 END AS is_mult_currency
, COUNT(1) AS n_mints
, COUNT(DISTINCT m.mint) AS n_unique_mints
, SUM(m.mint_price) AS sol_mint_volume
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
LEFT JOIN mult_currency e ON e.label = l.label
GROUP BY 1, 2
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT s.*
, m.is_mult_currency
, m.n_mints
, m.n_unique_mints
, m.sol_mint_volume
, CASE WHEN s.n_mints > COALESCE(m.n_unique_mints, 0) THEN 1 ELSE 0 END AS is_missing_mint_events
FROM sales s
LEFT JOIN mints m ON m.label = s.label
WHERE s.start_date >= '2022-01-01'
ORDER BY s.volume DESC
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.fact_nft_mints
WHERE block_timestamp >= '2022-04-24'
AND block_timestamp <= '2022-04-28'
AND mint = 'EJDtiPkuoRt9nNrQXhQDhtYuAGdV5JzQL9ZAVsRkEdJe'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH sales AS (
-- get all the sales
SELECT DISTINCT l.label
, s.mint
, s.tx_id
, s.block_timestamp::date AS date
, s.sales_amount
, MIN(date) OVER (PARTITION BY l.label) AS mn_date
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l on s.mint = l.address
), mints AS (
-- get all the mints
SELECT DISTINCT l.label
, m.mint
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
), base AS (
-- check which sales do not have a corresponding mint
SELECT s.*
, ROW_NUMBER() OVER (PARTITION BY s.label ORDER BY s.sales_amount DESC) AS rn
FROM sales s
LEFT JOIN mints m ON m.mint = s.mint
WHERE m.mint IS NULL AND mn_date >= '2022-02-01'
), b2 AS (
-- take the top 3 from each collection
SELECT *
FROM base
WHERE rn <= 3
)
-- select only the top 500 sales missing a mint
SELECT *
FROM b2
ORDER BY sales_amount DESC
LIMIT 500
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
@poolprops I think were close
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
#1: $PROPS used to place bets
#2: Liquidity pools ensure ease of enter and exit
#3: 🤔
#4: $PROPS stakers earn % of transaction fees
#5: Contributors rewarded with $PROPS based on DAO vote
#6: Protocol sustained by small tx fees
#7: https://kellen-blumberg.gitbook.io/props/
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT l.label
, COUNT(1) AS n
, COUNT(DISTINCT m.mint) AS n_mints
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
2022-05-17 21:52:44 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
SELECT l.label
, m.mint
, COUNT(1) AS n_mints
, MAX(tx_id) AS mx_tx
, MIN(tx_id) AS mn_tx
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
2022-05-17 21:52:44 +00:00
WITH base AS (
2022-07-14 22:10:02 +00:00
SELECT l.label
, m.mint
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
GROUP BY 1, 2
HAVING COUNT(1) > 1
2022-05-01 05:50:55 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.fact_nft_mints m
JOIN base b ON b.mint = m.mint
ORDER BY block_timestamp DESC, m.mint, tx_id
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT COALESCE(l.label, 'Unknownn')
, date_trunc('month')
, SUM(sales_amount) AS volume
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH non_sol_mint AS(
SELECT DISTINCT l.label
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
WHERE m.mint_currency <> 'So11111111111111111111111111111111111111111'
), mult_mints AS (
SELECT l.label, m.mint
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
WHERE mint_price > 0
GROUP BY 1, 2
HAVING COUNT(1) > 1
), times AS(
SELECT l.label
, m.mint
, m.mint_price
, m.block_timestamp
, m.mint_currency
, m.tx_id
, ROW_NUMBER() OVER (PARTITION BY l.label ORDER BY m.block_timestamp DESC) AS rn
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
LEFT JOIN non_sol_mint n ON n.label = l.label
LEFT JOIN mult_mints mm ON mm.label = l.label
WHERE n.label IS NULL
AND mm.label IS NULL
AND mint_price > 0
), rishi AS (
SELECT label
, MIN(block_timestamp) as mn_date
, MAX(block_timestamp) as mx_date
, AVG(mint_price) as avg_price
, MIN(mint_price) as mn_price
, MAX(mint_price) as mx_price
, COUNT(DISTINCT ROUND(mint_price, 3)) as n_mint_prices
, COUNT(DISTINCT mint) as n_mints
FROM times
GROUP BY 1
), sales AS (
SELECT RANK() OVER (PARTITION BY l.label ORDER BY s.block_timestamp desc) AS rn
, l.label
, s.block_TIMESTAMP
, s.marketplace
, s.sales_amount
, s.mint
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l on s.mint = l.address
), s2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY label ORDER BY sales_amount ASC) AS rn2
FROM sales
WHERE rn <= 20
), cur_floor AS (
SELECT label
, MIN(CASE WHEN rn2 = 4 THEN sales_amount ELSE NULL END) AS cur_floor
, MEDIAN(sales_amount) AS cur_floor_md
FROM s2
GROUP BY 1
), total_sales AS (
SELECT label
, COUNT(1) AS n_sales
, SUM(sales_amount) AS volume
, COUNT(DISTINCT mint) as n_unique_sales
FROM sales
GROUP BY 1
), base AS (
SELECT t.label
, t.n_sales
, n_mints
, n_unique_sales
, t.volume
, f.cur_floor
, f.cur_floor_md
, r.mn_date
, r.mx_date
, DATEDIFF('days', mn_date, mx_date) AS dff
, avg_price
, mn_price
, mx_price
, mx_price - mn_price AS range
, n_mint_prices
, cur_floor - avg_price AS profit
, cur_floor / avg_price AS return
FROM total_sales t
JOIN cur_floor f ON f.label = t.label
JOIN rishi r ON r.label = t.label
WHERE dff <= 10
AND n_sales >= 30
AND n_mints > 50
AND NOT t.label IN ('rithfu','degen games: dice game','solchicks','vs-y1-22')
AND mn_date >= '2022-01-01'
AND mn_date < '2022-06-01'
ORDER BY profit DESC
), b2 AS (
SELECT t.label
, t.mint
, COUNT(1) AS n
, COUNT(DISTINCT t.tx_id) AS n_tx
FROM times t
JOIN base b ON b.label = t.label
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
)
SELECT t.label
, t.mint
, t.mint_price
, t.block_timestamp
, t.mint_currency
, t.tx_id
FROM times t
JOIN b2 ON b2.label = t.label AND b2.mint = t.mint
ORDER BY t.block_timestamp DESC, t.label, t.mint, t.mint_price, t.tx_id
WITH non_sol_mint AS(
SELECT DISTINCT l.label
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
WHERE m.mint_currency <> 'So11111111111111111111111111111111111111111'
), times AS(
SELECT l.label
, m.mint
, m.mint_price
, m.block_timestamp
, m.mint_currency
, ROW_NUMBER() OVER (PARTITION BY l.label ORDER BY m.block_timestamp DESC) AS rn
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON m.mint = l.address
LEFT JOIN non_sol_mint e ON e.label = l.label
WHERE e.label IS NULL
AND mint_price > 0
), rishi AS (
SELECT label
, MIN(block_timestamp) as mn_date
, MAX(block_timestamp) as mx_date
, AVG(mint_price) as avg_price
, MIN(mint_price) as mn_price
, MAX(mint_price) as mx_price
, COUNT(DISTINCT ROUND(mint_price, 3)) as n_mint_prices
, COUNT(DISTINCT mint) as n_mints
FROM times
GROUP BY 1
), sales AS (
SELECT RANK() OVER (PARTITION BY l.label ORDER BY s.block_timestamp desc) AS rn
, l.label
, s.block_TIMESTAMP
, s.marketplace
, s.sales_amount
, s.mint
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l on s.mint = l.address
), s2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY label ORDER BY sales_amount ASC) AS rn2
FROM sales
WHERE rn <= 20
), cur_floor AS (
SELECT label
, MIN(CASE WHEN rn2 = 4 THEN sales_amount ELSE NULL END) AS cur_floor
, MEDIAN(sales_amount) AS cur_floor_md
FROM s2
GROUP BY 1
), total_sales AS (
SELECT label
, COUNT(1) AS n_sales
, SUM(sales_amount) AS volume
, COUNT(DISTINCT mint) as n_unique_sales
FROM sales
GROUP BY 1
), base AS (
SELECT t.label
, t.n_sales
, n_mints
, n_unique_sales
, t.volume
, f.cur_floor
, f.cur_floor_md
, r.mn_date
, r.mx_date
, DATEDIFF('days', mn_date, mx_date) AS dff
, avg_price
, mn_price
, mx_price
, mx_price - mn_price AS range
, n_mint_prices
, cur_floor - avg_price AS profit
, cur_floor / avg_price AS return
FROM total_sales t
JOIN cur_floor f ON f.label = t.label
JOIN rishi r ON r.label = t.label
WHERE dff <= 10
AND n_sales >= 30
AND n_mints > 50
AND NOT t.label IN ('rithfu','degen games: dice game','solchicks')
AND mn_date >= '2022-01-01'
AND mn_date < '2022-06-01'
ORDER BY profit DESC
), b2 AS (
SELECT CASE WHEN avg_price < 0.25 THEN '1: (0, 0.5) $SOL'
WHEN avg_price < 0.5 THEN '2: [0.5, 1.0) $SOL'
WHEN avg_price < 2 THEN '3: [1.0, 2.0) $SOL'
WHEN avg_price < 10 THEN '4: [2.0, 5.0) $SOL'
ELSE '5: 5+ $SOL' END AS mint_price
, CASE WHEN cur_floor < avg_price THEN '1: Unprofitable'
WHEN cur_floor - avg_price < 0.5 THEN '2: [0, 0.5) $SOL Profit'
WHEN cur_floor - avg_price < 2 THEN '3: [0.5, 2.0) $SOL Profit'
WHEN cur_floor - avg_price < 10 THEN '4: [2.0, 10.0) $SOL Profit'
ELSE '5: 10+ $SOL Profit' END AS profit_group
, COUNT(1) AS n_collections
FROM base
GROUP BY 1, 2
)
SELECT *
, n_collections * 100 / SUM(n_collections) OVER (PARTITION BY mint_price) AS pct
FROM b2
ORDER BY mint_price, profit_group
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-07-14 22:10:02 +00:00
SELECT m.*
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
WHERE l.label = 'jelly rascals'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
secondtable AS (
SELECT DISTINCT label
,sales_amount
,marketplace
,block_timestamp
FROM (SELECT RANK() OVER (PARTITION BY label order by block_timestamp desc)
as RN,label,block_TIMESTAMP,marketplace,sales_amount //as date
from solana.core.fact_nft_sales join solana.core.dim_labels on solana.core.fact_nft_sales.mint = solana.core.dim_labels.address) as ST
Where ST.RN = 1),
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
profit_table as(Select rishi.label,rishi.price_of_mint,secondtable.sales_amount, Case when rishi.price_of_mint = 0 then 99999 else secondtable.sales_amount/rishi.price_of_mint end as profit
from rishi
Inner join secondtable on rishi.label = secondtable.label
order by profit desc)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN profit < 1 THEN '1: Less than 1x Returns'
WHEN profit >= 1 and profit < 2 THEN '2: 1-2x Returns'
WHEN profit >=2 and profit < 5 THEN '3: 2-5x Returns'
WHEN profit >= 5 and profit < 10 THEN '4: 5-10x Returns'
WHEN profit >= 10 and profit < 50 THEN '5: 10-50x Returns'
WHEN profit > 50 THEN '6: More than 50x Returns'
END AS profitability, count(label) as collections
From profit_table
GROUP by profitability
Order by profitability
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN profit < 1 THEN '1: Less than 1x Returns'
WHEN profit >= 1 and profit < 2 THEN '2: 1-2x Returns'
WHEN profit >=2 and profit < 5 THEN '3: 2-5x Returns'
WHEN profit >= 5 and profit < 10 THEN '4: 5-10x Returns'
WHEN profit >= 10 and profit < 50 THEN '5: 10-50x Returns'
WHEN profit > 50 THEN '6: More than 50x Returns'
END AS profitability, count(label) as collections
From profit_table
GROUP by profitability
Order by profitability
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
https://howrare.is/vbagame
https://howrare.is/junglecats
https://howrare.is/meerkatmillionaires
https://howrare.is/nakedmeerkats
https://howrare.is/chroniclesnft
https://howrare.is/hellopantha
https://howrare.is/soldierxsolvivorsolvivor
https://howrare.is/gangstagators
https://howrare.is/foxyfennecsgang
https://howrare.is/dangervalleyducks
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
https://twitter.com/cheesybobas
https://www.pixiv.net/en/users/36919471
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT f.asset
, f.asset_e8
, f.pool_deduct
, f.block_timestamp
, f.tx
, p.cnt
, ROW_NUMBER() OVER (PARTITION BY f.asset, f.asset_e8, f.pool_deduct, f.block_timestamp, f.tx ORDER BY p.cnt) AS rn
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events f
JOIN bronze_midgard_2_6_9_20220405.fee_events_pk_count p
ON p.asset = f.asset
AND p.asset_e8 = f.asset_e8
AND p.pool_deduct = f.pool_deduct
AND p.block_timestamp = f.block_timestamp
AND p.tx = f.tx
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT asset
, asset_e8
, pool_deduct
, block_timestamp
, tx
FROM base
WHERE rn <= cnt
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT tx
, asset
, asset_e8
, pool_deduct
, block_timestamp
, ROW_NUMBER() OVER (ORDER BY block_timestamp, tx) AS event_id
FROM midgard.fee_events
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
ssh -i "Users/kellenblumberg/git/props/aws/props-aws.pem" ubuntu@ec2-34-204-49-162.compute-1.amazonaws.com
ssh -i "~/git/props/aws/props-aws.pem" ubuntu@34.204.49.162
pm2 start npm -- start
sudo reboot
2022-05-01 05:50:55 +00:00
2022-07-14 22:10:02 +00:00
API Key: IioFYwv2t7KEsWjbh8xsEKd8d
API Secret Key: 0650aF7Vo3gz2H7z1o10ws4ojXgjbl8UWk3N8kqVUtqvgIBv26
Bearer Token: AAAAAAAAAAAAAAAAAAAAAF%2BRdAEAAAAAQ2emwRpqU1B7Cj22LUxfJ%2Btrhck%3DpFpWm4G4Wd5dNLJjP2Ru5EuVVHEx6lroYfkiEAlPQZ0HQvqwsn
WITH base AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY project_name ORDER BY insert_date DESC) AS rn
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
)
2022-05-17 21:52:44 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM base WHERE rn = 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
With secondtable as (Select DISTINCT label,marketplace,block_timestamp
From (SELECT RANK() OVER (PARTITION BY label order by block_timestamp)
as RN,label,block_TIMESTAMP,marketplace //as date
from solana.core.fact_nft_sales join solana.core.dim_labels on solana.core.fact_nft_sales.mint = solana.core.dim_labels.address) as ST
Where ST.RN = 1)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT block_timestamp::date AS date
, COUNT(1) AS n_sales
, AVG( CASE WHEN l.label IS NULL THEN 0 ELSE 1 END ) AS pct_labeled
, SUM( CASE WHEN l.label IS NULL THEN 0 ELSE sales_amount END ) / SUM(sales_amount) AS pct_labeled_volume
FROM solana.core.fact_nft_sales s
LEFT JOIN solana.dim_labels l on s.mint = l.address
WHERE marketplace in ('magic eden v1', 'magic eden v2')
AND block_timestamp >= '2022-01-01'
GROUP BY 1
ORDER BY 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM bi_analytics.bronze.hevo_grades g
JOIN bi_analytics.bronze.hevo_submissions s ON s.id = g.submission_id
JOIN bi_analytics.bronze.hevo_users u ON u.id = s.created_by_id
LIMIT 10
WITH base AS (
SELECT from_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(-rune_amount) AS net_rune_amount
FROM thorchain.transfers
2022-05-17 21:52:44 +00:00
GROUP BY 1, 2
UNION
2022-07-14 22:10:02 +00:00
SELECT to_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(rune_amount) AS net_rune_amount
FROM thorchain.transfers
GROUP BY 1, 2
), b2 AS (
2022-05-17 21:52:44 +00:00
SELECT address
2022-07-14 22:10:02 +00:00
, MIN(month) AS month
, SUM(net_rune_amount) AS net_rune_amount
FROM base
GROUP BY 1
), l AS (
SELECT
from_address AS address
, pool_name
, sum(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) as net_stake_units
FROM thorchain.liquidity_actions
WHERE lp_action IN ('add_liquidity','remove_liquidity')
AND address LIKE 'thor%'
GROUP BY 1, 2
), l2 AS (
SELECT DISTINCT address
FROM l
WHERE net_stake_units > 0
), f AS (
SELECT DISTINCT address
FROM silver_crosschain.ntr
WHERE address LIKE 'thor%'
), tot_pool AS (
2022-05-17 21:52:44 +00:00
SELECT pool_name
2022-07-14 22:10:02 +00:00
, SUM(net_stake_units) AS tot_stake_units
FROM l
WHERE net_stake_units > 0
2022-05-17 21:52:44 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), pct_pool AS (
SELECT address
, l.pool_name
, net_stake_units
, tot_stake_units
, net_stake_units / tot_stake_units AS pct_pool
FROM l
JOIN tot_pool t ON t.pool_name = l.pool_name
WHERE net_stake_units > 0
2022-05-17 21:52:44 +00:00
), p AS (
2022-07-14 22:10:02 +00:00
SELECT *
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp DESC) AS rn
FROM thorchain.pool_block_balances
WHERE block_timestamp >= CURRENT_DATE - 3
), pool_val AS (
SELECT pool_name
, rune_amount_usd + asset_amount_usd AS tvl
FROM p
2022-05-17 21:52:44 +00:00
WHERE rn = 1
2022-07-14 22:10:02 +00:00
), user_val AS (
SELECT pp.address
, pct_pool * tvl AS lp_val
FROM pct_pool pp
JOIN pool_val v ON v.pool_name = pp.pool_name
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT
-- date_trunc('year', month) AS month
CASE WHEN f.address IS NULL THEN 0 ELSE 1 END AS is_flipside
, COUNT(1) AS n
, AVG(CASE WHEN net_rune_amount > 0 OR l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_hold
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NULL THEN 1 ELSE 0 END) AS pct_rune_only
, AVG(CASE WHEN net_rune_amount <= 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_only
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_and_rune
, SUM( COALESCE(lp_val, 0)) AS lp_val
FROM b2
LEFT JOIN l2 ON l2.address = b2.address
LEFT JOIN f ON f.address = b2.address
LEFT JOIN user_val u ON u.address = b2.address
GROUP BY 1
SELECT v.collection, v.mint, v.token_id, v.deal_score_rank, v.rarity_rank, v.fair_market_price , m.image_url
FROM flipside_prod_db.crosschain.nft_fair_market_value v
LEFT JOIN solana.core.dim_nft_metadata m ON m.mint = v.mint
WHERE v.mint = '3hDW84qQdbh8TcCvJWwDQ1SXbqWmG6QxX84JCq7ZP4Dp'
ORDER BY CASE WHEN COALESCE(m.image_url, 'None') = 'None' THEN 1 ELSE 0 END
LIMIT 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
When I run it the first time, it doesn't work
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT v.collection, v.mint, v.token_id, v.deal_score_rank, v.rarity_rank, v.fair_market_price, '' AS image_url
FROM flipside_prod_db.crosschain.nft_fair_market_value v
WHERE v.mint = 'FWPW8ddEZYbpaQ8b6qiU5yMbFan3Myg4z55oEN5qTpsE'
LIMIT 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT
block_timestamp,
'Deposit' as action,
'SOL Covered Call' as vault,
'8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j' as vault_address,
inner_instruction:index as index,
tx_id,
inner_instruction:instructions [0] :parsed:info:authority as user_wallet,
inner_instruction:instructions [0] :parsed:info:amount / 1e9 as amount
FROM
solana.core.fact_events
WHERE
program_id = '1349iiGjWC7ZTbu6otFmJwztms122jEEnShKgpVnNewy'
and inner_instruction:instructions [0] :parsed:info:destination = '8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j'
and inner_instruction:instructions [0] :parsed:type = 'transfer'
and SUCCEEDED = 'TRUE'
UNION
SELECT
e.block_timestamp,
'Withdraw' as action,
'SOL Covered Call' as vault,
'8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j' as vault_address,
inner_instruction:index as index,
e.tx_id,
case when array_size(instruction:accounts) > 12 then
instruction:accounts [1]
when array_size(instruction:accounts) < 10 then
instruction:accounts [6]
else
instruction:accounts [9]
end as user_wallet,
case when inner_instruction:instructions [1] :parsed:type = 'transfer' then
inner_instruction:instructions [1] :parsed:info:amount / 1e9
else
inner_instruction:instructions [0] :parsed:info:amount / 1e9
end as amount
FROM
solana.core.fact_events e
WHERE
program_id = '1349iiGjWC7ZTbu6otFmJwztms122jEEnShKgpVnNewy'
AND (
(
inner_instruction:instructions [1] :parsed:info:source = '8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j'
AND inner_instruction:instructions [1] :parsed:type = 'transfer'
)
OR (
inner_instruction:instructions [0] :parsed:info:source = '8vyTqVVPmJfqFexRcMBGDAHoSCyZ52RC5sRVhYzbfU4j'
AND inner_instruction:instructions [0] :parsed:type = 'transfer'
)
) and SUCCEEDED = 'TRUE'
and user_wallet = 'BEmgLNjcUJx8ibdoryYxJDZVEovADSZnWCccs1HLgt37'
UNION
SELECT
block_timestamp,
'Initiate Withdraw' as action,
'SOL Covered Call' as vault,
'DRLcUXwMcFf8itWJy7NdzKuWrZep1HceLaTgRRDs51SH' as vault_address,
inner_instruction:index as index,
tx_id,
inner_instruction:instructions [0] :parsed:info:authority as user_wallet,
inner_instruction:instructions [0] :parsed:info:amount / 1e9 as amount
FROM
solana.core.fact_events
WHERE
program_id = '1349iiGjWC7ZTbu6otFmJwztms122jEEnShKgpVnNewy'
and inner_instruction:instructions [0] :parsed:info:destination = 'DRLcUXwMcFf8itWJy7NdzKuWrZep1HceLaTgRRDs51SH'
and inner_instruction:instructions [0] :parsed:type = 'transfer'
and SUCCEEDED = 'TRUE'
and user_wallet = 'BEmgLNjcUJx8ibdoryYxJDZVEovADSZnWCccs1HLgt37'
Education on the site
Andy8052
BetDex taking on risk
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM silver_crosschain.address_labels
WHERE address = '6z8T7je8BZfCbUaEpX3uNVGB1rsjXdQSRTashfArJjDP'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.dim_labels
WHERE mint = '6z8T7je8BZfCbUaEpX3uNVGB1rsjXdQSRTashfArJjDP'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT m.mint
, m.block_timestamp
, m.tx_id
, m.mint_price
FROM solana.fact_nft_mints m
WHERE tx_id = '4VzwY68wQ7shxyxFtxexWufe76ojZaPEpT1EYEKBQvZroVdEkSdx58m3sBpYAaJpFV7neCxRUoHCUx9XQTmwXCDv'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT l.address
, m.block_timestamp
, m.tx_id
, m.mint_price
FROM flipside_prod_db.solana.dim_labels l
JOIN solana.fact_nft_mints m ON m.mint = l.address
WHERE label_type = 'nft'
AND label = 'bulldog doghouses'
SELECT label, address, COUNT(1) AS n
FROM solana.dim_labels
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT cp.project_name
, cp.title
, cp.slug
, b.title AS bounty_title
, b.difficulty
, u.discord_handle
, g.created_at AS grade_time
, grade_time::date AS grade_date
, total_score
, result_url
FROM bi_analytics.bronze.hevo_grades g
JOIN bi_analytics.bronze.hevo_submissions s ON s.id = g.submission_id
JOIN bi_analytics.bronze.hevo_users u ON u.id = s.created_by_id
JOIN bi_analytics.bronze.hevo_claims c ON c.id = s.claim_id
JOIN bi_analytics.bronze.hevo_bounties b ON b.id = c.bounty_id
JOIN bi_analytics.bronze.hevo_campaigns cp ON cp.id = b.campaign_id
WHERE total_score IS NOT NULL
AND cp.project_name ilike '%thor%'
ORDER BY grade_time DESC
LIMIT 1000
2022-05-17 21:52:44 +00:00
WITH base AS (
2022-07-14 22:10:02 +00:00
SELECT label
, MIN(m.block_timestamp::date) AS mn_date
, MAX(m.block_timestamp::date) AS mx_date
, MIN(m.mint_price) AS mn_price
, MAX(m.mint_price) AS mx_price
, COUNT(1) AS n_mints
FROM solana.core.fact_nft_mints m
JOIN solana.dim_labels l on m.mint = l.address
AND block_timestamp >= '2022-01-01'
GROUP BY 1
ORDER BY 1
), filter AS (
SELECT DISTINCT label
FROM solana.core.fact_nft_sales s
LEFT JOIN solana.dim_labels l on s.mint = l.address
WHERE marketplace in ('magic eden v1', 'magic eden v2')
AND block_timestamp >= '2022-01-01'
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT b.*
, datediff('days', mn_date, mx_date) AS mint_days
FROM base b
JOIN filter f ON f.label = b.label
ORDER BY mint_days DESC
2022-05-01 05:50:55 +00:00
2022-07-14 22:10:02 +00:00
WITH t AS (
SELECT DISTINCT tx_id
FROM thorchain.swaps
WHERE block_timestamp >= CURRENT_DATE - 1
LIMIT 10
)
SELECT *
FROM thorchain.swaps s
JOIN t ON t.tx_id = s.tx_id
ORDER BY tx_id
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH t AS (
SELECT tx_id, COUNT(1) AS n
FROM thorchain.swaps
WHERE block_timestamp >= CURRENT_DATE - 1
GROUP BY 1
)
SELECT s.*, CASE WHEN t.n = 1 THEN 0 ELSE 1 END AS two_sided_swap_via_rune
FROM thorchain.swaps s
JOIN t ON t.tx_id = s.tx_id
WHERE block_timestamp >= CURRENT_DATE - 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
https://docs.google.com/presentation/d/1u1f41MsaEpTdCtBnR-lrX6yoIJeh2gOZDK6_54E70y0/edit#slide=id.g132b60abcc1_0_152
SELECT ARRAY_SIZE(inner_instructions[0]:instructions) AS sz
, COUNT(1) AS n
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 30
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
GROUP BY 1
With times as
(
Select solana.core.fact_nft_mints.BLOCK_TIMESTAMP, Solana.core.dim_labels.LABEL
From Solana.core.fact_nft_mints
INNER JOIN solana.core.dim_labels on solana.core.fact_nft_mints.MINT = solana.core.dim_labels.ADDRESS
),
//this is for the combination of mint and labels tabel where it connects the adress and gives the timestamp and english label
second_table as (Select DISTINCT label,block_timestamp
From (SELECT RANK() OVER (PARTITION BY label order by block_timestamp)
as RN,label,block_TIMESTAMP //as date
from times) as ST
Where ST.RN = 1),
//this is creating the min times for each collection
min_mint_table as(
Select label,block_timestamp as date
From second_table
), first_sale AS (
SELECT l.label, MIN(block_timestamp) AS first_sale_date
FROM solana.fact_nft_sales s
INNER JOIN solana.dim_labels l on l.address = s.mint
),
//just renaming blocktimestamp as date to seprate in combined table
combined_mint_table as(
Select t.block_timestamp
,t.label
, m.date
, f.first_sale_date
,TIMESTAMPDIFF('day', t.block_timestamp, first_sale_date) AS sale_difference
,TIMESTAMPDIFF('day', m.date, t.block_timestamp) AS difference
from times t
JOIN first_sale f ON f.label = t.label
JOIN min_mint_table m ON m.label = t.label
), n_mints AS (
SELECT label, COUNT(DISTINCT address) AS n
FROM solana.core.dim_labels
GROUP BY 1
)
Select t.label, n_mints, MAX(difference) AS mx, AVG(difference) as avg
From combined_mint_table t
JOIN n_mints n ON n.label = t.label
GROUP BY 1, 2
ORDER BY 3 DESC
WITH base AS (
SELECT t.from AS address
, hash
, RIGHT(CONCAT(REPEAT('0', 64), substr(CAST(l.data AS VARCHAR),3,64)), 64) as n
, l.data
, 4294967296::decimal as exp0 -- 16^8
, 72057594037927936::decimal as exp1 -- 16^14
, t.block_time
FROM optimism.transactions t
INNER JOIN optimism.logs l
ON t.hash = l.tx_hash
AND t.to = '\xfedfaf1a10335448b7fa0268f56d2b44dbd357de'
AND l.topic1 = '\xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
AND t.block_time > '2022-05-25'
AND t.block_time <= '2022-06-03 22:57'
AND success
), b2 AS (
SELECT address
, MIN(block_time)
, SUM(
CONCAT('x00',CAST((substring(n, 1, 14)) AS VARCHAR))::bit(64)::bigint * exp0 * exp1 * exp1 * exp1
+ CONCAT('x00',CAST((substring(n, 15, 14)) AS VARCHAR))::bit(64)::bigint * exp0 * exp1 * exp1
+ CONCAT('x00',CAST((substring(n, 29, 14)) AS VARCHAR))::bit(64)::bigint * exp0 * exp1
+ CONCAT('x00',CAST((substring(n, 43, 14)) AS VARCHAR))::bit(64)::bigint * exp0
+ CONCAT('x00',CAST((substring(n, 57, 14)) AS VARCHAR))::bit(64)::bigint
) / POWER(10,18) AS claim_amount
FROM base
GROUP BY 1, 2
), swaps AS (
SELECT b2.address
, SUM(
CASE WHEN d.trader_a = b2.address
)
FROM b2
JOIN dex.trades d ON d.block_time >= b2.block_time AND (
(d.trader_a = b2.address AND token_a_address = '\x4200000000000000000000000000000000000042')
OR (d.trader_b = b2.address AND token_b_address = '\x4200000000000000000000000000000000000042')
)
AND (
token_a_address = '\x4200000000000000000000000000000000000042'
OR token_b_address = '\x4200000000000000000000000000000000000042'
)
AND usd_amount > 0
AND token_a_amount_raw>0
AND token_b_amount_raw>0
)
SELECT SUM(claim_amount) AS claim_amount, MAX(block_time) AS mx
FROM b2
WITH base AS (
SELECT from_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(-rune_amount) AS net_rune_amount
FROM thorchain.transfers
GROUP BY 1, 2
UNION
SELECT to_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(rune_amount) AS net_rune_amount
FROM thorchain.transfers
GROUP BY 1, 2
), b2 AS (
SELECT address
, MIN(month) AS month
, SUM(net_rune_amount) AS net_rune_amount
FROM base
GROUP BY 1
), l AS (
SELECT
from_address AS address
, pool_name
, sum(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) as net_stake_units
FROM thorchain.liquidity_actions
WHERE lp_action IN ('add_liquidity','remove_liquidity')
AND address LIKE 'thor%'
GROUP BY 1, 2
), l2 AS (
SELECT DISTINCT address
FROM l
WHERE net_stake_units > 0
), f AS (
SELECT DISTINCT address
FROM silver_crosschain.ntr
WHERE address LIKE 'thor%'
), tot_pool AS (
SELECT pool_name
, SUM(net_stake_units) AS tot_stake_units
FROM l
WHERE net_stake_units > 0
GROUP BY 1
), pct_pool AS (
SELECT address
, l.pool_name
, net_stake_units
, tot_stake_units
, net_stake_units / tot_stake_units AS pct_pool
FROM l
JOIN tot_pool t ON t.pool_name = l.pool_name
WHERE net_stake_units > 0
), p AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp DESC) AS rn
FROM thorchain.pool_block_balances
WHERE block_timestamp >= CURRENT_DATE - 3
), pool_val AS (
SELECT pool_name
, rune_amount_usd + asset_amount_usd AS tvl
FROM p
WHERE rn = 1
), user_val AS (
SELECT pp.address
, pct_pool * tvl AS lp_val
FROM pct_pool pp
JOIN pool_val v ON v.pool_name = pp.pool_name
)
SELECT
-- date_trunc('year', month) AS month
CASE WHEN f.address IS NULL THEN 0 ELSE 1 END AS is_flipside
, COUNT(1) AS n
, AVG(CASE WHEN net_rune_amount > 0 OR l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_hold
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NULL THEN 1 ELSE 0 END) AS pct_rune_only
, AVG(CASE WHEN net_rune_amount <= 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_only
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_and_rune
, SUM( COALESCE(lp_val, 0)) AS lp_val
FROM b2
LEFT JOIN l2 ON l2.address = b2.address
LEFT JOIN f ON f.address = b2.address
LEFT JOIN user_val u ON u.address = b2.address
GROUP BY 1
WITH op_claims AS (
SELECT `from`
, block_time
, hash
, (
CAST(conv(substring(n, 1, 14), 16, 10) AS STRING) * exp0 * exp1 * exp1 * exp1
+ CAST(conv(substring(n, 15, 14), 16, 10) AS STRING) * exp0 * exp1 * exp1
+ CAST(conv(substring(n, 29, 14), 16, 10) AS STRING) * exp0 * exp1
+ CAST(conv(substring(n, 43, 14), 16, 10) AS STRING) * exp0
+ CAST(conv(substring(n, 57, 14), 16, 10) AS STRING)
)/POWER(10,18) AS claim_amount
FROM (
SELECT `from`
, hash
, lpad(substr(l.data,3,64), 64, '0') as n
, '4294967296' as exp0 -- 16^8
, '72057594037927936' as exp1 -- 16^14
, t.block_time
FROM optimism.transactions t
INNER JOIN optimism.logs l
ON t.hash = l.tx_hash
WHERE `to` = '0xfedfaf1a10335448b7fa0268f56d2b44dbd357de'
AND topic1 = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
AND t.block_time > '2022-05-25'
AND success
) a
LIMIT 1000
)
SELECT c.*
, CASE WHEN d.trader_a = `from` THEN 1 ELSE 0 END AS is_trader_a
FROM op_claims
LEFT JOIN dex.trades d ON d.block_time >= c.block_time AND (d.trader_a = `from` OR d.trader_b = `from`)
AND (
token_a_address = '\x4200000000000000000000000000000000000042'
OR token_b_address = '\x4200000000000000000000000000000000000042'
)
AND usd_amount > 0
AND token_a_amount_raw>0
AND token_b_amount_raw>0
SELECT *
FROM thorchain.prices
WHERE pool_name like '%.ETH%'
AND block_timestamp >= '2021-11-11'
ORDER BY block_timestamp, pool_name
LIMIT 10000
SELECT *
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 2
AND tx_id = 'URjxfD1SFfYwySGRVaD9iC3PX4b8mheC4LYuik9fY9uQV2kfyfr7gXkGHeQY4RHSaRwn7mN9mPQ5J8Y8mE5xEtt'
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
SELECT MAX(block_timestamp)
FROM solana.fact_transactions
Zac: CeVXxgDm6MR5biBzRqLW7U9uv47nfrZMYJ5BtTbGLPY3
thinking about the JJ idea a little more... what do you think about this... I have someone that I work closely with that is also deeply ingrained in the hip crypto news that fills this role with me. They are also data savvy but more importantly are very up to date with crypto.
The person that comes most to mind is Nhat (not sure what his bandwidth looks like), but Jessica could also fit the bill.
SELECT *
FROM THORCHAIN.LIQUIDITY_ACTIONS
LIMIT 100
SELECT
SELECT *
FROM thorchain.prices
WHERE 1=1
AND block_timestamp >= '2021-11-18 18:00:00'
AND block_timestamp <= '2021-11-18 20:00:00'
GROUP BY 1
WITH mints AS (
SELECT DISTINCT LOWER(project_name) AS collection
, address AS mint
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION
SELECT DISTINCT LOWER(project_name) AS collection
, mint
FROM solana.dim_nft_metadata
)
SELECT collection
, SUM(sales_amount) AS sales_amount
, MIN(block_timestamp::date) AS start_date
, MIN(CASE WHEN block_timestamp >= CURRENT_DATE - 3 THEN sales_amount ELSE NULL END) AS mm
, MAX(CASE WHEN block_timestamp >= CURRENT_DATE - 3 THEN sales_amount ELSE NULL END) AS mx
, COUNT(1) AS n_sales
FROM solana.fact_nft_sales s
JOIN mints m ON m.mint = s.mint
GROUP BY 1
ORDER BY 2 DESC
LIMIT 200
SELECT instructions[0]:programId AS programId, LEFT(instructions[0]:data::string, 4) AS data, COUNT(1) AS n
FROM solana.fact_transactions t
WHERE t.block_timestamp >= '2022-01-01'
AND t.block_timestamp <= '2022-01-02'
-- AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId like 'MEisE1HzehtrDpAAT8PnLHjpSSkRYakotTuJRPjTpo8'
AND
GROUP BY 1, 2
SELECT instructions[0]:programId AS programId, LEFT(instructions[0]:data::string, 4) AS data, *
FROM solana.fact_transactions t
WHERE t.block_timestamp >= '2022-01-01'
AND t.block_timestamp <= '2022-01-02'
-- AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId like 'MEisE1HzehtrDpAAT8PnLHjpSSkRYakotTuJRPjTpo8'
SELECT *
FROM solana.fact_transactions t
WHERE t.block_timestamp >= CURRENT_DATE - 2
AND tx_id = '3xpAMpkcuhKb6grqfmFTcquAKBuFHnRAd2C3goSvVyabFX28GeoJyARXnMjPgYjPDMqf6HzYTH1etF4W9BsbsSSk'
-- AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId like 'SHARKobtfF1bHhxD2eqftjHBdVSCbKo9JtgK71FhELP'
AND inner_instructions[0]:instructions[2]:parsed:info:destination::string = 'AoNVE2rKCE2YNA44V7NQt8N73JdPM7b6acZ2vzSpyPyi'
SELECT SPLIT(pool_name, '-')[0]::string AS pool_name
, COUNT(1) AS n_swaps
, AVG(from_amount_usd) AS avg_size
, SUM( CASE WHEN from_address = 'THOR.RUNE' THEN from_amount ELSE -to_amount END) AS net_rune
, SUM( CASE WHEN from_address = 'THOR.RUNE' THEN from_amount_usd ELSE -from_amount_usd END) AS net_rune_usd
FROM thorchain.swaps
WHERE 1=1
AND block_timestamp >= '2021-11-18 18:00:00'
AND block_timestamp <= '2021-11-18 20:00:00'
GROUP BY 1
SELECT MIN(block_timestamp)
FROM thorchain.swaps
WHERE pool_name like 'ETH.ETH%'
AND block_timestamp: >= '2021-09-17'
ORDER BY block_timestamp
LIMIT 1000
WITH base AS (
SELECT DISTINCT SPLIT(pool_name, '-')[0]::string AS pool_name
, block_timestamp::date AS date
, SUM(from_amount_usd) AS amt
FROM thorchain.swaps
GROUP BY 1, 2
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY date) AS rn
FROM base
)
SELECT b.*, COALESCE(c.date, CURRENT_DATE) AS n_date, DATEDIFF('days', b.date, n_date) AS lag, c.amt AS n_amt
FROM b2 b
LEFT JOIN b2 c ON c.pool_name = b.pool_name AND c.rn = b.rn + 1
SELECT *
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp)
FROM thorchain.swaps
SELECT *
FROM thorchain.prices
WHERE pool_name like 'ETH.ETH%'
AND block_timestamp >= '2021-10-21'
//AND block_timestamp <= '2021-10-10'
//AND ROUND(asset_usd) <> 8007
ORDER BY block_timestamp
LIMIT 1000
WITH tc AS (
SELECT height AS tc_block_id
, TO_TIMESTAMP(CAST(timestamp * POWER(10, -9) AS INT)) AS tc_block_timestamp
FROM thorchain_midgard_public.block_log
), base AS (
SELECT t.block_id AS terra_block_id
, t.block_timestamp AS terra_block_timestamp
, tc.*
, ROW_NUMBER() OVER (PARTITION BY t.block_id ORDER BY tc.tc_block_timestamp DESC) AS rn
FROM terra.blocks t
JOIN tc ON tc.tc_block_timestamp <= t.block_timestamp
AND tc.tc_block_timestamp >= DATEADD('hours', -1, t.block_timestamp)
WHERE t.block_id = 7544910
)
SELECT *
FROM base
WITH tc AS (
-- get each THORChain block
SELECT height AS tc_block_id
, TO_TIMESTAMP(CAST(timestamp * POWER(10, -9) AS INT)) AS tc_block_timestamp
FROM thorchain_midgard_public.block_log
), base AS (
SELECT t.block_id AS terra_block_id
, t.block_timestamp AS terra_block_timestamp
, tc.*
-- get the earliest THORChain block in the "Post-attack" timeframe
, ROW_NUMBER() OVER (PARTITION BY t.block_id ORDER BY tc.tc_block_timestamp ASC) AS rn
FROM terra.blocks t
JOIN tc ON tc.tc_block_timestamp >= t.block_timestamp
AND tc.tc_block_timestamp <= DATEADD('hours', 1, t.block_timestamp)
WHERE t.block_id = 7790000
)
SELECT *
FROM base
WHERE rn = 1
SELECT *
FROM terra.blocks t
WHERE t.block_id = 7790000
-- WHERE t.block_id = 7544910
SELECT rune_address
, asset_address
, rune_e8 * POWER(10, -8) AS rune_amt
, asset_e8 * POWER(10, -8) AS asset_amt
, stake_units
FROM thorchain.stake_events
WHERE block_id <= 5461281
AND pool_name like 'TERRA%'
UNION ALL
SELECT rune_address
, asset_address
, -rune_e8 * POWER(10, -8) AS rune_amt
, -asset_e8 * POWER(10, -8) AS asset_amt
, -stake_units AS stake_units
FROM thorchain.unstake_events
WHERE block_id <= 5461281
AND pool_name like 'TERRA%'
SELECT *
, height AS block_id
, TO_TIMESTAMP(timestamp) AS block_timestamp
FROM thorchain_midgard_public.block_log
LIMIT 100
WITH mints AS (
SELECT DISTINCT LOWER(project_name) AS collection
, mint
, token_id
FROM solana.dim_nft_metadata
WHERE token_id IS NOT NULL
), base AS (
SELECT m.collection
, m.token_id
, s.tx_id
, s.block_timestamp
, s.mint
, s.sales_amount AS price
FROM solana.fact_nft_sales s
JOIN mints m ON LOWER(m.mint) = LOWER(s.mint)
WHERE succeeded = TRUE
)
SELECT *
FROM base
PATH=/Library/Frameworks/Python.framework/Versions/3.10/bin
/Users/kellenblumberg/.nvm/versions/node/v16.10.0/bin
/Users/kellenblumberg/.cargo/bin
/Users/kellenblumberg/.local/share/solana/install/active_release/bin
/Users/kellenblumberg/Documents/google-cloud-sdk/bin
/Users/kellenblumberg/opt/anaconda3/bin
/Users/kellenblumberg/opt/anaconda3/condabin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/share/dotnet
~/.dotnet/tools
/Library/Apple/usr/bin
/Library/Frameworks/Mono.framework/Versions/Current/Commands
SELECT DISTINCT inner_instructions[0]:instructions[0]:parsed:info:authority::string AS address
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 7
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
AND ARRAY_SIZE(inner_instructions[0]:instructions) = 3
https://discordapp.com/api/oauth2/authorize?scope=bot&client_id=
PROPS_KEYPAIR=[79, 195, 45, 204, 181, 174, 129, 152, 73, 156, 16, 108, 98, 36, 250, 122, 218, 77, 24, 101, 32, 82, 39, 15, 58, 55, 163, 229, 102, 19, 190, 55 ]
% own RUNE before first bounty
% own RUNE currently
WITH base AS (
SELECT from_address AS address
, SUM(-rune_amount) AS net_rune
FROM thorchain.transfers
GROUP BY 1
UNION ALL
SELECT to_address AS address
, SUM(rune_amount) AS net_rune
FROM thorchain.transfers
GROUP BY 1
)
SELECT address
, SUM(net_rune) AS net_rune
FROM base
GROUP BY 1
SELECT from_address AS address
, SPLIT(pool_name, '-')[0]::string AS pool_name
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2
SELECT block_timestamp::date AS date
, COUNT(1) AS n
, SUM(RUNE_AMOUNT) AS RUNE_AMOUNT
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
AND pool_name LIKE 'TERRA%'
GROUP BY 1
ssh -i "~/git/props/aws/props-aws.pem" ubuntu@34.204.49.162
with add as (
SELECT
from_address as address
, pool_name
, block_timestamp::date AS date
, sum(stake_units) as net_units
, sum(rune_amount) as net_rune_amount
, sum(asset_amount) as net_asset_amount
FROM thorchain.liquidity_actions
WHERE lp_action = 'add_liquidity'
AND pool_name like '%TERRA%'
AND address like 'thor%'
GROUP BY 1, 2, 3
), remove AS (
SELECT
from_address as address
, pool_name
, block_timestamp::date AS date
, sum(-stake_units) as net_units
, sum(-rune_amount) as net_rune_amount
, sum(-asset_amount) as net_asset_amount
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
AND pool_name like '%TERRA%'
AND address like 'thor%'
GROUP BY 1, 2, 3
), b1 AS (
SELECT *
FROM add
UNION ALL
SELECT *
FROM remove
), b2 AS (
SELECT address
, pool_name
, date
, SUM(net_units) AS net_units
, SUM(net_rune_amount) AS net_rune_amount
, SUM(net_asset_amount) AS net_asset_amount
FROM b1
GROUP BY 1, 2, 3
), b3 AS (
SELECT *
, SUM(net_units) OVER (PARTITION BY address, pool_name ORDER BY date) AS cumu_net_units
, SUM(net_rune_amount) OVER (PARTITION BY address, pool_name ORDER BY date) AS cumu_net_rune_amount
, SUM(net_asset_amount) OVER (PARTITION BY address, pool_name ORDER BY date) AS cumu_net_asset_amount
FROM b2
), b4 AS (
SELECT *
, CASE WHEN cumu_net_units > 0 AND cumu_net_units = net_units THEN 1
WHEN cumu_net_units <= 0 AND net_units < 0 THEN -1
ELSE 0 END
AS chg_in_lpers
FROM b3
), b5 AS (
SELECT pool_name
, date
, SUM(chg_in_lpers) AS net_lpers
FROM b4
GROUP BY 1, 2
)
SELECT *
, SUM(net_lpers) OVER (PARTITION BY pool_name ORDER BY date) AS cumu_lpers
FROM b5
SELECT
COALESCE(address, '') AS address
, pool_name
, sum(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) as net_stake_units
, sum(CASE WHEN lp_action = 'add_liquidity' THEN rune_amount ELSE -rune_amount END) as net_rune_amount
, sum(CASE WHEN lp_action = 'add_liquidity' THEN asset_amount ELSE -asset_amount END) as net_asset_amount
, sum(asset_amount) as net_asset_amount
FROM thorchain.liquidity_actions
WHERE lp_action IN ('add_liquidity','remove_liquidity')
AND pool_name like '%TERRA%'
GROUP BY 1, 2
GROUP BY 1, 2, 3
), remove AS (
SELECT
from_address as address
, pool_name
, block_timestamp::date AS date
, sum(-stake_units) as net_units
, sum(-rune_amount) as net_rune_amount
, sum(-asset_amount) as net_asset_amount
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
AND pool_name like '%TERRA%'
AND address like 'thor%'
GROUP BY 1, 2, 3
)
SELECT MAX(block_timestamp)
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
AND pool_name like '%TERRA%'
AND address like 'thor%'
combo as (select
a.address as addresses,
a.poolname as pools,
a.units as add_units,
b.units as remove_units,
a.units - ifnull(b.units, 0) as net_add
from add a
left join remove b
on (a.address = b.address and a.poolname = b.poolname)
where net_add > 0
group by 1,2,3,4),
earliest_still_add as (select from_address,
min(date_trunc('month',block_timestamp)) as earliest_month
from thorchain.liquidity_actions
where from_address in (select addresses from combo)
and lp_action = 'add_liquidity'
group by 1),
-- total_added
add_liq as (select
from_address as address,
tx_id,
block_timestamp,
pool_name as poolname,
sum(stake_units) as units
from thorchain.liquidity_actions
where lp_action = 'add_liquidity'
and from_address like 'thor%'
group by 1,2,3,4),
earliest_total_add as (select address,
min(date_trunc('month', block_timestamp)) as earliest_month
from add_liq
group by address)
select count(distinct(from_address)) as wallets_still_providing_liquidity, 'wallets_still_providing_liquidity'
from earliest_still_add
union
select count(distinct(address)) - count(distinct(from_address)) as total_wallets_removed_liquidity, 'total_wallets_removed_liquidity'
from earliest_total_add, earliest_still_add
SELECT record_content[0]:collection AS collection
, COUNT(1) AS n
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
GROUP BY 1
ORDER BY 2 DESC
WITH base AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-rankings-%'
AND record_content[0]:collection = 'Solana Monkey Business'
), base2 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS old_floor
, t.value:cur_sd AS old_sd
, t.value:deal_score_rank AS deal_score_rank
, t.value:fair_market_price AS old_fair_market_price
, t.value:lin_coef AS lin_coef
, t.value:log_coef AS log_coef
, t.value:rarity_rank AS rarity_rank
, t.value:token_id AS token_id
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base
, LATERAL FLATTEN(
input => record_content
) t
JOIN solana.dim_nft_metadata m ON m.token_id = t.value:token_id AND m.project_name = t.value:collection
WHERE m.mint = '${mint}'
), base3 AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-floors-%'
), base4 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS new_floor
, b.*
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base3 b
, LATERAL FLATTEN(
input => record_content
) t
), base5 AS (
SELECT b2.*
, b4.new_floor
FROM base2 b2
JOIN base4 b4 ON b2.collection = b4.collection AND b4.rn = 1
WHERE b2.rn = 1
), base6 AS (
SELECT *
, old_sd * new_floor / old_floor AS cur_sd
, old_fair_market_price + ((new_floor - old_floor) * lin_coef) + (( new_floor - old_floor) * log_coef * old_fair_market_price / old_floor) AS new_fair_market_price
FROM base5
), b7 AS (
SELECT collection
, mint
, token_id
, deal_score_rank
, rarity_rank
, new_floor AS floor_price
, ROUND(CASE WHEN new_fair_market_price < floor_price THEN floor_price ELSE new_fair_market_price END, 2) AS fair_market_price
, ROUND(CASE WHEN new_fair_market_price - cur_sd < floor_price * 0.975 THEN floor_price * 0.975 ELSE new_fair_market_price - cur_sd END, 2) AS price_low
, ROUND(CASE WHEN new_fair_market_price + cur_sd < floor_price * 1.025 THEN floor_price * 1.025 ELSE new_fair_market_price + cur_sd END, 2) AS price_high
FROM base6
)
WITH base AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-rankings-%'
), base2 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS old_floor
, t.value:cur_sd AS old_sd
, t.value:deal_score_rank AS deal_score_rank
, t.value:fair_market_price AS old_fair_market_price
, t.value:lin_coef AS lin_coef
, t.value:log_coef AS log_coef
, t.value:rarity_rank AS rarity_rank
, t.value:token_id AS token_id
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base
, LATERAL FLATTEN(
input => record_content
) t
), base3 AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-floors-%'
), base4 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS new_floor
, b.*
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base3 b
, LATERAL FLATTEN(
input => record_content
) t
), metadata AS (
SELECT project_name AS collection
, token_id
, mint
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY created_at_timestamp DESC) AS rn
FROM solana.dim_nft_metadata
WHERE mint IS NOT NULL
), base5 AS (
SELECT b2.*
, m.mint
, b4.new_floor
FROM base2 b2
JOIN base4 b4 ON b2.collection = b4.collection AND b4.rn = 1
LEFT JOIN metadata m ON m.token_id = b2.token_id AND m.collection = b2.collection AND m.rn = 1
WHERE b2.rn = 1
), base6 AS (
SELECT *
, old_sd * new_floor / old_floor AS cur_sd
, old_fair_market_price + ((new_floor - old_floor) * lin_coef) + (( new_floor - old_floor) * log_coef * old_fair_market_price / old_floor) AS new_fair_market_price
FROM base5
), b7 AS (
SELECT mint
, COUNT(1) AS n
FROM base6
GROUP BY 1
)
SELECT collection
, b.mint
, n
, token_id
, deal_score_rank
, rarity_rank
, new_floor AS floor_price
, ROUND(CASE WHEN new_fair_market_price < floor_price THEN floor_price ELSE new_fair_market_price END, 2) AS fair_market_price
, ROUND(CASE WHEN new_fair_market_price - cur_sd < floor_price * 0.975 THEN floor_price * 0.975 ELSE new_fair_market_price - cur_sd END, 2) AS price_low
, ROUND(CASE WHEN new_fair_market_price + cur_sd < floor_price * 1.025 THEN floor_price * 1.025 ELSE new_fair_market_price + cur_sd END, 2) AS price_high
FROM base6 b
JOIN b7 ON b7.mint = b.mint
SELECT *
FROM silver_crosschain.ntr
WHERE symbol = 'SUSHI'
//AND address = '0xa677bdf3a32ca287419343a6a2057fd4362ea996'
//WHERE tx_id = 'C2C6997EBFA385F621FB2FA684FE62AA717719A833286385FB00FE8DB49CA1FF'
ORDER BY xfer_date, reward DESC
LIMIT 1000
-- amt, timeframe, grouping, token, tot, pct, hodl_pct, metric, is_flipside
WITH base AS (
SELECT address
, symbol
, MIN(xfer_date) AS mn_date
FROM silver_crosschain.ntr
GROUP BY 1
)
SELECT n.address
, n.symbol
, DATEDIFF('days', mn_date, xfer_date) AS days
, reward
, hodl
, unlabeled_transfer
, stake
, cex_deposit
, nft_buy
, dex_swap
FROM silver_crosschain.ntr n
JOIN base b ON b.address = n.address AND b.symbol = n.symbol
-- Automatic row-sampling now built in.
-- As always, beware estimate errors from missing Flipside identical rows.
-- Check example block balances with the below URL format:
-- https://thornode.ninerealms.com/bank/balances/[address]?height=[block_id]
/*
--'Run Selected' to check the transfer events sum for just one block.
SELECT *
FROM thorchain.transfer_events
WHERE (CONCAT(to_address, from_address) LIKE '%thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt%')
AND (block_id = 5205058)
*/
WITH
target AS
(
SELECT
TRIM('thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt') AS target_address,
SPLIT('THOR.RUNE', '-')[0] AS target_asset,
10000 AS target_rows
--For displaying full ranges in Flipside, this should be below 100000 (one hundred thousand).
--In practice, there may be up to two extra rows per asset type (starting and ending non-zero balance estimates)
),
/*
thor1v8ppstuf6e3x0r4glqc68d5jqcs2tf38cg2q6y [Minter Module - THOR.RUNE Switcher (from IOU.RUNE) and Synth Minter/Burner Module ('Genesis address')]
thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt [Reserve Module]
thor17gw75axcnr8747pkanye45pnrwk7p9c3cqncsv [Bond Module]
thor1g98cy3n9mmjrpn0sxmn63lztelera37n8n67c0 [Pool Module]
thor160yye65pf9rzwrgqmtgav69n6zlsyfpgm9a7xk is the THORSwap affiliate fee wallet.
*/
SELECT SPLIT(pool_name, '-')[0] AS pool_name
, SUM(CASE WHEN from_asset LIKE '%/%' THEN -from_amount ELSE to_amount END) AS net_amt
FROM thorchain.swaps
WHERE (from_asset = 'THOR.RUNE' AND to_asset LIKE '%/%')
OR (to_asset = 'THOR.RUNE' AND from_asset LIKE '%/%')
group by 1
burn as (select
REGEXP_SUBSTR (pool_name,'[^\.]+',1,1) as chain,
-- REGEXP_SUBSTR (pool_name,'[^\.]+',1,2) as assets,
count(distinct tx_id) as NoOfBURNTransactions,
sum(to_amount) as amountBURN,
sum(to_amount_usd) as AmountBURNUSD
from thorchain.swaps
WHERE
to_asset = 'THOR.RUNE' AND from_asset LIKE '%/%'
group by 1)
WITH a AS (
SELECT from_address AS address
, pool_name
, block_timestamp::date AS date
, SUM( CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS lp_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2, 3
), cumu1 AS (
SELECT address
, pool_name
, date
, lp_units
, SUM(lp_units) OVER (PARTITION BY address, pool_name ORDER BY date) AS cumu_units
FROM a
), cumu AS (
SELECT *
, cumu_units - lp_units AS prv_units
FROM cumu1
), mn1 AS (
SELECT address
, pool_name
, MAX(date) AS date
FROM cumu
WHERE prv_units <= 0
GROUP BY 1, 2
UNION ALL
SELECT address
, pool_name
, MIN(date) AS date
FROM a
GROUP BY 1, 2
), mn AS (
SELECT address
, pool_name
, MAX(date) AS date
FROM mn1
GROUP BY 1, 2
), cur AS (
SELECT address
, pool_name
, SUM(lp_units) AS lp_units
FROM a
GROUP BY 1, 2
HAVING SUM(lp_units) > 0
), tot AS (
SELECT pool_name
, SUM(lp_units) AS tot_units
FROM cur
GROUP BY 1
), tvl1 AS (
SELECT pool_name
, asset_amount_usd + rune_amount_usd AS tvl
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp DESC) AS rn
FROM thorchain.pool_block_balances
WHERE block_timestamp >= CURRENT_DATE - 10
), tvl AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY tvl DESC) AS pool_rank
FROM tvl1
WHERE rn = 1
), base AS (
SELECT c.address
, SPLIT( c.pool_name, '-' )[0]::string AS pool_name
, SPLIT( c.pool_name, '.' )[0]::string AS chain
, c.lp_units / t.tot_units AS pct
, mn.date
, DATEDIFF('days', mn.date, CURRENT_TIMESTAMP) AS days
, mn.date
, tvl.tvl
, tvl.pool_rank
, pct * days AS w_days
FROM cur c
JOIN tot t ON t.pool_name = c.pool_name
LEFT JOIN mn ON mn.pool_name = c.pool_name AND mn.address = c.address
JOIN tvl ON tvl.pool_name = c.pool_name
)
SELECT pool_name
, chain
, tvl
, pool_rank
, SUM(pct) AS pct
, SUM(w_days) AS w_days
FROM base
GROUP BY 1, 2, 3, 4
with LP_ONE AS (
SELECT
DISTINCT ( from_address ) as wallet_added, pool_name, sum(stake_units) as amount_added
FROM thorchain.liquidity_actions
WHERE lp_action = 'add_liquidity'
GROUP BY wallet_added,pool_name
),
LP_TWO AS (
SELECT
DISTINCT(from_address) as wallet_removed, pool_name, sum(stake_units) as amount_removed
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
GROUP BY wallet_removed,pool_name
),
LP_THREE AS (
SELECT
x.pool_name, x.wallet_added, amount_added-ifnull(amount_removed,0) as remaining
FROM LP_ONE x
FULL OUTER join LP_TWO y
ON x.wallet_added = y.wallet_removed and x.pool_name = y.pool_name
WHERE remaining > 0
GROUP BY x.pool_name,wallet_added,remaining
),
LP_FOUR AS (
SELECT
block_timestamp::date as date, x.pool_name, x.wallet_added
FROM LP_THREE x
join thorchain.liquidity_actions y
ON x.pool_name = y.pool_name and x.wallet_added = y.from_address
WHERE lp_action = 'add_liquidity'
),
LP_FIVE AS (
SELECT
pool_name, wallet_added, min (date) as first_added
FROM LP_FOUR
GROUP BY pool_name,wallet_added
)
SELECT
split(pool_name, '-')[0] as "Pool Name", avg(datediff(day, first_added, CURRENT_DATE)) as "Average LP day"
FROM LP_FIVE
GROUP BY "Pool Name"
ORDER BY "Average LP day" ASC
with a as (
select
from_address,
pool_name,
SUM(case when lp_action like 'add_liquidity' then stake_units else -1 * stake_units end) as lp_units
from thorchain.liquidity_actions
where not from_address is null
group by 1,2
), b as (
select
pool_name as p1,
avg((rune_amount_usd + asset_amount_usd)/stake_units) as ppu
from thorchain.liquidity_actions
where block_timestamp > CURRENT_DATE - 2
group by 1
), c as (
select
from_address,
pool_name,
lp_units * ppu as liquidity_provided_usd,
case when liquidity_provided_usd < 1000 then 'Shrimp'
when liquidity_provided_usd < 10000 then 'Fish'
when liquidity_provided_usd < 100000 then 'Shark'
when liquidity_provided_usd < 1000000 then 'Whale' end as balance_group
from a
left outer join b
ON p1 = pool_name
where not balance_group is null
), d as (
select
from_address as fa1,
pool_name,
min(date_trunc('day', block_timestamp)) as min_day
from thorchain.liquidity_actions
group by 1, 2
), e as (
select
from_address,
c.pool_name,
liquidity_provided_usd,
DATEDIFF(week, min_day, CURRENT_DATE) as lp_age,
balance_group
from c
left outer join d on fa1 = from_address AND d.pool_name = c.pool_name
)
select
-- pool_name,
-- balance_group,
--- avg(lp_age) as avg_lp_age
pool_name,
SUM(lp_age * liquidity_provided_usd) / sum(liquidity_provided_usd) LPer_age
from e
where lp_age > 0
and liquidity_provided_usd > 0
group by 1
changes AS
(
SELECT block_timestamp, block_id,
SPLIT(asset, '-')[0] AS asset,
(
POWER(10,-8) * CASE
WHEN from_address = (SELECT target_address FROM target) THEN -1 * amount_e8
WHEN to_address = (SELECT target_address FROM target) THEN amount_e8
ELSE 0 END
) AS change
FROM thorchain.transfer_events
WHERE (change <> 0) AND (from_address <> to_address)
),
blockchanges AS
( --To filter out cases where something flows through an address without changing its balance.
SELECT block_timestamp, block_id, asset,
CAST(SUM(change) AS DECIMAL(17,8)) AS blockchange,
FLOOR(blockchange) AS integers,
CAST(blockchange - FLOOR(blockchange) AS DECIMAL(17,8)) AS decimals
FROM changes
GROUP BY block_timestamp, block_id, asset
HAVING blockchange <> 0
),
cumulative1 AS
(
SELECT DISTINCT block_timestamp, block_id, asset,
SUM(blockchange) OVER(PARTITION BY asset ORDER BY block_id ASC) AS balance_estimate,
CAST(SUM(blockchange) OVER(PARTITION BY asset ORDER BY block_id ASC) AS DECIMAL(17,8)) AS balance_estimate_2,
--Note that a CAST( AS DECIMAL(17,8)) here breaks decimals_estimate too, somehow.
--Bewildering, since decimals_estimate does not use balance_estimate here.
SUM(integers) OVER(PARTITION BY asset ORDER BY block_id ASC) AS integers_estimate1,
SUM(decimals) OVER(PARTITION BY asset ORDER BY block_id ASC) AS decimals_estimate1,
integers_estimate1 + FLOOR(decimals_estimate1) AS integers_estimate,
CAST(decimals_estimate1 - FLOOR(decimals_estimate1) AS DECIMAL(17,8)) AS decimals_estimate
--Note that this CAST is not necessary if selecting from cumulative1 directly,
--but is necessary if selecting from cumulative which selects from cumulative1.
FROM blockchanges
),
cumulative AS
(
SELECT DISTINCT block_timestamp, block_id, asset,
balance_estimate, balance_estimate_2, integers_estimate, decimals_estimate
FROM cumulative1
),
rowcounting AS
(
SELECT
COUNT(cumulative.*) AS rowcount,
MAX(target_rows) AS target_rows
FROM cumulative, target
)
SELECT cumulative.*
FROM cumulative, rowcounting
WHERE block_id BETWEEN 4786560 AND 4786561
--For checking particular blocks, commenting out the below QUALIFY section with slash-asterisk comments.
--Note 4786560, 4786561 for balance_estimate inaccuracy.
/*
QUALIFY (
(MOD((ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id ASC)), CEIL(rowcount/target_rows)) = 0)
--Sampling for data-handling. COUNT(block_id)
OR (ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id ASC) = 1)
--Include the first balance estimate for each asset.
OR (ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id DESC) = 1)
--Include the last balance estimate for each asset.
)
*/
ORDER BY block_id DESC
WITH a AS (
SELECT from_address AS address
, SUM(-rune_amount) AS amt
FROM thorchain.transfers
WHERE from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_id <= 4786561
GROUP BY 1
UNION ALL
SELECT to_address AS address
, SUM(rune_amount) AS amt
FROM thorchain.transfers
WHERE to_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_id <= 4786561
GROUP BY 1
)
SELECT address
, SUM(amt) AS amt
FROM a
GROUP BY 1
ORDER BY 2
WITH a AS (
SELECT from_address AS address
, SUM(-rune_amount) AS amt
FROM flipside_dev_db.thorchain.transfers
WHERE from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_id <= 4786561
GROUP BY 1
UNION ALL
SELECT to_address AS address
, SUM(rune_amount) AS amt
FROM flipside_dev_db.thorchain.transfers
WHERE to_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_id <= 4786561
GROUP BY 1
)
SELECT address
, SUM(amt) AS amt
FROM a
GROUP BY 1
ORDER BY 2
113254564
113254489
SELECT max(block_timestamp)
FROM BRONZE_MIDGARD_2_6_9_20220405.MIDGARD_BLOCK_LOG
WHERE height = 4786561
WITH a AS (
SELECT from_addr AS address
, SUM(-amount_e8) * POWER(10, -8) AS amt
FROM bronze_midgard_2_6_9_20220405.midgard_transfer_events
WHERE from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_timestamp <= 1647916734066108230
GROUP BY 1
UNION ALL
SELECT to_addr AS address
, SUM(amount_e8) * POWER(10, -8) AS amt
FROM bronze_midgard_2_6_9_20220405.midgard_transfer_events
WHERE to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt'
AND block_timestamp <= 1647916734066108230
GROUP BY 1
)
SELECT address
, SUM(amt) AS amt
FROM a
GROUP BY 1
ORDER BY 2
WITH base AS (
SELECT from_addr AS from_address, to_addr AS to_address, asset, amount_e8 * POWER(10, -8) AS rune_amount, TO_TIMESTAMP(block_timestamp) AS block_timestamp, COUNT(1) AS n
FROM bronze_midgard_2_6_9_20220405.midgard_transfer_events
WHERE (to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
GROUP BY 1, 2, 3, 4, 5
), gold AS (
SELECT from_address, to_address, asset, rune_amount, block_timestamp, COUNT(1) AS n2
FROM thorchain.transfer_events
WHERE (to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
GROUP BY 1, 2, 3, 4, 5
)
SELECT b.*, g.n2
FROM base b
LEFT JOIN gold g
ON g.from_address = b.from_address
AND g.to_address = b.to_address
AND g.asset = b.asset
AND g.rune_amount = b.rune_amount
AND g.block_timestamp = b.block_timestamp
AND b.n <> COALESCE(g.n2, 0)
113254564
113254489
/*
--'Run Selected' to check the transfer events sum for just one block.
SELECT *
FROM thorchain.transfer_events
WHERE (CONCAT(to_address, from_address) LIKE '%thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt%')
AND (block_id = 5205058)
*/
WITH
target AS
(
SELECT
TRIM('thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt') AS target_address,
SPLIT('THOR.RUNE', '-')[0] AS target_asset,
10000 AS target_rows
--For displaying full ranges in Flipside, this should be below 100000 (one hundred thousand).
--In practice, there may be up to two extra rows per asset type (starting and ending non-zero balance estimates)
),
/*
thor1v8ppstuf6e3x0r4glqc68d5jqcs2tf38cg2q6y [Minter Module - THOR.RUNE Switcher (from IOU.RUNE) and Synth Minter/Burner Module ('Genesis address')]
thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt [Reserve Module]
thor17gw75axcnr8747pkanye45pnrwk7p9c3cqncsv [Bond Module]
thor1g98cy3n9mmjrpn0sxmn63lztelera37n8n67c0 [Pool Module]
thor160yye65pf9rzwrgqmtgav69n6zlsyfpgm9a7xk is the THORSwap affiliate fee wallet.
*/
changes AS
(
SELECT block_timestamp, block_id,
SPLIT(asset, '-')[0] AS asset,
(
POWER(10,-8) * CASE
WHEN from_address = (SELECT target_address FROM target) THEN -1 * amount_e8
WHEN to_address = (SELECT target_address FROM target) THEN amount_e8
ELSE 0 END
) AS change
FROM thorchain.transfer_events
WHERE (change <> 0) AND (from_address <> to_address)
),
blockchanges AS
( --To filter out cases where something flows through an address without changing its balance.
SELECT block_timestamp, block_id, asset,
CAST(SUM(change) AS DECIMAL(17,8)) AS blockchange,
FLOOR(blockchange) AS integers,
CAST(blockchange - FLOOR(blockchange) AS DECIMAL(17,8)) AS decimals
FROM changes
GROUP BY block_timestamp, block_id, asset
HAVING blockchange <> 0
),
cumulative1 AS
(
SELECT DISTINCT block_timestamp, block_id, asset,
SUM(blockchange) OVER(PARTITION BY asset ORDER BY block_id ASC) AS balance_estimate,
--CAST(SUM(blockchange) OVER(PARTITION BY asset ORDER BY block_id ASC) AS DECIMAL(17,8)) AS balance_estimate,
--Note that a CAST( AS DECIMAL(17,8)) here breaks decimals_estimate too, somehow.
--Bewildering, since decimals_estimate does not use balance_estimate here.
SUM(integers) OVER(PARTITION BY asset ORDER BY block_id ASC) AS integers_estimate1,
SUM(decimals) OVER(PARTITION BY asset ORDER BY block_id ASC) AS decimals_estimate1,
integers_estimate1 + FLOOR(decimals_estimate1) AS integers_estimate,
CAST(decimals_estimate1 - FLOOR(decimals_estimate1) AS DECIMAL(17,8)) AS decimals_estimate
--Note that this CAST is not necessary if selecting from cumulative1 directly,
--but is necessary if selecting from cumulative which selects from cumulative1.
FROM blockchanges
),
cumulative AS
(
SELECT DISTINCT block_timestamp, block_id, asset,
balance_estimate, integers_estimate, decimals_estimate
FROM cumulative1
),
rowcounting AS
(
SELECT
COUNT(cumulative.*) AS rowcount,
MAX(target_rows) AS target_rows
FROM cumulative, target
)
SELECT cumulative.*
FROM cumulative, rowcounting
WHERE block_id BETWEEN 4786560 AND 4786561
--For checking particular blocks, commenting out the below QUALIFY section with slash-asterisk comments.
--Note 4786560, 4786561 for balance_estimate inaccuracy.
/*
QUALIFY (
(MOD((ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id ASC)), CEIL(rowcount/target_rows)) = 0)
--Sampling for data-handling. COUNT(block_id)
OR (ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id ASC) = 1)
--Include the first balance estimate for each asset.
OR (ROW_NUMBER() OVER(PARTITION BY asset ORDER BY block_id DESC) = 1)
--Include the last balance estimate for each asset.
)
*/
ORDER BY block_id DESC
SELECT block_timestamp::date AS date
, SUM(il_protection_usd) AS il_protection_usd
FROM THORCHAIN.LIQUIDITY_ACTIONS
WHERE il_protection_usd > 0
GROUP BY 1
WITH a AS (
SELECT from_address AS address
, SUM(-rune_amount) AS amt
FROM thorchain.transfers
GROUP BY 1
UNION ALL
SELECT to_address AS address
, SUM(rune_amount) AS amt
FROM thorchain.transfers
GROUP BY 1
)
SELECT address
, SUM(amt) AS amt
FROM a
GROUP BY 1
ORDER BY 2
SELECT *
FROM thorchain.prices
ORDER BY block_timestamp DESC
LIMIT 100
SELECT split(memo, ':')[1]::string AS address
, *
FROM thorchain.bond_events
WHERE address = 'thor1xd4j3gk9frpxh8r22runntnqy34lwzrdkazldh'
SELECT split(memo, ':')[1]::string AS address
, *
FROM thorchain.bond_events
SELECT split(memo, ':')[1]::string AS address
, *
FROM thorchain.bond_events
WHERE address = 'thor1xd4j3gk9frpxh8r22runntnqy34lwzrdkazldh'
SELECT COUNT(1), MAX(block_timestamp)
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events
SELECT COUNT(1), MAX(block_timestamp)
FROM midgard.bond_events
WHERE block_timestamp <= 1655955911000000000
WHERE block_timestamp <= 1655986950000000000
SELECT COUNT(1), MAX(block_timestamp)
FROM thorchain.bond_events
SELECT split(memo, ':')[1]::string AS address
, split(to_address, '\n') AS detail
, e8 * POWER(10, -8) AS amt
, asset_e8 * POWER(10, -8) AS asset_amt
, CASE WHEN bond_type = 'bond_paid' THEN amt ELSE -amt END AS net_amt
, SUM(net_amt) OVER (ORDER BY block_timestamp, net_amt DESC) AS cumu_net_amt
, *
FROM thorchain.bond_events
WHERE (
address = 'thor12qwtrq4njj2s29gq56jun43dvxalejaksptqqn'
OR from_address like '%thor12qwtrq4njj2s29gq56jun43dvxalejaksptqqn%'
OR to_address like '%thor12qwtrq4njj2s29gq56jun43dvxalejaksptqqn%'
)
ORDER BY block_timestamp
SELECT split(memo, ':')[1]::string AS address
, SUM(CASE WHEN bond_type = 'bond_paid' THEN e8 ELSE -e8 END) * POWER(10, -8) AS amt
FROM thorchain.bond_events
WHERE bond_type IN ('bond_paid','bond_returned')
GROUP BY 1
SELECT *
FROM thorchain.update_node_account_status_events
WHERE node_address = 'thor100dyywzrxaqsrlamkd7ssspc8ppf46306farkz'
SELECT day
, bonding_earnings
, liquidity_earnings
FROM thorchain.block_rewards
WITH s AS (
SELECT node_address AS address
, current_status
, block_timestamp::date AS date
, ROW_NUMBER() OVER (PARTITION BY node_address, date ORDER BY block_timestamp DESC) AS rn
FROM thorchain.update_node_account_status_events
), a AS (
SELECT split(memo, ':')[1]::string AS address
, block_timestamp::date AS date
, SUM(CASE WHEN bond_type = 'bond_paid' THEN e8 ELSE -e8 END) * POWER(10, -8) AS amt
FROM thorchain.bond_events
WHERE bond_type IN ('bond_paid','bond_returned')
GROUP BY 1, 2
), base AS (
SELECT a.*, SUM(amt) OVER (PARTITION BY address ORDER BY date) AS cumu_amt
FROM a
), calendar AS (
SELECT DISTINCT date FROM base
UNION
SELECT DISTINCT date FROM s
), joined AS (
SELECT c.date
, b.date AS amt_date
, b.address
, b.cumu_amt
, ROW_NUMBER() OVER (PARTITION BY address, c.date ORDER BY b.date DESC) AS rn
FROM calendar c
JOIN base b ON b.date <= c.date
), j2 AS (
SELECT j.address
, j.date
, date_trunc('month', j.date) AS month
, j.amt_date
, s.date AS status_date
, j.cumu_amt
, s.current_status
, ROW_NUMBER() OVER (PARTITION BY j.address, j.date ORDER BY s.date DESC) AS rn
FROM joined j
JOIN s ON s.address = j.address AND s.date <= j.date
WHERE j.rn = 1
), b2 AS (
SELECT * FROM j2
WHERE rn = 1
AND current_status = 'Active'
), b3 AS (
SELECT address
, current_status
, month
, cumu_amt
, ROW_NUMBER() OVER (PARTITION BY address, month ORDER BY date DESC) AS rn
FROM j2
WHERE rn = 1
), pooled AS (
SELECT pool_name
, date_trunc('month', block_timestamp) AS month
, rune_amount AS pooled_rune
, ROW_NUMBER() OVER (PARTITION BY pool_name, month ORDER BY block_timestamp DESC) AS rn
FROM thorchain.pool_block_balances
), bonded AS (
SELECT month
, SUM(cumu_amt) AS active_bonded_rune
FROM b3
WHERE rn = 1 AND current_status = 'Active'
GROUP BY 1
), p AS (
SELECT month
, SUM(pooled_rune) AS pooled_rune
FROM pooled
WHERE rn = 1
GROUP BY 1
), rewards AS (
SELECT date_trunc('month', day::date) AS month
, SUM(bonding_earnings::float) AS bonding_earnings
, SUM(liquidity_earnings::float) AS liquidity_earnings
FROM thorchain.block_rewards
WHERE day != '2021-07-15'
GROUP BY 1
)
SELECT p.*
, b.active_bonded_rune, b.active_bonded_rune / p.pooled_rune AS bonded_to_pooled_ratio
, bonding_earnings / b.active_bonded_rune AS bonded_rewards_ratio
, liquidity_earnings / b.pooled_rune AS lp_rewards_ratio
FROM p
JOIN bonded b ON b.month = p.month
JOIN rewards r ON r.month = p.month
WITH s AS (
SELECT node_address AS address
, current_status
, block_timestamp::date AS date
, ROW_NUMBER() OVER (PARTITION BY node_address, date ORDER BY block_timestamp DESC) AS rn
FROM thorchain.update_node_account_status_events
-- WHERE address = 'thor12fw3syyy4ff78llh3fvhrvdy7xnqlegvru7seg'
), a AS (
SELECT split(memo, ':')[1]::string AS address
, block_timestamp::date AS date
, SUM(CASE WHEN bond_type = 'bond_paid' THEN e8 ELSE -e8 END) * POWER(10, -8) AS amt
FROM thorchain.bond_events
WHERE bond_type IN ('bond_paid','bond_returned')
-- AND address = 'thor12fw3syyy4ff78llh3fvhrvdy7xnqlegvru7seg'
GROUP BY 1, 2
), base AS (
SELECT a.*, SUM(amt) OVER (PARTITION BY address ORDER BY date) AS cumu_amt
FROM a
), calendar AS (
SELECT DISTINCT date FROM base
UNION
SELECT DISTINCT date FROM s
), joined AS (
SELECT c.date
, b.date AS amt_date
, b.address
, b.cumu_amt
, ROW_NUMBER() OVER (PARTITION BY address, c.date ORDER BY b.date DESC) AS rn
FROM calendar c
JOIN base b ON b.date <= c.date
), j2 AS (
SELECT j.address
, j.date
, j.amt_date
, s.date AS status_date
, j.cumu_amt
, s.current_status
, ROW_NUMBER() OVER (PARTITION BY j.address, j.date ORDER BY s.date DESC) AS rn
FROM joined j
JOIN s ON s.address = j.address AND s.date <= j.date
WHERE j.rn = 1
)
SELECT * FROM j2
WHERE rn = 1
WITH s AS (
SELECT node_address AS address
, current_status
, block_timestamp::date AS date
, ROW_NUMBER() OVER (PARTITION BY node_address, date ORDER BY block_timestamp DESC) AS rn
FROM thorchain.update_node_account_status_events
), a AS (
SELECT split(memo, ':')[1]::string AS address
, block_timestamp::date AS date
, SUM(CASE WHEN bond_type = 'bond_paid' THEN e8 ELSE -e8 END) * POWER(10, -8) AS amt
FROM thorchain.bond_events
WHERE bond_type IN ('bond_paid','bond_returned')
GROUP BY 1, 2
), base AS (
SELECT a.*, SUM(amt) OVER (PARTITION BY address ORDER BY date) AS cumu_amt
FROM a
), calendar AS (
SELECT DISTINCT date FROM base
), joined AS (
SELECT c.date
, b.address
, b.cumu_amt
, ROW_NUMBER() OVER (PARTITION BY address ORDER BY b.date DESC) AS rn
FROM calendar c
JOIN base b ON b.date <= c.date
), j2 AS (
SELECT j.address
, j.date
, j.cumu_amt
, s.current_status
, ROW_NUMBER() OVER (PARTITION BY j.address, j.date ORDER BY s.date DESC) AS rn
FROM joined j
JOIN s ON s.address = j.address AND s.date <= j.date
)
SELECT * FROM j2 WHERE rn = 1
WITH base AS (
SELECT timestamp, height
FROM thorchain.block_log
WHERE timestamp = 1650397837878161529
)
SELECT t.*
FROM thorchain.transfer_events t
JOIN base b ON b.timestamp = t.block_timestamp
WHERE (from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
AND from_addr <> to_addr
WITH base AS (
SELECT split(memo, ':')[1]::string AS address
, block_timestamp::date AS date
, SUM(CASE WHEN bond_type = 'bond_paid' THEN e8 ELSE -e8 END) * POWER(10, -8) AS amt
FROM thorchain.bond_events
WHERE address = 'thor1xd4j3gk9frpxh8r22runntnqy34lwzrdkazldh'
AND bond_type IN ('bond_paid','bond_returned')
GROUP BY 1, 2
)
SELECT date
, SUM(amt) OVER (ORDER BY date) AS cumu_bond
FROM base
ORDER BY 1
with inflow as (select to_address,
sum(rune_amount) as rune_inflow
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 1),
outflow as (select from_address,
sum(rune_amount) as rune_outflow
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 1),
holdings as (select to_address AS from_address,
ifnull(rune_inflow, 0) - ifnull(rune_outflow, 0) as holding_rune
from inflow a
full outer join outflow b
on a.to_address = b.from_address),
adding as (select
from_address,
pool_name,
sum(stake_units) as add_liq
from thorchain.liquidity_actions
where
lp_action = 'add_liquidity'
group by 1,2),
removing as (select
from_address,
pool_name,
sum(stake_units) as remove_liq
from thorchain.liquidity_actions
where lp_action = 'remove_liquidity'
group by 1,2),
stake_unitz as (select a.from_address,
a.pool_name,
(add_liq - ifnull(remove_liq,0)) / total_stake as percentage
from adding a
left join removing b
on a.pool_name = b.pool_name and a.from_address = b.from_address
join thorchain.pool_block_statistics c
on a.pool_name = c.asset
where day in (select max(day) from thorchain.pool_block_statistics)
and percentage > 0),
--and lp_action = 'remove_liquidity'
rune_lped as (select a.from_address,
percentage * rune_liquidity as rune_lping
from stake_unitz a
join thorchain.daily_pool_stats b
on a.pool_name = b.pool_name
where day in (select max(day) from thorchain.daily_pool_stats)),
lps as(select from_address,
sum(rune_lping) as total_rune_lped
from rune_lped
group by 1),
base as (select
a.from_address,
ifnull(holding_rune, 0) as rune_wallet,
ifnull(total_rune_lped, 0) as rune_liquidity_pool,
rune_wallet + rune_liquidity_pool as total_rune,
case
when total_rune <= 1 then 'total rune holdings <= 1'
when total_rune > 1 and total_rune <= 10 then 'total rune holdings > 1 and <= 10'
when total_rune > 10 and total_rune <= 100 then 'total rune holdings > 10 and <= 100'
when total_rune > 100 and total_rune <= 1000 then 'total rune holdings > 100 and <= 1K'
when total_rune > 1000 and total_rune <= 10000 then 'total rune holdings > 1K and <= 10K'
when total_rune > 10000 and total_rune <= 100000 then 'total rune holdings > 10K and <= 100K'
else 'total rune holdings > 100K'
end as total_rune_ranges,
case
when total_rune < -10 then '-10'
when total_rune < -1 then '-1'
when total_rune < 0 then '-0'
when total_rune <= 1 then '0'
when total_rune > 1 and total_rune <= 10 then '1'
when total_rune > 10 and total_rune <= 100 then '2'
when total_rune > 100 and total_rune <= 1000 then '3'
when total_rune > 1000 and total_rune <= 10000 then '4'
when total_rune > 10000 and total_rune <= 100000 then '5'
else '9'
end as ordering
from holdings a
left join lps b
on a.from_address = b.from_address
where (total_rune > 1) )
select *
from base
SELECT *
FROM thorchain.swap_events
WHERE memo IS NOT NULL
SELECT split(memo, ':')[1] AS asset
, split(memo, ':')[3] AS lim
, split(memo, ':')[4] AS affiliate
, COUNT(1) AS n
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
GROUP BY 1, 2, 3
SELECT RIGHT(split(memo, ':')[3], 3)
, COUNT(1) AS n
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
AND from_address = 'thor1yep703ewakef0h2l9qel93xh96tvkm004pesq7'
GROUP BY 1
ORDER BY 2 DESC
SELECT RIGHT(split(memo, ':')[3], 3)
, COUNT(1) AS n
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
AND from_address = 'thor1yep703ewakef0h2l9qel93xh96tvkm004pesq7'
LIMIT 100
SELECT from_address
, COUNT(1) AS n
, AVG(CASE WHEN RIGHT(split(memo, ':')[3], 3) = '000' THEN 1 ELSE 0 END ) AS pct_000
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
GROUP BY 1
ORDER BY 2 DESC
SELECT
RIGHT(split(memo, ':')[3], 3) AS lim
, COUNT(1) AS n
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
GROUP BY 1
SELECT
LEFT(split(memo, ':')[4], 10) AS aff
, COUNT(1) AS n
FROM thorchain.swap_events s
WHERE block_timestamp >= CURRENT_DATE - 20
AND s.memo IS NOT NULL
GROUP BY 1
with inflow as (select to_address,
sum(rune_amount) as rune_inflow
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 1),
outflow as (select from_address,
sum(rune_amount) as rune_outflow
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 1),
holdings as (select from_address,
ifnull(rune_inflow, 0) - ifnull(rune_outflow, 0) as holding_rune
from inflow a
full outer join outflow b
on a.to_address = b.from_address),
adding as (select
from_address,
pool_name,
sum(stake_units) as add_liq
from thorchain.liquidity_actions
where
lp_action = 'add_liquidity'
group by 1,2),
removing as (select
from_address,
pool_name,
sum(stake_units) as remove_liq
from thorchain.liquidity_actions
2022-05-17 21:52:44 +00:00
where lp_action = 'remove_liquidity'
group by 1,2),
2022-07-14 22:10:02 +00:00
stake_unitz as (select a.from_address,
a.pool_name,
(add_liq - ifnull(remove_liq,0)) / total_stake as percentage
from adding a
left join removing b
on a.pool_name = b.pool_name and a.from_address = b.from_address
join thorchain.pool_block_statistics c
on a.pool_name = c.asset
where day in (select max(day) from thorchain.pool_block_statistics)
and percentage > 0),
--and lp_action = 'remove_liquidity'
rune_lped as (select a.from_address,
percentage * rune_liquidity as rune_lping
from stake_unitz a
join thorchain.daily_pool_stats b
on a.pool_name = b.pool_name
where day in (select max(day) from thorchain.daily_pool_stats)),
lps as(select from_address,
sum(rune_lping) as total_rune_lped
from rune_lped
group by 1),
base as (select
a.from_address,
ifnull(holding_rune, 0) as rune_wallet,
ifnull(total_rune_lped, 0) as rune_liquidity_pool,
rune_wallet + rune_liquidity_pool as total_rune,
case
when total_rune <= 1 then 'total rune holdings <= 1'
when total_rune > 1 and total_rune <= 10 then 'total rune holdings > 1 and <= 10'
when total_rune > 10 and total_rune <= 100 then 'total rune holdings > 10 and <= 100'
when total_rune > 100 and total_rune <= 1000 then 'total rune holdings > 100 and <= 1K'
when total_rune > 1000 and total_rune <= 10000 then 'total rune holdings > 1K and <= 10K'
when total_rune > 10000 and total_rune <= 100000 then 'total rune holdings > 10K and <= 100K'
else 'total rune holdings > 100K'
end as total_rune_ranges,
case
when total_rune < -10 then '-10'
when total_rune < -1 then '-1'
when total_rune < 0 then '-0'
when total_rune <= 1 then '0'
when total_rune > 1 and total_rune <= 10 then '1'
when total_rune > 10 and total_rune <= 100 then '2'
when total_rune > 100 and total_rune <= 1000 then '3'
when total_rune > 1000 and total_rune <= 10000 then '4'
when total_rune > 10000 and total_rune <= 100000 then '5'
else '9'
end as ordering
from holdings a
left join lps b
on a.from_address = b.from_address
where (total_rune > 0 OR TRUE) )
select total_rune_ranges,
ordering,
count(distinct(from_address)) as number_of_wallet
from base
group by 1,2
order by 2
with transfers as (
select sum(rune_amount) as total_receive, to_address as wallet
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 2
union
select sum(rune_amount * -1) as total_receive, from_address as wallet
from thorchain.transfers
where asset = 'THOR.RUNE'
group by 2
),
first_in as (
select min(block_timestamp::date) as first_in, to_address
from thorchain.transfers
group by 2
),
all_holders as (
select sum(total_receive) as total_rune_holdings, wallet
from transfers
group by 2
),
lp as (
select sum(rune_amount) as total_add, from_address as lp_address
from thorchain.liquidity_actions
where lp_action = 'add_liquidity'
group by 2
union
select sum(rune_amount * -1) as total_withdraw, from_address as lp_address
from thorchain.liquidity_actions
where lp_action = 'remove_liquidity'
group by 2
),
total_in_pool as (
select sum(total_add) as total_rune_pool, lp_address
from lp
group by 2
),
rune_balance as (
select wallet, total_rune_holdings, total_rune_pool
from all_holders hol
left join total_in_pool lp on
hol.wallet = lp.lp_address
),
rune_holders_period as (
select wallet, total_rune_holdings, first_in
from rune_balance run
left join first_in fir on
run.wallet = fir.to_address
where total_rune_holdings > 0
),
holding_period as (
select count(distinct wallet) as num_holders, '<7 days' as holding_period
from rune_holders_period
where first_in > current_date - 7
group by 2
union
select count(distinct wallet) as num_holders, '7-30 days' as holding_period
from rune_holders_period
where first_in > current_date - 30
and first_in < current_date - 7
group by 2
union
select count(distinct wallet) as num_holders, '30-90 days' as holding_period
from rune_holders_period
where first_in > current_date - 90
and first_in < current_date - 30
group by 2
union
select count(distinct wallet) as num_holders, '90-180 days' as holding_period
from rune_holders_period
where first_in > current_date - 180
and first_in < current_date - 90
group by 2
union
select count(distinct wallet) as num_holders, '180-365 days' as holding_period
from rune_holders_period
where first_in > current_date - 365
and first_in < current_date - 180
group by 2
),
distribution_holder as (
select count(distinct wallet) as num_holders,
case when total_rune_holdings > 0 and total_rune_holdings < 1000 then 'shrimp'
when total_rune_holdings >= 1000 and total_rune_holdings < 10000 then 'fish'
when total_rune_holdings >= 10000 and total_rune_holdings < 100000 then 'small whale'
when total_rune_holdings >= 100000 and total_rune_holdings < 1000000 then 'medium whale'
when total_rune_holdings >= 1000000 then 'boss whale'
end as holding_size,
case when total_rune_holdings > 0 and total_rune_holdings < 1000 then '1-1k rune'
when total_rune_holdings >= 1000 and total_rune_holdings < 10000 then '1k-10k rune'
when total_rune_holdings >= 10000 and total_rune_holdings < 100000 then '10k - 100k'
when total_rune_holdings >= 100000 and total_rune_holdings < 1000000 then '100k - 1M rune'
when total_rune_holdings >= 1000000 then '>1M rune'
end as size_type
WITH a AS (
SELECT DISTINCT tx_id
FROM ethereum.events_emitted
WHERE block_timestamp >= CURRENT_DATE - 1
AND contract_address = LOWER('0xa5f2211B9b8170F694421f2046281775E8468044')
), b AS (
SELECT DISTINCT e.tx_id
FROM ethereum.events_emitted e
JOIN a ON a.tx_id = e.tx_id
WHERE block_timestamp >= CURRENT_DATE - 1
AND tx_to_address = LOWER('0x815c23eca83261b6ec689b60cc4a58b54bc24d8d')
AND event_name = 'Withdraw'
), c AS (
SELECT DISTINCT e.tx_id
FROM ethereum.events_emitted e
JOIN b ON b.tx_id = e.tx_id
WHERE block_timestamp >= CURRENT_DATE - 1
AND tx_to_address = LOWER('0x815c23eca83261b6ec689b60cc4a58b54bc24d8d')
AND event_name = 'DelegateVotesChanged'
)
SELECT block_timestamp::date AS date
, SUM(CASE WHEN e.event_name = 'Transfer'
AND contract_address = '0xa5f2211b9b8170f694421f2046281775e8468044'
AND LENGTH(event_inputs:value::string) <= 25
THEN CAST(event_inputs:value::string AS INT) * POWER(10, -18)
ELSE 0 END) AS thor_amt
FROM ETHEREUM.events_emitted e
JOIN c ON c.tx_id = e.tx_id
GROUP BY 1
WITH a AS (
SELECT DISTINCT tx_id
FROM ethereum.events_emitted
WHERE block_timestamp >= CURRENT_DATE - 18
AND contract_address = LOWER('0xa5f2211B9b8170F694421f2046281775E8468044')
LIMIT 1000
), b AS (
SELECT DISTINCT e.tx_id
FROM ethereum.events_emitted e
JOIN a ON a.tx_id = e.tx_id
WHERE block_timestamp >= CURRENT_DATE - 18
AND tx_to_address = LOWER('0x815c23eca83261b6ec689b60cc4a58b54bc24d8d')
AND event_name = 'Deposit'
), c AS (
SELECT DISTINCT e.tx_id
FROM ethereum.events_emitted e
JOIN b ON b.tx_id = e.tx_id
WHERE block_timestamp >= CURRENT_DATE - 18
AND tx_to_address = LOWER('0x815c23eca83261b6ec689b60cc4a58b54bc24d8d')
AND event_name = 'DelegateVotesChanged'
)
SELECT block_timestamp::date AS date
, event_inputs:value AS thor_amt
FROM ETHEREUM.events_emitted e
JOIN c ON c.tx_id = e.tx_id
WHERE block_timestamp >= CURRENT_DATE - 18
SELECT *
FROM ETHEREUM_CORE.FACT_TOKEN_TRANSFERS
WHERE contract_address = '0xa5f2211B9b8170F694421f2046281775E8468044'
LIMIT 100
SELECT *
FROM ethereum.events_emitted
WHERE contract_address = '0xa5f2211b9b8170f694421f2046281775e8468044'
LIMIT 100
106. [Hard] New User Onboarding
When a new wallet gets created, where are they first getting their $RUNE? Is it from a direct transfer? Or from a centralized exchange? From a $RUNE upgrade from BNB.RUNE or ETH.RUNE? Or from a swap from another chain's asset to $RUNE? If it's a swap, which chain / asset are they coming from? Are there any trends over time you can see?
conn = psycopg2.connect(
host="vic5o0tw1w-repl.twtim97jsb.tsdb.cloud.timescale.com",
user="tsdbadmin",
password="yP4wU5bL0tI0kP3k"
)
-- onboarding new users
-- we have run scavenger hunts specifically designed to onboard new users
-- show weekly new users and color when they come from Flipside
-- CAC vs block rewards
-- what % were new to the ecosystem in the last 3 weeks
-- show new LPers and color when they come from flipside
-- show twitter stats
-- show Rune holder retention from Flipside
-- show wallet and when they first get their rune and if they are still a participant in the ecosystem
-- stay involved in the ecosystem
l AS (
SELECT
COALESCE(address, '') AS address
, pool_name
, sum(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) as net_stake_units
FROM thorchain.liquidity_actions
WHERE lp_action IN ('add_liquidity','remove_liquidity')
GROUP BY 1, 2
), l2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY address, pool_name ORDER BY month) AS cumu_stake_units
FROM l
),
WITH base AS (
SELECT from_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(-rune_amount) AS net_rune_amount
FROM thorchain.transfers
GROUP BY 1, 2
UNION
SELECT to_address AS address
, date_trunc('month', block_timestamp) AS month
, SUM(rune_amount) AS net_rune_amount
FROM thorchain.transfers
GROUP BY 1, 2
), b2 AS (
SELECT address
, MIN(month) AS month
, SUM(net_rune_amount) AS net_rune_amount
FROM base
GROUP BY 1
), l AS (
SELECT
from_address AS address
, pool_name
, sum(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) as net_stake_units
FROM thorchain.liquidity_actions
WHERE lp_action IN ('add_liquidity','remove_liquidity')
AND address LIKE 'thor%'
GROUP BY 1, 2
), l2 AS (
SELECT DISTINCT address
FROM l
WHERE net_stake_units > 0
), f AS (
SELECT DISTINCT address
FROM silver_crosschain.ntr
WHERE address LIKE 'thor%'
)
SELECT
-- date_trunc('year', month) AS month
CASE WHEN f.address IS NULL THEN 0 ELSE 1 END AS is_flipside
, COUNT(1) AS n
, AVG(CASE WHEN net_rune_amount > 0 OR l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_hold
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NULL THEN 1 ELSE 0 END) AS pct_rune_only
, AVG(CASE WHEN net_rune_amount <= 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_only
, AVG(CASE WHEN net_rune_amount > 0 AND l2.address IS NOT NULL THEN 1 ELSE 0 END) AS pct_lp_and_rune
FROM b2
LEFT JOIN l2 ON l2.address = b2.address
LEFT JOIN f ON f.address = b2.address
GROUP BY 1
SELECT *
FROM silver_crosschain.ntr
WHERE symbol = 'RUNE'
LIMIT 10
SELECT * FROM flipside_dev_db.silver_crosschain.nft_fair_market_value LIMIT 100
SELECT * FROM flipside_prod_db.silver_crosschain.nft_fair_market_value LIMIT 100
SELECT block_timestamp
, block_id
, tx_id
, asset
, pool_deduct
, asset_e8
, COUNT(1) AS n
SELECT *
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events
LIMIT 10
GROUP BY 1, 2, 3, 4, 5, 6
HAVING COUNT(1) > 1
ORDER BY 7 DESC
LIMIT 10
SELECT *
, COUNT(1) AS n
FROM thorchain.block_rewards
GROUP BY 1, 2, 3, 4, 5, 6
HAVING COUNT(1) > 1
ORDER BY 7 DESC
LIMIT 10
SELECT *
FROM thorchain.block_log
WHERE height = 4310545
timestamp = 1645094662447193601
SELECT *
FROM dex.trades
WHERE (
token_a_address = '\x4200000000000000000000000000000000000042'
OR token_b_address = '\x4200000000000000000000000000000000000042'
)
AND usd_amount > 0
AND token_a_amount_raw>0
AND token_b_amount_raw>0
LIMIT 100
SELECT payment_currency
, SUM(payment_amount) AS payment_amount
, COUNT(1) AS n
FROM BI_ANALYTICS.BRONZE.HEVO_PAYMENTS
GROUP BY 1
SELECT block_timestamp::date AS date
, COUNT(1) AS n
, COUNT(1) AS n2
FROM thorchain.transfers
WHERE block_timestamp >= '2022-05-01'
GROUP BY 1
WITH mx AS (
SELECT pool_name, MAX(block_timestamp) AS mx
FROM thorchain.pool_block_balances
WHERE block_timestamp >= CURRENT_DATE - 2
GROUP BY 1
)
SELECT SUM(b.asset_amount_usd + b.synth_amount_usd) AS assets_locked, SUM(b.rune_amount) AS rune_amount
FROM thorchain.pool_block_balances b
JOIN mx ON mx.mx = b.block_timestamp
AND mx.pool_name = b.pool_name
SELECT *
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
LIMIT 10
SELECT DISTINCT project_name
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
SELECT
coalesce(m.project_name, s.mint) as collection,
s.purchaser as wallet,
s.tx_id,
s.block_timestamp
from solana.fact_nft_mints s left join solana.dim_nft_metadata m on s.mint = m.mint
where block_timestamp >= '2022-01-01'
SELECT program_id, COUNT(1) AS n_mints, SUM(mint_price) AS sol_volume
FROM solana.fact_nft_mints
GROUP BY 1
SELECT date_part('DAYOFWEEK', block_timestamp) AS weekday, COUNT(1) AS n_mints, SUM(mint_price) AS sol_volume
FROM solana.fact_nft_mints
WHERE program_id IN (
'cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ'
, 'cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ'
)
GROUP BY 1
WITH collections AS (
SELECT project_name AS collection
, address AS mint_address
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION ALL
SELECT project_name AS collection
, mint AS mint_address
FROM solana.dim_nft_metadata
), c2 AS (
SELECT DISTINCT collection
, mint_address
FROM collections
), base AS (
SELECT date_part('DAYOFWEEK', block_timestamp) AS weekday
, block_timestamp
, DATEADD('HOURS', -4, block_timestamp) AS est_time
, date_part('DAYOFWEEK', DATEADD('HOURS', -4, block_timestamp)) AS est_weekday
, COALESCE(c2.collection, 'Unknown') AS collection
, mint_price
FROM solana.fact_nft_mints m
LEFT JOIN collections c2 ON c2.mint_address = m.mint
WHERE program_id IN (
'cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ'
, 'cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ'
)
AND weekday < 1 OR weekday > 6
)
SELECT collection
, CASE WHEN est_weekday = 1 THEN 'Monday'
WHEN est_weekday = 2 THEN 'Tuesday'
WHEN est_weekday = 3 THEN 'Wednesday'
WHEN est_weekday = 4 THEN 'Thursday'
WHEN est_weekday = 5 THEN 'Friday'
WHEN est_weekday = 6 THEN 'Saturday'
ELSE 'Sunday'
END AS clean_weekday
, COUNT(1) AS n_mints
, SUM(mint_price) AS sol_volume
FROM base
GROUP BY 1, 2
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH collections AS (
SELECT project_name AS collection
, address AS mint_address
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION ALL
SELECT project_name AS collection
, mint AS mint_address
FROM solana.dim_nft_metadata
), c2 AS (
SELECT DISTINCT LOWER(collection) AS collection
, mint_address
FROM collections
)
SELECT date_part('DAYOFWEEK', block_timestamp) AS weekday
, block_timestamp
, DATEADD('HOURS', -4, block_timestamp) AS est_time
, date_part('DAYOFWEEK', DATEADD('HOURS', -4, block_timestamp)) AS est_weekday
, COALESCE(c2.collection, 'Unknown') AS collection
, mint_price
FROM solana.fact_nft_mints m
LEFT JOIN collections c2 ON c2.mint_address = m.mint
WHERE block_timestamp >= '2022-01-01'
AND program_id IN (
'cndy3Z4yapfJBmL3ShUp5exZKqR3z33thTzeNMm2gRZ'
, 'cndyAnrLdpjq1Ssp1z8xxDsB8dxe7u4HL5Nxi2K5WXZ'
)
AND mint_price < 100
ORDER BY mint_price DESC
LIMIT 1000
SELECT *
FROM solana.fact_nft_mints m
WHERE mint =
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH collections AS (
SELECT project_name AS collection
, address AS mint_address
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION ALL
SELECT project_name AS collection
, mint AS mint_address
FROM solana.dim_nft_metadata
), c2 AS (
SELECT DISTINCT collection
, mint_address
FROM collections
)
SELECT * FROM c2 WHERE collection = 'Okay Bears'
2022-05-17 21:52:44 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM solana.fact_nft_mints
WHERE mint IN ('13VcCoRBqyXsWNBJZQituivTtWd8USbzfRsUBBkSbw6Y','2CMQnGJMq1U611Dbim5ALqPQCDQQ1jseYLQfAhkxZ9cY')
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT DISTINCT project_name
FROM solana.dim_nft_metadata
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1)
FROM thorchain.bond_events
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1)
FROM bronze_midgard_2_6_9_20220405.midgard_bond_events
with aa as (
select from_address,
pool_name,
SUM(COALESCE(il_protection_usd, 0)) as il_protection,
MIN(block_timestamp) as min_date,
MAX(block_timestamp) as max_date
from thorchain.liquidity_actions
group by 1, 2
)
select
CAST(DATEDIFF('days', min_date, max_date) AS INT) AS weeks_in_pool
, SUM(il_protection) AS il_protection
from aa
group by 1
SELECT *
FROM thorchain.liquidity_actions
WHERE from_address = 'thor1zfef8qe3xcxnwwn9ntd2thzyw6n7a4m9xuyr56'
SELECT project_name AS collection
, mint
, token_id
FROM solana.dim_nft_metadata
LIMIT 10
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.dim_nft_metadata m
JOIN flipside_prod_db.bronze.prod_data_science_uploads_1748940988 u
ON m.token_id = u.token_id
AND m.token_id = u.token_id
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-rankings-%'
AND record_content[0]:collection = 'Solana Monkey Business'
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-rankings-%'
AND record_content[0]:collection = 'Solana Monkey Business'
), base2 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS old_floor
, t.value:cur_sd AS old_sd
, t.value:deal_score_rank AS deal_score_rank
, t.value:fair_market_price AS old_fair_market_price
, t.value:lin_coef AS lin_coef
, t.value:log_coef AS log_coef
, t.value:rarity_rank AS rarity_rank
, t.value:token_id AS token_id
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base
, LATERAL FLATTEN(
input => record_content
) t
JOIN solana.dim_nft_metadata m ON m.token_id = t.value:token_id AND m.project_name = t.value:collection
WHERE m.mint = 'B4GxvM6EjBKUUvQ3bhrs1UK8qhbNXVm6Q2ewZNM7hcgB'
), base3 AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-floors-%'
), base4 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS new_floor
, b.*
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base3 b
, LATERAL FLATTEN(
input => record_content
) t
), base5 AS (
SELECT b2.*
, b4.new_floor
FROM base2 b2
JOIN base4 b4 ON b2.collection = b4.collection AND b4.rn = 1
WHERE b2.rn = 1
), base6 AS (
SELECT *
, old_sd * new_floor / old_floor AS cur_sd
, old_fair_market_price + ((new_floor - old_floor) * lin_coef) + (( new_floor - old_floor) * log_coef * old_fair_market_price / old_floor) AS new_fair_market_price
FROM base5
)
SELECT collection
, token_id
, deal_score_rank
, rarity_rank
, new_floor AS floor_price
, ROUND(CASE WHEN new_fair_market_price < floor_price THEN floor_price ELSE new_fair_market_price END, 2) AS fair_market_price
, ROUND(CASE WHEN new_fair_market_price - cur_sd < floor_price * 0.975 THEN floor_price * 0.975 ELSE new_fair_market_price - cur_sd END, 2) AS price_low
, ROUND(CASE WHEN new_fair_market_price + cur_sd < floor_price * 1.025 THEN floor_price * 1.025 ELSE new_fair_market_price + cur_sd END, 2) AS price_high
FROM base6
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
with add as (select
from_address as address,
pool_name as poolname,
sum(stake_units) as units
from thorchain.liquidity_actions
where lp_action = 'add_liquidity'
group by 1,2),
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
remove as (select
from_address as address,
pool_name as poolname,
sum(stake_units) as units
2022-05-17 21:52:44 +00:00
from thorchain.liquidity_actions
2022-07-14 22:10:02 +00:00
where lp_action = 'remove_liquidity'
2022-05-17 21:52:44 +00:00
group by 1,2),
2022-07-14 22:10:02 +00:00
combo as (select
a.address as addresses,
a.poolname as pools,
a.units as add_units,
b.units as remove_units,
a.units - ifnull(b.units, 0) as net
from add a
left join remove b
on (a.address = b.address and a.poolname = b.poolname)
--where addresses = 'thor1tecpk5zmd225ec4ma56q20j0xejd7ay7xmtajl'
where net > 0
group by 1,2,3,4,5),
table1 as (select addresses,
a.pools,
date_trunc('day',block_timestamp) as day
from combo a
join thorchain.liquidity_actions b
on a.addresses = b.from_address and a.pools = b.pool_name
where lp_action = 'add_liquidity'),
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
table2 as (select addresses,
pools,
min(day) as earliest_add
from table1
group by 1,2),
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
active AS (
SELECT DISTINCT split(pool_name, '-')[0]
FROM thorchain.swaps WHERE block_timestamp >= CURRENT_DATE - 3
)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
base as (select addresses, --ifnull(count(addresses),0) as addresses,
pools,
split(pools, '-')[0] as pool_namez,
datediff(day, earliest_add, current_date) as lp_period
from table2
order by 3 asc)
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
select pool_namez,
avg(lp_period)
from base b
JOIN active a ON a.pool_name = b.pool_namez
group by 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT block_timestamp::date AS date
, tx_id
, ARRAY_SIZE(inner_instructions[0]:instructions) AS sz
, inner_instructions[0]:instructions[0]:parsed:info:amount::int * POWER(10, -8) AS amt_pay
, inner_instructions[0]:instructions[0]:parsed:info:authority::string AS address
, inner_instructions[0]:instructions[1]:parsed:info:amount::int * POWER(10, -8) AS amt_fee
, inner_instructions[0]:instructions[2]:parsed:info:amount::int * POWER(10, -8) AS amt_buy
, inner_instructions[0]:instructions[2]:parsed:info:mint::string AS mint
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 4
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
AND ARRAY_SIZE(inner_instructions[0]:instructions) = 3
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH mint AS (
SELECT block_timestamp::date AS date
, tx_id
, ARRAY_SIZE(inner_instructions[0]:instructions) AS sz
, inner_instructions[0]:instructions[0]:parsed:info:amount::int * POWER(10, -8) AS amt_pay
, inner_instructions[0]:instructions[0]:parsed:info:authority::string AS address
, inner_instructions[0]:instructions[1]:parsed:info:amount::int * POWER(10, -8) AS amt_fee
, inner_instructions[0]:instructions[2]:parsed:info:amount::int * POWER(10, -8) AS amt_buy
, inner_instructions[0]:instructions[2]:parsed:info:mint::string AS mint
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 7
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
AND ARRAY_SIZE(inner_instructions[0]:instructions) = 3
AND mint IN ('Fgf39CUcAN5CLduHCswTzTj42TRTLV8511iCnSEnkdpJ','9e99vFWTaxDewCUv5RpMp45G5wjMpygtpAY3NXuWDk3A')
), burn AS (
SELECT block_timestamp::date AS date
, tx_id
, ARRAY_SIZE(inner_instructions[0]:instructions) AS sz
, inner_instructions[0]:instructions[0]:parsed:info:amount::int * POWER(10, -8) AS amt_brn
, inner_instructions[0]:instructions[0]:parsed:info:authority::string AS address
, inner_instructions[0]:instructions[0]:parsed:info:mint::string AS mint
, inner_instructions[0]:instructions[1]:parsed:info:amount::int * POWER(10, -8) AS amt_pbt
, inner_instructions[0]:instructions[2]:parsed:info:amount::int * POWER(10, -8) AS amt_props
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 7
AND instructions[0]:programId = 'GrcZwT9hSByY1QrUTaRPp6zs5KxAA5QYuqEhjT1wihbm'
AND ARRAY_SIZE(inner_instructions[0]:instructions) = 4
AND mint IN ('Fgf39CUcAN5CLduHCswTzTj42TRTLV8511iCnSEnkdpJ','9e99vFWTaxDewCUv5RpMp45G5wjMpygtpAY3NXuWDk3A')
), m AS (
SELECT address
, mint
, SUM(amt_pay) AS amt_pay
, SUM(amt_fee) AS amt_fee
, SUM(amt_buy) AS amt_buy
FROM mint
GROUP BY 1, 2
), b AS (
SELECT address
, mint
, SUM(amt_brn) AS amt_brn
, SUM(amt_pbt) AS amt_pbt
, SUM(amt_props) AS amt_props
FROM burn
GROUP BY 1, 2
), reward AS (
SELECT m.mint
, SUM(amt_pbt) / SUM(amt_buy) AS pbt_per_token
, SUM(amt_props) / SUM(amt_buy) AS props_per_token
FROM m
JOIN b ON b.address = m.address AND b.mint = m.mint
WHERE amt_pbt > 0 AND amt_props > 0
GROUP BY 1
)
SELECT COALESCE(m.address, b.address) AS address
, COALESCE(m.mint, b.mint) AS mint
, ROUND(COALESCE(m.amt_pay, 0), 4) AS amt_pay
, ROUND(COALESCE(m.amt_fee, 0), 4) AS amt_fee
, ROUND(COALESCE(m.amt_buy, 0), 4) AS amt_buy
, ROUND(amt_pay + amt_fee, 4) AS cost
, ROUND(cost / amt_buy, 4) AS price
, ROUND(COALESCE(b.amt_brn, 0), 4) AS amt_brn
, ROUND(COALESCE(b.amt_pbt, 0), 4) AS amt_pbt_1
, ROUND(COALESCE(b.amt_props, 0), 4) AS amt_props_1
, ROUND(COALESCE(m.amt_buy * pbt_per_token, 0), 4) AS amt_pbt
, ROUND(COALESCE(m.amt_buy * props_per_token, 0), 4) AS amt_props
FROM m
FULL OUTER JOIN b ON b.address = m.address AND b.mint = m.mint
LEFT JOIN reward r ON r.mint = m.mint
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
-- 8: initialize the pool
-- 5: burn pool
-- 4: sell team tokens
-- 3: buy team token
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
with aa as (
select from_address,
pool_name,
SUM(COALESCE(il_protection_usd, 0)) as il_protection,
MIN(CASE WHEN lp_action = 'add_liquidity' THEN block_timestamp ELSE NULL END) as min_date,
MIN(CASE WHEN lp_action = 'remove_liquidity' THEN block_timestamp ELSE NULL END) as max_date,
from thorchain.liquidity_actions
group by 1, 2
)
select
CAST(DATEDIFF('days', min_date, max_date) AS INT) + 1 AS weeks_in_pool
, SUM(il_protection) AS il_protection
from aa
WHERE max_date IS NOT NULL AND min_date IS NOT NULL
group by 1
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1)
FROM thorchain.bond_actions
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
WHERE project_name = 'Okay Bears'
), rem AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS remove_tx
, t.block_timestamp AS remove_time
, LEFT(instructions[0]:data::string, 4) AS remove_data
, CASE WHEN s.tx_id IS NULL THEN 0 ELSE 1 END AS is_sale
, s.sales_amount
, ROW_NUMBER() OVER (PARTITION BY m.mint ORDER BY t.block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
LEFT JOIN solana.fact_nft_sales s ON s.tx_id = t.tx_id
WHERE t.block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
), add AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS listing_tx
, block_timestamp AS listing_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT a.*
, r.remove_tx
, r.remove_time
, DATEDIFF('hours', a.listing_time, r.remove_time) AS time_to_sell
, r.is_sale
, r.sales_amount
, CASE WHEN r.remove_time IS NULL OR a.listing_time > r.remove_time THEN 1 ELSE 0 END AS is_listed
FROM add a
LEFT JOIN rem r ON r.mint = a.mint AND r.rn = 1 AND a.listing_time <= r.remove_time
WHERE a.rn = 1 AND is_sale = 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH mints AS (
SELECT DISTINCT LOWER(project_name) AS project_name
, address AS mint
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION
SELECT DISTINCT LOWER(project_name) AS project_name
, mint
FROM solana.dim_nft_metadata
)
SELECT project_name, mint, COUNT(1) AS n
FROM mints
GROUP BY 1, 2
ORDER BY 3 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH mints AS (
SELECT DISTINCT LOWER(project_name) AS project_name
, address AS mint
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
UNION
SELECT DISTINCT LOWER(project_name) AS project_name
, mint
FROM solana.dim_nft_metadata
), rem AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, t.tx_id AS remove_tx
, t.block_timestamp AS remove_time
, CASE WHEN s.tx_id IS NULL THEN 0 ELSE 1 END AS is_sale
, s.sales_amount
, ROW_NUMBER() OVER (PARTITION BY m.mint ORDER BY t.block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
LEFT JOIN solana.fact_nft_sales s ON s.tx_id = t.tx_id
WHERE t.block_timestamp >= CURRENT_DATE - 13
AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
), add AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, t.tx_id AS listing_tx
, block_timestamp AS listing_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 13
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
), base AS (
SELECT a.*
, r.remove_tx
, r.remove_time
, date_trunc('day', a.listing_time) AS listing_day
, date_trunc('day', r.remove_time) AS remove_day
, r.is_sale
, r.sales_amount
, CASE WHEN r.remove_time IS NULL OR a.listing_time > r.remove_time THEN 1 ELSE 0 END AS is_listed
, ROW_NUMBER() OVER (PARTITION BY a.listing_tx ORDER BY r.remove_time ASC) AS rn2
FROM add a
LEFT JOIN rem r ON r.mint = a.mint AND a.listing_time <= r.remove_time
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY remove_tx ORDER BY listing_time DESC) AS rn3
FROM base
WHERE rn2 = 1
), b3 AS (
SELECT *
FROM b2
WHERE rn3 = 1
), days AS (
SELECT DISTINCT listing_day AS day
FROM b3
UNION
SELECT DISTINCT remove_day AS day
FROM b3
), filter AS (
SELECT project_name
, SUM(sales_amount) AS amt
FROM base
WHERE remove_day >= CURRENT_DATE - 14
AND sales_amount > 0
GROUP BY 1
ORDER BY 2 DESC
LIMIT 100
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT h.day
, b.project_name
, MIN(sales_amount) AS floor
FROM days h
JOIN b3 b ON b.listing_day <= h.day AND COALESCE(b.remove_day, h.day) >= h.day
JOIN filter f ON f.project_name = b.project_name
WHERE COALESCE(b.sales_amount, 0) > 0
GROUP BY 1, 2
ORDER BY 1
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
WHERE project_name IN ('Okay Bears','Catalina Whale Mixer')
), rem AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS remove_tx
, t.block_timestamp AS remove_time
, CASE WHEN s.tx_id IS NULL THEN 0 ELSE 1 END AS is_sale
, s.sales_amount
, ROW_NUMBER() OVER (PARTITION BY m.mint ORDER BY t.block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
LEFT JOIN solana.fact_nft_sales s ON s.tx_id = t.tx_id
WHERE t.block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
), add AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS listing_tx
, block_timestamp AS listing_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
), base AS (
SELECT a.*
, r.remove_tx
, r.remove_time
, date_trunc('hour', a.listing_time) AS listing_hour
, date_trunc('hour', r.remove_time) AS remove_hour
, r.is_sale
, r.sales_amount
, CASE WHEN r.remove_time IS NULL OR a.listing_time > r.remove_time THEN 1 ELSE 0 END AS is_listed
, ROW_NUMBER() OVER (PARTITION BY a.listing_tx ORDER BY r.remove_time ASC) AS rn2
FROM add a
LEFT JOIN rem r ON r.mint = a.mint AND a.listing_time <= r.remove_time
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY remove_tx ORDER BY listing_time DESC) AS rn3
FROM base
WHERE rn2 = 1
), b3 AS (
SELECT *
FROM b2
WHERE rn3 = 1
), hours AS (
SELECT DISTINCT listing_hour AS hour
FROM b3
UNION
SELECT DISTINCT remove_hour AS hour
FROM b3
)
SELECT h.hour
, project_name
, MIN(sales_amount) AS floor
FROM hours h
JOIN b3 b ON b.listing_hour <= h.hour AND COALESCE(b.remove_hour, h.hour) >= h.hour
WHERE COALESCE(b.sales_amount, 0) > 0
GROUP BY 1, 2
ORDER BY 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
WHERE project_name = 'Okay Bears'
), rem AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS remove_tx
, t.block_timestamp AS remove_time
, CASE WHEN s.tx_id IS NULL THEN 0 ELSE 1 END AS is_sale
, s.sales_amount
, ROW_NUMBER() OVER (PARTITION BY m.mint ORDER BY t.block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
LEFT JOIN solana.fact_nft_sales s ON s.tx_id = t.tx_id
WHERE t.block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
), add AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS listing_tx
, block_timestamp AS listing_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
), base AS (
SELECT a.*
, r.remove_tx
, r.remove_time
, date_trunc('hour', a.listing_time) AS listing_hour
, date_trunc('hour', r.remove_time) AS remove_hour
, r.is_sale
, r.sales_amount
, CASE WHEN r.remove_time IS NULL OR a.listing_time > r.remove_time THEN 1 ELSE 0 END AS is_listed
FROM add a
LEFT JOIN rem r ON r.mint = a.mint AND r.rn = 1
WHERE a.rn = 1
), hours AS (
SELECT DISTINCT listing_hour AS hour
FROM base
2022-06-06 19:15:10 +00:00
UNION
2022-07-14 22:10:02 +00:00
SELECT DISTINCT remove_hour AS hour
2022-06-06 19:15:10 +00:00
FROM base
)
2022-07-14 22:10:02 +00:00
SELECT h.hour
, MIN(sales_amount) AS floor
FROM hours h
JOIN base b ON b.listing_hour <= h.hour AND COALESCE(b.remove_hour, h.hour) >= h.hour
WHERE COALESCE(b.sales_amount, 0) > 0
GROUP BY 1
ORDER BY 1
2022-06-06 19:15:10 +00:00
2022-05-01 05:50:55 +00:00
2022-05-17 21:52:44 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM thorchain.fee_events
WHERE block_id = 5687427
QUALIFY COUNT(tx_id) OVER(PARTITION BY tx_id) <> 3
ORDER BY pool_deduct
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT * FROM midgard.fee_events
LIMIT 100
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Chat with
Central wallets tranferring into new wallets
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT INITCAP(l.label) AS collection, s.purchaser, SUM(s.sales_amount) AS volume
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
GROUP BY 1, 2
), b2 AS (
SELECT collection, purchaser, volume, SUM(volume) OVER (PARTITION BY collection) AS tot_volume
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY volume DESC) AS rn
FROM base
), b3 AS (
SELECT collection, tot_volume, SUM(volume) AS top_vol
, ROW_NUMBER() OVER (ORDER BY tot_volume DESC) AS rn_2
FROM b2
WHERE rn <= 50
GROUP BY 1, 2
)
SELECT *, top_vol / tot_volume AS pct_top
FROM b3
WHERE rn_2 <= 25
ORDER BY pct_top DESC
SELECT COUNT(tx)
, COUNT(asset)
, COUNT(asset_e8)
, COUNT(pool_deduct)
, COUNT(block_timestamp)
, COUNT(1) AS n
FROM midgard.fee_events
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Using NFT artist from in-house
Build out the brand
Get onto Magic Eden launchpad
Hit things quick
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
Outfit_Astronaut Light
Outfit_Astronaut Orange
Head_Crown
Attribute count_1 7
Edition_Alien
Outfit_Armor Light
2022-06-06 19:15:10 +00:00
SELECT block_timestamp::date AS date
, COUNT(1) AS n
2022-07-14 22:10:02 +00:00
FROM solana.core.fact_nft_sales
WHERE sales_amount = 0
2022-06-06 19:15:10 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
ORDER BY 1
2022-05-17 21:52:44 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM bronze_midgard_2_6_9_20220405.switch_events
LIMIT 100
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
FROM midgard.fee_events
WHERE block_timestamp <= 1656360639000000000
AND block_timestamp < 1654041600000000000
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
, MAX(block_timestamp) AS mxx
FROM thorchain.fee_events
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
, MAX(block_timestamp) AS mxx
FROM thorchain.bond_events
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-05-04 00:24:11 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT tx
, asset
, asset_e8
, pool_deduct
, block_timestamp
, COUNT(1) AS n
FROM midgard.fee_events
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
2022-05-17 21:52:44 +00:00
FROM base
2022-07-14 22:10:02 +00:00
fee_events
bond_events
switch_events
transfer_events
2022-05-17 21:52:44 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT tx
, asset
, asset_e8
, pool_deduct
, block_timestamp
, COUNT(1) AS n
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-05-17 21:52:44 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT tx_id
, asset
, asset_e8
, pool_deduct
, block_timestamp
, COUNT(1) AS n
FROM thorchain.fee_events
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
)
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT tx_id
, asset
, asset_e8
, pool_deduct
, block_timestamp
, COUNT(1) AS n
FROM thorchain.fee_events
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
)
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.transfer_events
WHERE block_timestamp >= 1650092800000000000
AND block_timestamp < 1654041600000000000
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT asset
, COUNT(1) AS n
FROM base
GROUP BY 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT tx
, chain
, from_addr
, to_addr
, asset
, asset_e8
, memo
, bond_type
, e8
, block_timestamp
, COUNT(1) AS cnt
FROM FLIPSIDE_PROD_DB.BRONZE_MIDGARD_2_6_9_20220405.BOND_EVENTS_PK_COUNT
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
SELECT CASE WHEN tx IS NULL THEN 'null' ELSE tx END AS clean_tx
, COUNT(1) AS cnt
FROM midgard.bond_events
WHERE tx IS NULL OR tx = ''
GROUP BY 1
SELECT CASE WHEN chain IS NULL THEN 'null' ELSE chain END AS chain_tx
, COUNT(1) AS cnt
FROM midgard.bond_events
WHERE tx IS NULL OR chain = ''
GROUP BY 1
SELECT project_name
2022-06-06 19:15:10 +00:00
, mint
, token_id
2022-07-14 22:10:02 +00:00
, token_metadata:"Accessories"::string AS "Accessories"
, token_metadata:"Attribute Count"::int AS "Attribute Count"
, token_metadata:"Background"::string AS "Background"
, token_metadata:"Big Drip"::string AS "Body"
, token_metadata:"Coat"::string AS "Coat"
, token_metadata:"Eyes"::string AS "Eyes"
, token_metadata:"Head"::string AS "Head"
, token_metadata:"Mouth"::string AS "Mouth"
, token_metadata:"Shoe"::string AS "Shoe"
2022-06-06 19:15:10 +00:00
FROM solana.dim_nft_metadata
2022-07-14 22:10:02 +00:00
WHERE project_name = 'Bubblegoose Ballers'
2022-06-06 19:15:10 +00:00
LIMIT 10
2022-07-14 22:10:02 +00:00
SELECT DISTINCT mint, project_name AS collection
FROM solana.dim_nft_metadata m
LEFT JOIN solana.dim_labels l ON l.address = m.mint
WHERE l.address IS NULL
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH sales AS (
SELECT l.label AS collection, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
GROUP BY 1
), base AS (
2022-06-06 19:15:10 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, ROW_NUMBER() OVER (ORDER BY volume DESC) AS volume_rank
FROM sales
ORDER BY volume DESC
LIMIT 50
), b2 AS (
SELECT DISTINCT collection, purchaser, mint
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
JOIN base b ON b.collection = l.label
UNION
SELECT DISTINCT collection, purchaser, mint
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
JOIN base b ON b.collection = l.label
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT DISTINCT collection, purchaser, mint
FROM b2
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH a AS (
SELECT DISTINCT mint
FROM solana.fact_nft_sales s
), b AS (
SELECT l.label
, SUM(s.mint_price) AS mint_volume
, SUM(s.mint_price) / COUNT(DISTINCT s.mint) AS mint_price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE mint_currency = 'So11111111111111111111111111111111111111111'
AND block_timestamp >= '2022-03-01'
GROUP BY 1
), c AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY mint_volume DESC) AS mint_volume_rank
FROM b
), d AS (
SELECT l.label
, SUM(s.sales_amount) AS sales_volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
GROUP BY 1
), e AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY sales_volume DESC) AS sales_volume_rank
FROM d
)
SELECT c.label AS collection
, c.mint_volume
, c.mint_volume_rank
, e.sales_volume
, e.sales_volume_rank
, c.mint_price
, COUNT(DISTINCT m.mint) AS n_mints
, COUNT(DISTINCT a.mint) AS n_sell
, 1 - (n_sell / n_mints) AS pct_hold
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
JOIN c ON c.label = l.label
JOIN e ON e.label = l.label
LEFT JOIN a ON a.mint = m.mint
GROUP BY 1, 2, 3, 4, 5, 6
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.dim_labels
WHERE label = 'lizard'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH sales AS (
SELECT INITCAP(l.label) AS collection
, SUM(s.sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE date_trunc('month', s.block_timestamp) = '2022-05-01'
GROUP BY 1
), base AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY volume DESC) AS rn
FROM sales
), b2 AS (
SELECT *
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', collection) ELSE '10. Other' END AS label
FROM base
), b3 AS (
SELECT label
, SUM(volume) AS volume
FROM b2
GROUP BY 1
ORDER BY 1
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, volume / SUM(volume) OVER () AS pct
FROM b3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH sales AS (
SELECT INITCAP(l.label) AS collection
, date_trunc('month', s.block_timestamp) AS month
, SUM(s.sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE date_trunc('month', s.block_timestamp) >= '2022-01-01'
GROUP BY 1, 2
), base AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY month ORDER BY volume DESC) AS rn
FROM sales
), b2 AS (
SELECT *
, CONCAT(LEFT(month::varchar, 2), '. ', TO_CHAR(month, 'month'), ' - ', collection) AS label
FROM base
WHERE rn = 1
)
SELECT *
FROM b2
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT L1_LABEL, COUNT(1) AS n
FROM FLIPSIDE_PROD_DB.SILVER_CROSSCHAIN.ADDRESS_LABELS
GROUP BY 1
ORDER BY 2 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT L1_LABEL, COUNT(1) AS n
FROM FLIPSIDE_PROD_DB.SILVER_CROSSCHAIN.ADDRESS_LABELS
//WHERE blockchain = 'solana'
//ORDER BY insert_date desc
LIMIT 100
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH prices AS (
SELECT recorded_at::date AS date
, AVG(price) AS sol_price
FROM silver.prices_v2
WHERE asset_id = 'solana'
GROUP BY 1
), mints AS (
SELECT INITCAP(l.label) AS collection
, SUM(mint_price) AS sol_volume
, COUNT(DISTINCT m.mint) AS n_mints
, MIN(block_timestamp::date) AS mn_date
, MAX(block_timestamp::date) AS mx_date
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
GROUP BY 1
), base AS (
SELECT m.*
, p.sol_price
, p.sol_price * sol_volume AS usd_volume
, sol_volume / n_mints AS mint_price
, ROW_NUMBER() OVER (ORDER BY usd_volume DESC) AS usd_volume_rank
FROM mints m
JOIN prices p ON p.date = m.mn_date
WHERE mint_price <= 10
ORDER BY usd_volume DESC
)
SELECT *
FROM base
ORDER BY usd_volume DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH a AS (
SELECT DISTINCT mint
FROM solana.fact_nft_sales s
2022-06-06 19:15:10 +00:00
), b AS (
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN l.label = 'lizard' THEN 'Reptilian Renegade' ELSE l.label END AS label
, SUM(s.mint_price) AS mint_volume
, SUM(s.mint_price) / COUNT(DISTINCT s.mint) AS mint_price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE mint_currency = 'So11111111111111111111111111111111111111111'
AND block_timestamp >= '2022-03-01'
-- data issue, need to look into this
AND NOT l.label IN ( 'degen trash pandas' )
GROUP BY 1
), c AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY mint_volume DESC) AS mint_volume_rank
FROM b
), d AS (
SELECT l.label
, SUM(s.sales_amount) AS sales_volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE block_timestamp >= '2022-03-01'
2022-06-06 19:15:10 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
), e AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY sales_volume DESC) AS sales_volume_rank
FROM d
), base AS (
SELECT INITCAP(c.label) AS collection
, c.mint_volume
, c.mint_volume_rank
, e.sales_volume
, e.sales_volume_rank
, c.mint_price
, COUNT(DISTINCT m.mint) AS n_mints
, COUNT(DISTINCT a.mint) AS n_sell
, 100 * (1 - (n_sell / n_mints)) AS pct_hold
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON l.address = m.mint
JOIN c ON c.label = l.label
JOIN e ON e.label = l.label
LEFT JOIN a ON a.mint = m.mint
GROUP BY 1, 2, 3, 4, 5, 6
ORDER BY sales_volume_rank
LIMIT 35
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY pct_hold DESC) AS rn
FROM base
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar) ELSE rn::varchar END AS clean_rn
, CONCAT(clean_rn, '. ', collection) AS label
FROM b2
ORDER BY label
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT token_metadata:Fur::string AS Fur
, AVG(sales_amount) AS avg_price
, MEDIAN(sales_amount) AS med_price
FROM solana.dim_nft_metadata m
JOIN solana.fact_nft_sales s ON s.mint = m.mint
WHERE project_name = 'Okay Bears'
GROUP BY 1
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY avg_price DESC) AS rn
FROM base
)
SELECT *
, CASE WHEN rn <= 10 THEN CONCAT('0', rn::varchar) ELSE rn END AS clean_rn
, CONCAT(clean_rn, '. ', Fur) AS value
FROM b2
ORDER BY value
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN s.block_timestamp::date <= '2022-05-04' THEN 'Apr 26 - May 4' ELSE 'After May 4' END AS sale_date
, CASE WHEN token_metadata:"Attribute Count"::string = '4' THEN '4 Att' ELSE 'Others' END AS bear_type
, CASE WHEN sale_date = 'Apr 26 - May 4' AND bear_type = '4 Att' THEN '1. Apr 26 - May 4: 4 Att'
WHEN sale_date = 'Apr 26 - May 4' THEN '2. Apr 26 - May 4: Others'
WHEN bear_type = '4 Att' THEN '3. After May 4: 4 Att'
ELSE '4. After May 4: Others' END AS sale_type
, AVG(s.sales_amount) AS avg_price
, MEDIAN(s.sales_amount) AS med_price
FROM solana.dim_nft_metadata m
JOIN solana.fact_nft_sales s ON s.mint = m.mint
WHERE project_name = 'Okay Bears'
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT CASE WHEN s.block_timestamp::date <= '2022-05-04' THEN 'Apr 26 - May 4' ELSE 'After May 4' END AS sale_date
, CASE WHEN token_metadata:"Attribute Count"::string = '4' THEN '4 Att' ELSE 'Others' END AS bear_type
, CASE WHEN sale_date = 'Apr 26 - May 4' AND bear_type = '4 Att' THEN '1. Apr 26 - May 4: 4 Att'
WHEN sale_date = 'Apr 26 - May 4' THEN '2. Apr 26 - May 4: Others'
WHEN bear_type = '4 Att' THEN '3. After May 4: 4 Att'
ELSE '4. After May 4: Others' END AS sale_type
, AVG(s.sales_amount) AS avg_price
, MEDIAN(s.sales_amount) AS med_price
FROM solana.dim_nft_metadata m
JOIN solana.fact_nft_sales s ON s.mint = m.mint
WHERE project_name = 'Okay Bears'
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
-- transfer_events_pk_count
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.transfer_events
WHERE block_timestamp >= 1655294400000000000
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM bronze_midgard_2_6_9_20220405.midgard_transfer_events
WHERE block_timestamp >= 1655294400000000000
AND block_timestamp <= 1655906524979260126
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
)
SELECT COUNT(1) AS n
, MAX(block_timestamp)
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
FROM midgard.transfer_events
WHERE from_addr IS NULL
OR to_addr IS NULL
OR asset IS NULL
OR amount_e8 IS NULL
OR block_timestamp IS NULL
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.transfer_events
WHERE block_timestamp >= 1655294400000000000
AND block_timestamp <= 1655906524979260126
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
, MAX(block_timestamp)
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.transfer_events
-- WHERE block_timestamp < 1620299757083512012
WHERE block_timestamp < 1620299000000000000
WHERE block_timestamp < 1640995200000000000
WHERE block_timestamp < 1637301700000000000
WHERE block_timestamp < 1633046400000000000
WHERE block_timestamp >= 1640995200000000000
AND block_timestamp < 1654041600000000000
AND block_timestamp < 1655294400000000000
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
-- bond_events_pk_count
SELECT tx
, chain
, from_addr
, to_addr
, asset
, asset_e8
, memo
, bond_type
, e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.bond_events
GROUP BY 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT tx
, COALESCE(chain, '') AS chain
, COALESCE(from_addr, '') AS from_addr
, COALESCE(to_addr, '') AS to_addr
, COALESCE(asset, '') AS asset
, asset_e8
, COALESCE(memo, '') AS memo
, bond_type
, e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.bond_events
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(tx) AS tx
, COUNT(chain) AS cahin
, COUNT(from_addr) As from_addr
, COUNT(to_addr) as to_address
, COUNT(asset) as asset
, COUNT(asset_e8) as asset_e8
, COUNT(memo) as memo
, COUNT(bond_type) as bond_type
, COUNT(e8) as 38
, COUNT(block_timestamp) as block_timestamp
, COUNT(1) AS cnt
FROM midgard.bond_events
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(tx) AS tx
, COUNT(chain) AS cahin
, COUNT(from_addr) As from_addr
, COUNT(to_addr) as to_address
, COUNT(asset) as asset
, COUNT(asset_e8) as asset_e8
, COUNT(memo) as memo
, COUNT(bond_type) as bond_type
, COUNT(e8) as 38
, COUNT(block_timestamp) as block_timestamp
, COUNT(1) AS cnt
FROM bronze_midgard_2_6_9_20220405.midgard_bond_events
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.thorchain.bond_actions
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.bronze_midgard_2_6_9_20220405.bond_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM midgard.bond_events
WHERE block_timestamp <= 1655880505782611860
-- fee_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.thorchain.fee_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.bronze_midgard_2_6_9_20220405.midgard_fee_events
SELECT INITCAP(l.label) AS collection
, SUM(s.sales_amount) AS volume
, AVG(s.sales_amount) AS avg_price
, MEDIAN(s.sales_amount) AS med_price
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
ORDER BY 2 DESC
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM midgard.fee_events
WHERE block_timestamp <= 1655330913000000000
WHERE block_timestamp <= 1655885723960048067
-- switch_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.thorchain.switch_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM flipside_dev_db.bronze_midgard_2_6_9_20220405.midgard_switch_events
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM midgard.switch_events
WHERE block_timestamp <= 1655884351385908318
-- switch_events_pk_count
SELECT tx
, from_addr
, to_addr
, burn_asset
, burn_e8
, mint_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.switch_events
GROUP BY 1, 2, 3, 4, 5, 6, 7
-- transfer_events_pk_count
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS cnt
FROM midgard.transfer_events
GROUP BY 1, 2, 3, 4, 5
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS n
FROM midgard.transfer_events
WHERE block_timestamp < 16540416000000000000
AND block_timestamp >= 16513632000000000000
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT from_addr
, to_addr
, asset
, amount_e8
, block_timestamp
, COUNT(1) AS n
FROM bronze_midgard_2_6_9_20220405.midgard_transfer_events
WHERE block_timestamp >= 1653048000000000000
GROUP BY 1, 2, 3, 4, 5
HAVING COUNT(1) > 1
)
SELECT MAX(block_timestamp) AS mx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events
LIMIT 10
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
SELECT DISTINCT LOWER(project_name) AS lower_collection
FROM solana.dim_nft_metadata
Solana thread on NFT Metadata
THORChain bounty question + grading
Met w/ 9R to discuss expectations
Discussing future bounty qs w/ community in Discord
WITH base AS (
SELECT s.block_timestamp::date AS date
, INITCAP(m.project_name) AS collection
, COUNT(1) AS n
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_nft_metadata m ON m.mint = s.mint
WHERE s.block_timestamp::date >= CURRENT_DATE - 7
GROUP BY 1, 2
ORDER BY 1, 2
2022-06-06 19:15:10 +00:00
), b2 AS (
SELECT *
2022-07-14 22:10:02 +00:00
, ROW_NUMBER() OVER (PARTITION BY date ORDER BY volume DESC) AS rn
FROM base
)
SELECT *
FROM b2
WHERE rn <= 10
WITH base AS (
SELECT s.block_timestamp::date AS date
, INITCAP(m.project_name) AS collection
, COUNT(1) AS n
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_nft_metadata m ON m.mint = s.mint
WHERE s.block_timestamp::date >= CURRENT_DATE - 20
GROUP BY 1, 2
ORDER BY 1, 2
), b2 AS (
2022-06-06 19:15:10 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, ROW_NUMBER() OVER (PARTITION BY date ORDER BY volume DESC) AS rn
FROM base
)
SELECT *
FROM b2
WHERE rn <= 1
WITH base AS (
SELECT s.mint, s.purchaser, s.block_timestamp AS date, s.sales_amount AS price
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'okay bears' AND s.mint = '2E9NM1zugqH253SKiUDN22xnaVgH5vZz44Pv1e4V3PZq'
2022-06-06 19:15:10 +00:00
UNION
2022-07-14 22:10:02 +00:00
SELECT s.mint, s.purchaser, s.block_timestamp AS date, s.mint_price AS price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'okay bears' AND s.mint = '2E9NM1zugqH253SKiUDN22xnaVgH5vZz44Pv1e4V3PZq'
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT * FROM base ORDER BY date
SELECT s.mint, s.purchaser, s.block_timestamp AS date, s.sales_amount AS price
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'okay bears' AND s.mint = '2E9NM1zugqH253SKiUDN22xnaVgH5vZz44Pv1e4V3PZq'
UNION
SELECT s.mint, s.purchaser, s.block_timestamp AS date, s.mint_price AS price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'okay bears' AND s.mint = '2E9NM1zugqH253SKiUDN22xnaVgH5vZz44Pv1e4V3PZq'
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT s.mint, s.purchaser
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'solana monkey Business'
UNION
SELECT s.mint, s.purchaser
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE l.label = 'solana monkey Business'
), b2 AS (
SELECT mint, COUNT(DISTINCT purchaser) AS n_owners
FROM base
GROUP BY 1
)
SELECT n_owners
, COUNT (1) AS n_mints
FROM b2
GROUP BY 1
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT INITCAP(l.label) AS collection
, date_trunc('week', s.block_timestamp) AS month
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE s.block_timestamp >= '2022-01-01'
GROUP BY 1, 2
), b2 AS (
SELECT collection
, COUNT(1) AS n_weeks
2022-06-06 19:15:10 +00:00
FROM base
2022-07-14 22:10:02 +00:00
WHERE volume >= 2000
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
), b3 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY n_weeks DESC, collection) AS rn
FROM b2
2022-06-06 19:15:10 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT *
, CONCAT(CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar) ELSE rn::varchar END, '. ', collection) AS label
, CASE WHEN collection = 'Famous Fox Federation' THEN 'Famous Fox Federation' ELSE 'Others' END AS is_fff
FROM b3
ORDER BY label
WITH base AS (
SELECT INITCAP(l.label) AS collection
, date_trunc('week', s.block_timestamp) AS month
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON m.address = s.mint
WHERE m.project_name ilike 'Famous Fox Federation'
AND s.block_timestamp >= '2021-12-01'
GROUP BY 1, 2
)
SELECT collection
, COUNT(1) AS n_weeks
FROM base
WHERE volume >= 1000
2022-06-06 19:15:10 +00:00
GROUP BY 1
2022-07-14 22:10:02 +00:00
ORDER BY 2 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
WITH base AS (
SELECT INITCAP(l.label) AS collection
, date_trunc('week', s.block_timestamp) AS month
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_nft_metadata m ON m.address = s.mint
WHERE s.block_timestamp >= '2021-12-01'
GROUP BY 1, 2
)
SELECT collection
, COUNT(1) AS n_weeks
FROM base
WHERE volume >= 1000
GROUP BY 1
ORDER BY 2 DESC
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
In terms of stuff that's been done before I think Meerkat Millionaires is closest to what we're going for, something friendly but with some swagger (and ours would be more like jocks than rich people). For other examples, Okay Bears + Catalina Whales also in this category.
A little different, but also loved the art from the Cyber Sam Gen 2 collection.
I'd also be open to something a little different, like what VBA game did. This pic that Michael found would be very intriguing.
2022-06-06 19:15:10 +00:00
2022-07-14 22:10:02 +00:00
Something like Meerkat Millionaires / Okay Bears / Catalina Whales
GP Review - how to get to Cantina
How to surface top analyst
Put into snowflake
Documentation over time
Weighting by difficulty
Breaking it into tiers
Check with Sam + Dan
Variable based on score - What does the data say about what
100,000
10,000 / day
User queries to compute user portfolio info in vaults
BI for blockchains.
Understand the nuances of the data - the impact of synths on liquidity providers
The impact of adding a new chain to the protocol
VBA Game
2022-06-06 19:15:10 +00:00
2022-05-17 21:52:44 +00:00
2022-05-01 05:50:55 +00:00
2022-05-04 00:24:11 +00:00
data-science
DKiZEzE-CZ+o59}L
boatpartydotbiz
2022-06-06 19:15:10 +00:00
sudo cp /rstudio-data/algorand_console_data.RData ~/
2022-07-14 22:10:02 +00:00
sudo cp ~/ntr_data.RData /rstudio-data/
sudo cp ~/nft_deal_score_data.RData /rstudio-data/
sudo cp ~/nft_deal_score_listings_data.RData /rstudio-data/
sudo cp ~/nft_deal_score_sales_data.RData /rstudio-data/
sudo cp ~/nft_deal_score_sales.csv /rstudio-data/
Coat_Black Jag
Big Drip_Spaced Out
Big Drip_Midnight
Head_King
Head_Brainfreeze
Head_Sahara Dropout
Mouth_Big Smoke
Mouth_Diamond Tasting
Body_Porcelain
Shoe_Froggies
Head_Smoothie Dropout
Accessories_Gold Bgb Chain
Solana NFT showcase
1. Banbannard
2. Zook
3. Multipartite
4. hernandezngronk
5. adriaparcerisas
SELECT COUNT(1) AS n
FROM midgard.slash_amounts
SELECT COUNT(1) AS n
FROM bronze_midgard_2_6_9_20220405.midgard_slash_amounts
2022-06-06 19:15:10 +00:00
SELECT pool
, asset
, asset_e8
, block_timestamp
, COUNT(1) AS n
, COUNT(1) AS n2
FROM bronze_midgard_2_6_9_20220405.midgard_slash_amounts
GROUP BY 1, 2, 3, 4
2022-07-14 22:10:02 +00:00
SELECT
node_address
, slash_points
, reason
, block_timestamp
, COUNT(1) AS n
FROM midgard.slash_points
GROUP BY 1, 2, 3, 4
ORDER BY 5 DESC
2022-06-06 19:15:10 +00:00
SELECT pool
, asset
, asset_e8
, block_timestamp
, COUNT(1) AS n
, COUNT(1) AS n2
FROM midgard.slash_amounts
2022-07-14 22:10:02 +00:00
GROUP BY 1, 2, 3, 4
SELECT
COUNT(1) AS n
FROM thorchain.slash_amounts
SELECT
COUNT(1) AS n
, COUNT(1) AS n2
FROM midgard.slash_amounts
2022-06-06 19:15:10 +00:00
sudo chmod 774 nft_deal_score_data.RData
ls -l
SELECT *
FROM thorchain.liquidity_actions
WHERE pool_name ilike '%vthor%'
LIMIT 100
SELECT pool, COUNT(1) as n
FROM bronze_midgard_2_6_9_20220405.midgard_stake_events
WHERE pool ilike '%thor%'
GROUP BY 1
LIMIT 100
2022-05-17 21:52:44 +00:00
[Python]
Enabled = true
Executable = /opt/python/3.10.4/bin/python
use_python('/opt/python/3.10.4/bin/python')
Sys.setenv(RETICULATE_PYTHON = '/opt/python/3.10.4/bin/python')
RETICULATE_PYTHON='/opt/python/3.10.4/bin/python'
library(reticulate)
2022-05-04 00:24:11 +00:00
grep -r 'update_nft_deal_score_data.RMD' ./
grep -R "touch" .
find ./ -name 'update_nft_deal_score_data.RMD' -print
Solana Monkey Business: https://api.flipsidecrypto.com/api/v2/queries/645b0dbc-f932-4389-a9b7-fcb1ae0c2c70/data/latest
Okay Bears: https://api.flipsidecrypto.com/api/v2/queries/265c2f2e-58cd-456b-951c-2bc49866c6ea/data/latest
Catalina Whale Mixer: https://api.flipsidecrypto.com/api/v2/queries/a66a796b-4e47-4acf-8195-69ea782c8f67/data/latest
LunaBulls: https://api.flipsidecrypto.com/api/v2/queries/4ddc8d39-ef6b-4f19-a1a2-893e3f597a5d/data/latest
Galactic Punks: https://api.flipsidecrypto.com/api/v2/queries/adeef975-6eeb-41f9-9952-cd82c5a4c668/data/latest
Galactic Angels: https://api.flipsidecrypto.com/api/v2/queries/0c450359-c3e9-4dd6-a349-20841a0ce1e0/data/latest
Levana Dragon Eggs: https://api.flipsidecrypto.com/api/v2/queries/f05e24fd-ad62-480b-905a-15ea334cbf48/data/latest
MAYC: https://api.flipsidecrypto.com/api/v2/queries/881d8b52-f6f7-4333-b92a-35a075e5ec65/data/latest
WITH base AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-rankings-%'
AND record_content[0]:collection = 'Solana Monkey Business'
), base2 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS old_floor
, t.value:cur_sd AS old_sd
, t.value:deal_score_rank AS deal_score_rank
, t.value:fair_market_price AS old_fair_market_price
, t.value:lin_coef AS lin_coef
, t.value:log_coef AS log_coef
, t.value:rarity_rank AS rarity_rank
, t.value:token_id AS token_id
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base
, LATERAL FLATTEN(
input => record_content
) t
), base3 AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-floors-%'
), base4 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS new_floor
, b.*
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base3 b
, LATERAL FLATTEN(
input => record_content
) t
), base5 AS (
SELECT b2.*
, b4.new_floor
FROM base2 b2
JOIN base4 b4 ON b2.collection = b4.collection AND b4.rn = 1
WHERE b2.rn = 1
), base6 AS (
SELECT *
, old_sd * new_floor / old_floor AS cur_sd
, old_fair_market_price + ((new_floor - old_floor) * lin_coef) + (( new_floor - old_floor) * log_coef * old_fair_market_price / old_floor) AS new_fair_market_price
FROM base5
)
SELECT collection
, token_id
, deal_score_rank
, rarity_rank
, new_floor AS floor_price
, ROUND(CASE WHEN new_fair_market_price < floor_price THEN floor_price ELSE new_fair_market_price END, 2) AS fair_market_price
, ROUND(CASE WHEN new_fair_market_price - cur_sd < floor_price * 0.975 THEN floor_price * 0.975 ELSE new_fair_market_price - cur_sd END, 2) AS price_low
, ROUND(CASE WHEN new_fair_market_price + cur_sd < floor_price * 1.025 THEN floor_price * 1.025 ELSE new_fair_market_price + cur_sd END, 2) AS price_high
FROM base6
WITH base3 AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
AND record_metadata:key like '%nft-deal-score-floors-%'
), base4 AS (
SELECT t.value:collection::string AS collection
, t.value:cur_floor AS new_floor
, b.*
, ROW_NUMBER() OVER (PARTITION BY collection ORDER BY record_metadata:CreateTime DESC) AS rn
FROM base3 b
, LATERAL FLATTEN(
input => record_content
) t
)
SELECT * FROM base4
2022-05-01 05:50:55 +00:00
block_timestamp = 1648541784259230029
SELECT *
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.MIDGARD_UNSTAKE_EVENTS
2022-05-01 05:50:55 +00:00
WHERE tx = '3E439D4DCA401602116BE07E2FB8751D6F491EE908E04A779D48780DF3972201'
SELECT MAX(timestamp)
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log
2022-05-01 05:50:55 +00:00
SELECT ABS(timestamp - 1648541784259230029) AS abs_dff
, (timestamp - 1648541784259230029) AS dff
, *
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log
2022-05-01 05:50:55 +00:00
ORDER BY abs_dff
LIMIT 100
WHERE timestamp = 1648541784259230029
SELECT l1.height AS missing_block_id
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log l1
LEFT JOIN FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log l2 ON l2.height = l1.height + 1
LEFT JOIN FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log l3 ON l3.height = l1.height - 1
2022-05-01 05:50:55 +00:00
WHERE (l2.height IS NULL OR l3.height IS NULL)
ORDER BY l1.height
2022-05-17 21:52:44 +00:00
SELECT *
FROM silver.prices_v2
WHERE recorded_at >= CURRENT_DATE - 2
AND symbol ilike '%gold%'
AND (name ilike '%defi%' OR name ilike '%dfk%')
LIMIT 100
2022-05-04 00:24:11 +00:00
SELECT date_trunc('week', block_timestamp) AS hour
, COUNT(1) AS n
, AVG(CASE WHEN SUCCEEDED = TRUE THEN 1.0 ELSE 0 END) AS pct_succeed
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 90
GROUP BY 1
Hat_Big Crown
Mouth_Wagmi Beach
Body_Oil Slick
2022-05-01 05:50:55 +00:00
1648541784259230029
1648541754719682517
29539547512 / 29539547512
29539547512 / 1000000000
35261826303 / 1000000000
not in
SELECT *
FROM FLIPSIDE_PROD_DB.thorchain_midgard_public.unstake_events
WHERE tx = '3E439D4DCA401602116BE07E2FB8751D6F491EE908E04A779D48780DF3972201'
SELECT *
FROM FLIPSIDE_PROD_DB.THORCHAIN_MIDGARD_PUBLIC.BLOCK_LOG
WHERE timestamp >= 1648541784259230029
ORDER BY timestamp DESC
LIMIT 100
SELECT MAX(timestamp)
FROM FLIPSIDE_PROD_DB.THORCHAIN_MIDGARD_PUBLIC.BLOCK_LOG
SELECT *
FROM FLIPSIDE_PROD_DB.thorchain_midgard_public.block_log
WHERE timestamp = 1648541784259230029
ORDER BY
SELECT *
FROM thorchain.unstake_events
WHERE emit_rune_e8 + emit_asset_e8 = 0
SELECT *
FROM thorchain.unstake_events
WHERE tx_id = '5815E4A96E9CBCD3CD24CADA4EB7765E0BFDC81D59ED945309BCD755FC969797'
SELECT *
FROM thorchain.liquidity_actions
WHERE RUNE_AMOUNT = 0 and asset_amount = 0
SELECT lp_action, COUNT(1) AS n
FROM thorchain.liquidity_actions
WHERE RUNE_AMOUNT = 0 and asset_amount = 0
GROUP BY 1
SELECT date_trunc('month', block_timestamp) AS month, COUNT(1) AS n
FROM thorchain.liquidity_actions
WHERE RUNE_AMOUNT = 0 and asset_amount = 0
GROUP BY 1
903 / 907 are remove_liquidity
Months are spread out
Research Question: How much value did each pool win/loose because of synths?
@Orion (9R)#3332 just to clarify - what do you mean by a pool winning / losing value in this case?
server {
listen 80;
server_name ec2-54-91-227-50.compute-1.amazonaws.com;
location / {
proxy_pass http://54.91.227.50;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
WITH
burns as (
SELECT
SPLIT_PART(x.from_asset, ',', 0) AS chain
count(distinct x.tx_id) as burns,
sum(x.from_amount_usd) as volume_burnt
FROM thorchain.swaps x, thorchain.swap_events y
WHERE x.tx_id=y.tx_id and memo like '%/%' and x.from_asset like '%/%' and x.to_asset not like '%/%'
GROUP BY 1
ORDER BY 1 DESC
),
mints as (
SELECT
SPLIT_PART(x.to_asset, ',', 0) AS chain
count(distinct x.tx_id) as mints,
sum(x.to_amount_usd) as volume_mint
FROM thorchain.swaps x, thorchain.swap_events y
WHERE x.tx_id=y.tx_id and memo like '%/%' and x.to_asset like '%/%' and x.from_asset not like '%/%'
GROUP BY 1
ORDER BY 1 DESC
),
rune_price as(
SELECT
trunc(hour,'day') as date,
avg(price) as rune_price
from ethereum.token_prices_hourly
where symbol ='RUNE'
group by 1
)
SELECT
x.chain,
mints,
burns,
volume_mint,
volume_burnt,
mints - burns AS net_mint_usd
from mints x, burns y where x.chain=y.chain
order by 1 asc
2022-05-17 21:52:44 +00:00
SELECT *
FROM THORCHAIN.BOND_ACTIONS
WHERE to_address like 'node%'
SELECT SUM(CASE WHEN from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' THEN -rune_amount ELSE rune_amount END) AS amount
, MAX(block_timestamp) as mx
, MAX(block_timestamp) as mx2
FROM thorchain.transfers
WHERE (from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR to_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
AND from_address <> to_address
SELECT SUM(CASE WHEN from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' THEN -rune_amount ELSE rune_amount END) AS amount
, MAX(block_timestamp) as mx
, MAX(block_timestamp) as mx2
FROM thorchain.transfers
WHERE (from_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR to_address = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
AND from_address <> to_address
SELECT SUM(CASE WHEN from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' THEN -amount_e8 ELSE amount_e8 END) * POWER(10, -8) AS amount
, MAX(block_timestamp) as mx
FROM midgard.transfers
WHERE (from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
AND from_addr <> to_addr
SELECT SUM(CASE WHEN from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' THEN -amount_e8 ELSE amount_e8 END) * POWER(10, -8) AS amount
, MAX(block_timestamp) as mx
FROM bronze_midgard_2_6_9_20220405
WHERE (from_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' OR to_addr = 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt')
AND from_addr <> to_addr
111,373,009
111,369,480
112109286 - 112109338
SELECT *
FROM bronze_midgard_2_6_9_20220405.bond_actions
WHERE to_addr like 'node%'
2022-05-01 05:50:55 +00:00
2022-04-20 22:47:18 +00:00
WITH base AS (
SELECT native_to_address, COUNT(1) AS n
FROM thorchain.swaps
WHERE block_timestamp >= '2022-04-01'
GROUP BY 1
)
select b.n, s.* from thorchain.swaps s
JOIN base b ON b.native_to_address = s.native_to_address
where block_timestamp >= '2022-04-10'
ORDER BY block_timestamp, n, tx_id
LIMIT 100
2022-05-17 21:52:44 +00:00
SELECT *
FROM thorchain.pool_balance_change_events
WHERE block_id = 5486400
2022-04-20 22:47:18 +00:00
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_dev_db.thorchain.liquidity_actions
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_dev_db.thorchain.liquidity_actions
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_dev_db.thorchain.bond_actions
SELECT
https://app.flipsidecrypto.com/dashboard/small-lp-actions-LD1XQ9
https://app.flipsidecrypto.com/dashboard/pool-ranks-UbtLg9
https://app.flipsidecrypto.com/dashboard/price-shift-_-JpTq
https://app.flipsidecrypto.com/dashboard/tho-rchain-average-age-of-synth-holders-Z2AXIx
https://app.flipsidecrypto.com/dashboard/thor-64-standardized-tvl-over-time-all-pools-Zf6w-L
https://app.flipsidecrypto.com/dashboard/tho-rchain-pool-ranks-RNNzza
https://app.flipsidecrypto.com/dashboard/thorchain-synth-mints-burns-aH0lCY
https://discord.com/channels/889577356681945098/889577399308656662/951960381411192842
solana-keygen recover 'prompt:?key=3/0' --outfile ~/.config/solana/tmp.json
SELECT *
, instructions[0]:parsed:info:lamports / POWER(10, 9) AS sol_amount
FROM solana.fact_transactions
WHERE block_timestamp >= '2022-01-02'
AND tx_id = '5H6UQqbxa2wtryax6SAZgjXB9B6Za4ip6GsheqopAsbLCrLMPvYf35H551SaAKNy6bi6BceRGtkwwP9LRoN7RiVo'
SELECT *
FROM solana.fact_transfers
WHERE block_timestamp >= '2022-01-02'
AND tx_id = '393xRouisz4DuMxzARAqPy7FVYQZtkfpmAMuDXXj39uvASFYtMijHM9hyVzXSocsB4fk2woLNfnWTM4qXJxJsWBw'
SELECT lp.tx_id
, lp.signers[0] as signer
, t.instructions[0]:parsed:info:lamports / POWER(10, 9) AS sol_amount
FROM solana.fact_staking_lp_actions lp
JOIN solana.fact_transactions t ON t.tx_id = lp.tx_id
WHERE lp.block_timestamp >= '2022-01-01'
AND lp.event_type = 'delegate'
AND tx_id = '393xRouisz4DuMxzARAqPy7FVYQZtkfpmAMuDXXj39uvASFYtMijHM9hyVzXSocsB4fk2woLNfnWTM4qXJxJsWBw'
LIMIT 10
sudo apt-get build-dep python E: You must put some 'deb-src' URIs in your sources.list
SELECT project_name
, COUNT(1) AS n
, SUM( CASE WHEN address IS NULL THEN 1 ELSE 0 END) AS n_nulls
FROM crosschain.address_labels
WHERE blockchain = 'solana'
AND label_subtype = 'nf_token_contract'
GROUP BY 1
2022-05-01 05:50:55 +00:00
WITH base AS (
SELECT *
FROM flipside_prod_db.bronze.prod_data_science_uploads_1748940988
WHERE record_content[0]:collection IS NOT NULL
)
SELECT t.value FROM base
, LATERAL FLATTEN(
input => record_content
) t
SELECT *
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 2
AND instructions[0]:program_id::string = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
LIMIT 100
SELECT instructions[0]:data::string AS data
, COUNT(1) AS n
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 2
AND instructions[0]:programId::string = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
AND tx_id = '4wfERHL5E5mDhDA4AB6bbhxtwjWh5kvPWyVVD8rWuZ6rWxzBctxhXRPHNxxU6Jpfx34dG8R3nWqvLZRGzSmHsErJ'
GROUP BY 1
SELECT instructions[0]:data::string AS data
, *
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 2
AND instructions[0]:programId::string = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
AND tx_id = '4wfERHL5E5mDhDA4AB6bbhxtwjWh5kvPWyVVD8rWuZ6rWxzBctxhXRPHNxxU6Jpfx34dG8R3nWqvLZRGzSmHsErJ'
LIMIT 100
WITH base AS (
SELECT instructions[0]:data::string AS data
, instructions[0]:programId::string AS program_id
, *
FROM solana.fact_transactions
WHERE block_timestamp >= CURRENT_DATE - 2
//AND instructions[0]:programId::string = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
AND tx_id = '25XwyS9jjZqs9xxqtVkRPRDRkydsrcCG9QMeqJMeY32ZQzMrSCpc9mdbUJFxMQDMfCNfB1E122krRKLTHW2JPoEx'
LIMIT 10
)
SELECT t.value FROM base
, LATERAL FLATTEN(
input => instructions
) t
2022-04-20 22:47:18 +00:00
-- MEv1 De-Listing
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
)
SELECT pre_token_balances[0]:mint::string AS mint
, t.*
, m.project_name
, m.token_id
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 30
AND tx_id = '3CxhnTCXYX1zH6HbNESFsZLwdHfTe7RUYF8tAgB168hciVjUGggp2PwVEsnDvpd2kNqMha7kH2be7NtSTppAnXzn'
AND instructions[0]:data = 'TE6axTojnpk'
AND instructions[0]:programId = 'MEisE1HzehtrDpAAT8PnLHjpSSkRYakotTuJRPjTpo8'
AND succeeded = TRUE
LIMIT 100
ENwHiaH9NA9veUqRzGozjWnTuR9xcNvHcPZVFMi3Ca9L
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
)
SELECT instructions[0]:data AS data
, COUNT(1) AS n
, COUNT(1) AS nn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= '2022-04-17'
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
GROUP BY 1
ORDER BY 2 DESC
-- MEv2 De-Listing
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
), rem AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS remove_tx
, block_timestamp AS remove_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('ENwH','3GyW')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
), add AS (
SELECT pre_token_balances[0]:mint::string AS mint
, m.project_name
, m.token_id
, t.tx_id AS listing_tx
, block_timestamp AS listing_time
, ROW_NUMBER() OVER (PARTITION BY mint ORDER BY block_timestamp DESC) AS rn
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 3
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
)
SELECT a.*
, r.remove_tx
, r.remove_time
, CASE WHEN r.remove_time IS NULL OR a.listing_time > r.remove_time THEN 1 ELSE 0 END AS is_listed
FROM add a
LEFT JOIN rem r ON r.mint = a.mint AND r.rn = 1
WHERE a.rn = 1
thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj
WITH base AS (
SELECT from_address AS address
, block_timestamp::date AS date
, -from_amount AS amount
, 'From Swap' AS tx_type
FROM thorchain.swaps
WHERE from_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
AND from_asset = 'THOR.RUNE'
UNION ALL
SELECT native_to_address AS address
, block_timestamp::date AS date
, to_amount AS amount
, 'To Swap' AS tx_type
FROM thorchain.swaps
WHERE native_to_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
AND to_asset = 'THOR.RUNE'
UNION ALL
SELECT from_address AS address
, block_timestamp::date AS date
, -rune_amount AS amount
, 'From Transfer' AS tx_type
FROM thorchain.transfers
WHERE from_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
UNION ALL
SELECT to_address AS address
, block_timestamp::date AS date
, rune_amount AS amount
, 'To Transfer' AS tx_type
FROM thorchain.transfers
WHERE to_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
)
SELECT *
FROM base
ORDER BY date DESC
SELECT *
FROM THORCHAIN.DAILY_POOL_STATS
WHERE pool_name ilike '%luna%'
ORDER BY day DESC
WITH base AS (
SELECT from_address AS address
, block_timestamp::date AS date
, rune_amount AS lp_amount
, 'Add LP' AS tx_type
FROM thorchain.liquidity_actions
WHERE from_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
AND lp_action = 'add_liquidity'
UNION ALL
SELECT from_address AS address
, block_timestamp::date AS date
, -rune_amount AS lp_amount
, 'Rem LP' AS tx_type
FROM thorchain.liquidity_actions
WHERE from_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
AND lp_action = 'remove_liquidity'
UNION ALL
SELECT native_to_address AS address
, block_timestamp::date AS date
, to_amount AS amount
, 'To Swap' AS tx_type
FROM thorchain.swaps
WHERE native_to_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
AND to_asset = 'THOR.RUNE'
UNION ALL
SELECT from_address AS address
, block_timestamp::date AS date
, -rune_amount AS amount
, 'From Transfer' AS tx_type
FROM thorchain.transfers
WHERE from_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
UNION ALL
SELECT to_address AS address
, block_timestamp::date AS date
, rune_amount AS amount
, 'To Transfer' AS tx_type
FROM thorchain.transfers
WHERE to_address = 'thor12209cxpf4mpm8qxdyzmm4k8mfuyjt4fysnwyjj'
)
SELECT *
FROM base
ORDER BY date DESC
-- 2B3v: listing
-- ENwH: de-listing
-- 3GyW: sale
WITH mints AS (
SELECT DISTINCT project_name
, mint
, token_id
FROM solana.dim_nft_metadata
)
SELECT pre_token_balances[0]:mint::string AS mint
, t.*
, m.project_name
, m.token_id
FROM solana.fact_transactions t
JOIN mints m ON m.mint = t.pre_token_balances[0]:mint::string
WHERE block_timestamp >= CURRENT_DATE - 2
AND tx_id = '3CxhnTCXYX1zH6HbNESFsZLwdHfTe7RUYF8tAgB168hciVjUGggp2PwVEsnDvpd2kNqMha7kH2be7NtSTppAnXzn'
AND LEFT(instructions[0]:data::string, 4) IN ('2B3v')
AND instructions[0]:programId = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K'
AND succeeded = TRUE
LIMIT 100
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.liquidity_actions
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.prices
liquidity_actions
bond_actions
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.bond_actions
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.pool_block_balances
WHERE rune_amount > 0 and COALESCE(rune_amount_usd, 0) = 0
SELECT MIN(block_timestamp) AS mn
, MAX(block_timestamp) AS mx
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.pool_block_balances
WHERE asset_amount > 0 and COALESCE(asset_amount_usd, 0) = 0
SELECT *
FROM flipside_prod_db.thorchain.pool_block_balances
WHERE (asset_amount > 0 and COALESCE(asset_amount_usd, 0) = 0)
OR (rune_amount > 0 and COALESCE(rune_amount_usd, 0) = 0)
ORDER BY block_timestamp DESC
LIMIT 10000
SELECT block_timestamp::date AS date
, COUNT(1) AS n
FROM flipside_prod_db.thorchain.pool_block_balances
WHERE (asset_amount > 0 and COALESCE(asset_amount_usd, 0) = 0)
OR (rune_amount > 0 and COALESCE(rune_amount_usd, 0) = 0)
ORDER BY block_timestamp DESC
GROUP BY 1
ORDER BY 1
2022-04-11 04:07:14 +00:00
WITH active_vault_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'active_vault_events' AS "table"
FROM thorchain.active_vault_events),
add_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'add_events' AS "table"
FROM thorchain.add_events),
asgard_fund_yggdrasil_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'asgard_fund_yggdrasil_events' AS "table"
FROM thorchain.asgard_fund_yggdrasil_events),
block_pool_depths_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'block_pool_depths' AS "table"
FROM thorchain.block_pool_depths),
block_rewards_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'block_rewards' AS "table"
FROM thorchain.block_rewards),
bond_actions_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'bond_actions' AS "table"
FROM thorchain.bond_actions),
bond_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'bond_events' AS "table"
FROM thorchain.bond_events),
constants_cte AS
(SELECT 'NA for this table' AS recency, 'NA for this table' AS start_time,
'constants' AS "table"
FROM thorchain.constants),
daily_earnings_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'daily_earnings' AS "table"
FROM thorchain.daily_earnings),
daily_pool_stats_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'daily_pool_stats' AS "table"
FROM thorchain.daily_pool_stats),
daily_tvl_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'daily_tvl' AS "table"
FROM thorchain.daily_tvl),
errata_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'errata_events' AS "table"
FROM thorchain.errata_events),
fee_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'fee_events' AS "table"
FROM thorchain.fee_events),
gas_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'gas_events' AS "table"
FROM thorchain.gas_events),
inactive_vault_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'inactive_vault_events' AS "table"
FROM thorchain.inactive_vault_events),
liquidity_actions_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'liquidity_actions' AS "table"
FROM thorchain.liquidity_actions),
message_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'message_events' AS "table"
FROM thorchain.message_events),
new_node_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'new_node_events' AS "table"
FROM thorchain.new_node_events),
outbound_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'outbound_events' AS "table"
FROM thorchain.outbound_events),
pending_liquidity_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'pending_liquidity_events' AS "table"
FROM thorchain.pending_liquidity_events),
pool_balance_change_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'pool_balance_change_events' AS "table"
FROM thorchain.pool_balance_change_events),
pool_block_balances_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'pool_block_balances' AS "table"
FROM thorchain.pool_block_balances),
pool_block_fees_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'pool_block_fees' AS "table"
FROM thorchain.pool_block_fees),
pool_block_statistics_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'pool_block_statistics' AS "table"
FROM thorchain.pool_block_statistics),
pool_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'pool_events' AS "table"
FROM thorchain.pool_events),
prices_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'prices' AS "table"
FROM thorchain.prices),
refund_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'refund_events' AS "table"
FROM thorchain.refund_events),
reserve_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'reserve_events' AS "table"
FROM thorchain.reserve_events),
rewards_event_entries_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'rewards_event_entries' AS "table"
FROM thorchain.rewards_event_entries),
rewards_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'rewards_events' AS "table"
FROM thorchain.rewards_events),
set_ip_address_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'set_ip_address_events' AS "table"
FROM thorchain.set_ip_address_events),
set_mimir_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'set_mimir_events' AS "table"
FROM thorchain.set_mimir_events),
set_node_keys_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'set_node_keys_events' AS "table"
FROM thorchain.set_node_keys_events),
set_version_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'set_version_events' AS "table"
FROM thorchain.set_version_events),
slash_amounts_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'slash_amounts' AS "table"
FROM thorchain.slash_amounts),
stake_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'stake_events' AS "table"
FROM thorchain.stake_events),
swap_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'swap_events' AS "table"
FROM thorchain.swap_events),
swaps_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'swaps' AS "table"
FROM thorchain.swaps),
switch_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'switch_events' AS "table"
FROM thorchain.switch_events),
thorname_change_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'thorname_change_events' AS "table"
FROM thorchain.thorname_change_events),
total_block_rewards_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'total_block_rewards' AS "table"
FROM thorchain.total_block_rewards),
total_value_locked_cte AS
(SELECT max(day)::string AS recency, min(day)::string AS start_time,
'total_value_locked' AS "table"
FROM thorchain.total_value_locked),
transfer_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'transfer_events' AS "table"
FROM thorchain.transfer_events),
transfers_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'transfers' AS "table"
FROM thorchain.transfers),
unstake_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'unstake_events' AS "table"
FROM thorchain.unstake_events),
update_node_account_status_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'update_node_account_status_events' AS "table"
FROM thorchain.update_node_account_status_events),
upgrades_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'upgrades' AS "table"
FROM thorchain.upgrades),
validator_request_leave_events_cte AS
(SELECT max(block_timestamp)::string AS recency, min(block_timestamp)::string AS start_time,
'validator_request_leave_events' AS "table"
FROM thorchain.validator_request_leave_events)
SELECT *
FROM active_vault_events_cte
UNION
SELECT *
FROM add_events_cte
UNION
SELECT *
FROM asgard_fund_yggdrasil_events_cte
UNION
SELECT *
FROM block_pool_depths_cte
UNION
SELECT *
FROM block_rewards_cte
UNION
SELECT *
FROM bond_actions_cte
UNION
SELECT *
FROM bond_events_cte
UNION
SELECT *
FROM constants_cte
UNION
SELECT *
FROM daily_earnings_cte
UNION
SELECT *
FROM daily_pool_stats_cte
UNION
SELECT *
FROM daily_tvl_cte
UNION
SELECT *
FROM errata_events_cte
UNION
SELECT *
FROM fee_events_cte
UNION
SELECT *
FROM gas_events_cte
UNION
SELECT *
FROM inactive_vault_events_cte
UNION
SELECT *
FROM liquidity_actions_cte
UNION
SELECT *
FROM message_events_cte
UNION
SELECT *
FROM new_node_events_cte
UNION
SELECT *
FROM outbound_events_cte
UNION
SELECT *
FROM pending_liquidity_events_cte
UNION
SELECT *
FROM pool_balance_change_events_cte
UNION
SELECT *
FROM pool_block_balances_cte
UNION
SELECT *
FROM pool_block_fees_cte
UNION
SELECT *
FROM pool_block_statistics_cte
UNION
SELECT *
FROM pool_events_cte
UNION
SELECT *
FROM prices_cte
UNION
SELECT *
FROM refund_events_cte
UNION
SELECT *
FROM reserve_events_cte
UNION
SELECT *
FROM rewards_event_entries_cte
UNION
SELECT *
FROM rewards_events_cte
UNION
SELECT *
FROM set_ip_address_events_cte
UNION
SELECT *
FROM set_mimir_events_cte
UNION
SELECT *
FROM set_node_keys_events_cte
UNION
SELECT *
FROM set_version_events_cte
UNION
SELECT *
FROM slash_amounts_cte
UNION
SELECT *
FROM stake_events_cte
UNION
SELECT *
FROM swap_events_cte
UNION
SELECT *
FROM swaps_cte
UNION
SELECT *
FROM switch_events_cte
UNION
SELECT *
2022-07-14 22:10:02 +00:00
FROM thorname_change_events_cte
UNION
SELECT *
FROM total_block_rewards_cte
UNION
SELECT *
FROM total_value_locked_cte
UNION
SELECT *
FROM transfer_events_cte
UNION
SELECT *
FROM transfers_cte
UNION
SELECT *
FROM unstake_events_cte
UNION
SELECT *
FROM update_node_account_status_events_cte
UNION
SELECT *
FROM upgrades_cte
UNION
SELECT *
FROM validator_request_leave_events_cte
SELECT s.block_timestamp::date AS date
, COUNT(1) AS num_sales
, SUM(sales_amount) AS volume
, volume / num_sales AS avg_sale_price
FROM solana.dim_nft_metadata m
JOIN solana.fact_nft_sales s ON s.mint_address = m.mint_address
WHERE m.project_name = 'Cets On Creck'
GROUP BY 1
WITH base AS (
SELECT *
, synth_amount / asset_amount AS ratio
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp DESC) AS rn
FROM THORCHAIN.POOL_BLOCK_BALANCES
WHERE block_timestamp >= '2022-04-04'
ORDER BY block_timestamp DESC, ratio DESC
LIMIT 100
)
SELECT *
FROM base
WHERE rn = 1
SELECT pool_name
, SUM(COALESCE(rune_amount_usd, 0) + COALESCE(asset_amount_usd, 0)) AS amount_usd
, SUM(COALESCE(il_protection_usd, 0)) AS il_protection_usd
FROM thorchain.liquidity_actions
WHERE lp_action = 'remove_liquidity'
GROUP BY 1
WITH f AS (
SELECT l.label
, MIN(block_timestamp) AS start_time
, MIN(block_timestamp::date) AS start_date
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE marketplace LIKE 'magic%'
AND block_timestamp >= '2022-05-01'
GROUP BY 1
)
SELECT start_time::date AS date
, l.label
, COUNT(1) AS n_sales
, SUM(sales_amount) AS volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON l.address = s.mint
JOIN f ON DATEADD('minute', 60 * 12, start_time) >= block_timestamp AND l.label = f.label
JOIN m ON m.start_date = f.start_date AND l.label = m.label
WHERE date >= '2022-05-10'
GROUP BY 1, 2
ORDER BY 3 DESC
SELECT l.label
, (block_timestamp::date) AS start_date
, COUNT(1) AS n
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON l.address = s.mint
WHERE block_timestamp >= '2022-05-01'
AND l.label = 'fine fillies'
GROUP BY 1, 2
Blocksmith Labs
Cets on Creck
Citizens by Solsteads
Dazed Duck
Degen Trash Pandas
Famous Foxes
Galactic Gecko
Generous Robots
Ghostface Gen 2
Marinade Chefs
Portals
Psyker Hideouts
Smoke Heads
Solstein
The Orcs
The Remnants
The Tower
The Vaultx DAO
Visionary Studios
SELECT COALESCE(tx) as tx
, COUNT(from_addr) as from_addr
, COUNT(to_addr) as to_addr
, COUNT(burn_asset) AS burn_asset
, COUNT(burn_e8) AS burn_e8
, COUNT(mint_e8) AS mint_e8
, COUNT(block_timestamp) AS block_timestamp
, COUNT(1) AS cnt
FROM midgard.switch_events
-- check upgrades to make sure it has mint amount
-- check switch events to make sure number of rows is right
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
, MAX(block_timestamp) AS mxx
FROM flipside_dev_db.thorchain.upgrades
SELECT COUNT(1) AS n
, MAX(block_timestamp) AS mx
, MAX(block_timestamp) AS mxx
FROM midgard.switch_events
WHERE block_timestamp <= 1656483014000000000
goes as profile.yml in ~/.dbt/
dbt deps to install dependencies
dbt test
dbt run --full-refresh -s models/thorchain
dbt run --full-refresh -s models/crosschain
dbt run --full-refresh -s models/thorchain/dbt/thorchain_dbt__fee_events_pk_count.sql
dbt test -s models/thorchain
dbt run --full-refresh -s models/crosschain
dbt test -s models/crosschain
WITH first_sale AS (
SELECT l.label
, MIN(s.block_timestamp) AS mn_date
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
HAVING mn_date >= CURRENT_DATE - 7
)
SELECT INITCAP(l.label) AS collection
, SUM(s.sales_amount) AS volume
, AVG(s.sales_amount) AS avg_price
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
JOIN first_sale f ON f.label = l.label
WHERE s.sales_amount > 0
ORDER BY 2 DESC
WITH first_sale AS (
SELECT l.label
, MIN(s.block_timestamp) AS mn_date
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
GROUP BY 1
HAVING mn_date::date = '2022-06-28'
)
SELECT INITCAP(l.label) AS collection
, SUM(s.sales_amount) AS volume
, AVG(s.sales_amount) AS avg_price
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.address = s.mint
JOIN first_sale f ON f.label = l.label
WHERE s.sales_amount > 0
GROUP BY 1
ORDER BY 2 DESC
WITH base AS (
SELECT node_address
, slash_points
, reason
, block_timestamp
, COUNT(1) AS n
FROM midgard.slash_points
GROUP BY 1, 2, 3, 4
HAVING COUNT(1) > 1
)
SELECT COUNT(1)
FROM base
with data_token_transfer as (
select
substring(input_data, 202, 1), tx_hash
from
ethereum.core.fact_transactions
where
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
origin_function_signature = '0x0f5287b0' -- tokenTransfer
and
status = 'SUCCESS'
and
substring(input_data, 202, 1)::string = '1' -- solana
)
, data_token as (
select
block_timestamp::date as date,
symbol,
sum(amount_usd) as total,
sum(amount) as total_tokens
from
ethereum.core.ez_token_transfers
where
tx_hash in (select tx_hash from data_token_transfer)
and
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
symbol is not null
and
amount_usd > 0
group by 1, 2
)
, eth_price as (
select
hour,
price
from
ethereum.core.fact_hourly_token_prices
where
token_address = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
)
, data_eth as (
select
date_trunc('hour', block_timestamp) as hour,
sum(eth_value) as total_eth
from
ethereum.core.fact_transactions
where
substring(input_data, 74, 1)::string = '1' -- solana
and
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
status = 'SUCCESS'
and
origin_function_signature = '0x9981509f' -- wrapAndTransfer
group by 1
)
, data_token_eth as (
select hour::date as date, 'ETH' as symbol, sum(total) as total, sum(total_eth) as total_tokens from (
select
a.hour, total_eth*price as total, total_eth
from data_eth a join eth_price b on a.hour = b.hour
) dd group by 1
)
, data_tokens as (
select * from (
select
date_trunc('month', date) as months,
symbol,
sum(total) as total_volumes,
sum(total_tokens) as total_volumes_tokens,
row_number() over (partition by months order by total_volumes desc) as nomor
from (
select * from data_token
union all
select * from data_token_eth ) ee group by 1, 2 ) ff where nomor = 1
)
select * from data_tokens
with data_token_transfer as (
select
substring(input_data, 202, 1), tx_hash
from
ethereum.core.fact_transactions
where
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
origin_function_signature = '0x0f5287b0' -- tokenTransfer
and
status = 'SUCCESS'
and
substring(input_data, 202, 1)::string = '1' -- solana
)
, data_token as (
select
block_timestamp::date as date,
symbol,
sum(amount_usd) as total,
sum(amount) as total_tokens
from
ethereum.core.ez_token_transfers
where
tx_hash in (select tx_hash from data_token_transfer)
and
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
symbol is not null
and
amount_usd > 0
group by 1, 2
)
, eth_price as (
select
hour,
price
from
ethereum.core.fact_hourly_token_prices
where
token_address = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
)
, data_eth as (
select
date_trunc('hour', block_timestamp) as hour,
sum(eth_value) as total_eth
from
ethereum.core.fact_transactions
where
substring(input_data, 74, 1)::string = '1' -- solana
and
to_address = '0x3ee18b2214aff97000d974cf647e7c347e8fa585'
and
status = 'SUCCESS'
and
origin_function_signature = '0x9981509f' -- wrapAndTransfer
group by 1
)
, data_token_eth as (
select hour::date as date, 'ETH' as symbol, sum(total) as total, sum(total_eth) as total_tokens from (
select
a.hour, total_eth*price as total, total_eth
from data_eth a join eth_price b on a.hour = b.hour
) dd group by 1
)
, data_tokens as (
select * from (
select
date_trunc('month', date) as months,
symbol,
sum(total) as total_volumes,
sum(total_tokens) as total_volumes_tokens,
row_number() over (partition by months order by total_volumes desc) as nomor
from (
select * from data_token
union all
select * from data_token_eth ) ee group by 1, 2 ) ff where nomor = 1
)
select * from data_tokens
SELECT node_address
, slash_points
, reason
, block_timestamp
, COUNT(1) AS n
FROM midgard.slash_points
GROUP BY 1, 2, 3, 4
HAVING n > 1
SELECT chain, COUNT(1) AS n
, MIN(block_timestamp) as mn
FROM BRONZE_MIDGARD_2_6_9_20220405.MIDGARD_ADD_EVENTS
GROUP BY 1
SELECT COUNT(1) AS N
, MAX(block_timestamp) as mx
, MAX(block_timestamp) as mx2
FROM THORCHAIN.THORNAME_CHANGE_EVENTS
SELECT *
FROM solana.core.dim_nft_metadata
WHERE mint = '6XxjKYFbcndh2gDcsUrmZgVEsoDxXMnfsaGY6fpTJzNr'
SELECT *
FROM solana.core.fact_nft_sales
WHERE tx_id IN (
'vsqqEKqud1LEC5zX7FuXwHmaqpza6tC6vtig8iWyuaJkfAUUFtpgvmdMVenrBJKyc7c9QdbpMs1WKDJNPtELfcV'
, '52MBuWHddd23EaokX4LgbQvor15HfDv3pBPvrTL8txWTewRdh6oZmZZyaVHCLbE4fvSTBJZWza7z4sp1kKMvJw5F'
)
SELECT marketplace
, seller
, COUNT(1) AS n
FROM solana.core.fact_nft_sales
WHERE marketplace = 'solport'
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 100
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
git remote set-url origin https://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@github.com/kblumberg/props-program.git
9zQABKCHpQaHhbA
SELECT *
FROM solana.core.fact_nft_sales
WHERE seller = 'CCWxahZcw47EsH8pavCeNKeGbpGNEs5JEKQ17fjP4ehA'
ORDER BY block_timestamp DESC
SELECT marketplace
, seller
, COUNT(1) AS n
FROM solana.core.fact_nft_sales
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 100
SELECT s.block_timestamp
, s.block_timestamp::date AS date
, s.marketplace
, s.tx_id
, s.mint
, s.sales_amount
, m.token_metadata:"Attribute Count"::string AS "Attribute Count"
, m.token_metadata:"Background"::string AS "Background"
, m.token_metadata:"Body"::string AS "Body"
, m.token_metadata:"Clothing"::string AS "Clothing"
, m.token_metadata:"Eyes"::string AS "Eyes"
, m.token_metadata:"Glasses"::string AS "Glasses"
, m.token_metadata:"Hair Hole"::string AS "Hair Hole"
, m.token_metadata:"Hat"::string AS "Hat"
, m.token_metadata:"Helmet"::string AS "Helmet"
, m.token_metadata:"Mouth"::string AS "Mouth"
, m.token_metadata:"Ski Mask"::string AS "Ski Mask"
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_nft_metadata m ON m.mint = s.mint
WHERE m.project_name ilike 'catalina whale%'
AND sales_amount > 0
SELECT s.block_timestamp
, s.block_timestamp::date AS date
, s.marketplace
, s.tx_id
, s.mint
, s.sales_amount
, m.token_metadata:"Accessories"::string AS "Accessories"
, m.token_metadata:"Attribute Count"::string AS "Attribute Count"
, m.token_metadata:"Background"::string AS "Background"
, m.token_metadata:"Big Drip"::string AS "Big Drip"
, m.token_metadata:"Body"::string AS "Body"
, m.token_metadata:"Coat"::string AS "Coat"
, m.token_metadata:"Eyes"::string AS "Eyes"
, m.token_metadata:"Head"::string AS "Head"
, m.token_metadata:"Mouth"::string AS "Mouth"
, m.token_metadata:"Shoe"::string AS "Shoe"
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_nft_metadata m ON m.mint = s.mint
WHERE m.project_name = 'Bubblegoose Ballers'
AND sales_amount > 0
ORDER BY block_timestamp DESC
With labeled_table as
(Select distinct m.mint, m.purchaser,Solana.core.dim_labels.LABEL,
m.mint_price,m.BLOCK_TIMESTAMP,m.mint_currency
From Solana.core.fact_nft_mints m
INNER JOIN solana.core.dim_labels on m.MINT = solana.core.dim_labels.ADDRESS
where m.mint_currency = 'So11111111111111111111111111111111111111111'
and m.mint_price > 0.1 ),
person as(Select *
from solana.core.fact_nft_mints
order by purchaser),
firstsale as(
Select Distinct mint,sales_amount,block_timestamp
From (SELECT RANK() OVER (PARTITION BY mint order by block_timestamp)
as RN,mint,sales_amount,block_TIMESTAMP //as date
from solana.core.fact_nft_sales WHERE sales_amount > 0) as ST
Where ST.RN = 1
),
purchaser_table as(Select person.purchaser
,sum(cast(firstsale.sales_amount as decimal(12,3)) - cast(person.mint_price as decimal(12,3))) as profit_sol
from person
Inner join firstsale on person.mint = firstsale.mint
group by purchaser
order by profit_sol desc
limit 100),
ayo as (Select moon.purchaser as purchaser, count(distinct moon.label) as collection_number
from labeled_table moon
group by purchaser
order by collection_number desc)
select ayo.purchaser,ayo.collection_number, purchaser_table.profit_sol
from ayo
inner join purchaser_table on ayo.purchaser = purchaser_table.purchaser
order by profit_sol desc
SELECT *
FROM solana.core.fact_transfers
WHERE tx_to_address = '9zky78suDwh8t8mPbBCP4nr2Ew9pH2e1kLJMvMGDFT6L'
OR tx_from_address = '9zky78suDwh8t8mPbBCP4nr2Ew9pH2e1kLJMvMGDFT6L'
WITH base AS (
SELECT instructions[0]:parsed:info:source::string AS source
, instructions[0]:parsed:info:destination::string AS destination
, instructions[0]:parsed:info:lamports AS lamports
FROM solana.core.fact_transactions
WHERE tx_id = '5R1cRC8KUgPPDnZz19bbNBJvw6Me1THPTEkDVYLYQRPN97ptrtKVnne1SgFRccH6Go4EKD9bdkobjgYbRkdgSkwZ'
AND instructions[0]:programId = '11111111111111111111111111111111'
AND instructions[0]:parsed:type = 'transfer'
AND ARRAY_SIZE(instructions) = 1
)
With person as(Select *
from solana.core.fact_nft_mints
where mint_price > 0.1
order by purchaser),
--gets a specific person and all thier transactions from the mint table
firstsale as(
Select mint,sales_amount,block_timestamp
From (SELECT RANK() OVER (PARTITION BY mint order by block_timestamp)
as RN,mint,sales_amount,block_TIMESTAMP //as date
from solana.core.fact_nft_sales) as ST
Where ST.RN = 1
)
--need to find the first transaction for each mint address
--this gets the person and than the first sales of the nft by mint and than finds it based on the mint adress of purchaser
Select person.purchaser
,sum(cast(firstsale.sales_amount as decimal(12,3)) - cast(person.mint_price as decimal(12,3))) as profit_sol
from person
Inner join firstsale on person.mint = firstsale.mint
group by purchaser
order by profit_sol desc
SELECT ROUND(mint_price, 3) AS mp, COUNT(1) AS n
, COUNT(1) AS nn
FROM solana.dim_labels
JOIN solana.fact_nft_mints m ON LOWER(m.mint) = LOWER(l.address)
WHERE project_name = 'taiyo oil'
GROUP BY 1
WITH a AS (
SELECT DISTINCT LOWER(mint) AS mint
FROM solana.fact_nft_sales s
), b AS (
SELECT l.label
, SUM(s.mint_price) AS mint_volume
, SUM(s.mint_price) / COUNT(DISTINCT s.mint) AS mint_price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON LOWER(l.address) = LOWER(s.mint)
WHERE mint_currency = 'So11111111111111111111111111111111111111111'
AND block_timestamp >= '2022-03-01'
-- data issue, need to look into this
AND NOT l.label IN ( 'degen trash pandas','mindfolk owls','bored ape solana club' )
GROUP BY 1
), c AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY mint_volume DESC) AS mint_volume_rank
FROM b
), d AS (
SELECT l.label
, SUM(s.sales_amount) AS sales_volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON LOWER(l.address) = LOWER(s.mint)
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1
), e AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY sales_volume DESC) AS sales_volume_rank
FROM d
), base AS (
SELECT CASE WHEN c.label = 'taiyo oil' AND ROUND(m.mint_price, 1) <> 1.0 THEN 'Taiyo Infants' ELSE INITCAP(c.label) END AS collection
, c.mint_volume
, c.mint_volume_rank
, e.sales_volume
, e.sales_volume_rank
, c.mint_price
, COUNT(DISTINCT m.mint) AS n_mints
, COUNT(DISTINCT a.mint) AS n_sell
, 100 * (1 - (n_sell / n_mints)) AS pct_hold
FROM solana.fact_nft_mints m
JOIN solana.dim_labels l ON LOWER(l.address) = LOWER(m.mint)
JOIN c ON c.label = l.label
JOIN e ON e.label = l.label
LEFT JOIN a ON LOWER(a.mint) = LOWER(m.mint)
GROUP BY 1, 2, 3, 4, 5, 6
ORDER BY sales_volume_rank
LIMIT 70
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY pct_hold DESC) AS rn
FROM base
)
SELECT *
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar) ELSE rn::varchar END AS clean_rn
, CONCAT(clean_rn, '. ', collection) AS label
, CASE WHEN mint_price < 0.1 THEN 'Airdrop' ELSE 'Mint' END AS owner_type
FROM b2
-- WHERE sales_volume_rank <= 70
ORDER BY label
Updates / Accomplishments
Now have 98% of ME sales labeled!
Twitter thread showing off how awesome our Solana NFT data is
Have all the THORChain tables except for transfers de-duped!
I ordered a Saga Phone!
Problems Encountered
Nothing major.
Priorities
Automate Solana NFT data pipeline
Get those collections added to NFT deal score
Concerns
SELECT INITCAP(l.label) AS collection
, SUM(s.sales_volume) AS volume
, MIN(s.block_timestamp::date) AS date
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l ON l.addrss = s.mint
GROUP BY 1
ORDER BY 2 DESC
WITH a AS (
SELECT DISTINCT LOWER(mint) AS mint
FROM solana.fact_nft_sales s
), b AS (
SELECT l.label
, SUM(s.mint_price) AS mint_volume
, SUM(s.mint_price) / COUNT(DISTINCT s.mint) AS mint_price
FROM solana.fact_nft_mints s
JOIN solana.dim_labels l ON LOWER(l.address) = LOWER(s.mint)
WHERE mint_currency = 'So11111111111111111111111111111111111111111'
AND block_timestamp >= '2022-03-01'
-- data issue, need to look into this
AND NOT l.label IN ( 'degen trash pandas','mindfolk owls','bored ape solana club' )
GROUP BY 1
), c AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY mint_volume DESC) AS mint_volume_rank
FROM b
), d AS (
SELECT l.label
, SUM(s.sales_amount) AS sales_volume
FROM solana.fact_nft_sales s
JOIN solana.dim_labels l ON LOWER(l.address) = LOWER(s.mint)
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1
), e AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY sales_volume DESC) AS sales_volume_rank
FROM d
), base AS (
SELECT CASE WHEN c.label = 'taiyo oil' AND ROUND(m.mint_price, 1) <> 1.0 THEN 'Taiyo Infants' ELSE INITCAP(c.label) END AS collection
, m.mint
FROM solana.core.fact_nft_mints m
JOIN solana.core.dim_labels l ON l.address = m.mint
)
SELECT marketplace
, SUM(s.sales_amount) AS volume
FROM base b
JOIN solana.core.fact_nft_sales s ON s.mint = b.mint
WHERE b.collection = 'Taiyo Oil'
GROUP BY 1
WITH base AS (
SELECT INITCAP(l.label) AS collection
, SUM(COALESCE(s.mint_price, 0)) AS volume
, MIN(s.block_timestamp::date) AS date
, COUNT(DISTINCT l.address) AS n_tokens
, COUNT(DISTINCT s.block_timestamp) AS n_mints
, MAX(CASE WHEN s.mint IS NULL THEN l.address ELSE '' END) AS mint_example_1
, MIN(CASE WHEN s.mint IS NULL THEN l.address ELSE '' END) AS mint_example_2
FROM solana.core.dim_labels l
LEFT JOIN solana.core.fact_nft_mints s ON LOWER(l.address) = LOWER(s.mint)
WHERE label_type = 'nft'
AND l.address IS NOT NULL
GROUP BY 1
HAVING n_tokens > 100
ORDER BY 2 DESC
), b2 AS (
SELECT INITCAP(l.label) AS collection
, SUM(COALESCE(s.sales_amount, 0)) AS sales_volume
FROM solana.core.fact_nft_sales s
JOIN solana.core.dim_labels l on LOWER(l.address) = LOWER(s.mint)
GROUP BY 1
HAVING sales_volume > 1000
AND MIN(block_timestamp) >= '2022-02-01'
)
SELECT b.*
, b2.sales_volume
, n_mints / n_tokens AS pct
FROM base b
JOIN b2 ON b2.collection = b.collection
ORDER BY pct, sales_volume DESC
SELECT *
FROM solana.core.dim_labels l
-- LEFT JOIN solana.core.fact_nft_mints s ON LOWER(l.address) = LOWER(s.mint)
WHERE label_type = 'nft'
AND l.label ilike 'okay bears'
SELECT DISTINCT address
FROM solana.core.dim_labels l
-- LEFT JOIN solana.core.fact_nft_mints s ON LOWER(l.address) = LOWER(s.mint)
WHERE label_type = 'nft'
AND l.label ilike 'okay bears'
SELECT CASE
WHEN tx_id = '2cL9Qj5Xc3FteQimae7qXHzARX1vkZgYavLbutuyt8xUz6Ebep4yfM3r891BrMrm8MEDKggXzyS4kzLWSowWagDP' THEN 'Cyber Samurai Gen 2'
WHEN tx_id = '2MqHqoWUTRePzicvLiHJmcyPspFXH6nxzZJYRvSURjLjYXJoDKSYB8zgHSj5C2DbXws7fJCpc4HCg5LDh9z8QDxs' THEN 'Astrals'
WHEN tx_id = '4XAZbakhNWVcxPB8rrCHD5YQat8oNq3n8H92oLjDzeEcDQJp8GCZfWcNJ2pGN5MySATVvoK2PTeHqc7SZYJsopHN' THEN 'Blocksmith Labs'
WHEN tx_id = '55e6y11uYPso53U2sVct5TCmGZhD7GD3YsueMwspL9TgzndctH2ZdCh5ytZyzcm3XUx172VhiFWa82Lo7hggmQYQ' THEN 'Crypto Cowboy Country'
WHEN tx_id = '668nNaC5u9zmyqYoyFQJNriaFdD79Tt65XJArwpadPGvWwDNZDZMPGBFLjkY3KTrtp2YBeT9K1b3c4bY6y41T2eC' THEN 'Ghostface Gen 2'
WHEN tx_id = 'GxXD7S1Qyp2fzBjJ4tKAvrbSKn4bnV9hfcWvLD3xQkFDa7hQ22ov15ePJGScNQz8pd5wAmG23tfPnjBz71f4ieA' THEN 'Tombstoned High Society'
WHEN tx_id = 'MxnMeosgLe2PvzCc387gK5tLwzBcBjjb8ENvyfuoo6eaQSziuJEhqJCmLNWjcEDdMLDnBwAdeyRyszNTJfqU527' THEN 'Shin Sengoku'
ELSE 'Other' END AS collection
, *
FROM solana.core.transactions
WHERE block_timestamp >= '2022-02-01'
AND tx_id IN (
'2cL9Qj5Xc3FteQimae7qXHzARX1vkZgYavLbutuyt8xUz6Ebep4yfM3r891BrMrm8MEDKggXzyS4kzLWSowWagDP',
, '2MqHqoWUTRePzicvLiHJmcyPspFXH6nxzZJYRvSURjLjYXJoDKSYB8zgHSj5C2DbXws7fJCpc4HCg5LDh9z8QDxs',
, '4XAZbakhNWVcxPB8rrCHD5YQat8oNq3n8H92oLjDzeEcDQJp8GCZfWcNJ2pGN5MySATVvoK2PTeHqc7SZYJsopHN',
, '55e6y11uYPso53U2sVct5TCmGZhD7GD3YsueMwspL9TgzndctH2ZdCh5ytZyzcm3XUx172VhiFWa82Lo7hggmQYQ',
, '668nNaC5u9zmyqYoyFQJNriaFdD79Tt65XJArwpadPGvWwDNZDZMPGBFLjkY3KTrtp2YBeT9K1b3c4bY6y41T2eC',
, 'GxXD7S1Qyp2fzBjJ4tKAvrbSKn4bnV9hfcWvLD3xQkFDa7hQ22ov15ePJGScNQz8pd5wAmG23tfPnjBz71f4ieA',
, 'MxnMeosgLe2PvzCc387gK5tLwzBcBjjb8ENvyfuoo6eaQSziuJEhqJCmLNWjcEDdMLDnBwAdeyRyszNTJfqU527'
)
-- 8,456
WITH base AS (
SELECT pool_name
, from_address
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2
HAVING net_stake_units > 0
)
SELECT COUNT(DISTINCT from_address) AS n
FROM base
WITH lp1 AS (
SELECT pool_name
, from_address
, block_timestamp::date AS date
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2, 3
), lp2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY pool_name, from_address ORDER BY date) AS cumu_stake_units
FROM lp1
), lp3 AS (
SELECT *
, CASE WHEN net_stake_units > 0 AND cumu_stake_units > 0 AND cumu_stake_units - net_stake_units <= 0 THEN 1
WHEN net_stake_units < 0 AND cumu_stake_units <= 0 AND cumu_stake_units - net_stake_units > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp2
), lp4 AS (
SELECT pool_name
, from_address
, SUM(net_user_stake_change) AS net_user_stake_change
FROM lp3
GROUP BY 1, 2
)
SELECT COUNT(DISTINCT from_address) AS n
, COUNT(1) AS n_lp
FROM lp4
WHERE net_user_stake_change > 0
WITH lp1 AS (
SELECT pool_name
, from_address
, block_timestamp::date AS date
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2, 3
), lp2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY pool_name, from_address ORDER BY date) AS cumu_stake_units
FROM lp1
), lp3 AS (
SELECT *
, CASE WHEN net_stake_units > 0 AND cumu_stake_units > 0 AND cumu_stake_units - net_stake_units <= 0 THEN 1
WHEN net_stake_units < 0 AND cumu_stake_units <= 0 AND cumu_stake_units - net_stake_units > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp2
), lp4 AS (
SELECT from_address
, date
, SUM(net_user_stake_change) AS daily_net_user_stake_change
FROM lp3
GROUP BY 1, 2
HAVING daily_net_user_stake_change <> 0
), lp5 AS (
SELECT *
, SUM(daily_net_user_stake_change) OVER (PARTITION BY from_address ORDER BY date) AS cumu_net_user_stake_change
FROM lp4
) lp6 AS (
SELECT date
, from_address
, CASE WHEN daily_net_user_stake_change > 0 AND cumu_net_user_stake_change > 0 AND cumu_net_user_stake_change - daily_net_user_stake_change <= 0 THEN 1
WHEN daily_net_user_stake_change < 0 AND cumu_net_user_stake_change <= 0 AND cumu_net_user_stake_change - daily_net_user_stake_change > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp5
), lp7 AS (
SELECT date
, SUM(net_user_stake_change) AS daily_n_lp_change
FROM lp6
GROUP BY 1
)
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, SUM(daily_n_lp_change) OVER (ORDER BY date) AS cumu_n_lp
FROM lp7
WITH r1 AS (
SELECT from_address AS address,
, block_timestamp::date AS date
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2, 3
), lp2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY pool_name, from_address ORDER BY date) AS cumu_stake_units
FROM lp1
), lp3 AS (
SELECT *
, CASE WHEN net_stake_units > 0 AND cumu_stake_units > 0 AND cumu_stake_units - net_stake_units <= 0 THEN 1
WHEN net_stake_units < 0 AND cumu_stake_units <= 0 AND cumu_stake_units - net_stake_units > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp2
), lp4 AS (
SELECT from_address
, date
, SUM(net_user_stake_change) AS daily_net_user_stake_change
FROM lp3
GROUP BY 1, 2
HAVING daily_net_user_stake_change <> 0
), lp5 AS (
SELECT *
, SUM(daily_net_user_stake_change) OVER (PARTITION BY from_address ORDER BY date) AS cumu_net_user_stake_change
FROM lp4
) lp6 AS (
SELECT date
, from_address
, CASE WHEN daily_net_user_stake_change > 0 AND cumu_net_user_stake_change > 0 AND cumu_net_user_stake_change - daily_net_user_stake_change <= 0 THEN 1
WHEN daily_net_user_stake_change < 0 AND cumu_net_user_stake_change <= 0 AND cumu_net_user_stake_change - daily_net_user_stake_change > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp5
), lp7 AS (
SELECT date
, SUM(net_user_stake_change) AS daily_n_lp_change
FROM lp6
GROUP BY 1
)
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, SUM(daily_n_lp_change) OVER (ORDER BY date) AS cumu_n_lp
FROM lp7
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
FROM crosschain.labels
WHERE blockchain ilike 'thorchain'
SELECT date_trunc('hour', block_timestamp) AS hour
, COUNT(1) AS n
FROM thorchain.swaps
WHERE block_timestamp >= '2022-05-07'
AND block_timestamp >= '2022-05-13'
AND pool_name like 'TERRA%'
GROUP BY 1
with data_sol as (
select
instruction:accounts[0]::string as address
, MIN(block_timestamp) AS wormhole_time
from
solana.core.fact_events
where
block_timestamp::date >= CURRENT_DATE - 30
and
program_id = 'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb'
and
instruction:data = '4' -- retrieve from other chains
and
(
inner_instruction:instructions[1]:parsed:type = 'mintTo' -- have careated associated token account
or
inner_instruction:instructions[3]:parsed:type = 'mintTo' -- not yet created associated token account
)
and
succeeded = true
group by 1
)
, data_user_programs as (
select
b.address,
case when label is null then COALESCE(program_id, 'None') else label end as labeling,
ROW_NUMBER() OVER (PARTITION BY b.address ORDER BY block_timestamp) AS rn
from
data_sol b
LEFT JOIN
solana.core.fact_events a on a.block_timestamp > b.wormhole_time AND
b.address IN (
instruction:accounts[0]
, instruction:accounts[1]
, instruction:accounts[2]
, instruction:accounts[3]
, instruction:accounts[4]
, instruction:accounts[5]
, instruction:accounts[6]
, instruction:accounts[7]
, instruction:accounts[8]
, instruction:accounts[9]
)
left join solana.core.dim_labels c on a.program_id = c.address
where
a.block_timestamp::date >= CURRENT_DATE - 30
and
succeeded = true
and
program_id not in (
'wormDTUJ6AWPNvk59vGQbDvGJmqbDTdgWgAqcLBCgUb', -- exclude wormhole
'worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth', -- exclude wormhole
'DeJBGdMFa1uynnnKiwrVioatTuHmNLpyFKnmB5kaFdzQ', -- Phantom wallet program id for trasnfer https://docs.phantom.app/resources/faq
'4MNPdKu9wFMvEeZBMt3Eipfs5ovVWTJb31pEXDJAAxX5' -- transfer token program
) -- exclude wormhole program id
-- and
-- block_timestamp::date >= CURRENT_DATE - 90
and labeling != 'solana'
-- group by 1, 2
)
select
CASE
when labeling = 'M2mx93ekt1fmXSVkTrUL9xVFHkmME8HTUi5Cyc5aF7K' then 'Magic Eden V2'
when labeling = '3Katmm9dhvLQijAvomteYMo6rfVbY5NaCRNq9ZBqBgr6' then 'Francium Lend Reward Program'
when labeling = 'QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB' then 'Quarry Protocol'
when labeling = 'VoLT1mJz1sbnxwq5Fv2SXjdVDgPXrb9tJyC8WpMDkSp' then 'Friktion Protocol'
when labeling = 'hausS13jsjafwWwGqZTUQRmWyvyxn9EQpqMwV1PBBmk' then 'Opensea'
when labeling = '2nAAsYdXF3eTQzaeUQS3fr4o782dDg8L28mX39Wr5j8N' then 'lyfRaydiumProgramID'
else labeling end as label,
count(*) as total
from data_user_programs
where label != 'solana' -- remove program id that dedicated to solana
and rn = 1
group by 1 order by 2
desc limit 10
WITH lp1 AS (
SELECT pool_name
, from_address
, block_timestamp::date AS date
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
WHERE pool_name ilike 'terra%'
GROUP BY 1, 2, 3
), lp2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY pool_name, from_address ORDER BY date) AS cumu_stake_units
FROM lp1
), lp3 AS (
SELECT *
, CASE WHEN net_stake_units > 0 AND cumu_stake_units > 0 AND cumu_stake_units - net_stake_units <= 0 THEN 1
WHEN net_stake_units < 0 AND cumu_stake_units <= 0 AND cumu_stake_units - net_stake_units > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp2
), lp4 AS (
SELECT from_address
, date
, SUM(net_user_stake_change) AS daily_net_user_stake_change
FROM lp3
GROUP BY 1, 2
HAVING daily_net_user_stake_change <> 0
), lp5 AS (
SELECT *
, SUM(daily_net_user_stake_change) OVER (PARTITION BY from_address ORDER BY date) AS cumu_net_user_stake_change
FROM lp4
), lp6 AS (
SELECT date
, from_address
, CASE WHEN daily_net_user_stake_change > 0 AND cumu_net_user_stake_change > 0 AND cumu_net_user_stake_change - daily_net_user_stake_change <= 0 THEN 1
WHEN daily_net_user_stake_change < 0 AND cumu_net_user_stake_change <= 0 AND cumu_net_user_stake_change - daily_net_user_stake_change > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp5
), lp7 AS (
SELECT date
, SUM(net_user_stake_change) AS daily_n_lp_change
FROM lp6
GROUP BY 1
)
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, SUM(daily_n_lp_change) OVER (ORDER BY date) AS cumu_n_lp
FROM lp7
SELECT pool_name, (block_timestamp::date) AS date, COUNT(1) AS n
FROM thorchain.swaps
WHERE pool_name LIKE 'TERRA%'
GROUP BY 1, 2
ORDER BY 2, 1
WITH terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
), lp_addtions AS (
SELECT from_address, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address
),
swaps AS (
SELECT from_address, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT t.from_address, SUM(rune_amount) AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers t
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
LEFT JOIN crosschain.address_labels l ON l.address = t.to_address AND blockchain = 'thorchain'
WHERE asset = 'THOR.RUNE' AND COALESCE(l.label_type, '') NOT IN ('defi','dex')
GROUP BY 1
),
base AS (
SELECT address
, removed_rune_amount
, COALESCE(la.added_rune_amount, 0) AS added_rune_amount
, COALESCE(s.swapped_rune_amount, 0) AS swapped_rune_amount
, COALESCE(t.transferred_rune_amount, 0) AS transferred_rune_amount
FROM terra_lplers tl
LEFT JOIN lp_addtions la ON la.from_address = tl.address
LEFT JOIN swaps s ON s.from_address = tl.address
LEFT JOIN tranfers t ON t.from_address = tl.address
), b2 AS (
SELECT address
, removed_rune_amount
, GREATEST(0, removed_rune_amount - added_rune_amount - swapped_rune_amount - transferred_rune_amount) AS kept_amount_2
, LEAST(b.added_rune_amount, b.removed_rune_amount) AS added_rune_amount_2
, LEAST(b.removed_rune_amount - added_rune_amount_2, b.swapped_rune_amount) AS swapped_rune_amount_2
, LEAST(b.removed_rune_amount - added_rune_amount_2 - swapped_rune_amount_2, b.transferred_rune_amount) AS transferred_rune_amount_2
, CASE
WHEN kept_amount_2 >= GREATEST(kept_amount_2, added_rune_amount_2, swapped_rune_amount_2, transferred_rune_amount_2) THEN 'Keeping it in their wallet'
WHEN added_rune_amount_2 >= GREATEST(added_rune_amount_2, swapped_rune_amount_2, transferred_rune_amount_2) THEN 'Added to other pools'
WHEN swapped_rune_amount_2 >= GREATEST(swapped_rune_amount_2, transferred_rune_amount_2) THEN 'Swapped for other assets'
ELSE 'Transferred to other addresses' END AS action
FROM base b
)
SELECT 'Keeping it in their wallet' AS action, SUM(kept_amount_2) AS rune_amount FROM b2 GROUP BY 1
2022-04-11 04:07:14 +00:00
UNION
2022-07-14 22:10:02 +00:00
SELECT 'Added to other pools' AS action, SUM(added_rune_amount_2) AS rune_amount FROM b2 GROUP BY 1
2022-04-11 04:07:14 +00:00
UNION
2022-07-14 22:10:02 +00:00
SELECT 'Swapped for other assets' AS action, SUM(swapped_rune_amount_2) AS rune_amount FROM b2 GROUP BY 1
2022-04-11 04:07:14 +00:00
UNION
2022-07-14 22:10:02 +00:00
SELECT 'Transferred to other addresses' AS action, SUM(transferred_rune_amount_2) AS rune_amount FROM b2 GROUP BY 1
, COUNT(DISTINCT address) AS n2
FROM b2
GROUP BY 1
ORDER BY 2 DESC
WITH terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address
),
swaps AS (
SELECT from_address, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
),
movements AS (
SELECT 'Swapped for other assets' AS action, sum(LEAST(removed_rune_amount, swapped_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN swaps ON address = from_address
UNION
SELECT 'Added to other pools' AS action, sum(LEAST(removed_rune_amount, added_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN lp_addtions ON address = from_address
UNION
SELECT 'Transferred to other addresses' AS action, sum(LEAST(removed_rune_amount, transferred_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN tranfers ON address = from_address
),
movements1 AS (
SELECT * FROM movements
UNION
SELECT 'Keeping it in their wallet' AS action,
((SELECT sum(removed_rune_amount) AS rune_amount FROM terra_lplers) - (SELECT sum(rune_amount) FROM movements)) AS rune_amount
)
SELECT * FROM movements1
WITH pool_start_date AS (
SELECT SPLIT(pool_name, '-')[0] AS pool_name, MIN(block_timestamp::date) AS pool_start_date
FROM thorchain.swaps
GROUP BY 1
ORDER BY 2
), terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, pool_name, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address, pool_name
),
swaps AS (
SELECT from_address, pool_name, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address, pool_name
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
)
, base AS (
SELECT l.address, l.removed_rune_amount, SPLIT(a.pool_name, '-')[0] AS pool_name, a.block_timestamp, a.rune_amount
, SUM(a.rune_amount) OVER (PARTITION BY address ORDER BY a.block_timestamp) AS cumu_rune_amount
FROM terra_lplers l
JOIN flipside_prod_db.thorchain.liquidity_actions a
ON a.from_address = l.address
AND a.block_timestamp > first_removal_time
AND a.lp_action = 'add_liquidity'
), b2 AS (
SELECT *
, CASE WHEN cumu_rune_amount < removed_rune_amount THEN rune_amount
WHEN cumu_rune_amount - rune_amount >= removed_rune_amount THEN 0
ELSE removed_rune_amount - (cumu_rune_amount - rune_amount) END AS lp_rune_amount
FROM base
), b3 AS (
SELECT pool_name
, SUM(lp_rune_amount) AS rune_amount
FROM b2
GROUP BY 1
), b4 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY rune_amount DESC) AS rn
FROM b3
)
SELECT b4.*
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', b4.pool_name) ELSE CONCAT(rn::varchar, '. ', b4.pool_name) END AS label
, p.pool_start_date
FROM b4
JOIN pool_start_date p ON p.pool_name = b4.pool_name
ORDER BY label
WITH pool_start_date AS (
SELECT SPLIT(pool_name, '-')[0] AS pool_name, MIN(block_timestamp::date) AS pool_start_date
FROM thorchain.swaps
GROUP BY 1
ORDER BY 2
), terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, pool_name, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address, pool_name
),
swaps AS (
SELECT from_address, pool_name, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address, pool_name
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
)
, base AS (
SELECT sum(LEAST(removed_rune_amount, added_rune_amount)) AS rune_amount, SPLIT(pool_name, '-')[0] AS pool_name
FROM terra_lplers
JOIN lp_addtions ON address = from_address
GROUP BY pool_name
), b2 AS (
SELECT *
, ROW_NUMBER() OVER (ORDER BY rune_amount DESC) AS rn
FROM base
)
SELECT b2.*
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', b2.pool_name) ELSE CONCAT(rn::varchar, '. ', b2.pool_name) END AS label
, p.pool_start_date
FROM b2
JOIN pool_start_date p ON p.pool_name = b2.pool_name
ORDER BY label
WITH terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address
),
swaps AS (
SELECT from_address, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
),
movements AS (
SELECT 'Swapped for other assets' AS action, sum(LEAST(removed_rune_amount, swapped_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN swaps ON address = from_address
UNION
SELECT 'Added to other pools' AS action, sum(LEAST(removed_rune_amount, added_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN lp_addtions ON address = from_address
UNION
SELECT 'Transferred to other addresses' AS action, sum(LEAST(removed_rune_amount, transferred_rune_amount)) AS rune_amount
FROM terra_lplers
JOIN tranfers ON address = from_address
),
movements1 AS (
SELECT * FROM movements
UNION
SELECT 'Keeping it in their wallet' AS action,
((SELECT sum(removed_rune_amount) AS rune_amount FROM terra_lplers) - (SELECT sum(rune_amount) FROM movements)) AS rune_amount
)
SELECT * FROM movements1
WITH terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, pool_name, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address, pool_name
),
swaps AS (
SELECT from_address, pool_name, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address, pool_name
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
)
, base AS (
SELECT sum(LEAST(removed_rune_amount, added_rune_amount)) AS rune_amount, SPLIT(pool_name, '-')[0] AS pool_name
FROM terra_lplers
JOIN lp_addtions ON address = from_address
GROUP BY pool_name
), b2 AS (
SELECT *
, ROW_NUMBER() OVER ORDER BY rune_amount DESC AS rn
FROM base
)
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', pool_name) ELSE CONCAT(rn::varchar, '. ', pool_name) END AS label
FROM b2
ORDER BY label
2022-04-11 04:07:14 +00:00
SELECT *
2022-07-14 22:10:02 +00:00
, ROW_NUMBER()
FROM movements1
WITH terra_lplers AS (
SELECT from_address AS address, sum(rune_amount) AS removed_rune_amount, min(block_timestamp) AS first_removal_time
FROM flipside_prod_db.thorchain.liquidity_actions
WHERE (pool_name = 'TERRA.LUNA' OR pool_name = 'TERRA.UST') AND
lp_action = 'remove_liquidity' AND
block_timestamp > TO_DATE('2022-05-15')
GROUP BY address
HAVING sum(rune_amount) > 0
),
lp_addtions AS (
SELECT from_address, pool_name, sum(rune_amount) AS added_rune_amount
FROM flipside_prod_db.thorchain.liquidity_actions
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE lp_action = 'add_liquidity'
GROUP BY from_address, pool_name
),
swaps AS (
SELECT from_address, pool_name, sum(from_amount) AS swapped_rune_amount
FROM flipside_prod_db.thorchain.swaps
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE from_asset = 'THOR.RUNE'
GROUP BY from_address, pool_name
),
swappers_and_lplers AS (
SELECT DISTINCT address
FROM terra_lplers
LEFT JOIN lp_addtions ON lp_addtions.from_address = address
LEFT JOIN swaps ON swaps.from_address = address
WHERE added_rune_amount > 0 OR swapped_rune_amount > 0
),
tranfers AS (
SELECT transfers.*, rune_amount AS transferred_rune_amount
FROM flipside_prod_db.thorchain.transfers
JOIN terra_lplers ON address = from_address AND block_timestamp > first_removal_time
WHERE asset = 'THOR.RUNE' AND from_address NOT IN (SELECT address FROM swappers_and_lplers) AND to_address != 'thor1dheycdevq39qlkxs2a6wuuzyn4aqxhve4qxtxt' --Reserve
)
2022-04-11 04:07:14 +00:00
2022-07-14 22:10:02 +00:00
SELECT sum(LEAST(removed_rune_amount, added_rune_amount)) AS rune_amount, pool_name
FROM terra_lplers
JOIN lp_addtions ON address = from_address
GROUP BY pool_name
2022-04-11 04:07:14 +00:00
2022-02-04 04:35:13 +00:00
2022-03-18 00:23:50 +00:00
2022-04-11 04:07:14 +00:00
2022-04-05 05:25:23 +00:00
2022-07-14 22:10:02 +00:00
SELECT *
FROM solana.core.fact_events e
JOIN solana.core.dim_labels l on e.program_id = l.address
WHERE e.block_timestamp >= CURRENT_DATE - 2
AND succeeded
AND l.label ilike 'jup%'
LIMIT 1000
2022-04-05 05:25:23 +00:00
2022-04-11 04:07:14 +00:00
2022-07-14 22:10:02 +00:00
SELECT * FROM movements1
WITH lp1 AS (
SELECT pool_name
, from_address
, block_timestamp::date AS date
, SUM(CASE WHEN lp_action = 'add_liquidity' THEN stake_units ELSE -stake_units END) AS net_stake_units
FROM thorchain.liquidity_actions
GROUP BY 1, 2, 3
), lp2 AS (
SELECT *
, SUM(net_stake_units) OVER (PARTITION BY pool_name, from_address ORDER BY date) AS cumu_stake_units
FROM lp1
), lp3 AS (
SELECT *
, CASE WHEN net_stake_units > 0 AND cumu_stake_units > 0 AND cumu_stake_units - net_stake_units <= 0 THEN 1
WHEN net_stake_units < 0 AND cumu_stake_units <= 0 AND cumu_stake_units - net_stake_units > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp2
), lp4 AS (
SELECT from_address
, date
, SUM(net_user_stake_change) AS net_user_stake_change
FROM lp3
GROUP BY 1, 2
), lp5 AS (
SELECT *
, SUM(net_user_stake_change) OVER (PARTITION BY from_address ORDER BY date) AS cumu_net_user_stake_change
FROM lp4
), lp6 AS (
SELECT date
, from_address
, CASE WHEN net_user_stake_change > 0 AND cumu_net_user_stake_change > 0 AND cumu_net_user_stake_change - net_user_stake_change <= 0 THEN 1
WHEN net_user_stake_change < 0 AND cumu_net_user_stake_change <= 0 AND cumu_net_user_stake_change - net_user_stake_change > 0 THEN -1
ELSE 0 END AS net_user_stake_change
FROM lp5
2022-04-11 04:07:14 +00:00
)
2022-07-14 22:10:02 +00:00
SELECT date
, SUM(net_user_stake_change) OVER (ORDER BY date) AS net_user_lps
FROM lp6
2022-04-11 04:07:14 +00:00
2022-06-06 19:15:10 +00:00
WITH base AS (
SELECT project_name AS collection
, token_id
, mint
, ROW_NUMBER() OVER (PARTITION BY collection, token_id ORDER BY created_at_timestamp DESC) AS rn
FROM solana.dim_nft_metadata
)
SELECT *
FROM solana.dim_nft_metadata m
JOIN base b ON b.project_name = m.project_name AND b.token_id = m.token_id
ORDER BY m.project_name, m.token_id
2022-04-05 05:25:23 +00:00
2022-04-11 04:07:14 +00:00
SELECT *
SELECT MIN(block_timestamp) AS mn
, MIN(block_timestamp) AS mn2
FROM thorchain.swaps
WHERE 1=1
AND (
from_asset LIKE '%/%'
OR to_asset LIKE '%/%'
)
LIMIT 10
SELECT tx_id
, COUNT(1) AS n
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_DEV_DB.bronze_midgard_2_6_9_20220405.MIDGARD_FEE_EVENTS
2022-04-11 04:07:14 +00:00
GROUP BY 1
HAVING COUNT(1) > 1
ORDER BY 2 DESC
SELECT pool_name
, COUNT(1) AS n
, MAX(block_timestamp) AS m
, MAX(block_timestamp) AS mm
FROM thorchain.pool_block_statistics
GROUP BY 1
SELECT POOL_NAME
, COUNT(1) AS n
, MAX(BLOCK_TIMESTAMP) AS m
, MAX(BLOCK_TIMESTAMP) AS mm
FROM thorchain.block_pool_depths
GROUP BY 1
ORDER BY 2 DESC
SELECT COUNT(1) AS n
, COUNT(1) AS nn
FROM thorchain.pool_block_statistics
2022-07-14 22:10:02 +00:00
SELECT day
, rune_price_usd
FROM thorchain.daily_pool_stats
WHERE pool_name LIKE 'BNB.BUSD%'
2022-04-11 04:07:14 +00:00
SELECT pool_name
, COUNT(1) AS n
, MAX(block_timestamp) AS mx
, MIN(block_timestamp) AS mn
FROM thorchain.prices
GROUP BY 1
ORDER BY 2 DESC
WITH base AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY pool_name ORDER BY block_timestamp DESC) AS rn
FROM thorchain.pool_block_balances
WHERE block_timestamp >= '2022-04-01'
)
SELECT *
FROM base
WHERE rn = 1
SELECT DISTINCT pool_name
FROM thorchain.pool_block_balances
SELECT DISTINCT pool_name
FROM thorchain.pool_block_depths
SELECT DISTINCT pool_name
2022-05-17 21:52:44 +00:00
FROM FLIPSIDE_DEV_DB.bronze_midgard_2_6_9_20220405.MIDGARD_BLOCK_POOL_DEPTHS
2022-04-11 04:07:14 +00:00
SELECT COUNT(1) AS n FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_block_pool_depths
SELECT COUNT(1) AS n FROM flipside_dev_db.bronze_midgard_2_6_9_20220405.midgard_block_pool_depths
SELECT COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_block_pool_depths
SELECT *
FROM BRONZE_MIDGARD_2_6_9.MIDGARD_SWAP_EVENTS
WHERE memo like '=:TERRA/LUNA:%:%'
AND pool like 'TERRA/LUNA'
ORDER BY block_timestamp DESC
LIMIT 100
WITH base AS (
SELECT *
, CASE WHEN memo like '=:TERRA/LUNA:%:%' THEN 1 ELSE 0 END AS is_synth
FROM BRONZE_MIDGARD_2_6_9.MIDGARD_SWAP_EVENTS
WHERE block_timestamp >= '2022-04-01'
AND pool like 'TERRA/LUNA%'
LIMIT 1000
)
SELECT is_synth, COUNT(1) AS
2022-04-05 05:25:23 +00:00
SELECT asset_e8 / POWER(10, 8) AS asset_amt
, rune_e8 / POWER(10, 8) AS rune_amt
, synth_e8 / POWER(10, 8) AS synth_amt
, synth_amt / asset_amt AS synth_ratio
, *
FROM bronze_midgard_2_6_9.midgard_block_pool_depths
ORDER BY block_timestamp DESC, rune_e8 DESC
LIMIT 40
-- thorchain__refund_events
not sure what the issue is there. need to do more digging
SELECT *
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_refund_events
LIMIT 10
SELECT tx
, block_timestamp
, to_addr
, from_addr
, asset
, asset_e8
, COALESCE(asset_2nd, '')
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_refund_events
GROUP BY 1, 2, 3, 4, 5, 6, 7
HAVING COUNT(1) > 1
SELECT *
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_refund_events
WHER tx = 'FBB528600711E455908F90340470CED18D24801F62ED123D7BF9A5F5E68466F1'
WITH base AS (
SELECT tx
, block_timestamp
, COUNT(1) AS n
, COUNT(1) AS nnn
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_bond_events
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
)
SELECT tx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
GROUP BY 1
HAVING COUNT(1) > 1
ORDER BY 2 DESC
-- has 103 dupes
SELECT day
, asset
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.thorchain.pool_block_statistics
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
-- has 134 dupes, fixed implemented by getting the latest status in the day
SELECT date(block_timestamp) AS day
, asset AS pool_name
, block_id
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.thorchain.pool_events
GROUP BY 1, 2, 3
HAVING COUNT(1) > 1
ORDER BY 4 DESC
-- thorchain__pool_balance_change_events -> incorrect test
SELECT block_timestamp
, reason
, asset
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_pool_balance_change_events
GROUP BY 1, 2, 3
HAVING COUNT(1) > 1
ORDER BY 4 DESC
SELECT *
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_pool_balance_change_events
WHERE block_timestamp = 1647355019937352448
AND asset = 'ETH.ETH'
AND reason = 'burn dust'
SELECT MAX(day) AS d
, MAX(day) AS dd
FROM flipside_dev_db.thorchain.daily_pool_stats
SELECT day
, pool_name
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.thorchain.daily_pool_stats
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
SELECT day
, pool_name
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.thorchain.daily_pool_stats
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
SELECT day
, asset
, COUNT(1) AS n
, COUNT(1) AS nn
FROM flipside_dev_db.thorchain.pool_block_statistics
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
WITH base AS (
SELECT tx
, block_timestamp
, COUNT(1) AS n
, COUNT(1) AS nnn
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_bond_events
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
)
SELECT tx
, COUNT(1) AS n
, COUNT(1) AS nn
FROM base
GROUP BY 1
HAVING COUNT(1) > 1
ORDER BY 2 DESC
SELECT *
FROM flipside_dev_db.bronze_midgard_2_6_9.midgard_bond_events
WHERE tx = '0000000000000000000000000000000000000000000000000000000000000000'
LIMIT 1000
SELECT block_id, tx_id
, COUNT(1) AS n
, COUNT(1) AS nn
FROM thorchain.bond_events
WHERE tx = '0000000000000000000000000000000000000000000000000000000000000000'
GROUP BY 1, 2
HAVING COUNT(1) > 1
ORDER BY 3 DESC
SELECT *
FROM thorchain.bond_events
WHERE tx = '0000000000000000000000000000000000000000000000000000000000000000'
SELECT project_name
, COUNT(1) AS n
, COUNT(1) AS nn
FROM solana.dim_nft_metadata
GROUP BY 1
ORDER BY 1
SELECT tx_id
, n.mint
, l.project_name AS lp
, m.project_name AS mp
, n.block_timestamp AS sale_date
, (inner_instruction:instructions[0]:parsed:info:lamports
+ inner_instruction:instructions[1]:parsed:info:lamports
+ inner_instruction:instructions[2]:parsed:info:lamports
+ inner_instruction:instructions[3]:parsed:info:lamports) / POWER(10, 9) AS price
FROM solana.nfts n
LEFT JOIN crosschain.address_labels l ON LOWER(n.mint) = LOWER(l.address)
LEFT JOIN solana.dim_nft_metadata m ON LOWER(m.mint) = LOWER(l.address)
WHERE block_timestamp >= CURRENT_DATE - 200
AND instruction:data like '3UjLyJvuY4%'
AND COALESCE(l.project_name, m.project_name) IN ('degods','stoned ape crew','Astrals','Cets On Creck','DeFi Pirates')
LIMIT 100
SELECT tx_id
, s.mint
, l.project_name AS lp
, m.project_name AS mp
, s.block_timestamp AS sale_date
, sales_amount AS price
FROM solana.fact_nft_sales s
LEFT JOIN crosschain.address_labels l ON LOWER(s.mint) = LOWER(l.address)
LEFT JOIN solana.dim_nft_metadata m ON LOWER(m.mint) = LOWER(s.mint)
WHERE block_timestamp >= CURRENT_DATE - 200
AND COALESCE(l.project_name, m.project_name) IN ('degods','stoned ape crew','DeGods','Stoned Ape Crew','Astrals','Cets On Creck','DeFi Pirates')
LIMIT 100
SELECT tx_id
, n.mint
, n.mint
SELECT CAST(token_id AS INT) AS token_id
, token_metadata:Hat AS Hat
, token_metadata:Eyes AS Eyes
, token_metadata:Hair AS Hair
, token_metadata:Skin AS Skin
, token_metadata:Type AS Type
, token_metadata:Cloth AS Cloth
, token_metadata:Mouth AS Mouth
, token_metadata:Necklace AS Necklace
, token_metadata:Specialty AS Background
, token_metadata:"Attribute Count" AS Attribute_Count
FROM solana.dim_nft_metadata
WHERE project_name = 'Aurory'
ORDER BY CAST(token_id AS INT)
SELECT *
FROM thorchain.swaps
WHERE tx_id IN (
'167CF767E6163475F307A6EDC34F37C70B108094A0BE7C8A718C13BFC3213ED1'
, '9426EFC03348B4EAD11E97792B6CAFC049D2719B28CA49E84E6D627F4D1F74F6'
)
SELECT MAX(block_timestamp)
FROM solana.transactions
WHERE block_timestamp >= CURRENT_DATE - 5
SELECT
MAX(block_timestamp) AS n
, MAX(block_timestamp) AS nn
FROM thorchain.swaps
WHERE block_timestamp >= CURRENT_DATE - 10
SELECT to_address
, COUNT(1) AS n
FROM thorchain.swaps
GROUP BY 1
ORDER BY 2 DESC
WHERE tx_id IN (
'167CF767E6163475F307A6EDC34F37C70B108094A0BE7C8A718C13BFC3213ED1'
, '9426EFC03348B4EAD11E97792B6CAFC049D2719B28CA49E84E6D627F4D1F74F6'
)
SELECT *
FROM thorchain.swaps
WHERE to_address = 'bnb1rv89nkw2x5ksvhf6jtqwqpke4qhh7jmudpvqmj'
SELECT *
FROM solana.dim_nft_metadata
WHERE project_name = 'Aurory'
LIMIT 10
2022-03-21 16:34:42 +00:00
SELECT program_id
, COUNT(1) AS n
FROM solana.nfts
WHERE block_timestamp >= '2022-03-01'
AND block_timestamp <= '2022-03-03'
GROUP BY 1
SELECT *
FROM solana.transfers
WHERE block_timestamp >= '2022-03-15'
AND tx_id = 'YuwerNe5KLLj8RFUj97igYm9icMxuYTHAvgy7C2dPMoebUDPmYQ7rXUrHqPuhkytZTZ74iduokutr6gghUDGZvM'
2022-03-18 00:23:50 +00:00
SELECT blockchain
, pool_name
, from_asset
, to_asset
, COUNT(1) AS n
, SUM(to_amount_usd) AS usd
FROM thorchain.swaps
WHERE block_timestamp >= '2022-03-09'
GROUP BY 1, 2, 3, 4
ORDER BY 6 DESC
SELECT *
FROM thorchain.swaps
WHERE block_timestamp >= '2022-03-09'
AND pool_name = 'DOGE.DOGE'
ORDER BY block_timestamp DESC
LIMIT 100
SELECT *
FROM thorchain.swap_events
WHERE memo like '%/%'
LIMIT 100
2022-03-21 16:34:42 +00:00
SELECT *
FROM ethereum.nft_events
SELECT project_name
, COUNT(1) AS n
, SUM(CASE WHEN price_usd >= 1000000 THEN 1000000 ELSE 1000000 END) AS price_usd
FROM ethereum.nft_events
WHERE block_timestamp >= '2022-03-01'
AND price_usd >= 100
GROUP BY 1
ORDER BY 3 DESC
2022-04-05 05:25:23 +00:00
SELECT *
FROM thorchain.block_pool_depths
LIMIT 100
SELECT *
FROM solana.nfts
WHERE block_timestamp >= '2022-03-20'
AND tx_id = '4bjynBRfwRJ24vbYZDMVdrhN5GhZqpHDEtXZHSpNny8GzAr6X8NCBBy4g4jeXVCVmPeNbP1evyUDr6LZxhmwc11q'
SELECT project_name
, COUNT(1) AS n
FROM solana.nft_metadata
GROUP BY 1
ORDER BY 1
SELECT *
FROM solana.transfers
WHERE block_timestamp >= '2021-12-04'
AND block_timestamp <= '2021-12-08'
AND tx_id = '66suFvwSN83rCJ9VXAQXG21fGDYaWfcVbgiHHtfTL2fuLAZri61XuspKHwSPGjRJG7TZpR9dxDqioUSSLaBJB2Ue'
SELECT *
FROM solana.transfers
WHERE block_timestamp >= '2022-02-06'
AND block_timestamp <= '2022-02-10'
AND source = '2L6j3wZXEByg8jycytabZitDh9VVMhKiMYv7EeJh6R2H'
SELECT *
FROM solana.transfers
WHERE block_timestamp >= '2022-02-06'
AND block_timestamp <= '2022-02-10'
AND tx_id = 'BmtiqCyrPMG6tqXdukDQZsCyW1upaWVmjN6FLu62jwj3kiShQacSvCSGLUE3F3YsB8LAopj4yQGs58KjZKZHGAW'
SELECT record_content:results[0]:project_name AS project_name
, COUNT(1) AS n
, COUNT(1) AS n2
FROM bronze.prod_nft_metadata_uploads_1828572827
GROUP BY 1
SELECT *
, instructions[0]:programId AS programId
FROM solana.fact_transactions
WHERE block_timestamp >= '2022-02-24'
AND block_timestamp <= '2022-02-26'
AND tx_id IN (
'5pTUfdXkHfG8WQhThmYW6fkVpp6oheTZRrLYD3mhANJ86XrkV75AQ8HNuj8CasHVrGHXGaep9nsNM4dTaVpYX4AB'
, '9cUctD4sVARDyYQsV2zrpPuTatPS5aYZZuPehupDkUZLNfdRKP8zBmEqR4FnwdsSMEcV6y7VqJ92ap8vpCm5rfB'
)
AND instructions[0]:programId = 'Daovoteq2Y28gJyme6TNUXT9TxXrePiouFuHezkiozci'
SELECT *
, instructions[0]:programId AS programId
FROM solana.fact_transactions
WHERE block_timestamp >= '2022-03-05'
AND block_timestamp <= '2022-02-01'
AND tx_id IN (
'5pTUfdXkHfG8WQhThmYW6fkVpp6oheTZRrLYD3mhANJ86XrkV75AQ8HNuj8CasHVrGHXGaep9nsNM4dTaVpYX4AB'
, '9cUctD4sVARDyYQsV2zrpPuTatPS5aYZZuPehupDkUZLNfdRKP8zBmEqR4FnwdsSMEcV6y7VqJ92ap8vpCm5rfB'
)
AND instructions[0]:programId = 'Daovoteq2Y28gJyme6TNUXT9TxXrePiouFuHezkiozci'
LIMIT 1000
SELECT instructions[0]:accounts[6] AS acct_6
, instructions[0]:data AS data
, COUNT(1) AS n
, SUM(LEN(inner_instruction)) AS total_votes
FROM solana.fact_transactions
WHERE block_timestamp <= '2022-03-05'
AND block_timestamp >= '2022-02-15'
AND instructions[0]:programId = 'Daovoteq2Y28gJyme6TNUXT9TxXrePiouFuHezkiozci'
GROUP BY 1, 2
SELECT instructions[0]:accounts[6] AS acct_6
, instructions[0]:data AS data
, CASE WHEN ARRAY_SIZE(inner_instructions) = 1 THEN '1'
WHEN ARRAY_SIZE(inner_instructions) <= 3 THEN '2-3'
WHEN ARRAY_SIZE(inner_instructions) <= 9 THEN '4-9'
ELSE '10+'
END AS voting_power
, COUNT(1) AS n
FROM solana.fact_transactions
WHERE block_timestamp <= '2022-03-05'
AND block_timestamp >= '2022-02-15'
AND instructions[0]:programId = 'Daovoteq2Y28gJyme6TNUXT9TxXrePiouFuHezkiozci'
AND succeeded = TRUE
GROUP BY 1, 2, 3
SELECT *
FROM
SELECT *
, instructions[0]:programId AS programId
, instructions[0]:accounts[0] AS acct_0
, instructions[0]:accounts[1] AS acct_1
, instructions[0]:accounts[2] AS acct_2
, instructions[0]:accounts[3] AS acct_3
, instructions[0]:accounts[4] AS acct_4
, instructions[0]:accounts[5] AS acct_5
, instructions[0]:accounts[6] AS acct_6
FROM solana.fact_transactions
WHERE block_timestamp <= '2022-03-05'
AND block_timestamp >= '2022-03-02'
AND instructions[0]:programId = 'Daovoteq2Y28gJyme6TNUXT9TxXrePiouFuHezkiozci'
LIMIT 1000
WITH base AS (
SELECT *
, record_content:results[0]:project_name AS project_name
, record_content:results[0]:token_id AS token_id_0
, record_content:results[1]:token_id AS token_id_1
FROM bronze.prod_nft_metadata_uploads_1828572827
WHERE record_content:model:blockchain = 'solana'
AND record_content:results[0]:project_name = 'Solana Monkey Business'
ORDER BY _inserted_timestamp DESC
LIMIT 10
)
SELECT b.*
, CASE WHEN m0.token_id IS NULL THEN 0 ELSE 1 END AS has_entry_0
, CASE WHEN m1.token_id IS NULL THEN 0 ELSE 1 END AS has_entry_1
FROM base b
LEFT JOIN solana.nft_metadata m0 ON m0.token_id = b.token_id_0
AND m0.project_name = b.project_name
LEFT JOIN solana.nft_metadata m1 ON m1.token_id = b.token_id_1
AND m1.project_name = b.project_name
SELECT *
FROM bronze.prod_nft_metadata_uploads_1828572827
WHERE record_content:model:blockchain = 'solana'
AND record_content:results[0]:project_name = 'Solana Monkey Business'
ORDER BY _inserted_timestamp DESC
LIMIT 10
SELECT block_timestamp
FROM thorchain.block_pool_depths
WHERE block_timestamp
order by block_timestamp DESC
GROUP BY 1
LIMIT 100
2022-03-21 16:34:42 +00:00
SELECT contract_name
, COUNT(1) AS n
FROM ethereum.nft_metadata
WHERE contract_name IN ('MutantApeYachtClub','bayc')
GROUP BY 1
2022-03-22 20:27:08 +00:00
SELECT *
FROM ethereum.nft_metadata
WHERE contract_name IN ('MutantApeYachtClub','bayc')
LIMIT 10000
2022-03-21 16:34:42 +00:00
SELECT contract_name
, token_id
, token_metadata:Background AS background
, token_metadata:Clothes AS clother
, token_metadata:Earring AS earring
, token_metadata:Eyes AS eyes
, token_metadata:Fur AS fur
, token_metadata:Hat AS hat
, token_metadata:Mouth AS mouth
FROM ethereum.nft_metadata
WHERE contract_name IN ('MutantApeYachtClub','bayc')
GROUP BY 1
SELECT pretokenbalances[0]:mint AS pre_mint_0
, pretokenbalances[1]:mint AS pre_mint_1
, posttokenbalances[0]:mint AS pos_mint_0
, posttokenbalances[1]:mint AS pos_mint_1
, CASE WHEN NOT COALESCE(pre_mint_0, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pre_mint_0
WHEN NOT COALESCE(pre_mint_1, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pre_mint_1
WHEN NOT COALESCE(pos_mint_0, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pos_mint_0
ELSE pos_mint_1 END
AS clean_mint
, n.*
, inner_instruction:instructions[1]:parsed:info:amount AS amount
FROM solana.nfts n
WHERE block_timestamp >= '2022-03-14'
AND program_id = 'J7RagMKwSD5zJSbRQZU56ypHUtux8LRDkUpAPSKH4WPp'
LIMIT 10000
SELECT *
FROM solana.nfts
WHERE block_timestamp >= '2022-03-17'
AND tx_id = 'TxYhxw8KHyQsvUSSQascYWBdUFbzYSZcVHXFyex3npNRh5ib4mHoTJk6vxH2Eo7zSyZ71KFrvnpHRDNry3AASDN'
{
"index": 4,
"instructions": [
{
"parsed": {
"info": {
"amount": "0",
"authority": "8LXpW8fPk757j5zMGnkLYFaPP46MrmtnG5H8W3LcsbNh",
"destination": "AFf394pRN13JYGQYQ7pRQFHn4keGf5XXYpbASzqxpN2H",
"source": "2S9uN7rZc2ztzipex5rt76nsm9G8vKuz3nZ4GZWekZFA"
},
"type": "transfer"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"amount": "9479999999",
"authority": "8LXpW8fPk757j5zMGnkLYFaPP46MrmtnG5H8W3LcsbNh",
"destination": "3BjpoZic969Wh8dvgYApuCKL3v5nzgpLAekvumD44qZJ",
"source": "2S9uN7rZc2ztzipex5rt76nsm9G8vKuz3nZ4GZWekZFA"
},
"type": "transfer"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"amount": "1",
"authority": "7Ppgch9d4XRAygVNJP4bDkc7V6htYXGfghX4zzG9r4cH",
"destination": "3B2aKxDj4DH7Mo7R4Twdwvi6FLe7uDkX28FFHEv8UQoT",
"source": "9yj8ZUM1ji2xTwePnHakrGW4gUsiswzvo27orp7v96JW"
},
"type": "transfer"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "2S9uN7rZc2ztzipex5rt76nsm9G8vKuz3nZ4GZWekZFA",
"destination": "ExHjH7nZufPmsbTZc1n9R1iWMGJPDaJTeDv3PA75iunH",
"owner": "8LXpW8fPk757j5zMGnkLYFaPP46MrmtnG5H8W3LcsbNh"
},
"type": "closeAccount"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"parsed": {
"info": {
"account": "9yj8ZUM1ji2xTwePnHakrGW4gUsiswzvo27orp7v96JW",
"authority": "7Ppgch9d4XRAygVNJP4bDkc7V6htYXGfghX4zzG9r4cH",
"authorityType": "accountOwner",
"newAuthority": "ExHjH7nZufPmsbTZc1n9R1iWMGJPDaJTeDv3PA75iunH"
},
"type": "setAuthority"
},
"program": "spl-token",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
]
}
WITH base AS (
SELECT pretokenbalances[0]:mint AS pre_mint_0
, pretokenbalances[1]:mint AS pre_mint_1
, posttokenbalances[0]:mint AS pos_mint_0
, posttokenbalances[1]:mint AS pos_mint_1
, CASE WHEN NOT COALESCE(pre_mint_0, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pre_mint_0
WHEN NOT COALESCE(pre_mint_1, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pre_mint_1
WHEN NOT COALESCE(pos_mint_0, '') IN ('', 'So11111111111111111111111111111111111111112') THEN pos_mint_0
ELSE pos_mint_1 END
AS clean_mint
, n.*
, inner_instruction:instructions[1]:parsed:info:amount AS amount
FROM solana.nfts n
WHERE block_timestamp >= '2022-03-14'
AND program_id = 'J7RagMKwSD5zJSbRQZU56ypHUtux8LRDkUpAPSKH4WPp'
LIMIT 10000
), cleaned AS (
SELECT *
, REPLACE(b.clean_mint, '"', '') AS clean_mint_2
FROM base b
)
SELECT m.token_id
, b.*
FROM cleaned b
JOIN solana.nft_metadata m ON m.mint = clean_mint_2
SELECT *
FROM solana.nft_metadata
WHERE mint = '98ofVuvQr1RiFKkZuehpgUJSkz9LUDqGEef4rvmXpfD7'
SELECT project_name
, token_id
, block_timestamp
, price
FROM ethereum.nft_events
WHERE project_name IN (
'BoredApeYachtClub'
, 'MutantApeYachtClub'
, 'BoredApeKennelClub'
)
SELECT block_timestamp::date AS date
, to_asset
, pool_name
, CASE WHEN memo like '%/%' THEN 1 ELSE 0 END AS is_synth
, COUNT(1) AS n
FROM thorchain.swap_events
WHERE block_timestamp >= '2022-03-09'
GROUP BY 1, 2, 3, 4
ORDER BY 5 DESC
SELECT block_timestamp::date AS date
, CASE WHEN from_asset LIKE '%/%' OR to_asset LIKE '%/%' THEN 1 ELSE 0 END AS is_synth
, COUNT(1) AS n
FROM thorchain.swaps
WHERE block_timestamp >= '2022-03-09'
GROUP BY 1, 2
ORDER BY 1, 2
SELECT contract_name
, COUNT(1) AS n
FROM ethereum.nft_metadata
GROUP BY 1
ORDER BY 1
SELECT *
FROM ethereum.nft_metadata
WHERE contract_name IN ('MutantApeYachtClub','bayc')
ORDER BY contract_name, token_id
SELECT project_name
, COUNT(1) AS n
FROM solana.nft_metadata
GROUP BY 1
ORDER BY 1
SELECT *
FROM solana.nft_metadata
WHERE project_name = 'Solana Monkey Business'
LIMIT 10000
SELECT block_timestamp::date AS date
, COUNT(1) AS n
FROM solana.nfts
WHERE block_timestamp >= '2022-03-14'
AND program_id = 'J7RagMKwSD5zJSbRQZU56ypHUtux8LRDkUpAPSKH4WPp'
AND inner_instruction:instructions[1]:parsed:info:amount IS NOT NULL
SELECT m.token_id
, pretoken_balance[1]:mint AS pre_mint_1
, n.*
, inner_instruction:instructions[1]:parsed:info:amount AS amount
FROM solana.nfts n
JOIN solana.nft_metadata m ON m.mint = n.mint
WHERE block_timestamp >= '2022-03-14'
AND program_id = 'J7RagMKwSD5zJSbRQZU56ypHUtux8LRDkUpAPSKH4WPp'
LIMIT 100
SELECT
FROM solana.nfts
WHERE block_timestamp >= '2022-03-01'
SELECT *
FROM thorchain.swaps
LIMIT 10
2022-03-18 00:23:50 +00:00
SELECT from_asset
, to_asset
, pool_name
, CASE WHEN memo like '%/%' THEN 1 ELSE 0 END AS is_synth
, COUNT(1) AS n
FROM thorchain.swap_events
WHERE block_timestamp >= '2022-03-09'
GROUP BY 1, 2, 3
ORDER BY 4 DESC
2022-03-21 16:34:42 +00:00
cp -R props props-protocol find props \( -path "*/.git/*" -or -name ".git" \) -delete
And given t he quickly changing nature of such technology, most sources of traditional analytics
are often caught playing "catch-up" rather than innovating.
2022-03-18 00:23:50 +00:00
SELECT pool
, from_asset
, to_asset
, COUNT(1) AS n
FROM thorchain_midgard_public
WHERE block_timestamp >= CURRENT_DATE - 3
GROUP BY 1, 2, 3
ORDER BY 4 DESC
SELECT *
FROM mdao_harmony.dfk_quest_rewards
WHERE log_id = '0xbfecf5e4d8e159c54103a0e7d8c21b27503be89e2048c02fabfb9cfa18e69f5b'
SELECT block_timestamp::date AS date
, COUNT(1) AS n
FROM algorand.transactions
GROUP BY 1
ORDER BY 1
SELECT *
FROM mdao_harmony.dfk_hero_updates
WHERE hero_id = 107255
ORDER BY block_timestamp
WITH base AS (
SELECT hero_id
, summoning_info_summonerid
, summoning_info_assistantid
, hero_info_class
, hero_info_subclass
, hero_stats_strength
, hero_stats_intelligence
, hero_stats_wisdom
, hero_stats_luck
, hero_stats_agility
, hero_stats_vitality
, hero_stats_endurance
, hero_stats_dexterity
, hero_stats_hp
, hero_stats_mp
, hero_stats_stamina
, hero_primary_stat_growth_strength
, hero_primary_stat_growth_intelligence
, hero_primary_stat_growth_wisdom
, hero_primary_stat_growth_luck
, hero_primary_stat_growth_agility
, hero_primary_stat_growth_vitality
, hero_primary_stat_growth_endurance
, hero_primary_stat_growth_dexterity
, hero_primary_stat_growth_hpsm
, hero_primary_stat_growth_hprg
, hero_primary_stat_growth_hplg
, hero_primary_stat_growth_mpsm
, hero_primary_stat_growth_mprg
, hero_primary_stat_growth_mplg
, hero_secondary_stat_growth_strength
, hero_secondary_stat_growth_intelligence
, hero_secondary_stat_growth_wisdom
, hero_secondary_stat_growth_luck
, hero_secondary_stat_growth_agility
, hero_secondary_stat_growth_vitality
, hero_secondary_stat_growth_endurance
, hero_secondary_stat_growth_dexterity
, hero_secondary_stat_growth_hpsm
, hero_secondary_stat_growth_hprg
, hero_secondary_stat_growth_hplg
, hero_secondary_stat_growth_mpsm
, hero_secondary_stat_growth_mprg
, hero_secondary_stat_growth_mplg
, ROW_NUMBER() OVER (PARTITION BY hero_id ORDER BY block_timestamp) AS rn
FROM mdao_harmony.dfk_hero_updates
), base2 AS (
SELECT *
FROM base
WHERE rn = 1
)
SELECT b
FROM base2
Boaz Barak - CS 127 course about cryptography (you can talk about how you've bee working for a crypto company)
Finale Doshi-Velez - CS 181 course about machine learning
David Parkes - CS 181 course about machine learning
SELECT *
FROM mdao_harmony.dfk_quest_rewards
WHERE tx_hash = '0x3964399cdcb7f2de11a9da39a3d812fa4b9a88070caaa97d5d1ec5242d2f8d4b'
0xc855dea300000000000000000000000000000000000000000000000000000000000000600000000000000000000000006ff019415ee105acf2ac52483a33f5b43eadb8d000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000cc3c000000000000000000000000000000000000000000000000000000000000be8000000000000000000000000000000000000000000000000000000000000190b80000000000000000000000000000000000000000000000000000000000017df60000000000000000000000000000000000000000000000000000000000003158000000000000000000000000000000000000000000000000000000000001777d
0xf51333f50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4154b6e5d240507f9699c730a496790a722df19000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001a2f7000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0xc855dea30000000000000000000000000000000000000000000000000000000000000060000000000000000000000000e259e8386d38467f0e7ffedb69c3c9c935dfaefc000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000018345000000000000000000000000000000000000000000000000000000000000dada00000000000000000000000000000000000000000000000000000000000181f50000000000000000000000000000000000000000000000000000000000016280000000000000000000000000000000000000000000000000000000000000dbb0
0xc855dea300000000000000000000000000000000000000000000000000000000000000600000000000000000000000003132c76acf2217646fb8391918d28a16bd8a8ef4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000018201000000000000000000000000000000000000000000000000000000000001663d000000000000000000000000000000000000000000000000000000000001a6e2
1: 0xf51333f50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4154b6e5d240507f9699c730a496790a722df19000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001a2f7000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
2: 0xc855dea300000000000000000000000000000000000000000000000000000000000000600000000000000000000000003132c76acf2217646fb8391918d28a16bd8a8ef4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000018201000000000000000000000000000000000000000000000000000000000001663d000000000000000000000000000000000000000000000000000000000001a6e2
3: 0xc855dea300000000000000000000000000000000000000000000000000000000000000600000000000000000000000003132c76acf2217646fb8391918d28a16bd8a8ef400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000001fbff00000000000000000000000000000000000000000000000000000000000233cc0000000000000000000000000000000000000000000000000000000000022d29000000000000000000000000000000000000000000000000000000000001c486
-- DFK level ups
SELECT log_id
, hero_id
, MIN(hero_state_level) AS mn_level
, MAX(hero_state_level) AS mx_level
FROM mdao_harmony.dfk_hero_updates
WHERE block_timestamp >= '2022-03-08'
GROUP BY 1, 2
HAVING mn_level < mx_level
SELECT *
FROM mdao_harmony.logs
WHERE tx_hash = '0x191f7317aedeef0ec87c3cb5834a798197deca7ab8885ace43bfb0ffbe7b744d'
SELECT RIGHT(LEFT(data, 10 + (64 * 2)), 2) AS s1
, RIGHT(LEFT(data, 10 + (64 * 3)), 2) AS s2
, RIGHT(LEFT(data, 10 + (64 * 4)), 2) AS s3
, *
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-09'
AND native_to_address = 'one1qk2ds6efyvrk5gckat4yu89zsmd2zskpwyytuq'
AND data like '0xfa863736%'
LIMIT 100
WITH base AS (
SELECT RIGHT(LEFT(data, 10 + (64 * 2)), 2) AS s1
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) < RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s2
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) > RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s3
, COUNT(1) AS n
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-09'
AND native_to_address = 'one1qk2ds6efyvrk5gckat4yu89zsmd2zskpwyytuq'
AND data like '0xfa863736%'
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3
)
SELECT *
FROM base
SELECT tx_hash
, block_timestamp
, RIGHT(LEFT(data, 10 + 64), 64) AS hero_hash
, RIGHT(LEFT(data, 10 + (64 * 2)), 2) AS s1
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) < RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s2
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) > RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s3
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-09'
AND native_to_address = 'one1qk2ds6efyvrk5gckat4yu89zsmd2zskpwyytuq'
AND data like '0xfa863736%'
LIMIT 100
WITH base AS (
SELECT *
, ROW_NUMBER() OVER (PARTITION BY hero_id ORDER BY block_timestamp DESC) AS rn
FROM mdao_harmony.dfk_hero_updates
)
SELECT *
FROM base WHERE rn = 1
And heal the earth which the angels have defiled, and announce the healing of the earth that I will heal it, and that not all the sons of men shall be destroyed through the mystery of all the things which the watchers have spoken and have taught their sons.
SELECT hero_state_level
, MAX(CAST hero_state_xp AS INT)
FROM mdao_harmony.dfk_hero_updates
GROUP BY 1
WITH base AS (
SELECT hero_state_level
, hero_state_xp
FROM mdao_harmony.dfk_hero_updates
GROUP BY 1, 2
HAVING COUNT(1) > 10
)
SELECT hero_state_level
, MAX(hero_state_xp)
FROM base
GROUP BY 1
WITH start_meditation AS (
SELECT tx_hash
, block_timestamp
, RIGHT(LEFT(data, 10 + 64), 64) AS hero_hash
, RIGHT(LEFT(data, 10 + (64 * 2)), 2) AS s1
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) < RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s2
, CASE WHEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) > RIGHT(LEFT(data, 10 + (64 * 4)), 2) THEN RIGHT(LEFT(data, 10 + (64 * 3)), 2) ELSE RIGHT(LEFT(data, 10 + (64 * 4)), 2) END AS s3
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-09'
AND native_to_address = 'one1qk2ds6efyvrk5gckat4yu89zsmd2zskpwyytuq'
AND data like '0xfa863736%'
), end_meditation AS (
SELECT tx_hash
, block_timestamp
, RIGHT(LEFT(data, 10 + 64), 64) AS hero_hash
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-09'
AND native_to_address = 'one1qk2ds6efyvrk5gckat4yu89zsmd2zskpwyytuq'
AND data like '0x756fcd69%'
)
SELECT s.*
, e.tx_hash AS end_hash
, ROW_NUMBER() OVER (PARTITION BY s.tx_hash ORDER BY s.block_timestamp DESC, e.block_timestamp) AS rn
FROM start_meditation s
JOIN end_meditation e ON e.hero_hash = s.hero_hash
AND e.block_timestamp > s.block_timestamp
AND DATEADD(hours, 24, s.block_timestamp) < e.block_timestamp
SELECT *
FROM mdao_harmony.dfk_hero_updates
WHERE block_timestamp >= '2022-03-09'
AND log_id like '0x9948be24eedafdf7185969524578f292faf6c642fc37d3a0b55c1582d650e607%'
WITH base AS (
SELECT b.log_id
, a.block_timestamp
, b.block_timestamp
, a.hero_state_level AS old_level
, a.hero_stats_strength AS str_base
, a.hero_stats_intelligence AS int_base
, a.hero_stats_wisdom AS wis_base
, a.hero_stats_luck AS lck_base
, a.hero_stats_agility AS agi_base
, a.hero_stats_vitality AS vit_base
, a.hero_stats_endurance AS end_base
, a.hero_stats_hp AS hp_base
, a.hero_stats_mp AS mp_base
, a.hero_stats_stamina AS stam_base
, b.hero_stats_strength - a.hero_stats_strength AS str_inc
, b.hero_stats_intelligence - a.hero_stats_intelligence AS int_inc
, b.hero_stats_wisdom - a.hero_stats_wisdom AS wis_inc
, b.hero_stats_luck - a.hero_stats_luck AS lck_inc
, b.hero_stats_agility - a.hero_stats_agility AS agi_inc
, b.hero_stats_vitality - a.hero_stats_vitality AS vit_inc
, b.hero_stats_endurance - a.hero_stats_endurance AS end_inc
, b.hero_stats_dexterity - a.hero_stats_dexterity AS dex_inc
, b.hero_stats_hp - a.hero_stats_hp AS hp_inc
, b.hero_stats_mp - a.hero_stats_mp AS mp_inc
, b.hero_stats_stamina - a.hero_stats_stamina AS stam_inc
, ROW_NUMBER() OVER (PARTITION BY a.hero_id ORDER BY a.block_timestamp DESC, b.block_timestamp) AS rn
FROM mdao_harmony.dfk_hero_updates a
JOIN mdao_harmony.dfk_hero_updates b ON a.hero_id = b.hero_id
AND a.hero_state_level = b.hero_state_level - 1
AND a.block_timestamp < b.block_timestamp
AND DATEADD(hours, 24, a.block_timestamp) > b.block_timestamp
WHERE a.block_timestamp >= '2022-03-01'
AND a.hero_id = 107255
ORDER BY b.block_timestamp
)
SELECT *
FROM base
WHERE rn = 1
select log_id
, tx_hash
, topics[1] as quest_id
from mdao_harmony.logs
WHERE quest_id IN (
'0x00000000000000000000000000000000000000000000000000000000008d04c8'
)
SELECT *
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-20'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
AND tx_hash = '0x02d562dc33d8b92744aa73a685bc1938e324a8368a5977a1b9983a764d72e11d'
SELECT *
FROM mdao_harmony.txs
WHERE tx_hash = '0x2e929a6fc7326547eb0fd0cb52dd9bbe70f59229afa919ec9d48bed72bfc8903'
WITH q AS (
SELECT DISTINCT tx_hash
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1, 2, 3
)
SELECT b.*
, mx_xp - mn_xp AS xp_increase
, mx_fishing - mn_fishing AS fishing_increase
, mx_foraging - mn_foraging AS foraging_increase
, mx_gardening - mn_gardening AS gardening_increase
, mx_mining - mn_mining AS mining_increase
, CASE WHEN q.tx_hash IS NULL THEN 0 ELSE 1 END AS is_quest
FROM base b
LEFT JOIN q ON q.tx_hash = b.tx_hash
ORDER BY hero_id, block_timestamp
LIMIT 1000
WITH base AS (
select try_base64_decode_string(tx_message:txn:apaa[0]::string) as code
, block_timestamp::date
, tx_group_id
, app_id
, ROW_NUMBER() OVER (PARTITION BY app_id ORDER BY block_timestamp DESC) AS rn
2022-04-05 05:25:23 +00:00
from "flipside_dev_db"."ALGORAND"."APPLICATION_CALL_TRANSACTION"
2022-03-18 00:23:50 +00:00
where 1=1
AND block_timestamp IS NOT NULL
and code in ('sef','sfe')
)
SELECT *
FROM base
WHERE rn = 1
SELECT CASE WHEN block_timestamp IS NULL THEN 1 ELSE 0 END AS timstamp_is_null
, COUNT(1) AS n
, MAX(block_timestamp) AS mx
FROM algorand.application_call_transaction
GROUP BY 1
select max(block_timestamp)
from algorand.transactions
WHERE block_timestamp >= '2022-03-01'
PactFi
PLXdumWjHCE6caDGNvwauHJChxFg7VJtZpC2uBqq8cU=
AlgoFi
yHcHFpy31C9CHHGm815PR4qRNL4STsJq4RElnEoDLjo=
LP
1iDBw/P9/SzpLnQI2eCUGYTaBlNsIousWSPQjEYaNdU=
SELECT
tx_group_id
, try_base64_decode_string(tx_message:txn:note::string) AS code
, tx_message:txn:note::string AS note
, try_base64_decode_string(tx_message:txn:apaa[0]::string) AS code2
, (tx_message:txn:apaa[0]::string) AS apaa
, *
FROM algorand.application_call_transaction
WHERE block_timestamp >= '2022-03-01'
-- AND tx_group_id = 'PtUbYJnOE0+DTd+94YvepmCNub5NB6/vsjjP3ez6iYE='
AND code2 = 'ADDLIQ'
ORDER BY block_timestamp DESC
LIMIT 1000
SELECT *
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND tx_hash = '0xeb43a66ee8c281bb9ee5b491e9e2036eeeaa8584e06727a8e69ab4e94b384f71'
0xc855dea30000000000000000000000000000000000000000000000000000000000000060000000000000000000000000569e6a4c2e3af31b337be00657b4c040c828dd7300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001e9f8
SELECT *
FROM algorand.application_call_transaction
WHERE block_timestamp >= '2022-03-04'
AND try_base64_decode_string(tx_message:txn:apaa[0]::string) = 'rpa1r'
ORDER BY block_timestamp DESC
LIMIT 100
select *
from algorand.transactions
WHERE block_timestamp >= '2022-03-01'
AND try_base64_decode_string(tx_message:txn:apaa[0]::string) = 'swap'
AND tx_group_id = 'WfFULCOGyZUavqEyoT9CPidQuZQsxCCV3YsWy6MEjh0='
LIMIT 100
WITH a AS (
SELECT 'Gold' AS token
, price
, ROW_NUMBER() OVER (ORDER BY timestamp DESC) AS rn
FROM mdao_harmony.tokenprice_dfkgold
UNION ALL
SELECT 'GaiasTears' AS token
, price
, ROW_NUMBER() OVER (ORDER BY timestamp DESC) AS rn
FROM mdao_harmony.tokenprice_gaiatear
UNION ALL
SELECT 'Jewel' AS token
, price
, ROW_NUMBER() OVER (ORDER BY timestamp DESC) AS rn
FROM mdao_harmony.tokenprice_jewel
)
SELECT *
FROM a
WHERE rn = 1
WITH name_map AS (
SELECT token_name
,evm_contract_address
, COUNT(1) AS n
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= CURRENT_DATE - 14
GROUP BY 1, 2
)
SELECT n.*, g.gold
FROM name_map n
LEFT JOIN mdao_harmony.dfk_item_to_gold g ON g.contract_address = n.evm_contract_address
WITH q AS (
SELECT DISTINCT tx_hash
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1, 2, 3
)
SELECT b.*
, mx_xp - mn_xp AS xp_increase
, mx_fishing - mn_fishing AS fishing_increase
, mx_foraging - mn_foraging AS foraging_increase
, mx_gardening - mn_gardening AS gardening_increase
, mx_mining - mn_mining AS mining_increase
, CASE WHEN q.tx_hash IS NULL THEN 0 ELSE 1 END AS is_quest
FROM base b
LEFT JOIN q ON q.tx_hash = b.tx_hash
ORDER BY hero_id, block_timestamp
LIMIT 1000
-- start gold mining
0x6033a41dcaf1852643db637cca601c1f55ee619331199e2bb01c5e8511623207
0x760500da5f7f137bd9bfc0a705a0230aab4e08ec000ee4fecc5d763e4ff4fc96
0x1fba20b42053972f77adee2415dc79d8484608c3b1cc82dc16f072d4fd423a99
-- gardening
0x39ef89ac1fb677c1fdeb1a55bc692d5e8a9a467633597ef06b096caebbf5a5c3
0xf51333f50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4154b6e5d240507f9699c730a496790a722df19000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001a2f7000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0xf51333f50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4154b6e5d240507f9699c730a496790a722df19000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001a2f7000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0xf51333f50000000000000000000000000000000000000000000000000000000000000080000000000000000000000000e4154b6e5d240507f9699c730a496790a722df19000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000001a2f7000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
SELECT *
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-05'
AND tx_hash IN (
'0x6033a41dcaf1852643db637cca601c1f55ee619331199e2bb01c5e8511623207'
, '0x760500da5f7f137bd9bfc0a705a0230aab4e08ec000ee4fecc5d763e4ff4fc96'
, '0x1fba20b42053972f77adee2415dc79d8484608c3b1cc82dc16f072d4fd423a99'
)
0xc855dea300000000000000000000000000000000000000000000000000000000000000600000000000000000000000006ff019415ee105acf2ac52483a33f5b43eadb8d000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000b8c3000000000000000000000000000000000000000000000000000000000000e1b0000000000000000000000000000000000000000000000000000000000001109d000000000000000000000000000000000000000000000000000000000000ec6f
SELECT token_name
, COUNT(1) AS n
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1
ORDER BY 2 DESC
-- start quest
WITH s AS (
SELECT *
, CASE
WHEN data like '%569e6a4c2e3af31b337be00657b4c040c828dd73%' THEN 'Mining'
WHEN data like '%e259e8386d38467f0e7ffedb69c3c9c935dfaefc%' THEN 'Fishing'
WHEN data like '%3132c76acf2217646fb8391918d28a16bd8a8ef4%' THEN 'Foraging'
WHEN data like '%e4154b6e5d240507f9699c730a496790a722df19%' THEN 'Gardening'
ELSE 'Other'
END AS quest_type
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND native_from_address = 'one1r2kkl9unhvhd2rmacd304u48rt7u2zrkquazn7'
AND data like '0xc855dea3%'
), e AS (
SELECT tx_hash, block_timestamp, native_from_address
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND native_from_address = 'one1r2kkl9unhvhd2rmacd304u48rt7u2zrkquazn7'
AND data like '0x528be0a9%'
GROUP BY 1, 2, 3
), r AS (
SELECT log_id
, token_name
, calculated_value
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-02-01'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1, 2, 3
), m AS (
SELECT s.quest_type
, s.block_timestamp AS start_time
, b.*
, ROW_NUMBER() OVER (PARTITION BY s.tx_hash ORDER BY e.block_timestamp) AS rn
FROM s
JOIN e ON e.block_timestamp > s.block_timestamp
AND e.block_timestamp <= DATEADD('hour', 24, s.block_timestamp)
AND s.native_from_address = e.native_from_address
JOIN base b ON b.tx_hash = e.tx_hash
)
SELECT quest_type
, level
, AVG(mx_xp - mn_xp) AS avg_xp_inc
, COUNT(1) AS n
FROM m
WHERE rn = 1
GROUP BY 1, 2
ORDER BY 4 DESC
-- start quest
WITH s AS (
SELECT *
, CASE
WHEN data like '%569e6a4c2e3af31b337be00657b4c040c828dd73%' THEN 'Mining'
WHEN data like '%e259e8386d38467f0e7ffedb69c3c9c935dfaefc%' THEN 'Fishing'
WHEN data like '%3132c76acf2217646fb8391918d28a16bd8a8ef4%' THEN 'Foraging'
WHEN data like '%e4154b6e5d240507f9699c730a496790a722df19%' THEN 'Gardening'
ELSE 'Other'
END AS quest_type
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND native_from_address = 'one1r2kkl9unhvhd2rmacd304u48rt7u2zrkquazn7'
AND data like '0xc855dea3%'
), e AS (
SELECT tx_hash, block_timestamp, native_from_address
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND native_from_address = 'one1r2kkl9unhvhd2rmacd304u48rt7u2zrkquazn7'
AND data like '0x528be0a9%'
GROUP BY 1, 2, 3
), r AS (
SELECT LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, token_name
, calculated_value
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-03-01'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1, 2, 3
), m AS (
SELECT s.quest_type
, s.block_timestamp AS start_time
, b.*
, ROW_NUMBER() OVER (PARTITION BY s.tx_hash ORDER BY e.block_timestamp) AS rn
FROM s
JOIN e ON e.block_timestamp > s.block_timestamp
AND e.block_timestamp <= DATEADD('hour', 24, s.block_timestamp)
AND s.native_from_address = e.native_from_address
JOIN base b ON b.tx_hash = e.tx_hash
)
SELECT m.*
, mx_xp - mn_xp AS avg_xp_inc
, r.token_name
, r.calculated_value
FROM m
LEFT JOIN r ON r.tx_hash = m.tx_hash
WHERE rn = 1
-- quests with rewards by profession
WITH s AS (
SELECT *
, CASE
WHEN data like '%569e6a4c2e3af31b337be00657b4c040c828dd73%' THEN 'Mining'
WHEN data like '%e259e8386d38467f0e7ffedb69c3c9c935dfaefc%' THEN 'Fishing'
WHEN data like '%3132c76acf2217646fb8391918d28a16bd8a8ef4%' THEN 'Foraging'
WHEN data like '%e4154b6e5d240507f9699c730a496790a722df19%' THEN 'Gardening'
ELSE 'Other'
END AS quest_type
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0xc855dea3%'
), e AS (
SELECT tx_hash, block_timestamp, native_from_address
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
GROUP BY 1, 2, 3
), r AS (
SELECT LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, token_name
, calculated_value
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-02-01'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_stats_strength AS INT)) AS mn_str
, MIN(CAST(hero_stats_dexterity AS INT)) AS mn_dex
, MIN(CAST(hero_stats_agility AS INT)) AS mn_agi
, MIN(CAST(hero_stats_vitality AS INT)) AS mn_vit
, MIN(CAST(hero_stats_endurance AS INT)) AS mn_end
, MIN(CAST(hero_stats_intelligence AS INT)) AS mn_int
, MIN(CAST(hero_stats_wisdom AS INT)) AS mn_wis
, MIN(CAST(hero_stats_luck AS INT)) AS mn_lck
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-02-01'
GROUP BY 1, 2, 3
), m AS (
SELECT s.quest_type
, s.block_timestamp AS start_time
, b.*
, ROW_NUMBER() OVER (PARTITION BY s.tx_hash ORDER BY e.block_timestamp) AS rn
FROM s
JOIN e ON e.block_timestamp > s.block_timestamp
AND e.block_timestamp <= DATEADD('hour', 24, s.block_timestamp)
AND s.native_from_address = e.native_from_address
JOIN base b ON b.tx_hash = e.tx_hash
)
SELECT m.*
, mx_xp - mn_xp AS avg_xp_inc
, r.token_name
, r.calculated_value
FROM m
LEFT JOIN r ON r.tx_hash = m.tx_hash
WHERE rn = 1
SELECT *
, CASE
WHEN data like '%569e6a4c2e3af31b337be00657b4c040c828dd73%' THEN 'Mining'
WHEN data like '%e259e8386d38467f0e7ffedb69c3c9c935dfaefc%' THEN 'Fishing'
WHEN data like '%3132c76acf2217646fb8391918d28a16bd8a8ef4%' THEN 'Foraging'
WHEN data like '%e4154b6e5d240507f9699c730a496790a722df19%' THEN 'Gardening'
WHEN data like '%0548214A0760a897aF53656F4b69DbAD688D8f29%' THEN 'WishingWell'
ELSE 'Other'
END AS quest_type
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-02-01'
AND from_address = '0x1aad6f9793bb2ed50f7dc362faf2a71afdc50876'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0xc855dea3%'
-- start quest
WITH s AS (
SELECT *
, CASE
WHEN data like '%569e6a4c2e3af31b337be00657b4c040c828dd73%' THEN 'Mining'
WHEN data like '%e259e8386d38467f0e7ffedb69c3c9c935dfaefc%' THEN 'Fishing'
WHEN data like '%3132c76acf2217646fb8391918d28a16bd8a8ef4%' THEN 'Foraging'
WHEN data like '%e4154b6e5d240507f9699c730a496790a722df19%' THEN 'Gardening'
ELSE 'Other'
END AS quest_type
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-06'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0xc855dea3%'
)
SELECT *
FROM s
WHERE quest_type = 'Other'
LIMIT 100
WITH q AS (
SELECT DISTINCT tx_hash
FROM mdao_harmony.txs
WHERE block_timestamp >= '2022-03-01'
AND native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
), base AS (
SELECT hero_id
, block_timestamp
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
, MIN(hero_state_level) AS level
, MIN(CAST(hero_professions_mining AS INT)) AS mn_mining
, MIN(CAST(hero_professions_gardening AS INT)) AS mn_gardening
, MIN(CAST(hero_professions_foraging AS INT)) AS mn_foraging
, MIN(CAST(hero_professions_fishing AS INT)) AS mn_fishing
, MAX(CAST(hero_professions_mining AS INT)) AS mx_mining
, MAX(CAST(hero_professions_gardening AS INT)) AS mx_gardening
, MAX(CAST(hero_professions_foraging AS INT)) AS mx_foraging
, MAX(CAST(hero_professions_fishing AS INT)) AS mx_fishing
, MIN(CAST(hero_state_xp AS INT)) AS mn_xp
, MAX(CAST(hero_state_xp AS INT)) AS mx_xp
FROM mdao_harmony.dfk_hero_updates u
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1, 2, 3
), base2 AS (
SELECT b.*
, mx_xp - mn_xp AS xp_increase
, mx_fishing - mn_fishing AS fishing_increase
, mx_foraging - mn_foraging AS foraging_increase
, mx_gardening - mn_gardening AS gardening_increase
, mx_mining - mn_mining AS mining_increase
, CASE WHEN q.tx_hash IS NULL THEN 0 ELSE 1 END AS is_quest
FROM base b
JOIN q ON q.tx_hash = b.tx_hash
)
SELECT level
,AVG(xp_increase)
,COUNT(1) AS n
FROM base2
GROUP BY 1
SELECT token_name
,COUNT(1) AS n
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-03-01'
GROUP BY 1
select log_id
, tx_hash
, topics[1] as quest_id
from mdao_harmony.logs
WHERE tx_hash IN (
'0x19020484cd737548759478053addf9fc877ed389e064f478a10d67209132227b'
, '0x3fbccc087450a9273466dea29da1a0c4d8d5e3f07fd8ca97fd6676fd0b9a7ab3'
)
q_map AS (
SELECT
tx_hash
, topics[1] as quest_id
from mdao_harmony.logs
WHERE block_timestamp >= '2022-02-01'
AND evm_contract_address = '0x5100bd31b822371108a0f63dcfb6594b9919eaf4'
GROUP BY 1, 2
)
with
quest_start_table as (
-- this query is used to select quests sent from my wallet to the quest contract
select tx_hash
from mdao_harmony.txs
where from_address = '0x0ba43bae4613e03492e4c17af3b014b6c3202b9d' -- my address
and to_address = '0x5100bd31b822371108a0f63dcfb6594b9919eaf4' -- quest core contract
--and tx_hash = '0x7d6f0613cc43cd928a2cc19c1fdb3718453145a77c31ada152c7cf4ab65bb66d' -- for testing purposes
--and tx_hash ='0x5019b6b8518a3ab63803aab7fa4e09e751114953d863d078eea2f494fac6c835'
and block_timestamp > current_date - 4
order by block_timestamp desc
),
quest_id_table as (
-- this query is used to select quests id that is a log from the quest contract
select topics[1] as quest_id
from mdao_harmony.logs
where 1=1
and tx_hash in ( select tx_hash from quest_start_table )
--and tx_hash = '0x7d6f0613cc43cd928a2cc19c1fdb3718453145a77c31ada152c7cf4ab65bb66d' -- for faster testing
--and tx_hash ='0x5019b6b8518a3ab63803aab7fa4e09e751114953d863d078eea2f494fac6c835' -- testing
and evm_contract_address = '0x5100bd31b822371108a0f63dcfb6594b9919eaf4' -- quest core contract
)
/*,
quest_log_getter as (
-- this query is used to select rewards that is matching the questid
select * from mdao_harmony.txs
where from_address = '0x0ba43bae4613e03492e4c17af3b014b6c3202b9d' -- my address
and to_address = '0x5100bd31b822371108a0f63dcfb6594b9919eaf4' -- quest core
and block_timestamp >= '2022-02-10 02:14:56.000' -- test code , can remove
and block_timestamp <= '2022-02-13 02:14:56.000' -- test code , can remove
and data = '0x528be0a9000000000000000000000000000000000000000000000000000000000001011f' -- test code, can remove
)
*/
-- select logs where quest_id matches topics[1] and topics[0] says quest reward (you probably need to filter more by contracts )
select
substr(data,67,64) as token_address,
substr(data,67+64,64) as amount_rewards
from mdao_harmony.logs
where block_timestamp > current_date - 4
and topics[1] in (select quest_id from quest_id_table)
and topics[0] = '0xd24d0ec0941a2f5cf71e34aab5120a6ec265b4ff45c78e510a05928202f82786' -- quest reward
SELECT *
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp >= '2022-03-01'
AND token_name = 'Jewels'
LIMIT 10
SELECT *
FROM mdao_harmony.dfk_hero_updates
WHERE hero_id = 107255
ORDER BY block_timestamp, hero_state_xp
SELECT *
FROM mdao_harmony.txs
WHERE native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
LIMIT 10
WITH base AS (
SELECT DISTINCT tx_hash
FROM mdao_harmony.txs
WHERE native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
), a AS (
SELECT hero_state_level
, hero_professions_mining
, hero_professions_gardening
, hero_professions_foraging
, hero_professions_fishing
, LEFT(log_id, LEN(log_id) - 5) AS tx_hash
FROM mdao_harmony.dfk_hero_updates u
JOIN base b ON b.tx_hash = tx_hash
WHERE hero_id = 107255
)
SELECT *
FROM a
--How does that change based on their stats / level / what profession they do?
-- Labels are missing
-- Warrior = HERO_INFO_CLASS = '0'
-- Knight = HERO_INFO_CLASS = '1'
-- Thief = HERO_INFO_CLASS = '2'
-- Archer = HERO_INFO_CLASS = '3'
-- Priest = HERO_INFO_CLASS = '4'
-- Wizard = HERO_INFO_CLASS = '5'
-- Monk = HERO_INFO_CLASS = '6'
-- Pirate = HERO_INFO_CLASS = '7'
-- Paladin = HERO_INFO_CLASS = '16'
-- Darkknight = HERO_INFO_CLASS = '17'
-- Summoner = HERO_INFO_CLASS = '18'
-- Ninja = HERO_INFO_CLASS = '19'
-- Dragoon = HERO_INFO_CLASS = '24'
-- Sage = HERO_INFO_CLASS = '25'
-- Dreadknight = HERO_INFO_CLASS = '28'
WITH hero_info AS (
--Grabs all the hero data
--Need to join this table onto dfk_quest_rewards so that we are able
-- to remove 'StartQuest' tx. Since XP is stored as a state, it messes up the AVG
SELECT hi.*, SPLIT( LOG_ID , '-') AS tx_hash FROM mdao_harmony.dfk_hero_updates hi)
SELECT DISTINCT hi.HERO_INFO_CLASS, CAST(hi.HERO_STATE_LEVEL as int) as HERO_STATE_LEVEL, avg(hi.HERO_STATE_XP)
FROM mdao_harmony.dfk_quest_rewards qr JOIN hero_info hi ON hi.tx_hash[0] = qr.TX_HASH
GROUP BY hi.HERO_INFO_CLASS , HERO_STATE_LEVEL ORDER BY hi.HERO_INFO_CLASS, HERO_STATE_LEVEL
WITH hero_info AS (
SELECT HERO_STATE_LEVEL,HERO_STATE_XP, HERO_INFO_CLASS,CAST(hi.HERO_PROFESSIONS_MINING as int) as HERO_PROFESSIONS_MINING, CAST(hi.HERO_PROFESSIONS_GARDENING as int) as HERO_PROFESSIONS_GARDENING,
CAST(hi.HERO_PROFESSIONS_FORAGING as int) as HERO_PROFESSIONS_FORAGING, CAST(hi.HERO_PROFESSIONS_FISHING as int) as HERO_PROFESSIONS_FISHING
, SPLIT( LOG_ID , '-') AS tx_hash FROM mdao_harmony.dfk_hero_updates hi)
SELECT DISTINCT CAST(hi.HERO_STATE_LEVEL as int) as HERO_STATE_LEVEL, avg(hi.HERO_STATE_XP),
CASE
WHEN
HERO_PROFESSIONS_MINING >= HERO_PROFESSIONS_GARDENING
AND HERO_PROFESSIONS_MINING >= HERO_PROFESSIONS_FORAGING
AND HERO_PROFESSIONS_MINING >= HERO_PROFESSIONS_FISHING
AND HERO_PROFESSIONS_MINING != 0 THEN 'mining'
WHEN
HERO_PROFESSIONS_GARDENING >= HERO_PROFESSIONS_MINING
AND HERO_PROFESSIONS_GARDENING >= HERO_PROFESSIONS_FORAGING
AND HERO_PROFESSIONS_GARDENING >= HERO_PROFESSIONS_FISHING
AND HERO_PROFESSIONS_GARDENING != 0 THEN 'gardening'
WHEN
HERO_PROFESSIONS_FORAGING >= HERO_PROFESSIONS_MINING
AND HERO_PROFESSIONS_FORAGING >= HERO_PROFESSIONS_GARDENING
AND HERO_PROFESSIONS_FORAGING >= HERO_PROFESSIONS_FISHING
AND HERO_PROFESSIONS_FORAGING != 0 THEN 'foraging'
WHEN
HERO_PROFESSIONS_FISHING >= HERO_PROFESSIONS_MINING
AND HERO_PROFESSIONS_FISHING >= HERO_PROFESSIONS_GARDENING
AND HERO_PROFESSIONS_FISHING >= HERO_PROFESSIONS_FORAGING
AND HERO_PROFESSIONS_FISHING != 0 THEN 'fishing'
else 'professionless'
END AS category
FROM mdao_harmony.dfk_quest_rewards qr JOIN hero_info hi ON hi.tx_hash[0] = qr.TX_HASH
group by HERO_STATE_LEVEL, CATEGORY
SELECT DATEDIFF(week, date_trunc('WEEK', block_timestamp), date_trunc('WEEK', CURRENT_TIMESTAMP)) AS weeks_ago
, date_trunc('WEEK', block_timestamp) AS date
, COUNT(1) AS n_quests
, COUNT(DISTINCT native_from_address) as n_questers
FROM mdao_harmony.txs
WHERE native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
GROUP BY 1, 2
ORDER BY 1
WITH
--Grabs all paying quests
buckets AS (
SELECT AS_VARCHAR(to_address) AS to_address,
week(date_trunc('day', block_timestamp)) AS quest_week
FROM mdao_harmony.dfk_quest_rewards
WHERE block_timestamp < '2022-01-03'
GROUP BY to_address, quest_week),
--Grabs the first week for paying quest
first_week as (
SELECT
AS_VARCHAR(to_address) as to_address,
min(week(date_trunc('day', block_timestamp))) AS first_quest_week
FROM mdao_harmony.dfk_quest_rewards
where block_timestamp < '2022-01-03'
GROUP BY to_address
),
--Grabs quest that pays out no rewards
no_reward_buckets AS (
SELECT from_address AS to_address, week(date_trunc('day', block_timestamp)) AS quest_week
FROM mdao_harmony.txs
WHERE native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
AND tx_hash not in (SELECT tx_hash FROM mdao_harmony.dfk_quest_rewards)
AND block_timestamp < '2022-01-03'
--Only grab valid tx
AND status = TRUE),
--Grabs the first week for non-paying quest
first_week_no_rewards as (
SELECT from_address as to_address, min(week(date_trunc('day', block_timestamp))) AS first_quest_week
FROM mdao_harmony.txs
WHERE native_to_address = 'one12yqt6vdcygm3zz9q7c7uldjefwv3n6h5trltq4'
AND data like '0x528be0a9%'
AND tx_hash not in (SELECT tx_hash FROM mdao_harmony.dfk_quest_rewards)
AND block_timestamp < '2022-01-03'
AND status = TRUE
GROUP BY 1),
--Merges the two tables for first week
merge_first_week AS (
SELECT * FROM first_week_no_rewards
UNION ALL
SELECT * FROM first_week ),
--If duplicate addresses, picks the one with a lower first week
fiter_first_week AS (
SELECT to_address, min(first_quest_week) AS first_quest_week
FROM merge_first_week
GROUP BY to_address
ORDER BY to_address),
merge_buckets as (
select * from buckets
union all
select * from no_reward_buckets
),
--Creates table of user, week they quested, and week of first quest
merge_login_first AS (
SELECT a.to_address,
a.quest_week,
b.first_quest_week AS first_quest
FROM merge_buckets a, fiter_first_week b
WHERE a.to_address = b.to_address
), week_num AS (
SELECT a.to_address, a.quest_week, b.first_quest_week AS first_quest,
a.quest_week - first_quest AS week_number
FROM buckets a, first_week b
WHERE a.to_address = b.to_address
) SELECT first_quest AS first_week,
SUM(CASE WHEN week_number = 0 THEN 1 ELSE 0 END) AS week_0,
SUM(CASE WHEN week_number = 1 THEN 1 ELSE 0 END) AS week_1,
SUM(CASE WHEN week_number = 2 THEN 1 ELSE 0 END) AS week_2,
SUM(CASE WHEN week_number = 3 THEN 1 ELSE 0 END) AS week_3,
SUM(CASE WHEN week_number = 4 THEN 1 ELSE 0 END) AS week_4,
SUM(CASE WHEN week_number = 5 THEN 1 ELSE 0 END) AS week_5
FROM week_num GROUP BY first_week ORDER BY first_week
AlgoFi
ALGO / OPUL
Add LP
Examples
gb/8+oHUk+3G6l7UGycJA+huSAQhycl5E4eYxsG5XXI=
ik0azydJLpeQi8qsRbt0zxDfmJDzX7V9cQ7mEzszOCo=
app_id = 613210847
Swap
Examples
yHcHFpy31C9CHHGm815PR4qRNL4STsJq4RElnEoDLjo=
c+X1QfLHuqpGbiecxYlUM7c74eThALxKl5Bp04sojOg=
gb/8+oHUk+3G6l7UGycJA+huSAQhycl5E4eYxsG5XXI=
xLHcgXj43Ts3h6FcgJGkwUZ3R05fDt16u13Jfb/eYGg=
app_id = 613210847
Pact.Fi
ALGO / USDC
app_id = 620995314
2022-02-04 04:35:13 +00:00
WITH orders AS (
SELECT tx_id
, block_timestamp AS sale_date
, msg_value:execute_msg:execute_order:order:order:maker_asset:info:nft:token_id AS token_id
, msg_value:execute_msg:execute_order:order:order:maker_asset:info:nft:contract_addr::string AS contract
, msg_value:execute_msg:execute_order:order:order:taker_asset:amount::decimal/pow(10,6) AS price
FROM terra.msgs
WHERE msg_value:contract::string = 'terra1eek0ymmhyzja60830xhzm7k7jkrk99a60q2z2t'
AND tx_status = 'SUCCEEDED'
AND msg_value:execute_msg:execute_order IS NOT NULL
AND contract IN ( '{}' )
), Lorders AS (
SELECT tx_id
, block_timestamp AS sale_date
, msg_value:execute_msg:ledger_proxy:msg:execute_order:order:order:maker_asset:info:nft:token_id AS token_id
, msg_value:execute_msg:ledger_proxy:msg:execute_order:order:order:maker_asset:info:nft:contract_addr::string AS contract
, msg_value:execute_msg:ledger_proxy:msg:execute_order:order:order:taker_asset:amount::decimal/pow(10,6) AS price
FROM terra.msgs
WHERE msg_value:contract::string = 'terra1eek0ymmhyzja60830xhzm7k7jkrk99a60q2z2t'
AND tx_status = 'SUCCEEDED'
AND msg_value:execute_msg:ledger_proxy:msg:execute_order IS NOT NULL
AND contract IN ( '{}' )
), unioned AS (
SELECT * FROM orders
UNION ALL
SELECT * FROM Lorders
)
SELECT CASE
WHEN contract = 'terra1p70x7jkqhf37qa7qm4v23g4u4g8ka4ktxudxa7' THEN 'Levana Dust'
WHEN contract = 'terra1chrdxaef0y2feynkpq63mve0sqeg09acjnp55v' THEN 'Levana Meteors'
WHEN contract = 'terra1k0y373yxqne22pc9g7jvnr4qclpsxtafevtrpg' THEN 'Levana Dragon Eggs'
WHEN contract = 'terra1trn7mhgc9e2wfkm5mhr65p3eu7a2lc526uwny2' THEN 'LunaBulls'
WHEN contract = 'terra103z9cnqm8psy0nyxqtugg6m7xnwvlkqdzm4s4k' THEN 'Galactic Punks'
ELSE 'Other'
END AS collection
, sale_date
, token_id
, tx_id
, price
FROM unioned