mirror of
https://github.com/FlipsideCrypto/nft-deal-score.git
synced 2026-02-06 02:46:52 +00:00
10811 lines
319 KiB
SQL
10811 lines
319 KiB
SQL
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
|
|
|
|
|
|
Is solana too dependent on Serum
|
|
They use their transaction flows
|
|
Planning stage of expanding into other chains
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
SELECT *
|
|
FROM thorchain.swaps
|
|
WHERE pool_name LIKE 'GAIA.ATOM%'
|
|
ORDER BY block_timestamp
|
|
LIMIT 100
|
|
|
|
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
|
|
)
|
|
|
|
WITH base AS (
|
|
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
|
|
), 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
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
WITH base AS (
|
|
SELECT day, date_trunc('month', day) AS month, SUM(asset_liquidity * asset_price_usd) AS non_rune_asset_value
|
|
GROUP BY 1
|
|
), b2 AS (
|
|
SELECT *
|
|
, ROW_NUMBER() OVER (PARTITION BY month ORDER BY day DESC) AS rn
|
|
), b3 AS (
|
|
SELECT month
|
|
, non_rune_asset_value
|
|
FROM b2
|
|
WHERE rn = 1
|
|
)
|
|
SELECT *
|
|
FROM b3
|
|
|
|
FROM FLIPSIDE_PROD_DB.THORCHAIN.DAILY_POOL_STATS
|
|
WHERE day = '2022-07-08'
|
|
ORDER BY non_rune_asset_value desc
|
|
|
|
|
|
|
|
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'
|
|
|
|
SELECT *
|
|
FROM solana.core.dim_labels
|
|
WHERE label = '3d sniping demons'
|
|
|
|
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
|
|
)
|
|
SELECT *
|
|
, SUM(n_burns) OVER (ORDER BY sacrifice_time) AS cumu_burns
|
|
FROM base
|
|
|
|
|
|
|
|
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),
|
|
|
|
base4 as (select day,
|
|
sum(real_TVL) as real_TVLz
|
|
from base
|
|
group by 1),
|
|
|
|
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),
|
|
|
|
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),
|
|
|
|
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
|
|
|
|
|
|
|
|
with degen as (SELECT address, label
|
|
FROM solana.core.dim_labels
|
|
WHERE label = 'degentown'),
|
|
|
|
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),
|
|
|
|
|
|
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),
|
|
|
|
|
|
lisht as (select distinct purchaser as name
|
|
from solana.core.fact_nft_mints mints
|
|
inner join degen on mints.mint = degen.address)
|
|
,
|
|
|
|
rishi as (
|
|
select *
|
|
from solana.core.fact_nft_mints a
|
|
inner join lisht on a.purchaser = lisht.name
|
|
),
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
with degen as (SELECT address, label
|
|
FROM solana.core.dim_labels
|
|
WHERE label = 'degentown'),
|
|
|
|
lisht as (select distinct purchaser as name
|
|
from solana.core.fact_nft_mints mints
|
|
inner join degen on mints.mint = degen.address)
|
|
,
|
|
|
|
rishi as (
|
|
select *
|
|
from solana.core.fact_nft_mints a
|
|
inner join lisht on a.purchaser = lisht.name
|
|
),
|
|
|
|
|
|
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
|
|
, block_timestamp::date AS date
|
|
, count(1) AS n_wallets
|
|
from too t
|
|
LEFT JOIN f2 ON f2.address = t.purchaser
|
|
group by 1, 2
|
|
order by 2 desc
|
|
)
|
|
SELECT *
|
|
, SUM(n_wallets) OVER () AS total_wallets
|
|
FROM base
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[
|
|
{
|
|
"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?
|
|
|
|
|
|
|
|
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
|
|
|
|
SELECT *
|
|
FROM solana.core.dim_labels
|
|
WHERE label ilike 'DegenTown'
|
|
|
|
SELECT *
|
|
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
|
|
|
|
|
|
https://twitter.com/pinehearst_/status/1542532946632265728
|
|
|
|
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
|
|
|
|
|
|
|
|
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')
|
|
|
|
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')
|
|
|
|
|
|
SELECT SUM(to_e8) * POWER(10, -8) AS amt
|
|
FROM midgard.swap_events
|
|
WHERE to_asset ILIKE '%/BUSD%'
|
|
|
|
SELECT SUM(to_e8) * POWER(10, -8) AS amt
|
|
FROM thorchain.swap_events
|
|
WHERE to_asset ILIKE '%/BUSD%'
|
|
|
|
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
|
|
|
|
WITH base AS (
|
|
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'
|
|
GROUP BY 1
|
|
), b2 AS (
|
|
SELECT *
|
|
, ROW_NUMBER() OVER (ORDER BY usd_volume DESC) AS rn
|
|
FROM base
|
|
)
|
|
SELECT *
|
|
, CONCAT(CASE WHEN rn < 10 THEN '0', ELSE '' END, rn::varchar, '. ', pool_name) AS label
|
|
FROM b2
|
|
|
|
|
|
SELECT DISTINCT date_trunc('hour', block_timestamp) AS hour
|
|
FROM thorchain.UPDATE_NODE_ACCOUNT_STATUS_EVENTS
|
|
ORDER BY 1 DESC
|
|
|
|
SELECT COUNT(1) AS n, MAX(block_timestamp)
|
|
FROM thorchain.swaps
|
|
|
|
189779216.728215 - 188233930.596686
|
|
1,545,286
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
), b2 AS (
|
|
SELECT *
|
|
, synth_swap_fees / non_synth_swap_volume AS synth_swap_fees_vs_non_synth_swap_volume_ratio
|
|
FROM base b
|
|
)
|
|
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'
|
|
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT * FROM base
|
|
|
|
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%'
|
|
)
|
|
|
|
|
|
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
|
|
|
|
), 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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT *
|
|
, CASE WHEN rn < 10 THEN CONCAT('0', rn::varchar, '. ', from_address)
|
|
ELSE '10. Others' END AS label
|
|
FROM base
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
Do we skip over regulatory?
|
|
Do we use money?
|
|
|
|
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
|
|
|
|
https://linktr.ee/multichain
|
|
|
|
|
|
|
|
|
|
Baller gonna ball in any market.
|
|
|
|
Holla at a Balla.
|
|
|
|
|
|
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 (
|
|
SELECT
|
|
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
|
|
),
|
|
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
|
|
),
|
|
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
|
|
),
|
|
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
|
|
|
|
|
|
|
|
|
|
SELECT project_name, COUNT(DISTINCT mint) AS n_mint
|
|
FROM solana.dim_nft_metadata
|
|
GROUP BY 1
|
|
ORDER BY 1
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT *
|
|
, sales_amount / SUM(sales_amount) OVER (PARTITION BY month) AS pct
|
|
FROM b3
|
|
|
|
|
|
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'
|
|
)
|
|
|
|
|
|
SELECT *
|
|
FROM solana.dim_nft_metadata
|
|
WHERE LOWER(project_name) IN (
|
|
'astrals'
|
|
)
|
|
|
|
|
|
|
|
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
|
|
GROUP BY 1
|
|
), 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
|
|
GROUP BY 1
|
|
), 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
|
|
)
|
|
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
|
|
|
|
SELECT *
|
|
FROM solana.fact_nft_mints
|
|
WHERE block_timestamp >= '2022-04-24'
|
|
AND block_timestamp <= '2022-04-28'
|
|
AND mint = 'EJDtiPkuoRt9nNrQXhQDhtYuAGdV5JzQL9ZAVsRkEdJe'
|
|
|
|
SELECT
|
|
|
|
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
|
|
|
|
@poolprops I think were close
|
|
|
|
#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/
|
|
|
|
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
|
|
GROUP BY 1
|
|
|
|
|
|
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
|
|
|
|
|
|
WITH base AS (
|
|
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
|
|
)
|
|
SELECT *
|
|
FROM solana.fact_nft_mints m
|
|
JOIN base b ON b.mint = m.mint
|
|
ORDER BY block_timestamp DESC, m.mint, tx_id
|
|
|
|
WITH base AS (
|
|
SELECT COALESCE(l.label, 'Unknownn')
|
|
, date_trunc('month')
|
|
, SUM(sales_amount) AS volume
|
|
|
|
)
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
SELECT m.*
|
|
FROM solana.fact_nft_mints m
|
|
JOIN solana.dim_labels l ON l.address = m.mint
|
|
WHERE l.label = 'jelly rascals'
|
|
|
|
|
|
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),
|
|
|
|
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)
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
https://twitter.com/cheesybobas
|
|
https://www.pixiv.net/en/users/36919471
|
|
|
|
|
|
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
|
|
)
|
|
SELECT asset
|
|
, asset_e8
|
|
, pool_deduct
|
|
, block_timestamp
|
|
, tx
|
|
FROM base
|
|
WHERE rn <= cnt
|
|
|
|
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
|
|
|
|
|
|
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'
|
|
)
|
|
SELECT *
|
|
FROM base WHERE rn = 1
|
|
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
|
|
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
|
|
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
|
|
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
|
|
|
|
|
|
When I run it the first time, it doesn't work
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
SELECT *
|
|
FROM silver_crosschain.address_labels
|
|
WHERE address = '6z8T7je8BZfCbUaEpX3uNVGB1rsjXdQSRTashfArJjDP'
|
|
|
|
SELECT *
|
|
FROM solana.dim_labels
|
|
WHERE mint = '6z8T7je8BZfCbUaEpX3uNVGB1rsjXdQSRTashfArJjDP'
|
|
|
|
SELECT m.mint
|
|
, m.block_timestamp
|
|
, m.tx_id
|
|
, m.mint_price
|
|
FROM solana.fact_nft_mints m
|
|
WHERE tx_id = '4VzwY68wQ7shxyxFtxexWufe76ojZaPEpT1EYEKBQvZroVdEkSdx58m3sBpYAaJpFV7neCxRUoHCUx9XQTmwXCDv'
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
WITH base AS (
|
|
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'
|
|
)
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
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 > 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
|
|
|
|
|
|
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 =
|
|
|
|
|
|
|
|
|
|
|
|
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'
|
|
|
|
SELECT *
|
|
FROM solana.fact_nft_mints
|
|
WHERE mint IN ('13VcCoRBqyXsWNBJZQituivTtWd8USbzfRsUBBkSbw6Y','2CMQnGJMq1U611Dbim5ALqPQCDQQ1jseYLQfAhkxZ9cY')
|
|
|
|
SELECT DISTINCT project_name
|
|
FROM solana.dim_nft_metadata
|
|
|
|
|
|
|
|
|
|
SELECT COUNT(1)
|
|
FROM thorchain.bond_events
|
|
|
|
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
|
|
|
|
|
|
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'
|
|
|
|
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
|
|
|
|
|
|
|
|
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),
|
|
|
|
remove as (select
|
|
from_address as address,
|
|
pool_name as poolname,
|
|
sum(stake_units) as units
|
|
from thorchain.liquidity_actions
|
|
where lp_action = 'remove_liquidity'
|
|
group by 1,2),
|
|
|
|
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'),
|
|
|
|
table2 as (select addresses,
|
|
pools,
|
|
min(day) as earliest_add
|
|
from table1
|
|
group by 1,2),
|
|
|
|
active AS (
|
|
SELECT DISTINCT split(pool_name, '-')[0]
|
|
FROM thorchain.swaps WHERE block_timestamp >= CURRENT_DATE - 3
|
|
)
|
|
|
|
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)
|
|
|
|
select pool_namez,
|
|
avg(lp_period)
|
|
from base b
|
|
JOIN active a ON a.pool_name = b.pool_namez
|
|
group by 1
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
-- 8: initialize the pool
|
|
-- 5: burn pool
|
|
-- 4: sell team tokens
|
|
-- 3: buy team token
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
SELECT COUNT(1)
|
|
FROM thorchain.bond_actions
|
|
|
|
|
|
|
|
|
|
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
|
|
)
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
)
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
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
|
|
UNION
|
|
SELECT DISTINCT remove_hour AS hour
|
|
FROM base
|
|
)
|
|
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
|
|
|
|
|
|
SELECT *
|
|
FROM thorchain.fee_events
|
|
WHERE block_id = 5687427
|
|
QUALIFY COUNT(tx_id) OVER(PARTITION BY tx_id) <> 3
|
|
ORDER BY pool_deduct
|
|
|
|
SELECT * FROM midgard.fee_events
|
|
LIMIT 100
|
|
|
|
Chat with
|
|
Central wallets tranferring into new wallets
|
|
|
|
|
|
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
|
|
|
|
Using NFT artist from in-house
|
|
Build out the brand
|
|
Get onto Magic Eden launchpad
|
|
Hit things quick
|
|
|
|
|
|
Outfit_Astronaut Light
|
|
Outfit_Astronaut Orange
|
|
Head_Crown
|
|
Attribute count_1 7
|
|
Edition_Alien
|
|
Outfit_Armor Light
|
|
|
|
|
|
SELECT block_timestamp::date AS date
|
|
, COUNT(1) AS n
|
|
FROM solana.core.fact_nft_sales
|
|
WHERE sales_amount = 0
|
|
GROUP BY 1
|
|
ORDER BY 1
|
|
|
|
SELECT *
|
|
FROM bronze_midgard_2_6_9_20220405.switch_events
|
|
LIMIT 100
|
|
|
|
|
|
SELECT COUNT(1) AS n
|
|
FROM midgard.fee_events
|
|
WHERE block_timestamp <= 1656360639000000000
|
|
AND block_timestamp < 1654041600000000000
|
|
|
|
SELECT COUNT(1) AS n
|
|
, MAX(block_timestamp) AS mx
|
|
, MAX(block_timestamp) AS mxx
|
|
FROM thorchain.fee_events
|
|
|
|
SELECT COUNT(1) AS n
|
|
, MAX(block_timestamp) AS mx
|
|
, MAX(block_timestamp) AS mxx
|
|
FROM thorchain.bond_events
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT MAX(block_timestamp) AS mx
|
|
, COUNT(1) AS n
|
|
, COUNT(1) AS nn
|
|
FROM base
|
|
|
|
fee_events
|
|
bond_events
|
|
switch_events
|
|
transfer_events
|
|
|
|
|
|
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
|
|
)
|
|
SELECT MAX(block_timestamp) AS mx
|
|
, COUNT(1) AS n
|
|
, COUNT(1) AS nn
|
|
FROM base
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
|
|
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
|
|
)
|
|
SELECT asset
|
|
, COUNT(1) AS n
|
|
FROM base
|
|
GROUP BY 1
|
|
|
|
|
|
|
|
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
|
|
, mint
|
|
, token_id
|
|
, 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"
|
|
FROM solana.dim_nft_metadata
|
|
WHERE project_name = 'Bubblegoose Ballers'
|
|
LIMIT 10
|
|
|
|
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
|
|
|
|
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 (
|
|
SELECT *
|
|
, 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
|
|
)
|
|
SELECT DISTINCT collection, purchaser, mint
|
|
FROM b2
|
|
|
|
|
|
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
|
|
|
|
|
|
SELECT *
|
|
FROM solana.dim_labels
|
|
WHERE label = 'lizard'
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT *
|
|
, volume / SUM(volume) OVER () AS pct
|
|
FROM b3
|
|
|
|
|
|
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
|
|
|
|
SELECT L1_LABEL, COUNT(1) AS n
|
|
FROM FLIPSIDE_PROD_DB.SILVER_CROSSCHAIN.ADDRESS_LABELS
|
|
GROUP BY 1
|
|
ORDER BY 2 DESC
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
WITH a AS (
|
|
SELECT DISTINCT mint
|
|
FROM solana.fact_nft_sales s
|
|
), b AS (
|
|
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'
|
|
GROUP BY 1
|
|
), 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
|
|
)
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
-- 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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
)
|
|
SELECT COUNT(1) AS n
|
|
, MAX(block_timestamp)
|
|
FROM base
|
|
|
|
|
|
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
|
|
)
|
|
SELECT COUNT(1) AS n
|
|
FROM base
|
|
|
|
-- 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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
)
|
|
SELECT MAX(block_timestamp) AS mx
|
|
, COUNT(1) AS n
|
|
, COUNT(1) AS nn
|
|
FROM base
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
SELECT *
|
|
FROM bronze_midgard_2_6_9_20220405.midgard_fee_events
|
|
LIMIT 10
|
|
|
|
|
|
|
|
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
|
|
), b2 AS (
|
|
SELECT *
|
|
, 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 (
|
|
SELECT *
|
|
, 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'
|
|
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'
|
|
)
|
|
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'
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
FROM base
|
|
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
|
|
)
|
|
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
|
|
GROUP BY 1
|
|
ORDER BY 2 DESC
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
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
|
|
|
|
|
|
|
|
data-science
|
|
DKiZEzE-CZ+o59}L
|
|
boatpartydotbiz
|
|
|
|
sudo cp /rstudio-data/algorand_console_data.RData ~/
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
SELECT pool
|
|
, asset
|
|
, asset_e8
|
|
, block_timestamp
|
|
, COUNT(1) AS n
|
|
, COUNT(1) AS n2
|
|
FROM midgard.slash_amounts
|
|
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
|
|
|
|
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
|
|
|
|
[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)
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
block_timestamp = 1648541784259230029
|
|
|
|
SELECT *
|
|
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.MIDGARD_UNSTAKE_EVENTS
|
|
WHERE tx = '3E439D4DCA401602116BE07E2FB8751D6F491EE908E04A779D48780DF3972201'
|
|
|
|
|
|
SELECT MAX(timestamp)
|
|
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log
|
|
|
|
SELECT ABS(timestamp - 1648541784259230029) AS abs_dff
|
|
, (timestamp - 1648541784259230029) AS dff
|
|
, *
|
|
FROM FLIPSIDE_PROD_DB.bronze_midgard_2_6_9_20220405.midgard_block_log
|
|
ORDER BY abs_dff
|
|
LIMIT 100
|
|
WHERE timestamp = 1648541784259230029
|
|
|
|
SELECT l1.height AS missing_block_id
|
|
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
|
|
WHERE (l2.height IS NULL OR l3.height IS NULL)
|
|
ORDER BY l1.height
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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%'
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
SELECT *
|
|
FROM thorchain.pool_balance_change_events
|
|
WHERE block_id = 5486400
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
-- 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
|
|
|
|
|
|
|
|
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 *
|
|
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
|
|
)
|
|
SELECT *
|
|
, 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
|
|
)
|
|
SELECT *
|
|
, SUM(daily_n_lp_change) OVER (ORDER BY date) AS cumu_n_lp
|
|
FROM lp7
|
|
|
|
|
|
SELECT *
|
|
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
|
|
)
|
|
SELECT *
|
|
, 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
|
|
UNION
|
|
SELECT 'Added to other pools' AS action, SUM(added_rune_amount_2) AS rune_amount FROM b2 GROUP BY 1
|
|
UNION
|
|
SELECT 'Swapped for other assets' AS action, SUM(swapped_rune_amount_2) AS rune_amount FROM b2 GROUP BY 1
|
|
UNION
|
|
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
|
|
)
|
|
SELECT *
|
|
, 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
|
|
|
|
|
|
SELECT *
|
|
, 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
|
|
)
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
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
|
|
)
|
|
SELECT date
|
|
, SUM(net_user_stake_change) OVER (ORDER BY date) AS net_user_lps
|
|
FROM lp6
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
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
|
|
FROM FLIPSIDE_DEV_DB.bronze_midgard_2_6_9_20220405.MIDGARD_FEE_EVENTS
|
|
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
|
|
|
|
SELECT day
|
|
, rune_price_usd
|
|
FROM thorchain.daily_pool_stats
|
|
WHERE pool_name LIKE 'BNB.BUSD%'
|
|
|
|
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
|
|
FROM FLIPSIDE_DEV_DB.bronze_midgard_2_6_9_20220405.MIDGARD_BLOCK_POOL_DEPTHS
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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'
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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
|
|
|
|
|
|
SELECT contract_name
|
|
, COUNT(1) AS n
|
|
FROM ethereum.nft_metadata
|
|
WHERE contract_name IN ('MutantApeYachtClub','bayc')
|
|
GROUP BY 1
|
|
|
|
SELECT *
|
|
FROM ethereum.nft_metadata
|
|
WHERE contract_name IN ('MutantApeYachtClub','bayc')
|
|
LIMIT 10000
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
|
|
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
|
|
from "flipside_dev_db"."ALGORAND"."APPLICATION_CALL_TRANSACTION"
|
|
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
|
|
|
|
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 |