You are on page 1of 14

WITH

p AS (
VALUES
(0x66017d22b0f8556afdd19fc67041899eb65a21bb), /* Stability Pool */
(0xf20ef17b889b437c151eb5ba15a47bfc62bff469), /* Uniswap v2 LUSD/ETH */
(0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca), /* Curve LUSD/3CRV-f */
(0x497ce58f34605b9944e6b15ecafe6b001206fd25), /* Curve LUSD/FRAX/USDC */
(0xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6), /* Saddle D4 */
(0xba12222222228d8ba445958a75a0704d566bf2c8), /* Balancer v2 */
(0x99c9fc46f92e8a1c0dec1b1747d010903e884be1), /* Optimism Gateway */
(0x7c22547779c8aa41bae79e03e8383a0befbcecf0), /* Synthetix LUSD Wrapper */
(0x519b70055af55A007110B4Ff99b0eA33071c720a), /* DXdao */
(0xce1871f791548600cb59efbefFC9c38719142079) /* Aave (aLUSD) */
),
u3 /* Uniswap v3 pairs */ AS (
SELECT
"pool"
FROM
uniswap_v3_ethereum.Factory_evt_PoolCreated
WHERE
"token0" = 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
OR "token1" = 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
),
ss /* SushiSwap pairs */ AS (
SELECT
"pair"
FROM
sushi_ethereum.Factory_evt_PairCreated
WHERE
"token0" = 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
OR "token1" = 0x5f98805A4E8be255a32880FDeC7F6728C6568bA0
),
ol /* Olympus DAO */ AS (
VALUES
(0x31f8cc382c9898b273eff4e0b7626a6987c846e8),
/* Treasury */ (0x245cc372c84b3645bf0ffe6538620b04a217988b),
/* DAO Funds */ (0x9A315BdF513367C0377FB36545857d12e85813Ef) /* Treasury
(XXX: v2 or what?) */
),
rc /* Rari Capital */ AS (
SELECT
"cToken"
FROM
rari_capital_ethereum.Comptroller_evt_MarketListed
) /* XXX way to filter on underlying? */,
fei AS (
VALUES
(0xb0e731f036adfdec12da77c15aab0f90e8e45a0e),
/* PSM */ (0x4378de2f2991fbed6616b34ac7727e7653713712) /* ? */
),
o AS (
SELECT
"address"
FROM
ethereum."contracts"
WHERE
NOT "address" IN (
SELECT
*
FROM
p
)
AND NOT "address" IN (
SELECT
*
FROM
u3
)
AND NOT "address" IN (
SELECT
*
FROM
ss
)
AND NOT "address" IN (
SELECT
*
FROM
ol
)
AND NOT "address" IN (
SELECT
*
FROM
fei
)
AND NOT "address" IN (
SELECT
*
FROM
rc
)
),
a AS (
SELECT
0x0000000000000000000000000000000000000000
UNION ALL
SELECT
*
FROM
p
UNION ALL
SELECT
*
FROM
u3
UNION ALL
SELECT
*
FROM
ss
UNION ALL
SELECT
*
FROM
ol
UNION ALL
SELECT
*
FROM
rc
UNION ALL
SELECT
*
FROM
fei
UNION ALL
SELECT
*
FROM
o
),
c AS (
SELECT
DATE_TRUNC('hour', "evt_block_time") AS "hour",
SUM(
CASE
WHEN "to" = 0x66017d22b0f8556afdd19fc67041899eb65a21bb THEN "value" /
1e18
WHEN "from" = 0x66017d22b0f8556afdd19fc67041899eb65a21bb THEN
-(value/1e18)
ELSE 0
END
) AS "stabilityPoolChange",
SUM(
CASE
WHEN "to" = 0xf20ef17b889b437c151eb5ba15a47bfc62bff469 THEN "value" /
1e18
WHEN "from" = 0xf20ef17b889b437c151eb5ba15a47bfc62bff469 THEN
-(value/1e18)
ELSE 0
END
) AS "uniswapV2Change",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
u3
)
AND "to" IN (
SELECT
*
FROM
u3
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
u3
)
AND NOT "to" IN (
SELECT
*
FROM
u3
) THEN -(value/1e18)
ELSE 0
END
) AS "uniswapV3Change",
SUM(
CASE
WHEN "to" = 0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca THEN "value" /
1e18
WHEN "from" = 0xed279fdd11ca84beef15af5d39bb4d4bee23f0ca THEN
-(value/1e18)
ELSE 0
END
) AS "curveChange",
SUM(
CASE
WHEN "to" = 0x497ce58f34605b9944e6b15ecafe6b001206fd25 THEN "value" /
1e18
WHEN "from" = 0x497ce58f34605b9944e6b15ecafe6b001206fd25 THEN
-(value/1e18)
ELSE 0
END
) AS "curveFraxChange",
SUM(
CASE
WHEN "to" = 0xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6 THEN "value" /
1e18
WHEN "from" = 0xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6 THEN
-(value/1e18)
ELSE 0
END
) AS "d4Change",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
ol
)
AND "to" IN (
SELECT
*
FROM
ol
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
ol
)
AND NOT "to" IN (
SELECT
*
FROM
ol
) THEN -(value/1e18)
ELSE 0
END
) AS "OlympusChange",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
ss
)
AND "to" IN (
SELECT
*
FROM
ss
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
ss
)
AND NOT "to" IN (
SELECT
*
FROM
ss
) THEN -(value/1e18)
ELSE 0
END
) AS "SushiChange",
SUM(
CASE
WHEN "to" = 0xba12222222228d8ba445958a75a0704d566bf2c8 THEN "value" /
1e18
WHEN "from" = 0xba12222222228d8ba445958a75a0704d566bf2c8 THEN
-(value/1e18)
ELSE 0
END
) AS "balancerChange",
SUM(
CASE
WHEN "to" = 0x99c9fc46f92e8a1c0dec1b1747d010903e884be1 THEN "value" /
1e18
WHEN "from" = 0x99c9fc46f92e8a1c0dec1b1747d010903e884be1 THEN
-(value/1e18)
ELSE 0
END
) AS "optimismChange",
SUM(
CASE
WHEN "to" = 0x7c22547779c8aa41bae79e03e8383a0befbcecf0 THEN "value" /
1e18
WHEN "from" = 0x7c22547779c8aa41bae79e03e8383a0befbcecf0 THEN
-(value/1e18)
ELSE 0
END
) AS "synthetixChange",
SUM(
CASE
WHEN "to" = 0x519b70055af55a007110b4ff99b0ea33071c720a THEN "value" /
1e18
WHEN "from" = 0x519b70055af55a007110b4ff99b0ea33071c720a THEN
-(value/1e18)
ELSE 0
END
) AS "dxDaoChange",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
rc
)
AND "to" IN (
SELECT
*
FROM
rc
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
rc
)
AND NOT "to" IN (
SELECT
*
FROM
rc
) THEN -(value/1e18)
ELSE 0
END
) AS "rariChange",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
fei
)
AND "to" IN (
SELECT
*
FROM
fei
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
fei
)
AND NOT "to" IN (
SELECT
*
FROM
fei
) THEN -(value/1e18)
ELSE 0
END
) AS "feiChange",
SUM(
CASE
WHEN "to" = 0xce1871f791548600cb59efbefFC9c38719142079 THEN "value" /
1e18
WHEN "from" = 0xce1871f791548600cb59efbefFC9c38719142079 THEN
-(value/1e18)
ELSE 0
END
) AS "aaveChange",
SUM(
CASE
WHEN NOT "from" IN (
SELECT
*
FROM
o
)
AND "to" IN (
SELECT
*
FROM
o
) THEN "value" / 1e18
WHEN "from" IN (
SELECT
*
FROM
o
)
AND NOT "to" IN (
SELECT
*
FROM
o
) THEN -(value/1e18)
ELSE 0
END
) AS "otherContractChange",
SUM(
CASE
WHEN "from" IN (
SELECT
*
FROM
a
)
AND NOT "to" IN (
SELECT
*
FROM
a
) THEN "value" / 1e18
WHEN NOT "from" IN (
SELECT
*
FROM
a
)
AND "to" IN (
SELECT
*
FROM
a
) THEN -(value/1e18)
ELSE 0
END
) AS "eoaChange"
FROM
liquity_ethereum.LUSD_evt_Transfer
GROUP BY
1
)
SELECT
"hour",
SUM("eoaChange") OVER (
ORDER BY
"hour"
) AS "eoa",
SUM("otherContractChange") OVER (
ORDER BY
"hour"
) AS "otherContract",
SUM("stabilityPoolChange") OVER (
ORDER BY
"hour"
) AS "stabilityPool",
SUM("uniswapV2Change") OVER (
ORDER BY
"hour"
) AS "uniswapV2",
SUM("uniswapV3Change") OVER (
ORDER BY
"hour"
) AS "uniswapV3",
SUM("curveChange") OVER (
ORDER BY
"hour"
) AS "curve",
SUM("curveFraxChange") OVER (
ORDER BY
"hour"
) AS "curveFrax",
SUM("d4Change") OVER (
ORDER BY
"hour"
) AS "d4",
SUM("OlympusChange") OVER (
ORDER BY
"hour"
) AS "ohm",
SUM("SushiChange") OVER (
ORDER BY
"hour"
) AS "sushi",
SUM("balancerChange") OVER (
ORDER BY
"hour"
) AS "balancer",
SUM("optimismChange") OVER (
ORDER BY
"hour"
) AS "optimism",
SUM("synthetixChange") OVER (
ORDER BY
"hour"
) AS "synthetix",
SUM("dxDaoChange") OVER (
ORDER BY
"hour"
) AS "dxDao",
SUM("rariChange") OVER (
ORDER BY
"hour"
) AS "rari",
SUM("feiChange") OVER (
ORDER BY
"hour"
) AS "fei",
SUM("aaveChange") OVER (
ORDER BY
"hour"
) AS "aave"
FROM
c
ORDER BY
1

/* v1 code
with p as (
values
('\x66017d22b0f8556afdd19fc67041899eb65a21bb'::bytea), -- Stability Pool
('\xf20ef17b889b437c151eb5ba15a47bfc62bff469'), -- Uniswap v2
LUSD/ETH
('\xed279fdd11ca84beef15af5d39bb4d4bee23f0ca'), -- Curve LUSD/3CRV-f
('\x497ce58f34605b9944e6b15ecafe6b001206fd25'), -- Curve
LUSD/FRAX/USDC
('\xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6'), -- Saddle D4
('\xba12222222228d8ba445958a75a0704d566bf2c8'), -- Balancer v2
('\x99c9fc46f92e8a1c0dec1b1747d010903e884be1'), -- Optimism Gateway
('\x7c22547779c8aa41bae79e03e8383a0befbcecf0'), -- Synthetix LUSD
Wrapper
('\x519b70055af55A007110B4Ff99b0eA33071c720a'), -- DXdao
('\xce1871f791548600cb59efbefFC9c38719142079') -- Aave (aLUSD)
),

-- Uniswap v3 pairs
u3 as (
select "pool"
from uniswap_v3."Factory_evt_PoolCreated"
where
"token0" = '\x5f98805A4E8be255a32880FDeC7F6728C6568bA0' or
"token1" = '\x5f98805A4E8be255a32880FDeC7F6728C6568bA0'
),

-- SushiSwap pairs
ss as (
select "pair"
from sushi."Factory_evt_PairCreated"
where
"token0" = '\x5f98805A4E8be255a32880FDeC7F6728C6568bA0' or
"token1" = '\x5f98805A4E8be255a32880FDeC7F6728C6568bA0'
),

-- Olympus DAO
ol as (
values
('\x31f8cc382c9898b273eff4e0b7626a6987c846e8'::bytea), -- Treasury
('\x245cc372c84b3645bf0ffe6538620b04a217988b'), -- DAO Funds
('\x9A315BdF513367C0377FB36545857d12e85813Ef') -- Treasury (XXX: v2
or what?)
),

-- Rari Capital
rc as (
select "cToken"
from rari_capital."Comptroller_evt_MarketListed"
-- XXX way to filter on underlying?
),

fei as (
values
('\xb0e731f036adfdec12da77c15aab0f90e8e45a0e'::bytea), -- PSM
('\x4378de2f2991fbed6616b34ac7727e7653713712') -- ?
),

o as (
select "address"
from ethereum."contracts"
where
"address" not in (select * from p) and
"address" not in (select * from u3) and
"address" not in (select * from ss) and
"address" not in (select * from ol) and
"address" not in (select * from fei) and
"address" not in (select * from rc)
),

a as (
select '\x0000000000000000000000000000000000000000'
union all
select * from p
union all
select * from u3
union all
select * from ss
union all
select * from ol
union all
select * from rc
union all
select * from fei
union all
select * from o
),

c as (
select
DATE_TRUNC('hour', "evt_block_time") as "hour",

SUM(case
when "to" = '\x66017d22b0f8556afdd19fc67041899eb65a21bb' then
"value" / 1e18
when "from" = '\x66017d22b0f8556afdd19fc67041899eb65a21bb' then
-"value" / 1e18
else
0
end) as "stabilityPoolChange",

SUM(case
when "to" = '\xf20ef17b889b437c151eb5ba15a47bfc62bff469' then
"value" / 1e18
when "from" = '\xf20ef17b889b437c151eb5ba15a47bfc62bff469' then
-"value" / 1e18
else
0
end) as "uniswapV2Change",

SUM(case
when "from" not in (select * from u3) and "to" in (select * from u3)
then
"value" / 1e18
when "from" in (select * from u3) and "to" not in (select * from u3)
then
-"value" / 1e18
else
0
end) as "uniswapV3Change",

SUM(case
when "to" = '\xed279fdd11ca84beef15af5d39bb4d4bee23f0ca' then
"value" / 1e18
when "from" = '\xed279fdd11ca84beef15af5d39bb4d4bee23f0ca' then
-"value" / 1e18
else
0
end) as "curveChange",

SUM(case
when "to" = '\x497ce58f34605b9944e6b15ecafe6b001206fd25' then
"value" / 1e18
when "from" = '\x497ce58f34605b9944e6b15ecafe6b001206fd25' then
-"value" / 1e18
else
0
end) as "curveFraxChange",

SUM(case
when "to" = '\xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6' then
"value" / 1e18
when "from" = '\xC69DDcd4DFeF25D8a793241834d4cc4b3668EAD6' then
-"value" / 1e18
else
0
end) as "d4Change",

SUM(case
when "from" not in (select * from ol) and "to" in (select * from ol)
then
"value" / 1e18
when "from" in (select * from ol) and "to" not in (select * from ol)
then
-"value" / 1e18
else
0
end) as "OlympusChange",

SUM(case
when "from" not in (select * from ss) and "to" in (select * from ss)
then
"value" / 1e18
when "from" in (select * from ss) and "to" not in (select * from ss)
then
-"value" / 1e18
else
0
end) as "SushiChange",

SUM(case
when "to" = '\xba12222222228d8ba445958a75a0704d566bf2c8' then
"value" / 1e18
when "from" = '\xba12222222228d8ba445958a75a0704d566bf2c8' then
-"value" / 1e18
else
0
end) as "balancerChange",

SUM(case
when "to" = '\x99c9fc46f92e8a1c0dec1b1747d010903e884be1' then
"value" / 1e18
when "from" = '\x99c9fc46f92e8a1c0dec1b1747d010903e884be1' then
-"value" / 1e18
else
0
end) as "optimismChange",

SUM(case
when "to" = '\x7c22547779c8aa41bae79e03e8383a0befbcecf0' then
"value" / 1e18
when "from" = '\x7c22547779c8aa41bae79e03e8383a0befbcecf0' then
-"value" / 1e18
else
0
end) as "synthetixChange",

SUM(case
when "to" = '\x519b70055af55a007110b4ff99b0ea33071c720a' then
"value" / 1e18
when "from" = '\x519b70055af55a007110b4ff99b0ea33071c720a' then
-"value" / 1e18
else
0
end) as "dxDaoChange",

SUM(case
when "from" not in (select * from rc) and "to" in (select * from rc)
then
"value" / 1e18
when "from" in (select * from rc) and "to" not in (select * from rc)
then
-"value" / 1e18
else
0
end) as "rariChange",

SUM(case
when "from" not in (select * from fei) and "to" in (select * from fei)
then
"value" / 1e18
when "from" in (select * from fei) and "to" not in (select * from fei)
then
-"value" / 1e18
else
0
end) as "feiChange",

SUM(case
when "to" = '\xce1871f791548600cb59efbefFC9c38719142079' then
"value" / 1e18
when "from" = '\xce1871f791548600cb59efbefFC9c38719142079' then
-"value" / 1e18
else
0
end) as "aaveChange",

SUM(case
when "from" not in (select * from o) and "to" in (select * from o) then
"value" / 1e18
when "from" in (select * from o) and "to" not in (select * from o) then
-"value" / 1e18
else
0
end) as "otherContractChange",

SUM(case
when "from" in (select * from a) and "to" not in (select * from a) then
"value" / 1e18
when "from" not in (select * from a) and "to" in (select * from a) then
-"value" / 1e18
else
0
end) as "eoaChange"

from liquity."LUSD_evt_Transfer"
group by 1
)
select
"hour",
SUM("eoaChange") over (order by "hour") as "eoa",
SUM("otherContractChange") over (order by "hour") as "otherContract",
SUM("stabilityPoolChange") over (order by "hour") as "stabilityPool",
SUM("uniswapV2Change") over (order by "hour") as "uniswapV2",
SUM("uniswapV3Change") over (order by "hour") as "uniswapV3",
SUM("curveChange") over (order by "hour") as "curve",
SUM("curveFraxChange") over (order by "hour") as "curveFrax",
SUM("d4Change") over (order by "hour") as "d4",
SUM("OlympusChange") over (order by "hour") as "ohm",
SUM("SushiChange") over (order by "hour") as "sushi",
SUM("balancerChange") over (order by "hour") as "balancer",
SUM("optimismChange") over (order by "hour") as "optimism",
SUM("synthetixChange") over (order by "hour") as "synthetix",
SUM("dxDaoChange") over (order by "hour") as "dxDao",
SUM("rariChange") over (order by "hour") as "rari",
SUM("feiChange") over (order by "hour") as "fei",
SUM("aaveChange") over (order by "hour") as "aave"

from c
order by 1
;
*/

You might also like