diff --git a/VERSION b/VERSION index 3b34d22..2fb69e1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v1.7.2 +v1.8.1 diff --git a/dune/abstractions/async_art_v2/async_art_v2_token_mapping.sql b/dune/abstractions/async_art_v2/async_art_v2_token_mapping.sql index fbeb35d..3d68549 100644 --- a/dune/abstractions/async_art_v2/async_art_v2_token_mapping.sql +++ b/dune/abstractions/async_art_v2/async_art_v2_token_mapping.sql @@ -1,82 +1,118 @@ ---creating a custom table to map layers to their respective - "master" artwork-- the v2 contract is a upgradeable proxy - - CREATE TABLE IF NOT EXISTS async_art_v2.token_mapping ( - token_id INT PRIMARY KEY, token_type VARCHAR (30), master_id INT, - custom_id VARCHAR (30), layer_count INT - - ); ---function to fill table CREATE OR REPLACE FUNCTION - async_art_v2.update_token_mapping () RETURNS - void LANGUAGE plpgsql AS $function$ DECLARE r record; -t_id int; -type_art VARCHAR (30); -result int; -custom_id VARCHAR (30); -c int; - ---selecting out of artworks and layers BEGIN FOR r IN select * -from (SELECT token_id, - CASE WHEN token_id IN (SELECT artwork_id FROM-- this is only artworksv2 ( - SELECT "masterTokenId" as artwork_id, - call_success FROM async_art_v2 - ."AsyncArtwork_v2_call_mintArtwork" WHERE call_success - = 'true' UNION-- this is only artworksv1 SELECT - "artworkTokenId" as artwork_id, - call_success FROM - async."AsyncArtwork_call_mintArtwork" WHERE call_success - = 'true') as artworks) - THEN 'artwork' WHEN NOT token_id IN (SELECT artwork_id FROM ( - SELECT "masterTokenId" as artwork_id, - call_success FROM async_art_v2 - ."AsyncArtwork_v2_call_mintArtwork" WHERE call_success - = 'true' UNION SELECT "artworkTokenId" as artwork_id, - call_success FROM - async."AsyncArtwork_call_mintArtwork" WHERE call_success - = 'true') as artworks) THEN 'layer' END as "token_type" From - - (--all minted tokens in v1 and v2, - this includes layers SELECT "tokenId" as token_id - - FROM async_art_v2."AsyncArtwork_v2_evt_Transfer" WHERE "from" - = '\x0000000000000000000000000000000000000000' - - UNION - - SELECT "tokenId" as token_id - - FROM async."AsyncArtwork_evt_Transfer" WHERE "from" - = '\x0000000000000000000000000000000000000000' - - order by 1 asc) as x) as y order by 1 asc - - -- loop to fill table and assign custom ID's LOOP +--creating a custom table to map layers to their respective "master" artwork +--the v2 contract is a upgradeable proxy + +CREATE TABLE IF NOT EXISTS async_art_v2.token_mapping ( + token_id INT PRIMARY KEY, + token_type VARCHAR(30), + master_id INT, + custom_id VARCHAR(30), + layer_count INT + +); +--function to fill table +CREATE OR REPLACE FUNCTION async_art_v2.update_token_mapping () RETURNS void +LANGUAGE plpgsql AS $function$ +DECLARE + r record; + t_id int; + type_art VARCHAR(30); + result int; + custom_id VARCHAR(30); + c int; + + +--selecting out of artworks and layers +BEGIN + FOR r IN select * from + (SELECT + token_id, + CASE + WHEN token_id IN (SELECT + artwork_id + FROM + --this is only artworksv2 + ( + SELECT + "masterTokenId" as artwork_id + , call_success + FROM async_art_v2."AsyncArtwork_v2_call_mintArtwork" + WHERE call_success ='true' + UNION + --this is only artworksv1 + SELECT + "artworkTokenId" as artwork_id + , call_success + FROM async."AsyncArtwork_call_mintArtwork" + WHERE call_success ='true' + ) as artworks + ) THEN 'artwork' + WHEN NOT token_id IN (SELECT + artwork_id + FROM + ( + SELECT + "masterTokenId" as artwork_id + , call_success + FROM async_art_v2."AsyncArtwork_v2_call_mintArtwork" + WHERE call_success ='true' + UNION + SELECT + "artworkTokenId" as artwork_id + , call_success + FROM async."AsyncArtwork_call_mintArtwork" + WHERE call_success ='true' + ) as artworks + ) THEN 'layer' + END as "token_type" +From + +( + --all minted tokens in v1 and v2, this includes layers +SELECT +"tokenId" as token_id + +FROM async_art_v2."AsyncArtwork_v2_evt_Transfer" +WHERE "from" = '\x0000000000000000000000000000000000000000' + +UNION + +SELECT +"tokenId" as token_id + +FROM async."AsyncArtwork_evt_Transfer" +WHERE "from" = '\x0000000000000000000000000000000000000000' + +order by 1 asc +) as x) as y order by 1 asc + + +--loop to fill table and assign custom ID's + LOOP t_id = r.token_id; -type_art = r.token_type; - -if r - .token_type = 'artwork' then result : = r.token_id; -c : = 0; -custom_id : = CONCAT (r.token_id, '_', c); -end if; - -if r - .token_type = 'layer' then c : = c + 1; -custom_id : = CONCAT (r.token_id, '_', c); -end if; - -insert into async_art_v2.token_mapping (token_ID, token_type, master_id, - custom_id, layer_count) - VALUES (t_id, type_art, result, custom_id, c) ON - CONFLICT (token_id) DO UPDATE SET token_id = EXCLUDED.token_id, - token_type = EXCLUDED.token_type; -END LOOP; + type_art = r.token_type; + + + if r.token_type = 'artwork' then + result := r.token_id; + c := 0; + custom_id:= CONCAT(r.token_id, '_', c); + end if; + + if r.token_type = 'layer' then + c := c + 1; + custom_id:= CONCAT(r.token_id, '_', c); + end if; + + insert into async_art_v2.token_mapping (token_ID, token_type, master_id, custom_id, layer_count) + VALUES + (t_id, type_art,result, custom_id, c) + ON CONFLICT (token_id) DO UPDATE SET token_id=EXCLUDED.token_id, token_type=EXCLUDED.token_type; + END LOOP; END; $function$; ---insert into automated update schedule INSERT INTO cron.job (schedule, - command) - VALUES ('59 * * * *', $$SELECT async_art_v2.update_token_mapping (); - $$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +--insert into automated update schedule +INSERT INTO cron.job (schedule, command) +VALUES ('59 * * * *', $$SELECT async_art_v2.update_token_mapping();$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/balancer/view_add_liquidity.sql b/dune/abstractions/balancer/view_add_liquidity.sql index b35cfc6..b0d9256 100644 --- a/dune/abstractions/balancer/view_add_liquidity.sql +++ b/dune/abstractions/balancer/view_add_liquidity.sql @@ -1,11 +1,14 @@ -CREATE OR REPLACE VIEW balancer.view_add_liquidity AS SELECT a.caller - AS liquidity_provider, - a.contract_address AS exchange_address, - a."tokenAmountIn" / 10 ^ t.decimals AS token_amount, - (a."tokenAmountIn" / 10 ^ t.decimals) * p.price AS usd_amount, - t.symbol AS token_symbol, a.evt_tx_hash AS tx_hash, - a.evt_block_time AS block_time FROM balancer - ."BPool_evt_LOG_JOIN" a LEFT JOIN erc20.tokens t ON t - .contract_address = a."tokenIn" LEFT JOIN prices.usd p ON - date_trunc ('minute', a.evt_block_time) - = p.minute AND p.contract_address = t.contract_address +CREATE OR REPLACE VIEW balancer.view_add_liquidity AS +SELECT + a.caller AS liquidity_provider, + a.contract_address AS exchange_address, + a."tokenAmountIn" / 10 ^ t.decimals AS token_amount, + (a."tokenAmountIn" / 10 ^ t.decimals) * p.price AS usd_amount, + t.symbol AS token_symbol, + a.evt_tx_hash AS tx_hash, + a.evt_block_time AS block_time +FROM + balancer."BPool_evt_LOG_JOIN" a + LEFT JOIN erc20.tokens t ON t.contract_address = a."tokenIn" + LEFT JOIN prices.usd p ON date_trunc('minute', a.evt_block_time) = p.minute AND p.contract_address = t.contract_address + \ No newline at end of file diff --git a/dune/abstractions/balancer/view_balances.sql b/dune/abstractions/balancer/view_balances.sql index 17e6dd0..9e1bcc0 100644 --- a/dune/abstractions/balancer/view_balances.sql +++ b/dune/abstractions/balancer/view_balances.sql @@ -2,61 +2,63 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS balancer.view_balances; -CREATE MATERIALIZED VIEW balancer.view_balances -AS (WITH pools - AS (SELECT pool as pools FROM balancer."BFactory_evt_LOG_NEW_POOL"), - - joins AS (SELECT p.pools as pool, - date_trunc ('day', e.evt_block_time) AS day, - e.contract_address AS token, - SUM (value) AS amount FROM - erc20."ERC20_evt_Transfer" e INNER JOIN pools p ON e."to" - = p.pools GROUP BY 1, - 2, 3), - - exits AS (SELECT p.pools as pool, - date_trunc ('day', e.evt_block_time) AS day, - e.contract_address AS token, - -SUM (value) AS amount FROM - erc20."ERC20_evt_Transfer" e INNER JOIN pools p ON e."from" - = p.pools GROUP BY 1, - 2, 3), +CREATE MATERIALIZED VIEW balancer.view_balances AS ( + WITH pools AS ( + SELECT pool as pools + FROM balancer."BFactory_evt_LOG_NEW_POOL" + ), + + joins AS ( + SELECT p.pools as pool, date_trunc('day', e.evt_block_time) AS day, e.contract_address AS token, SUM(value) AS amount + FROM erc20."ERC20_evt_Transfer" e + INNER JOIN pools p ON e."to" = p.pools + GROUP BY 1, 2, 3 + ), + exits AS ( + SELECT p.pools as pool, date_trunc('day', e.evt_block_time) AS day, e.contract_address AS token, -SUM(value) AS amount + FROM erc20."ERC20_evt_Transfer" e + INNER JOIN pools p ON e."from" = p.pools + GROUP BY 1, 2, 3 + ), + daily_delta_balance_by_token AS ( - SELECT pool, day, token, - SUM (COALESCE (amount, 0)) AS amount - FROM (SELECT *FROM joins j UNION ALL SELECT *FROM exits e) - foo GROUP BY 1, - 2, 3), - + SELECT pool, day, token, SUM(COALESCE(amount, 0)) AS amount FROM + (SELECT * + FROM joins j + UNION ALL + SELECT * + FROM exits e) foo + GROUP BY 1, 2, 3 + ), + cumulative_balance_by_token AS ( - SELECT pool, token, day, - LEAD (day, 1, now ()) OVER (PARTITION BY token, pool ORDER BY day) - AS day_of_next_change, - SUM (amount) - OVER (PARTITION BY pool, token ORDER BY day ROWS BETWEEN UNBOUNDED - PRECEDING AND CURRENT ROW) - AS cumulative_amount FROM daily_delta_balance_by_token), - - calendar AS (SELECT generate_series ('2020-01-01' ::timestamp, - CURRENT_DATE, '1 day' ::interval) - AS day), - + SELECT + pool, + token, + day, + LEAD(day, 1, now()) OVER (PARTITION BY token, pool ORDER BY day) AS day_of_next_change, + SUM(amount) OVER (PARTITION BY pool, token ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_amount + FROM daily_delta_balance_by_token + ), + + calendar AS ( + SELECT generate_series('2020-01-01'::timestamp, CURRENT_DATE, '1 day'::interval) AS day + ), + running_cumulative_balance_by_token AS ( - SELECT c.day, pool, token, - cumulative_amount FROM calendar c LEFT JOIN cumulative_balance_by_token - b ON b.day - <= c.day AND c.day < b.day_of_next_change) - - SELECT *FROM running_cumulative_balance_by_token - + SELECT c.day, pool, token, cumulative_amount + FROM calendar c + LEFT JOIN cumulative_balance_by_token b ON b.day <= c.day AND c.day < b.day_of_next_change + ) + + SELECT * FROM running_cumulative_balance_by_token + ); -CREATE UNIQUE INDEX IF NOT EXISTS balancer_view_balances_day_idx ON - balancer.view_balances (day, token, pool); +CREATE UNIQUE INDEX IF NOT EXISTS balancer_view_balances_day_idx ON balancer.view_balances (day, token, pool); -INSERT INTO cron.job (schedule, command) - VALUES ('*/12 * * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY - balancer.view_balances$$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job(schedule, command) +VALUES ('*/12 * * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY balancer.view_balances$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/balancer/view_lbps.sql b/dune/abstractions/balancer/view_lbps.sql index d6ae2a9..6111aee 100644 --- a/dune/abstractions/balancer/view_lbps.sql +++ b/dune/abstractions/balancer/view_lbps.sql @@ -1,63 +1,57 @@ -CREATE OR REPLACE VIEW balancer.view_lbps AS WITH lbp_pools -AS (SELECT name, - address AS pool FROM labels.labels WHERE "type" - = 'balancer_lbp' AND author IN ('balancerlabs', 'markusbkoch', 'mangool')), +CREATE OR REPLACE VIEW balancer.view_lbps AS +WITH lbp_pools AS ( + SELECT name, address AS pool + FROM labels.labels + WHERE "type" = 'balancer_lbp' + AND author IN ('balancerlabs', 'markusbkoch', 'mangool') + ), - token_denorms - AS (SELECT name, contract_address AS pool, - SUM (denorm) AS denorm_sum FROM - balancer."BPool_call_bind" b INNER JOIN lbp_pools p ON p.pool - = b.contract_address GROUP BY 1, - 2), - - token_weights - AS (SELECT name, pool, token, - denorm - / denorm_sum AS weight FROM balancer - ."BPool_call_bind" b INNER JOIN token_denorms d ON d.pool - = b.contract_address), - - tokens_sold - AS (SELECT name, pool, token, - weight AS initial_weight - FROM (SELECT name, pool, token, weight, - ROW_NUMBER () OVER (PARTITION BY pool ORDER BY weight DESC) - AS ranking FROM token_weights) w WHERE ranking - = 1), - - first_rebind - AS (SELECT u - .*FROM (SELECT t.*, call_block_number, call_block_time, - ROW_NUMBER () - OVER (PARTITION BY pool ORDER BY call_block_number) - AS ranking FROM balancer - ."BPool_call_rebind" r INNER JOIN tokens_sold t - ON t.pool - = r.contract_address AND t.token - = r.token WHERE call_success) u WHERE ranking - = 1), - - last_rebind AS (SELECT u - .*FROM (SELECT t.*, call_block_number, call_block_time, - ROW_NUMBER () OVER (PARTITION BY pool ORDER BY - call_block_number DESC) - AS ranking FROM balancer - ."BPool_call_rebind" r INNER JOIN - tokens_sold t ON t.pool - = r.contract_address AND t.token - = r.token WHERE call_success) u WHERE ranking - = 1), - - limit_blocks - AS (SELECT r.name, r.pool, r.token AS token_sold, e.symbol AS token_symbol, - r.initial_weight, f.call_block_number AS initial_block, - f.call_block_time AS initial_time, - COALESCE (u.call_block_number, r.call_block_number) AS final_block, - COALESCE (u.call_block_time, r.call_block_time) AS final_time FROM - last_rebind r INNER JOIN first_rebind f ON f.pool - = r.pool AND f.token - = r.token LEFT JOIN balancer."BPool_call_unbind" u ON r.pool - = u.contract_address AND r.token - = u.token LEFT JOIN erc20.tokens e ON e.contract_address = r.token) - - SELECT *FROM limit_blocks \ No newline at end of file + token_denorms AS ( + SELECT + name, + contract_address AS pool, + SUM(denorm) AS denorm_sum + FROM balancer."BPool_call_bind" b + INNER JOIN lbp_pools p ON p.pool = b.contract_address + GROUP BY 1, 2 + ), + + token_weights AS ( + SELECT name, pool, token, denorm / denorm_sum AS weight + FROM balancer."BPool_call_bind" b + INNER JOIN token_denorms d ON d.pool = b.contract_address + ), + + tokens_sold AS ( + SELECT name, pool, token, weight AS initial_weight + FROM (SELECT name, pool, token, weight, ROW_NUMBER() OVER (PARTITION BY pool ORDER BY weight DESC) AS ranking + FROM token_weights) w + WHERE ranking = 1 + ), + + first_rebind AS ( + SELECT u.* + FROM (SELECT t.*, call_block_number, call_block_time, ROW_NUMBER() OVER (PARTITION BY pool ORDER BY call_block_number) AS ranking + FROM balancer."BPool_call_rebind" r INNER JOIN tokens_sold t ON t.pool = r.contract_address AND t.token = r.token WHERE call_success) u + WHERE ranking = 1 + ), + + last_rebind AS ( + SELECT u.* + FROM (SELECT t.*, call_block_number, call_block_time, ROW_NUMBER() OVER (PARTITION BY pool ORDER BY call_block_number DESC) AS ranking + FROM balancer."BPool_call_rebind" r INNER JOIN tokens_sold t ON t.pool = r.contract_address AND t.token = r.token WHERE call_success) u + WHERE ranking = 1 + ), + + limit_blocks AS ( + SELECT r.name, r.pool, r.token AS token_sold, e.symbol AS token_symbol, r.initial_weight, + f.call_block_number AS initial_block, f.call_block_time AS initial_time, + COALESCE(u.call_block_number, r.call_block_number) AS final_block, + COALESCE(u.call_block_time, r.call_block_time) AS final_time + FROM last_rebind r + INNER JOIN first_rebind f ON f.pool = r.pool AND f.token = r.token + LEFT JOIN balancer."BPool_call_unbind" u ON r.pool = u.contract_address AND r.token = u.token + LEFT JOIN erc20.tokens e ON e.contract_address = r.token + ) + +SELECT * FROM limit_blocks \ No newline at end of file diff --git a/dune/abstractions/balancer/view_pools_liquidity.sql b/dune/abstractions/balancer/view_pools_liquidity.sql index f21e8ba..14cc1eb 100644 --- a/dune/abstractions/balancer/view_pools_liquidity.sql +++ b/dune/abstractions/balancer/view_pools_liquidity.sql @@ -2,61 +2,67 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS balancer.view_pools_liquidity; -CREATE MATERIALIZED VIEW balancer.view_pools_liquidity -AS (WITH prices AS (SELECT date_trunc ('day', minute) AS day, - contract_address AS token, - AVG (price) AS price FROM prices.usd GROUP BY 1, 2), - +CREATE MATERIALIZED VIEW balancer.view_pools_liquidity AS ( + WITH prices AS ( + SELECT date_trunc('day', minute) AS day, contract_address AS token, AVG(price) AS price + FROM prices.usd + GROUP BY 1, 2 + ), + dex_prices_1 AS ( - SELECT date_trunc ('day', hour) AS day, contract_address AS token, - (PERCENTILE_DISC (0.5) WITHIN GROUP (ORDER BY median_price))AS price, - SUM (sample_size) as sample_size FROM dex.view_token_prices GROUP BY 1, - 2 HAVING sum (sample_size) > 2), - - dex_prices AS (SELECT *, - LEAD (day, 1, now ()) OVER (PARTITION BY token ORDER BY day) - AS day_of_next_change FROM dex_prices_1), - + SELECT date_trunc('day', hour) AS day, + contract_address AS token, + (PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY median_price)) AS price, + SUM(sample_size) as sample_size + FROM dex.view_token_prices + GROUP BY 1, 2 + HAVING sum(sample_size) > 2 + ), + + dex_prices AS ( + SELECT *, LEAD(day, 1, now()) OVER (PARTITION BY token ORDER BY day) AS day_of_next_change + FROM dex_prices_1 + ), + cumulative_usd_balance_by_token AS ( - SELECT b.pool, b.day, b.token, - cumulative_amount / 10 ^ t.decimals * p1.price AS amount_usd_from_api, - cumulative_amount / 10 - ^ t.decimals *p2.price AS amount_usd_from_dex FROM - balancer.view_balances b LEFT JOIN erc20.tokens t ON - t.contract_address - = b.token LEFT JOIN prices p1 ON p1.day = b.day AND p1.token - = b.token LEFT JOIN dex_prices p2 ON p2.day <= b.day AND b.day - < p2.day_of_next_change AND p2.token - = b.token), - + SELECT b.pool, b.day, b.token, + cumulative_amount /10 ^ t.decimals * p1.price AS amount_usd_from_api, + cumulative_amount /10 ^ t.decimals * p2.price AS amount_usd_from_dex + FROM balancer.view_balances b + LEFT JOIN erc20.tokens t ON t.contract_address = b.token + LEFT JOIN prices p1 ON p1.day = b.day AND p1.token = b.token + LEFT JOIN dex_prices p2 ON p2.day <= b.day AND b.day < p2.day_of_next_change AND p2.token = b.token + ), + pool_liquidity_estimates AS ( - SELECT b.*, - b.amount_usd_from_api / w.normalized_weight AS liquidity_from_api, - b.amount_usd_from_dex - / w.normalized_weight AS liquidity_from_dex FROM - cumulative_usd_balance_by_token b INNER JOIN - balancer.view_pools_tokens_weights w ON b.pool - = w.pool_address AND b.token - = w.token_address AND (b.amount_usd_from_api - > 0 OR b.amount_usd_from_dex > 0) - AND w.normalized_weight - > 0), - + SELECT + b.*, + b.amount_usd_from_api / w.normalized_weight AS liquidity_from_api, + b.amount_usd_from_dex / w.normalized_weight AS liquidity_from_dex + FROM cumulative_usd_balance_by_token b + INNER JOIN balancer.view_pools_tokens_weights w + ON b.pool = w.pool_address + AND b.token = w.token_address + AND (b.amount_usd_from_api > 0 OR b.amount_usd_from_dex > 0) + AND w.normalized_weight > 0 + ), + estimated_pool_liquidity as ( - SELECT day, pool, - COALESCE (AVG (liquidity_from_api), AVG (liquidity_from_dex)) - AS liquidity FROM pool_liquidity_estimates GROUP BY 1, - 2) - - SELECT *FROM estimated_pool_liquidity + SELECT + day, + pool, + COALESCE(AVG(liquidity_from_api), AVG(liquidity_from_dex)) AS liquidity + FROM pool_liquidity_estimates + GROUP BY 1, 2 + ) + SELECT * FROM estimated_pool_liquidity + ); -CREATE UNIQUE INDEX IF NOT EXISTS balancer_view_pools_liquidity_day_idx ON - balancer.view_pools_liquidity (day, pool); +CREATE UNIQUE INDEX IF NOT EXISTS balancer_view_pools_liquidity_day_idx ON balancer.view_pools_liquidity (day, pool); -INSERT INTO cron.job (schedule, command) - VALUES ('*/12 * * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY - balancer.view_pools_liquidity$$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job(schedule, command) +VALUES ('*/12 * * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY balancer.view_pools_liquidity$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/balancer/view_pools_tokens_weights.sql b/dune/abstractions/balancer/view_pools_tokens_weights.sql index 7063504..e1a3d76 100644 --- a/dune/abstractions/balancer/view_pools_tokens_weights.sql +++ b/dune/abstractions/balancer/view_pools_tokens_weights.sql @@ -1,42 +1,54 @@ -CREATE OR REPLACE VIEW balancer.view_pools_tokens_weights AS with events -as (--binds select call_block_number as block_number, index, - call_trace_address, contract_address as pool, token, - denorm from balancer."BPool_call_bind" INNER JOIN ethereum.transactions ON - call_tx_hash - = hash where call_success +CREATE OR REPLACE VIEW balancer.view_pools_tokens_weights AS +with events as ( + -- binds + select call_block_number as block_number, index, call_trace_address, + contract_address as pool, token, denorm + from balancer."BPool_call_bind" + INNER JOIN ethereum.transactions ON call_tx_hash = hash + where call_success union all - -- rebinds select call_block_number as block_number, - index, call_trace_address, contract_address as pool, token, - denorm from balancer."BPool_call_rebind" INNER JOIN - ethereum.transactions ON call_tx_hash - = hash where call_success + -- rebinds + select call_block_number as block_number, index, call_trace_address, + contract_address as pool, token, denorm + from balancer."BPool_call_rebind" + INNER JOIN ethereum.transactions ON call_tx_hash = hash + where call_success union all - - -- unbinds select call_block_number as block_number, - index, call_trace_address, contract_address as pool, token, - 0 as denorm from balancer."BPool_call_unbind" INNER JOIN - ethereum.transactions ON call_tx_hash - = hash where call_success), - state_with_gaps - as (select events.block_number, events.pool, events.token, events.denorm, - LEAD (cast (events.block_number as text), '1', '99999999') - over (partition by events.pool, - events.token order by events.block_number, index, - call_trace_address) as next_block_number from events), - settings as (select pool, token, - denorm from state_with_gaps s where next_block_number - = '99999999' and denorm > 0), - sum_denorm - as (select pool, - sum (denorm) - as sum_denorm from state_with_gaps s where next_block_number - = '99999999' and denorm > 0 group by pool), - norm_weights - as (select settings.pool AS pool_address, token AS token_address, - denorm - / sum_denorm as normalized_weight from settings inner join - sum_denorm on settings.pool - = sum_denorm.pool) select *from norm_weights \ No newline at end of file + + -- unbinds + select call_block_number as block_number, index, call_trace_address, + contract_address as pool, token, 0 as denorm + from balancer."BPool_call_unbind" + INNER JOIN ethereum.transactions ON call_tx_hash = hash + where call_success +), +state_with_gaps as ( + select events.block_number, events.pool, events.token, events.denorm, + LEAD(cast(events.block_number as text), '1', '99999999') over ( + partition by events.pool, events.token + order by events.block_number, index, call_trace_address) as next_block_number + from events +), +settings as ( + select pool, + token, + denorm + from state_with_gaps s + where next_block_number = '99999999' + and denorm > 0 +), +sum_denorm as ( + select pool, sum(denorm) as sum_denorm + from state_with_gaps s + where next_block_number = '99999999' + and denorm > 0 + group by pool +), +norm_weights as ( + select settings.pool AS pool_address, token AS token_address, denorm/sum_denorm as normalized_weight + from settings inner join sum_denorm on settings.pool = sum_denorm.pool +) +select * from norm_weights \ No newline at end of file diff --git a/dune/abstractions/balancer/view_remove_liquidity.sql b/dune/abstractions/balancer/view_remove_liquidity.sql index 671a54b..dfc8027 100644 --- a/dune/abstractions/balancer/view_remove_liquidity.sql +++ b/dune/abstractions/balancer/view_remove_liquidity.sql @@ -1,11 +1,14 @@ -CREATE OR REPLACE VIEW balancer.view_remove_liquidity AS SELECT a.caller - AS liquidity_provider, - a.contract_address AS exchange_address, - a."tokenAmountOut" / 10 ^ t.decimals AS token_amount, - (a."tokenAmountOut" / 10 ^ t.decimals) * p.price AS usd_amount, - t.symbol AS token_symbol, a.evt_tx_hash AS tx_hash, - a.evt_block_time AS block_time FROM balancer - ."BPool_evt_LOG_EXIT" a LEFT JOIN erc20.tokens t ON t - .contract_address = a."tokenOut" LEFT JOIN prices.usd p ON - date_trunc ('minute', a.evt_block_time) - = p.minute AND p.contract_address = t.contract_address +CREATE OR REPLACE VIEW balancer.view_remove_liquidity AS +SELECT + a.caller AS liquidity_provider, + a.contract_address AS exchange_address, + a."tokenAmountOut" / 10 ^ t.decimals AS token_amount, + (a."tokenAmountOut" / 10 ^ t.decimals) * p.price AS usd_amount, + t.symbol AS token_symbol, + a.evt_tx_hash AS tx_hash, + a.evt_block_time AS block_time +FROM + balancer."BPool_evt_LOG_EXIT" a + LEFT JOIN erc20.tokens t ON t.contract_address = a."tokenOut" + LEFT JOIN prices.usd p ON date_trunc('minute', a.evt_block_time) = p.minute AND p.contract_address = t.contract_address + \ No newline at end of file diff --git a/dune/abstractions/balancer/view_swaps.sql b/dune/abstractions/balancer/view_swaps.sql index 2f328b8..f917fc6 100644 --- a/dune/abstractions/balancer/view_swaps.sql +++ b/dune/abstractions/balancer/view_swaps.sql @@ -1,23 +1,21 @@ CREATE OR REPLACE VIEW balancer.view_swaps AS SELECT - block_time, - token_a_symbol, - token_b_symbol, - token_a_amount, - token_b_amount, - trader_a, - trader_b, - token_a_amount_raw, - token_b_amount_raw, - usd_amount, - token_a_address, - token_b_address, - exchange_contract_address AS contract_address, - tx_hash, - tx_from, - trace_address, - evt_index -FROM - dex.trades -WHERE - project = 'Balancer'; + block_time, + token_a_symbol, + token_b_symbol, + token_a_amount, + token_b_amount, + trader_a, + trader_b, + token_a_amount_raw, + token_b_amount_raw, + usd_amount, + token_a_address, + token_b_address, + exchange_contract_address AS contract_address, + tx_hash, + tx_from, + trace_address, + evt_index +FROM dex.trades +WHERE project = 'Balancer' diff --git a/dune/abstractions/bancornetwork/view_add_convertible_token.sql b/dune/abstractions/bancornetwork/view_add_convertible_token.sql index 011bf60..1ab4bba 100644 --- a/dune/abstractions/bancornetwork/view_add_convertible_token.sql +++ b/dune/abstractions/bancornetwork/view_add_convertible_token.sql @@ -1,18 +1,27 @@ -CREATE OR REPLACE VIEW bancornetwork.view_add_convertible_token - AS WITH convertible_tokens - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_ConvertibleTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_ConvertibleTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_ConvertibleTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_ConvertibleTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_ConvertibleTokenAdded") SELECT - "_convertibleToken" AS convertible_token, - symbol, decimals, - "_smartToken" AS smart_token, s.contract_address, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM - convertible_tokens s LEFT JOIN erc20.tokens t ON s."_convertibleToken" - = t.contract_address; +CREATE OR REPLACE VIEW bancornetwork.view_add_convertible_token AS +WITH convertible_tokens AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_ConvertibleTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_ConvertibleTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_ConvertibleTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_ConvertibleTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_ConvertibleTokenAdded" +) +SELECT "_convertibleToken" AS convertible_token, + symbol, + decimals, + "_smartToken" AS smart_token, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM convertible_tokens s +LEFT JOIN erc20.tokens t ON s."_convertibleToken" = t.contract_address +; diff --git a/dune/abstractions/bancornetwork/view_add_liquidity_pool.sql b/dune/abstractions/bancornetwork/view_add_liquidity_pool.sql index 6c20d2b..f0e4c12 100644 --- a/dune/abstractions/bancornetwork/view_add_liquidity_pool.sql +++ b/dune/abstractions/bancornetwork/view_add_liquidity_pool.sql @@ -1,43 +1,51 @@ -CREATE OR REPLACE VIEW bancornetwork - .view_add_liquidity_pool AS WITH liquidity_pool_added - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_LiquidityPoolAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_LiquidityPoolAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_LiquidityPoolAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_LiquidityPoolAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_LiquidityPoolAdded") SELECT r - ."exchange_token", - r."exchange_token_symbol", r."exchange_token_decimals", r."base_token", - r."base_token_symbol", r."base_token_decimals", - "_liquidityPool" AS liquidity_pool, q.contract_address, - q.evt_tx_hash AS tx_hash, - q.evt_block_time AS block_time FROM liquidity_pool_added q LEFT - JOIN (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS - "exchange_token", - t2.symbol AS "exchange_token_symbol", - t2.decimals AS "exchange_token_decimals", - p.convertible_token AS "base_token", p.symbol AS "base_token_symbol", - p.decimals AS "base_token_decimals", - s.smart_token FROM bancornetwork - .view_add_convertible_token s INNER - JOIN (SELECT *FROM bancornetwork.view_add_convertible_token) - p ON s.smart_token - = p.smart_token AND s.convertible_token - != p.convertible_token AND ( - s.convertible_token NOT IN ( - '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', - '\x309627af60f0926daa6041b8279484312f2bf060') - OR (s.convertible_token - = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' AND - p.convertible_token - = '\x309627af60f0926daa6041b8279484312f2bf060')) - LEFT JOIN erc20.tokens t2 ON s.convertible_token - = t2.contract_address) r ON q."_liquidityPool" - = r.smart_token; +CREATE OR REPLACE VIEW bancornetwork.view_add_liquidity_pool AS +WITH liquidity_pool_added AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_LiquidityPoolAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_LiquidityPoolAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_LiquidityPoolAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_LiquidityPoolAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_LiquidityPoolAdded" +) +SELECT r."exchange_token", + r."exchange_token_symbol", + r."exchange_token_decimals", + r."base_token", + r."base_token_symbol", + r."base_token_decimals", + "_liquidityPool" AS liquidity_pool, + q.contract_address, + q.evt_tx_hash AS tx_hash, + q.evt_block_time AS block_time +FROM liquidity_pool_added q +LEFT JOIN + (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS "exchange_token", + t2.symbol AS "exchange_token_symbol", + t2.decimals AS "exchange_token_decimals", + p.convertible_token AS "base_token", + p.symbol AS "base_token_symbol", + p.decimals AS "base_token_decimals", + s.smart_token + FROM bancornetwork.view_add_convertible_token s + INNER JOIN + (SELECT * + FROM bancornetwork.view_add_convertible_token + ) p ON s.smart_token = p.smart_token + AND s.convertible_token != p.convertible_token + AND (s.convertible_token NOT IN ('\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', + '\x309627af60f0926daa6041b8279484312f2bf060') + OR (s.convertible_token = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' + AND p.convertible_token = '\x309627af60f0926daa6041b8279484312f2bf060')) + LEFT JOIN erc20.tokens t2 ON s.convertible_token = t2.contract_address) r ON q."_liquidityPool" = r.smart_token +; -- use BNT and USDB as base token for convenience -- add exception for the case USDB <> BNT diff --git a/dune/abstractions/bancornetwork/view_add_smart_token.sql b/dune/abstractions/bancornetwork/view_add_smart_token.sql index 9968d80..a9f0318 100644 --- a/dune/abstractions/bancornetwork/view_add_smart_token.sql +++ b/dune/abstractions/bancornetwork/view_add_smart_token.sql @@ -1,42 +1,51 @@ -CREATE OR REPLACE VIEW bancornetwork - .view_add_smart_token AS WITH smart_token_added - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_SmartTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_SmartTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_SmartTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_SmartTokenAdded" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_SmartTokenAdded") SELECT r - ."exchange_token", - r."exchange_token_symbol", r."exchange_token_decimals", r."base_token", - r."base_token_symbol", r."base_token_decimals", - "_smartToken" AS smart_token, q.contract_address, q.evt_tx_hash AS tx_hash, - q.evt_block_time AS block_time FROM smart_token_added q LEFT - JOIN (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS - "exchange_token", - t2.symbol AS "exchange_token_symbol", - t2.decimals AS "exchange_token_decimals", - p.convertible_token AS "base_token", p.symbol AS "base_token_symbol", - p.decimals AS "base_token_decimals", - s.smart_token FROM bancornetwork - .view_add_convertible_token s INNER - JOIN (SELECT *FROM bancornetwork.view_add_convertible_token) - p ON s.smart_token - = p.smart_token AND s.convertible_token - != p.convertible_token AND ( - s.convertible_token NOT IN ( - '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', - '\x309627af60f0926daa6041b8279484312f2bf060') - OR (s.convertible_token - = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' AND - p.convertible_token - = '\x309627af60f0926daa6041b8279484312f2bf060')) - LEFT JOIN erc20.tokens t2 ON s.convertible_token - = t2.contract_address) r ON q."_smartToken" - = r.smart_token; +CREATE OR REPLACE VIEW bancornetwork.view_add_smart_token AS +WITH smart_token_added AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_SmartTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_SmartTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_SmartTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_SmartTokenAdded" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_SmartTokenAdded" +) +SELECT r."exchange_token", + r."exchange_token_symbol", + r."exchange_token_decimals", + r."base_token", + r."base_token_symbol", + r."base_token_decimals", + "_smartToken" AS smart_token, + q.contract_address, + q.evt_tx_hash AS tx_hash, + q.evt_block_time AS block_time +FROM smart_token_added q +LEFT JOIN + (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS "exchange_token", + t2.symbol AS "exchange_token_symbol", + t2.decimals AS "exchange_token_decimals", + p.convertible_token AS "base_token", + p.symbol AS "base_token_symbol", + p.decimals AS "base_token_decimals", + s.smart_token + FROM bancornetwork.view_add_convertible_token s + INNER JOIN + (SELECT * + FROM bancornetwork.view_add_convertible_token + ) p ON s.smart_token = p.smart_token + AND s.convertible_token != p.convertible_token + AND (s.convertible_token NOT IN ('\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', + '\x309627af60f0926daa6041b8279484312f2bf060') + OR (s.convertible_token = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' + AND p.convertible_token = '\x309627af60f0926daa6041b8279484312f2bf060')) + LEFT JOIN erc20.tokens t2 ON s.convertible_token = t2.contract_address) r ON q."_smartToken" = r.smart_token +; -- use BNT and USDB as base token for convenience -- add exception for the case USDB <> BNT diff --git a/dune/abstractions/bancornetwork/view_convert.sql b/dune/abstractions/bancornetwork/view_convert.sql index bd05dfc..ee08304 100644 --- a/dune/abstractions/bancornetwork/view_convert.sql +++ b/dune/abstractions/bancornetwork/view_convert.sql @@ -1,19 +1,35 @@ -CREATE OR REPLACE VIEW bancornetwork.view_convert AS WITH conversions -AS (SELECT *FROM bancornetwork - ."BancorNetwork_v6_evt_Conversion" UNION ALL SELECT *FROM bancornetwork - ."BancorNetwork_v7_evt_Conversion" UNION ALL SELECT *FROM bancornetwork - ."BancorNetwork_v8_evt_Conversion" UNION ALL SELECT *FROM bancornetwork - ."BancorNetwork_v9_evt_Conversion" UNION ALL SELECT *FROM - bancornetwork."BancorNetwork_v10_evt_Conversion") SELECT - "_smartToken" AS smart_token_address, - "_fromToken" AS source_token_address, t1.symbol AS source_token_symbol, - "_toToken" AS target_token_address, t2.symbol AS target_token_symbol, - "_fromAmount" / 10 ^ t1.decimals AS source_token_amount, - "_toAmount" / 10 ^ t2.decimals AS target_token_amount, - "_fromAmount" AS source_token_amount_raw, - "_toAmount" AS target_token_amount_raw, - "_trader" AS trader, s.contract_address, evt_tx_hash AS tx_hash, evt_index, - evt_block_time AS block_time FROM - conversions s LEFT JOIN erc20.tokens t1 ON s."_fromToken" - = t1.contract_address LEFT JOIN erc20.tokens t2 ON s."_toToken" - = t2.contract_address; +CREATE OR REPLACE VIEW bancornetwork.view_convert AS +WITH conversions AS ( + SELECT * + FROM bancornetwork."BancorNetwork_v6_evt_Conversion" + UNION ALL + SELECT * + FROM bancornetwork."BancorNetwork_v7_evt_Conversion" + UNION ALL + SELECT * + FROM bancornetwork."BancorNetwork_v8_evt_Conversion" + UNION ALL + SELECT * + FROM bancornetwork."BancorNetwork_v9_evt_Conversion" + UNION ALL + SELECT * + FROM bancornetwork."BancorNetwork_v10_evt_Conversion" +) +SELECT "_smartToken" AS smart_token_address, + "_fromToken" AS source_token_address, + t1.symbol AS source_token_symbol, + "_toToken" AS target_token_address, + t2.symbol AS target_token_symbol, + "_fromAmount" / 10^t1.decimals AS source_token_amount, + "_toAmount" / 10^t2.decimals AS target_token_amount, + "_fromAmount" AS source_token_amount_raw, + "_toAmount" AS target_token_amount_raw, + "_trader" AS trader, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_index, + evt_block_time AS block_time +FROM conversions s +LEFT JOIN erc20.tokens t1 ON s."_fromToken" = t1.contract_address +LEFT JOIN erc20.tokens t2 ON s."_toToken" = t2.contract_address +; diff --git a/dune/abstractions/bancornetwork/view_remove_convertible_token.sql b/dune/abstractions/bancornetwork/view_remove_convertible_token.sql index cc5ca47..9316ed6 100644 --- a/dune/abstractions/bancornetwork/view_remove_convertible_token.sql +++ b/dune/abstractions/bancornetwork/view_remove_convertible_token.sql @@ -1,18 +1,27 @@ -CREATE OR REPLACE VIEW bancornetwork.view_remove_convertible_token - AS WITH convertible_tokens - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_ConvertibleTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_ConvertibleTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_ConvertibleTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_ConvertibleTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_ConvertibleTokenRemoved") SELECT - "_convertibleToken" AS convertible_token, - symbol, decimals, - "_smartToken" AS smart_token, s.contract_address, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM - convertible_tokens s LEFT JOIN erc20.tokens t ON s."_convertibleToken" - = t.contract_address; +CREATE OR REPLACE VIEW bancornetwork.view_remove_convertible_token AS +WITH convertible_tokens AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_ConvertibleTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_ConvertibleTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_ConvertibleTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_ConvertibleTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_ConvertibleTokenRemoved" +) +SELECT "_convertibleToken" AS convertible_token, + symbol, + decimals, + "_smartToken" AS smart_token, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM convertible_tokens s +LEFT JOIN erc20.tokens t ON s."_convertibleToken" = t.contract_address +; diff --git a/dune/abstractions/bancornetwork/view_remove_liquidity_pool.sql b/dune/abstractions/bancornetwork/view_remove_liquidity_pool.sql index 0ed5123..e688a98 100644 --- a/dune/abstractions/bancornetwork/view_remove_liquidity_pool.sql +++ b/dune/abstractions/bancornetwork/view_remove_liquidity_pool.sql @@ -1,43 +1,51 @@ -CREATE OR REPLACE VIEW bancornetwork - .view_remove_liquidity_pool AS WITH liquidity_pool_removed - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_LiquidityPoolRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_LiquidityPoolRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_LiquidityPoolRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_LiquidityPoolRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_LiquidityPoolRemoved") SELECT r - ."exchange_token", - r."exchange_token_symbol", r."exchange_token_decimals", r."base_token", - r."base_token_symbol", r."base_token_decimals", - "_liquidityPool" AS liquidity_pool, q.contract_address, - q.evt_tx_hash AS tx_hash, - q.evt_block_time AS block_time FROM liquidity_pool_removed q LEFT - JOIN (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS - "exchange_token", - t2.symbol AS "exchange_token_symbol", - t2.decimals AS "exchange_token_decimals", - p.convertible_token AS "base_token", p.symbol AS "base_token_symbol", - p.decimals AS "base_token_decimals", - s.smart_token FROM bancornetwork - .view_remove_convertible_token s INNER JOIN ( - SELECT *FROM bancornetwork.view_remove_convertible_token) - p ON s.smart_token - = p.smart_token AND s.convertible_token - != p.convertible_token AND ( - s.convertible_token NOT IN ( - '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', - '\x309627af60f0926daa6041b8279484312f2bf060') - OR (s.convertible_token - = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' AND - p.convertible_token - = '\x309627af60f0926daa6041b8279484312f2bf060')) - LEFT JOIN erc20.tokens t2 ON s.convertible_token - = t2.contract_address) r ON q."_liquidityPool" - = r.smart_token; +CREATE OR REPLACE VIEW bancornetwork.view_remove_liquidity_pool AS +WITH liquidity_pool_removed AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_LiquidityPoolRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_LiquidityPoolRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_LiquidityPoolRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_LiquidityPoolRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_LiquidityPoolRemoved" +) +SELECT r."exchange_token", + r."exchange_token_symbol", + r."exchange_token_decimals", + r."base_token", + r."base_token_symbol", + r."base_token_decimals", + "_liquidityPool" AS liquidity_pool, + q.contract_address, + q.evt_tx_hash AS tx_hash, + q.evt_block_time AS block_time +FROM liquidity_pool_removed q +LEFT JOIN + (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS "exchange_token", + t2.symbol AS "exchange_token_symbol", + t2.decimals AS "exchange_token_decimals", + p.convertible_token AS "base_token", + p.symbol AS "base_token_symbol", + p.decimals AS "base_token_decimals", + s.smart_token + FROM bancornetwork.view_remove_convertible_token s + INNER JOIN + (SELECT * + FROM bancornetwork.view_remove_convertible_token + ) p ON s.smart_token = p.smart_token + AND s.convertible_token != p.convertible_token + AND (s.convertible_token NOT IN ('\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', + '\x309627af60f0926daa6041b8279484312f2bf060') + OR (s.convertible_token = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' + AND p.convertible_token = '\x309627af60f0926daa6041b8279484312f2bf060')) + LEFT JOIN erc20.tokens t2 ON s.convertible_token = t2.contract_address) r ON q."_liquidityPool" = r.smart_token +; -- use BNT and USDB as base token for convenience -- add exception for the case USDB <> BNT diff --git a/dune/abstractions/bancornetwork/view_remove_smart_token.sql b/dune/abstractions/bancornetwork/view_remove_smart_token.sql index 24bb317..614aa98 100644 --- a/dune/abstractions/bancornetwork/view_remove_smart_token.sql +++ b/dune/abstractions/bancornetwork/view_remove_smart_token.sql @@ -1,42 +1,51 @@ -CREATE OR REPLACE VIEW bancornetwork - .view_add_smart_token AS WITH smart_token_removed - AS (SELECT *FROM bancornetwork - ."BancorConverterRegistry_v3_evt_SmartTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v4_evt_SmartTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v5_evt_SmartTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v6_evt_SmartTokenRemoved" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverterRegistry_v7_evt_SmartTokenRemoved") SELECT r - ."exchange_token", - r."exchange_token_symbol", r."exchange_token_decimals", r."base_token", - r."base_token_symbol", r."base_token_decimals", - "_smartToken" AS smart_token, q.contract_address, q.evt_tx_hash AS tx_hash, - q.evt_block_time AS block_time FROM smart_token_removed q LEFT - JOIN (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS - "exchange_token", - t2.symbol AS "exchange_token_symbol", - t2.decimals AS "exchange_token_decimals", - p.convertible_token AS "base_token", p.symbol AS "base_token_symbol", - p.decimals AS "base_token_decimals", - s.smart_token FROM bancornetwork - .view_remove_convertible_token s INNER JOIN ( - SELECT *FROM bancornetwork.view_remove_convertible_token) - p ON s.smart_token - = p.smart_token AND s.convertible_token - != p.convertible_token AND ( - s.convertible_token NOT IN ( - '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', - '\x309627af60f0926daa6041b8279484312f2bf060') - OR (s.convertible_token - = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' AND - p.convertible_token - = '\x309627af60f0926daa6041b8279484312f2bf060')) - LEFT JOIN erc20.tokens t2 ON s.convertible_token - = t2.contract_address) r ON q."_smartToken" - = r.smart_token; +CREATE OR REPLACE VIEW bancornetwork.view_add_smart_token AS +WITH smart_token_removed AS ( + SELECT * + FROM bancornetwork."BancorConverterRegistry_v3_evt_SmartTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v4_evt_SmartTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v5_evt_SmartTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v6_evt_SmartTokenRemoved" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverterRegistry_v7_evt_SmartTokenRemoved" +) +SELECT r."exchange_token", + r."exchange_token_symbol", + r."exchange_token_decimals", + r."base_token", + r."base_token_symbol", + r."base_token_decimals", + "_smartToken" AS smart_token, + q.contract_address, + q.evt_tx_hash AS tx_hash, + q.evt_block_time AS block_time +FROM smart_token_removed q +LEFT JOIN + (SELECT DISTINCT ON (s.smart_token) s.convertible_token AS "exchange_token", + t2.symbol AS "exchange_token_symbol", + t2.decimals AS "exchange_token_decimals", + p.convertible_token AS "base_token", + p.symbol AS "base_token_symbol", + p.decimals AS "base_token_decimals", + s.smart_token + FROM bancornetwork.view_remove_convertible_token s + INNER JOIN + (SELECT * + FROM bancornetwork.view_remove_convertible_token + ) p ON s.smart_token = p.smart_token + AND s.convertible_token != p.convertible_token + AND (s.convertible_token NOT IN ('\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c', + '\x309627af60f0926daa6041b8279484312f2bf060') + OR (s.convertible_token = '\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c' + AND p.convertible_token = '\x309627af60f0926daa6041b8279484312f2bf060')) + LEFT JOIN erc20.tokens t2 ON s.convertible_token = t2.contract_address) r ON q."_smartToken" = r.smart_token +; -- use BNT and USDB as base token for convenience -- add exception for the case USDB <> BNT diff --git a/dune/abstractions/bancornetwork/view_smart_tokens.sql b/dune/abstractions/bancornetwork/view_smart_tokens.sql index 86c854e..2b2ab5a 100644 --- a/dune/abstractions/bancornetwork/view_smart_tokens.sql +++ b/dune/abstractions/bancornetwork/view_smart_tokens.sql @@ -1,540 +1,271 @@ -CREATE OR REPLACE VIEW bancornetwork.view_smart_tokens (contract_address, - symbol, decimals) AS - VALUES ('\xd8ab826b6d69f5e4fa1325a5236491a309fbff4f' ::bytea, - '4XBBNT' ::text, 8 ::numeric), - ('\x275a1a2dad3075beb96af4f7fd93ade99bb0151f' ::bytea, 'ABXBNT' ::text, - 18 ::numeric), - ('\x075561230db23aa3b86abe8afe8bbc4ecddf1c5a' ::bytea, 'ACDBNT' ::text, - 18 ::numeric), - ('\xeab935f35693c3218b927436e63564018e92034f' ::bytea, 'AGRIBNT' ::text, - 18 ::numeric), - ('\x653f1ffc243d7b6f4ca65df9520a80d0113da3d6' ::bytea, 'AGSBNT' ::text, - 18 ::numeric), - ('\xe3bf775ec5f4f4dfcbb21194b22be1217b815b1d' ::bytea, 'AIDBNT' ::text, - 18 ::numeric), - ('\x73fa2b855be96ab3c73f375b8ec777226efa3845' ::bytea, 'AIONBNT' ::text, - 18 ::numeric), - ('\xa415cd56c694bd7402d14560d18bb19a28f77617' ::bytea, 'AIXBNT' ::text, - 18 ::numeric), - ('\x0f9be347378a37ced33a13ae061175af07cc9868' ::bytea, 'AMNBNT' ::text, - 18 ::numeric), - ('\x0e2145a23f7810431ba0f2e19676530b3f1fb0ec' ::bytea, 'AMPLBNT' ::text, - 18 ::numeric), - ('\x437f7d93540094da58f337644ba7d6e5ad823564' ::bytea, 'ANKBNT' ::text, - 18 ::numeric), - ('\x0c485bffd5df019f66927b2c32360159884d4409' ::bytea, 'ANTBNT' ::text, - 18 ::numeric), - ('\x1d75ebc72f4805e9c9918b36a8969b2e3847c9fb' ::bytea, 'ATSBNT' ::text, - 18 ::numeric), - ('\x164a1229f4826c9dd70ee3d9f4f3d7b68a172153' ::bytea, 'AUCBNT' ::text, - 18 ::numeric), - ('\x0aaca86e54fe70edd7c86cbf3cfb470caa49faef' ::bytea, 'AURELIO' ::text, - 18 ::numeric), - ('\x0b21617ed9b15fd901e0b36b8edf9d68adc11ad5' ::bytea, 'AUTOBNT' ::text, - 18 ::numeric), - ('\x131da075a2832549128e93acc2b54174045232cf' ::bytea, 'BATBNT' ::text, - 18 ::numeric), - ('\x7ffe011b93e06fa14ce5a6e00320937652664366' ::bytea, 'BATUSDB' ::text, - 18 ::numeric), - ('\xa9de5935ae3eae8a7f943c9329940eda160267f4' ::bytea, 'BAXBNT' ::text, - 18 ::numeric), - ('\x980b4118dab781829df80d7912d70b059a280dad' ::bytea, 'BBOBNT' ::text, - 18 ::numeric), - ('\xd3ad4c39a12b48164068fef8f86ef5836a9ef303' ::bytea, 'BCSBNT' ::text, - 18 ::numeric), - ('\x679f601f0deb53c2db0c8c26369fdcba5fd753cf' ::bytea, 'BETRBNT' ::text, - 18 ::numeric), - ('\x6f8beadf9ecd851be239b616149af3e69d49ce11' ::bytea, 'BFZBNT' ::text, - 18 ::numeric), - ('\x1bce0e684a1607fd86407909073eea2336042bf7' ::bytea, 'BMCBNT' ::text, - 18 ::numeric), - ('\xe6b31fb3f29fbde1b92794b0867a315ff605a324' ::bytea, 'BNBBNT' ::text, - 18 ::numeric), - ('\x607108c46bce4cf6f86698e9b46e3270a734fefe' ::bytea, 'BNT-USD' ::text, - 18 ::numeric), - ('\x849d49911cef804bdb1fec58150b8eabab119796' ::bytea, 'BOXXBNT' ::text, - 18 ::numeric), - ('\x534df0ec6d65cd6fe1b05d3b8c935c97eb844190' ::bytea, 'BTCDEFI' ::text, - 18 ::numeric), - ('\xe94c892f90abea59f3dd1d7d8c34ac9d7312f18a' ::bytea, 'BUSDUSDB' ::text, - 18 ::numeric), - ('\x1ef9e0ac29b3813528fbfdadf5118ab63e4be015' ::bytea, 'C20BNT' ::text, - 18 ::numeric), - ('\x854809b0c072d9c9c09e268cd7836d1b58101b62' ::bytea, 'CANBNT' ::text, - 18 ::numeric), - ('\xb3c55930368d71f643c3775869afc73f6c5237b2' ::bytea, 'CATBNT' ::text, - 18 ::numeric), - ('\xe35a57ac913144aef6a4b179634d343466de3cc3' ::bytea, 'CBIX7USDB' ::text, - 18 ::numeric), - ('\x2f2ad6954d99ea14fa145b9ab0fb6ba5ac32c0ee' ::bytea, 'CEEKBNT' ::text, - 18 ::numeric), - ('\x27b099cf19227ef7488d60a441d7ea2cc7fddb25' ::bytea, 'CEEKUSDB' ::text, - 18 ::numeric), - ('\x3bf2d14f9ca9f619da278c0646412345d4cbbf2d' ::bytea, 'CHANEBNT' ::text, - 18 ::numeric), - ('\x5a9790c2d029e4406f3d820d51774e4e3efac8cd' ::bytea, 'CHXBNT' ::text, - 18 ::numeric), - ('\x34902d61c3f8d8809a8a2481c36dc514beba5ce8' ::bytea, 'CHZBNT' ::text, - 18 ::numeric), - ('\xeb027349398de19d925defc15c4302fe92fc69f9' ::bytea, 'CLNBNT' ::text, - 18 ::numeric), - ('\x6c77f061a756723ef852d9dfc0f5bac9ab5e65e0' ::bytea, 'CMCTBNT' ::text, - 18 ::numeric), - ('\xb5b0e0642d35d7cab64cda6ecf87fd842cb5c58d' ::bytea, 'CMCTBNT' ::text, - 18 ::numeric), - ('\xb83546551c9d4f6d7873804a7352fa930404260d' ::bytea, 'COMMBNT' ::text, - 18 ::numeric), - ('\x19db077a54dea3fd4cbcd9d31d4db297562cbd94' ::bytea, 'COTBNT' ::text, - 18 ::numeric), - ('\x0f92330eaaba84cb54b068f4331cc40dd2a98236' ::bytea, 'CRTSBNT' ::text, - 18 ::numeric), - ('\xf0f9bbd5ebc79d7cad9d35564ef45adcd802611e' ::bytea, 'cUSDBNT' ::text, - 18 ::numeric), - ('\x737ac585809c0f64ee09d7b8050d195d14f14c55' ::bytea, 'CVTBNT' ::text, - 18 ::numeric), - ('\x742ad14970596f2f90ee131aecb041b1d725eca3' ::bytea, - 'DAI-PEG:USD' ::text, 18 ::numeric), - ('\x69cda2083731e2127ea7db5d0158f3eea3a9e9c9' ::bytea, - 'DAI/USDC/sUSD/BUSD' ::text, 18 ::numeric), - ('\xb27b05e9e4d8ff428b6e1a4b432c208c10f8301d' ::bytea, 'DAI70' ::text, - 18 ::numeric), - ('\xe5df055773bf9710053923599504831c7dbdd697' ::bytea, 'DAIBNT' ::text, - 18 ::numeric), - ('\xee01b3ab5f6728adc137be101d99c678938e6e72' ::bytea, 'DAIBNT' ::text, - 18 ::numeric), - ('\x109c1ad638daf89dbb95badfca505f1adb09af2d' ::bytea, 'DAIUSDB' ::text, - 18 ::numeric), - ('\xcb913ed43e43cc7cec1d77243ba381615101e7e4' ::bytea, 'DAIUSDB' ::text, - 18 ::numeric), - ('\xa06cfab8b584c91df1abee6e8503486ab4e23f40' ::bytea, 'DANBNT' ::text, - 18 ::numeric), - ('\xdd8a17169aa94e548602096eb9c9d44216ce8a37' ::bytea, 'DATABNT' ::text, - 18 ::numeric), - ('\xfe9e6111e45a6066374bf33e831e80b1949a9faa' ::bytea, 'DBETBNT' ::text, - 18 ::numeric), - ('\x7ef1fedb73bd089ec1010baba26ca162dfa08144' ::bytea, 'DGDBNT' ::text, - 18 ::numeric), - ('\xcaea8f7774f8bf7093e1133fdb3791edb7d6d822' ::bytea, 'DGXBNT' ::text, - 18 ::numeric), - ('\xa7774f9386e1653645e1a08fb7aae525b4dedb24' ::bytea, 'DRGNBNT' ::text, - 18 ::numeric), - ('\x904c7051d12ace7d0107ada8702c0c759cad1672' ::bytea, 'DRTBNT' ::text, - 18 ::numeric), - ('\x1f593cdc35d7f0b0495da16b631d28de5ae25a07' ::bytea, 'DTRCBNT' ::text, - 18 ::numeric), - ('\x7484867773bc6f3110f710577d36a3605dba59df' ::bytea, 'DZARUSDB' ::text, - 18 ::numeric), - ('\xf95dd0fc6df64b2f149afa9219579e0f850bcd4d' ::bytea, 'EDGBNT' ::text, - 18 ::numeric), - ('\xf34484286be88613ad8399fe40f93506125be139' ::bytea, 'EFOODBNT' ::text, - 18 ::numeric), - ('\xfb834a1515cbc7f8b04d7ab4bd27d6922bee1a93' ::bytea, 'EGXBNT' ::text, - 18 ::numeric), - ('\xe8d2fe2288feae00d2755088fc52480ae92eda1a' ::bytea, 'EGXUSDB' ::text, - 18 ::numeric), - ('\x334c36be5b1eaf0c4b61ddea202c9f6dc2640fe5' ::bytea, 'ELETBNT' ::text, - 18 ::numeric), - ('\x0f2318565f1996cb1ed2f88e172135791bc1fcbf' ::bytea, 'ELFBNT' ::text, - 18 ::numeric), - ('\x9ad9ba0bb0001e9571073b595562af9645273ab1' ::bytea, 'ELIBNT' ::text, - 18 ::numeric), - ('\x2e8d4ef4cce1a5235311307b45ebecf31ee7ca88' ::bytea, 'EMCOBNT' ::text, - 18 ::numeric), - ('\x9fd952f675f14157b988590516c67045faf20743' ::bytea, 'EMCOBNT' ::text, - 18 ::numeric), - ('\x37be876ef051eb8eddd0745107c5222d8ca8ec60' ::bytea, 'EMIT1USDB' ::text, - 18 ::numeric), - ('\x2a3a6596b35735efac3577dc36bf750bfe5888e8' ::bytea, - 'EMIT1USDB2FCO' ::text, 18 ::numeric), - ('\xf3ad2cbc4276eb4b0fb627af0059cfce094e20a1' ::bytea, 'ENJBNT' ::text, - 18 ::numeric), - ('\x42529f410f0a72599fff2c67dd2a63cffbcc3f91' ::bytea, 'ENJUSDB' ::text, - 18 ::numeric), - ('\x507b06c23d7cb313194dbf6a6d80297137fb5e01' ::bytea, 'EOSBNT' ::text, - 18 ::numeric), - ('\xd16a3a892695ec9a47effdd5247980a8d2be3ff2' ::bytea, 'ESTBNT' ::text, - 18 ::numeric), - ('\xa2020e324c365d05e87cf25552e6e6734260b089' ::bytea, 'ESZBNT' ::text, - 18 ::numeric), - ('\x8bb1b8efa38093d1fa9d87588004c3499df434b2' ::bytea, 'ETH-USD' ::text, - 18 ::numeric), - ('\xb1cd6e4153b2a390cf00a6556b0fc1458c4a5533' ::bytea, 'ETHBNT' ::text, - 18 ::numeric), - ('\x482c31355f4f7966ffcd38ec5c9635acae5f4d4f' ::bytea, 'ETHUSDB' ::text, - 18 ::numeric), - ('\x7b5b4078b287c23ef5771c3b0650d52f4fd1b11a' ::bytea, 'ETHUSDB' ::text, - 18 ::numeric), - ('\xfc0e04eae452c163883aaad4ac1ae091cc87fef3' ::bytea, 'EURSBNT' ::text, - 18 ::numeric), - ('\xbb8436eaf49888641df27e4e1dffbd4851788209' ::bytea, 'EVOBNT' ::text, - 18 ::numeric), - ('\x5e6f3bc1186132565946fea123181529e7aeafd8' ::bytea, 'eXAU' ::text, - 18 ::numeric), - ('\xee4dc4c5ca843b83035d8e5159ac1bd1b4ebdff5' ::bytea, 'FCO' ::text, - 18 ::numeric), - ('\x94a2aaa374a8f2d52dad24330c8a0ec2934700ae' ::bytea, 'FCOUSDB' ::text, - 18 ::numeric), - ('\x80c222e38fb57f0710af21128535096d90503285' ::bytea, 'FKXBNT' ::text, - 18 ::numeric), - ('\x2d5add875442023ec83718bb03d866c9f4c6e8ce' ::bytea, 'FLIXXBNT' ::text, - 18 ::numeric), - ('\x44aa95fa2e84d3acdacdeffe16d9b5ed0498cc8b' ::bytea, 'FREELINK' ::text, - 18 ::numeric), - ('\xb2b788530b383be0933b0d3275cead29b332522e' ::bytea, 'FRVBNT' ::text, - 18 ::numeric), - ('\x3a946bb329f78ccbc75d836136de3a472bdf5499' ::bytea, 'FTHBNT' ::text, - 18 ::numeric), - ('\x4d849dad08a4061be102dbca2ce2718a9a0b635a' ::bytea, 'FTXBNT' ::text, - 18 ::numeric), - ('\xb93cc8642f5e8644423aa7305da96fff75708228' ::bytea, 'FXCBNT' ::text, - 18 ::numeric), - ('\x5972ced550248b17c9f674639d33e5446b6ad95a' ::bytea, 'GESBNT' ::text, - 18 ::numeric), - ('\xd7eb9db184da9f099b84e2f86b1da1fe6b305b3d' ::bytea, 'GNOBNT' ::text, - 18 ::numeric), - ('\xb4961fa7358efa9b3a9f8e03c82c596b429cf453' ::bytea, 'GOLDBNT' ::text, - 18 ::numeric), - ('\xddde5dba82b92daf339fbb4cf1ec4d1cec503075' ::bytea, 'GRIDBNT' ::text, - 18 ::numeric), - ('\x912d734c351425ca35f22ab7e16524147628e61c' ::bytea, 'GRIGBNT' ::text, - 18 ::numeric), - ('\x1f6e51ce0533a075fdd602fbd6159763acab579b' ::bytea, 'GRIGUSDB' ::text, - 18 ::numeric), - ('\xc4938292ea2d3085fffc11c46b87ca068a83be01' ::bytea, 'GTOBNT' ::text, - 18 ::numeric), - ('\x654ee2eaf2082c5483f2212ba7b6701f334a159f' ::bytea, 'HEDGBNT' ::text, - 18 ::numeric), - ('\x91ee9a99e4c93a7e50c8f7c359885fdf340e9515' ::bytea, 'HEDGBNT' ::text, - 18 ::numeric), - ('\x07757c58b5c0e2eaf498863dfdd05179940d6c44' ::bytea, 'HEROBNT' ::text, - 18 ::numeric), - ('\x4cef7499d9eb6d46ee67bc11b6cdc75119fa6588' ::bytea, 'HEROBNT' ::text, - 18 ::numeric), - ('\x0ac0e122d09cc4da4a96cc2731d2b7cc1f8b025a' ::bytea, 'HOTBNT' ::text, - 18 ::numeric), - ('\x1344381f0e93a2a1ab0bfd2fe209a9bd01343933' ::bytea, 'HOTELBNT' ::text, - 18 ::numeric), - ('\xb1a5b7e9a268742b9b5d2455ffcf43babc6929ba' ::bytea, 'IGA' ::text, - 18 ::numeric), - ('\x32423158e8fbd2839e085626f8a98d86b2766de8' ::bytea, 'INDBNT' ::text, - 18 ::numeric), - ('\xc803b2b2c3ba24c0c934aeb3ba508a4dd6853f1b' ::bytea, 'INSTAR' ::text, - 18 ::numeric), - ('\x9da52b3b37bdbe8b851d882dc55bd823b4b66bf4' ::bytea, 'INVBNT' ::text, - 18 ::numeric), - ('\xd32c26b14030c724c0118576308ea2fb3300d10f' ::bytea, 'IQTBNT' ::text, - 18 ::numeric), - ('\x8e00bacd7d8265d8f3f9d5b4fbd7f6b0b0c46f36' ::bytea, 'J8TBNT' ::text, - 18 ::numeric), - ('\x4827e558e642861cd7a1c8f011b2b4661f8d51fa' ::bytea, 'JRTUSDB' ::text, - 18 ::numeric), - ('\xa7e21e7584fc6fdf6fa978a5d4981352b0260954' ::bytea, 'KEYBNT' ::text, - 18 ::numeric), - ('\x26b5748f9253363f95e37767e9ed7986877a4b1b' ::bytea, 'KINBNT' ::text, - 18 ::numeric), - ('\xb9106265fc581edc4f46b92d221de3b4d7db13d3' ::bytea, 'KINDBNT' ::text, - 8 ::numeric), - ('\x248afff1aa83cf860198ddee14b5b3e8edb46d47' ::bytea, 'KNCBNT' ::text, - 18 ::numeric), - ('\xd69ae1d715d7451646107d43777139b0a42d7c63' ::bytea, 'KNCUSDB' ::text, - 18 ::numeric), - ('\xb79c3a1a2d50cc99459f3a21d709bcec86656e97' ::bytea, 'LDCBNT' ::text, - 18 ::numeric), - ('\x53e0e9aef6fa78518f90467d9345c3c4174f4071' ::bytea, 'LINKBNT' ::text, - 18 ::numeric), - ('\x6e4db478e55745a8711ecff193c9d95e970eb001' ::bytea, 'LINKUSDB' ::text, - 18 ::numeric), - ('\x38838b895cbf02048455fb7f649d97c564fc18a8' ::bytea, 'LOCBNT' ::text, - 18 ::numeric), - ('\x6feb9be6c40a12276cfa6dafbd119ea62532daab' ::bytea, 'LOCIBNT' ::text, - 18 ::numeric), - ('\x04013be0e4d671c5d160bc78daacc3cb8b163dba' ::bytea, 'LOOMBNT' ::text, - 18 ::numeric), - ('\xc32bf4a12542e897badbff2b61e56c82eae73d69' ::bytea, 'LOOMUSDB' ::text, - 18 ::numeric), - ('\xe355dcf475ff7569b8b74d5165a532aba87c25bf' ::bytea, 'LRCASTBNT' ::text, - 18 ::numeric), - ('\x014186b1a2d675fc1e303a3d62b574c3270a38e0' ::bytea, 'MADBNT' ::text, - 18 ::numeric), - ('\x79d83b390cf0edf86b9efbe47b556cc6e20926ac' ::bytea, 'MANABNT' ::text, - 18 ::numeric), - ('\xbab15d72731ea7031b10324806e7aad8448896d5' ::bytea, 'MDTBNT' ::text, - 18 ::numeric), - ('\x7651021390129c9c2672f47292c31b33f63ee5cc' ::bytea, 'MDZAUSDB' ::text, - 18 ::numeric), - ('\x7f8c53072d9b809a108b1a9d677bcc3b7b3f844e' ::bytea, 'METUSDB' ::text, - 18 ::numeric), - ('\xb3b2861a093b7fb19352bd62cd8efc314e0641a7' ::bytea, 'MFGBNT' ::text, - 18 ::numeric), - ('\x4319f9130848544afb97e92cb3ea9fdb4b0a0b2a' ::bytea, 'MFTBNT' ::text, - 18 ::numeric), - ('\x0ba204702f102ad3b0156164754e8af18c24c49c' ::bytea, 'MGTBNT' ::text, - 18 ::numeric), - ('\x6f60d44a0d6fb95e037a099f8642f949c959a363' ::bytea, 'MGTBNT' ::text, - 18 ::numeric), - ('\xf553e6ea4ce2f7deecbe7837e27931850ec15fab' ::bytea, 'MKRBNT' ::text, - 18 ::numeric), - ('\x29df79cb535f1fe82ca65d52cb8b5ee82d7e98a6' ::bytea, 'MKRUSDB' ::text, - 18 ::numeric), - ('\x0d6777bfc95b284ea9246c889e99903641129d72' ::bytea, 'MLNUSDB' ::text, - 18 ::numeric), - ('\x8da321ab610cd24fb2bcce191f423dae7c327ca9' ::bytea, 'MNTPBNT' ::text, - 18 ::numeric), - ('\xb2ea67533290fad84e3fe2e1fb68d21ca062d7fc' ::bytea, 'MORPHBNT' ::text, - 18 ::numeric), - ('\x25bf8913d6296a69c7b43bc781614992cb218935' ::bytea, 'MRGBNT' ::text, - 18 ::numeric), - ('\x4b51acc819591c885dba0f06d98a07b432e6d6b4' ::bytea, 'MRPHBNT' ::text, - 18 ::numeric), - ('\x60be88dd72f03c91fb22eef7af24c2e99db58530' ::bytea, 'MTLBNT' ::text, - 18 ::numeric), - ('\xf22fb05ac032fcaf3273f50af8db2753888bdd48' ::bytea, 'MYBBNT' ::text, - 18 ::numeric), - ('\x7081bca18fa05e8c9aa25320e3b7493d92b4e73c' ::bytea, 'NEXOBNT' ::text, - 18 ::numeric), - ('\x515d562496c43487eb2ddce1a2a7721148d44e36' ::bytea, 'NEXOUSDB' ::text, - 18 ::numeric), - ('\x9cbb076c3dc14f025be30b4cc34c33107d602a44' ::bytea, 'NMRBNT' ::text, - 18 ::numeric), - ('\xefec901ff0a33d0ef4f8068cdd8b28fdc40aa556' ::bytea, 'NMRUSDB' ::text, - 18 ::numeric), - ('\x5a4deb5704c1891df3575d3eecf9471da7f61fa4' ::bytea, 'NPXSBNT' ::text, - 18 ::numeric), - ('\x99ebd396ce7aa095412a4cd1a0c959d6fd67b340' ::bytea, 'OMGBNT' ::text, - 18 ::numeric), - ('\xaebfea5ce20af9fa2c65fb62863b31a90b7e056b' ::bytea, 'OMGUSDB' ::text, - 18 ::numeric), - ('\xc083cd0e18e024d43258b59edb6f06aa16e55e3a' ::bytea, 'OMNISBNT' ::text, - 18 ::numeric), - ('\x9e686489dc8ba97aadc22d6c87135a3d29e5dae6' ::bytea, 'OMNISUSDB' ::text, - 18 ::numeric), - ('\x8104e7ce81fab39c42e34cd9d8b654135261fae8' ::bytea, 'ONGBNT' ::text, - 18 ::numeric), - ('\x2f4ef142cd9983b1f86df21bed3ce12e06856dcb' ::bytea, - 'PARETOWETHUSDCBNT' ::text, 18 ::numeric), - ('\x573c97e9fb924c22d41127481eedf4a177394988' ::bytea, 'PAXUSDB' ::text, - 18 ::numeric), - ('\xeef7551e59b34f431d71c7593249f61d5c52ce65' ::bytea, 'pBTCBNT' ::text, - 18 ::numeric), - ('\x6b09b01c19e4bd573eae4e235ee47cbd51df3b6e' ::bytea, 'pBTCUSDB' ::text, - 18 ::numeric), - ('\xa485bd50228440797abb4d4595161d7546811160' ::bytea, 'PEG:USD' ::text, - 18 ::numeric), - ('\xd758b77bcc792afd58857e1d5c610ae649fdee6b' ::bytea, 'PEG:USD' ::text, - 18 ::numeric), - ('\xe729024679c29c2660e05727ecafd3d8792b8111' ::bytea, 'PKGBNT' ::text, - 18 ::numeric), - ('\x2843f6c3b14e698e3d7562584959c61274f93328' ::bytea, 'PLRBNT' ::text, - 18 ::numeric), - ('\x564c07255afe5050d82c8816f78da13f2b17ac6d' ::bytea, 'POABNT' ::text, - 18 ::numeric), - ('\xa5f2a49aafa052e28a50a575cd9e7488fa598e78' ::bytea, 'POEBNT' ::text, - 18 ::numeric), - ('\x168d7bbf38e17941173a352f1352df91a7771df3' ::bytea, 'POWRBNT' ::text, - 18 ::numeric), - ('\xf132d2538076e373b0c186f1ddb86f3be8cfc8dc' ::bytea, 'POWRBNT' ::text, - 18 ::numeric), - ('\x8bb91b280a39a9e9d8505b9a5bc792ccb3b9779e' ::bytea, 'POWRUSDB' ::text, - 6 ::numeric), - ('\x9d64bbbe449c5ff69f9f1a9d33b9f56e6f567cb5' ::bytea, 'PPTBNT' ::text, - 18 ::numeric), - ('\x2788c2db0fbdbaee39fa010d325d55e7e4527e0d' ::bytea, 'PRTLBNT' ::text, - 18 ::numeric), - ('\x19683e94943e6b348d8afb98c128b9b549b400df' ::bytea, 'QDAOBNT' ::text, - 18 ::numeric), - ('\x610c79736c170e7cadda081a337b16ede82b6aec' ::bytea, 'RBBNT' ::text, - 18 ::numeric), - ('\x78acf38ec85a9e4b2b88961b9d4bffba04fdba59' ::bytea, 'RBLXBNT' ::text, - 18 ::numeric), - ('\xf7b9fa01098f22527db205ff9bb6fdf7c7d9f1c5' ::bytea, 'RCNBNT' ::text, - 18 ::numeric), - ('\x11223ed5d5846603c4efc7c451fd8eb596d592cf' ::bytea, 'RDNBNT' ::text, - 18 ::numeric), - ('\xe9adced9da076d9dada35f5b99970fdd58b1440d' ::bytea, 'REALBNT' ::text, - 18 ::numeric), - ('\xb67fa7330154878cf1fd8f4b20bf1c19f68a3926' ::bytea, 'REFBNT' ::text, - 18 ::numeric), - ('\xab5ae72d95d3a02796c87f8079b1e180507df54f' ::bytea, 'REMBNT' ::text, - 18 ::numeric), - ('\xa807e7faa1c2c955bd8751e2fd1cbfa289e060c6' ::bytea, 'RENUSDB' ::text, - 18 ::numeric), - ('\xab0c9850baacf24efa368b57c2822ce73b60794c' ::bytea, 'REPUSDB' ::text, - 18 ::numeric), - ('\x28291d74bca9de7cb6948a8e699651ed93832c50' ::bytea, 'REPUXBNT' ::text, - 18 ::numeric), - ('\xccb5e3ba5356d57001976092795626ac3b87ad4e' ::bytea, 'REQBNT' ::text, - 18 ::numeric), - ('\x9003411ac4073c2d9f37af71d00e373b72cbe9e2' ::bytea, 'RLCBNT' ::text, - 18 ::numeric), - ('\x6534d2a69c2c7774df42a55a1678bd008984b324' ::bytea, 'RLCUSDB' ::text, - 18 ::numeric), - ('\xb9fe4bd869a132137b668054ea48c897c0654ee4' ::bytea, 'RPLBNT' ::text, - 18 ::numeric), - ('\x43d3a0712ed544b26d85c9eaf841008369bab5d1' ::bytea, 'RSTBNT' ::text, - 18 ::numeric), - ('\x5039f60594ffa3f1a5acbe85e1ebe12dc8da7c5c' ::bytea, 'RVTBNT' ::text, - 18 ::numeric), - ('\xd6a6c879ad8c01d0c8d5bf1c85829814b954dbbf' ::bytea, 'SANBNT' ::text, - 18 ::numeric), - ('\xfceb45cf070b277fede520c5539ae204bc1d493e' ::bytea, 'SCLBNT' ::text, - 18 ::numeric), - ('\x47244bc49d90f25473ebf8ad0a14ea6d4232a4c7' ::bytea, 'SENSEBNT' ::text, - 18 ::numeric), - ('\x6e0e0b9ab5f8e5f5f2de4d34ffe46668ffb37476' ::bytea, 'SHPBNT' ::text, - 18 ::numeric), - ('\x09953e3e5c6be303d8d83ccb672d241abc9bee29' ::bytea, 'SIGBNT' ::text, - 18 ::numeric), - ('\xa3b3c5a8b22c044d5f2d372f628245e2106d310d' ::bytea, 'SNTBNT' ::text, - 18 ::numeric), - ('\x91afdd8ef36def4fa2b9d7a05420f9d0e4f775d1' ::bytea, 'SNX-DZAR' ::text, - 18 ::numeric), - ('\x28271853e950be371b050f3f93aa0146225bf374' ::bytea, 'SNXUSDB' ::text, - 18 ::numeric), - ('\x415351dbb151be20a6ee062297eb0405bc353c31' ::bytea, 'SNXUSDB' ::text, - 18 ::numeric), - ('\xdf4971e3f52f5828c72a0512d560f54bfb2b2692' ::bytea, 'SNXUSDB' ::text, - 18 ::numeric), - ('\xb2f40825d32b658d39e4f73bb34d33ba628e8b76' ::bytea, 'SPDBNT' ::text, - 18 ::numeric), - ('\xd2deb679ed81238caef8e0c32257092cecc8888b' ::bytea, 'SRNBNT' ::text, - 18 ::numeric), - ('\x791991b1b9accda8cb7e957b8b71a42cca570652' ::bytea, 'SRNBTC' ::text, - 18 ::numeric), - ('\x2eb21321ecbe7b61167ce1b4e1640e242c9a6e7f' ::bytea, 'SRNCNT' ::text, - 18 ::numeric), - ('\x258d1210e9e242fdc0ecfa3b039a51a945cd0d0a' ::bytea, 'STACBNT' ::text, - 18 ::numeric), - ('\xcad4da66e00fdecabec137a24e12af8edf303a1d' ::bytea, 'STORMBNT' ::text, - 18 ::numeric), - ('\x368b3d50e51e8bf62e6c73fc389e4102b9aeb8e2' ::bytea, 'sUSD-DZAR' ::text, - 18 ::numeric), - ('\xb2d679f6d676f173faf3670a074b2c3a6d7ebe28' ::bytea, 'SUSDDAI' ::text, - 18 ::numeric), - ('\x3f66a22f108645898957c475b6c89c9c3e3b89db' ::bytea, 'sUSDUSDB' ::text, - 18 ::numeric), - ('\x778a35b4058bdfb5dfb6f85d08627edc73466e0b' ::bytea, 'sUSDUSDB' ::text, - 18 ::numeric), - ('\x78b8fa1a6ea77f44fbd6fdf452e803c5d5f2d23f' ::bytea, 'sUSDUSDB' ::text, - 18 ::numeric), - ('\x9b6678c766003ad69a15f795f433c0f62c10d4d5' ::bytea, 'sUSDUSDB' ::text, - 18 ::numeric), - ('\xb2e2de593fde3d6ab3f7fe93a1abfea3d4dd19ba' ::bytea, 'sUSDUSDB' ::text, - 18 ::numeric), - ('\x8dcf1ca9f4716ef8e86a29f224237540f3c7abad' ::bytea, 'SVDBNT' ::text, - 18 ::numeric), - ('\xf251523c1614ec3f449a93b7be547882ebc682ca' ::bytea, 'SWMBNT' ::text, - 18 ::numeric), - ('\x3364ccaede016f4c433b326d96be1a2eafa60bdd' ::bytea, 'SXLBNT' ::text, - 18 ::numeric), - ('\xdc610f8eece47e9f91209c77c8674c40d2d8e17f' ::bytea, 'SYB7BNT' ::text, - 18 ::numeric), - ('\xae201360282c885bf3f2616a3145d1344a1e43c0' ::bytea, 'TAASBNT' ::text, - 18 ::numeric), - ('\x536545f6b120c2fd099370334097b35bb2403bc3' ::bytea, 'TBCBNT' ::text, - 18 ::numeric), - ('\xb13819374575be7ced2b0896c645612164ebe772' ::bytea, 'TBCBNT' ::text, - 18 ::numeric), - ('\x323e4d8097b0a58ab8210ac6efcc4a89285cfc6b' ::bytea, 'TBCUSDB' ::text, - 18 ::numeric), - ('\xe844e4ef529cb1a507d47206beef65a921b07287' ::bytea, 'TBXBNT' ::text, - 18 ::numeric), - ('\x1b30042b537b30b1254ce84b27b332be523e974a' ::bytea, 'TIOBNT' ::text, - 18 ::numeric), - ('\x324c703dd2f03960600f3036955488a55885b527' ::bytea, 'TIXBNT' ::text, - 18 ::numeric), - ('\x497ec0d6ba2080f0ed7ecf7a79a2a907401b3239' ::bytea, 'TKNBNT' ::text, - 18 ::numeric), - ('\x5cf2f6387c4f551316e1e422acf1025a539825c3' ::bytea, 'TNSBNT' ::text, - 18 ::numeric), - ('\x064432e84f05094e3ed746a35ab9b7ab865fda5c' ::bytea, 'TRSTBNT' ::text, - 18 ::numeric), - ('\xe5180d7f5e99932c8cc99482a39318a781eddb4c' ::bytea, 'TRXBNT' ::text, - 18 ::numeric), - ('\x10ef8f03cd0f3d7bc14a04ba2c173414aa8c5e7e' ::bytea, 'TSTST' ::text, - 18 ::numeric), - ('\x06cd5923593a359111cdec66e74c62e831c8aeab' ::bytea, 'TUSDUSDB' ::text, - 18 ::numeric), - ('\x290bd3a8f785a8db30a0f6baf9b88863b831747f' ::bytea, 'UBTBNT' ::text, - 18 ::numeric), - ('\x668841f8262dbd3a6f5edb0cf47d7799e7822433' ::bytea, 'ULTBNT' ::text, - 18 ::numeric), - ('\x83ee8ec605c0ae3d7f1c9e360ab45a6c1c033ab9' ::bytea, 'UNIDUB' ::text, - 18 ::numeric), - ('\xd4c810fdca379831078267f3402845e5205aa0e1' ::bytea, 'UPBNT' ::text, - 18 ::numeric), - ('\x5a602561342f74d161e64796613d7528dd0993c1' ::bytea, 'UPTBNT' ::text, - 18 ::numeric), - ('\xb0824e7af2ee88ad14d7380bafd840ddcd9f118d' ::bytea, 'UPTBNT' ::text, - 18 ::numeric), - ('\x1f5350558f1e3e8bf370d4d552f3ebc785bf2979' ::bytea, 'USDARY' ::text, - 18 ::numeric), - ('\xd1146b08e8104eedba44a73b7bda1d102c6cedc9' ::bytea, 'USDB / BNT' ::text, - 18 ::numeric), - ('\xf65318b16abf0edf07bd42e4a1441eec9f8a66d5' ::bytea, 'USDB / DAI' ::text, - 18 ::numeric), - ('\x846f7a6de1efbd7617760ebe1b89aa8ca2094025' ::bytea, - 'USDB:PEGUSD' ::text, 18 ::numeric), - ('\x36aab614d872bedc6ea6731339c82a3fa3aec65b' ::bytea, 'USDBNT' ::text, - 18 ::numeric), - ('\x4eb61146e9ad2a9d395956ef410ebaf7459f4622' ::bytea, 'USDC-DZAR' ::text, - 18 ::numeric), - ('\x038869e70e0f927eaa42f75d1e3bf83008e4c88e' ::bytea, 'USDCBNT' ::text, - 18 ::numeric), - ('\x71c414dace65abff9351e215d25f17f675241c0a' ::bytea, 'USDCUSDB' ::text, - 18 ::numeric), - ('\x9921f8f53ee185a6bfd5d9d8935107934d0b07da' ::bytea, 'USDQBNT' ::text, - 18 ::numeric), - ('\x068c202b9a91f6e8cf4c2b584d82b219070e7a11' ::bytea, 'USDRAY1' ::text, - 18 ::numeric), - ('\xfd556ab5010a4076fee1a232117e4ef549a84032' ::bytea, 'USDRAY1' ::text, - 18 ::numeric), - ('\xec25a08c05ba76fd8c743a1f47d9876ea3659bbe' ::bytea, 'USDTBNT' ::text, - 18 ::numeric), - ('\xf2ff22976b973d6bcc17a7dc93b719162ada2045' ::bytea, 'USDTUSDB' ::text, - 18 ::numeric), - ('\x09c5188d9fe33d218cc186bae8f985907b25ebee' ::bytea, 'USDZAR' ::text, - 18 ::numeric), - ('\xf001bc665ffac52c6a969305c3bdaaf88de4bbc8' ::bytea, 'USDZAR' ::text, - 18 ::numeric), - ('\xf001bc665ffac52c6a969305c3bdaaf88de4bbc8' ::bytea, 'USDZAR' ::text, - 18 ::numeric), - ('\xc9c3a465380bfaac486c89ff7d5f60cc275d4e08' ::bytea, 'VEEBNT' ::text, - 18 ::numeric), - ('\x2948bd241243bb6924a0b2f368233dda525aab05' ::bytea, 'VIBBNT' ::text, - 18 ::numeric), - ('\x6a46f6dc570a1304a23f771c26b1802dffcdab0d' ::bytea, 'WANDBNT' ::text, - 18 ::numeric), - ('\x67563e7a0f13642068f6f999e48c690107a4571f' ::bytea, 'WAXBNT' ::text, - 18 ::numeric), - ('\xfee7eeaa0c2f3f7c7e6301751a8de55ce4d059ec' ::bytea, 'WBTC' ::text, - 18 ::numeric), - ('\xfa3bba432c0499c091f821aeb22fc36c4f8c78e3' ::bytea, 'WBTCpBTC' ::text, - 18 ::numeric), - ('\xca186facc9e927e0c2ddbbd31b16ee41057eddb2' ::bytea, - 'WETHWBTCDAISNX' ::text, 18 ::numeric), - ('\xa6ab3c8ae51962f4582db841de6b0a092041461e' ::bytea, 'WINGSBNT' ::text, - 18 ::numeric), - ('\x1c9df905571b22214fa5fb10ad99ebe327f199c5' ::bytea, 'WISHBNT' ::text, - 18 ::numeric), - ('\xd387cdaf85429b455f0f716d51be33db2fc00463' ::bytea, 'WLKBNT' ::text, - 18 ::numeric), - ('\xae0cecc84bc1ddefe13c6e5b2e9d311927e45ed8' ::bytea, 'X8XBNT' ::text, - 18 ::numeric), - ('\xbb83a9fe991baa72f412f39af254eebbfdc910ba' ::bytea, 'XBPBNT' ::text, - 18 ::numeric), - ('\xd1bb51fecc950c7b1e4197d8d13a1d2a60795d2c' ::bytea, 'XDCEBNT' ::text, - 18 ::numeric), - ('\x0edba1e9270aee20ad93ad19052d71900309aa35' ::bytea, 'XIOBNT' ::text, - 18 ::numeric), - ('\x18d8001d1da44fe96f442f5980e08d2ab4e19594' ::bytea, 'XIOUSDB' ::text, - 18 ::numeric), - ('\x1b4d8c62ddf6947616a5fcda4ca40a8715d2a4cb' ::bytea, 'XNKBNT' ::text, - 18 ::numeric), - ('\xee769ce6b4e2c2a079c5f67081225af7c89f874c' ::bytea, 'XPATBNT' ::text, - 18 ::numeric), - ('\x04a3030c94fb2dbe2b898d8cbf6fd1c656fa69dd' ::bytea, 'YHTSBNT' ::text, - 18 ::numeric), - ('\xc4a01182ab1e502a1c1d17024e4924573ce001cc' ::bytea, 'ZIPTBNT' ::text, - 18 ::numeric), - ('\x1a3c6768e200482f5f47d1be77b7255abcae4fe2' ::bytea, 'ZRXUSDB' ::text, - 18 ::numeric); +CREATE OR REPLACE VIEW bancornetwork.view_smart_tokens (contract_address, symbol, decimals) AS VALUES + ('\xd8ab826b6d69f5e4fa1325a5236491a309fbff4f'::bytea, '4XBBNT'::text, 8::numeric), + ('\x275a1a2dad3075beb96af4f7fd93ade99bb0151f'::bytea, 'ABXBNT'::text, 18::numeric), + ('\x075561230db23aa3b86abe8afe8bbc4ecddf1c5a'::bytea, 'ACDBNT'::text, 18::numeric), + ('\xeab935f35693c3218b927436e63564018e92034f'::bytea, 'AGRIBNT'::text, 18::numeric), + ('\x653f1ffc243d7b6f4ca65df9520a80d0113da3d6'::bytea, 'AGSBNT'::text, 18::numeric), + ('\xe3bf775ec5f4f4dfcbb21194b22be1217b815b1d'::bytea, 'AIDBNT'::text, 18::numeric), + ('\x73fa2b855be96ab3c73f375b8ec777226efa3845'::bytea, 'AIONBNT'::text, 18::numeric), + ('\xa415cd56c694bd7402d14560d18bb19a28f77617'::bytea, 'AIXBNT'::text, 18::numeric), + ('\x0f9be347378a37ced33a13ae061175af07cc9868'::bytea, 'AMNBNT'::text, 18::numeric), + ('\x0e2145a23f7810431ba0f2e19676530b3f1fb0ec'::bytea, 'AMPLBNT'::text, 18::numeric), + ('\x437f7d93540094da58f337644ba7d6e5ad823564'::bytea, 'ANKBNT'::text, 18::numeric), + ('\x0c485bffd5df019f66927b2c32360159884d4409'::bytea, 'ANTBNT'::text, 18::numeric), + ('\x1d75ebc72f4805e9c9918b36a8969b2e3847c9fb'::bytea, 'ATSBNT'::text, 18::numeric), + ('\x164a1229f4826c9dd70ee3d9f4f3d7b68a172153'::bytea, 'AUCBNT'::text, 18::numeric), + ('\x0aaca86e54fe70edd7c86cbf3cfb470caa49faef'::bytea, 'AURELIO'::text, 18::numeric), + ('\x0b21617ed9b15fd901e0b36b8edf9d68adc11ad5'::bytea, 'AUTOBNT'::text, 18::numeric), + ('\x131da075a2832549128e93acc2b54174045232cf'::bytea, 'BATBNT'::text, 18::numeric), + ('\x7ffe011b93e06fa14ce5a6e00320937652664366'::bytea, 'BATUSDB'::text, 18::numeric), + ('\xa9de5935ae3eae8a7f943c9329940eda160267f4'::bytea, 'BAXBNT'::text, 18::numeric), + ('\x980b4118dab781829df80d7912d70b059a280dad'::bytea, 'BBOBNT'::text, 18::numeric), + ('\xd3ad4c39a12b48164068fef8f86ef5836a9ef303'::bytea, 'BCSBNT'::text, 18::numeric), + ('\x679f601f0deb53c2db0c8c26369fdcba5fd753cf'::bytea, 'BETRBNT'::text, 18::numeric), + ('\x6f8beadf9ecd851be239b616149af3e69d49ce11'::bytea, 'BFZBNT'::text, 18::numeric), + ('\x1bce0e684a1607fd86407909073eea2336042bf7'::bytea, 'BMCBNT'::text, 18::numeric), + ('\xe6b31fb3f29fbde1b92794b0867a315ff605a324'::bytea, 'BNBBNT'::text, 18::numeric), + ('\x607108c46bce4cf6f86698e9b46e3270a734fefe'::bytea, 'BNT-USD'::text, 18::numeric), + ('\x849d49911cef804bdb1fec58150b8eabab119796'::bytea, 'BOXXBNT'::text, 18::numeric), + ('\x534df0ec6d65cd6fe1b05d3b8c935c97eb844190'::bytea, 'BTCDEFI'::text, 18::numeric), + ('\xe94c892f90abea59f3dd1d7d8c34ac9d7312f18a'::bytea, 'BUSDUSDB'::text, 18::numeric), + ('\x1ef9e0ac29b3813528fbfdadf5118ab63e4be015'::bytea, 'C20BNT'::text, 18::numeric), + ('\x854809b0c072d9c9c09e268cd7836d1b58101b62'::bytea, 'CANBNT'::text, 18::numeric), + ('\xb3c55930368d71f643c3775869afc73f6c5237b2'::bytea, 'CATBNT'::text, 18::numeric), + ('\xe35a57ac913144aef6a4b179634d343466de3cc3'::bytea, 'CBIX7USDB'::text, 18::numeric), + ('\x2f2ad6954d99ea14fa145b9ab0fb6ba5ac32c0ee'::bytea, 'CEEKBNT'::text, 18::numeric), + ('\x27b099cf19227ef7488d60a441d7ea2cc7fddb25'::bytea, 'CEEKUSDB'::text, 18::numeric), + ('\x3bf2d14f9ca9f619da278c0646412345d4cbbf2d'::bytea, 'CHANEBNT'::text, 18::numeric), + ('\x5a9790c2d029e4406f3d820d51774e4e3efac8cd'::bytea, 'CHXBNT'::text, 18::numeric), + ('\x34902d61c3f8d8809a8a2481c36dc514beba5ce8'::bytea, 'CHZBNT'::text, 18::numeric), + ('\xeb027349398de19d925defc15c4302fe92fc69f9'::bytea, 'CLNBNT'::text, 18::numeric), + ('\x6c77f061a756723ef852d9dfc0f5bac9ab5e65e0'::bytea, 'CMCTBNT'::text, 18::numeric), + ('\xb5b0e0642d35d7cab64cda6ecf87fd842cb5c58d'::bytea, 'CMCTBNT'::text, 18::numeric), + ('\xb83546551c9d4f6d7873804a7352fa930404260d'::bytea, 'COMMBNT'::text, 18::numeric), + ('\x19db077a54dea3fd4cbcd9d31d4db297562cbd94'::bytea, 'COTBNT'::text, 18::numeric), + ('\x0f92330eaaba84cb54b068f4331cc40dd2a98236'::bytea, 'CRTSBNT'::text, 18::numeric), + ('\xf0f9bbd5ebc79d7cad9d35564ef45adcd802611e'::bytea, 'cUSDBNT'::text, 18::numeric), + ('\x737ac585809c0f64ee09d7b8050d195d14f14c55'::bytea, 'CVTBNT'::text, 18::numeric), + ('\x742ad14970596f2f90ee131aecb041b1d725eca3'::bytea, 'DAI-PEG:USD'::text, 18::numeric), + ('\x69cda2083731e2127ea7db5d0158f3eea3a9e9c9'::bytea, 'DAI/USDC/sUSD/BUSD'::text, 18::numeric), + ('\xb27b05e9e4d8ff428b6e1a4b432c208c10f8301d'::bytea, 'DAI70'::text, 18::numeric), + ('\xe5df055773bf9710053923599504831c7dbdd697'::bytea, 'DAIBNT'::text, 18::numeric), + ('\xee01b3ab5f6728adc137be101d99c678938e6e72'::bytea, 'DAIBNT'::text, 18::numeric), + ('\x109c1ad638daf89dbb95badfca505f1adb09af2d'::bytea, 'DAIUSDB'::text, 18::numeric), + ('\xcb913ed43e43cc7cec1d77243ba381615101e7e4'::bytea, 'DAIUSDB'::text, 18::numeric), + ('\xa06cfab8b584c91df1abee6e8503486ab4e23f40'::bytea, 'DANBNT'::text, 18::numeric), + ('\xdd8a17169aa94e548602096eb9c9d44216ce8a37'::bytea, 'DATABNT'::text, 18::numeric), + ('\xfe9e6111e45a6066374bf33e831e80b1949a9faa'::bytea, 'DBETBNT'::text, 18::numeric), + ('\x7ef1fedb73bd089ec1010baba26ca162dfa08144'::bytea, 'DGDBNT'::text, 18::numeric), + ('\xcaea8f7774f8bf7093e1133fdb3791edb7d6d822'::bytea, 'DGXBNT'::text, 18::numeric), + ('\xa7774f9386e1653645e1a08fb7aae525b4dedb24'::bytea, 'DRGNBNT'::text, 18::numeric), + ('\x904c7051d12ace7d0107ada8702c0c759cad1672'::bytea, 'DRTBNT'::text, 18::numeric), + ('\x1f593cdc35d7f0b0495da16b631d28de5ae25a07'::bytea, 'DTRCBNT'::text, 18::numeric), + ('\x7484867773bc6f3110f710577d36a3605dba59df'::bytea, 'DZARUSDB'::text, 18::numeric), + ('\xf95dd0fc6df64b2f149afa9219579e0f850bcd4d'::bytea, 'EDGBNT'::text, 18::numeric), + ('\xf34484286be88613ad8399fe40f93506125be139'::bytea, 'EFOODBNT'::text, 18::numeric), + ('\xfb834a1515cbc7f8b04d7ab4bd27d6922bee1a93'::bytea, 'EGXBNT'::text, 18::numeric), + ('\xe8d2fe2288feae00d2755088fc52480ae92eda1a'::bytea, 'EGXUSDB'::text, 18::numeric), + ('\x334c36be5b1eaf0c4b61ddea202c9f6dc2640fe5'::bytea, 'ELETBNT'::text, 18::numeric), + ('\x0f2318565f1996cb1ed2f88e172135791bc1fcbf'::bytea, 'ELFBNT'::text, 18::numeric), + ('\x9ad9ba0bb0001e9571073b595562af9645273ab1'::bytea, 'ELIBNT'::text, 18::numeric), + ('\x2e8d4ef4cce1a5235311307b45ebecf31ee7ca88'::bytea, 'EMCOBNT'::text, 18::numeric), + ('\x9fd952f675f14157b988590516c67045faf20743'::bytea, 'EMCOBNT'::text, 18::numeric), + ('\x37be876ef051eb8eddd0745107c5222d8ca8ec60'::bytea, 'EMIT1USDB'::text, 18::numeric), + ('\x2a3a6596b35735efac3577dc36bf750bfe5888e8'::bytea, 'EMIT1USDB2FCO'::text, 18::numeric), + ('\xf3ad2cbc4276eb4b0fb627af0059cfce094e20a1'::bytea, 'ENJBNT'::text, 18::numeric), + ('\x42529f410f0a72599fff2c67dd2a63cffbcc3f91'::bytea, 'ENJUSDB'::text, 18::numeric), + ('\x507b06c23d7cb313194dbf6a6d80297137fb5e01'::bytea, 'EOSBNT'::text, 18::numeric), + ('\xd16a3a892695ec9a47effdd5247980a8d2be3ff2'::bytea, 'ESTBNT'::text, 18::numeric), + ('\xa2020e324c365d05e87cf25552e6e6734260b089'::bytea, 'ESZBNT'::text, 18::numeric), + ('\x8bb1b8efa38093d1fa9d87588004c3499df434b2'::bytea, 'ETH-USD'::text, 18::numeric), + ('\xb1cd6e4153b2a390cf00a6556b0fc1458c4a5533'::bytea, 'ETHBNT'::text, 18::numeric), + ('\x482c31355f4f7966ffcd38ec5c9635acae5f4d4f'::bytea, 'ETHUSDB'::text, 18::numeric), + ('\x7b5b4078b287c23ef5771c3b0650d52f4fd1b11a'::bytea, 'ETHUSDB'::text, 18::numeric), + ('\xfc0e04eae452c163883aaad4ac1ae091cc87fef3'::bytea, 'EURSBNT'::text, 18::numeric), + ('\xbb8436eaf49888641df27e4e1dffbd4851788209'::bytea, 'EVOBNT'::text, 18::numeric), + ('\x5e6f3bc1186132565946fea123181529e7aeafd8'::bytea, 'eXAU'::text, 18::numeric), + ('\xee4dc4c5ca843b83035d8e5159ac1bd1b4ebdff5'::bytea, 'FCO'::text, 18::numeric), + ('\x94a2aaa374a8f2d52dad24330c8a0ec2934700ae'::bytea, 'FCOUSDB'::text, 18::numeric), + ('\x80c222e38fb57f0710af21128535096d90503285'::bytea, 'FKXBNT'::text, 18::numeric), + ('\x2d5add875442023ec83718bb03d866c9f4c6e8ce'::bytea, 'FLIXXBNT'::text, 18::numeric), + ('\x44aa95fa2e84d3acdacdeffe16d9b5ed0498cc8b'::bytea, 'FREELINK'::text, 18::numeric), + ('\xb2b788530b383be0933b0d3275cead29b332522e'::bytea, 'FRVBNT'::text, 18::numeric), + ('\x3a946bb329f78ccbc75d836136de3a472bdf5499'::bytea, 'FTHBNT'::text, 18::numeric), + ('\x4d849dad08a4061be102dbca2ce2718a9a0b635a'::bytea, 'FTXBNT'::text, 18::numeric), + ('\xb93cc8642f5e8644423aa7305da96fff75708228'::bytea, 'FXCBNT'::text, 18::numeric), + ('\x5972ced550248b17c9f674639d33e5446b6ad95a'::bytea, 'GESBNT'::text, 18::numeric), + ('\xd7eb9db184da9f099b84e2f86b1da1fe6b305b3d'::bytea, 'GNOBNT'::text, 18::numeric), + ('\xb4961fa7358efa9b3a9f8e03c82c596b429cf453'::bytea, 'GOLDBNT'::text, 18::numeric), + ('\xddde5dba82b92daf339fbb4cf1ec4d1cec503075'::bytea, 'GRIDBNT'::text, 18::numeric), + ('\x912d734c351425ca35f22ab7e16524147628e61c'::bytea, 'GRIGBNT'::text, 18::numeric), + ('\x1f6e51ce0533a075fdd602fbd6159763acab579b'::bytea, 'GRIGUSDB'::text, 18::numeric), + ('\xc4938292ea2d3085fffc11c46b87ca068a83be01'::bytea, 'GTOBNT'::text, 18::numeric), + ('\x654ee2eaf2082c5483f2212ba7b6701f334a159f'::bytea, 'HEDGBNT'::text, 18::numeric), + ('\x91ee9a99e4c93a7e50c8f7c359885fdf340e9515'::bytea, 'HEDGBNT'::text, 18::numeric), + ('\x07757c58b5c0e2eaf498863dfdd05179940d6c44'::bytea, 'HEROBNT'::text, 18::numeric), + ('\x4cef7499d9eb6d46ee67bc11b6cdc75119fa6588'::bytea, 'HEROBNT'::text, 18::numeric), + ('\x0ac0e122d09cc4da4a96cc2731d2b7cc1f8b025a'::bytea, 'HOTBNT'::text, 18::numeric), + ('\x1344381f0e93a2a1ab0bfd2fe209a9bd01343933'::bytea, 'HOTELBNT'::text, 18::numeric), + ('\xb1a5b7e9a268742b9b5d2455ffcf43babc6929ba'::bytea, 'IGA'::text, 18::numeric), + ('\x32423158e8fbd2839e085626f8a98d86b2766de8'::bytea, 'INDBNT'::text, 18::numeric), + ('\xc803b2b2c3ba24c0c934aeb3ba508a4dd6853f1b'::bytea, 'INSTAR'::text, 18::numeric), + ('\x9da52b3b37bdbe8b851d882dc55bd823b4b66bf4'::bytea, 'INVBNT'::text, 18::numeric), + ('\xd32c26b14030c724c0118576308ea2fb3300d10f'::bytea, 'IQTBNT'::text, 18::numeric), + ('\x8e00bacd7d8265d8f3f9d5b4fbd7f6b0b0c46f36'::bytea, 'J8TBNT'::text, 18::numeric), + ('\x4827e558e642861cd7a1c8f011b2b4661f8d51fa'::bytea, 'JRTUSDB'::text, 18::numeric), + ('\xa7e21e7584fc6fdf6fa978a5d4981352b0260954'::bytea, 'KEYBNT'::text, 18::numeric), + ('\x26b5748f9253363f95e37767e9ed7986877a4b1b'::bytea, 'KINBNT'::text, 18::numeric), + ('\xb9106265fc581edc4f46b92d221de3b4d7db13d3'::bytea, 'KINDBNT'::text, 8::numeric), + ('\x248afff1aa83cf860198ddee14b5b3e8edb46d47'::bytea, 'KNCBNT'::text, 18::numeric), + ('\xd69ae1d715d7451646107d43777139b0a42d7c63'::bytea, 'KNCUSDB'::text, 18::numeric), + ('\xb79c3a1a2d50cc99459f3a21d709bcec86656e97'::bytea, 'LDCBNT'::text, 18::numeric), + ('\x53e0e9aef6fa78518f90467d9345c3c4174f4071'::bytea, 'LINKBNT'::text, 18::numeric), + ('\x6e4db478e55745a8711ecff193c9d95e970eb001'::bytea, 'LINKUSDB'::text, 18::numeric), + ('\x38838b895cbf02048455fb7f649d97c564fc18a8'::bytea, 'LOCBNT'::text, 18::numeric), + ('\x6feb9be6c40a12276cfa6dafbd119ea62532daab'::bytea, 'LOCIBNT'::text, 18::numeric), + ('\x04013be0e4d671c5d160bc78daacc3cb8b163dba'::bytea, 'LOOMBNT'::text, 18::numeric), + ('\xc32bf4a12542e897badbff2b61e56c82eae73d69'::bytea, 'LOOMUSDB'::text, 18::numeric), + ('\xe355dcf475ff7569b8b74d5165a532aba87c25bf'::bytea, 'LRCASTBNT'::text, 18::numeric), + ('\x014186b1a2d675fc1e303a3d62b574c3270a38e0'::bytea, 'MADBNT'::text, 18::numeric), + ('\x79d83b390cf0edf86b9efbe47b556cc6e20926ac'::bytea, 'MANABNT'::text, 18::numeric), + ('\xbab15d72731ea7031b10324806e7aad8448896d5'::bytea, 'MDTBNT'::text, 18::numeric), + ('\x7651021390129c9c2672f47292c31b33f63ee5cc'::bytea, 'MDZAUSDB'::text, 18::numeric), + ('\x7f8c53072d9b809a108b1a9d677bcc3b7b3f844e'::bytea, 'METUSDB'::text, 18::numeric), + ('\xb3b2861a093b7fb19352bd62cd8efc314e0641a7'::bytea, 'MFGBNT'::text, 18::numeric), + ('\x4319f9130848544afb97e92cb3ea9fdb4b0a0b2a'::bytea, 'MFTBNT'::text, 18::numeric), + ('\x0ba204702f102ad3b0156164754e8af18c24c49c'::bytea, 'MGTBNT'::text, 18::numeric), + ('\x6f60d44a0d6fb95e037a099f8642f949c959a363'::bytea, 'MGTBNT'::text, 18::numeric), + ('\xf553e6ea4ce2f7deecbe7837e27931850ec15fab'::bytea, 'MKRBNT'::text, 18::numeric), + ('\x29df79cb535f1fe82ca65d52cb8b5ee82d7e98a6'::bytea, 'MKRUSDB'::text, 18::numeric), + ('\x0d6777bfc95b284ea9246c889e99903641129d72'::bytea, 'MLNUSDB'::text, 18::numeric), + ('\x8da321ab610cd24fb2bcce191f423dae7c327ca9'::bytea, 'MNTPBNT'::text, 18::numeric), + ('\xb2ea67533290fad84e3fe2e1fb68d21ca062d7fc'::bytea, 'MORPHBNT'::text, 18::numeric), + ('\x25bf8913d6296a69c7b43bc781614992cb218935'::bytea, 'MRGBNT'::text, 18::numeric), + ('\x4b51acc819591c885dba0f06d98a07b432e6d6b4'::bytea, 'MRPHBNT'::text, 18::numeric), + ('\x60be88dd72f03c91fb22eef7af24c2e99db58530'::bytea, 'MTLBNT'::text, 18::numeric), + ('\xf22fb05ac032fcaf3273f50af8db2753888bdd48'::bytea, 'MYBBNT'::text, 18::numeric), + ('\x7081bca18fa05e8c9aa25320e3b7493d92b4e73c'::bytea, 'NEXOBNT'::text, 18::numeric), + ('\x515d562496c43487eb2ddce1a2a7721148d44e36'::bytea, 'NEXOUSDB'::text, 18::numeric), + ('\x9cbb076c3dc14f025be30b4cc34c33107d602a44'::bytea, 'NMRBNT'::text, 18::numeric), + ('\xefec901ff0a33d0ef4f8068cdd8b28fdc40aa556'::bytea, 'NMRUSDB'::text, 18::numeric), + ('\x5a4deb5704c1891df3575d3eecf9471da7f61fa4'::bytea, 'NPXSBNT'::text, 18::numeric), + ('\x99ebd396ce7aa095412a4cd1a0c959d6fd67b340'::bytea, 'OMGBNT'::text, 18::numeric), + ('\xaebfea5ce20af9fa2c65fb62863b31a90b7e056b'::bytea, 'OMGUSDB'::text, 18::numeric), + ('\xc083cd0e18e024d43258b59edb6f06aa16e55e3a'::bytea, 'OMNISBNT'::text, 18::numeric), + ('\x9e686489dc8ba97aadc22d6c87135a3d29e5dae6'::bytea, 'OMNISUSDB'::text, 18::numeric), + ('\x8104e7ce81fab39c42e34cd9d8b654135261fae8'::bytea, 'ONGBNT'::text, 18::numeric), + ('\x2f4ef142cd9983b1f86df21bed3ce12e06856dcb'::bytea, 'PARETOWETHUSDCBNT'::text, 18::numeric), + ('\x573c97e9fb924c22d41127481eedf4a177394988'::bytea, 'PAXUSDB'::text, 18::numeric), + ('\xeef7551e59b34f431d71c7593249f61d5c52ce65'::bytea, 'pBTCBNT'::text, 18::numeric), + ('\x6b09b01c19e4bd573eae4e235ee47cbd51df3b6e'::bytea, 'pBTCUSDB'::text, 18::numeric), + ('\xa485bd50228440797abb4d4595161d7546811160'::bytea, 'PEG:USD'::text, 18::numeric), + ('\xd758b77bcc792afd58857e1d5c610ae649fdee6b'::bytea, 'PEG:USD'::text, 18::numeric), + ('\xe729024679c29c2660e05727ecafd3d8792b8111'::bytea, 'PKGBNT'::text, 18::numeric), + ('\x2843f6c3b14e698e3d7562584959c61274f93328'::bytea, 'PLRBNT'::text, 18::numeric), + ('\x564c07255afe5050d82c8816f78da13f2b17ac6d'::bytea, 'POABNT'::text, 18::numeric), + ('\xa5f2a49aafa052e28a50a575cd9e7488fa598e78'::bytea, 'POEBNT'::text, 18::numeric), + ('\x168d7bbf38e17941173a352f1352df91a7771df3'::bytea, 'POWRBNT'::text, 18::numeric), + ('\xf132d2538076e373b0c186f1ddb86f3be8cfc8dc'::bytea, 'POWRBNT'::text, 18::numeric), + ('\x8bb91b280a39a9e9d8505b9a5bc792ccb3b9779e'::bytea, 'POWRUSDB'::text, 6::numeric), + ('\x9d64bbbe449c5ff69f9f1a9d33b9f56e6f567cb5'::bytea, 'PPTBNT'::text, 18::numeric), + ('\x2788c2db0fbdbaee39fa010d325d55e7e4527e0d'::bytea, 'PRTLBNT'::text, 18::numeric), + ('\x19683e94943e6b348d8afb98c128b9b549b400df'::bytea, 'QDAOBNT'::text, 18::numeric), + ('\x610c79736c170e7cadda081a337b16ede82b6aec'::bytea, 'RBBNT'::text, 18::numeric), + ('\x78acf38ec85a9e4b2b88961b9d4bffba04fdba59'::bytea, 'RBLXBNT'::text, 18::numeric), + ('\xf7b9fa01098f22527db205ff9bb6fdf7c7d9f1c5'::bytea, 'RCNBNT'::text, 18::numeric), + ('\x11223ed5d5846603c4efc7c451fd8eb596d592cf'::bytea, 'RDNBNT'::text, 18::numeric), + ('\xe9adced9da076d9dada35f5b99970fdd58b1440d'::bytea, 'REALBNT'::text, 18::numeric), + ('\xb67fa7330154878cf1fd8f4b20bf1c19f68a3926'::bytea, 'REFBNT'::text, 18::numeric), + ('\xab5ae72d95d3a02796c87f8079b1e180507df54f'::bytea, 'REMBNT'::text, 18::numeric), + ('\xa807e7faa1c2c955bd8751e2fd1cbfa289e060c6'::bytea, 'RENUSDB'::text, 18::numeric), + ('\xab0c9850baacf24efa368b57c2822ce73b60794c'::bytea, 'REPUSDB'::text, 18::numeric), + ('\x28291d74bca9de7cb6948a8e699651ed93832c50'::bytea, 'REPUXBNT'::text, 18::numeric), + ('\xccb5e3ba5356d57001976092795626ac3b87ad4e'::bytea, 'REQBNT'::text, 18::numeric), + ('\x9003411ac4073c2d9f37af71d00e373b72cbe9e2'::bytea, 'RLCBNT'::text, 18::numeric), + ('\x6534d2a69c2c7774df42a55a1678bd008984b324'::bytea, 'RLCUSDB'::text, 18::numeric), + ('\xb9fe4bd869a132137b668054ea48c897c0654ee4'::bytea, 'RPLBNT'::text, 18::numeric), + ('\x43d3a0712ed544b26d85c9eaf841008369bab5d1'::bytea, 'RSTBNT'::text, 18::numeric), + ('\x5039f60594ffa3f1a5acbe85e1ebe12dc8da7c5c'::bytea, 'RVTBNT'::text, 18::numeric), + ('\xd6a6c879ad8c01d0c8d5bf1c85829814b954dbbf'::bytea, 'SANBNT'::text, 18::numeric), + ('\xfceb45cf070b277fede520c5539ae204bc1d493e'::bytea, 'SCLBNT'::text, 18::numeric), + ('\x47244bc49d90f25473ebf8ad0a14ea6d4232a4c7'::bytea, 'SENSEBNT'::text, 18::numeric), + ('\x6e0e0b9ab5f8e5f5f2de4d34ffe46668ffb37476'::bytea, 'SHPBNT'::text, 18::numeric), + ('\x09953e3e5c6be303d8d83ccb672d241abc9bee29'::bytea, 'SIGBNT'::text, 18::numeric), + ('\xa3b3c5a8b22c044d5f2d372f628245e2106d310d'::bytea, 'SNTBNT'::text, 18::numeric), + ('\x91afdd8ef36def4fa2b9d7a05420f9d0e4f775d1'::bytea, 'SNX-DZAR'::text, 18::numeric), + ('\x28271853e950be371b050f3f93aa0146225bf374'::bytea, 'SNXUSDB'::text, 18::numeric), + ('\x415351dbb151be20a6ee062297eb0405bc353c31'::bytea, 'SNXUSDB'::text, 18::numeric), + ('\xdf4971e3f52f5828c72a0512d560f54bfb2b2692'::bytea, 'SNXUSDB'::text, 18::numeric), + ('\xb2f40825d32b658d39e4f73bb34d33ba628e8b76'::bytea, 'SPDBNT'::text, 18::numeric), + ('\xd2deb679ed81238caef8e0c32257092cecc8888b'::bytea, 'SRNBNT'::text, 18::numeric), + ('\x791991b1b9accda8cb7e957b8b71a42cca570652'::bytea, 'SRNBTC'::text, 18::numeric), + ('\x2eb21321ecbe7b61167ce1b4e1640e242c9a6e7f'::bytea, 'SRNCNT'::text, 18::numeric), + ('\x258d1210e9e242fdc0ecfa3b039a51a945cd0d0a'::bytea, 'STACBNT'::text, 18::numeric), + ('\xcad4da66e00fdecabec137a24e12af8edf303a1d'::bytea, 'STORMBNT'::text, 18::numeric), + ('\x368b3d50e51e8bf62e6c73fc389e4102b9aeb8e2'::bytea, 'sUSD-DZAR'::text, 18::numeric), + ('\xb2d679f6d676f173faf3670a074b2c3a6d7ebe28'::bytea, 'SUSDDAI'::text, 18::numeric), + ('\x3f66a22f108645898957c475b6c89c9c3e3b89db'::bytea, 'sUSDUSDB'::text, 18::numeric), + ('\x778a35b4058bdfb5dfb6f85d08627edc73466e0b'::bytea, 'sUSDUSDB'::text, 18::numeric), + ('\x78b8fa1a6ea77f44fbd6fdf452e803c5d5f2d23f'::bytea, 'sUSDUSDB'::text, 18::numeric), + ('\x9b6678c766003ad69a15f795f433c0f62c10d4d5'::bytea, 'sUSDUSDB'::text, 18::numeric), + ('\xb2e2de593fde3d6ab3f7fe93a1abfea3d4dd19ba'::bytea, 'sUSDUSDB'::text, 18::numeric), + ('\x8dcf1ca9f4716ef8e86a29f224237540f3c7abad'::bytea, 'SVDBNT'::text, 18::numeric), + ('\xf251523c1614ec3f449a93b7be547882ebc682ca'::bytea, 'SWMBNT'::text, 18::numeric), + ('\x3364ccaede016f4c433b326d96be1a2eafa60bdd'::bytea, 'SXLBNT'::text, 18::numeric), + ('\xdc610f8eece47e9f91209c77c8674c40d2d8e17f'::bytea, 'SYB7BNT'::text, 18::numeric), + ('\xae201360282c885bf3f2616a3145d1344a1e43c0'::bytea, 'TAASBNT'::text, 18::numeric), + ('\x536545f6b120c2fd099370334097b35bb2403bc3'::bytea, 'TBCBNT'::text, 18::numeric), + ('\xb13819374575be7ced2b0896c645612164ebe772'::bytea, 'TBCBNT'::text, 18::numeric), + ('\x323e4d8097b0a58ab8210ac6efcc4a89285cfc6b'::bytea, 'TBCUSDB'::text, 18::numeric), + ('\xe844e4ef529cb1a507d47206beef65a921b07287'::bytea, 'TBXBNT'::text, 18::numeric), + ('\x1b30042b537b30b1254ce84b27b332be523e974a'::bytea, 'TIOBNT'::text, 18::numeric), + ('\x324c703dd2f03960600f3036955488a55885b527'::bytea, 'TIXBNT'::text, 18::numeric), + ('\x497ec0d6ba2080f0ed7ecf7a79a2a907401b3239'::bytea, 'TKNBNT'::text, 18::numeric), + ('\x5cf2f6387c4f551316e1e422acf1025a539825c3'::bytea, 'TNSBNT'::text, 18::numeric), + ('\x064432e84f05094e3ed746a35ab9b7ab865fda5c'::bytea, 'TRSTBNT'::text, 18::numeric), + ('\xe5180d7f5e99932c8cc99482a39318a781eddb4c'::bytea, 'TRXBNT'::text, 18::numeric), + ('\x10ef8f03cd0f3d7bc14a04ba2c173414aa8c5e7e'::bytea, 'TSTST'::text, 18::numeric), + ('\x06cd5923593a359111cdec66e74c62e831c8aeab'::bytea, 'TUSDUSDB'::text, 18::numeric), + ('\x290bd3a8f785a8db30a0f6baf9b88863b831747f'::bytea, 'UBTBNT'::text, 18::numeric), + ('\x668841f8262dbd3a6f5edb0cf47d7799e7822433'::bytea, 'ULTBNT'::text, 18::numeric), + ('\x83ee8ec605c0ae3d7f1c9e360ab45a6c1c033ab9'::bytea, 'UNIDUB'::text, 18::numeric), + ('\xd4c810fdca379831078267f3402845e5205aa0e1'::bytea, 'UPBNT'::text, 18::numeric), + ('\x5a602561342f74d161e64796613d7528dd0993c1'::bytea, 'UPTBNT'::text, 18::numeric), + ('\xb0824e7af2ee88ad14d7380bafd840ddcd9f118d'::bytea, 'UPTBNT'::text, 18::numeric), + ('\x1f5350558f1e3e8bf370d4d552f3ebc785bf2979'::bytea, 'USDARY'::text, 18::numeric), + ('\xd1146b08e8104eedba44a73b7bda1d102c6cedc9'::bytea, 'USDB / BNT'::text, 18::numeric), + ('\xf65318b16abf0edf07bd42e4a1441eec9f8a66d5'::bytea, 'USDB / DAI'::text, 18::numeric), + ('\x846f7a6de1efbd7617760ebe1b89aa8ca2094025'::bytea, 'USDB:PEGUSD'::text, 18::numeric), + ('\x36aab614d872bedc6ea6731339c82a3fa3aec65b'::bytea, 'USDBNT'::text, 18::numeric), + ('\x4eb61146e9ad2a9d395956ef410ebaf7459f4622'::bytea, 'USDC-DZAR'::text, 18::numeric), + ('\x038869e70e0f927eaa42f75d1e3bf83008e4c88e'::bytea, 'USDCBNT'::text, 18::numeric), + ('\x71c414dace65abff9351e215d25f17f675241c0a'::bytea, 'USDCUSDB'::text, 18::numeric), + ('\x9921f8f53ee185a6bfd5d9d8935107934d0b07da'::bytea, 'USDQBNT'::text, 18::numeric), + ('\x068c202b9a91f6e8cf4c2b584d82b219070e7a11'::bytea, 'USDRAY1'::text, 18::numeric), + ('\xfd556ab5010a4076fee1a232117e4ef549a84032'::bytea, 'USDRAY1'::text, 18::numeric), + ('\xec25a08c05ba76fd8c743a1f47d9876ea3659bbe'::bytea, 'USDTBNT'::text, 18::numeric), + ('\xf2ff22976b973d6bcc17a7dc93b719162ada2045'::bytea, 'USDTUSDB'::text, 18::numeric), + ('\x09c5188d9fe33d218cc186bae8f985907b25ebee'::bytea, 'USDZAR'::text, 18::numeric), + ('\xf001bc665ffac52c6a969305c3bdaaf88de4bbc8'::bytea, 'USDZAR'::text, 18::numeric), + ('\xf001bc665ffac52c6a969305c3bdaaf88de4bbc8'::bytea, 'USDZAR'::text, 18::numeric), + ('\xc9c3a465380bfaac486c89ff7d5f60cc275d4e08'::bytea, 'VEEBNT'::text, 18::numeric), + ('\x2948bd241243bb6924a0b2f368233dda525aab05'::bytea, 'VIBBNT'::text, 18::numeric), + ('\x6a46f6dc570a1304a23f771c26b1802dffcdab0d'::bytea, 'WANDBNT'::text, 18::numeric), + ('\x67563e7a0f13642068f6f999e48c690107a4571f'::bytea, 'WAXBNT'::text, 18::numeric), + ('\xfee7eeaa0c2f3f7c7e6301751a8de55ce4d059ec'::bytea, 'WBTC'::text, 18::numeric), + ('\xfa3bba432c0499c091f821aeb22fc36c4f8c78e3'::bytea, 'WBTCpBTC'::text, 18::numeric), + ('\xca186facc9e927e0c2ddbbd31b16ee41057eddb2'::bytea, 'WETHWBTCDAISNX'::text, 18::numeric), + ('\xa6ab3c8ae51962f4582db841de6b0a092041461e'::bytea, 'WINGSBNT'::text, 18::numeric), + ('\x1c9df905571b22214fa5fb10ad99ebe327f199c5'::bytea, 'WISHBNT'::text, 18::numeric), + ('\xd387cdaf85429b455f0f716d51be33db2fc00463'::bytea, 'WLKBNT'::text, 18::numeric), + ('\xae0cecc84bc1ddefe13c6e5b2e9d311927e45ed8'::bytea, 'X8XBNT'::text, 18::numeric), + ('\xbb83a9fe991baa72f412f39af254eebbfdc910ba'::bytea, 'XBPBNT'::text, 18::numeric), + ('\xd1bb51fecc950c7b1e4197d8d13a1d2a60795d2c'::bytea, 'XDCEBNT'::text, 18::numeric), + ('\x0edba1e9270aee20ad93ad19052d71900309aa35'::bytea, 'XIOBNT'::text, 18::numeric), + ('\x18d8001d1da44fe96f442f5980e08d2ab4e19594'::bytea, 'XIOUSDB'::text, 18::numeric), + ('\x1b4d8c62ddf6947616a5fcda4ca40a8715d2a4cb'::bytea, 'XNKBNT'::text, 18::numeric), + ('\xee769ce6b4e2c2a079c5f67081225af7c89f874c'::bytea, 'XPATBNT'::text, 18::numeric), + ('\x04a3030c94fb2dbe2b898d8cbf6fd1c656fa69dd'::bytea, 'YHTSBNT'::text, 18::numeric), + ('\xc4a01182ab1e502a1c1d17024e4924573ce001cc'::bytea, 'ZIPTBNT'::text, 18::numeric), + ('\x1a3c6768e200482f5f47d1be77b7255abcae4fe2'::bytea, 'ZRXUSDB'::text, 18::numeric) +; diff --git a/dune/abstractions/bancornetwork/view_update_conversion_fee.sql b/dune/abstractions/bancornetwork/view_update_conversion_fee.sql index 681c11f..4978351 100644 --- a/dune/abstractions/bancornetwork/view_update_conversion_fee.sql +++ b/dune/abstractions/bancornetwork/view_update_conversion_fee.sql @@ -1,28 +1,43 @@ -CREATE OR REPLACE VIEW bancornetwork.view_update_conversion_fee AS SELECT - "_prevFee" AS "previous_fee", - "_newFee" AS "new_fee", contract_address, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM ( - SELECT *FROM bancornetwork - ."BancorConverter_v0.10a_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.10b_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.11_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.13_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.14a_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.14b_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.19_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.20_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.23_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.9_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."LiquidityPoolV1Converter_v0.28_evt_ConversionFeeUpdate" UNION ALL - SELECT *FROM bancornetwork - ."LiquidityPoolV1Converter_v0.29_evt_ConversionFeeUpdate") s; +CREATE OR REPLACE VIEW bancornetwork.view_update_conversion_fee AS +SELECT "_prevFee" AS "previous_fee", + "_newFee" AS "new_fee", + contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM bancornetwork."BancorConverter_v0.10a_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.10b_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.11_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.13_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.14a_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.14b_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.19_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.20_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.23_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.9_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."LiquidityPoolV1Converter_v0.28_evt_ConversionFeeUpdate" + UNION ALL + SELECT * + FROM bancornetwork."LiquidityPoolV1Converter_v0.29_evt_ConversionFeeUpdate") s +; diff --git a/dune/abstractions/bancornetwork/view_update_price_data.sql b/dune/abstractions/bancornetwork/view_update_price_data.sql index 9afb05e..ce23b4a 100644 --- a/dune/abstractions/bancornetwork/view_update_price_data.sql +++ b/dune/abstractions/bancornetwork/view_update_price_data.sql @@ -1,30 +1,43 @@ -CREATE OR REPLACE VIEW bancornetwork.view_update_price_data AS SELECT - "_connectorToken" AS connector_token, - t.symbol AS token_symbol, "_tokenSupply" / 10 ^ 18 AS token_supply, - "_connectorBalance" / 10 ^ t.decimals AS connector_balance, - "_connectorWeight" AS reserve_ratio, s.contract_address, - evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM ( - SELECT *FROM bancornetwork - ."BancorConverter_v0.10a_evt_PriceDataUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.10b_evt_PriceDataUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.11_evt_PriceDataUpdate" UNION ALL SELECT *FROM - bancornetwork - ."BancorConverter_v0.13_evt_PriceDataUpdate" UNION ALL SELECT *FROM - bancornetwork - ."BancorConverter_v0.14a_evt_PriceDataUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.14b_evt_PriceDataUpdate" UNION ALL - SELECT *FROM bancornetwork - ."BancorConverter_v0.19_evt_PriceDataUpdate" UNION ALL SELECT *FROM - bancornetwork - ."BancorConverter_v0.20_evt_PriceDataUpdate" UNION ALL SELECT *FROM - bancornetwork - ."BancorConverter_v0.23_evt_PriceDataUpdate" UNION ALL SELECT *FROM - bancornetwork."BancorConverter_v0.9_evt_PriceDataUpdate") - s LEFT JOIN erc20.tokens t ON s."_connectorToken" - = t.contract_address; +CREATE OR REPLACE VIEW bancornetwork.view_update_price_data AS +SELECT "_connectorToken" AS connector_token, + t.symbol AS token_symbol, + "_tokenSupply" / 10^18 AS token_supply, + "_connectorBalance" / 10^t.decimals AS connector_balance, + "_connectorWeight" AS reserve_ratio, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM bancornetwork."BancorConverter_v0.10a_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.10b_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.11_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.13_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.14a_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.14b_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.19_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.20_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.23_evt_PriceDataUpdate" + UNION ALL + SELECT * + FROM bancornetwork."BancorConverter_v0.9_evt_PriceDataUpdate") s +LEFT JOIN erc20.tokens t ON s."_connectorToken" = t.contract_address +; ---PriceDataUpdate is deprecated since version 0.28 + +-- PriceDataUpdate is deprecated since version 0.28+ diff --git a/dune/abstractions/bancornetwork/view_update_token_rate.sql b/dune/abstractions/bancornetwork/view_update_token_rate.sql index cff5e22..251c27f 100644 --- a/dune/abstractions/bancornetwork/view_update_token_rate.sql +++ b/dune/abstractions/bancornetwork/view_update_token_rate.sql @@ -1,9 +1,15 @@ -CREATE OR REPLACE VIEW bancornetwork.view_update_token_rate AS SELECT - "_token1" AS source_token_address, - "_token2" AS target_token_address, "_rateN" AS rate_numerator, - "_rateD" AS rate_denominator, contract_address, evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT *FROM bancornetwork - ."LiquidityPoolV1Converter_v0.28_evt_TokenRateUpdate" UNION ALL - SELECT *FROM bancornetwork - ."LiquidityPoolV1Converter_v0.29_evt_TokenRateUpdate") s; +CREATE OR REPLACE VIEW bancornetwork.view_update_token_rate AS +SELECT "_token1" AS source_token_address, + "_token2" AS target_token_address, + "_rateN" AS rate_numerator, + "_rateD" AS rate_denominator, + contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM bancornetwork."LiquidityPoolV1Converter_v0.28_evt_TokenRateUpdate" + UNION ALL + SELECT * + FROM bancornetwork."LiquidityPoolV1Converter_v0.29_evt_TokenRateUpdate") s +; diff --git a/dune/abstractions/chainlink/view_aggregator_mappings.sql b/dune/abstractions/chainlink/view_aggregator_mappings.sql index f31d01b..33d733b 100644 --- a/dune/abstractions/chainlink/view_aggregator_mappings.sql +++ b/dune/abstractions/chainlink/view_aggregator_mappings.sql @@ -1,208 +1,105 @@ -CREATE OR REPLACE VIEW chainlink.view_aggregator_mappings (aggregator_address, - proxy_address) AS - VALUES ('\x05cf62c4ba0ccea3da680f9a8744ac51116d6231' ::bytea, - '\x77F9710E7d0A19669A13c055F62cd80d313dF022' ::bytea), - ('\x25fa978ea1a7dc9bdc33a2959b9053eae57169b5' ::bytea, - '\xb49f677943BC038e9857d61E7d053CaA2C1734C1' ::bytea), - ('\x02d5c618dbc591544b19d0bf13543c0728a3c4ec' ::bytea, - '\x449d117117838fFA61263B61dA6301AA2a88B13A' ::bytea), - ('\x151445852b0cfdf6a4cc81440f2af99176e8ad08' ::bytea, - '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5' ::bytea), - ('\xe1407bfaa6b5965bad1c9f38316a3b655a09d8a6' ::bytea, - '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3' ::bytea), - ('\x8946a183bfafa95becf57c5e08fe5b7654d2807b' ::bytea, - '\x379589227b15F1a12195D3f2d90bBc9F31f95235' ::bytea), - ('\xafce0c7b7fe3425adb3871eae5c0ec6d93e01935' ::bytea, - '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6' ::bytea), - ('\x16924ae9c2ac6cdbc9d6bb16fafcd38bed560936' ::bytea, - '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c' ::bytea), - ('\x3f6e09a4ec3811765f5b2ad15c0279910dbb2c04' ::bytea, - '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980' ::bytea), - ('\xd3ce735cdc708d9607cfbc6c3429861625132cb4' ::bytea, - '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699' ::bytea), - ('\xf79d6afbb6da890132f9d7c355e3015f15f3406f' ::bytea, - '\x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419' ::bytea), - ('\x80eeb41e2a86d4ae9903a3860dd643dad2d1a853' ::bytea, - '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5' ::bytea), - ('\x45e9fee61185e213c37fc14d18e44ef9262e10db' ::bytea, - '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc' ::bytea), - ('\x2408935efe60f092b442a8755f7572edb9cf971e' ::bytea, - '\x4aB81192BB75474Cf203B56c36D6a13623270A67' ::bytea), - ('\x353f61f39a17e56ca413f4559b8cd3b6a252ffc8' ::bytea, - '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01' ::bytea), - ('\xf5fff180082d6017036b771ba883025c654bc935' ::bytea, - '\xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c' ::bytea), - ('\x0821f21f21c325ae39557ca83b6b4df525495d06' ::bytea, - '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A' ::bytea), - ('\x28e0fd8e05c14034cba95c6bf3394d1b106f7ed8' ::bytea, - '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25' ::bytea), - ('\x52d674c76e91c50a0190de77da1fad67d859a569' ::bytea, - '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F' ::bytea), - ('\x570985649832b51786a181d57babe012be1c09a4' ::bytea, - '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12' ::bytea), - ('\xc6ee0d4943dc43bd462145aa6ac95e9c0c8b462f' ::bytea, - '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B' ::bytea), - ('\x32dbd3214ac75223e27e575c53944307914f7a90' ::bytea, - '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c' ::bytea), - ('\x740be5e8fe30bd2bf664822154b520eae0c565b0' ::bytea, - '\x10a43289895eAff840E8d45995BBa89f9115ECEe' ::bytea), - ('\x6a6527d91ddae0a259cc09dad311b3455cdc1fbd' ::bytea, - '\x9F0F69428F923D6c95B781F89E165C9b2df9789D' ::bytea), - ('\xe2c9aea66ed352c33f9c7d8e824b7cac206b0b72' ::bytea, - '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2' ::bytea), - ('\xd9d35a82d4dd43be7cfc524ebf5cd00c92c48ebc' ::bytea, - '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912' ::bytea), - ('\xd1e850d6afb6c27a3d66a223f6566f0426a6e13b' ::bytea, - '\xFA66458Cce7Dd15D8650015c4fce4D278271618F' ::bytea), - ('\xf11bf075f0b2b8d8442ab99c44362f1353d40b44' ::bytea, - '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55' ::bytea), - ('\x46bb139f23b01fef37cb95ae56274804bc3b3e86' ::bytea, - '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2' ::bytea), - ('\x7ae7781c7f3a5182596d161e037e6db8e36328ef' ::bytea, - '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87' ::bytea), - ('\x06a7689149cf04dacfde555d1e1ead7dd7370316' ::bytea, - '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6' ::bytea), - ('\xf320e19b2ed82f1b226b006cd43fe600fea56615' ::bytea, - '\x379589227b15F1a12195D3f2d90bBc9F31f95235' ::bytea), - ('\x8cde021f0bfa5f82610e8ce46493cf66ac04af53' ::bytea, - '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c' ::bytea), - ('\xf570deefff684d964dc3e15e1f9414283e3f7419' ::bytea, - '\xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c' ::bytea), - ('\x3a33c0efd0eb8fd38a6e1904df1e32f95f67616b' ::bytea, - '\x77F9710E7d0A19669A13c055F62cd80d313dF022' ::bytea), - ('\x8f71c9c583248a11cacbbc8fd0d5dfa483d3b109' ::bytea, - '\xb49f677943BC038e9857d61E7d053CaA2C1734C1' ::bytea), - ('\x744704c31a2e46ad60c7cdf0212933b4c4c2c9ec' ::bytea, - '\x9F0F69428F923D6c95B781F89E165C9b2df9789D' ::bytea), - ('\x7c9ca5adcba43d968d9e0ddca16293d66c07482d' ::bytea, - '\x10a43289895eAff840E8d45995BBa89f9115ECEe' ::bytea), - ('\x90888cddad598570c6edc443eee9aadb63cda3c4' ::bytea, - '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A' ::bytea), - ('\xf94800e6e36b0dc860f6f31e7cdf1086099e8c0e' ::bytea, - '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55' ::bytea), - ('\xd286af227b7b0695387e279b9956540818b1dc2a' ::bytea, - '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01' ::bytea), - ('\x0227fb846b48e209d56d79b0a3109fda561db821' ::bytea, - '\x4aB81192BB75474Cf203B56c36D6a13623270A67' ::bytea), - ('\xa811ff165b082c0507ce9a5a660fb3d7eeecb88a' ::bytea, - '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc' ::bytea), - ('\xc8db8d5869510bb1fcd3bd7c7624c1b49c652ef8' ::bytea, - '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699' ::bytea), - ('\x1fb0b88eaf51420c14b67256ab7dae1de6e116cb' ::bytea, - '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912' ::bytea), - ('\x41306eb5fc11a68c284c19ba3b9510c0252e0a34' ::bytea, - '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2' ::bytea), - ('\x3f2d1ff4930318b5a7c301e1bf7e703dcf6d83e3' ::bytea, - '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B' ::bytea), - ('\x38cb8642a0fc558918fced939450d689d0e5a7be' ::bytea, - '\xFA66458Cce7Dd15D8650015c4fce4D278271618F' ::bytea), - ('\x75ed2f61837c3d9ef1bf0af4db84664dc6fe56bc' ::bytea, - '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12' ::bytea), - ('\x4d35fe9c85233a8e00ae2d3c0d912a45bc781025' ::bytea, - '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25' ::bytea), - ('\x7391bb54a24719da7dd81c2e5176cf954d7f7635' ::bytea, - '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F' ::bytea), - ('\x150631a2e822d3ed7d46df9a270ce7134a16de89' ::bytea, - '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5' ::bytea), - ('\x25367741a23464b41b4ab978bd8092d56a3590c0' ::bytea, - '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87' ::bytea), - ('\xbc66d51898dd2efa3c214c87d4645c0478ccbc95' ::bytea, - '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2' ::bytea), - ('\x00c7a37b03690fb9f41b5c5af8131735c7275446' ::bytea, - '\x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419' ::bytea), - ('\xdf005cad29aac8b1170960807f99b62aaed1bb0a' ::bytea, - '\x449d117117838fFA61263B61dA6301AA2a88B13A' ::bytea), - ('\x87cfea02c8322653a7335c6f72be19ce54ecbfb5' ::bytea, - '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3' ::bytea), - ('\x3a6e27b663593e34a7fb80ba9544d9e8babdf001' ::bytea, - '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5' ::bytea), - ('\xc95b41df94f3890122b2bcef9005afde17773db2' ::bytea, - '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c' ::bytea), - ('\x4fa0655c09e0b5b2f50f1bd861b2d9bc63ccbbcb' ::bytea, - '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980' ::bytea), - ('\xf0f201fdb77a5ecd065cdbd69850f3f6694b2bef' ::bytea, - '\xb70ba475F1a6b5396e46d9b2a5f7081080Dc9d09' ::bytea), - ('\xf2d87e37ea1e54c7aa913d2447a5f69f61c114cf' ::bytea, - '\x547a514d5e3769680Ce22B2361c10Ea13619e8a9' ::bytea), - ('\x8640798469204dbbad5842f8688b152c510f7777' ::bytea, - '\x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734' ::bytea), - ('\x5b0e9ff11aae806067787d380967900551919c0d' ::bytea, - '\x553303d460EE0afB37EdFf9bE42922D8FF63220e' ::bytea), - ('\x2b89ec8b7d018ca574e844edff24c17c6bb3e3a1' ::bytea, - '\x1A31D42149e82Eb99777f903C08A2E41A00085d3' ::bytea), - ('\xaec0d77fdd6a2a34ec3eaf915260496ae27f9d25' ::bytea, - '\xA027702dbb89fbd58938e4324ac03B58d812b0E1' ::bytea), - ('\x2747254824f1731e016352e3267735fd9a6331c0' ::bytea, - '\xf3584F4dd3b467e73C2339EfD008665a70A4185c' ::bytea), - ('\x21cbd7098bf18f293fbf5451be2fc968eaa1e072' ::bytea, - '\x1ceDaaB50936881B3e449e47e40A2cDAF5576A4a' ::bytea), - ('\xbafe3cb0e563e914806a99d547bdbf2cfcf5fdf6' ::bytea, - '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699' ::bytea), - ('\x9d6acd34d481512586844fd65328bd358d306752' ::bytea, - '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5' ::bytea), - ('\x32dcb582ecd6193937bd33168e19173cfe10a140' ::bytea, - '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A' ::bytea), - ('\xf4ebc177fbbd15874c08cccbc3dd383ee1a24a9d' ::bytea, - '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c' ::bytea), - ('\xf6eeca2fd1ace8c17389b119de983e9fd9a8ee8f' ::bytea, - '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F' ::bytea), - ('\x7c8719f3683585a242a67c73f6f3c98362004da4' ::bytea, - '\x449d117117838fFA61263B61dA6301AA2a88B13A' ::bytea), - ('\x02f878a94a1ae1b15705acd65b5519a46fe3517e' ::bytea, - '\xb49f677943BC038e9857d61E7d053CaA2C1734C1' ::bytea), - ('\x01a1f73b1f4726eb6eb189ffa5cbb91af8e14025' ::bytea, - '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3' ::bytea), - ('\x568b8fd03992f56bf240958d22f5a6fcf7bd850b' ::bytea, - '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5' ::bytea), - ('\x7f7b323291c052de18926396176d384c4a8e19e2' ::bytea, - '\x77F9710E7d0A19669A13c055F62cd80d313dF022' ::bytea), - ('\xdeb43523e2857b7ec29d078c77b73709d958c62f' ::bytea, - '\x379589227b15F1a12195D3f2d90bBc9F31f95235' ::bytea), - ('\xea5f70faa03f5c30b96029635c8d431d1a3cd1b8' ::bytea, - '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6' ::bytea), - ('\xe4b36bbc01ead5a378d4cb088604bfe5ab2cefe3' ::bytea, - '\xA027702dbb89fbd58938e4324ac03B58d812b0E1' ::bytea), - ('\xc45ebd0f901ba6b2b8c7e70b717778f055ef5e6d' ::bytea, - '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A' ::bytea), - ('\xdd860a2ad1b6ebdf2b17d7d01d65a7be3926be84' ::bytea, - '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25' ::bytea), - ('\x3d0bb55d0d2f255d7a0eab8a53a91b3369728e36' ::bytea, - '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01' ::bytea), - ('\xbc60258f775683ea28048030806ad3a80c4a33ae' ::bytea, - '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc' ::bytea), - ('\x4d839a486ec0b1c9b0d9e9d397993ba5b150cb34' ::bytea, - '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12' ::bytea), - ('\xd054be48ae13a89a82744373f647a755df7cae17' ::bytea, - '\x9F0F69428F923D6c95B781F89E165C9b2df9789D' ::bytea), - ('\xea7c55976844396f3bd4c89f66988b8b5be5e96a' ::bytea, - '\x10a43289895eAff840E8d45995BBa89f9115ECEe' ::bytea), - ('\x56658e9312218923b4aeb3727304b6060ab69e8f' ::bytea, - '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5' ::bytea), - ('\x7002049fdca829ed7082efa03860b078ad4b5efe' ::bytea, - '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912' ::bytea), - ('\xfe3d09d8bad5da65e0160cf0cb53f6115fb6ea8b' ::bytea, - '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B' ::bytea), - ('\xf09828103d306f50af7e3132adb6def77c6d96f7' ::bytea, - '\xFA66458Cce7Dd15D8650015c4fce4D278271618F' ::bytea), - ('\x06ce8be8729b6ba18dd3416e3c223a5d4db5e755' ::bytea, - '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699' ::bytea), - ('\x0c7907d97b7f708ecda1a0b3124d32cd8b1e3920' ::bytea, - '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2' ::bytea), - ('\xbe4274dfb7801948e2cc2a913744e9498ddc8d20' ::bytea, - '\x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734' ::bytea), - ('\xd6947812a94e323608dcd4f84b835a586baf21eb' ::bytea, - '\x553303d460EE0afB37EdFf9bE42922D8FF63220e' ::bytea), - ('\xc8f8d8d5ab0f874f00d74b1ef448151631bc3473' ::bytea, - '\x547a514d5e3769680Ce22B2361c10Ea13619e8a9' ::bytea), - ('\xb4dd24b6b98ea9c18e2196e166f17b15f77b0a07' ::bytea, - '\x1A31D42149e82Eb99777f903C08A2E41A00085d3' ::bytea), - ('\xbc3c868763b7c15d0ce527af455041919e9c07b1' ::bytea, - '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55' ::bytea), - ('\xb3bcb06bbf2413d88c46cabf40e4ba54e1189c86' ::bytea, - '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2' ::bytea), - ('\x04cde3a52a72c2d56923c94242bfc15a8d9d9e36' ::bytea, - '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87' ::bytea), - ('\x5306b60fe2598d268732ffe1fa37065931de127c' ::bytea, - '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c' ::bytea), - ('\x40c0bc7bfb90a29426121ba133a9352b84c5f2cf' ::bytea, - '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980' ::bytea); +CREATE OR REPLACE VIEW chainlink.view_aggregator_mappings (aggregator_address, proxy_address) AS VALUES +('\x05cf62c4ba0ccea3da680f9a8744ac51116d6231'::bytea, '\x77F9710E7d0A19669A13c055F62cd80d313dF022'::bytea), +('\x25fa978ea1a7dc9bdc33a2959b9053eae57169b5'::bytea, '\xb49f677943BC038e9857d61E7d053CaA2C1734C1'::bytea), +('\x02d5c618dbc591544b19d0bf13543c0728a3c4ec'::bytea, '\x449d117117838fFA61263B61dA6301AA2a88B13A'::bytea), +('\x151445852b0cfdf6a4cc81440f2af99176e8ad08'::bytea, '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5'::bytea), +('\xe1407bfaa6b5965bad1c9f38316a3b655a09d8a6'::bytea, '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3'::bytea), +('\x8946a183bfafa95becf57c5e08fe5b7654d2807b'::bytea, '\x379589227b15F1a12195D3f2d90bBc9F31f95235'::bytea), +('\xafce0c7b7fe3425adb3871eae5c0ec6d93e01935'::bytea, '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6'::bytea), +('\x16924ae9c2ac6cdbc9d6bb16fafcd38bed560936'::bytea, '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c'::bytea), +('\x3f6e09a4ec3811765f5b2ad15c0279910dbb2c04'::bytea, '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980'::bytea), +('\xd3ce735cdc708d9607cfbc6c3429861625132cb4'::bytea, '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699'::bytea), +('\xf79d6afbb6da890132f9d7c355e3015f15f3406f'::bytea, '\x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419'::bytea), +('\x80eeb41e2a86d4ae9903a3860dd643dad2d1a853'::bytea, '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5'::bytea), +('\x45e9fee61185e213c37fc14d18e44ef9262e10db'::bytea, '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc'::bytea), +('\x2408935efe60f092b442a8755f7572edb9cf971e'::bytea, '\x4aB81192BB75474Cf203B56c36D6a13623270A67'::bytea), +('\x353f61f39a17e56ca413f4559b8cd3b6a252ffc8'::bytea, '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01'::bytea), +('\xf5fff180082d6017036b771ba883025c654bc935'::bytea, '\xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c'::bytea), +('\x0821f21f21c325ae39557ca83b6b4df525495d06'::bytea, '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A'::bytea), +('\x28e0fd8e05c14034cba95c6bf3394d1b106f7ed8'::bytea, '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25'::bytea), +('\x52d674c76e91c50a0190de77da1fad67d859a569'::bytea, '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F'::bytea), +('\x570985649832b51786a181d57babe012be1c09a4'::bytea, '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12'::bytea), +('\xc6ee0d4943dc43bd462145aa6ac95e9c0c8b462f'::bytea, '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B'::bytea), +('\x32dbd3214ac75223e27e575c53944307914f7a90'::bytea, '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c'::bytea), +('\x740be5e8fe30bd2bf664822154b520eae0c565b0'::bytea, '\x10a43289895eAff840E8d45995BBa89f9115ECEe'::bytea), +('\x6a6527d91ddae0a259cc09dad311b3455cdc1fbd'::bytea, '\x9F0F69428F923D6c95B781F89E165C9b2df9789D'::bytea), +('\xe2c9aea66ed352c33f9c7d8e824b7cac206b0b72'::bytea, '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2'::bytea), +('\xd9d35a82d4dd43be7cfc524ebf5cd00c92c48ebc'::bytea, '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912'::bytea), +('\xd1e850d6afb6c27a3d66a223f6566f0426a6e13b'::bytea, '\xFA66458Cce7Dd15D8650015c4fce4D278271618F'::bytea), +('\xf11bf075f0b2b8d8442ab99c44362f1353d40b44'::bytea, '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55'::bytea), +('\x46bb139f23b01fef37cb95ae56274804bc3b3e86'::bytea, '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2'::bytea), +('\x7ae7781c7f3a5182596d161e037e6db8e36328ef'::bytea, '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87'::bytea), +('\x06a7689149cf04dacfde555d1e1ead7dd7370316'::bytea, '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6'::bytea), +('\xf320e19b2ed82f1b226b006cd43fe600fea56615'::bytea, '\x379589227b15F1a12195D3f2d90bBc9F31f95235'::bytea), +('\x8cde021f0bfa5f82610e8ce46493cf66ac04af53'::bytea, '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c'::bytea), +('\xf570deefff684d964dc3e15e1f9414283e3f7419'::bytea, '\xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c'::bytea), +('\x3a33c0efd0eb8fd38a6e1904df1e32f95f67616b'::bytea, '\x77F9710E7d0A19669A13c055F62cd80d313dF022'::bytea), +('\x8f71c9c583248a11cacbbc8fd0d5dfa483d3b109'::bytea, '\xb49f677943BC038e9857d61E7d053CaA2C1734C1'::bytea), +('\x744704c31a2e46ad60c7cdf0212933b4c4c2c9ec'::bytea, '\x9F0F69428F923D6c95B781F89E165C9b2df9789D'::bytea), +('\x7c9ca5adcba43d968d9e0ddca16293d66c07482d'::bytea, '\x10a43289895eAff840E8d45995BBa89f9115ECEe'::bytea), +('\x90888cddad598570c6edc443eee9aadb63cda3c4'::bytea, '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A'::bytea), +('\xf94800e6e36b0dc860f6f31e7cdf1086099e8c0e'::bytea, '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55'::bytea), +('\xd286af227b7b0695387e279b9956540818b1dc2a'::bytea, '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01'::bytea), +('\x0227fb846b48e209d56d79b0a3109fda561db821'::bytea, '\x4aB81192BB75474Cf203B56c36D6a13623270A67'::bytea), +('\xa811ff165b082c0507ce9a5a660fb3d7eeecb88a'::bytea, '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc'::bytea), +('\xc8db8d5869510bb1fcd3bd7c7624c1b49c652ef8'::bytea, '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699'::bytea), +('\x1fb0b88eaf51420c14b67256ab7dae1de6e116cb'::bytea, '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912'::bytea), +('\x41306eb5fc11a68c284c19ba3b9510c0252e0a34'::bytea, '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2'::bytea), +('\x3f2d1ff4930318b5a7c301e1bf7e703dcf6d83e3'::bytea, '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B'::bytea), +('\x38cb8642a0fc558918fced939450d689d0e5a7be'::bytea, '\xFA66458Cce7Dd15D8650015c4fce4D278271618F'::bytea), +('\x75ed2f61837c3d9ef1bf0af4db84664dc6fe56bc'::bytea, '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12'::bytea), +('\x4d35fe9c85233a8e00ae2d3c0d912a45bc781025'::bytea, '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25'::bytea), +('\x7391bb54a24719da7dd81c2e5176cf954d7f7635'::bytea, '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F'::bytea), +('\x150631a2e822d3ed7d46df9a270ce7134a16de89'::bytea, '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5'::bytea), +('\x25367741a23464b41b4ab978bd8092d56a3590c0'::bytea, '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87'::bytea), +('\xbc66d51898dd2efa3c214c87d4645c0478ccbc95'::bytea, '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2'::bytea), +('\x00c7a37b03690fb9f41b5c5af8131735c7275446'::bytea, '\x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419'::bytea), +('\xdf005cad29aac8b1170960807f99b62aaed1bb0a'::bytea, '\x449d117117838fFA61263B61dA6301AA2a88B13A'::bytea), +('\x87cfea02c8322653a7335c6f72be19ce54ecbfb5'::bytea, '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3'::bytea), +('\x3a6e27b663593e34a7fb80ba9544d9e8babdf001'::bytea, '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5'::bytea), +('\xc95b41df94f3890122b2bcef9005afde17773db2'::bytea, '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c'::bytea), +('\x4fa0655c09e0b5b2f50f1bd861b2d9bc63ccbbcb'::bytea, '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980'::bytea), +('\xf0f201fdb77a5ecd065cdbd69850f3f6694b2bef'::bytea, '\xb70ba475F1a6b5396e46d9b2a5f7081080Dc9d09'::bytea), +('\xf2d87e37ea1e54c7aa913d2447a5f69f61c114cf'::bytea, '\x547a514d5e3769680Ce22B2361c10Ea13619e8a9'::bytea), +('\x8640798469204dbbad5842f8688b152c510f7777'::bytea, '\x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734'::bytea), +('\x5b0e9ff11aae806067787d380967900551919c0d'::bytea, '\x553303d460EE0afB37EdFf9bE42922D8FF63220e'::bytea), +('\x2b89ec8b7d018ca574e844edff24c17c6bb3e3a1'::bytea, '\x1A31D42149e82Eb99777f903C08A2E41A00085d3'::bytea), +('\xaec0d77fdd6a2a34ec3eaf915260496ae27f9d25'::bytea, '\xA027702dbb89fbd58938e4324ac03B58d812b0E1'::bytea), +('\x2747254824f1731e016352e3267735fd9a6331c0'::bytea, '\xf3584F4dd3b467e73C2339EfD008665a70A4185c'::bytea), +('\x21cbd7098bf18f293fbf5451be2fc968eaa1e072'::bytea, '\x1ceDaaB50936881B3e449e47e40A2cDAF5576A4a'::bytea), +('\xbafe3cb0e563e914806a99d547bdbf2cfcf5fdf6'::bytea, '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699'::bytea), +('\x9d6acd34d481512586844fd65328bd358d306752'::bytea, '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5'::bytea), +('\x32dcb582ecd6193937bd33168e19173cfe10a140'::bytea, '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A'::bytea), +('\xf4ebc177fbbd15874c08cccbc3dd383ee1a24a9d'::bytea, '\x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c'::bytea), +('\xf6eeca2fd1ace8c17389b119de983e9fd9a8ee8f'::bytea, '\x5239a625dEb44bF3EeAc2CD5366ba24b8e9DB63F'::bytea), +('\x7c8719f3683585a242a67c73f6f3c98362004da4'::bytea, '\x449d117117838fFA61263B61dA6301AA2a88B13A'::bytea), +('\x02f878a94a1ae1b15705acd65b5519a46fe3517e'::bytea, '\xb49f677943BC038e9857d61E7d053CaA2C1734C1'::bytea), +('\x01a1f73b1f4726eb6eb189ffa5cbb91af8e14025'::bytea, '\xBcE206caE7f0ec07b545EddE332A47C2F75bbeb3'::bytea), +('\x568b8fd03992f56bf240958d22f5a6fcf7bd850b'::bytea, '\x5c0Ab2d9b5a7ed9f470386e82BB36A3613cDd4b5'::bytea), +('\x7f7b323291c052de18926396176d384c4a8e19e2'::bytea, '\x77F9710E7d0A19669A13c055F62cd80d313dF022'::bytea), +('\xdeb43523e2857b7ec29d078c77b73709d958c62f'::bytea, '\x379589227b15F1a12195D3f2d90bBc9F31f95235'::bytea), +('\xea5f70faa03f5c30b96029635c8d431d1a3cd1b8'::bytea, '\x214eD9Da11D2fbe465a6fc601a91E62EbEc1a0D6'::bytea), +('\xe4b36bbc01ead5a378d4cb088604bfe5ab2cefe3'::bytea, '\xA027702dbb89fbd58938e4324ac03B58d812b0E1'::bytea), +('\xc45ebd0f901ba6b2b8c7e70b717778f055ef5e6d'::bytea, '\x14e613AC84a31f709eadbdF89C6CC390fDc9540A'::bytea), +('\xdd860a2ad1b6ebdf2b17d7d01d65a7be3926be84'::bytea, '\xacD0D1A29759CC01E8D925371B72cb2b5610EA25'::bytea), +('\x3d0bb55d0d2f255d7a0eab8a53a91b3369728e36'::bytea, '\x0f59666EDE214281e956cb3b2D0d69415AfF4A01'::bytea), +('\xbc60258f775683ea28048030806ad3a80c4a33ae'::bytea, '\xf8fF43E991A81e6eC886a3D281A2C6cC19aE70Fc'::bytea), +('\x4d839a486ec0b1c9b0d9e9d397993ba5b150cb34'::bytea, '\xCed2660c6Dd1Ffd856A5A82C67f3482d88C50b12'::bytea), +('\xd054be48ae13a89a82744373f647a755df7cae17'::bytea, '\x9F0F69428F923D6c95B781F89E165C9b2df9789D'::bytea), +('\xea7c55976844396f3bd4c89f66988b8b5be5e96a'::bytea, '\x10a43289895eAff840E8d45995BBa89f9115ECEe'::bytea), +('\x56658e9312218923b4aeb3727304b6060ab69e8f'::bytea, '\xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5'::bytea), +('\x7002049fdca829ed7082efa03860b078ad4b5efe'::bytea, '\xFb0cADFEa136E9E343cfb55B863a6Df8348ab912'::bytea), +('\xfe3d09d8bad5da65e0160cf0cb53f6115fb6ea8b'::bytea, '\x6AF09DF7563C363B5763b9102712EbeD3b9e859B'::bytea), +('\xf09828103d306f50af7e3132adb6def77c6d96f7'::bytea, '\xFA66458Cce7Dd15D8650015c4fce4D278271618F'::bytea), +('\x06ce8be8729b6ba18dd3416e3c223a5d4db5e755'::bytea, '\xDC3EA94CD0AC27d9A86C180091e7f78C683d3699'::bytea), +('\x0c7907d97b7f708ecda1a0b3124d32cd8b1e3920'::bytea, '\xaEA2808407B7319A31A383B6F8B60f04BCa23cE2'::bytea), +('\xbe4274dfb7801948e2cc2a913744e9498ddc8d20'::bytea, '\x1C07AFb8E2B827c5A4739C6d59Ae3A5035f28734'::bytea), +('\xd6947812a94e323608dcd4f84b835a586baf21eb'::bytea, '\x553303d460EE0afB37EdFf9bE42922D8FF63220e'::bytea), +('\xc8f8d8d5ab0f874f00d74b1ef448151631bc3473'::bytea, '\x547a514d5e3769680Ce22B2361c10Ea13619e8a9'::bytea), +('\xb4dd24b6b98ea9c18e2196e166f17b15f77b0a07'::bytea, '\x1A31D42149e82Eb99777f903C08A2E41A00085d3'::bytea), +('\xbc3c868763b7c15d0ce527af455041919e9c07b1'::bytea, '\xAE48c91dF1fE419994FFDa27da09D5aC69c30f55'::bytea), +('\xb3bcb06bbf2413d88c46cabf40e4ba54e1189c86'::bytea, '\x283D433435cFCAbf00263beEF6A362b7cc5ed9f2'::bytea), +('\x04cde3a52a72c2d56923c94242bfc15a8d9d9e36'::bytea, '\xa8E875F94138B0C5b51d1e1d5dE35bbDdd28EA87'::bytea), +('\x5306b60fe2598d268732ffe1fa37065931de127c'::bytea, '\xE23FA0e8dd05D6f66a6e8c98cab2d9AE82A7550c'::bytea), +('\x40c0bc7bfb90a29426121ba133a9352b84c5f2cf'::bytea, '\x5c4939a2ab3A2a9f93A518d81d4f8D0Bc6a68980'::bytea) +; diff --git a/dune/abstractions/compound/view_accrue_interest.sql b/dune/abstractions/compound/view_accrue_interest.sql index ef0c56b..633d724 100644 --- a/dune/abstractions/compound/view_accrue_interest.sql +++ b/dune/abstractions/compound/view_accrue_interest.sql @@ -1,33 +1,27 @@ -CREATE OR REPLACE VIEW compound.view_accrue_interest - AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - "interestAccumulated" / 10 ^ t.decimals AS interest_accumulated, - "interestAccumulated" / 10 - ^ t.decimals *p.price AS interest_accumulated_usd, - "totalBorrows" / 10 ^ t.decimals AS total_borrows, - "totalBorrows" / 10 ^ t.decimals *p.price AS total_borrows_usd, - "borrowIndex" AS borrow_index, - c."underlying_token_address" AS token_address, evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT "interestAccumulated", "borrowIndex", "totalBorrows", - contract_address, evt_tx_hash, - evt_block_time FROM - compound_v2."cErc20_evt_AccrueInterest" UNION SELECT - "interestAccumulated", - "borrowIndex", "totalBorrows", contract_address, evt_tx_hash, - evt_block_time FROM - compound_v2."cEther_evt_AccrueInterest" UNION SELECT - "interestAccumulated", - "borrowIndex", "totalBorrows", contract_address, evt_tx_hash, - evt_block_time FROM - compound_v2."CErc20Delegator_evt_AccrueInterest") events LEFT - JOIN compound.view_ctokens c ON events - .contract_address = c.contract_address LEFT JOIN erc20.tokens t ON - c.underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - evt_block_time) - AND - p.contract_address = c.underlying_token_address; +CREATE OR REPLACE VIEW compound.view_accrue_interest AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + "interestAccumulated"/10^t.decimals AS interest_accumulated, + "interestAccumulated"/10^t.decimals*p.price AS interest_accumulated_usd, + "totalBorrows"/10^t.decimals AS total_borrows, + "totalBorrows"/10^t.decimals*p.price AS total_borrows_usd, + "borrowIndex" AS borrow_index, + c."underlying_token_address" AS token_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT "interestAccumulated", "borrowIndex", "totalBorrows", contract_address, evt_tx_hash, evt_block_time + FROM compound_v2."cErc20_evt_AccrueInterest" + UNION + SELECT "interestAccumulated", "borrowIndex", "totalBorrows", contract_address, evt_tx_hash, evt_block_time + FROM compound_v2."cEther_evt_AccrueInterest" + UNION + SELECT "interestAccumulated", "borrowIndex", "totalBorrows", contract_address, evt_tx_hash, evt_block_time + FROM compound_v2."CErc20Delegator_evt_AccrueInterest") events +LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address +LEFT JOIN erc20.tokens t ON c.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', evt_block_time) + AND p.contract_address = c.underlying_token_address +; diff --git a/dune/abstractions/compound/view_borrow.sql b/dune/abstractions/compound/view_borrow.sql index a7154bc..96c5524 100644 --- a/dune/abstractions/compound/view_borrow.sql +++ b/dune/abstractions/compound/view_borrow.sql @@ -1,24 +1,27 @@ -CREATE OR REPLACE VIEW compound.view_borrow AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - "borrowAmount" / 10 ^ t.decimals AS borrow_amount, - "borrowAmount" / 10 ^ t.decimals *p.price AS borrow_amount_usd, borrower, - "accountBorrows" / 10 ^ t.decimals AS account_borrows, - "totalBorrows" / 10 ^ t.decimals AS total_borrows, - "totalBorrows" / 10 ^ t.decimals *p.price AS total_borrows_usd, - events.contract_address AS ctoken, - c."underlying_token_address" AS underlying_token, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM ( - SELECT *FROM - compound_v2."cErc20_evt_Borrow" UNION SELECT *FROM - compound_v2."cEther_evt_Borrow" UNION SELECT *FROM - compound_v2."CErc20Delegator_evt_Borrow") events LEFT JOIN - compound.view_ctokens c ON events - .contract_address = c.contract_address LEFT JOIN erc20.tokens t ON - c.underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - evt_block_time) - AND - p.contract_address = c.underlying_token_address; +CREATE OR REPLACE VIEW compound.view_borrow AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + "borrowAmount"/10^t.decimals AS borrow_amount, + "borrowAmount"/10^t.decimals*p.price AS borrow_amount_usd, + borrower, + "accountBorrows"/10^t.decimals AS account_borrows, + "totalBorrows"/10^t.decimals AS total_borrows, + "totalBorrows"/10^t.decimals*p.price AS total_borrows_usd, + events.contract_address AS ctoken, + c."underlying_token_address" AS underlying_token, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM compound_v2."cErc20_evt_Borrow" + UNION SELECT * + FROM compound_v2."cEther_evt_Borrow" + UNION SELECT * + FROM compound_v2."CErc20Delegator_evt_Borrow") events +LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address +LEFT JOIN erc20.tokens t ON c.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', evt_block_time) + AND p.contract_address = c.underlying_token_address +; diff --git a/dune/abstractions/compound/view_ctokens.sql b/dune/abstractions/compound/view_ctokens.sql index b420d9b..220878a 100644 --- a/dune/abstractions/compound/view_ctokens.sql +++ b/dune/abstractions/compound/view_ctokens.sql @@ -1,26 +1,14 @@ -CREATE OR REPLACE VIEW compound.view_ctokens (symbol, contract_address, - decimals, - underlying_token_address) AS - VALUES ('cBAT' ::text, - '\x6c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e' ::bytea, 8 ::numeric, - '\x0d8775f648430679a709e98d2b0cb6250d2887ef' ::bytea), - ('cCOMP' ::text, '\x70e36f6bf80a52b3b46b3af8e106cc0ed743e8e4' ::bytea, - 8 ::numeric, '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('cSAI' ::text, '\xf5dce57282a584d2746faf1593d3121fcac444dc' ::bytea, - 8 ::numeric, '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359' ::bytea), - ('cETH' ::text, '\x4ddc2d193948926d02f9b1fe9e1daa0718270ed5' ::bytea, - 8 ::numeric, '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ::bytea), - ('cREP' ::text, '\x158079ee67fce2f58472a96584a73c7ab9ac95c1' ::bytea, - 8 ::numeric, '\x1985365e9f78359a9B6AD760e32412f4a445E862' ::bytea), - ('cUNI' ::text, '\x35a18000230da775cac24873d00ff85bccded550' ::bytea, - 8 ::numeric, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('cUSDC' ::text, '\x39aa39c021dfbae8fac545936693ac917d5e7563' ::bytea, - 8 ::numeric, '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' ::bytea), - ('cWBTC' ::text, '\xc11b1268c1a384e55c48c2391d8d480264a3a7f4' ::bytea, - 8 ::numeric, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' ::bytea), - ('cZRX' ::text, '\xb3319f5d18bc0d84dd1b4825dcde5d5f7266d407' ::bytea, - 8 ::numeric, '\xe41d2489571d322189246dafa5ebde1f4699f498' ::bytea), - ('cUSDT' ::text, '\xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9' ::bytea, - 8 ::numeric, '\xdac17f958d2ee523a2206206994597c13d831ec7' ::bytea), - ('cDAI' ::text, '\x5d3a536e4d6dbd6114cc1ead35777bab948e3643' ::bytea, - 8 ::numeric, '\x6b175474e89094c44da98b954eedeac495271d0f' ::bytea); +CREATE OR REPLACE VIEW compound.view_ctokens (symbol, contract_address, decimals, underlying_token_address) AS VALUES + ('cBAT'::text, '\x6c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e'::bytea, 8::numeric, '\x0d8775f648430679a709e98d2b0cb6250d2887ef'::bytea), + ('cCOMP'::text, '\x70e36f6bf80a52b3b46b3af8e106cc0ed743e8e4'::bytea, 8::numeric, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), + ('cSAI'::text, '\xf5dce57282a584d2746faf1593d3121fcac444dc'::bytea, 8::numeric, '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359'::bytea), + ('cETH'::text, '\x4ddc2d193948926d02f9b1fe9e1daa0718270ed5'::bytea, 8::numeric, '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'::bytea), + ('cREP'::text, '\x158079ee67fce2f58472a96584a73c7ab9ac95c1'::bytea, 8::numeric, '\x1985365e9f78359a9B6AD760e32412f4a445E862'::bytea), + ('cUNI'::text, '\x35a18000230da775cac24873d00ff85bccded550'::bytea, 8::numeric, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), + ('cUSDC'::text, '\x39aa39c021dfbae8fac545936693ac917d5e7563'::bytea, 8::numeric, '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'::bytea), + ('cWBTC'::text, '\xc11b1268c1a384e55c48c2391d8d480264a3a7f4'::bytea, 8::numeric, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599'::bytea), + ('cWBTC2'::text, '\xccF4429DB6322D5C611ee964527D42E5d685DD6a'::bytea, 8::numeric, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599'::bytea), + ('cZRX'::text, '\xb3319f5d18bc0d84dd1b4825dcde5d5f7266d407'::bytea, 8::numeric, '\xe41d2489571d322189246dafa5ebde1f4699f498'::bytea), + ('cUSDT'::text, '\xf650C3d88D12dB855b8bf7D11Be6C55A4e07dCC9'::bytea, 8::numeric, '\xdac17f958d2ee523a2206206994597c13d831ec7'::bytea), + ('cDAI'::text, '\x5d3a536e4d6dbd6114cc1ead35777bab948e3643'::bytea, 8::numeric, '\x6b175474e89094c44da98b954eedeac495271d0f'::bytea) +; diff --git a/dune/abstractions/compound/view_liquidate_borrow.sql b/dune/abstractions/compound/view_liquidate_borrow.sql index 3132be6..8eb8d5c 100644 --- a/dune/abstractions/compound/view_liquidate_borrow.sql +++ b/dune/abstractions/compound/view_liquidate_borrow.sql @@ -1,85 +1,82 @@ -CREATE OR REPLACE VIEW compound.view_liquidate_borrow - AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - repay."repayAmount" ::double precision - / (10 ::double precision - ^ t.decimals::double precision) AS repay_amount, - repay."repayAmount" ::double precision - / (10 ::double precision ^ t.decimals::double precision) - * p.price AS repay_amount_usd, - c.symbol AS ctoken_symbol, - events."seizeTokens" / (10 ::numeric ^ c.decimals) AS seize_ctokens, - events.liquidator, events.borrower, - c_repay.underlying_token_address AS underlying_token, - events.evt_tx_hash AS tx_hash, - repay - .evt_block_time AS block_time - FROM (SELECT "cErc20_evt_LiquidateBorrow".liquidator, - "cErc20_evt_LiquidateBorrow".borrower, - "cErc20_evt_LiquidateBorrow"."repayAmount", - "cErc20_evt_LiquidateBorrow"."cTokenCollateral", - "cErc20_evt_LiquidateBorrow"."seizeTokens", - "cErc20_evt_LiquidateBorrow".contract_address, - "cErc20_evt_LiquidateBorrow".evt_tx_hash, - "cErc20_evt_LiquidateBorrow".evt_block_time FROM compound_v2 - ."cErc20_evt_LiquidateBorrow" UNION SELECT - "cEther_evt_LiquidateBorrow".liquidator, - "cEther_evt_LiquidateBorrow".borrower, - "cEther_evt_LiquidateBorrow"."repayAmount", - "cEther_evt_LiquidateBorrow"."cTokenCollateral", - "cEther_evt_LiquidateBorrow"."seizeTokens", - "cEther_evt_LiquidateBorrow".contract_address, - "cEther_evt_LiquidateBorrow".evt_tx_hash, - "cEther_evt_LiquidateBorrow".evt_block_time FROM compound_v2 - ."cEther_evt_LiquidateBorrow" UNION SELECT - "CErc20Delegator_evt_LiquidateBorrow".liquidator, - "CErc20Delegator_evt_LiquidateBorrow".borrower, - "CErc20Delegator_evt_LiquidateBorrow"."repayAmount", - "CErc20Delegator_evt_LiquidateBorrow"."cTokenCollateral", - "CErc20Delegator_evt_LiquidateBorrow"."seizeTokens", - "CErc20Delegator_evt_LiquidateBorrow".contract_address, - "CErc20Delegator_evt_LiquidateBorrow".evt_tx_hash, - "CErc20Delegator_evt_LiquidateBorrow".evt_block_time FROM - compound_v2."CErc20Delegator_evt_LiquidateBorrow") events LEFT - JOIN (SELECT "cErc20_evt_RepayBorrow".payer, - "cErc20_evt_RepayBorrow".borrower, - "cErc20_evt_RepayBorrow"."repayAmount", - "cErc20_evt_RepayBorrow"."accountBorrows", - "cErc20_evt_RepayBorrow"."totalBorrows", - "cErc20_evt_RepayBorrow".contract_address, - "cErc20_evt_RepayBorrow".evt_tx_hash, - "cErc20_evt_RepayBorrow".evt_block_time FROM compound_v2 - ."cErc20_evt_RepayBorrow" UNION SELECT - "cEther_evt_RepayBorrow".payer, - "cEther_evt_RepayBorrow".borrower, - "cEther_evt_RepayBorrow"."repayAmount", - "cEther_evt_RepayBorrow"."accountBorrows", - "cEther_evt_RepayBorrow"."totalBorrows", - "cEther_evt_RepayBorrow".contract_address, - "cEther_evt_RepayBorrow".evt_tx_hash, - "cEther_evt_RepayBorrow".evt_block_time FROM compound_v2 - ."cEther_evt_RepayBorrow" UNION SELECT - "CErc20Delegator_evt_RepayBorrow".payer, - "CErc20Delegator_evt_RepayBorrow".borrower, - "CErc20Delegator_evt_RepayBorrow"."repayAmount", - "CErc20Delegator_evt_RepayBorrow"."accountBorrows", - "CErc20Delegator_evt_RepayBorrow"."totalBorrows", - "CErc20Delegator_evt_RepayBorrow".contract_address, - "CErc20Delegator_evt_RepayBorrow".evt_tx_hash, - "CErc20Delegator_evt_RepayBorrow".evt_block_time FROM - compound_v2."CErc20Delegator_evt_RepayBorrow") repay ON events - .evt_tx_hash = repay.evt_tx_hash LEFT JOIN compound - .view_ctokens c ON events."cTokenCollateral" - = c.contract_address LEFT JOIN compound.view_ctokens c_repay ON repay - .contract_address = c_repay.contract_address LEFT JOIN erc20 - .tokens t ON c_repay - .underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - events - .evt_block_time) - AND - p.contract_address = c_repay - .underlying_token_address; +CREATE OR REPLACE VIEW compound.view_liquidate_borrow AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + repay."repayAmount"::double precision / (10::double precision ^ t.decimals::double precision) AS repay_amount, + repay."repayAmount"::double precision / (10::double precision ^ t.decimals::double precision) * p.price AS repay_amount_usd, + c.symbol AS ctoken_symbol, + events."seizeTokens" / (10::numeric ^ c.decimals) AS seize_ctokens, + events.liquidator, + events.borrower, + c_repay.underlying_token_address AS underlying_token, + events.evt_tx_hash AS tx_hash, + repay.evt_block_time AS block_time +FROM ( + SELECT "cErc20_evt_LiquidateBorrow".liquidator, + "cErc20_evt_LiquidateBorrow".borrower, + "cErc20_evt_LiquidateBorrow"."repayAmount", + "cErc20_evt_LiquidateBorrow"."cTokenCollateral", + "cErc20_evt_LiquidateBorrow"."seizeTokens", + "cErc20_evt_LiquidateBorrow".contract_address, + "cErc20_evt_LiquidateBorrow".evt_tx_hash, + "cErc20_evt_LiquidateBorrow".evt_block_time + FROM compound_v2."cErc20_evt_LiquidateBorrow" + UNION + SELECT "cEther_evt_LiquidateBorrow".liquidator, + "cEther_evt_LiquidateBorrow".borrower, + "cEther_evt_LiquidateBorrow"."repayAmount", + "cEther_evt_LiquidateBorrow"."cTokenCollateral", + "cEther_evt_LiquidateBorrow"."seizeTokens", + "cEther_evt_LiquidateBorrow".contract_address, + "cEther_evt_LiquidateBorrow".evt_tx_hash, + "cEther_evt_LiquidateBorrow".evt_block_time + FROM compound_v2."cEther_evt_LiquidateBorrow" + UNION + SELECT "CErc20Delegator_evt_LiquidateBorrow".liquidator, + "CErc20Delegator_evt_LiquidateBorrow".borrower, + "CErc20Delegator_evt_LiquidateBorrow"."repayAmount", + "CErc20Delegator_evt_LiquidateBorrow"."cTokenCollateral", + "CErc20Delegator_evt_LiquidateBorrow"."seizeTokens", + "CErc20Delegator_evt_LiquidateBorrow".contract_address, + "CErc20Delegator_evt_LiquidateBorrow".evt_tx_hash, + "CErc20Delegator_evt_LiquidateBorrow".evt_block_time + FROM compound_v2."CErc20Delegator_evt_LiquidateBorrow" +) events +LEFT JOIN ( + SELECT "cErc20_evt_RepayBorrow".payer, + "cErc20_evt_RepayBorrow".borrower, + "cErc20_evt_RepayBorrow"."repayAmount", + "cErc20_evt_RepayBorrow"."accountBorrows", + "cErc20_evt_RepayBorrow"."totalBorrows", + "cErc20_evt_RepayBorrow".contract_address, + "cErc20_evt_RepayBorrow".evt_tx_hash, + "cErc20_evt_RepayBorrow".evt_block_time + FROM compound_v2."cErc20_evt_RepayBorrow" + UNION + SELECT "cEther_evt_RepayBorrow".payer, + "cEther_evt_RepayBorrow".borrower, + "cEther_evt_RepayBorrow"."repayAmount", + "cEther_evt_RepayBorrow"."accountBorrows", + "cEther_evt_RepayBorrow"."totalBorrows", + "cEther_evt_RepayBorrow".contract_address, + "cEther_evt_RepayBorrow".evt_tx_hash, + "cEther_evt_RepayBorrow".evt_block_time + FROM compound_v2."cEther_evt_RepayBorrow" + UNION + SELECT "CErc20Delegator_evt_RepayBorrow".payer, + "CErc20Delegator_evt_RepayBorrow".borrower, + "CErc20Delegator_evt_RepayBorrow"."repayAmount", + "CErc20Delegator_evt_RepayBorrow"."accountBorrows", + "CErc20Delegator_evt_RepayBorrow"."totalBorrows", + "CErc20Delegator_evt_RepayBorrow".contract_address, + "CErc20Delegator_evt_RepayBorrow".evt_tx_hash, + "CErc20Delegator_evt_RepayBorrow".evt_block_time + FROM compound_v2."CErc20Delegator_evt_RepayBorrow" +) repay ON events.evt_tx_hash = repay.evt_tx_hash +LEFT JOIN compound.view_ctokens c ON events."cTokenCollateral" = c.contract_address +LEFT JOIN compound.view_ctokens c_repay ON repay.contract_address = c_repay.contract_address +LEFT JOIN erc20.tokens t ON c_repay.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', events.evt_block_time) +AND p.contract_address = c_repay.underlying_token_address +; diff --git a/dune/abstractions/compound/view_mint.sql b/dune/abstractions/compound/view_mint.sql index fa78f03..8a38fe2 100644 --- a/dune/abstractions/compound/view_mint.sql +++ b/dune/abstractions/compound/view_mint.sql @@ -1,22 +1,25 @@ -CREATE OR REPLACE VIEW compound.view_mint AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - "mintAmount" / 10 ^ t.decimals AS mint_amount, - "mintAmount" / 10 ^ t.decimals *p.price AS mint_amount_usd, - "mintTokens" / 10 ^ c.decimals AS mint_ctokens, - events.contract_address AS ctoken, minter, - c."underlying_token_address" AS underlying_token, evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT *FROM - compound_v2."cErc20_evt_Mint" UNION SELECT *FROM - compound_v2."cEther_evt_Mint" UNION SELECT *FROM - compound_v2."CErc20Delegator_evt_Mint") events LEFT JOIN - compound.view_ctokens c ON events - .contract_address = c.contract_address LEFT JOIN erc20.tokens t ON - c.underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - evt_block_time) - AND - p.contract_address = c.underlying_token_address; +CREATE OR REPLACE VIEW compound.view_mint AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + "mintAmount"/10^t.decimals AS mint_amount, + "mintAmount"/10^t.decimals*p.price AS mint_amount_usd, + "mintTokens"/10^c.decimals AS mint_ctokens, + events.contract_address AS ctoken, + minter, + c."underlying_token_address" AS underlying_token, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM compound_v2."cErc20_evt_Mint" + UNION SELECT * + FROM compound_v2."cEther_evt_Mint" + UNION SELECT * + FROM compound_v2."CErc20Delegator_evt_Mint") events +LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address +LEFT JOIN erc20.tokens t ON c.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', evt_block_time) + AND p.contract_address = c.underlying_token_address +; diff --git a/dune/abstractions/compound/view_redeem.sql b/dune/abstractions/compound/view_redeem.sql index ccd7b79..7764839 100644 --- a/dune/abstractions/compound/view_redeem.sql +++ b/dune/abstractions/compound/view_redeem.sql @@ -1,22 +1,25 @@ -CREATE OR REPLACE VIEW compound.view_redeem AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - "redeemAmount" / 10 ^ t.decimals AS redeem_amount, - "redeemAmount" / 10 ^ t.decimals *p.price AS redeem_amount_usd, - "redeemTokens" / 10 ^ c.decimals AS redeem_ctokens, redeemer, - events.contract_address AS ctoken, - c."underlying_token_address" AS underlying_token, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM ( - SELECT *FROM - compound_v2."cErc20_evt_Redeem" UNION SELECT *FROM - compound_v2."cEther_evt_Redeem" UNION SELECT *FROM - compound_v2."CErc20Delegator_evt_Redeem") events LEFT JOIN - compound.view_ctokens c ON events - .contract_address = c.contract_address LEFT JOIN erc20.tokens t ON - c.underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - evt_block_time) - AND - p.contract_address = c.underlying_token_address; +CREATE OR REPLACE VIEW compound.view_redeem AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + "redeemAmount"/10^t.decimals AS redeem_amount, + "redeemAmount"/10^t.decimals*p.price AS redeem_amount_usd, + "redeemTokens"/10^c.decimals AS redeem_ctokens, + redeemer, + events.contract_address AS ctoken, + c."underlying_token_address" AS underlying_token, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM compound_v2."cErc20_evt_Redeem" + UNION SELECT * + FROM compound_v2."cEther_evt_Redeem" + UNION SELECT * + FROM compound_v2."CErc20Delegator_evt_Redeem") events +LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address +LEFT JOIN erc20.tokens t ON c.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', evt_block_time) + AND p.contract_address = c.underlying_token_address +; diff --git a/dune/abstractions/compound/view_repay_borrow.sql b/dune/abstractions/compound/view_repay_borrow.sql index fec6a5f..9d81100 100644 --- a/dune/abstractions/compound/view_repay_borrow.sql +++ b/dune/abstractions/compound/view_repay_borrow.sql @@ -1,24 +1,27 @@ -CREATE OR REPLACE VIEW compound.view_repay_borrow AS SELECT CASE WHEN t.symbol - = 'WETH' THEN 'ETH' ELSE t.symbol END AS token_symbol, - "repayAmount" / 10 ^ t.decimals AS repay_amount, - "repayAmount" / 10 ^ t.decimals *p.price AS repay_amount_usd, borrower, - "accountBorrows" / 10 ^ t.decimals AS account_borrows, - "totalBorrows" / 10 ^ t.decimals AS total_borrows, - "totalBorrows" / 10 ^ t.decimals *p.price AS total_borrows_usd, - events.contract_address AS ctoken, - c."underlying_token_address" AS underlying_token, evt_tx_hash AS tx_hash, - evt_block_time AS block_time FROM ( - SELECT *FROM - compound_v2."cErc20_evt_RepayBorrow" UNION SELECT *FROM compound_v2 - ."cEther_evt_RepayBorrow" UNION SELECT *FROM - compound_v2."CErc20Delegator_evt_RepayBorrow") events LEFT - JOIN compound.view_ctokens c ON events - .contract_address = c.contract_address LEFT JOIN erc20.tokens t ON - c.underlying_token_address = t.contract_address - LEFT JOIN prices - .usd p ON - p.minute = date_trunc ( - 'minute', - evt_block_time) - AND - p.contract_address = c.underlying_token_address; +CREATE OR REPLACE VIEW compound.view_repay_borrow AS +SELECT CASE + WHEN t.symbol = 'WETH' THEN 'ETH' + ELSE t.symbol + END AS token_symbol, + "repayAmount"/10^t.decimals AS repay_amount, + "repayAmount"/10^t.decimals*p.price AS repay_amount_usd, + borrower, + "accountBorrows"/10^t.decimals AS account_borrows, + "totalBorrows"/10^t.decimals AS total_borrows, + "totalBorrows"/10^t.decimals*p.price AS total_borrows_usd, + events.contract_address AS ctoken, + c."underlying_token_address" AS underlying_token, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM compound_v2."cErc20_evt_RepayBorrow" + UNION SELECT * + FROM compound_v2."cEther_evt_RepayBorrow" + UNION SELECT * + FROM compound_v2."CErc20Delegator_evt_RepayBorrow") events +LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address +LEFT JOIN erc20.tokens t ON c.underlying_token_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', evt_block_time) + AND p.contract_address = c.underlying_token_address +; diff --git a/dune/abstractions/compound/view_transfer_ctoken.sql b/dune/abstractions/compound/view_transfer_ctoken.sql index 93b8f4a..864c3fe 100644 --- a/dune/abstractions/compound/view_transfer_ctoken.sql +++ b/dune/abstractions/compound/view_transfer_ctoken.sql @@ -1,12 +1,20 @@ -CREATE OR REPLACE VIEW compound.view_transfer_ctoken - AS SELECT CASE WHEN c.symbol - = 'WETH' THEN 'ETH' ELSE c.symbol END AS token_symbol, - "amount" / 10 ^ c.decimals AS amount, events."to", events."from", - c."underlying_token_address" AS underlying_token, evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT *FROM - compound_v2."cErc20_evt_Transfer" UNION SELECT *FROM compound_v2 - ."cEther_evt_Transfer" UNION SELECT *FROM - compound_v2."CErc20Delegator_evt_Transfer") - events LEFT JOIN compound.view_ctokens c ON events."contract_address" - = c.contract_address; +CREATE OR REPLACE VIEW compound.view_transfer_ctoken AS +SELECT CASE + WHEN c.symbol = 'WETH' THEN 'ETH' + ELSE c.symbol + END AS token_symbol, + "amount"/10^c.decimals AS amount, + events."to", + events."from", + c."underlying_token_address" AS underlying_token, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT * + FROM compound_v2."cErc20_evt_Transfer" + UNION SELECT * + FROM compound_v2."cEther_evt_Transfer" + UNION SELECT * + FROM compound_v2."CErc20Delegator_evt_Transfer") events +LEFT JOIN compound.view_ctokens c ON events."contract_address" = c.contract_address +; diff --git a/dune/abstractions/curvefi/view_trades.sql b/dune/abstractions/curvefi/view_trades.sql index 52440dc..d6319b3 100644 --- a/dune/abstractions/curvefi/view_trades.sql +++ b/dune/abstractions/curvefi/view_trades.sql @@ -1,454 +1,561 @@ CREATE OR REPLACE VIEW curvefi.view_trades ( - block_time, project, version, trader_a, trader_b, token_a_amount_raw, - token_b_amount_raw, token_a_address, token_b_address, - exchange_contract_address, tx_hash, trace_address, - evt_index) AS SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + block_time, + project, + version, + trader_a, + trader_b, + token_a_amount_raw, + token_b_amount_raw, + token_a_address, + token_b_address, + exchange_contract_address, + tx_hash, + trace_address, + evt_index +) AS SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN - bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea - WHEN bought_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN - bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea - WHEN bought_id = 3 THEN - '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN sold_id = 3 THEN - '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN bought_id = 3 THEN '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN sold_id = 3 THEN '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."susd_v2_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."susd_v2_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN - bought_id = 3 THEN - '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN sold_id = 3 THEN - '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN bought_id = 3 THEN '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN sold_id = 3 THEN '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."susd_v2_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."susd_v2_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\xF61718057901F84C4eEC4339EF8f0D86D2B45600' ::bytea WHEN - bought_id = 1 THEN - '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\xF61718057901F84C4eEC4339EF8f0D86D2B45600' ::bytea WHEN sold_id = 1 THEN - '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\xF61718057901F84C4eEC4339EF8f0D86D2B45600'::bytea + WHEN bought_id = 1 THEN '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\xF61718057901F84C4eEC4339EF8f0D86D2B45600'::bytea + WHEN sold_id = 1 THEN '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."susd_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."susd_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\xF61718057901F84C4eEC4339EF8f0D86D2B45600' ::bytea WHEN - bought_id = 1 THEN - '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\xF61718057901F84C4eEC4339EF8f0D86D2B45600' ::bytea WHEN sold_id = 1 THEN - '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\xF61718057901F84C4eEC4339EF8f0D86D2B45600'::bytea + WHEN bought_id = 1 THEN '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\xF61718057901F84C4eEC4339EF8f0D86D2B45600'::bytea + WHEN sold_id = 1 THEN '\xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."susd_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."susd_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN - bought_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN sold_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN bought_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN sold_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."compound_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."compound_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN - bought_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN sold_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN bought_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN sold_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."compound_v2_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."compound_v2_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."compound_v2_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."compound_v2_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN - bought_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN sold_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN bought_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN sold_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."compound_v3_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."compound_v3_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."compound_v3_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."compound_v3_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN - bought_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643' ::bytea WHEN sold_id = 1 THEN - '\x39AA39c021dfbaE8faC545936693aC917d5E7563' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN bought_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643'::bytea + WHEN sold_id = 1 THEN '\x39AA39c021dfbaE8faC545936693aC917d5E7563'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."usdt_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."usdt_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."usdt_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."usdt_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01' ::bytea WHEN - bought_id = 1 THEN '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e' ::bytea - WHEN bought_id = 2 THEN - '\x83f798e925BcD4017Eb265844FDDAbb448f1707D' ::bytea WHEN - bought_id = 3 THEN - '\x73a052500105205d34Daf004eAb301916DA8190f' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01' ::bytea WHEN sold_id = 1 THEN - '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e' ::bytea WHEN sold_id = 2 THEN - '\x83f798e925BcD4017Eb265844FDDAbb448f1707D' ::bytea WHEN sold_id = 3 THEN - '\x73a052500105205d34Daf004eAb301916DA8190f' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01'::bytea + WHEN bought_id = 1 THEN '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e'::bytea + WHEN bought_id = 2 THEN '\x83f798e925BcD4017Eb265844FDDAbb448f1707D'::bytea + WHEN bought_id = 3 THEN '\x73a052500105205d34Daf004eAb301916DA8190f'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01'::bytea + WHEN sold_id = 1 THEN '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e'::bytea + WHEN sold_id = 2 THEN '\x83f798e925BcD4017Eb265844FDDAbb448f1707D'::bytea + WHEN sold_id = 3 THEN '\x73a052500105205d34Daf004eAb301916DA8190f'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."y_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."y_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN - bought_id = 3 THEN - '\x0000000000085d4780B73119b644AE5ecd22b376' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN sold_id = 3 THEN - '\x0000000000085d4780B73119b644AE5ecd22b376' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN bought_id = 3 THEN '\x0000000000085d4780B73119b644AE5ecd22b376'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN sold_id = 3 THEN '\x0000000000085d4780B73119b644AE5ecd22b376'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."y_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."y_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\xC2cB1040220768554cf699b0d863A3cd4324ce32' ::bytea WHEN - bought_id = 1 THEN '\x26EA744E5B887E5205727f55dFBE8685e3b21951' ::bytea - WHEN bought_id = 2 THEN - '\xE6354ed5bC4b393a5Aad09f21c46E101e692d447' ::bytea WHEN - bought_id = 3 THEN - '\x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\xC2cB1040220768554cf699b0d863A3cd4324ce32' ::bytea WHEN sold_id = 1 THEN - '\x26EA744E5B887E5205727f55dFBE8685e3b21951' ::bytea WHEN sold_id = 2 THEN - '\xE6354ed5bC4b393a5Aad09f21c46E101e692d447' ::bytea WHEN sold_id = 3 THEN - '\x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\xC2cB1040220768554cf699b0d863A3cd4324ce32'::bytea + WHEN bought_id = 1 THEN '\x26EA744E5B887E5205727f55dFBE8685e3b21951'::bytea + WHEN bought_id = 2 THEN '\xE6354ed5bC4b393a5Aad09f21c46E101e692d447'::bytea + WHEN bought_id = 3 THEN '\x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\xC2cB1040220768554cf699b0d863A3cd4324ce32'::bytea + WHEN sold_id = 1 THEN '\x26EA744E5B887E5205727f55dFBE8685e3b21951'::bytea + WHEN sold_id = 2 THEN '\xE6354ed5bC4b393a5Aad09f21c46E101e692d447'::bytea + WHEN sold_id = 3 THEN '\x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."busd_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."busd_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN - bought_id = 3 THEN - '\x4Fabb145d64652a948d72533023f6E7A623C7C53' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN sold_id = 3 THEN - '\x4Fabb145d64652a948d72533023f6E7A623C7C53' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN bought_id = 3 THEN '\x4Fabb145d64652a948d72533023f6E7A623C7C53'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN sold_id = 3 THEN '\x4Fabb145d64652a948d72533023f6E7A623C7C53'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."busd_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."busd_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc' ::bytea WHEN - bought_id = 1 THEN '\x9777d7E2b60bB01759D0E2f8be2095df444cb07E' ::bytea - WHEN bought_id = 2 THEN - '\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59' ::bytea WHEN - bought_id = 3 THEN - '\x8E870D67F660D95d5be530380D0eC0bd388289E1' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc' ::bytea WHEN sold_id = 1 THEN - '\x9777d7E2b60bB01759D0E2f8be2095df444cb07E' ::bytea WHEN sold_id = 2 THEN - '\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59' ::bytea WHEN sold_id = 3 THEN - '\x8E870D67F660D95d5be530380D0eC0bd388289E1' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc'::bytea + WHEN bought_id = 1 THEN '\x9777d7E2b60bB01759D0E2f8be2095df444cb07E'::bytea + WHEN bought_id = 2 THEN '\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59'::bytea + WHEN bought_id = 3 THEN '\x8E870D67F660D95d5be530380D0eC0bd388289E1'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc'::bytea + WHEN sold_id = 1 THEN '\x9777d7E2b60bB01759D0E2f8be2095df444cb07E'::bytea + WHEN sold_id = 2 THEN '\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59'::bytea + WHEN sold_id = 3 THEN '\x8E870D67F660D95d5be530380D0eC0bd388289E1'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."pax_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."pax_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN - bought_id = 3 THEN - '\x8E870D67F660D95d5be530380D0eC0bd388289E1' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea WHEN sold_id = 3 THEN - '\x8E870D67F660D95d5be530380D0eC0bd388289E1' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN bought_id = 3 THEN '\x8E870D67F660D95d5be530380D0eC0bd388289E1'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + WHEN sold_id = 3 THEN '\x8E870D67F660D95d5be530380D0eC0bd388289E1'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."pax_evt_TokenExchangeUnderlying" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."pax_evt_TokenExchangeUnderlying" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN bought_id = 0 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea WHEN - bought_id = 1 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea END as token_a_address - , - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN sold_id = 0 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea WHEN sold_id = 1 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea END as token_b_address - , + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN bought_id = 0 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN bought_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + END as token_a_address, + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN sold_id = 0 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN sold_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."renbtc_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."renbtc_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN bought_id = 0 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea WHEN - bought_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea - WHEN bought_id = 2 THEN - '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6' ::bytea END as token_a_address - , - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN sold_id = 0 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea WHEN sold_id = 1 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea WHEN sold_id = 2 THEN - '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6' ::bytea END as token_b_address - , + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN bought_id = 0 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN bought_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN bought_id = 2 THEN '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6'::bytea + END as token_a_address, + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN sold_id = 0 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN sold_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + WHEN sold_id = 2 THEN '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."sbtc_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."sbtc_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN bought_id = 0 THEN - '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6' ::bytea WHEN - bought_id = 1 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea END as token_a_address - , - CASE-- change address back to - renBTC's, right now Dune only tracks WBTC price WHEN sold_id = 0 THEN - '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6' ::bytea WHEN sold_id = 1 THEN - '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea END as token_b_address - , + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN bought_id = 0 THEN '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6'::bytea + WHEN bought_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + END as token_a_address, + CASE + --change address back to renBTC's, right now Dune only tracks WBTC price + WHEN sold_id = 0 THEN '\xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6'::bytea + WHEN sold_id = 1 THEN '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."hbtc_evt_TokenExchange" - - UNION - - SELECT evt_block_time AS block_time, - 'Curve' AS project, NULL::text AS version, buyer AS trader_a, - NULL::bytea AS trader_b, tokens_bought AS token_a_amount_raw, + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."hbtc_evt_TokenExchange" + +UNION + +SELECT + evt_block_time AS block_time, + 'Curve' AS project, + NULL::text AS version, + buyer AS trader_a, + NULL::bytea AS trader_b, + tokens_bought AS token_a_amount_raw, tokens_sold AS token_b_amount_raw, - CASE WHEN bought_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN - bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea - WHEN bought_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_a_address - , - CASE WHEN sold_id = 0 THEN - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea WHEN sold_id = 1 THEN - '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea WHEN sold_id = 2 THEN - '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea END as token_b_address - , + CASE + WHEN bought_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN bought_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN bought_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_a_address, + CASE + WHEN sold_id = 0 THEN '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea + WHEN sold_id = 1 THEN '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea + WHEN sold_id = 2 THEN '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea + END as token_b_address, contract_address AS exchange_contract_address, - evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - evt_index FROM curvefi."dai_usdc_usdt_evt_TokenExchange" + evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + evt_index +FROM curvefi."dai_usdc_usdt_evt_TokenExchange" diff --git a/dune/abstractions/dex/trades/insert_ddex.sql b/dune/abstractions/dex/trades/insert_ddex.sql index c546a17..cbd4e12 100644 --- a/dune/abstractions/dex/trades/insert_ddex.sql +++ b/dune/abstractions/dex/trades/insert_ddex.sql @@ -124,17 +124,32 @@ WHERE NOT EXISTS ( AND project = 'DDEX' ); --- fill 2020 +-- fill 2020H1 SELECT dex.insert_ddex( '2020-01-01', - '2021-01-01', + '2020-06-01', (SELECT max(number) FROM ethereum.blocks WHERE time < '2020-01-01'), - (SELECT max(number) FROM ethereum.blocks WHERE time <= '2021-01-01') + (SELECT max(number) FROM ethereum.blocks WHERE time <= '2020-06-01') ) WHERE NOT EXISTS ( SELECT * FROM dex.trades WHERE block_time > '2020-01-01' + AND block_time <= '2020-06-01' + AND project = 'DDEX' +); + +-- fill 2020H2 +SELECT dex.insert_ddex( + '2020-06-01', + '2021-01-01', + (SELECT max(number) FROM ethereum.blocks WHERE time < '2020-06-01'), + (SELECT max(number) FROM ethereum.blocks WHERE time <= '2021-01-01') +) +WHERE NOT EXISTS ( + SELECT * + FROM dex.trades + WHERE block_time > '2020-06-01' AND block_time <= '2021-01-01' AND project = 'DDEX' ); @@ -162,4 +177,4 @@ VALUES ('*/10 * * * *', $$ (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '1 days' FROM dex.trades WHERE project='DDEX')), (SELECT MAX(number) FROM ethereum.blocks)); $$) -ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; \ No newline at end of file +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/dex/trades/insert_mooniswap.sql b/dune/abstractions/dex/trades/insert_mooniswap.sql index 37f4268..ad38d07 100644 --- a/dune/abstractions/dex/trades/insert_mooniswap.sql +++ b/dune/abstractions/dex/trades/insert_mooniswap.sql @@ -100,17 +100,32 @@ RETURN r; END $function$; --- fill 2020 +-- fill 2020H1 SELECT dex.insert_mooniswap( '2020-01-01', - '2021-01-01', + '2020-06-01', (SELECT max(number) FROM ethereum.blocks WHERE time < '2020-01-01'), - (SELECT max(number) FROM ethereum.blocks WHERE time <= '2021-01-01') + (SELECT max(number) FROM ethereum.blocks WHERE time <= '2020-06-01') ) WHERE NOT EXISTS ( SELECT * FROM dex.trades WHERE block_time > '2020-01-01' + AND block_time <= '2020-06-01' + AND project = 'Mooniswap' +); + +-- fill 2020H2 +SELECT dex.insert_mooniswap( + '2020-06-01', + '2021-01-01', + (SELECT max(number) FROM ethereum.blocks WHERE time < '2020-06-01'), + (SELECT max(number) FROM ethereum.blocks WHERE time <= '2021-01-01') +) +WHERE NOT EXISTS ( + SELECT * + FROM dex.trades + WHERE block_time > '2020-06-01' AND block_time <= '2021-01-01' AND project = 'Mooniswap' ); diff --git a/dune/abstractions/dex/view_token_prices.sql b/dune/abstractions/dex/view_token_prices.sql index 48fa399..272ffde 100644 --- a/dune/abstractions/dex/view_token_prices.sql +++ b/dune/abstractions/dex/view_token_prices.sql @@ -2,36 +2,49 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS dex.view_token_prices; -CREATE MATERIALIZED VIEW dex.view_token_prices -AS (WITH tokens_in_prices_usd - AS (SELECT DISTINCT contract_address FROM prices.usd WHERE minute - > now () - interval '10 minutes'), - dex_trades AS (SELECT token_a_address as contract_address, - usd_amount / token_a_amount as price, - block_time FROM dex.trades WHERE 1 - = 1 AND usd_amount > 0 AND category - = 'DEX' AND token_a_amount > 0 AND token_a_address NOT - IN (SELECT contract_address FROM tokens_in_prices_usd) +CREATE MATERIALIZED VIEW dex.view_token_prices AS ( + WITH tokens_in_prices_usd AS ( + SELECT DISTINCT contract_address + FROM prices.usd + WHERE minute > now() - interval '10 minutes' + ), dex_trades AS ( + SELECT + token_a_address as contract_address, + usd_amount/token_a_amount as price, + block_time + FROM dex.trades + WHERE 1=1 + AND usd_amount > 0 + AND category = 'DEX' + AND token_a_amount > 0 + AND token_a_address NOT IN (SELECT contract_address FROM tokens_in_prices_usd) + + UNION ALL + + SELECT + token_b_address as contract_address, + usd_amount/token_b_amount as price, + block_time + FROM dex.trades + WHERE 1=1 + AND usd_amount > 0 + AND category = 'DEX' + AND token_b_amount > 0 + AND token_b_address NOT IN (SELECT contract_address FROM tokens_in_prices_usd) + ) - UNION ALL + SELECT + date_trunc('hour', block_time) as hour, + contract_address, + (PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY price)) AS median_price, + count(1) AS sample_size + FROM dex_trades + GROUP BY 1, 2 +); - SELECT token_b_address as contract_address, - usd_amount / token_b_amount as price, - block_time FROM dex.trades WHERE 1 - = 1 AND usd_amount > 0 AND category - = 'DEX' AND token_b_amount > 0 AND token_b_address NOT IN ( - SELECT contract_address FROM tokens_in_prices_usd)) +CREATE UNIQUE INDEX IF NOT EXISTS dex_token_prices_unique ON dex.view_token_prices (hour, contract_address); - SELECT date_trunc ('hour', block_time) as hour, - contract_address, - (PERCENTILE_CONT (0.5) WITHIN GROUP (ORDER BY price))AS median_price, - count (1) AS sample_size FROM dex_trades GROUP BY 1, 2); - -CREATE UNIQUE INDEX IF NOT EXISTS dex_token_prices_unique ON - dex.view_token_prices (hour, contract_address); - -INSERT INTO cron.job (schedule, command) - VALUES ('* 1 * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY - dex.view_token_prices$$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job(schedule, command) +VALUES ('* 1 * * *', $$REFRESH MATERIALIZED VIEW CONCURRENTLY dex.view_token_prices$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/erasure_bay/view_burn.sql b/dune/abstractions/erasure_bay/view_burn.sql index bbb142f..b9b49d0 100644 --- a/dune/abstractions/erasure_bay/view_burn.sql +++ b/dune/abstractions/erasure_bay/view_burn.sql @@ -1,14 +1,20 @@ -CREATE OR REPLACE VIEW erasure_bay.view_burn AS SELECT "tokenID" AS token_id, - staker, amount / 10 ^ t.decimals AS dai_amount, - amount / 10 ^ t.decimals *p.price AS usd_amount, t.symbol AS token_symbol, - t.contract_address AS token_address, r.contract_address, - "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time FROM erasure_v130 - ."CountdownGriefing_evt_StakeBurned" r LEFT - JOIN (SELECT *FROM (VALUES (2 ::int, 'DAI' ::text)) - AS tmp (token_id, symbol)) s ON s - .token_id = r."tokenID" LEFT JOIN erc20.tokens t ON s - .symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', - r.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_bay.view_burn AS +SELECT "tokenID" AS token_id, + staker, + amount / 10^t.decimals AS dai_amount, + amount / 10^t.decimals * p.price AS usd_amount, + t.symbol AS token_symbol, + t.contract_address AS token_address, + r.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM erasure_v130."CountdownGriefing_evt_StakeBurned" r +LEFT JOIN + (SELECT * + FROM ( + VALUES (2::int, + 'DAI'::text)) AS tmp (token_id, symbol)) s ON s.token_id = r."tokenID" +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', r.evt_block_time) + AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erasure_bay/view_deposit_reward.sql b/dune/abstractions/erasure_bay/view_deposit_reward.sql index 875ac53..ac9ea51 100644 --- a/dune/abstractions/erasure_bay/view_deposit_reward.sql +++ b/dune/abstractions/erasure_bay/view_deposit_reward.sql @@ -1,15 +1,19 @@ -CREATE OR REPLACE VIEW erasure_bay.view_deposit_reward - AS SELECT buyer AS requester, - "amount" / 10 ^ t.decimals AS dai_reward, - "amount" / 10 ^ t.decimals *p.price AS usd_reward, - s.symbol AS token_symbol, t.contract_address AS token_address, - s.contract_address, "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time - FROM (SELECT *, 'DAI' AS symbol FROM erasure_v130 - ."CountdownGriefingEscrow_evt_PaymentDeposited") s LEFT - JOIN erc20.tokens t ON s.symbol = t.symbol LEFT JOIN prices.usd p ON - p.minute = date_trunc ('minute', - s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_bay.view_deposit_reward AS +SELECT buyer AS requester, + "amount" / 10^t.decimals AS dai_reward, + "amount" / 10^t.decimals * p.price AS usd_reward, + s.symbol AS token_symbol, + t.contract_address AS token_address, + s.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM + (SELECT *, + 'DAI' AS symbol + FROM erasure_v130."CountdownGriefingEscrow_evt_PaymentDeposited") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) + AND p.symbol = t.symbol +; ---dummy 'token' column to skip explicit 10 ^ 18 +-- dummy 'token' column to skip explicit 10^18 diff --git a/dune/abstractions/erasure_bay/view_deposit_stake.sql b/dune/abstractions/erasure_bay/view_deposit_stake.sql index 84525d5..168440b 100644 --- a/dune/abstractions/erasure_bay/view_deposit_stake.sql +++ b/dune/abstractions/erasure_bay/view_deposit_stake.sql @@ -1,15 +1,19 @@ -CREATE OR REPLACE VIEW erasure_bay.view_deposit_stake - AS SELECT seller AS fulfiller, - "amount" / 10 ^ t.decimals AS dai_stake, - "amount" / 10 ^ t.decimals *p.price AS usd_stake, s.symbol AS token_symbol, - t.contract_address AS token_address, s.contract_address, - "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time - FROM (SELECT *, 'DAI' AS symbol FROM erasure_v130 - ."CountdownGriefingEscrow_evt_StakeDeposited") s LEFT - JOIN erc20.tokens t ON s.symbol = t.symbol LEFT JOIN prices.usd p ON - p.minute = date_trunc ('minute', - s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_bay.view_deposit_stake AS +SELECT seller AS fulfiller, + "amount" / 10^t.decimals AS dai_stake, + "amount" / 10^t.decimals * p.price AS usd_stake, + s.symbol AS token_symbol, + t.contract_address AS token_address, + s.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM + (SELECT *, + 'DAI' AS symbol + FROM erasure_v130."CountdownGriefingEscrow_evt_StakeDeposited") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) + AND p.symbol = t.symbol +; ---dummy 'symbol' column to skip explicit 10 ^ 18 +-- dummy 'symbol' column to skip explicit 10^18 diff --git a/dune/abstractions/erasure_bay/view_finalize.sql b/dune/abstractions/erasure_bay/view_finalize.sql index 16eeeb6..bb9f7a3 100644 --- a/dune/abstractions/erasure_bay/view_finalize.sql +++ b/dune/abstractions/erasure_bay/view_finalize.sql @@ -1,4 +1,7 @@ -CREATE OR REPLACE VIEW erasure_bay.view_finalize AS SELECT agreement, - contract_address, "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time FROM - erasure_v130."CountdownGriefingEscrow_evt_Finalized"; +CREATE OR REPLACE VIEW erasure_bay.view_finalize AS +SELECT agreement, + contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM erasure_v130."CountdownGriefingEscrow_evt_Finalized" +; diff --git a/dune/abstractions/erasure_bay/view_request_data.sql b/dune/abstractions/erasure_bay/view_request_data.sql index c0fd315..e8e5f49 100644 --- a/dune/abstractions/erasure_bay/view_request_data.sql +++ b/dune/abstractions/erasure_bay/view_request_data.sql @@ -1,35 +1,49 @@ -CREATE OR REPLACE VIEW erasure_bay.view_request_data AS SELECT operator, - buyer AS requester, seller AS fullfiller, - "paymentAmount" / 10 ^ t.decimals AS dai_reward, - "paymentAmount" / 10 ^ t.decimals *p.price AS usd_reward, - "stakeAmount" / 10 ^ t.decimals AS dai_stake, - "stakeAmount" / 10 ^ t.decimals *p.price AS usd_stake, - t.symbol AS token_symbol, t.contract_address AS token_address, - "tokenID" AS token_id, "countdownLength" AS countdown_length, - "agreementParams" AS agreement_params, r.contract_address, - "evt_tx_hash" AS tx_hash, "evt_block_time" AS block_time, - metadata->> 'application' AS application, - metadata->> 'esp_version' AS esp_version, - metadata->> 'app_version' AS app_version, - metadata->> 'ipld_cid' AS ipld_cid, - app_storage->> 'attackPeriod' AS attack_period, - app_storage->> 'ratio' AS punishment_ratio, - app_storage->> 'description' AS description, - app_storage->> 'Deliverable' AS deliverable, - app_storage-> - > 'postType' AS post_type FROM ( - SELECT operator, buyer, seller, contract_address, - "paymentAmount", "stakeAmount", "countdownLength", - "agreementParams", "evt_tx_hash", "evt_block_time", "tokenID", - json (json (convert_from ("metadata", 'UTF8'))->> 'app_storage') - AS app_storage, - json (convert_from ("metadata", 'UTF8')) - AS metadata FROM erasure_v130 - ."CountdownGriefingEscrow_evt_Initialized") r LEFT - JOIN (SELECT *FROM (VALUES (2 ::int, 'DAI' ::text)) - AS tmp (token_id, symbol)) s ON - s.token_id = r."tokenID" LEFT JOIN erc20.tokens t ON - s.symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', - r.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_bay.view_request_data AS +SELECT operator, + buyer AS requester, + seller AS fullfiller, + "paymentAmount" / 10^t.decimals AS dai_reward, + "paymentAmount" / 10^t.decimals * p.price AS usd_reward, + "stakeAmount" / 10^t.decimals AS dai_stake, + "stakeAmount" / 10^t.decimals * p.price AS usd_stake, + t.symbol AS token_symbol, + t.contract_address AS token_address, + "tokenID" AS token_id, + "countdownLength" AS countdown_length, + "agreementParams" AS agreement_params, + r.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time, + metadata ->> 'application' AS application, + metadata ->> 'esp_version' AS esp_version, + metadata ->> 'app_version' AS app_version, + metadata ->> 'ipld_cid' AS ipld_cid, + app_storage ->> 'attackPeriod' AS attack_period, + app_storage ->> 'ratio' AS punishment_ratio, + app_storage ->> 'description' AS description, + app_storage ->> 'Deliverable' AS deliverable, + app_storage ->> 'postType' AS post_type +FROM + (SELECT operator, + buyer, + seller, + contract_address, + "paymentAmount", + "stakeAmount", + "countdownLength", + "agreementParams", + "evt_tx_hash", + "evt_block_time", + "tokenID", + json(json(convert_from("metadata", 'UTF8')) ->> 'app_storage') AS app_storage, + json(convert_from("metadata", 'UTF8')) AS metadata + FROM erasure_v130."CountdownGriefingEscrow_evt_Initialized") r +LEFT JOIN + (SELECT * + FROM ( + VALUES (2::int, + 'DAI'::text)) AS tmp (token_id, symbol)) s ON s.token_id = r."tokenID" +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', r.evt_block_time) + AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erasure_bay/view_submit_data.sql b/dune/abstractions/erasure_bay/view_submit_data.sql index 46e8df1..8602bef 100644 --- a/dune/abstractions/erasure_bay/view_submit_data.sql +++ b/dune/abstractions/erasure_bay/view_submit_data.sql @@ -1,10 +1,18 @@ -CREATE OR REPLACE VIEW erasure_bay.view_submit_data AS SELECT "data"-> - > 'nonce' AS nonce, - "data"->> 'esp_version' AS esp_version, "data"->> 'filename' AS filename, - "data"->> 'encryptedSymKey' AS encrypted_sym_key, - "data"->> 'receiver' AS requester, "data"->> 'message' AS message, - "data"->> 'proofhash' AS proof_hash, contract_address, tx_hash, - block_time FROM (SELECT json (convert_from ("data", 'UTF8')) AS DATA, - contract_address, "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time FROM erasure_v130 - ."CountdownGriefingEscrow_evt_DataSubmitted") s; +CREATE OR REPLACE VIEW erasure_bay.view_submit_data AS +SELECT "data" ->> 'nonce' AS nonce, + "data" ->> 'esp_version' AS esp_version, + "data" ->> 'filename' AS filename, + "data" ->> 'encryptedSymKey' AS encrypted_sym_key, + "data" ->> 'receiver' AS requester, + "data" ->> 'message' AS message, + "data" ->> 'proofhash' AS proof_hash, + contract_address, + tx_hash, + block_time +FROM + (SELECT json(convert_from("data", 'UTF8')) AS DATA, + contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time + FROM erasure_v130."CountdownGriefingEscrow_evt_DataSubmitted") s +; diff --git a/dune/abstractions/erasure_numerai/view_burn.sql b/dune/abstractions/erasure_numerai/view_burn.sql index 781ea5e..44c891d 100644 --- a/dune/abstractions/erasure_numerai/view_burn.sql +++ b/dune/abstractions/erasure_numerai/view_burn.sql @@ -1,14 +1,19 @@ -CREATE OR REPLACE VIEW erasure_numerai.view_burn AS SELECT punisher, staker, - punishment / 10 ^ t.decimals AS nmr_punishment, - cost / 10 ^ t.decimals AS nmr_cost, - punishment / 10 ^ t.decimals *p.price AS usd_punishment, - cost / 10 ^ t.decimals *p.price AS usd_cost, - convert_from ("message", 'UTF8') AS message, s.contract_address, - "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time - FROM (SELECT *, - 'NMR' AS symbol FROM erasure_v110."SimpleGriefing_evt_Griefed") - s LEFT JOIN erc20.tokens t ON s - .symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_numerai.view_burn AS +SELECT punisher, + staker, + punishment / 10^t.decimals AS nmr_punishment, + cost / 10^t.decimals AS nmr_cost, + punishment / 10^t.decimals * p.price AS usd_punishment, + cost / 10^t.decimals * p.price AS usd_cost, + convert_from("message", 'UTF8') AS message, + s.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM + (SELECT *, + 'NMR' AS symbol + FROM erasure_v110."SimpleGriefing_evt_Griefed") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) +AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erasure_numerai/view_reward.sql b/dune/abstractions/erasure_numerai/view_reward.sql index 70abda1..6b82e1f 100644 --- a/dune/abstractions/erasure_numerai/view_reward.sql +++ b/dune/abstractions/erasure_numerai/view_reward.sql @@ -1,14 +1,17 @@ -CREATE OR REPLACE VIEW erasure_numerai.view_reward AS SELECT "currentStake" - / 10 - ^ t.decimals AS nmr_stake, - "amountToAdd" / 10 ^ t.decimals AS nmr_reward, - "currentStake" / 10 ^ t.decimals *p.price AS usd_stake, - "amountToAdd" / 10 ^ t.decimals *p.price AS usd_reward, s.contract_address, - call_tx_hash AS tx_hash, - call_block_time AS block_time - FROM (SELECT *, - 'NMR' AS symbol FROM erasure_v110."SimpleGriefing_call_reward") - s LEFT JOIN erc20.tokens t ON - s.symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', s.call_block_time) AND p - .symbol = t.symbol WHERE call_success = TRUE; +CREATE OR REPLACE VIEW erasure_numerai.view_reward AS +SELECT "currentStake" / 10^t.decimals AS nmr_stake, + "amountToAdd" / 10^t.decimals AS nmr_reward, + "currentStake" / 10^t.decimals * p.price AS usd_stake, + "amountToAdd" / 10^t.decimals * p.price AS usd_reward, + s.contract_address, + call_tx_hash AS tx_hash, + call_block_time AS block_time +FROM + (SELECT *, + 'NMR' AS symbol + FROM erasure_v110."SimpleGriefing_call_reward") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.call_block_time) +AND p.symbol = t.symbol +WHERE call_success = TRUE +; diff --git a/dune/abstractions/erasure_numerai/view_stake.sql b/dune/abstractions/erasure_numerai/view_stake.sql index 67dfb35..c847e53 100644 --- a/dune/abstractions/erasure_numerai/view_stake.sql +++ b/dune/abstractions/erasure_numerai/view_stake.sql @@ -1,13 +1,18 @@ -CREATE OR REPLACE VIEW erasure_numerai.view_stake AS SELECT staker, funder, - amount / 10 ^ t.decimals AS nmr_stake, - "newStake" / 10 ^ t.decimals AS nmr_new_stake, - amount / 10 ^ t.decimals *p.price AS usd_stake, - "newStake" / 10 ^ t.decimals *p.price AS usd_new_stake, s.contract_address, - evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT *, - 'NMR' AS symbol FROM erasure_v110."SimpleGriefing_evt_StakeAdded") - s LEFT JOIN erc20.tokens t ON s - .symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_numerai.view_stake AS +SELECT staker, + funder, + amount / 10^t.decimals AS nmr_stake, + "newStake" / 10^t.decimals AS nmr_new_stake, + amount / 10^t.decimals * p.price AS usd_stake, + "newStake" / 10^t.decimals * p.price AS usd_new_stake, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT *, + 'NMR' AS symbol + FROM erasure_v110."SimpleGriefing_evt_StakeAdded") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) +AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erasure_quant/view_burn.sql b/dune/abstractions/erasure_quant/view_burn.sql index c23a86b..48adc13 100644 --- a/dune/abstractions/erasure_quant/view_burn.sql +++ b/dune/abstractions/erasure_quant/view_burn.sql @@ -1,14 +1,19 @@ -CREATE OR REPLACE VIEW erasure_quant.view_burn AS SELECT punisher, staker, - punishment / 10 ^ t.decimals AS nmr_punishment, - cost / 10 ^ t.decimals AS nmr_cost, - punishment / 10 ^ t.decimals *p.price AS usd_punishment, - cost / 10 ^ t.decimals *p.price AS usd_cost, - convert_from ("message", 'UTF8') AS message, s.contract_address, - "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time - FROM (SELECT *, - 'NMR' AS symbol FROM erasure_v100."OneWayGriefing_evt_Griefed") - s LEFT JOIN erc20.tokens t ON s - .symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_quant.view_burn AS +SELECT punisher, + staker, + punishment / 10^t.decimals AS nmr_punishment, + cost / 10^t.decimals AS nmr_cost, + punishment / 10^t.decimals * p.price AS usd_punishment, + cost / 10^t.decimals * p.price AS usd_cost, + convert_from("message", 'UTF8') AS message, + s.contract_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM + (SELECT *, + 'NMR' AS symbol + FROM erasure_v100."OneWayGriefing_evt_Griefed") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) +AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erasure_quant/view_reward.sql b/dune/abstractions/erasure_quant/view_reward.sql index a38c3c2..1aa3015 100644 --- a/dune/abstractions/erasure_quant/view_reward.sql +++ b/dune/abstractions/erasure_quant/view_reward.sql @@ -1,15 +1,19 @@ -CREATE OR REPLACE VIEW erasure_quant.view_reward AS SELECT "from" AS treasury, - "to" AS staker, value / 10 ^ t.decimals AS nmr_reward, - value / 10 ^ t.decimals *p.price AS usd_reward, - s.contract_address AS token_address, "evt_tx_hash" AS tx_hash, - "evt_block_time" AS block_time FROM - numerai."NumeraireBackend_evt_Transfer" s LEFT JOIN erc20.tokens t ON - s.contract_address - = t.contract_address LEFT JOIN prices.usd p ON p.minute - = date_trunc ('minute', s.evt_block_time) AND p.contract_address - = t.contract_address WHERE - "from" IN ('\x0000000000377D181A0ebd08590c6B399b272000', +CREATE OR REPLACE VIEW erasure_quant.view_reward AS +SELECT "from" AS treasury, + "to" AS staker, + value / 10^t.decimals AS nmr_reward, + value / 10^t.decimals * p.price AS usd_reward, + s.contract_address AS token_address, + "evt_tx_hash" AS tx_hash, + "evt_block_time" AS block_time +FROM numerai."NumeraireBackend_evt_Transfer" s +LEFT JOIN erc20.tokens t ON s.contract_address = t.contract_address +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) +AND p.contract_address = t.contract_address +WHERE "from" IN ('\x0000000000377D181A0ebd08590c6B399b272000', '\xdc6997b078C709327649443D0765BCAa8e37aA6C', - '\x67b18F10C0Ff8C76e28a383B404E8e6FDEfe2050') AND - "to" IN (SELECT DISTINCT staker FROM - erasure_v100."OneWayGriefing_evt_StakeAdded"); + '\x67b18F10C0Ff8C76e28a383B404E8e6FDEfe2050') + AND "to" IN + (SELECT DISTINCT staker + FROM erasure_v100."OneWayGriefing_evt_StakeAdded") +; diff --git a/dune/abstractions/erasure_quant/view_stake.sql b/dune/abstractions/erasure_quant/view_stake.sql index 010157c..c3b2089 100644 --- a/dune/abstractions/erasure_quant/view_stake.sql +++ b/dune/abstractions/erasure_quant/view_stake.sql @@ -1,13 +1,18 @@ -CREATE OR REPLACE VIEW erasure_quant.view_stake AS SELECT staker, funder, - amount / 10 ^ t.decimals AS nmr_stake, - "newStake" / 10 ^ t.decimals AS nmr_new_stake, - amount / 10 ^ t.decimals *p.price AS usd_stake, - "newStake" / 10 ^ t.decimals *p.price AS usd_new_stake, s.contract_address, - evt_tx_hash AS tx_hash, - evt_block_time AS block_time - FROM (SELECT *, - 'NMR' AS symbol FROM erasure_v100."OneWayGriefing_evt_StakeAdded") - s LEFT JOIN erc20.tokens t ON s - .symbol = t.symbol LEFT JOIN prices.usd p ON p - .minute = date_trunc ('minute', s.evt_block_time) - AND p.symbol = t.symbol; +CREATE OR REPLACE VIEW erasure_quant.view_stake AS +SELECT staker, + funder, + amount / 10^t.decimals AS nmr_stake, + "newStake" / 10^t.decimals AS nmr_new_stake, + amount / 10^t.decimals * p.price AS usd_stake, + "newStake" / 10^t.decimals * p.price AS usd_new_stake, + s.contract_address, + evt_tx_hash AS tx_hash, + evt_block_time AS block_time +FROM + (SELECT *, + 'NMR' AS symbol + FROM erasure_v100."OneWayGriefing_evt_StakeAdded") s +LEFT JOIN erc20.tokens t ON s.symbol = t.symbol +LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', s.evt_block_time) +AND p.symbol = t.symbol +; diff --git a/dune/abstractions/erc20/stablecoins.sql b/dune/abstractions/erc20/stablecoins.sql index 322b642..2cedf99 100644 --- a/dune/abstractions/erc20/stablecoins.sql +++ b/dune/abstractions/erc20/stablecoins.sql @@ -1,22 +1,25 @@ -CREATE TABLE IF NOT EXISTS erc20.stablecoins (contract_address bytea, - symbol text, decimals numeric, - name text); +CREATE TABLE IF NOT EXISTS erc20.stablecoins ( + contract_address bytea, + symbol text, + decimals numeric, + name text +); BEGIN; DELETE FROM erc20.stablecoins *; -COPY erc20.stablecoins (contract_address, symbol, decimals, name) FROM stdin; -\\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC 6 USD Circle -\\x6b175474e89094c44da98b954eedeac495271d0f DAI 18 DAI Maker DAO -\\x4fabb145d64652a948d72533023f6e7a623c7c53 BUSD 18 Binance USD -\\x8e870d67f660d95d5be530380d0ec0bd388289e1 PAX 18 Paxos Standard -\\x0000000000085d4780b73119b644ae5ecd22b376 TUSD 18 TrueUSD -\\xdf574c24545e5ffecb9a659c229253d4111d87e1 HUSD 8 St Coins -\\x57Ab1ec28D129707052df4dF418D58a2D46d5f51 sUSD 18 Synthetix sUSD -\\x57Ab1E02fEE23774580C119740129eAC7081e9D3 sUSD 18 Synthetix sUSD -\\x056fd409e1d7a124bd7017459dfea2f387b6d5cd GUSD 2 Gemini dollar -\\xdac17f958d2ee523a2206206994597c13d831ec7 USDT 6 Tether -\\x1456688345527bE1f37E9e627DA0837D6f08C925 USDP 18 USDP Stablecoin +COPY erc20.stablecoins(contract_address, symbol, decimals, name) FROM stdin; +\\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC 6 USD Circle +\\x6b175474e89094c44da98b954eedeac495271d0f DAI 18 DAI Maker DAO +\\x4fabb145d64652a948d72533023f6e7a623c7c53 BUSD 18 Binance USD +\\x8e870d67f660d95d5be530380d0ec0bd388289e1 PAX 18 Paxos Standard +\\x0000000000085d4780b73119b644ae5ecd22b376 TUSD 18 TrueUSD +\\xdf574c24545e5ffecb9a659c229253d4111d87e1 HUSD 8 St Coins +\\x57Ab1ec28D129707052df4dF418D58a2D46d5f51 sUSD 18 Synthetix sUSD +\\x57Ab1E02fEE23774580C119740129eAC7081e9D3 sUSD 18 Synthetix sUSD +\\x056fd409e1d7a124bd7017459dfea2f387b6d5cd GUSD 2 Gemini dollar +\\xdac17f958d2ee523a2206206994597c13d831ec7 USDT 6 Tether +\\x1456688345527bE1f37E9e627DA0837D6f08C925 USDP 18 USDP Stablecoin \. - COMMIT; +COMMIT; diff --git a/dune/abstractions/erc20/tokens.sql b/dune/abstractions/erc20/tokens.sql index bca3a8c..d9dc9cc 100644 --- a/dune/abstractions/erc20/tokens.sql +++ b/dune/abstractions/erc20/tokens.sql @@ -1,885 +1,895 @@ -CREATE TABLE IF NOT EXISTS erc20.tokens (contract_address bytea UNIQUE, - symbol text, decimals integer); +CREATE TABLE IF NOT EXISTS erc20.tokens ( + contract_address bytea UNIQUE, + symbol text, + decimals integer +); BEGIN; DELETE FROM erc20.tokens *; COPY erc20.tokens (contract_address, symbol, decimals) FROM stdin; -\\xb6ed7644c69416d67b522e20bc294a9a9b405b31 0xBTC 8 -\\x111111111117dC0aa78b770fA6A738034120C302 1INCH 18 -\\xfdbc1adc26f0f8f8606a5d63b7d3a3cd21c22b23 1WO 8 -\\xa3ac41fde5f3a569fa79e81ffe6734ee8097ce9d 4XB 8 -\\xba3D9687Cf50fE253cd2e1cFeEdE1d6787344Ed5 aAAVE 18 -\\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9 AAVE 18 -\\xe1ba0fb44ccb0d11b80f92f4f8ed94ca3ff51d00 aBAT 18 -\\x6ee0f7bb50a54ab5253da0667b0dc2ee526c30a8 aBUSD 18 -\\x9a794dc1939f1d78fa48613b89b8f9d0a20da00e ABX 18 -\\x0e8d6b471e332f140e7d9dbb99e5e3822f728da6 ABYSS 18 -\\xea6d4d7b36c00b3611de0b0e1982b12e9e736c66 ACD 18 -\\x06147110022B768BA8F99A8f385df11a151A9cc8 ACE 0 -\\xcAd2d4C4469fF09aB24d02A63BCeDfCD44bE0645 ACPT 18 -\\xfc1e690f61efd961294b3e1ce3313fbd8aa4f85d aDAI 18 -\\xd0d6d6c5fe4a677d343cc433536bb717bae167dd ADT 9 -\\x4470bb87d77b963a013db939be332f927f2b992e ADX 4 -\\x5ca9a71b1d01849c0a95490cc00559717fcf0d1d AE 18 -\\x712db54daa836b53ef1ecbb9c6ba3b9efb073f40 aENJ 18 -\\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04 aETH 18 -\\x8eb24319393716668d768dcec29356ae9cffe285 AGI 8 -\\xa704fce7b309ec09df16e2f5ab8caf6fe8a4baa9 AGRI 18 -\\xEab935f35693c3218b927436E63564018E92034f AGRIBNT 18 -\\x7db5454f3500f28171d1f9c7a38527c9cf94e6b2 AGS 4 -\\x37e8789bb9996cac9156cd5f5fd32599e6b91289 AID 18 -\\xe3BF775Ec5f4F4dFCbb21194B22be1217b815b1d AIDBNT 18 -\\x4ceda7906a5ed2179785cd3a40a69ee8bc99c466 AION 8 -\\x1063ce524265d5a3a624f4914acd573dd89ce988 AIX 18 -\\xA415cD56C694bd7402d14560D18Bb19A28F77617 AIXBNT 18 -\\x9d91be44c06d373a8a226e1f3b146956083803eb aKNC 18 -\\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7 AKRO 18 -\\x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0 ALBT 18 -\\xdBdb4d16EdA451D0503b854CF79D55697F90c8DF ALCX 18 -\\x7d2d3688df45ce7c552e19c27e007673da9204b8 aLEND 18 -\\x27702a26126e0B3702af63Ee09aC4d1A084EF628 ALEPH 18 -\\xa64bd6c70cb9051f6a9ba1f163fdc07e0dfb5f84 aLINK 18 -\\xea610b1153477720748dc13ed378003941d84fab ALIS 18 -\\x1b7b723e66a0dd33e8f5e8ec039b51acafcd66a5 ALN 18 -\\xa78a391A060B3B904EbA36E4f28B97d86cE0548A ALPH 18 -\\xa1faa113cbe53436df28ff0aee54275c13b40975 ALPHA 18 -\\x6fce4a401b6b80ace52baaefe4421bd188e76f6f aMANA 18 -\\x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce AMB 18 -\\x7deb5e830be29f91e298ba5ff1356bb7f8146998 aMKR 18 -\\x737f98ac8ca59f2c68ad658e3c3d8c8963e40a4c AMN 18 -\\x0f9Be347378a37CED33A13AE061175AF07CC9868 AMNBNT 18 -\\xff20817765cb7f73d4bde2e66e067e58d11095c2 AMP 18 -\\xd46ba6d942050d489dbd938a2c909a5d5039a161 AMPL 9 -\\x0e2145A23f7810431Ba0f2e19676530b3F1Fb0EC AMPLBNT 18 -\\x3c45b24359fb0e107a4eaa56bd0f2ce66c99a0e5 ANK 18 -\\x437F7d93540094Da58F337644ba7D6E5Ad823564 ANKBNT 18 -\\x960b236a07cf122663c4303350609a66a7b288c0 ANT 18 -\\xa117000000f279D81A1D3cc75430fAA017FA5A2e ANT 18 -\\x0c485BffD5df019F66927B2C32360159884D4409 ANTBNT 18 -\\x9ab165d795019b6d8b3e971dda91071421305e5a AOA 18 -\\x584267b60874132f82ef1554f6e079a23aab4408 APC 18 -\\xEC6a5D88bF56Fd3F96957AE65916C69F29DB35c5 apeUSD - AAVE - DEC21 18 -\\x0f775aD69e3c93D599D3315A130Bd82A0cDda397 apeUSD - LINK - DEC21 18 -\\x5C6Af72cBd740b90528C8Fe226125413b6bd7E5A apeUSD - SNX - DEC21 18 -\\xfA5e27893aee4805283D86e4283Da64F8c72dd56 apeUSD - UMA - DEC21 18 -\\xFbB6B34DD77274a06EA2E5462a5e0B9E23ce478e apeUSD - UNI - DEC21 18 -\\x0b38210ea11411557c13457D4dA7dC6ea731B88a API3 18 -\\x4c0fbe1bb46612915e7967d2c3213cd4d87257ad APIS 18 -\\x95a4492F028aa1fd432Ea71146b433E7B4446611 APY 18 -\\x69948cc03f478b95283f7dbf1ce764d0fc7ec54c aREN 18 -\\x71010a9d003445ac60c4e6a7017c1e89a477b438 aREP 18 -\\x1337def16f9b486faed0293eb623dc8395dfe46a ARMOR 18 -\\x328c4c80bc7aca0834db37e6600a6c49e12da4de aSNX 18 -\\xfa2562da1bba7b954f26c74725df51fb62646313 ASSY 18 -\\x27054b13b1b798b345b591a4d22e6562d47ea75a AST 4 -\\x625ae63000f46200499120b906716420bd059240 aSUSD 18 -\\x2daee1aa61d60a252dc80564499a69802853583a ATS 4 -\\x4da9b813057d04baef4e5800e36083717b4a0341 aTUSD 18 -\\xc12d099be31567add4e4e4d0d45691c3f58f5663 AUC 18 -\\x18aAA7115705e8be94bfFEBDE57Af9BFc265B998 AUDIO 18 -\\xB124541127A0A657f056D9Dd06188c4F1b0e5aab aUNI 18 -\\x0aaca86e54fe70edd7c86cbf3cfb470caa49faef AURELIO 18 -\\x9ba00d6856a4edf4665bca2c2309936572473b7e aUSDC 6 -\\x71fc860f7d3a592a4a98740e39db31d25db65ae8 aUSDT 6 -\\x0ed55f31ee2f9875a738c6496842b0e6519d7833 AUTO 4 -\\x622dffcc4e83c64ba959530a5a5580687a57581b AUTO 18 -\\xfc4b8ed459e00e5400be803a9bb3954234fd50e3 aWBTC 8 -\\xF5D669627376EBd411E34b98F19C868c8ABA5ADA AXS 18 -\\x12e51e77daaa58aa0e9247db7510ea4b46f9bead aYFI 18 -\\x6fb0855c404e09c47c3fbca25f08d4e41f9f062f aZRX 18 -\\xc4De189Abf94c57f396bD4c52ab13b954FebEfD8 B20 18 -\\x3472A5A71965499acd81997a54BBA8D852C6E53d BADGER 18 -\\xba100000625a3754423978a60c9317c58a424e3D BAL 18 -\\xBA11D00c5f74255f56a5E366F4F77f5A186d7f55 BAND 18 -\\x1c45ed430bb3629672c6c8010dc7747cdcdf6a94 BANus 18 -\\x20b2974669e5c70c46962ab7eae34528f9dc83ab BANus 18 -\\x879e57f3b2d913b4aebb5242abbc6f4ee64a1ab3 BANus 18 -\\x705C71b262C511B66bAA4791cC2BE61B971bD784 BAP0 18 -\\x0d8775f648430679a709e98d2b0cb6250d2887ef BAT 18 -\\x131da075a2832549128e93AcC2b54174045232Cf BATBNT 18 -\\x7FfE011B93e06FA14CE5A6E00320937652664366 BATUSDB 18 -\\x9a0242b7a33dacbe40edb927834f96eb39f8fbcb BAX 18 -\\x19d97d8fa813ee2f51ad4b4e04ea08baf4dffc28 bBADGER 18 -\\x84f7c44b6fed1080f647e354d552595be2cc602f BBO 18 -\\x9be89d2a4cd102d8fecc6bf9da793be995c22541 BBTC 8 -\\xff3519eeeea3e76f1f699ccce5e23ee0bdda41ac BCAP 0 -\\xe4f726adc8e89c6a6017f01eada77865db22da14 BCP 18 -\\x98bde3a768401260e7025faf9947ef1b81295519 BCS 18 -\\x9ec251401eafb7e98f37a1d911c0aea02cb63a80 BCT 18 -\\xd45247c07379d94904e0a87b4481f0a1ddfa0c64 BCZERO 18 -\\x6a4ffaafa8dd400676df8076ad6c724867b0e2e8 bDAI 18 -\\x7e7E112A68d8D2E221E11047a72fFC1065c38e1a bDIGG 18 -\\x763186eb8d4856d536ed4478302971214febc6a9 BETR 18 -\\x679F601F0deb53c2dB0C8C26369FDcba5fD753CF BETRBNT 18 -\\xcfabaff3bb057ba878f43ce027c9266d2f900561 BFZ 18 -\\xee74110fb5a1007b06282e0de5d73a61bf41d9cd BHPC 18 -\\xb3104b4b9da82025e8b9f8fb28b3553ce2f67069 BIX 18 -\\xbee6edf5fa7e862ed2ea9b9f42cb0849184aae85 BKN 0 -\\x107c4504cd79c5d2696ea0030a8dd4e92601b82e BLT 18 -\\x5732046a883704404f284ce41ffadd5b007fd668 BLZ 18 -\\xdf6ef343350780bf8c3410bf062e0c015b1dd671 BMC 8 -\\xb8c77482e45f1f44de1745f52c74426c631bdd52 BNB 18 -\\xE6b31fB3f29fbde1b92794B0867A315Ff605A324 BNBBNT 18 -\\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c BNT 18 -\\x3f71558cf0055d84943790eab617b15f8b34fc78 BNT 18 -\\x202f21b2a809cc4af932d2e3e5b700f9936588a8 BNTAMB 18 -\\x323fab7e88ea9db8768ec52fd0f21b6a9b782415 BNTBUG 18 -\\xd42a4fd1845333f24d88e70d5837927cecaf7f26 BNTCRT 18 -\\xb80650a44bafbeb4aa2a52c62d79112f5f94126c BNTTRL 18 -\\xd2d6158683aee4cc838067727209a0aaf4359de3 BNTY 18 -\\xbcf8969f0f5c5075f0b925809fed62eb04e58ecf BNUS 18 -\\x0391d2021f89dc339f60fff84546ea23e337750f BOND 18 -\\x6b01c3170ae1efebee1a3159172cb3f7a5ecf9e5 BOOTY 18 -\\x780116d91e5592e58a3b3c76a351571b39abcec6 BOXX 15 -\\x5af2be193a6abca9c8817001f45744777db30756 BQX 8 -\\x558ec3152e2eb2174905cd19aea4e34a23de9ad6 BRD 18 -\\xe12128d653b62f08fbed56bdeb65db729b6691c3 BRZC 18 -\\x26946ada5ecb57f3a1f91605050ce45c482c9eb1 BSOV 8 -\\x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd BTC++ 18 -\\x534DF0Ec6D65cD6fE1b05D3b8c935c97Eb844190 BTCDEFI 18 -\\xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750 BTM 8 -\\xb683d83a532e2cb7dfa5275eed3698436371cc9f BTU 18 -\\x4fabb145d64652a948d72533023f6e7a623c7c53 BUSD 18 -\\xedf216b3c9748082c2d7f3f54efe45b41076e3e1 BUSD 18 -\\xE94C892f90ABea59F3dd1D7d8c34aC9d7312F18A BUSDUSDB 18 -\\xe1aee98495365fc179699c1bb3e761fa716bee62 BZNT 18 -\\x56d811088235F11C8920698a204A5010a788f4b3 BZRX 18 -\\x26e75307fc0c021472feb8f727839531f112f317 C20 18 -\\x1EF9e0ac29b3813528FbfdAdf5118AB63e4be015 C20BNT 18 -\\xcaDC0acd4B445166f12d2C07EAc6E2544FbE2Eef CADC 18 -\\x1d462414fe14cf489c7a21cac78509f4bf8cd7c0 CAN 6 -\\x43044f861ec040DB59A7e324c40507adDb673142 CAP 18 -\\x1234567461d3f8db7496581774bd869c83d51c93 CAT 18 -\\xB3c55930368D71F643C3775869aFC73f6c5237b2 CATBNT 18 -\\x6c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e cBAT 8 -\\xcf8f9555d55ce45a3a33a81d6ef99a2a2e71dee2 CBIX7 18 -\\x29a99c126596c0Dc96b02A88a9EAab44EcCf511e CBLT 18 -\\x26c908b9b8154206af727175c493988200d7e133 CBT 18 -\\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3 CC10 18 -\\x5d3a536e4d6dbd6114cc1ead35777bab948e3643 cDAI 8 -\\xb056c38f6b7dc4064367403e26424cd2c60655e1 CEEK 18 -\\x2F2ad6954d99Ea14fA145B9AB0fb6BA5Ac32c0Ee CEEKBNT 18 -\\xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d CEL 4 -\\x1122b6a0e00dce0563082b6e2953f3a943855c1f CENNZ 18 -\\x4ddc2d193948926d02f9b1fe9e1daa0718270ed5 cETH 8 -\\xAdA0A1202462085999652Dc5310a7A9e2BF3eD42 CGI 18 -\\xf5238462e7235c7b62811567e63dd17d12c2eaa0 CGT 8 -\\x06af07097c9eeb7fd685c692751d5c66db49c215 CHAI 18 -\\xC4C2614E694cF534D407Ee49F8E44D125E4681c4 CHAIN 18 -\\x4eCB692B0fEDeCD7B486b4c99044392784877E8C CHERRY 4 -\\x0000000000004946c0e9f43f4dee607b0ef1fa1c CHI 0 -\\x1460a58096d80a50a2f1f956dda497611fa4f165 CHX 18 -\\x3506424f91fd33084466f402d5d97f05f8e3b4af CHZ 18 -\\x1a94656a6245379bc0d9c64c402197528edb2bd1 CLC 18 -\\x4162178b78d6985480a308b2190ee5517460406d CLN 18 -\\x47bc01597798dcd7506dcca36ac4302fc93a8cfb CMCT 8 -\\x9f949124e2a23492005a9bb937acb29bda2cab9e CMME 8 -\\xf85feea2fdd81d51177f6b8f35f0e6734ce45f5f CMT 18 -\\xd4c435f5b09f855c3317c8524cb1f586e42795fa CND 18 -\\x722f2f3eac7e9597c73a593f7cf3de33fbfc3308 CNUS 18 -\\xC76FB75950536d98FA62ea968E1D6B45ffea2A55 COL 18 -\\xffffffff2ba8f66d4e51811c5190992176930278 COMBO 18 -\\xc7deb5543cfa97b0af2841418f53b8e554ff566a COMM 18 -\\xc00e94cb662c3520282e6f5717214004a7f26888 COMP 18 -\\x4983f767b1bc44328e434729ddabea0a064ca1ac CONST 2 -\\x5c872500c00565505f3624ab435c222e558e9ff8 COT 18 -\\x19dB077A54dEa3fD4CBCd9d31D4dB297562CbD94 COTBNT 18 -\\x4688a8b1F292FDaB17E9a90c8Bc379dC1DBd8713 COVER 18 -\\x88d50b466be55222019d71f9e8fae17f5f45fca1 CPT 8 -\\x2ba592f78db6436527729929aaf6c908497cb200 CREAM 18 -\\xc4cb5793bd58bad06bf51fb37717b86b02cbe8a4 CREDIT 18 -\\x4e0603e2a27a30480e5e3a4fe548e29ef12f64be CREDO 18 -\\x158079ee67fce2f58472a96584a73c7ab9ac95c1 cREP 8 -\\xcbc1065255cbc3ab41a6868c22d1f1c573ab89fd CRETH2 18 -\\xa0b73e1ff0b80914ab6fe0444e65848c4c34450b CRO 8 -\\x825a64810e3ee35bd64c940140ea91a609608abe CRTS 18 -\\xD533a949740bb3306d119CC777fa900bA034cd52 CRV 18 -\\x46b9ad944d1059450da1163511069c718f699d31 CS 6 -\\xf5dce57282a584d2746faf1593d3121fcac444dc cSAI 8 -\\xea11755ae41d889ceec39a63e6ff75a02bc1c00d CTXC 18 -\\x5c406d99e04b8494dc253fcc52943ef82bca7d75 cUSD 6 -\\x39aa39c021dfbae8fac545936693ac917d5e7563 cUSDC 8 -\\xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9 cUSDT 8 -\\x41e5560054824ea6b0732e656e3ad64e20e94e45 CVC 8 -\\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1 CVP 18 -\\xc11b1268c1a384e55c48c2391d8d480264a3a7f4 cWBTC 8 -\\xb3319f5d18bc0d84dd1b4825dcde5d5f7266d407 cZRX 8 -\\x6b175474e89094c44da98b954eedeac495271d0f DAI 18 -\\xee01b3AB5F6728adc137Be101d99c678938E6E72 DAIBNT 18 -\\xcb913ED43e43cc7Cec1D77243bA381615101E7E4 DAIUSDB 18 -\\x9b70740e708a083c6ff38df52297020f5dfaa5ee DAN 10 -\\x0cf0ee63788a0849fe5297f3407f701e122cc023 DATA 18 -\\xd82df0abd3f51425eb15ef7580fda55727875f14 DAV 18 -\\x1559295394b36fce85cc6b92dc52ea0acca8c79d DAVCC 18 -\\x02b67949695111bd016bc649279550e7f3ceddc5 DAVSG 18 -\\x01582f53baad0fa7678565ea8632b7b933f2a323 DAVSM 18 -\\xb94932c26ae9adacb2d8669d72a422409e467534 DAVTG 18 -\\x6b82bc2e2f0cde90c768a001cd6a220a65f09758 DAVTR 18 -\\x95f1d54ce40eb1e1da2a2667fbed6c707de81ce7 DAVYT 18 -\\xe814aee960a85208c3db542c53e7d4a6c8d5f60f DAY 18 -\\x9b68bfae21df5a510931a262cecf63f41338f264 DBET 18 -\\x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6 DCN 0 -\\xbded3f7537e75d6c38c036a3a788a549afde12b1 DCS 8 -\\x8d1ce361eb68e9e05573443c407d4a3bed23b033 DEFI++ 18 -\\x78f225869c08d478c34e5f645d07a87d3fe8eb78 DEFI + L 18 -\\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c DEFI + S 18 -\\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41 DEFI5 18 -\\x126c121f99e1E211dF2e5f8De2d96Fa36647c855 DEGEN 18 -\\x3597bfd533a99c9aa083587b074434e61eb0a258 DENT 8 -\\x28f2c01a3d86ee4faf037147f0aeb49c2eab47ce DESH 18 -\\x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0 DEXTF 18 -\\x46bFA3Bb807B5c3b3Ce7F7e0E667397020B6dc15 DFST 18 -\\xee06a81a695750e71a662b51066f2c74cf4478a0 DG 18 -\\x53C8395465A84955c95159814461466053DedEDE DG 18 -\\xe0b7927c4af23765cb51314a0e0521a9645f0e2a DGD 9 -\\x1c83501478f1320977047008496dacbd60bb15ef DGTX 18 -\\x4f3afec4e5a3f2a6a1a411def7d7dfe50ee057bf DGX 9 -\\xca1207647Ff814039530D7d35df0e1Dd2e91Fa84 DHT 18 -\\x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419 DIA 18 -\\xEd91879919B71bB6905f23af0A68d231EcF87b14 DMG 18 -\\x2ccbff3a042c68716ed2a2cb0c544a9f1d1935e1 DMT 8 -\\x0abdace70d3790235af448c88547603b945604ea DNT 18 -\\x23d80c4ee8fb55d4183dd9329296e176dc7464e1 DONUT 18 -\\xbc4171f45EF0EF66E76F979dF021a34B46DCc81d DORA 18 -\\xad32A8e6220741182940c5aBF610bDE99E737b2D DOUGH 18 -\\x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b DPI 18 -\\x01b3ec4aae1b8729529beb4965f27d008788b0eb DPP 18 -\\x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e DRGN 18 -\\xa7774F9386E1653645E1A08fb7Aae525B4DeDb24 DRGNBNT 18 -\\x9af4f26941677c706cfecf6d3379ff01bb85d5ab DRT 8 -\\x69b148395ce0015c13e36bffbad63f49ef874e03 DTA 18 -\\xc20464e0c373486d2b3335576e83a218b1618a5e DTRC 18 -\\x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5 DUCK 18 -\\x5BC25f649fc4e26069dDF4cF4010F9f706c23831 DUSD 18 -\\xa1d65e8fb6e87b60feccbc582f7f97804b725521 DXD 18 -\\x9cb2f26a23b8d89973f08c957c4d7cdf75cd341c DZAR 6 -\\x27fbdd15fb0820b50b9c3683ea628bb6ab9b2d70 EBATo 18 -\\x08711d3b02c8758f2fb3ab4e80228418a7f8e39c EDG 0 -\\xced4e93198734ddaff8492d525bd258d49eb388e EDO 18 -\\xc528c28fec0a90c083328bc45f587ee215760a0f EDR 18 -\\x47ec6af8e27c98e41d1df7fb8219408541463022 EFOOD 18 -\\x5e8f0e658aff673aa635a889c5b4f38f12e2a740 EGX 18 -\\x4ecdb6385f3db3847f9c4a9bf3f9917bb27a5452 EKT 8 -\\x6c37bf4f042712c978a73e3fd56d1f5738dd7c43 ELET 18 -\\xbf2179859fc6d5bee9bf9158632dc51678a4100e ELF 18 -\\x0F2318565f1996CB1eD2F88e172135791BC1FcBf ELFBNT 18 -\\xc7c03b8a3fc5719066e185ea616e87b88eba44a3 ELI 18 -\\x9a07fd8a116b7e3be9e6185861496af7a2041460 EMCO 18 -\\xd97e471695f73d8186deabc1ab5b8765e667cd96 EMCO 18 -\\x37be876ef051eb8eddd0745107c5222d8ca8ec60 EMIT1USDB 18 -\\x2a3a6596b35735efac3577dc36bf750bfe5888e8 EMIT1USDB2FCO 18 -\\xb5f278ee11811efec0692ec61b1e9f9984f2de11 EMIT 3 -\\xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4 ENG 8 -\\xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c ENJ 18 -\\xf3aD2cBc4276eb4B0fb627Af0059CfcE094E20a1 ENJBNT 18 -\\x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0 EOS 18 -\\xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea ERC20 18 -\\x36F3FD68E7325a35EB768F1AedaAe9EA0689d723 ESD 18 -\\xd6a55c63865affd67e2fb9f284f87b7a9e5ff3bd ESH 18 -\\xdf329603bd378021698f9833cd5205b52f9e370e ESH 18 -\\x0efc2390c79c47452898a234a27f2b9c39a7a725 EST 18 -\\xe8a1df958be379045e2b46a31a98b93a2ecdfded ESZ 18 -\\x ETH 18 -\\x14580a45324d0d35dc08edf982007a44325e3730 ETH 18 -\\x55370c60fca4929867f8e0e59acfc6198bdca274 ETH 18 -\\x65558b5b48dca1ed00dbd677c02faba8a6eb270f ETH 18 -\\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE ETH 18 -\\xa0158a5b778e792e861bb44ae663ff9dba1eb427 ETH 18 -\\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315 ETH 18 -\\xd76b5c2a23ef78368d8e34288b5b65d616b746ae ETH 18 -\\xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd ETH2x - FLI 18 -\\x59E9261255644c411AfDd00bD89162d09D862e38 ETHA 18 -\\xb1CD6e4153B2a390Cf00A6556b0fC1458C4A5533 ETHBNT 18 -\\xe0c6ce3e73029f201e5c0bedb97f67572a93711c ETHPLO 6 -\\xa2dca1505b07e39f96ce41e875b447f46d50c6fc ETHS 18 -\\x482c31355F4f7966fFcD38eC5c9635ACAe5F4D4F ETHUSDB 18 -\\xdb25f211ab05b1c97d595516f45794528a807ad8 EURS 2 -\\xFC0e04Eae452c163883AAAd4Ac1AE091Cc87FEf3 EURSBNT 18 -\\xabdf147870235fcfc34153828c769a70b3fae01f EURT 6 -\\x5aaEFe84E0fB3DD1f0fCfF6fA7468124986B91bd EVED 18 -\\xefbd6d7def37ffae990503ecdb1291b2f7e38788 EVO 18 -\\x178c820f862B14f316509ec36b13123DA19A6054 EWTB 18 -\\x5e6f3bc1186132565946fea123181529e7aeafd8 eXAU 18 -\\xE58E751abA3B9406367B5F3CbC39c2Fa9B519789 EXO 18 -\\xa0246c9032bC3A600820415aE600c6388619A14D FARM 18 -\\x4cbdaea41e4c864477e1430a896d9e3bac11f593 FCO 0 -\\xee4dc4c5ca843b83035d8e5159ac1bd1b4ebdff5 FCO 18 -\\x94a2aaa374a8f2d52dad24330c8a0ec2934700ae FCOUSDB 18 -\\x009e864923b49263c7f10d19b7f8ab7a9a5aad33 FKX 18 -\\xf04a8ac553fcedb5ba99a64799155826c136b0be FLIXX 18 -\\x01fb4a9a68dd46852addfa98321def44289b7d8d FNCD 18 -\\x04b7c9b88c1d33f0293449aa81b143272bcb2a8b FNCD 18 -\\x07be1d613ec9a7965bbe98064e66e3b3d648da66 FNCD 18 -\\x151a1eb5a1c989cdca7a48c07a1a5ae0ef80ea0d FNCD 18 -\\x15887c0a2ee20e2b6f22a977b18bce47c5c5a2f2 FNCD 18 -\\x2561df6c7ee681864c8a1245aa51a06a1e22a52b FNCD 18 -\\x26157a6e4f84c49942e32484d4728aa6e05c6417 FNCD 18 -\\x304b137223b0b240ba9e86d49aafc152a11b6dc2 FNCD 18 -\\x3796878de516db33cf1cba0b7d333cd1db96434e FNCD 18 -\\x3798e0b7453b2954d61cbc86bbea2d52292531bf FNCD 18 -\\x536cb3bafccb17537ba581b0ac4355f7e19df395 FNCD 18 -\\x6ec5a9d14d5206cad15b32e4bbe5e0b0be30ce14 FNCD 18 -\\x84a9986f4d04e73bc9442245b8dfef7f77305637 FNCD 18 -\\x8e0f05cd0e4e9dc28dbba761aac1f59337d1c455 FNCD 18 -\\x910822f6844304afb34ae8d7db619cdfa498ad49 FNCD 18 -\\x994e4008bcdc6cf08094fd08bb4418e70b6d686d FNCD 18 -\\x9fd85ca57f20e7a39726e0e9cfad51f45bb2b0e3 FNCD 18 -\\xa0bbe61f8705d0dde7fa46f78a148c913b260c35 FNCD 18 -\\xb2db902091500cd04f41396d664dfa653517af68 FNCD 18 -\\xb7f5497f2ae792d59608c9a046b141cd29f3b526 FNCD 18 -\\xbfc615ab171d10a4e6498549cd3a46766feefe01 FNCD 18 -\\xc3308318eca1eab76d2f4b52c310289ae526c8ca FNCD 18 -\\xce6437ee4932cfba3ecaefb93a1929a379b13b24 FNCD 18 -\\xcf97b4f961fa247cd60eb3cbf92a135fa2c9cc5d FNCD 18 -\\xd2a3e62ca1658421a8a711bd1f8ed9d01780e6e6 FNCD 18 -\\xd609609fdf3a6ea89d5ea981af5ce5c3c3daa44a FNCD 18 -\\xe23a3a78b131553c0bab4323bba7f61f6950bdaa FNCD 18 -\\xf0fd2500bd31a56cf1a3839e32fd28e11cda60b3 FNCD 18 -\\xfb6f6467724b7cdc75a1977812d78b7467f69d77 FNCD 18 -\\xfc382c9f9f65a66bbd3b35e10e7ac5a7abf11c8f FNCD 18 -\\xdc5864ede28bd4405aa04d93e05a0531797d9d59 FNT 6 -\\x4946fcea7c692606e8908002e55a582af44ac121 FOAM 18 -\\xd8b8e1eca89da014e67fdbc2014eaa8e171079bf FRECNX 18 -\\x44aa95fa2e84d3acdacdeffe16d9b5ed0498cc8b FREELINK 18 -\\x48df4e0296f908ceab0428a5182d19b31fc037d6 FRV 8 -\\xd0352a019e9ab9d757776f532377aaebd36fd541 FSN 18 -\\xb414f8ec2d14c64f37b1559cbe43746284514596 FTH 18 -\\x4E15361FD6b4BB609Fa63C81A2be19d873717870 FTM 18 -\\x2023dcf7c438c8c8c0b0f28dbae15520b4f3ee20 FTR 18 -\\x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9 FTX Token 18 -\\xd559f20296ff4895da39b5bd9add54b442596a61 FTX 18 -\\x419d0d8bdd9af5e606ae2232ed285aff190e711b FUN 8 -\\xbf5496122cf1bb778e0cbe5eab936f2be5fc0940 FUNDZ 18 -\\x970B9bB2C0444F5E81e9d0eFb84C8ccdcdcAf84d FUSE 18 -\\x4a57e687b9126435a9b19e4a802113e266adebde FXC 18 -\\x15D4c048F83bd7e37d49eA4C83a07267Ec4203dA GALA 8 -\\x543ff227f64aa17ea132bf9886cab5db55dcaddf GEN 18 -\\xfb1e5f5e984c28ad7e228cdaa1f8a0919bb6a09b GES 18 -\\x5972CED550248B17c9F674639D33E5446b6ad95A GESBNT 18 -\\x8a854288a5976036a725879164ca3e91d30c6a1b GET 18 -\\x4c327471C44B2dacD6E90525f9D629bd2e4f662C GHOST 18 -\\x3F382DbD960E3a9bbCeaE22651E88158d2791550 GHST 18 -\\xae4f56f072c34c0a65b3ae3e4db797d831439d93 GIM 8 -\\xf6537fe0df7f0cc0985cf00792cc98249e73efa0 GIV 8 -\\xF2BA4AFcBE22F0e626d67D8f31E96428706282e9 GLDR 18 -\\x6810e776880c02933d47db1b9fc05908e5386b96 GNO 18 -\\xd7eB9DB184DA9f099B84e2F86b1da1Fe6b305B3d GNOBNT 18 -\\xa74476443119a942de498590fe1f2454d7d4ac0d GNT 18 -\\x6ec8a24cabdc339a06a172f8223ea557055adaa5 GNX 9 -\\x61d40b844ea5b68c9c504fccdb05b68c2d7ae965 GOLD 18 -\\x4FbB350052Bca5417566f188eB2EBCE5b19BC964 GRG 18 -\\x12b19d3e2ccc14da04fae33e63652ce469b3f2fd GRID 12 -\\x618acb9601cb54244f5780f09536db07d2c7acf4 GRIG 2 -\\xe245286c988ebf5099287749453cf19273436c04 GRIG 2 -\\x912D734C351425Ca35f22Ab7E16524147628E61c GRIGBNT 18 -\\x1F6e51ce0533A075fDd602FbD6159763aCaB579b GRIGUSDB 18 -\\xc944E90C64B2c07662A292be6244BDf05Cda44a7 GRT 18 -\\xe530441f4f73bdb6dc2fa5af7c3fc5fd551ec838 GSE 4 -\\xaac41EC512808d64625576EDdd580e7Ea40ef8B2 GSWAP 18 -\\xc5bbae50781be1669306b9e001eff57a2957b09d GTO 5 -\\xc4938292EA2d3085fFFc11C46B87CA068a83BE01 GTOBNT 18 -\\x056fd409e1d7a124bd7017459dfea2f387b6d5cd GUSD 2 -\\x103c3a209da59d3e7c4a89307e66521e081cfdf0 GVT 18 -\\x0316eb71485b0ab14103307bf65a021042c6d380 HBTC 18 -\\x3363d570f6df3c74d486bb8785d3ebfb9e2347d3 HEDG 18 -\\xf1290473e210b2108a85237fbcd7b6eb42cc654f HEDG 18 -\\x584bC13c7D411c00c01A62e8019472dE68768430 HEGIC 18 -\\x2e91e3e54c5788e9fdd6a181497fdcea1de1bcc1 HERC 18 -\\x2b591e99afe9f32eaa6214f7b7629768c40eeb39 HEX 8 -\\x9afb950948c2370975fb91a441f36fdc02737cd4 HFIL 18 -\\xf5581dfefd8fb0e4aec526be659cfab1f8c781da HOPR 18 -\\x6c6ee5e31d828de241282b9606c8e98ea48526e2 HOT 18 -\\x9af839687f6c94542ac5ece2e317daae355493a1 HOT 18 -\\xf8a2ed21fea517665b35ac824387bf9b41c71919 HOTEL 18 -\\x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2 HPB 18 -\\x6f259637dcd74c767781e37bc6133cd6a68aa161 HT 18 -\\x46ae264bf6d9dc6dd84c31064551f961c67a755c HTX 18 -\\xdf574c24545e5ffecb9a659c229253d4111d87e1 HUSD 8 -\\x2630997aab62fa1030a8b975e1aa2dc573b18a13 HYPE 18 -\\x8A8079c7149B8A1611e5C5d978DCA3bE16545F83 iADA 18 -\\xf6E9b246319ea30e8C2fA2d1540AAEBF6f9E1B89 iBCH 18 -\\x67B66C99D3Eb37Fa76Aa3Ed1ff33E8e39F0b9c7A ibETH 18 -\\x7c8f07ac5b0a2876ee582a661d53de2d0bbad96f iBNB 18 -\\xAFD870F32CE54EfdBF677466B612bf8ad164454B iBNB 18 -\\x2b143041a6f8be9dcc66e9110178a264a223a3bd iBTC 18 -\\xD6014EA05BDe904448B743833dDF07c3C7837481 iBTC 18 -\\x336213e1DDFC69f4701Fc3F86F4ef4A160c1159d iCEX 18 -\\x903bEF1736CDdf2A537176cf3C64579C3867A881 ICHI 9 -\\x888666ca69e0f178ded6d75b5726cee99a87d698 ICN 18 -\\xb5a5f22694352c15b00323844ad545abb2b11028 ICX 18 -\\xCB98f42221b2C251A4E74A1609722eE09f0cc08E iDASH 18 -\\x14d10003807AC60d07BB0ba82cAeaC8d2087c157 iDEFI 18 -\\xb705268213d593b8fd88d3fdeff93aff5cbdcfae IDEX 18 -\\xF4EebDD0704021eF2a6Bbe993fdf93030Cd784b4 iEOS 18 -\\xd50c1746D835d2770dDA3703B69187bFfeB14126 iETC 18 -\\xA9859874e1743A32409f75bB11549892138BBA1E iETH 18 -\\xd4fb1706ae549febec06bb7175b08010dd1b0c2e iETH 18 -\\xb1a5b7e9a268742b9b5d2455ffcf43babc6929ba IGA 18 -\\x2d7aC061fc3db53c39fe1607fB8cec1B2C162B01 iLINK 18 -\\x79da1431150C9b82D2E5dfc1C68B33216846851e iLTC 18 -\\x767FE9EDC9E0dF98E07454847909b5E959D7ca0E ILV 18 -\\x3212b29E33587A00FB1C83346f5dBFA69A458923 imBTC 8 -\\xeaf60da0199be2f62005225248705de774582328 iMKR 18 -\\x17aa18a4b64a55abed7fa543f2ba4e91f2dce482 INB 18 -\\xf8e386eda857484f5a12e4b5daa9984e06e73705 IND 18 -\\x0954906da0Bf32d5479e25f46056d22f08464cab INDEX 18 -\\xc9859fccc876e6b4b3c749c5d29ea04f48acb74f INO 0 -\\x5b2e4a700dfbc560061e957edec8f6eeeb74a320 INS 10 -\\xc72fe8e3dd5bef0f9f31f259399f301272ef2a2d INSTAR 18 -\\x544c42fBB96B39B21DF61cf322b5EDC285EE7429 INSUR 18 -\\xece83617db208ad255ad4f45daf81e25137535bb INV 8 -\\x4485561Db76614Ff727f8E0a3Ea95690b8b16022 INVOX 18 -\\xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab IOST 18 -\\x6fb3e0a217407efff7ca062d46c26e5d60a14d69 IOTX 18 -\\x51ee82641ac238bde34b9859f98f5f311d6e4954 IQT 8 -\\x697ef32b4a3f5a4c39de1cb7563f24ca7bfc5947 ISLA 18 -\\xC5807183a9661A533CB08CbC297594a0B864dc12 iTRX 18 -\\xcd8d927f2cb03d2efb7f96ceb66ec4976843e012 iTRX 18 -\\x4AdF728E2Df4945082cDD6053869f51278fae196 iXMR 18 -\\x27269b3e45A4D3E79A3D6BFeE0C8fB13d0D711A6 iXRP 18 -\\x8deef89058090ac5655A99EEB451a4f9183D1678 iXTZ 18 -\\xc2992b2c22238f296c2f429ee2f7afb462ed1750 iXTZ 18 -\\x0d262e5dc4a06a0f1c90ce79c7a60c09dfc884e4 J8T 8 -\\xa5fd1a791c4dfcaacc963d4f73c6ae5824149ea7 JNT 18 -\\x1368452Bfb5Cd127971C8DE22C58fBE89D35A6BF JNTR / e 18 -\\xcd899e343a192ac3ce6530cE0ED9009275a2c701 JNTR 18 -\\xfb725bab323927cfb20fb82ba9a1975f7d24705b JOY 18 -\\x081d3ccbf23b0edcae2bf05af5f6ecee12c4cdcf JPYT 18 -\\x8f81d11f95461872c7d803cd6ffecf3163a8fd4f JPYT 18 -\\x8a9c67fee641579deba04928c4bc45f66e26343a JRT 18 -\\x4827e558e642861Cd7a1C8f011b2B4661F8d51fa JRTUSDB 18 -\\xBD6467a31899590474cE1e84F70594c53D628e46 KAI 18 -\\xf3586684107ce0859c44aa2b2e0fb8cd8731a15a KBC 7 -\\x039b5649a59967e3e936d7471f9c3700100ee1ab KCS 6 -\\x85eee30c52b0b379b046fb0f85f4f3dc3009afec KEEP 18 -\\x4cc19356f2d37338b9802aa8e8fc58b0373296e7 KEY 18 -\\x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5 KIN 18 -\\x4618519de4c304f3444ffa7f812dddc2971cc688 KIND 8 -\\xCbfef8fdd706cde6F208460f2Bf39Aa9c785F05D KINE 18 -\\xdd974d5c2e2928dea5f71b9825b8b646686bd200 KNC 18 -\\x248AFFf1aa83cF860198ddeE14b5b3E8eDb46d47 KNCBNT 18 -\\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44 KP3R 18 -\\x952bbd5344ca0a898a1b8b2ffcfe3acb1351ebd5 KRO 18 -\\xdf1338fbafe7af1789151627b886781ba556ef9a KUE 18 -\\x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C KYL 18 -\\x5102791ca02fc3595398400bfe0e33d7b6c82267 LDC 18 -\\x80fb784b7ed66730e8b1dbd9820afd29931aab03 LEND 18 -\\x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3 LEO 18 -\\x514910771af9ca656af840dff83e8264ecf986ca LINK 18 -\\x6E4DB478e55745A8711eCFf193C9d95e970Eb001 LINKUSDB 18 -\\xfC4A2Cd574bdcC385173f03A6a52cC3B853BB9d4 LKSC 18 -\\x49bd2da75b1f7af1e4dfd6b1125fecde59dbec58 LKY 18 -\\x5e3346444010135322268a4630d2ed5f8d09446c LOC 18 -\\x38838B895cbf02048455Fb7f649D97C564fC18a8 LOCBNT 18 -\\x9c23d67aea7b95d80942e3836bcdf7e708a747c2 LOCI 18 -\\xa4e8c3ec456107ea67d3075bf9e3df3a75823db0 LOOM 18 -\\x58b6a8a3302369daec383334672404ee733ab239 LPT 18 -\\x99295f1141d58a99e939f7be6bbe734916a875b8 LPL 18 -\\xbbbbca6a901c926f240b89eacb641d8aec7aeafd LRC 18 -\\xef68e7c694f40c8202821edf525de3782458639f LRC 18 -\\x5b09a0371c1da44a8e24d36bf5deb1141a84d875 MAD 18 -\\xe25bcec5d3801ce3a794079bf94adf1b8ccd802d MAN 18 -\\x0f5d2fb29fb7d3cfee444a200298f468908cc942 MANA 18 -\\x79d83B390cF0EDF86B9EFbE47B556Cc6e20926aC MANABNT 18 -\\x67c597624B17b16fb77959217360B7cD18284253 MARK 9 -\\x69af81e73a73b40adf4f3d4223cd9b1ece623074 MASK 18 -\\x0fe629d1E84E171f8fF0C1Ded2Cc2221Caa48a3f MASK 18 -\\x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 MATIC 18 -\\x945Facb997494CC2570096c74b5F66A3507330a1 mBTC 18 -\\xa38b7ee9df79955b90cc4e2de90421f6baa83a3d MC 18 -\\xb63b606ac810a52cca15e44bb630fd42d8d1d83d MCO 8 -\\x51db5ad35c671a87207d88fc11d593ac0c8415bd MDA 18 -\\x814e0908b12a99fecf5bc101bb5d0b8b5cdf7d26 MDT 18 -\\x0ecdd783dc7bf820614044b51862ed29714d2ba5 MDZA 18 -\\xfd1e80508f243e64ce234ea88a5fd2827c71d4b7 MEDX 8 -\\xD5525D397898e5502075Ea5E830d8914f6F0affe MEME 8 -\\xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e MET 18 -\\x7F8c53072d9B809A108b1A9D677Bcc3B7B3F844e METUSDB 18 -\\x6710c63432a2de02954fc0f851db07146a6c0312 MFG 18 -\\xdf2c7238198ad8b389666574f2d8bc411a4b7428 MFT 18 -\\x4319f9130848544afB97e92cb3Ea9fdb4b0A0B2a MFTBNT 18 -\\x80f222a749a2e18eb7f676d371f19ad7efeee3b7 MGN 18 -\\x40395044ac3c0c57051906da938b54bd6557f212 MGO 8 -\\x0cb20b77adbe5cd58fcecc4f4069d04b327862e5 MGT 8 -\\xa207ef81c35848a60a732005a42fae0ba89a9be2 MGT 4 -\\xe3d0a162fcc5c02c9448274d7c58e18e1811385f MHLK 2 -\\x09a3ecafa817268f77be1283176b946c4ff2e608 MIR 18 -\\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 MKR 18 -\\xf553E6eA4CE2F7dEEcbe7837E27931850eC15faB MKRBNT 18 -\\xbeb9ef514a379b997e0798fdcc901ee474b6d9a1 MLN 18 -\\xec67005c4e498ec7f55e092bd1d35cbc47c91892 MLN 18 -\\x0d6777bfc95b284ea9246c889e99903641129d72 MLNUSDB 18 -\\x83cee9e086a77e492ee0bb93c2b0437ad6fdeccc MNTP 18 -\\x8DA321aB610cD24fB2bcCe191F423Dae7c327ca9 MNTPBNT 18 -\\x2ef27bf41236bd859a95209e17a43fbd26851f92 MORPH 4 -\\xcbee6459728019cb1f2bb971dde2ee3271bc7617 MRG 18 -\\x7b0c06043468469967dba22d1af33d77d44056c8 MRPH 4 -\\xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2 MTA 18 -\\xf433089366899d83a9f26a773d59ec7ecf30355e MTL 8 -\\xe2f2a5C287993345a840Db3B0845fbC70f5935a5 mUSD 18 -\\xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81 MUSE 18 -\\x6a750d255416483bec1a31ca7050c6dac4263b57 MXM 18 -\\x8e766f57f7d16ca50b4a0b90b88f6468a09b0439 MXM 18 -\\x5d60d8d7ef6d37e16ebabc324de3be57f135e0bc MYB 18 -\\xe1ac9eb7cddabfd9e5ca49c23bd521afcdf8be49 MYC 18 -\\xa645264C5603E96c3b0B078cdab68733794B0A71 MYST 8 -\\x5d65d971895edc438f465c17db6992698a52318d NAS 18 -\\x809826cceab68c387726af962713b64cb5cb3cca nCash 18 -\\xcc80c051057b774cd75067dc48f8987c4eb97a5e NEC 18 -\\xa823e6722006afe99e91c30ff5295052fe6b8e32 NEU 18 -\\xb62132e35a6c13ee1ee0f84dc5d40bad8d815206 NEXO 18 -\\x515d562496C43487eb2DDce1a2A7721148D44E36 NEXOUSDB 18 -\\x87d73E916D7057945c9BcD8cdd94e42A6F47f776 NFTX 18 -\\x1776e1f26f98b1a5df9cd347953a26dd3cb46671 NMR 18 -\\x58a4884182d9e835597f405e5f258290e46ae7c2 NOAH 18 -\\xfc858154c0b2c4a3323046fb505811f110ebda57 NOIA 18 -\\xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3 NPXS 18 -\\x20945cA1df56D237fD40036d47E866C7DcCD2114 Nsure 18 -\\xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c NULS 18 -\\xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b NXM 18 -\\x985dd3d42de1e256d09e1c10f112bccb8015ad41 OCEAN 18 -\\x967da4048cD07aB37855c090aAF366e4ce1b9F48 OCEAN 18 -\\x4092678e4e78230f46a1534c0fbc8fa39780892b OCN 18 -\\xbf52f2ab39e26e0951d2a02b49b7702abe30406a ODE 18 -\\xd26114cd6ee289accf82350c8d8487fedb8a0c07 OMG 18 -\\x99eBD396Ce7AA095412a4Cd1A0C959D6Fd67B340 OMGBNT 18 -\\x2b17b8927a8e9844b6ca11c5e0e818bb633c044d OMNIS 18 -\\xd341d1680eeee3255b8c4c75bcce7eb57f144dae ONG 18 -\\x8104E7ce81FaB39c42e34Cd9d8B654135261Fae8 ONGBNT 18 -\\x4c11249814f11b9346808179cf06e71ac328c1b5 ORAI 18 -\\xd6cb2adf47655b1babddc214d79257348cbc39a7 ORCL5 18 -\\xc6abf3c09341741ac6041b0b08195701bdfd460c OSA 18 -\\x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca OST 18 -\\x7c0afd49d40ec308d49e2926e5c99b037d54ee7e OUSD 18 -\\x1a5f9352af8af974bfc03399e3767df6370d82e4 OWL 18 -\\xd56dac73a4d6766464b38ec6d91eb45ce7457c44 PAN 18 -\\xea5f88e54d982cbb0c441cde4e79bc305e5b43bc PARETO 18 -\\xbb1fa4fdeb3459733bf67ebc6f893003fa976a82 PAT 18 -\\x8e870d67f660d95d5be530380d0ec0bd388289e1 PAX 18 -\\x45804880de22913dafe09f4980848ece6ecbaf78 PAXG 18 -\\xb97048628db6b661d4c2aa833e95dbe1a905b280 PAY 18 -\\x5228a22e72ccc52d415ecfd199f99d0665e7733b pBTC 18 -\\xEEF7551e59b34F431D71C7593249F61D5c52ce65 pBTCBNT 18 -\\x6B09B01c19E4bD573eae4e235ee47CBD51dF3B6E pBTCUSDB 18 -\\x8ae56a6850a7cbeac3c3ab2cb311e7620167eac8 PEG 18 -\\xa485bD50228440797Abb4d4595161d7546811160 PEG : USD 18 -\\xbC396689893D065F41bc2C6EcbeE5e0085233447 PERP 18 -\\xf53ad2c6851052a81b42133467480961b2321c09 PETH 18 -\\x429881672B9AE42b8EbA0E26cD9C73711b891Ca5 PICKLE 18 -\\x26607ac599266b21d13c7acf7942c7701a8b699c PIPT 18 -\\x87f56ee356b434187105b40f96b230f5283c0ab4 PITCH 9 -\\x02f2d4a04e6e01ace88bd2cd632875543b2ef577 PKG 18 -\\xe3818504c1b32bf1557b16c238b2e01fd3149c17 PLR 18 -\\x846c66cf71c43f80403b51fe3906b3599d63336f PMA 18 -\\x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d PNK 18 -\\x89ab32156e46f46d02ade3fecbe5fc4243b9aaed PNT 18 -\\x6758b7d441a9739b98552b373703d8d3d14f9e62 POA20 18 -\\x0e0989b1f9b8a38983c2ba8053269ca62ec9b195 POE 8 -\\x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa POLS 18 -\\x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec POLY 18 -\\x0cec1a9154ff802e7934fc916ed7ca50bde6844e POOL 18 -\\x595832f8fc6bf59c85c527fec3740a1b7a361269 POWR 6 -\\x168D7Bbf38E17941173a352f1352DF91a7771dF3 POWRBNT 18 -\\xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a PPT 8 -\\xE59064a8185Ed1Fca1D17999621eFedfab4425c9 PRIME 18 -\\x1844b21593262668b7248d0f57a220caaba46ab9 PRL 18 -\\x226bb599a12c826476e3a771454697ea52e9e220 PRO 8 -\\x9041Fe5B3FDEA0f5e4afDC17e75180738D877A01 PRO 18 -\\xf01d7939441a3b1b108c70a28dcd99c6a98ad4b4 PRTL 18 -\\x9cea2eD9e47059260C97d697f82b8A14EfA61EA5 PUNK 18 -\\x5247C0DB4044FB6F97f32C7E1B48758019A5A912 pxGOLD_MAR2022 18 -\\x4B606e9Eb2228c70f44453AFe5a73e1FeA258Ce1 pxUSD_MAR2022 18 -\\x618e75ac90b12c6049ba3b27f5d5f8651b0037f6 QASH 6 -\\x1602af2c782cc03f9241992e243290fccf73bb13 QBIT 18 -\\x3166c570935a7d8554c8f4ea792ff965d2efe1f2 QDAO 18 -\\x19683E94943E6b348D8AFB98C128B9b549B400DF QDAOBNT 18 -\\xea26c4ac16d4a5a106820bc8aee85fd0b7b2b664 QKC 18 -\\x4a220e6096b25eadb88358cb44068a3248254675 QNT 18 -\\x697beac28b09e122c4332d163985e8a73121b97f QRL 8 -\\x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d QSP 18 -\\x48f775efbe4f5ece6e0df2f7b5932df56823b990 R 0 -\\x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3 RAD 18 -\\xfca59cd816ab1ead66534d82bc21e7515ce441cf RARI 18 -\\x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd RAZOR 18 -\\x0719046cf7f82f9322479538b69a89c26a70a5bc RB 18 -\\xfc2c4d8f95002c14ed0a7aa65102cac9e5953b5e RBLX 18 -\\xf970b8e36e23f7fc3fd752eea86f8be8d83375a6 RCN 18 -\\xf7b9fa01098f22527Db205Ff9BB6FdF7C7D9F1C5 RCNBNT 18 -\\x261b45D85cCFeAbb11F022eBa346ee8D1cd488c0 rDAI 18 -\\x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6 RDN 18 -\\xcb459689182459186a5d690e3da41dc65e754645 RDNA 18 -\\x6b4389Afb3e243A65668B7311fA9Ef092A8a3B64 REAL 18 -\\x9214ec02cb71cba0ada6896b8da260736a67ab10 REAL 18 -\\x89303500a7abfb178b274fd89f2469c264951e1f REF 8 -\\x83984d6142934bb535793a82adb0a46ef0f66b6d REM 4 -\\x408e41876cccdc0f92210600ef50372656052a38 REN 18 -\\xeb4c2781e4eba804ce9a9803c67d0893436bb27d renBTC 8 -\\x1C5db575E2Ff833E46a2E9864C22F4B22E0B37C2 renZEC 8 -\\x1985365e9f78359a9b6ad760e32412f4a445e862 REP 18 -\\x4d305c2334c02e44ac592bbea681ba4cc1576de3 REPUX 18 -\\x221657776846890989a759ba2973e427dff5c9bb REPv2 18 -\\x8f8221afbb33998d8584a2b05749ba73c37a938a REQ 18 -\\xccB5E3Ba5356D57001976092795626ac3b87Ad4e REQBNT 18 -\\x557B933a7C2c45672B610F8954A3deB39a51A8Ca REVV 18 -\\xa1d6df714f91debf4e0802a542e13067f31b8262 RFOX 18 -\\x168296bb09e24a88805cb9c33356536b980d3fc5 RHOC 8 -\\x9469d013805bffb7d3debe5e7839237e535ec483 RING 18 -\\x607f4c5bb672230e8672085532f7e901544a7375 RLC 9 -\\x9003411Ac4073C2D9f37af71d00E373B72Cbe9E2 RLCBNT 18 -\\xff603f43946a3a28df5e6a73172555d8c8b02386 RNT 18 -\\xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb ROBOT 18 -\\xfa5047c9c78b8877af97bdcb85db743fd7313d4a ROOK 18 -\\xb4efd85c19999d84251304bda99e90b92300bd93 RPL 18 -\\x8762db106b2c2a0bccb3a80d1ed41273552616e8 RSR 18 -\\x86d17e2ef332293391303f188f6a467dc0d1fd0d RST100 18 -\\xf278c1ca969095ffddded020290cf8b5c424ace2 RUFF 18 -\\x3155ba85d5f96b2d030a4966af206230e46849cb RUNE 18 -\\x3d1ba9be9f66b8ee101911bc36d3fb562eac2244 RVT 18 -\\xe36E2D3c7c34281FA3bC737950a68571736880A1 sADA 18 -\\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359 SAI 18 -\\x4156d3342d5c385a87d264f90653733592000581 SALT 8 -\\x7c5a0ce9267ed19b22f8cae653f198e3e8daf098 SAN 18 -\\x3845badAde8e6dFF049820680d1F14bD3903a5d0 SAND 18 -\\xF48e200EAF9906362BB1442fca31e0835773b8B4 sAUD 18 -\\xed4699f180a14b5974c26f494483f9c327fd381a sAUD 18 -\\x36a2422a863D5B950882190Ff5433E513413343a sBCH 18 -\\x013ae307648f529aa72c5767a334ddd37aab43c3 sBNB 18 -\\x617aeCB6137B5108D1E7D4918e3725C8cEbdB848 sBNB 18 -\\x9073ee83b6ce96c444547ddcaf777b9352163581 sBTC 18 -\\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6 sBTC 18 -\\x0bc209fb72390af12bd6fd775355ea0856864b31 sCAD 18 -\\xeABACD844A196D7Faf3CE596edeBF9900341B420 sCEX 18 -\\x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d sCHF 18 -\\x28af5a2f0cc12f2f19dd946608c945456b52b3f6 sCHF 18 -\\xd7631787b4dcc87b1254cfd1e5ce48e96823dee8 SCL 8 -\\xfE33ae95A9f0DA8A845aF33516EDc240DCD711d6 sDASH 18 -\\xe1aFe1Fd76Fd88f78cBf599ea1846231B8bA3B6B sDEFI 18 -\\x77678cfd0f2b55152adc6599db9f988ab28d72f2 SDEX 18 -\\x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f SDT 18 -\\x6332e73c09125a42ff5cc0220f11f540d9d4e7e1 SEENUS 18 -\\x91856c0130f9a2b9223cfc2c672cd3ece4aea93a SEENUS 18 -\\xfb3c0a8a470068536f9f62c61f8f7f2382a62ecc SEENUS 18 -\\x6745fab6801e376cd24f03572b9c9b0d4edddccf SENSE 8 -\\x88C8Cf3A212c0369698D13FE98Fcb76620389841 sEOS 18 -\\x22602469d704BfFb0936c7A7cfcD18f7aA269375 sETC 18 -\\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb sETH 18 -\\x3eb064766109d150e4362222df80638bce00e037 sEUR 18 -\\xd71ecff9342a5ced620049e616c5035f1db98620 sEUR 18 -\\xed314bf44013612e8c00abd3cb6eade61cc8c72e SF 18 -\\x23348160D7f5aca21195dF2b70f28Fce2B0be9fC sFTSE 18 -\\x0c8a7d55ef593a2cad34894c1523162ee2ffb9ac sGBP 18 -\\x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F sGBP 18 -\\xef2463099360a085f1f10b076ed72ef625497a06 SHP 18 -\\xed0439eacf4c4965ae4613d77a5c2efe10e5f183 SHROOM 18 -\\x3a9fff453d50d4ac52a6890647b823379ba36b9e SHUF 18 -\\x6888a16ea9792c15a4dcf2f6c623d055c8ede792 SIG 18 -\\x559e848a1b6a7afc69ee27f8d20280a42628b2cf sJPY 18 -\\xF6b1C627e95BFc3c1b4c9B825a032Ff0fBf3e07d sJPY 18 -\\x4af328c52921706dcb739f25786210499169afe6 SKB 8 -\\xdce506b196b0df677d07e718f872cac9bc368a33 sKRW 18 -\\xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6 sLINK 18 -\\x37236cd05b34cc79d3715af2383e96dd7443dcf1 SLP 0 -\\xC14103C2141E842e228FBaC594579e798616ce7A sLTC 18 -\\x4140919de11fce58e654cc6038017af97f810de1 sMKR 18 -\\xe88a4976cb7d8898d39e3f317421d625403ecb8c sMKR 18 -\\xcfd6ae8bf13f42de14867351eaff7a8a3b9fbbe7 SNG 8 -\\xaec2e87e0a235266d9c5adc9deb4b2e29b54d009 SNGLS 0 -\\x757de3ac6B830a931eF178C6634c5C551773155c sNIKKEI 18 -\\x744d70fdbe2ba4cf95131626614a1763df805b9e SNT 18 -\\xa3b3c5a8b22C044D5f2d372f628245E2106D310D SNTBNT 18 -\\xc011a72400e58ecd99ee497cf89e3775d4bd732f SNX 18 -\\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f SNX 18 -\\x28271853E950bE371B050F3f93aA0146225bF374 SNXUSDB 18 -\\x79C75E2e8720B39e258F41c37cC4f309E0b0fF80 SOUL 8 -\\x42d6622dece394b54999fbd73d108123806f6a18 SPANK 18 -\\x86ed939B500E121C0C5f493F399084Db596dAd20 SPC 18 -\\x1dea979ae76f26071870f824088da78979eb91c8 SPD 18 -\\x476c5e26a75bd202a9683ffd34359c0cc15be0ff SRM 6 -\\x68d57c9a1c35f63e2c83ee8e49a64e9d70528d25 SRN 18 -\\xd6d4018a665617bfbae160c964474e79b03c6bf7 SRNSCL 18 -\\xde2b8c72012a6c52c66ea4e7534db01dfbc7d5d0 SRNTGM 18 -\\xa7de087329bfcda5639247f96140f9dabe3deed1 STA 18 -\\x9a005c9a89bd72a4bd27721e7a09a3c11d2b03c4 STAC 18 -\\x286708f069225905194673755f12359e6aff6fe1 STACS 18 -\\x0Ae055097C6d159879521C384F1D2123D1f195e6 STAKE 18 -\\xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 stETH 18 -\\x0E22734e078d6e399BCeE40a549DB591C4EA46cB STM 18 -\\xb64ef51c888972c908cfacf59b47c1afbc0ab8ac STORJ 8 -\\xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433 STORM 18 -\\x12c8b0914e6dee22c7557a0a8b928ae6cacfbcf7 STRX 18 -\\x0944d2c41fef3088467287e208e5bbb622a0c09c sTRX 18 -\\xf2E08356588EC5cd9E437552Da87C0076b4970B0 sTRX 18 -\\x918dA91Ccbc32B7a6A0cc4eCd5987bbab6E31e6D sTSLA 18 -\\x006bea43baa3f7a6f765f14f10a1a1b08334ef45 STX 18 -\\x12480e24eb5bec1a9d4369cab6a80cad3c0a377a SUB 2 -\\x57ab1e02fee23774580c119740129eac7081e9d3 sUSD 18 -\\x57ab1ec28d129707052df4df418d58a2d46d5f51 sUSD 18 -\\xb2D679F6D676f173fAF3670a074B2C3A6D7Ebe28 SUSDDAI 18 -\\x9B6678c766003aD69A15f795f433C0F62c10D4d5 sUSDUSDB 18 -\\x6b3595068778dd592e39a122f4f5a5cf09c90fe2 SUSHI 18 -\\xbdeb4b83251fb146687fa19d1c660f99411eefe3 SVD 18 -\\x87edffde3e14c7a66c9b9724747a1c5696b742e6 SWAG 18 -\\xBa21Ef4c9f433Ede00badEFcC2754B8E74bd538A SWFL 18 -\\x9e88613418cf03dca54d6a2cf6ad934a78c7a17a SWM 18 -\\xB8BAa0e4287890a5F79863aB62b7F175ceCbD433 SWRV 18 -\\x6A22e5e94388464181578Aa7A6B869e00fE27846 sXAG 18 -\\x6e5709515c767c907e43a03388cc816bd65e797c sXAG 18 -\\x261efcdd24cea98652b9700800a13dfbca4103ff sXAU 18 -\\xe05d803fa0c5832fa2262465290abb25d6c2bfa3 sXAU 18 -\\x12b306fa98f4cbb8d4457fdff3a0a0a56f07ccdf SXDT 18 -\\x222efe83d8cc48e422419d65cf82d410a276499b SXL 4 -\\x5299d6F7472DCc137D7f3C4BcfBBB514BaBF341A sXMR 18 -\\x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9 SXP 18 -\\xa2B0fDe6D710e201d0d608e924A484d1A5fEd57c sXRP 18 -\\x2e59005c5c0f0a4D77CcA82653d48b46322EE5Cd sXTZ 18 -\\xf45b14ddabf0f0e275e215b94dd24ae013a27f12 sXTZ 18 -\\x86a49f08ab6531a3e0e814c75f36de661b986ca1 SYB7 18 -\\xB6ff96B8A8d214544Ca0dBc9B33f7AD6503eFD32 SYNC 18 -\\xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c TAAS 6 -\\x7f1f2d3dfa99678675ece1c243d3f7bc3746db5d TAP 18 -\\xc27a2f05fa577a83ba0fdb4c38443c0718356501 TAU 18 -\\x00006100F7090010005F1bd7aE6122c3C2CF0090 TAUD 18 -\\x627974847450c45b60b3fe3598f4e6e4cf945b9a TBC 18 -\\x323e4d8097B0A58aB8210AC6efCC4a89285cFc6B TBCUSDB 18 -\\x8daebade922df735c38c80c7ebd708af50815faa TBTC 18 -\\x3a92bd396aef82af98ebc0aa9030d25a23b11c6b TBX 18 -\\x00000100F2A2bd000715001920eB70D229700085 TCAD 18 -\\x4824a7b64e3966b0133f4f4ffb1b9d6beb75fff7 TCT 18 -\\x1c79ab32C66aCAa1e9E81952B8AAa581B43e54E7 TEAM 4 -\\x85e076361cc813a908ff672f9bad1541474402b2 TEL 2 -\\xdd16ec0f66e54d453e6756713e533355989040e4 TEN 18 -\\xE5F166c0D8872B68790061317BB6CcA04582C912 TFD 18 -\\x00000000441378008EA67F4284A57932B1c000a5 TGBP 18 -\\x3883f5e181fccaf8410fa61e12b59bad963fb645 THETA 18 -\\x0000852600CEB001E08e00bC008be620d60031F2 THKD 18 -\\x29CbD0510EEc0327992CD6006e63F9Fa8E7f33B7 TIDAL 18 -\\x80bc5512561c7f85a3a9508c7df7901b370fa1df TIO 18 -\\xea1f346faf023f974eb5adaf088bbcdf02d761f4 TIX 18 -\\xaaaf91d9b90df800df4f55c205fd6989c977e73a TKN 8 -\\x497Ec0D6Ba2080f0ed7ecf7a79a2A907401b3239 TKNBNT 18 -\\x679131f591b4f369acb8cd8c51e68596806c3916 TLN 18 -\\xb0280743b44bf7db4b6be482b2ba7b75e5da096c TNS 18 -\\x8b353021189375591723e7384262f45709a3c3dc TOMO 18 -\\x77777feddddffc19ff86db637967013e6c6a116c TORN 18 -\\x0Ba45A8b5d5575935B8158a88C631E9F9C95a2e5 TRB 18 -\\xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b TRST 6 -\\xf230b790e05390fc8295f4d3f60332c93bed42e2 TRX 6 -\\x2c537e5624e4af88a7ae4060c022609376c8d0eb TRYb 6 -\\x0000000000085d4780b73119b644ae5ecd22b376 TUSD 18 -\\x8dd5fbce2f6a956c3022ba3663759011dd51e73e TUSD 18 -\\xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988 TVK 18 -\\x1fc31488f28ac846588ffa201cde0669168471bd UAX 2 -\\x8400d94a5cb0fa0d041a3788e395285d61c9ee5e UBT 8 -\\x290bd3a8F785a8dB30a0F6Baf9B88863b831747F UBTBNT 18 -\\x81fab276aec924fbde190cf379783526d413cf70 UGASFEB21 18 -\\x3d995510f8d82c2ea341845932b5ddde0bead9a3 UGASJAN21 18 -\\x2b5DFb7874F685BEA30b7d8426c9643A4bCF5873 UGASJUN21 18 -\\x4e110603e70b0b5f1c403ee543b37e1f1244cf28 UGASMAR21 18 -\\x09617f6fd6cf8a71278ec86e23bbab29c04353a7 ULT 18 -\\x04fa0d235c4abf4bcf4787af4cf447de572ef828 UMA 18 -\\xa478c2975ab1ea89e8196811f51a7b7ade33eb11 UNI (DAI / ETH) 18 -\\xc5be99A02C6857f9Eac67BbCE58DF5572498F40c UNI (ETH / AMPL) 18 -\\x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 UNI 18 -\\x83ee8ec605c0ae3d7f1c9e360ab45a6c1c033ab9 UNIDUB 18 -\\x3e370a6c8255b065bd42bc0ac9255b269cfcc172 UNIPOT 8 -\\xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c UOS 4 -\\x6ba460ab75cd2c56343b3517ffeba60748654d26 UP 8 -\\x1EFa978C8560aB6A50B33810328a71f4D24967Ce UPT 8 -\\x67abf1c62d8acd07ada35908d38cd67be7dfeb36 UPT 8 -\\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e USD++ 18 -\\x22a39c2dd54b71ac884657bb3e37308abe2d02e1 USD 0 -\\x1f5350558f1e3e8bf370d4d552f3ebc785bf2979 USDARY 18 -\\xd1146B08e8104EeDBa44a73B7bda1d102c6ceDC9 USDB / BNT 18 -\\x309627af60f0926daa6041b8279484312f2bf060 USDB 18 -\\x846f7a6dE1eFbd7617760eBe1B89aa8CA2094025 USDB : PEGUSD 18 -\\x36aaB614d872BEdC6eA6731339c82A3fa3aEc65B USDBNT 18 -\\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC 6 -\\x1456688345527bE1f37E9e627DA0837D6f08C925 USDP 18 -\\x4954db6391f4feb5468b6b943d4935353596aec9 USDQ 18 -\\x9921f8F53EE185a6BFD5d9D8935107934D0B07DA USDQBNT 18 -\\xdac17f958d2ee523a2206206994597c13d831ec7 USDT 6 -\\xF2ff22976B973d6bcC17a7dC93B719162ADA2045 USDTUSDB 18 -\\xEC58d3aefc9AAa2E0036FA65F70d569f49D9d1ED USTONKSAPR21 18 -\\x70a72833d6bf7f508c8224ce59ea1ef3d0ea3a38 UTK 18 -\\x9e3319636e2126e3c0bc9e3134aec5e1508a46c7 UTNP 18 -\\x16f812be7fff02caf662b85d5d58a5da6572d4df UTT 8 -\\x48Fb253446873234F2fEBbF9BdeAA72d9d387f94 vBNT 18 -\\x340d2bde5eb28c1eed91b2f790723e3b160613b7 VEE 18 -\\xc9c3A465380bFaaC486C89ff7d5F60CC275D4E08 VEEBNT 18 -\\x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 VERI 18 -\\xd850942ef8811f2a866692a623011bde52a462c1 VET 18 -\\x708b63545467a9bcfb67af92299102c650e34a0e VETH 18 -\\x2c974b2d0ba1716e644c1fc59982a89ddd2ff724 VIB 18 -\\xF938424F7210f31dF2Aee3011291b658f872e91e VISR 18 -\\x92e78dae1315067a8819efd6dca432de9dcde2e9 VRS 6 -\\x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421 VSP 18 -\\x27f610bf36eca0939093343ac28b1534a721dbb4 WAND 18 -\\x39bb259f66e1c59d5abef88375979b4d20d98022 WAX 8 -\\x67563E7A0F13642068F6F999e48c690107A4571F WAXBNT 18 -\\x7a2Bc711E19ba6aff6cE8246C546E8c4B4944DFD WAXE 8 -\\xFEE7EeaA0c2f3F7C7e6301751a8dE55cE4D059Ec WBTC 18 -\\x2260fac5e5542a773aa44fbcfedf7c193bc2c599 WBTC 8 -\\xa0afAA285Ce85974c3C881256cB7F225e3A1178a wCRES 18 -\\x123151402076fc819B7564510989e475c9cD93CA wDGLD 8 -\\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH 18 -\\x9355372396e3F6daF13359B7b607a3374cc638e0 WHALE 4 -\\x4f878c0852722b0976a955d68b376e4cd4ae99e5 WIC 8 -\\x667088b212ce3d06a1b553a7221e1fd19000d9af WINGS 18 -\\xA6Ab3c8aE51962f4582db841dE6b0A092041461e WINGSBNT 18 -\\x1b22c32cd936cb97c28c5690a0695a82abf688e6 WISH 18 -\\x1C9Df905571B22214Fa5FB10ad99ebe327f199C5 WISHBNT 18 -\\xf6b55acbbc49f4524aa48d19281a9a77c54de10f WLK 18 -\\x0d438f3b5175bebc262bf23753c1e53d03432bde wNXM 18 -\\xd075e95423C5c4BA1E122CaE0f4CdFA19b82881b wPE 18 -\\x0d7072bdc1c8a1a58a7352782d27209d64ad2ecb WPLS 18 -\\x175666d12fc722abd9e4a8ebf5d9b2d17b36b268 WSKR 18 -\\xb7cb1c96db6b22b0d3d9536e0108d062bd488f74 WTC 18 -\\x910dfc18d6ea3d6a7124a6f8b5458f281060fa4c X8X 18 -\\x28dee01d53fed0edf5f6e310bf8ef9311513ae40 XBP 18 -\\xb4272071ecadd69d933adcd19ca99fe80664fc08 XCHF 18 -\\x24dcc881e7dd730546834452f21872d5cb4b5293 XD 18 -\\x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2 XDCE 18 -\\xd1BB51fECC950c7b1e4197D8d13A1d2A60795D2C XDCEBNT 18 -\\xE4CFE9eAa8Cdb0942A80B7bC68fD8Ab0F6D44903 XEND 18 -\\x054c64741dbafdc19784505494029823d89c3b13 XET 8 -\\x6FCb6408499a7c0f242E32D77EB51fFa1dD28a7E xHDX 12 -\\xa974c709cfb4566686553a20790685a47aceaa33 XIN 18 -\\x0f7f961648ae6db43c75663ac7e5414eb79b5704 XIO 18 -\\xbc86727e770de68b1060c91f6bb6945c73e10388 XNK 18 -\\xEe769CE6B4E2C2A079c5f67081225Af7C89F874C XPATBNT 18 -\\x7de91b204c1c737bcee6f000aaa6569cf7061cb7 XRT 9 -\\xaC14864ce5A98aF3248Ffbf549441b04421247D3 xSDT 18 -\\xC0E47007e084EEF3EE58eb33D777b3B4Ca98622f XSTAR 18 -\\x8798249c2E607446EfB7Ad49eC89dD1865Ff4272 xSUSHI 18 -\\x55296f69f40ea6d20e478533c15a6b08b654e758 XYO 18 -\\x48f07301E9E29c3C38a80ae8d9ae771F224f1054 XZAR 18 -\\x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16 YAM 18 -\\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc ycDAI 18 -\\xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8 yCURVE 18 -\\x9777d7E2b60bB01759D0E2f8be2095df444cb07E ycUSDC 6 -\\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59 ycUSDT 6 -\\x4b7Fb448dF91C8Ed973494F8C8c4f12DAF3A8521 YD - BTC - JUN21 8 -\\xcBE430927370e95B4B10cFc702c6017EC7abEfC3 YD - ETH - - JUN21 18 -\\xb4bebd34f6daafd808f73de0d10235a92fbb6c3d YETI 18 -\\x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e YFI 18 -\\xcf33eb02227255c45f595727dbb24ce16afc36a2 YHTS 18 -\\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31 YPIE 18 -\\xe1237aa7f535b0cc33fd973d66cbf830354d16c7 yWETH 18 -\\x5dbcf33d8c2e976c6b560249878e6f1491bca25c YYCRV 18 -\\xbd0793332e9fb844a52a205a233ef27a5b34b927 ZB 18 -\\x05f4a42e251f2d52b8ed15e9fedaacfcef1fad27 ZIL 12 -\\x4aac461c86abfa71e9d00d9a2cde8d74e4e1aeea ZINC 18 -\\xedd7c94fd7b4971b916d15067bc454b9e1bad980 ZIPT 18 -\\x42382f39e7c9f1add5fa5f0c6e24aa62f50be3b3 ZOM 18 -\\xe41d2489571d322189246dafa5ebde1f4699f498 ZRX 18 -\\x1a3c6768e200482F5f47D1BE77B7255aBCAe4Fe2 ZRXUSDB 18 +\\xb6ed7644c69416d67b522e20bc294a9a9b405b31 0xBTC 8 +\\x111111111117dC0aa78b770fA6A738034120C302 1INCH 18 +\\xfdbc1adc26f0f8f8606a5d63b7d3a3cd21c22b23 1WO 8 +\\xa3ac41fde5f3a569fa79e81ffe6734ee8097ce9d 4XB 8 +\\xba3D9687Cf50fE253cd2e1cFeEdE1d6787344Ed5 aAAVE 18 +\\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9 AAVE 18 +\\xe1ba0fb44ccb0d11b80f92f4f8ed94ca3ff51d00 aBAT 18 +\\x6ee0f7bb50a54ab5253da0667b0dc2ee526c30a8 aBUSD 18 +\\x9a794dc1939f1d78fa48613b89b8f9d0a20da00e ABX 18 +\\x0e8d6b471e332f140e7d9dbb99e5e3822f728da6 ABYSS 18 +\\xea6d4d7b36c00b3611de0b0e1982b12e9e736c66 ACD 18 +\\x06147110022B768BA8F99A8f385df11a151A9cc8 ACE 0 +\\xcAd2d4C4469fF09aB24d02A63BCeDfCD44bE0645 ACPT 18 +\\xfc1e690f61efd961294b3e1ce3313fbd8aa4f85d aDAI 18 +\\xd0d6d6c5fe4a677d343cc433536bb717bae167dd ADT 9 +\\x4470bb87d77b963a013db939be332f927f2b992e ADX 4 +\\x5ca9a71b1d01849c0a95490cc00559717fcf0d1d AE 18 +\\x712db54daa836b53ef1ecbb9c6ba3b9efb073f40 aENJ 18 +\\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04 aETH 18 +\\x8eb24319393716668d768dcec29356ae9cffe285 AGI 8 +\\xa704fce7b309ec09df16e2f5ab8caf6fe8a4baa9 AGRI 18 +\\xEab935f35693c3218b927436E63564018E92034f AGRIBNT 18 +\\x7db5454f3500f28171d1f9c7a38527c9cf94e6b2 AGS 4 +\\x37e8789bb9996cac9156cd5f5fd32599e6b91289 AID 18 +\\xe3BF775Ec5f4F4dFCbb21194B22be1217b815b1d AIDBNT 18 +\\x3A810ff7211b40c4fA76205a14efe161615d0385 AIN 18 +\\x4ceda7906a5ed2179785cd3a40a69ee8bc99c466 AION 8 +\\x1063ce524265d5a3a624f4914acd573dd89ce988 AIX 18 +\\xA415cD56C694bd7402d14560D18Bb19A28F77617 AIXBNT 18 +\\x9d91be44c06d373a8a226e1f3b146956083803eb aKNC 18 +\\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7 AKRO 18 +\\x00a8b738E453fFd858a7edf03bcCfe20412f0Eb0 ALBT 18 +\\xdBdb4d16EdA451D0503b854CF79D55697F90c8DF ALCX 18 +\\x7d2d3688df45ce7c552e19c27e007673da9204b8 aLEND 18 +\\x27702a26126e0B3702af63Ee09aC4d1A084EF628 ALEPH 18 +\\xa64bd6c70cb9051f6a9ba1f163fdc07e0dfb5f84 aLINK 18 +\\xea610b1153477720748dc13ed378003941d84fab ALIS 18 +\\x1b7b723e66a0dd33e8f5e8ec039b51acafcd66a5 ALN 18 +\\xa78a391A060B3B904EbA36E4f28B97d86cE0548A ALPH 18 +\\xa1faa113cbe53436df28ff0aee54275c13b40975 ALPHA 18 +\\x6fce4a401b6b80ace52baaefe4421bd188e76f6f aMANA 18 +\\x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce AMB 18 +\\x7deb5e830be29f91e298ba5ff1356bb7f8146998 aMKR 18 +\\x737f98ac8ca59f2c68ad658e3c3d8c8963e40a4c AMN 18 +\\x0f9Be347378a37CED33A13AE061175AF07CC9868 AMNBNT 18 +\\xff20817765cb7f73d4bde2e66e067e58d11095c2 AMP 18 +\\xd46ba6d942050d489dbd938a2c909a5d5039a161 AMPL 9 +\\x0e2145A23f7810431Ba0f2e19676530b3F1Fb0EC AMPLBNT 18 +\\x3c45b24359fb0e107a4eaa56bd0f2ce66c99a0e5 ANK 18 +\\x437F7d93540094Da58F337644ba7D6E5Ad823564 ANKBNT 18 +\\x960b236a07cf122663c4303350609a66a7b288c0 ANT 18 +\\xa117000000f279D81A1D3cc75430fAA017FA5A2e ANT 18 +\\x0c485BffD5df019F66927B2C32360159884D4409 ANTBNT 18 +\\x9ab165d795019b6d8b3e971dda91071421305e5a AOA 18 +\\x584267b60874132f82ef1554f6e079a23aab4408 APC 18 +\\xEC6a5D88bF56Fd3F96957AE65916C69F29DB35c5 apeUSD-AAVE-DEC21 18 +\\x0f775aD69e3c93D599D3315A130Bd82A0cDda397 apeUSD-LINK-DEC21 18 +\\x5C6Af72cBd740b90528C8Fe226125413b6bd7E5A apeUSD-SNX-DEC21 18 +\\xfA5e27893aee4805283D86e4283Da64F8c72dd56 apeUSD-UMA-DEC21 18 +\\xFbB6B34DD77274a06EA2E5462a5e0B9E23ce478e apeUSD-UNI-DEC21 18 +\\x0b38210ea11411557c13457D4dA7dC6ea731B88a API3 18 +\\x4c0fbe1bb46612915e7967d2c3213cd4d87257ad APIS 18 +\\x95a4492F028aa1fd432Ea71146b433E7B4446611 APY 18 +\\x69948cc03f478b95283f7dbf1ce764d0fc7ec54c aREN 18 +\\x71010a9d003445ac60c4e6a7017c1e89a477b438 aREP 18 +\\x1337def16f9b486faed0293eb623dc8395dfe46a ARMOR 18 +\\x328c4c80bc7aca0834db37e6600a6c49e12da4de aSNX 18 +\\xfa2562da1bba7b954f26c74725df51fb62646313 ASSY 18 +\\x27054b13b1b798b345b591a4d22e6562d47ea75a AST 4 +\\x625ae63000f46200499120b906716420bd059240 aSUSD 18 +\\x2daee1aa61d60a252dc80564499a69802853583a ATS 4 +\\x4da9b813057d04baef4e5800e36083717b4a0341 aTUSD 18 +\\xc12d099be31567add4e4e4d0d45691c3f58f5663 AUC 18 +\\x18aAA7115705e8be94bfFEBDE57Af9BFc265B998 AUDIO 18 +\\xB124541127A0A657f056D9Dd06188c4F1b0e5aab aUNI 18 +\\x0aaca86e54fe70edd7c86cbf3cfb470caa49faef AURELIO 18 +\\x9ba00d6856a4edf4665bca2c2309936572473b7e aUSDC 6 +\\x71fc860f7d3a592a4a98740e39db31d25db65ae8 aUSDT 6 +\\x0ed55f31ee2f9875a738c6496842b0e6519d7833 AUTO 4 +\\x622dffcc4e83c64ba959530a5a5580687a57581b AUTO 18 +\\xfc4b8ed459e00e5400be803a9bb3954234fd50e3 aWBTC 8 +\\xF5D669627376EBd411E34b98F19C868c8ABA5ADA AXS 18 +\\x12e51e77daaa58aa0e9247db7510ea4b46f9bead aYFI 18 +\\x6fb0855c404e09c47c3fbca25f08d4e41f9f062f aZRX 18 +\\xc4De189Abf94c57f396bD4c52ab13b954FebEfD8 B20 18 +\\x3472A5A71965499acd81997a54BBA8D852C6E53d BADGER 18 +\\xba100000625a3754423978a60c9317c58a424e3D BAL 18 +\\xBA11D00c5f74255f56a5E366F4F77f5A186d7f55 BAND 18 +\\x1c45ed430bb3629672c6c8010dc7747cdcdf6a94 BANus 18 +\\x20b2974669e5c70c46962ab7eae34528f9dc83ab BANus 18 +\\x879e57f3b2d913b4aebb5242abbc6f4ee64a1ab3 BANus 18 +\\x705C71b262C511B66bAA4791cC2BE61B971bD784 BAP0 18 +\\x0d8775f648430679a709e98d2b0cb6250d2887ef BAT 18 +\\x131da075a2832549128e93AcC2b54174045232Cf BATBNT 18 +\\x7FfE011B93e06FA14CE5A6E00320937652664366 BATUSDB 18 +\\x9a0242b7a33dacbe40edb927834f96eb39f8fbcb BAX 18 +\\x19d97d8fa813ee2f51ad4b4e04ea08baf4dffc28 bBADGER 18 +\\x84f7c44b6fed1080f647e354d552595be2cc602f BBO 18 +\\x9be89d2a4cd102d8fecc6bf9da793be995c22541 BBTC 8 +\\xff3519eeeea3e76f1f699ccce5e23ee0bdda41ac BCAP 0 +\\xe4f726adc8e89c6a6017f01eada77865db22da14 BCP 18 +\\x98bde3a768401260e7025faf9947ef1b81295519 BCS 18 +\\x9ec251401eafb7e98f37a1d911c0aea02cb63a80 BCT 18 +\\xd45247c07379d94904e0a87b4481f0a1ddfa0c64 BCZERO 18 +\\x6a4ffaafa8dd400676df8076ad6c724867b0e2e8 bDAI 18 +\\x7e7E112A68d8D2E221E11047a72fFC1065c38e1a bDIGG 18 +\\x763186eb8d4856d536ed4478302971214febc6a9 BETR 18 +\\x679F601F0deb53c2dB0C8C26369FDcba5fD753CF BETRBNT 18 +\\xcfabaff3bb057ba878f43ce027c9266d2f900561 BFZ 18 +\\xee74110fb5a1007b06282e0de5d73a61bf41d9cd BHPC 18 +\\xb3104b4b9da82025e8b9f8fb28b3553ce2f67069 BIX 18 +\\xbee6edf5fa7e862ed2ea9b9f42cb0849184aae85 BKN 0 +\\x107c4504cd79c5d2696ea0030a8dd4e92601b82e BLT 18 +\\x5732046a883704404f284ce41ffadd5b007fd668 BLZ 18 +\\xdf6ef343350780bf8c3410bf062e0c015b1dd671 BMC 8 +\\xb8c77482e45f1f44de1745f52c74426c631bdd52 BNB 18 +\\xE6b31fB3f29fbde1b92794B0867A315Ff605A324 BNBBNT 18 +\\x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c BNT 18 +\\x3f71558cf0055d84943790eab617b15f8b34fc78 BNT 18 +\\x202f21b2a809cc4af932d2e3e5b700f9936588a8 BNTAMB 18 +\\x323fab7e88ea9db8768ec52fd0f21b6a9b782415 BNTBUG 18 +\\xd42a4fd1845333f24d88e70d5837927cecaf7f26 BNTCRT 18 +\\xb80650a44bafbeb4aa2a52c62d79112f5f94126c BNTTRL 18 +\\xd2d6158683aee4cc838067727209a0aaf4359de3 BNTY 18 +\\xbcf8969f0f5c5075f0b925809fed62eb04e58ecf BNUS 18 +\\x0391d2021f89dc339f60fff84546ea23e337750f BOND 18 +\\x6b01c3170ae1efebee1a3159172cb3f7a5ecf9e5 BOOTY 18 +\\x780116d91e5592e58a3b3c76a351571b39abcec6 BOXX 15 +\\x5af2be193a6abca9c8817001f45744777db30756 BQX 8 +\\x558ec3152e2eb2174905cd19aea4e34a23de9ad6 BRD 18 +\\xe12128d653b62f08fbed56bdeb65db729b6691c3 BRZC 18 +\\x26946ada5ecb57f3a1f91605050ce45c482c9eb1 BSOV 8 +\\x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd BTC++ 18 +\\x534DF0Ec6D65cD6fE1b05D3b8c935c97Eb844190 BTCDEFI 18 +\\xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750 BTM 8 +\\xb683d83a532e2cb7dfa5275eed3698436371cc9f BTU 18 +\\x4fabb145d64652a948d72533023f6e7a623c7c53 BUSD 18 +\\xedf216b3c9748082c2d7f3f54efe45b41076e3e1 BUSD 18 +\\xE94C892f90ABea59F3dd1D7d8c34aC9d7312F18A BUSDUSDB 18 +\\xe1aee98495365fc179699c1bb3e761fa716bee62 BZNT 18 +\\x56d811088235F11C8920698a204A5010a788f4b3 BZRX 18 +\\x26e75307fc0c021472feb8f727839531f112f317 C20 18 +\\x1EF9e0ac29b3813528FbfdAdf5118AB63e4be015 C20BNT 18 +\\xcaDC0acd4B445166f12d2C07EAc6E2544FbE2Eef CADC 18 +\\x1d462414fe14cf489c7a21cac78509f4bf8cd7c0 CAN 6 +\\x43044f861ec040DB59A7e324c40507adDb673142 CAP 18 +\\x1234567461d3f8db7496581774bd869c83d51c93 CAT 18 +\\xB3c55930368D71F643C3775869aFC73f6c5237b2 CATBNT 18 +\\x6c8c6b02e7b2be14d4fa6022dfd6d75921d90e4e cBAT 8 +\\xcf8f9555d55ce45a3a33a81d6ef99a2a2e71dee2 CBIX7 18 +\\x29a99c126596c0Dc96b02A88a9EAab44EcCf511e CBLT 18 +\\x7d4B1d793239707445305D8d2456D2c735F6B25B cBSN 18 +\\x26c908b9b8154206af727175c493988200d7e133 CBT 18 +\\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3 CC10 18 +\\x5d3a536e4d6dbd6114cc1ead35777bab948e3643 cDAI 8 +\\xb056c38f6b7dc4064367403e26424cd2c60655e1 CEEK 18 +\\x2F2ad6954d99Ea14fA145B9AB0fb6BA5Ac32c0Ee CEEKBNT 18 +\\xaaaebe6fe48e54f431b0c390cfaf0b017d09d42d CEL 4 +\\x1122b6a0e00dce0563082b6e2953f3a943855c1f CENNZ 18 +\\x4ddc2d193948926d02f9b1fe9e1daa0718270ed5 cETH 8 +\\xAdA0A1202462085999652Dc5310a7A9e2BF3eD42 CGI 18 +\\xf5238462e7235c7b62811567e63dd17d12c2eaa0 CGT 8 +\\x06af07097c9eeb7fd685c692751d5c66db49c215 CHAI 18 +\\xC4C2614E694cF534D407Ee49F8E44D125E4681c4 CHAIN 18 +\\x4eCB692B0fEDeCD7B486b4c99044392784877E8C CHERRY 4 +\\x0000000000004946c0e9f43f4dee607b0ef1fa1c CHI 0 +\\x1460a58096d80a50a2f1f956dda497611fa4f165 CHX 18 +\\x3506424f91fd33084466f402d5d97f05f8e3b4af CHZ 18 +\\x1a94656a6245379bc0d9c64c402197528edb2bd1 CLC 18 +\\x4162178b78d6985480a308b2190ee5517460406d CLN 18 +\\x47bc01597798dcd7506dcca36ac4302fc93a8cfb CMCT 8 +\\x9f949124e2a23492005a9bb937acb29bda2cab9e CMME 8 +\\xf85feea2fdd81d51177f6b8f35f0e6734ce45f5f CMT 18 +\\xd4c435f5b09f855c3317c8524cb1f586e42795fa CND 18 +\\x722f2f3eac7e9597c73a593f7cf3de33fbfc3308 CNUS 18 +\\xC76FB75950536d98FA62ea968E1D6B45ffea2A55 COL 18 +\\xffffffff2ba8f66d4e51811c5190992176930278 COMBO 18 +\\xc7deb5543cfa97b0af2841418f53b8e554ff566a COMM 18 +\\xc00e94cb662c3520282e6f5717214004a7f26888 COMP 18 +\\x4983f767b1bc44328e434729ddabea0a064ca1ac CONST 2 +\\x5c872500c00565505f3624ab435c222e558e9ff8 COT 18 +\\x19dB077A54dEa3fD4CBCd9d31D4dB297562CbD94 COTBNT 18 +\\x4688a8b1F292FDaB17E9a90c8Bc379dC1DBd8713 COVER 18 +\\x88d50b466be55222019d71f9e8fae17f5f45fca1 CPT 8 +\\x2ba592f78db6436527729929aaf6c908497cb200 CREAM 18 +\\xc4cb5793bd58bad06bf51fb37717b86b02cbe8a4 CREDIT 18 +\\x4e0603e2a27a30480e5e3a4fe548e29ef12f64be CREDO 18 +\\x158079ee67fce2f58472a96584a73c7ab9ac95c1 cREP 8 +\\xcbc1065255cbc3ab41a6868c22d1f1c573ab89fd CRETH2 18 +\\xa0b73e1ff0b80914ab6fe0444e65848c4c34450b CRO 8 +\\x825a64810e3ee35bd64c940140ea91a609608abe CRTS 18 +\\xD533a949740bb3306d119CC777fa900bA034cd52 CRV 18 +\\x46b9ad944d1059450da1163511069c718f699d31 CS 6 +\\xf5dce57282a584d2746faf1593d3121fcac444dc cSAI 8 +\\xea11755ae41d889ceec39a63e6ff75a02bc1c00d CTXC 18 +\\x5c406d99e04b8494dc253fcc52943ef82bca7d75 cUSD 6 +\\x39aa39c021dfbae8fac545936693ac917d5e7563 cUSDC 8 +\\xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9 cUSDT 8 +\\x41e5560054824ea6b0732e656e3ad64e20e94e45 CVC 8 +\\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1 CVP 18 +\\xc11b1268c1a384e55c48c2391d8d480264a3a7f4 cWBTC 8 +\\xb3319f5d18bc0d84dd1b4825dcde5d5f7266d407 cZRX 8 +\\x6b175474e89094c44da98b954eedeac495271d0f DAI 18 +\\xee01b3AB5F6728adc137Be101d99c678938E6E72 DAIBNT 18 +\\xcb913ED43e43cc7Cec1D77243bA381615101E7E4 DAIUSDB 18 +\\x9b70740e708a083c6ff38df52297020f5dfaa5ee DAN 10 +\\x0cf0ee63788a0849fe5297f3407f701e122cc023 DATA 18 +\\xd82df0abd3f51425eb15ef7580fda55727875f14 DAV 18 +\\x1559295394b36fce85cc6b92dc52ea0acca8c79d DAVCC 18 +\\x02b67949695111bd016bc649279550e7f3ceddc5 DAVSG 18 +\\x01582f53baad0fa7678565ea8632b7b933f2a323 DAVSM 18 +\\xb94932c26ae9adacb2d8669d72a422409e467534 DAVTG 18 +\\x6b82bc2e2f0cde90c768a001cd6a220a65f09758 DAVTR 18 +\\x95f1d54ce40eb1e1da2a2667fbed6c707de81ce7 DAVYT 18 +\\xe814aee960a85208c3db542c53e7d4a6c8d5f60f DAY 18 +\\x9b68bfae21df5a510931a262cecf63f41338f264 DBET 18 +\\x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6 DCN 0 +\\xbded3f7537e75d6c38c036a3a788a549afde12b1 DCS 8 +\\x8d1ce361eb68e9e05573443c407d4a3bed23b033 DEFI++ 18 +\\x78f225869c08d478c34e5f645d07a87d3fe8eb78 DEFI+L 18 +\\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c DEFI+S 18 +\\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41 DEFI5 18 +\\x126c121f99e1E211dF2e5f8De2d96Fa36647c855 DEGEN 18 +\\x3597bfd533a99c9aa083587b074434e61eb0a258 DENT 8 +\\x28f2c01a3d86ee4faf037147f0aeb49c2eab47ce DESH 18 +\\x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0 DEXTF 18 +\\x46bFA3Bb807B5c3b3Ce7F7e0E667397020B6dc15 DFST 18 +\\x53C8395465A84955c95159814461466053DedEDE DG 18 +\\xe0b7927c4af23765cb51314a0e0521a9645f0e2a DGD 9 +\\x1c83501478f1320977047008496dacbd60bb15ef DGTX 18 +\\x4f3afec4e5a3f2a6a1a411def7d7dfe50ee057bf DGX 9 +\\xca1207647Ff814039530D7d35df0e1Dd2e91Fa84 DHT 18 +\\x84cA8bc7997272c7CfB4D0Cd3D55cd942B3c9419 DIA 18 +\\xEd91879919B71bB6905f23af0A68d231EcF87b14 DMG 18 +\\x2ccbff3a042c68716ed2a2cb0c544a9f1d1935e1 DMT 8 +\\x0abdace70d3790235af448c88547603b945604ea DNT 18 +\\x23d80c4ee8fb55d4183dd9329296e176dc7464e1 DONUT 18 +\\xbc4171f45EF0EF66E76F979dF021a34B46DCc81d DORA 18 +\\xad32A8e6220741182940c5aBF610bDE99E737b2D DOUGH 18 +\\x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b DPI 18 +\\x01b3ec4aae1b8729529beb4965f27d008788b0eb DPP 18 +\\x419c4db4b9e25d6db2ad9691ccb832c8d9fda05e DRGN 18 +\\xa7774F9386E1653645E1A08fb7Aae525B4DeDb24 DRGNBNT 18 +\\x9af4f26941677c706cfecf6d3379ff01bb85d5ab DRT 8 +\\x69b148395ce0015c13e36bffbad63f49ef874e03 DTA 18 +\\xc20464e0c373486d2b3335576e83a218b1618a5e DTRC 18 +\\x92E187a03B6CD19CB6AF293ba17F2745Fd2357D5 DUCK 18 +\\x5BC25f649fc4e26069dDF4cF4010F9f706c23831 DUSD 18 +\\xa1d65e8fb6e87b60feccbc582f7f97804b725521 DXD 18 +\\x9cb2f26a23b8d89973f08c957c4d7cdf75cd341c DZAR 6 +\\x27fbdd15fb0820b50b9c3683ea628bb6ab9b2d70 EBATo 18 +\\x08711d3b02c8758f2fb3ab4e80228418a7f8e39c EDG 0 +\\xced4e93198734ddaff8492d525bd258d49eb388e EDO 18 +\\xc528c28fec0a90c083328bc45f587ee215760a0f EDR 18 +\\x47ec6af8e27c98e41d1df7fb8219408541463022 EFOOD 18 +\\x5e8f0e658aff673aa635a889c5b4f38f12e2a740 EGX 18 +\\x4ecdb6385f3db3847f9c4a9bf3f9917bb27a5452 EKT 8 +\\x6c37bf4f042712c978a73e3fd56d1f5738dd7c43 ELET 18 +\\xbf2179859fc6d5bee9bf9158632dc51678a4100e ELF 18 +\\x0F2318565f1996CB1eD2F88e172135791BC1FcBf ELFBNT 18 +\\xc7c03b8a3fc5719066e185ea616e87b88eba44a3 ELI 18 +\\x9a07fd8a116b7e3be9e6185861496af7a2041460 EMCO 18 +\\xd97e471695f73d8186deabc1ab5b8765e667cd96 EMCO 18 +\\x37be876ef051eb8eddd0745107c5222d8ca8ec60 EMIT1USDB 18 +\\x2a3a6596b35735efac3577dc36bf750bfe5888e8 EMIT1USDB2FCO 18 +\\xb5f278ee11811efec0692ec61b1e9f9984f2de11 EMIT 3 +\\xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4 ENG 8 +\\xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c ENJ 18 +\\xf3aD2cBc4276eb4B0fb627Af0059CfcE094E20a1 ENJBNT 18 +\\x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0 EOS 18 +\\xc3761eb917cd790b30dad99f6cc5b4ff93c4f9ea ERC20 18 +\\x36F3FD68E7325a35EB768F1AedaAe9EA0689d723 ESD 18 +\\xd6a55c63865affd67e2fb9f284f87b7a9e5ff3bd ESH 18 +\\xdf329603bd378021698f9833cd5205b52f9e370e ESH 18 +\\x0efc2390c79c47452898a234a27f2b9c39a7a725 EST 18 +\\xe8a1df958be379045e2b46a31a98b93a2ecdfded ESZ 18 +\\x ETH 18 +\\x14580a45324d0d35dc08edf982007a44325e3730 ETH 18 +\\x55370c60fca4929867f8e0e59acfc6198bdca274 ETH 18 +\\x65558b5b48dca1ed00dbd677c02faba8a6eb270f ETH 18 +\\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE ETH 18 +\\xa0158a5b778e792e861bb44ae663ff9dba1eb427 ETH 18 +\\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315 ETH 18 +\\xd76b5c2a23ef78368d8e34288b5b65d616b746ae ETH 18 +\\xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd ETH2x-FLI 18 +\\x59E9261255644c411AfDd00bD89162d09D862e38 ETHA 18 +\\xb1CD6e4153B2a390Cf00A6556b0fC1458C4A5533 ETHBNT 18 +\\xe0c6ce3e73029f201e5c0bedb97f67572a93711c ETHPLO 6 +\\xa2dca1505b07e39f96ce41e875b447f46d50c6fc ETHS 18 +\\x482c31355F4f7966fFcD38eC5c9635ACAe5F4D4F ETHUSDB 18 +\\xdb25f211ab05b1c97d595516f45794528a807ad8 EURS 2 +\\xFC0e04Eae452c163883AAAd4Ac1AE091Cc87FEf3 EURSBNT 18 +\\xabdf147870235fcfc34153828c769a70b3fae01f EURT 6 +\\x5aaEFe84E0fB3DD1f0fCfF6fA7468124986B91bd EVED 18 +\\xefbd6d7def37ffae990503ecdb1291b2f7e38788 EVO 18 +\\x178c820f862B14f316509ec36b13123DA19A6054 EWTB 18 +\\x5e6f3bc1186132565946fea123181529e7aeafd8 eXAU 18 +\\xE58E751abA3B9406367B5F3CbC39c2Fa9B519789 EXO 18 +\\xa0246c9032bC3A600820415aE600c6388619A14D FARM 18 +\\x4cbdaea41e4c864477e1430a896d9e3bac11f593 FCO 0 +\\xee4dc4c5ca843b83035d8e5159ac1bd1b4ebdff5 FCO 18 +\\x94a2aaa374a8f2d52dad24330c8a0ec2934700ae FCOUSDB 18 +\\x009e864923b49263c7f10d19b7f8ab7a9a5aad33 FKX 18 +\\xf04a8ac553fcedb5ba99a64799155826c136b0be FLIXX 18 +\\x01fb4a9a68dd46852addfa98321def44289b7d8d FNCD 18 +\\x04b7c9b88c1d33f0293449aa81b143272bcb2a8b FNCD 18 +\\x07be1d613ec9a7965bbe98064e66e3b3d648da66 FNCD 18 +\\x151a1eb5a1c989cdca7a48c07a1a5ae0ef80ea0d FNCD 18 +\\x15887c0a2ee20e2b6f22a977b18bce47c5c5a2f2 FNCD 18 +\\x2561df6c7ee681864c8a1245aa51a06a1e22a52b FNCD 18 +\\x26157a6e4f84c49942e32484d4728aa6e05c6417 FNCD 18 +\\x304b137223b0b240ba9e86d49aafc152a11b6dc2 FNCD 18 +\\x3796878de516db33cf1cba0b7d333cd1db96434e FNCD 18 +\\x3798e0b7453b2954d61cbc86bbea2d52292531bf FNCD 18 +\\x536cb3bafccb17537ba581b0ac4355f7e19df395 FNCD 18 +\\x6ec5a9d14d5206cad15b32e4bbe5e0b0be30ce14 FNCD 18 +\\x84a9986f4d04e73bc9442245b8dfef7f77305637 FNCD 18 +\\x8e0f05cd0e4e9dc28dbba761aac1f59337d1c455 FNCD 18 +\\x910822f6844304afb34ae8d7db619cdfa498ad49 FNCD 18 +\\x994e4008bcdc6cf08094fd08bb4418e70b6d686d FNCD 18 +\\x9fd85ca57f20e7a39726e0e9cfad51f45bb2b0e3 FNCD 18 +\\xa0bbe61f8705d0dde7fa46f78a148c913b260c35 FNCD 18 +\\xb2db902091500cd04f41396d664dfa653517af68 FNCD 18 +\\xb7f5497f2ae792d59608c9a046b141cd29f3b526 FNCD 18 +\\xbfc615ab171d10a4e6498549cd3a46766feefe01 FNCD 18 +\\xc3308318eca1eab76d2f4b52c310289ae526c8ca FNCD 18 +\\xce6437ee4932cfba3ecaefb93a1929a379b13b24 FNCD 18 +\\xcf97b4f961fa247cd60eb3cbf92a135fa2c9cc5d FNCD 18 +\\xd2a3e62ca1658421a8a711bd1f8ed9d01780e6e6 FNCD 18 +\\xd609609fdf3a6ea89d5ea981af5ce5c3c3daa44a FNCD 18 +\\xe23a3a78b131553c0bab4323bba7f61f6950bdaa FNCD 18 +\\xf0fd2500bd31a56cf1a3839e32fd28e11cda60b3 FNCD 18 +\\xfb6f6467724b7cdc75a1977812d78b7467f69d77 FNCD 18 +\\xfc382c9f9f65a66bbd3b35e10e7ac5a7abf11c8f FNCD 18 +\\xdc5864ede28bd4405aa04d93e05a0531797d9d59 FNT 6 +\\x4946fcea7c692606e8908002e55a582af44ac121 FOAM 18 +\\xd8b8e1eca89da014e67fdbc2014eaa8e171079bf FRECNX 18 +\\x44aa95fa2e84d3acdacdeffe16d9b5ed0498cc8b FREELINK 18 +\\x48df4e0296f908ceab0428a5182d19b31fc037d6 FRV 8 +\\xd0352a019e9ab9d757776f532377aaebd36fd541 FSN 18 +\\xb414f8ec2d14c64f37b1559cbe43746284514596 FTH 18 +\\x4E15361FD6b4BB609Fa63C81A2be19d873717870 FTM 18 +\\x2023dcf7c438c8c8c0b0f28dbae15520b4f3ee20 FTR 18 +\\x50D1c9771902476076eCFc8B2A83Ad6b9355a4c9 FTX Token 18 +\\xd559f20296ff4895da39b5bd9add54b442596a61 FTX 18 +\\x419d0d8bdd9af5e606ae2232ed285aff190e711b FUN 8 +\\xbf5496122cf1bb778e0cbe5eab936f2be5fc0940 FUNDZ 18 +\\x970B9bB2C0444F5E81e9d0eFb84C8ccdcdcAf84d FUSE 18 +\\x4a57e687b9126435a9b19e4a802113e266adebde FXC 18 +\\x15D4c048F83bd7e37d49eA4C83a07267Ec4203dA GALA 8 +\\x543ff227f64aa17ea132bf9886cab5db55dcaddf GEN 18 +\\xfb1e5f5e984c28ad7e228cdaa1f8a0919bb6a09b GES 18 +\\x5972CED550248B17c9F674639D33E5446b6ad95A GESBNT 18 +\\x8a854288a5976036a725879164ca3e91d30c6a1b GET 18 +\\x4c327471C44B2dacD6E90525f9D629bd2e4f662C GHOST 18 +\\x3F382DbD960E3a9bbCeaE22651E88158d2791550 GHST 18 +\\xae4f56f072c34c0a65b3ae3e4db797d831439d93 GIM 8 +\\xf6537fe0df7f0cc0985cf00792cc98249e73efa0 GIV 8 +\\xF2BA4AFcBE22F0e626d67D8f31E96428706282e9 GLDR 18 +\\x6810e776880c02933d47db1b9fc05908e5386b96 GNO 18 +\\xd7eB9DB184DA9f099B84e2F86b1da1Fe6b305B3d GNOBNT 18 +\\xa74476443119a942de498590fe1f2454d7d4ac0d GNT 18 +\\x6ec8a24cabdc339a06a172f8223ea557055adaa5 GNX 9 +\\x61d40b844ea5b68c9c504fccdb05b68c2d7ae965 GOLD 18 +\\x4FbB350052Bca5417566f188eB2EBCE5b19BC964 GRG 18 +\\x12b19d3e2ccc14da04fae33e63652ce469b3f2fd GRID 12 +\\x618acb9601cb54244f5780f09536db07d2c7acf4 GRIG 2 +\\xe245286c988ebf5099287749453cf19273436c04 GRIG 2 +\\x912D734C351425Ca35f22Ab7E16524147628E61c GRIGBNT 18 +\\x1F6e51ce0533A075fDd602FbD6159763aCaB579b GRIGUSDB 18 +\\xc944E90C64B2c07662A292be6244BDf05Cda44a7 GRT 18 +\\xe530441f4f73bdb6dc2fa5af7c3fc5fd551ec838 GSE 4 +\\xaac41EC512808d64625576EDdd580e7Ea40ef8B2 GSWAP 18 +\\xc5bbae50781be1669306b9e001eff57a2957b09d GTO 5 +\\xc4938292EA2d3085fFFc11C46B87CA068a83BE01 GTOBNT 18 +\\x056fd409e1d7a124bd7017459dfea2f387b6d5cd GUSD 2 +\\x103c3a209da59d3e7c4a89307e66521e081cfdf0 GVT 18 +\\x0316eb71485b0ab14103307bf65a021042c6d380 HBTC 18 +\\x3363d570f6df3c74d486bb8785d3ebfb9e2347d3 HEDG 18 +\\xf1290473e210b2108a85237fbcd7b6eb42cc654f HEDG 18 +\\x584bC13c7D411c00c01A62e8019472dE68768430 HEGIC 18 +\\x2e91e3e54c5788e9fdd6a181497fdcea1de1bcc1 HERC 18 +\\x2b591e99afe9f32eaa6214f7b7629768c40eeb39 HEX 8 +\\x9afb950948c2370975fb91a441f36fdc02737cd4 HFIL 18 +\\xf5581dfefd8fb0e4aec526be659cfab1f8c781da HOPR 18 +\\x6c6ee5e31d828de241282b9606c8e98ea48526e2 HOT 18 +\\x9af839687f6c94542ac5ece2e317daae355493a1 HOT 18 +\\xf8a2ed21fea517665b35ac824387bf9b41c71919 HOTEL 18 +\\x38c6a68304cdefb9bec48bbfaaba5c5b47818bb2 HPB 18 +\\x6f259637dcd74c767781e37bc6133cd6a68aa161 HT 18 +\\x46ae264bf6d9dc6dd84c31064551f961c67a755c HTX 18 +\\xdf574c24545e5ffecb9a659c229253d4111d87e1 HUSD 8 +\\x2630997aab62fa1030a8b975e1aa2dc573b18a13 HYPE 18 +\\x8A8079c7149B8A1611e5C5d978DCA3bE16545F83 iADA 18 +\\xf6E9b246319ea30e8C2fA2d1540AAEBF6f9E1B89 iBCH 18 +\\x67B66C99D3Eb37Fa76Aa3Ed1ff33E8e39F0b9c7A ibETH 18 +\\x7c8f07ac5b0a2876ee582a661d53de2d0bbad96f iBNB 18 +\\xAFD870F32CE54EfdBF677466B612bf8ad164454B iBNB 18 +\\x2b143041a6f8be9dcc66e9110178a264a223a3bd iBTC 18 +\\xD6014EA05BDe904448B743833dDF07c3C7837481 iBTC 18 +\\x336213e1DDFC69f4701Fc3F86F4ef4A160c1159d iCEX 18 +\\x903bEF1736CDdf2A537176cf3C64579C3867A881 ICHI 9 +\\x888666ca69e0f178ded6d75b5726cee99a87d698 ICN 18 +\\xb5a5f22694352c15b00323844ad545abb2b11028 ICX 18 +\\xCB98f42221b2C251A4E74A1609722eE09f0cc08E iDASH 18 +\\x14d10003807AC60d07BB0ba82cAeaC8d2087c157 iDEFI 18 +\\xb705268213d593b8fd88d3fdeff93aff5cbdcfae IDEX 18 +\\xF4EebDD0704021eF2a6Bbe993fdf93030Cd784b4 iEOS 18 +\\xd50c1746D835d2770dDA3703B69187bFfeB14126 iETC 18 +\\xA9859874e1743A32409f75bB11549892138BBA1E iETH 18 +\\xd4fb1706ae549febec06bb7175b08010dd1b0c2e iETH 18 +\\xb1a5b7e9a268742b9b5d2455ffcf43babc6929ba IGA 18 +\\x2d7aC061fc3db53c39fe1607fB8cec1B2C162B01 iLINK 18 +\\x79da1431150C9b82D2E5dfc1C68B33216846851e iLTC 18 +\\x767FE9EDC9E0dF98E07454847909b5E959D7ca0E ILV 18 +\\x3212b29E33587A00FB1C83346f5dBFA69A458923 imBTC 8 +\\xeaf60da0199be2f62005225248705de774582328 iMKR 18 +\\x17aa18a4b64a55abed7fa543f2ba4e91f2dce482 INB 18 +\\xf8e386eda857484f5a12e4b5daa9984e06e73705 IND 18 +\\x0954906da0Bf32d5479e25f46056d22f08464cab INDEX 18 +\\xc9859fccc876e6b4b3c749c5d29ea04f48acb74f INO 0 +\\x5b2e4a700dfbc560061e957edec8f6eeeb74a320 INS 10 +\\xc72fe8e3dd5bef0f9f31f259399f301272ef2a2d INSTAR 18 +\\x544c42fBB96B39B21DF61cf322b5EDC285EE7429 INSUR 18 +\\xece83617db208ad255ad4f45daf81e25137535bb INV 8 +\\x4485561Db76614Ff727f8E0a3Ea95690b8b16022 INVOX 18 +\\xfa1a856cfa3409cfa145fa4e20eb270df3eb21ab IOST 18 +\\x6fb3e0a217407efff7ca062d46c26e5d60a14d69 IOTX 18 +\\x51ee82641ac238bde34b9859f98f5f311d6e4954 IQT 8 +\\x697ef32b4a3f5a4c39de1cb7563f24ca7bfc5947 ISLA 18 +\\xC5807183a9661A533CB08CbC297594a0B864dc12 iTRX 18 +\\xcd8d927f2cb03d2efb7f96ceb66ec4976843e012 iTRX 18 +\\x4AdF728E2Df4945082cDD6053869f51278fae196 iXMR 18 +\\x27269b3e45A4D3E79A3D6BFeE0C8fB13d0D711A6 iXRP 18 +\\x8deef89058090ac5655A99EEB451a4f9183D1678 iXTZ 18 +\\xc2992b2c22238f296c2f429ee2f7afb462ed1750 iXTZ 18 +\\x0d262e5dc4a06a0f1c90ce79c7a60c09dfc884e4 J8T 8 +\\xa5fd1a791c4dfcaacc963d4f73c6ae5824149ea7 JNT 18 +\\x1368452Bfb5Cd127971C8DE22C58fBE89D35A6BF JNTR/e 18 +\\xcd899e343a192ac3ce6530cE0ED9009275a2c701 JNTR 18 +\\xfb725bab323927cfb20fb82ba9a1975f7d24705b JOY 18 +\\x081d3ccbf23b0edcae2bf05af5f6ecee12c4cdcf JPYT 18 +\\x8f81d11f95461872c7d803cd6ffecf3163a8fd4f JPYT 18 +\\x8a9c67fee641579deba04928c4bc45f66e26343a JRT 18 +\\x4827e558e642861Cd7a1C8f011b2B4661F8d51fa JRTUSDB 18 +\\xBD6467a31899590474cE1e84F70594c53D628e46 KAI 18 +\\xf3586684107ce0859c44aa2b2e0fb8cd8731a15a KBC 7 +\\x039b5649a59967e3e936d7471f9c3700100ee1ab KCS 6 +\\x85eee30c52b0b379b046fb0f85f4f3dc3009afec KEEP 18 +\\x4cc19356f2d37338b9802aa8e8fc58b0373296e7 KEY 18 +\\xC12D1c73eE7DC3615BA4e37E4ABFdbDDFA38907E KICK 8 +\\x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5 KIN 18 +\\x4618519de4c304f3444ffa7f812dddc2971cc688 KIND 8 +\\xCbfef8fdd706cde6F208460f2Bf39Aa9c785F05D KINE 18 +\\xdd974d5c2e2928dea5f71b9825b8b646686bd200 KNC 18 +\\x248AFFf1aa83cF860198ddeE14b5b3E8eDb46d47 KNCBNT 18 +\\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44 KP3R 18 +\\x952bbd5344ca0a898a1b8b2ffcfe3acb1351ebd5 KRO 18 +\\xdf1338fbafe7af1789151627b886781ba556ef9a KUE 18 +\\x67B6D479c7bB412C54e03dCA8E1Bc6740ce6b99C KYL 18 +\\x5102791ca02fc3595398400bfe0e33d7b6c82267 LDC 18 +\\x80fb784b7ed66730e8b1dbd9820afd29931aab03 LEND 18 +\\x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3 LEO 18 +\\x514910771af9ca656af840dff83e8264ecf986ca LINK 18 +\\x6E4DB478e55745A8711eCFf193C9d95e970Eb001 LINKUSDB 18 +\\xfC4A2Cd574bdcC385173f03A6a52cC3B853BB9d4 LKSC 18 +\\x49bd2da75b1f7af1e4dfd6b1125fecde59dbec58 LKY 18 +\\x5e3346444010135322268a4630d2ed5f8d09446c LOC 18 +\\x38838B895cbf02048455Fb7f649D97C564fC18a8 LOCBNT 18 +\\x9c23d67aea7b95d80942e3836bcdf7e708a747c2 LOCI 18 +\\xa4e8c3ec456107ea67d3075bf9e3df3a75823db0 LOOM 18 +\\x99295f1141d58a99e939f7be6bbe734916a875b8 LPL 18 +\\x58b6a8a3302369daec383334672404ee733ab239 LPT 18 +\\xbbbbca6a901c926f240b89eacb641d8aec7aeafd LRC 18 +\\xef68e7c694f40c8202821edf525de3782458639f LRC 18 +\\x5b09a0371c1da44a8e24d36bf5deb1141a84d875 MAD 18 +\\xe25bcec5d3801ce3a794079bf94adf1b8ccd802d MAN 18 +\\x0f5d2fb29fb7d3cfee444a200298f468908cc942 MANA 18 +\\x79d83B390cF0EDF86B9EFbE47B556Cc6e20926aC MANABNT 18 +\\x67c597624B17b16fb77959217360B7cD18284253 MARK 9 +\\x69af81e73a73b40adf4f3d4223cd9b1ece623074 MASK 18 +\\x0fe629d1E84E171f8fF0C1Ded2Cc2221Caa48a3f MASK 18 +\\x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0 MATIC 18 +\\x945Facb997494CC2570096c74b5F66A3507330a1 mBTC 18 +\\xa38b7ee9df79955b90cc4e2de90421f6baa83a3d MC 18 +\\xb63b606ac810a52cca15e44bb630fd42d8d1d83d MCO 8 +\\x51db5ad35c671a87207d88fc11d593ac0c8415bd MDA 18 +\\x814e0908b12a99fecf5bc101bb5d0b8b5cdf7d26 MDT 18 +\\x0ecdd783dc7bf820614044b51862ed29714d2ba5 MDZA 18 +\\xfd1e80508f243e64ce234ea88a5fd2827c71d4b7 MEDX 8 +\\xD5525D397898e5502075Ea5E830d8914f6F0affe MEME 8 +\\xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e MET 18 +\\x7F8c53072d9B809A108b1A9D677Bcc3B7B3F844e METUSDB 18 +\\x6710c63432a2de02954fc0f851db07146a6c0312 MFG 18 +\\xdf2c7238198ad8b389666574f2d8bc411a4b7428 MFT 18 +\\x4319f9130848544afB97e92cb3Ea9fdb4b0A0B2a MFTBNT 18 +\\x80f222a749a2e18eb7f676d371f19ad7efeee3b7 MGN 18 +\\x40395044ac3c0c57051906da938b54bd6557f212 MGO 8 +\\x0cb20b77adbe5cd58fcecc4f4069d04b327862e5 MGT 8 +\\xa207ef81c35848a60a732005a42fae0ba89a9be2 MGT 4 +\\xe3d0a162fcc5c02c9448274d7c58e18e1811385f MHLK 2 +\\x09a3ecafa817268f77be1283176b946c4ff2e608 MIR 18 +\\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2 MKR 18 +\\xf553E6eA4CE2F7dEEcbe7837E27931850eC15faB MKRBNT 18 +\\xbeb9ef514a379b997e0798fdcc901ee474b6d9a1 MLN 18 +\\xec67005c4e498ec7f55e092bd1d35cbc47c91892 MLN 18 +\\x0d6777bfc95b284ea9246c889e99903641129d72 MLNUSDB 18 +\\x83cee9e086a77e492ee0bb93c2b0437ad6fdeccc MNTP 18 +\\x8DA321aB610cD24fB2bcCe191F423Dae7c327ca9 MNTPBNT 18 +\\x2ef27bf41236bd859a95209e17a43fbd26851f92 MORPH 4 +\\x8888801af4d980682e47f1a9036e589479e835c5 MPH 18 +\\xcbee6459728019cb1f2bb971dde2ee3271bc7617 MRG 18 +\\x7b0c06043468469967dba22d1af33d77d44056c8 MRPH 4 +\\xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2 MTA 18 +\\xf433089366899d83a9f26a773d59ec7ecf30355e MTL 8 +\\xe2f2a5C287993345a840Db3B0845fbC70f5935a5 mUSD 18 +\\xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81 MUSE 18 +\\x72e364f2abdc788b7e918bc238b21f109cd634d7 MVI 18 +\\x6a750d255416483bec1a31ca7050c6dac4263b57 MXM 18 +\\x8e766f57f7d16ca50b4a0b90b88f6468a09b0439 MXM 18 +\\x5d60d8d7ef6d37e16ebabc324de3be57f135e0bc MYB 18 +\\xe1ac9eb7cddabfd9e5ca49c23bd521afcdf8be49 MYC 18 +\\xa645264C5603E96c3b0B078cdab68733794B0A71 MYST 8 +\\x5d65d971895edc438f465c17db6992698a52318d NAS 18 +\\x809826cceab68c387726af962713b64cb5cb3cca nCash 18 +\\xcc80c051057b774cd75067dc48f8987c4eb97a5e NEC 18 +\\xa823e6722006afe99e91c30ff5295052fe6b8e32 NEU 18 +\\xb62132e35a6c13ee1ee0f84dc5d40bad8d815206 NEXO 18 +\\x515d562496C43487eb2DDce1a2A7721148D44E36 NEXOUSDB 18 +\\x87d73E916D7057945c9BcD8cdd94e42A6F47f776 NFTX 18 +\\x1776e1f26f98b1a5df9cd347953a26dd3cb46671 NMR 18 +\\x58a4884182d9e835597f405e5f258290e46ae7c2 NOAH 18 +\\xfc858154c0b2c4a3323046fb505811f110ebda57 NOIA 18 +\\xa15c7ebe1f07caf6bff097d8a589fb8ac49ae5b3 NPXS 18 +\\x20945cA1df56D237fD40036d47E866C7DcCD2114 Nsure 18 +\\xb91318f35bdb262e9423bc7c7c2a3a93dd93c92c NULS 18 +\\xd7c49cee7e9188cca6ad8ff264c1da2e69d4cf3b NXM 18 +\\x985dd3d42de1e256d09e1c10f112bccb8015ad41 OCEAN 18 +\\x967da4048cD07aB37855c090aAF366e4ce1b9F48 OCEAN 18 +\\x4092678e4e78230f46a1534c0fbc8fa39780892b OCN 18 +\\xbf52f2ab39e26e0951d2a02b49b7702abe30406a ODE 18 +\\xd26114cd6ee289accf82350c8d8487fedb8a0c07 OMG 18 +\\x99eBD396Ce7AA095412a4Cd1A0C959D6Fd67B340 OMGBNT 18 +\\x2b17b8927a8e9844b6ca11c5e0e818bb633c044d OMNIS 18 +\\xd341d1680eeee3255b8c4c75bcce7eb57f144dae ONG 18 +\\x8104E7ce81FaB39c42e34Cd9d8B654135261Fae8 ONGBNT 18 +\\x4c11249814f11b9346808179cf06e71ac328c1b5 ORAI 18 +\\xd6cb2adf47655b1babddc214d79257348cbc39a7 ORCL5 18 +\\xc6abf3c09341741ac6041b0b08195701bdfd460c OSA 18 +\\x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca OST 18 +\\x7c0afd49d40ec308d49e2926e5c99b037d54ee7e OUSD 18 +\\x1a5f9352af8af974bfc03399e3767df6370d82e4 OWL 18 +\\xd56dac73a4d6766464b38ec6d91eb45ce7457c44 PAN 18 +\\x68037790A0229e9Ce6EaA8A99ea92964106C4703 PAR 18 +\\xea5f88e54d982cbb0c441cde4e79bc305e5b43bc PARETO 18 +\\xbb1fa4fdeb3459733bf67ebc6f893003fa976a82 PAT 18 +\\x8e870d67f660d95d5be530380d0ec0bd388289e1 PAX 18 +\\x45804880de22913dafe09f4980848ece6ecbaf78 PAXG 18 +\\xb97048628db6b661d4c2aa833e95dbe1a905b280 PAY 18 +\\x5228a22e72ccc52d415ecfd199f99d0665e7733b pBTC 18 +\\xEEF7551e59b34F431D71C7593249F61D5c52ce65 pBTCBNT 18 +\\x6B09B01c19E4bD573eae4e235ee47CBD51dF3B6E pBTCUSDB 18 +\\x8ae56a6850a7cbeac3c3ab2cb311e7620167eac8 PEG 18 +\\xa485bD50228440797Abb4d4595161d7546811160 PEG:USD 18 +\\xbC396689893D065F41bc2C6EcbeE5e0085233447 PERP 18 +\\xf53ad2c6851052a81b42133467480961b2321c09 PETH 18 +\\x429881672B9AE42b8EbA0E26cD9C73711b891Ca5 PICKLE 18 +\\x26607ac599266b21d13c7acf7942c7701a8b699c PIPT 18 +\\x87f56ee356b434187105b40f96b230f5283c0ab4 PITCH 9 +\\x02f2d4a04e6e01ace88bd2cd632875543b2ef577 PKG 18 +\\xe3818504c1b32bf1557b16c238b2e01fd3149c17 PLR 18 +\\x846c66cf71c43f80403b51fe3906b3599d63336f PMA 18 +\\x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d PNK 18 +\\x89ab32156e46f46d02ade3fecbe5fc4243b9aaed PNT 18 +\\x6758b7d441a9739b98552b373703d8d3d14f9e62 POA20 18 +\\x0e0989b1f9b8a38983c2ba8053269ca62ec9b195 POE 8 +\\x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa POLS 18 +\\x9992ec3cf6a55b00978cddf2b27bc6882d88d1ec POLY 18 +\\x0cec1a9154ff802e7934fc916ed7ca50bde6844e POOL 18 +\\x595832f8fc6bf59c85c527fec3740a1b7a361269 POWR 6 +\\x168D7Bbf38E17941173a352f1352DF91a7771dF3 POWRBNT 18 +\\x4d2ee5dae46c86da2ff521f7657dad98834f97b8 PPBLZ 18 +\\xf1f508c7c9f0d1b15a76fba564eef2d956220cf7 PPDEX 18 +\\xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a PPT 8 +\\xE59064a8185Ed1Fca1D17999621eFedfab4425c9 PRIME 18 +\\x1844b21593262668b7248d0f57a220caaba46ab9 PRL 18 +\\x226bb599a12c826476e3a771454697ea52e9e220 PRO 8 +\\x9041Fe5B3FDEA0f5e4afDC17e75180738D877A01 PRO 18 +\\xf01d7939441a3b1b108c70a28dcd99c6a98ad4b4 PRTL 18 +\\x9cea2eD9e47059260C97d697f82b8A14EfA61EA5 PUNK 18 +\\x5247C0DB4044FB6F97f32C7E1B48758019A5A912 pxGOLD_MAR2022 18 +\\x4B606e9Eb2228c70f44453AFe5a73e1FeA258Ce1 pxUSD_MAR2022 18 +\\x618e75ac90b12c6049ba3b27f5d5f8651b0037f6 QASH 6 +\\x1602af2c782cc03f9241992e243290fccf73bb13 QBIT 18 +\\x3166c570935a7d8554c8f4ea792ff965d2efe1f2 QDAO 18 +\\x19683E94943E6b348D8AFB98C128B9b549B400DF QDAOBNT 18 +\\xea26c4ac16d4a5a106820bc8aee85fd0b7b2b664 QKC 18 +\\x4a220e6096b25eadb88358cb44068a3248254675 QNT 18 +\\x697beac28b09e122c4332d163985e8a73121b97f QRL 8 +\\x99ea4db9ee77acd40b119bd1dc4e33e1c070b80d QSP 18 +\\x48f775efbe4f5ece6e0df2f7b5932df56823b990 R 0 +\\x31c8EAcBFFdD875c74b94b077895Bd78CF1E64A3 RAD 18 +\\xfca59cd816ab1ead66534d82bc21e7515ce441cf RARI 18 +\\x5Eaa69B29f99C84Fe5dE8200340b4e9b4Ab38EaC RAZE 18 +\\x50DE6856358Cc35f3A9a57eAAA34BD4cB707d2cd RAZOR 18 +\\x0719046cf7f82f9322479538b69a89c26a70a5bc RB 18 +\\xfc2c4d8f95002c14ed0a7aa65102cac9e5953b5e RBLX 18 +\\xf970b8e36e23f7fc3fd752eea86f8be8d83375a6 RCN 18 +\\xf7b9fa01098f22527Db205Ff9BB6FdF7C7D9F1C5 RCNBNT 18 +\\x261b45D85cCFeAbb11F022eBa346ee8D1cd488c0 rDAI 18 +\\x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6 RDN 18 +\\xcb459689182459186a5d690e3da41dc65e754645 RDNA 18 +\\x6b4389Afb3e243A65668B7311fA9Ef092A8a3B64 REAL 18 +\\x9214ec02cb71cba0ada6896b8da260736a67ab10 REAL 18 +\\x89303500a7abfb178b274fd89f2469c264951e1f REF 8 +\\x83984d6142934bb535793a82adb0a46ef0f66b6d REM 4 +\\x408e41876cccdc0f92210600ef50372656052a38 REN 18 +\\xeb4c2781e4eba804ce9a9803c67d0893436bb27d renBTC 8 +\\x1C5db575E2Ff833E46a2E9864C22F4B22E0B37C2 renZEC 8 +\\x1985365e9f78359a9b6ad760e32412f4a445e862 REP 18 +\\x4d305c2334c02e44ac592bbea681ba4cc1576de3 REPUX 18 +\\x221657776846890989a759ba2973e427dff5c9bb REPv2 18 +\\x8f8221afbb33998d8584a2b05749ba73c37a938a REQ 18 +\\xccB5E3Ba5356D57001976092795626ac3b87Ad4e REQBNT 18 +\\x557B933a7C2c45672B610F8954A3deB39a51A8Ca REVV 18 +\\xa1d6df714f91debf4e0802a542e13067f31b8262 RFOX 18 +\\x168296bb09e24a88805cb9c33356536b980d3fc5 RHOC 8 +\\x9469d013805bffb7d3debe5e7839237e535ec483 RING 18 +\\x607f4c5bb672230e8672085532f7e901544a7375 RLC 9 +\\x9003411Ac4073C2D9f37af71d00E373B72Cbe9E2 RLCBNT 18 +\\xff603f43946a3a28df5e6a73172555d8c8b02386 RNT 18 +\\xfb5453340C03db5aDe474b27E68B6a9c6b2823Eb ROBOT 18 +\\xfa5047c9c78b8877af97bdcb85db743fd7313d4a ROOK 18 +\\xb4efd85c19999d84251304bda99e90b92300bd93 RPL 18 +\\x8762db106b2c2a0bccb3a80d1ed41273552616e8 RSR 18 +\\x86d17e2ef332293391303f188f6a467dc0d1fd0d RST100 18 +\\xf278c1ca969095ffddded020290cf8b5c424ace2 RUFF 18 +\\x3155ba85d5f96b2d030a4966af206230e46849cb RUNE 18 +\\x3d1ba9be9f66b8ee101911bc36d3fb562eac2244 RVT 18 +\\xe36E2D3c7c34281FA3bC737950a68571736880A1 sADA 18 +\\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359 SAI 18 +\\x4156d3342d5c385a87d264f90653733592000581 SALT 8 +\\x7c5a0ce9267ed19b22f8cae653f198e3e8daf098 SAN 18 +\\x3845badAde8e6dFF049820680d1F14bD3903a5d0 SAND 18 +\\xF48e200EAF9906362BB1442fca31e0835773b8B4 sAUD 18 +\\xed4699f180a14b5974c26f494483f9c327fd381a sAUD 18 +\\x36a2422a863D5B950882190Ff5433E513413343a sBCH 18 +\\x013ae307648f529aa72c5767a334ddd37aab43c3 sBNB 18 +\\x617aeCB6137B5108D1E7D4918e3725C8cEbdB848 sBNB 18 +\\x9073ee83b6ce96c444547ddcaf777b9352163581 sBTC 18 +\\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6 sBTC 18 +\\x0bc209fb72390af12bd6fd775355ea0856864b31 sCAD 18 +\\xeABACD844A196D7Faf3CE596edeBF9900341B420 sCEX 18 +\\x0F83287FF768D1c1e17a42F44d644D7F22e8ee1d sCHF 18 +\\x28af5a2f0cc12f2f19dd946608c945456b52b3f6 sCHF 18 +\\xd7631787b4dcc87b1254cfd1e5ce48e96823dee8 SCL 8 +\\xfE33ae95A9f0DA8A845aF33516EDc240DCD711d6 sDASH 18 +\\xe1aFe1Fd76Fd88f78cBf599ea1846231B8bA3B6B sDEFI 18 +\\x77678cfd0f2b55152adc6599db9f988ab28d72f2 SDEX 18 +\\x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f SDT 18 +\\x6332e73c09125a42ff5cc0220f11f540d9d4e7e1 SEENUS 18 +\\x91856c0130f9a2b9223cfc2c672cd3ece4aea93a SEENUS 18 +\\xfb3c0a8a470068536f9f62c61f8f7f2382a62ecc SEENUS 18 +\\x6745fab6801e376cd24f03572b9c9b0d4edddccf SENSE 8 +\\x88C8Cf3A212c0369698D13FE98Fcb76620389841 sEOS 18 +\\x22602469d704BfFb0936c7A7cfcD18f7aA269375 sETC 18 +\\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb sETH 18 +\\x3eb064766109d150e4362222df80638bce00e037 sEUR 18 +\\xd71ecff9342a5ced620049e616c5035f1db98620 sEUR 18 +\\xed314bf44013612e8c00abd3cb6eade61cc8c72e SF 18 +\\x23348160D7f5aca21195dF2b70f28Fce2B0be9fC sFTSE 18 +\\x0c8a7d55ef593a2cad34894c1523162ee2ffb9ac sGBP 18 +\\x97fe22E7341a0Cd8Db6F6C021A24Dc8f4DAD855F sGBP 18 +\\xef2463099360a085f1f10b076ed72ef625497a06 SHP 18 +\\xed0439eacf4c4965ae4613d77a5c2efe10e5f183 SHROOM 18 +\\x3a9fff453d50d4ac52a6890647b823379ba36b9e SHUF 18 +\\x6888a16ea9792c15a4dcf2f6c623d055c8ede792 SIG 18 +\\x559e848a1b6a7afc69ee27f8d20280a42628b2cf sJPY 18 +\\xF6b1C627e95BFc3c1b4c9B825a032Ff0fBf3e07d sJPY 18 +\\x4af328c52921706dcb739f25786210499169afe6 SKB 8 +\\xdce506b196b0df677d07e718f872cac9bc368a33 sKRW 18 +\\xbbc455cb4f1b9e4bfc4b73970d360c8f032efee6 sLINK 18 +\\x37236cd05b34cc79d3715af2383e96dd7443dcf1 SLP 0 +\\xC14103C2141E842e228FBaC594579e798616ce7A sLTC 18 +\\x4140919de11fce58e654cc6038017af97f810de1 sMKR 18 +\\xe88a4976cb7d8898d39e3f317421d625403ecb8c sMKR 18 +\\xcfd6ae8bf13f42de14867351eaff7a8a3b9fbbe7 SNG 8 +\\xaec2e87e0a235266d9c5adc9deb4b2e29b54d009 SNGLS 0 +\\x757de3ac6B830a931eF178C6634c5C551773155c sNIKKEI 18 +\\x744d70fdbe2ba4cf95131626614a1763df805b9e SNT 18 +\\xa3b3c5a8b22C044D5f2d372f628245E2106D310D SNTBNT 18 +\\xc011a72400e58ecd99ee497cf89e3775d4bd732f SNX 18 +\\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f SNX 18 +\\x28271853E950bE371B050F3f93aA0146225bF374 SNXUSDB 18 +\\x79C75E2e8720B39e258F41c37cC4f309E0b0fF80 SOUL 8 +\\x42d6622dece394b54999fbd73d108123806f6a18 SPANK 18 +\\x86ed939B500E121C0C5f493F399084Db596dAd20 SPC 18 +\\x1dea979ae76f26071870f824088da78979eb91c8 SPD 18 +\\x476c5e26a75bd202a9683ffd34359c0cc15be0ff SRM 6 +\\x68d57c9a1c35f63e2c83ee8e49a64e9d70528d25 SRN 18 +\\xd6d4018a665617bfbae160c964474e79b03c6bf7 SRNSCL 18 +\\xde2b8c72012a6c52c66ea4e7534db01dfbc7d5d0 SRNTGM 18 +\\xa7de087329bfcda5639247f96140f9dabe3deed1 STA 18 +\\x9a005c9a89bd72a4bd27721e7a09a3c11d2b03c4 STAC 18 +\\x286708f069225905194673755f12359e6aff6fe1 STACS 18 +\\x0Ae055097C6d159879521C384F1D2123D1f195e6 STAKE 18 +\\xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 stETH 18 +\\x0E22734e078d6e399BCeE40a549DB591C4EA46cB STM 18 +\\xb64ef51c888972c908cfacf59b47c1afbc0ab8ac STORJ 8 +\\xd0a4b8946cb52f0661273bfbc6fd0e0c75fc6433 STORM 18 +\\x12c8b0914e6dee22c7557a0a8b928ae6cacfbcf7 STRX 18 +\\x0944d2c41fef3088467287e208e5bbb622a0c09c sTRX 18 +\\xf2E08356588EC5cd9E437552Da87C0076b4970B0 sTRX 18 +\\x918dA91Ccbc32B7a6A0cc4eCd5987bbab6E31e6D sTSLA 18 +\\x006bea43baa3f7a6f765f14f10a1a1b08334ef45 STX 18 +\\x12480e24eb5bec1a9d4369cab6a80cad3c0a377a SUB 2 +\\x57ab1e02fee23774580c119740129eac7081e9d3 sUSD 18 +\\x57ab1ec28d129707052df4df418d58a2d46d5f51 sUSD 18 +\\xb2D679F6D676f173fAF3670a074B2C3A6D7Ebe28 SUSDDAI 18 +\\x9B6678c766003aD69A15f795f433C0F62c10D4d5 sUSDUSDB 18 +\\x6b3595068778dd592e39a122f4f5a5cf09c90fe2 SUSHI 18 +\\xbdeb4b83251fb146687fa19d1c660f99411eefe3 SVD 18 +\\x87edffde3e14c7a66c9b9724747a1c5696b742e6 SWAG 18 +\\xBa21Ef4c9f433Ede00badEFcC2754B8E74bd538A SWFL 18 +\\x9e88613418cf03dca54d6a2cf6ad934a78c7a17a SWM 18 +\\xB8BAa0e4287890a5F79863aB62b7F175ceCbD433 SWRV 18 +\\x6A22e5e94388464181578Aa7A6B869e00fE27846 sXAG 18 +\\x6e5709515c767c907e43a03388cc816bd65e797c sXAG 18 +\\x261efcdd24cea98652b9700800a13dfbca4103ff sXAU 18 +\\xe05d803fa0c5832fa2262465290abb25d6c2bfa3 sXAU 18 +\\x12b306fa98f4cbb8d4457fdff3a0a0a56f07ccdf SXDT 18 +\\x222efe83d8cc48e422419d65cf82d410a276499b SXL 4 +\\x5299d6F7472DCc137D7f3C4BcfBBB514BaBF341A sXMR 18 +\\x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9 SXP 18 +\\xa2B0fDe6D710e201d0d608e924A484d1A5fEd57c sXRP 18 +\\x2e59005c5c0f0a4D77CcA82653d48b46322EE5Cd sXTZ 18 +\\xf45b14ddabf0f0e275e215b94dd24ae013a27f12 sXTZ 18 +\\x86a49f08ab6531a3e0e814c75f36de661b986ca1 SYB7 18 +\\xB6ff96B8A8d214544Ca0dBc9B33f7AD6503eFD32 SYNC 18 +\\xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c TAAS 6 +\\x7f1f2d3dfa99678675ece1c243d3f7bc3746db5d TAP 18 +\\xc27a2f05fa577a83ba0fdb4c38443c0718356501 TAU 18 +\\x00006100F7090010005F1bd7aE6122c3C2CF0090 TAUD 18 +\\x627974847450c45b60b3fe3598f4e6e4cf945b9a TBC 18 +\\x323e4d8097B0A58aB8210AC6efCC4a89285cFc6B TBCUSDB 18 +\\x8daebade922df735c38c80c7ebd708af50815faa TBTC 18 +\\x3a92bd396aef82af98ebc0aa9030d25a23b11c6b TBX 18 +\\x00000100F2A2bd000715001920eB70D229700085 TCAD 18 +\\x4824a7b64e3966b0133f4f4ffb1b9d6beb75fff7 TCT 18 +\\x1c79ab32C66aCAa1e9E81952B8AAa581B43e54E7 TEAM 4 +\\x85e076361cc813a908ff672f9bad1541474402b2 TEL 2 +\\xdd16ec0f66e54d453e6756713e533355989040e4 TEN 18 +\\xE5F166c0D8872B68790061317BB6CcA04582C912 TFD 18 +\\x00000000441378008EA67F4284A57932B1c000a5 TGBP 18 +\\x3883f5e181fccaf8410fa61e12b59bad963fb645 THETA 18 +\\x0000852600CEB001E08e00bC008be620d60031F2 THKD 18 +\\x29CbD0510EEc0327992CD6006e63F9Fa8E7f33B7 TIDAL 18 +\\x80bc5512561c7f85a3a9508c7df7901b370fa1df TIO 18 +\\xea1f346faf023f974eb5adaf088bbcdf02d761f4 TIX 18 +\\xaaaf91d9b90df800df4f55c205fd6989c977e73a TKN 8 +\\x497Ec0D6Ba2080f0ed7ecf7a79a2A907401b3239 TKNBNT 18 +\\x679131f591b4f369acb8cd8c51e68596806c3916 TLN 18 +\\xb0280743b44bf7db4b6be482b2ba7b75e5da096c TNS 18 +\\x8b353021189375591723e7384262f45709a3c3dc TOMO 18 +\\x77777feddddffc19ff86db637967013e6c6a116c TORN 18 +\\x0Ba45A8b5d5575935B8158a88C631E9F9C95a2e5 TRB 18 +\\xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b TRST 6 +\\xf230b790e05390fc8295f4d3f60332c93bed42e2 TRX 6 +\\x2c537e5624e4af88a7ae4060c022609376c8d0eb TRYb 6 +\\x0000000000085d4780b73119b644ae5ecd22b376 TUSD 18 +\\x8dd5fbce2f6a956c3022ba3663759011dd51e73e TUSD 18 +\\xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988 TVK 18 +\\x1fc31488f28ac846588ffa201cde0669168471bd UAX 2 +\\x8400d94a5cb0fa0d041a3788e395285d61c9ee5e UBT 8 +\\x290bd3a8F785a8dB30a0F6Baf9B88863b831747F UBTBNT 18 +\\x81fab276aec924fbde190cf379783526d413cf70 UGASFEB21 18 +\\x3d995510f8d82c2ea341845932b5ddde0bead9a3 UGASJAN21 18 +\\x2b5DFb7874F685BEA30b7d8426c9643A4bCF5873 UGASJUN21 18 +\\x4e110603e70b0b5f1c403ee543b37e1f1244cf28 UGASMAR21 18 +\\x09617f6fd6cf8a71278ec86e23bbab29c04353a7 ULT 18 +\\x04fa0d235c4abf4bcf4787af4cf447de572ef828 UMA 18 +\\xa478c2975ab1ea89e8196811f51a7b7ade33eb11 UNI(DAI/ETH) 18 +\\xc5be99A02C6857f9Eac67BbCE58DF5572498F40c UNI(ETH/AMPL) 18 +\\x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 UNI 18 +\\x83ee8ec605c0ae3d7f1c9e360ab45a6c1c033ab9 UNIDUB 18 +\\x3e370a6c8255b065bd42bc0ac9255b269cfcc172 UNIPOT 8 +\\xd13c7342e1ef687c5ad21b27c2b65d772cab5c8c UOS 4 +\\x6ba460ab75cd2c56343b3517ffeba60748654d26 UP 8 +\\x1EFa978C8560aB6A50B33810328a71f4D24967Ce UPT 8 +\\x67abf1c62d8acd07ada35908d38cd67be7dfeb36 UPT 8 +\\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e USD++ 18 +\\x22a39c2dd54b71ac884657bb3e37308abe2d02e1 USD 0 +\\x1f5350558f1e3e8bf370d4d552f3ebc785bf2979 USDARY 18 +\\xd1146B08e8104EeDBa44a73B7bda1d102c6ceDC9 USDB / BNT 18 +\\x309627af60f0926daa6041b8279484312f2bf060 USDB 18 +\\x846f7a6dE1eFbd7617760eBe1B89aa8CA2094025 USDB:PEGUSD 18 +\\x36aaB614d872BEdC6eA6731339c82A3fa3aEc65B USDBNT 18 +\\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC 6 +\\x1456688345527bE1f37E9e627DA0837D6f08C925 USDP 18 +\\x4954db6391f4feb5468b6b943d4935353596aec9 USDQ 18 +\\x9921f8F53EE185a6BFD5d9D8935107934D0B07DA USDQBNT 18 +\\xdac17f958d2ee523a2206206994597c13d831ec7 USDT 6 +\\xF2ff22976B973d6bcC17a7dC93B719162ADA2045 USDTUSDB 18 +\\xEC58d3aefc9AAa2E0036FA65F70d569f49D9d1ED USTONKSAPR21 18 +\\x70a72833d6bf7f508c8224ce59ea1ef3d0ea3a38 UTK 18 +\\x9e3319636e2126e3c0bc9e3134aec5e1508a46c7 UTNP 18 +\\x16f812be7fff02caf662b85d5d58a5da6572d4df UTT 8 +\\x48Fb253446873234F2fEBbF9BdeAA72d9d387f94 vBNT 18 +\\x340d2bde5eb28c1eed91b2f790723e3b160613b7 VEE 18 +\\xc9c3A465380bFaaC486C89ff7d5F60CC275D4E08 VEEBNT 18 +\\x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 VERI 18 +\\xd850942ef8811f2a866692a623011bde52a462c1 VET 18 +\\x708b63545467a9bcfb67af92299102c650e34a0e VETH 18 +\\x2c974b2d0ba1716e644c1fc59982a89ddd2ff724 VIB 18 +\\xF938424F7210f31dF2Aee3011291b658f872e91e VISR 18 +\\x92e78dae1315067a8819efd6dca432de9dcde2e9 VRS 6 +\\x1b40183EFB4Dd766f11bDa7A7c3AD8982e998421 VSP 18 +\\x27f610bf36eca0939093343ac28b1534a721dbb4 WAND 18 +\\x39bb259f66e1c59d5abef88375979b4d20d98022 WAX 8 +\\x67563E7A0F13642068F6F999e48c690107A4571F WAXBNT 18 +\\x7a2Bc711E19ba6aff6cE8246C546E8c4B4944DFD WAXE 8 +\\xFEE7EeaA0c2f3F7C7e6301751a8dE55cE4D059Ec WBTC 18 +\\x2260fac5e5542a773aa44fbcfedf7c193bc2c599 WBTC 8 +\\xa0afAA285Ce85974c3C881256cB7F225e3A1178a wCRES 18 +\\x123151402076fc819B7564510989e475c9cD93CA wDGLD 8 +\\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH 18 +\\x9355372396e3F6daF13359B7b607a3374cc638e0 WHALE 4 +\\x4f878c0852722b0976a955d68b376e4cd4ae99e5 WIC 8 +\\x667088b212ce3d06a1b553a7221e1fd19000d9af WINGS 18 +\\xA6Ab3c8aE51962f4582db841dE6b0A092041461e WINGSBNT 18 +\\x1b22c32cd936cb97c28c5690a0695a82abf688e6 WISH 18 +\\x1C9Df905571B22214Fa5FB10ad99ebe327f199C5 WISHBNT 18 +\\xf6b55acbbc49f4524aa48d19281a9a77c54de10f WLK 18 +\\x0d438f3b5175bebc262bf23753c1e53d03432bde wNXM 18 +\\xd075e95423C5c4BA1E122CaE0f4CdFA19b82881b wPE 18 +\\x0d7072bdc1c8a1a58a7352782d27209d64ad2ecb WPLS 18 +\\x175666d12fc722abd9e4a8ebf5d9b2d17b36b268 WSKR 18 +\\xb7cb1c96db6b22b0d3d9536e0108d062bd488f74 WTC 18 +\\x910dfc18d6ea3d6a7124a6f8b5458f281060fa4c X8X 18 +\\x28dee01d53fed0edf5f6e310bf8ef9311513ae40 XBP 18 +\\xb4272071ecadd69d933adcd19ca99fe80664fc08 XCHF 18 +\\x24dcc881e7dd730546834452f21872d5cb4b5293 XD 18 +\\x41ab1b6fcbb2fa9dced81acbdec13ea6315f2bf2 XDCE 18 +\\xd1BB51fECC950c7b1e4197D8d13A1d2A60795D2C XDCEBNT 18 +\\xE4CFE9eAa8Cdb0942A80B7bC68fD8Ab0F6D44903 XEND 18 +\\x054c64741dbafdc19784505494029823d89c3b13 XET 8 +\\x6FCb6408499a7c0f242E32D77EB51fFa1dD28a7E xHDX 12 +\\xa974c709cfb4566686553a20790685a47aceaa33 XIN 18 +\\x0f7f961648ae6db43c75663ac7e5414eb79b5704 XIO 18 +\\xbc86727e770de68b1060c91f6bb6945c73e10388 XNK 18 +\\xEe769CE6B4E2C2A079c5f67081225Af7C89F874C XPATBNT 18 +\\x7de91b204c1c737bcee6f000aaa6569cf7061cb7 XRT 9 +\\xaC14864ce5A98aF3248Ffbf549441b04421247D3 xSDT 18 +\\xC0E47007e084EEF3EE58eb33D777b3B4Ca98622f XSTAR 18 +\\x8798249c2E607446EfB7Ad49eC89dD1865Ff4272 xSUSHI 18 +\\x55296f69f40ea6d20e478533c15a6b08b654e758 XYO 18 +\\x48f07301E9E29c3C38a80ae8d9ae771F224f1054 XZAR 18 +\\x0e2298E3B3390e3b945a5456fBf59eCc3f55DA16 YAM 18 +\\x99d1Fa417f94dcD62BfE781a1213c092a47041Bc ycDAI 18 +\\xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8 yCURVE 18 +\\x9777d7E2b60bB01759D0E2f8be2095df444cb07E ycUSDC 6 +\\x1bE5d71F2dA660BFdee8012dDc58D024448A0A59 ycUSDT 6 +\\x4b7Fb448dF91C8Ed973494F8C8c4f12DAF3A8521 YD-BTC-JUN21 8 +\\xcBE430927370e95B4B10cFc702c6017EC7abEfC3 YD-ETH-JUN21 18 +\\xb4bebd34f6daafd808f73de0d10235a92fbb6c3d YETI 18 +\\x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e YFI 18 +\\xcf33eb02227255c45f595727dbb24ce16afc36a2 YHTS 18 +\\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31 YPIE 18 +\\xe1237aa7f535b0cc33fd973d66cbf830354d16c7 yWETH 18 +\\x5dbcf33d8c2e976c6b560249878e6f1491bca25c YYCRV 18 +\\xbd0793332e9fb844a52a205a233ef27a5b34b927 ZB 18 +\\x05f4a42e251f2d52b8ed15e9fedaacfcef1fad27 ZIL 12 +\\x4aac461c86abfa71e9d00d9a2cde8d74e4e1aeea ZINC 18 +\\xedd7c94fd7b4971b916d15067bc454b9e1bad980 ZIPT 18 +\\x42382f39e7c9f1add5fa5f0c6e24aa62f50be3b3 ZOM 18 +\\xe41d2489571d322189246dafa5ebde1f4699f498 ZRX 18 +\\x1a3c6768e200482F5f47D1BE77B7255aBCAe4Fe2 ZRXUSDB 18 +\\xee06a81a695750e71a662b51066f2c74cf4478a0 $DG 18 \. - COMMIT; -CREATE INDEX IF NOT EXISTS tokens_contract_address_decimals_idx ON erc20.tokens - USING btree (contract_address) INCLUDE (decimals); -CREATE INDEX IF NOT EXISTS tokens_symbol_decimals_idx ON erc20.tokens - USING btree (symbol) INCLUDE (decimals); +COMMIT; + +CREATE INDEX IF NOT EXISTS tokens_contract_address_decimals_idx ON erc20.tokens USING btree (contract_address) INCLUDE (decimals); +CREATE INDEX IF NOT EXISTS tokens_symbol_decimals_idx ON erc20.tokens USING btree (symbol) INCLUDE (decimals); diff --git a/dune/abstractions/ethereumnameservice/old_preimages.sql b/dune/abstractions/ethereumnameservice/old_preimages.sql index 1c3a332..1600481 100644 --- a/dune/abstractions/ethereumnameservice/old_preimages.sql +++ b/dune/abstractions/ethereumnameservice/old_preimages.sql @@ -1,4 +1,7 @@ -CREATE TABLE ethereumnameservice.old_preimages (name text, hash bytea); +CREATE TABLE ethereumnameservice.old_preimages ( + name text, + hash bytea +); COPY ethereumnameservice.old_preimages (name, hash) FROM stdin; holsberg \\x83e77e69f3dd96e4845c9c2318969f648a7d86374fcd73ffaa64218892e64499 diff --git a/dune/abstractions/ethereumnameservice/view_expirations.sql b/dune/abstractions/ethereumnameservice/view_expirations.sql index 8becfdc..a74275a 100644 --- a/dune/abstractions/ethereumnameservice/view_expirations.sql +++ b/dune/abstractions/ethereumnameservice/view_expirations.sql @@ -1,14 +1,24 @@ -CREATE OR REPLACE VIEW ethereumnameservice.view_expirations AS SELECT label, - TO_TIMESTAMP (min (expires)) AS min_expires, - min (evt_block_time) AS min_evt_block_time, - TO_TIMESTAMP (max (expires)) AS max_expires, - max (evt_block_time) AS max_evt_block_time, - count (*) AS count - FROM (SELECT numeric2bytea (id) AS label, expires, - evt_block_time FROM ethereumnameservice - ."BaseRegistrarImplementation_evt_NameRegistered" UNION SELECT - numeric2bytea (id) AS label, - expires, - evt_block_time FROM ethereumnameservice - ."BaseRegistrarImplementation_evt_NameRenewed") - AS r GROUP BY label; +CREATE OR REPLACE VIEW ethereumnameservice.view_expirations AS +SELECT + label, + TO_TIMESTAMP(min(expires)) AS min_expires, + min(evt_block_time) AS min_evt_block_time, + TO_TIMESTAMP(max(expires)) AS max_expires, + max(evt_block_time) AS max_evt_block_time, + count(*) AS count +FROM ( + SELECT + numeric2bytea(id) AS label, + expires, + evt_block_time + FROM + ethereumnameservice. "BaseRegistrarImplementation_evt_NameRegistered" + UNION + SELECT + numeric2bytea(id) AS label, + expires, + evt_block_time + FROM + ethereumnameservice. "BaseRegistrarImplementation_evt_NameRenewed") AS r +GROUP BY + label; diff --git a/dune/abstractions/ethereumnameservice/view_registrations.sql b/dune/abstractions/ethereumnameservice/view_registrations.sql index 29e4d77..aa3b44a 100644 --- a/dune/abstractions/ethereumnameservice/view_registrations.sql +++ b/dune/abstractions/ethereumnameservice/view_registrations.sql @@ -1,6 +1,6 @@ -CREATE OR REPLACE VIEW - ethereumnameservice.view_registrations AS SELECT *FROM ethereumnameservice - ."ETHRegistrarController_1_evt_NameRegistered" UNION SELECT *FROM - ethereumnameservice - ."ETHRegistrarController_2_evt_NameRegistered" UNION SELECT *FROM - ethereumnameservice."ETHRegistrarController_3_evt_NameRegistered" +CREATE OR REPLACE VIEW ethereumnameservice.view_registrations AS +SELECT * FROM ethereumnameservice."ETHRegistrarController_1_evt_NameRegistered" +UNION +SELECT * FROM ethereumnameservice."ETHRegistrarController_2_evt_NameRegistered" +UNION +SELECT * FROM ethereumnameservice."ETHRegistrarController_3_evt_NameRegistered" diff --git a/dune/abstractions/ethereumnameservice/view_registries.sql b/dune/abstractions/ethereumnameservice/view_registries.sql index b9adb39..ec0f624 100644 --- a/dune/abstractions/ethereumnameservice/view_registries.sql +++ b/dune/abstractions/ethereumnameservice/view_registries.sql @@ -1,8 +1,13 @@ -CREATE OR REPLACE VIEW ethereumnameservice.view_registries AS SELECT node, - label, min (evt_block_time) AS min_evt_block_time, - max (evt_block_time) AS max_evt_block_time, - count (*) FROM ( - SELECT *FROM ethereumnameservice - ."ENSRegistry_evt_NewOwner" UNION SELECT *FROM ethereumnameservice - ."ENSRegistryWithFallback_evt_NewOwner") r GROUP BY node, - label; +CREATE OR REPLACE VIEW ethereumnameservice.view_registries AS +SELECT + node, + label, + min(evt_block_time) AS min_evt_block_time, + max(evt_block_time) AS max_evt_block_time, + count(*) + FROM ( + SELECT * FROM ethereumnameservice."ENSRegistry_evt_NewOwner" + UNION + SELECT * FROM ethereumnameservice."ENSRegistryWithFallback_evt_NewOwner" + ) r +GROUP BY node, label; diff --git a/dune/abstractions/ethereumnameservice/view_renewals.sql b/dune/abstractions/ethereumnameservice/view_renewals.sql index e4e2323..3bce0d3 100644 --- a/dune/abstractions/ethereumnameservice/view_renewals.sql +++ b/dune/abstractions/ethereumnameservice/view_renewals.sql @@ -1,6 +1,6 @@ -CREATE OR REPLACE VIEW - ethereumnameservice.view_renewals AS SELECT *FROM ethereumnameservice - ."ETHRegistrarController_1_evt_NameRenewed" UNION SELECT *FROM - ethereumnameservice - ."ETHRegistrarController_2_evt_NameRenewed" UNION SELECT *FROM - ethereumnameservice."ETHRegistrarController_3_evt_NameRenewed"; +CREATE OR REPLACE VIEW ethereumnameservice.view_renewals AS +SELECT * FROM ethereumnameservice."ETHRegistrarController_1_evt_NameRenewed" +UNION +SELECT * FROM ethereumnameservice."ETHRegistrarController_2_evt_NameRenewed" +UNION +SELECT * FROM ethereumnameservice."ETHRegistrarController_3_evt_NameRenewed"; diff --git a/dune/abstractions/gnosis_protocol/known_address.sql b/dune/abstractions/gnosis_protocol/known_address.sql index a333bf6..7e5936f 100644 --- a/dune/abstractions/gnosis_protocol/known_address.sql +++ b/dune/abstractions/gnosis_protocol/known_address.sql @@ -1,371 +1,372 @@ CREATE TABLE IF NOT EXISTS gnosis_protocol.known_address ( - address bytea UNIQUE, address_type text NOT NULL); + address bytea UNIQUE, + address_type text NOT NULL +); BEGIN; DELETE FROM gnosis_protocol.known_address *; COPY gnosis_protocol.known_address (address, address_type) FROM stdin; -\\x002184C787c58638D41D7b6F35B38b2A967E5033 liquidity -\\x00Adb0E4c11BBe10A694678647A2076f62c12e11 liquidity -\\x00F0FBDEEa1cDEc029Ba6025ca726Fdcf43E9025 liquidity -\\x013DC982fEe3d7f4f8149BE53cDaD3dA4aDad162 liquidity -\\x01ef26514b9275CFe4EC4cb9552611F29C845963 liquidity -\\x024db5796C3CaAB34e9c0995A1DF17A91EECA6cC liquidity -\\x026617a003616C8F4a660DB526Ac068c7bd12490 liquidity -\\x02CcD30740867976Cc42049275A82392fC91eA26 liquidity -\\x0394626f556f772D67c928bb42760c091fF60804 liquidity -\\x04699Ff48CC6531727A12344c30F3eD1062Ff3ad liquidity -\\x052253771E92a5Ff3c31163492b7e9101e0FC62f liquidity -\\x068183e2057651a1C124c994489236447f9a5030 liquidity -\\x069741B2fFC5b1Af74ABbC8f8573bA70e3808409 liquidity -\\x06e230d45235b071CfDC55e05D78E5E79dc7F1a1 liquidity -\\x0725C16D7E811d03c8c2A64fbbaA579233C10DB1 liquidity -\\x07442F52C92152dE8A8A3984de7A999770809E57 liquidity -\\x077b3B2DD6C0a0004d1eA775D8983Bd2E4CbBb67 liquidity -\\x083a8d7C1959b6250278cEaEE183166a79Ce9D7F liquidity -\\x087Dc2C109a14b5Aa07Da01B6326DC1c20fb44e5 liquidity -\\x0F27680805e50Fa0ab0dDAEa026ec3Da292a24DF liquidity -\\x0aa9d96eafcf74415c2D5a8b212546eF2D653932 liquidity -\\x0b631108E1603697b88ddd615A085DED7Ff5925c liquidity -\\x0c4bBfAa02b14924554715145f83560843E249b9 liquidity -\\x0d655471115590137cE3986A111CC5db1c2714EA liquidity -\\x0f833795b7597fcb7f22d8278c91ef63d441e949 Solver -\\x1039EDd1d100185Eaf45141C99227D1B994CE11F liquidity -\\x105Fa0964F28978e9796B0E17F6f086070A2E2Aa liquidity -\\x1634CB63743C7E360ef6Ef367c5B0C3735F564b6 liquidity -\\x164dbA559A5273b05E98fdf2d50d87CA65C5BFD5 liquidity -\\x167460E04fa7f08AB2470dDdeDe0D57c4d5F0883 liquidity -\\x16D956b6EcE6D01Ac681bE3315E97C0B9f6Ff0f7 liquidity -\\x17cA9Ff2122D98bE579904BE062aF75Ad4B0aB57 liquidity -\\x184C6CD5b7482bf53fD9952DF1B6c55146d00d16 liquidity -\\x18A4F048a42674105F00700017C8098ed62dF4d9 liquidity -\\x19601E6825D2715CBD22B6AEC9B2528eDEe974A6 liquidity -\\x1A17D6F6C0676c2a8986f80be81Fff6f4774FAEf liquidity -\\x1DB4597389199F8851B53eD48aE90bF451C564Fe liquidity -\\x1E800A7E4b103cA2C270e162E66d1B099eC8C1A7 liquidity -\\x1b9A0da77a5cACe4E7035993cBB2e4b1b3b164CF liquidity -\\x1bf43Eb884A0624989f99Ed4AC3f1a2BdE0152f5 liquidity -\\x1c60B58C72933A9263c928b1D2Cd6D2a0188364b liquidity -\\x1cC2670592A99716E3Ae3e6d8132E8B2f924d457 liquidity -\\x1cD291E75bd43F27A6e81Ea0B0C4862ed41406D6 liquidity -\\x1dA1042fF6E08a7D75f79abFd1aBb46416d54CE2 liquidity -\\x1ea5A3e074e86Bd3728F8816D8A1d7C1490bD33A liquidity -\\x1f9282A27eE684b60Ab87676E969C45f80723198 liquidity -\\x222553e6215115ECfa5392AA915991296B21a8CE liquidity -\\x25b0472b6d7f284bC463D7c81f3CB2C3DCC025cf liquidity -\\x2619cd2Fb826455F5481040C125f0b8B5AAbe1D5 liquidity -\\x2661a8d2a2de9Bb48d0AA8c41aD0b7fD9ea04035 liquidity -\\x26F6A699D67AFFd52992e4b881dd3b20d7bCc9BA liquidity -\\x2755Db2E6Cf295957FEe39EAEF1D07852c4c158b liquidity -\\x282a610b988Ca1C9d1bE7df02288d63a73F4F124 liquidity -\\x284aC2a249A6ab1faEF688B4De6E9746c47b0cae liquidity -\\x2952bC69739c9534d09525ccCa33950F311CbE88 liquidity -\\x2F1098C021b96E740F291C2D9D7a9562b2f7539a liquidity -\\x2F5d0D3a2E4f46083433849a4BF39ac668a2771E liquidity -\\x2a0eF90bCecd966Ed27fA5Ce489964876AdC79cC liquidity -\\x2cef9A8596aa983aD973bd5B8b5278F3AC83b789 liquidity -\\x2dB377aDD47F5d1A321a634d5d10e0524CD939Ba liquidity -\\x3032aafDA2b54ec5BFf877790bd41A438923e6b4 liquidity -\\x30aC05531AD3Defd35b623023f4A9bF12F299A55 liquidity -\\x30d1c4B0cA76543eE50fD1fEB9ca1363d43fC461 liquidity -\\x31699404082d8908Eee25D17a6C5874DA89BfF23 liquidity -\\x31b27091913b24ba8420Fcf7c137240435332A16 liquidity -\\x31fc45a95F2a357b53121e761B91484298570CD7 liquidity -\\x3247CFcA66Df47a641C52f8F8244c02Ea0825208 liquidity -\\x328cfD33cf2fC206857738A8bD602cDaAb10301E liquidity -\\x355eC66487dFFe146c77Ae523c72765a6522161f liquidity -\\x36591116468a74eB8941d46EaeC3f4355f102ee3 liquidity -\\x36731EC6C6c10d99f09580820b8D30607A383288 liquidity -\\x36804478A1ca4B2Ce239bc41Af63B2d1d403b4c4 liquidity -\\x36f7c5b5b8d66cec99e1282dd1c069648a0d4637 Solver -\\x370a076b5b6A10A8355127db728911ED1D99E531 liquidity -\\x37DdD7D2183995E32aCCACaFD24A375110b19f41 liquidity -\\x39601A36170DB174774d83d0e8Fa8dE9E9B6993B liquidity -\\x3A468dcfBD8b3636372E87C981568D8D3FC76741 liquidity -\\x3BB14861D62021c675a8631386dBBF07F6A15Fe5 liquidity -\\x3D4Ca8e6c830e3358f0145CbA2e3c5A6B086DAAE liquidity -\\x3Db6773d641ddd0D2e866F9b8a2C87269B518D1b liquidity -\\x3F7393618972a9D8C74075Eb426820948510F2Bd liquidity -\\x3a58a6E39B62Fe2FF81e06B0777BB3a476e90f44 liquidity -\\x3b9059CE69f6bb14B2a27FeFf02f6C3021D9ff95 liquidity -\\x3c7A1158d85b264cC8CDC715A6Fe8D408B5F6129 liquidity -\\x3d184438246aB153FcD5BaC2B29680789de35035 liquidity -\\x3e6C2b2c3a842b6492F9F43349D77A40568e3d7E liquidity -\\x3eB57eE5885eC7Af5677012864F9c8dD1A0972c3 liquidity -\\x40d82b56a4C9FD0a9a650b94C8d0aA8bb120de2C liquidity -\\x4109A530eF9343E2EF776866Af5ba579e41a19cE liquidity -\\x410f792da8a0a2e2f43f7b9317dA04E00F05D1AD liquidity -\\x4285Ec840F446cB64BFe4e14532512d7C1c68995 liquidity -\\x42CeD56C69fB9b497CE46d1565D067e47D45194B liquidity -\\x43A734E3b6DB49e20362F2a1EBB76dF436a9b0F4 liquidity -\\x43F3752578d9F38677f6138A23960b49C7991703 liquidity -\\x43e186b7Af9a152F11392C82B3B57a79161f9168 liquidity -\\x43f1cc8461Bf9857D65d0f9CA25457dC3e0fDcd5 liquidity -\\x448B287E0dd7a932d1C5A80A4f4F4A12e5ae2B88 liquidity -\\x44F5ee112730Ce2Fffc12d3116eB6C8a1dC1280D liquidity -\\x453ad119f26128034d3b5c2b6179b8b7f63ae1c7 Solver -\\x459c7F5562787B665da29A59f6aD5821594872fc liquidity -\\x45d8a3d10cd7Da86Dac21a51B305312Ebf80072d liquidity -\\x46dDEC4FB343430EDC8F4174e8f18143bCCCc008 liquidity -\\x4721BeE9248389393460344Ff03f218Aee44a05c liquidity -\\x475023418a5Fdf5a395453078470649c2191273d liquidity -\\x47abfA594b9B2813cc82a42b180008c3f7dBAA30 liquidity -\\x483F081bB0C25A5B216D1A4BD9CE0196092A0575 liquidity -\\x4A77F409187E0f5084A391faC25c3F3497db73FB liquidity -\\x4Ac1432C02Fa477e814A305e69fd975c39c9517F liquidity -\\x4C7281e2Bd549a0aEa492b28Ef60E3D81Fed36E6 liquidity -\\x4CE34A79ad190f2E1546B14A70C0fE84bB947792 liquidity -\\x4D9AFb62d2c711fFC25727B84819eE17aDbdF34d liquidity -\\x4E748d6b60CD5c83859Acf63189669Bc83044FA6 liquidity -\\x4F1E062427302410a84a48C45C07834Cb9960359 liquidity -\\x4d83B3728850FDaEFe65360ae1B99665186a5866 liquidity -\\x4dAb56fc532A04e73087c18d3d377210a1233685 liquidity -\\x4f3A6729d0570f61E9b2f5C3277F6CB969183a76 liquidity -\\x50ACfC5d2f32CB2acebCA468A46E5331c6C696b8 liquidity -\\x51217e4769DFD61a42f8A509d4DCcC5683BFCB21 liquidity -\\x519C66D04878C0BA193B2e696173A0c0e17c527e liquidity -\\x51F56E82fC411a78d7D348C707E0de6D0c65Cf44 liquidity -\\x51f633756De84c4560387127BE94Fb74Fa04b57c liquidity -\\x52B2A0774488140726229Be88fCaB9eF8f991afE liquidity -\\x52Ed30bBEa4379cfA617633e7119DAE159B385Bf liquidity -\\x531eE733B6d6e320CDf73dAbc9D38A9e76954Cc6 liquidity -\\x547bC8f6c144d6D833C8A749C90a0Fc34CBc50eE liquidity -\\x54DA64b64aF6B1E4e7f911e036CE1E2Fae4b4a55 market maker -\\x55d633Df856809c035d1c8Fb17462d657Ad08a0C liquidity -\\x5636351e9fC58070fC9e4Dde36c1Ff76A1fbc5D6 liquidity -\\x56f16a40a00C016bd71bB3144C0Cd9932Fa9D847 liquidity -\\x5705487d0C6537bD2AFb7B53574e5Bd9Bd4b9813 market maker -\\x5706a8179757414bFF24A41b02D61997053B8537 liquidity -\\x575D09E5149F778178Da52edEBe06D326dEF24da liquidity -\\x57a71E92cF9d9D88d2A81127e61C642D0174b2Bf liquidity -\\x5A317285cD83092fD40153C4B7c3Df64d8482Da8 liquidity -\\x5AE84974FF12998Cfae93fc63f8e2DcaDbEDCC66 liquidity -\\x5Ce64e024D54Eee4E6409829CF0fF8529E5da170 market maker -\\x5F7DdAFa0D926bFBC78A20474A8f86044D5a4c43 liquidity -\\x5a30ff01dc11223cff4e99d4263cb6f3aaa69e70 Solver -\\x5c1722eD2F8bb781e57F2a6F464CFf06DBD84578 liquidity -\\x5c60B16246018638aD230db8343e69Aa36793e68 liquidity -\\x6015112DdD3f2EaCac088a9393C2CD85D6BCa8a9 liquidity -\\x607aDF506deBA187ca0233B410773d0dD583e1D4 liquidity -\\x637de2dA47603Af37Cb3A4A0Df5D03590DD9De4A liquidity -\\x63BFf26Aee9dB95F67676b1b2c1c0fdC841DB58f liquidity -\\x649E70229B30E5Bc0CEF679F9f09Cd64fDaBB0d9 liquidity -\\x64FefC0F6881806ce38F191eb608C717080d932B liquidity -\\x6529cE1070Bf93E78584285Ca6bb269Ea34650a3 liquidity -\\x65539d12c28946831D65Bb32eEc3A33CaBFB9249 liquidity -\\x65A6fb41eD0F7806ADD5969984Ca77F7B5a0E4e7 liquidity -\\x65AAEc82f8558667Cedb2862232A6772d3E93759 liquidity -\\x665316dabde5c5bc57ad0b2eed523447c5d2a570 Solver -\\x679C358D6d5Ec3f8FE5D19B8C454C11C4d0f2208 liquidity -\\x69107E1AEA247566313E2CaB4F46d27A3Fdc54E5 liquidity -\\x6DaF9013E8497Cd76F18516a9cf24ec53A359609 liquidity -\\x6a38aa8403469B4349Ec5D5d6e6E18E64f276F50 liquidity -\\x6a79D177B8Ab7e6CD84A4e36210bE3E174a20fd1 liquidity -\\x6aD3F9b3313162056361c90D68114282C9C73538 liquidity -\\x6b8A61F82b34b6A6c3141dEAc6aa9714E7B0a7a4 liquidity -\\x6bA77Ae3defE9101eE99a94aaCeacaDfE0B972E8 liquidity -\\x6bD4141af55314Cd3f4C81272033b0e025783Cc0 liquidity -\\x6c0C324354f26f43eC15c5d2c91F207A18524C1D liquidity -\\x6c76E2D26ac3010dBe081481698724030AEdbe0b liquidity -\\x6dC834bEF57e60470e35b3E333cEEd45EB32bA22 liquidity -\\x7127Bf85fFF72cDDf72a28a1569fc6Ce5810bB4D liquidity -\\x7129F869845e854AfA805170a6E42ce42a543b3D liquidity -\\x72DB39da38fa313A004770E8C4d9416428068024 liquidity -\\x7366346810E6760D56C94b844E43e0E319C9AE42 liquidity -\\x7445c64684Ba17Aaf03b17Fc39B208EE67C47Eb3 liquidity -\\x7496Da28605A040799383b49BBFC93eF0cd580aB liquidity -\\x74c61eC16D980Ac775D306444ceDB4414a170370 liquidity -\\x74ea753cF82DaC5d73817a53972C7F32778319F6 liquidity -\\x75287A9D114CeFE339Ec339E44d706E847651b93 liquidity -\\x75a2f340Fd362ffab3d9e6Ba2995Eb28189406f2 liquidity -\\x7945cdCA29ae9a7791998aff23c5DDC5cD257175 liquidity -\\x797ACcE57a3d283175351c37B4436D3ae87f0490 liquidity -\\x79D39b54B664D8aF7Ef3A685D855dB71685D62aa liquidity -\\x79ed01E900835A657d974F3D0bF99Ca3521FE2bB liquidity -\\x7Af6e8FD96615D8f6Bfe9c2E7BD39604a06b628f liquidity -\\x7B1560Ec3B6E77aEbfA82cD8eA6EB1cb02331029 liquidity -\\x7BBeaDccD09bAE29D8d40c4f91ab76EE25fC8dda liquidity -\\x7E86F9523aAC25b0Da7D158891D2F2e07FD710e7 liquidity -\\x7F2baf8C5Db610E6120c6D7Be6fd5ed930dc3308 liquidity -\\x7a48Dac683DA91e4faa5aB13D91AB5fd170875bd liquidity -\\x7bAeEbbd7Fd1f41f3DA69A08f8E053C8CCBb592b liquidity -\\x7bCe8f1485C74B5eA536C12eA5713E38fF353d2e liquidity -\\x7dCE6B3E6cCD3020f4121dA76a8857bdB878ace6 liquidity -\\x7dD72870863c6Bb12534334A14d15B5Ef5801421 liquidity -\\x806C6eB86A8274aE01798486d314aCa87884d52C liquidity -\\x8184d7d86Cad5db73722F8F4483187c3F61B4b1B liquidity -\\x81D3430bF6A609f40365868914C154182D8ee576 liquidity -\\x81F1563ec197c2504c275eD683Cf2b1483A26d5f liquidity -\\x81c89274Dc7C9BAcE082d2ca00697d2d2857D2eE liquidity -\\x83af1CfBF94f792eEB36741c5372F6660A9bE920 liquidity -\\x88c470b7A4Db417Ad3578B485302D0C260668393 liquidity -\\x89534Fa6c72d10DEe8a999Fab4139E7911f5Ea19 liquidity -\\x8E997C4b4F89514ea146D937C9ec89449F270195 liquidity -\\x8d8d0d74136AE888aA23eB81f9f0d95Cf9D6b8dD liquidity -\\x8fBAAaAc0D69Edbf4DaEba9322b103da635EC445 liquidity -\\x906B5c2877dEad3c5565b042094d182b7575ADdE liquidity -\\x90cBbcA16a0d1B802F575c179288B739d545b791 liquidity -\\x91598E8b03332339DB7FcD0CfAedB41F0c77131e liquidity -\\x917a07A0aF4E6A369562a16f9270a8D29E381963 liquidity -\\x919FACAB2566E06C1E8b643f8256A1E34d630E3b liquidity -\\x9482fa358097193ed699927CA0B1991e90eE4E7E liquidity -\\x952a27EC90C52bF00d540458E769114db893cF65 liquidity -\\x95D368183934bDFCcB2d0068f37aFeD3d350770a liquidity -\\x95D806485731E2033A0FDb3DcFfc0E6bF9FA3b37 liquidity -\\x9669dE5Aa6F9A0Ed5A757896Fe8840FD7e85c8B5 liquidity -\\x96aC86684b0657DA25EbC55Bdb075A0Acee1Ce94 liquidity -\\x98aff473B35E21Dc42c3983394c4867Ff8769cC6 liquidity -\\x98f55C7665B7d06293518E087DE88940417c9699 liquidity -\\x997d8977427E9A691b1535A148190f71FAAdC7e4 liquidity -\\x9DBFfA92Bb44F1d3b41Fa7761056FcD633d51459 liquidity -\\x9F0644875Df59661dA1F96546B04CE44EfA2926D liquidity -\\x9FdAafd6a031aeAF3D7355703C2413a921BCaC26 liquidity -\\x9bB418abb99402697B38562B7b483eBcf46e9b41 liquidity -\\x9bD926383A3514A1A5B379fC3fa8212FB39Ad6ED liquidity -\\x9cA9B931a382c35bc5B1c8B308f9329b7eC6364E liquidity -\\x9d735E56625e5fE7098E509e73238aca2557286a liquidity -\\x9e21FA74B59f3c3C9250f237B1E039509e0711ab liquidity -\\x9e6CCA0E2eb59Bcaf4649A918F091eF2d234c740 liquidity -\\x9eACdeeb7699E997AeECD3974884b4E3F3EDBf61 liquidity -\\x9ee11fccd3f692d1ddb281d81403b7e08b964c76 Solver -\\x9f550AE660491d1f77B4D141A53537a0d7949c60 liquidity -\\x9f6297e7341A1be2474d6Fe01779297276463b37 liquidity -\\x9f8157fee385f3620e5f3a259cd4851089305605 market maker -\\xA085278322B6E576493fA12A01d0422d987b88e9 liquidity -\\xA232eC1090723B860CBEd25480214C9E4607F002 liquidity -\\xA5a5506882CDcddD85e1102A18c6057af35Bf0ea liquidity -\\xAA4bdE8Bc545D4730e5e61aA8516FA8e525E9fE4 liquidity -\\xAB795A52D809e4Aa56da23b215Db7663d57CDE3A liquidity -\\xAE940E7244528dE404f746eED56f0044BAa65252 liquidity -\\xAEb53BD66935133b2c4A32241D663f60aF8Ef5C6 liquidity -\\xAb27410C58F34F17e14D16381616e949aB24229e liquidity -\\xB09a3A1F6e0a796b015fed908a6acD571cE23d9D liquidity -\\xB1339aA0B62a49ceB555a54af358fd1f31eD6814 liquidity -\\xB30D7400ab53cB81512629e26080127eFfb32c00 liquidity -\\xB498dB083e1E2c25A0d384f87a4D05eB7c05effC liquidity -\\xB5099eE9a42a7adD0Afe389bfbcD6C40C5a147C4 liquidity -\\xB6ba5632F7ab8f167fc832425410a5020f08B0eB liquidity -\\xB7bbA2aC0b2C27f8355bf9D8696E05573Bca945E liquidity -\\xB93bF9fd0890709d86f319EB5354f520329Db2E1 liquidity -\\xBAD6FCB58ade50D0fAC679b99193a00C452B3f5C liquidity -\\xBB8a6547F79790d3f7a5A7A0f7e73C7aa04A7d90 liquidity -\\xBF8C3FA1c408e45E684dE718002840454bDEC3D2 liquidity -\\xBFA03FeeB4889F360f61464dab315C1a159289aF liquidity -\\xBf6406713f46e33aB999Efd5126667F9B03FbE67 liquidity -\\xC3F0938CaF88d548188907fCBE34D948cFf6d001 liquidity -\\xC40C0D2Abfe61ED024E0DF709063a52E504D7922 liquidity -\\xC5B24B4Dab763a44AFe57f66eE0074C2598E84ab liquidity -\\xC77466A2449E519B5bffC3DFAcAAf1Fe1D765667 liquidity -\\xCB5026995eb2e85683e51A3293d264Fa5F07Dd81 liquidity -\\xCfA45284EE1eAa13682A9Da39a60D07b47c1074F liquidity -\\xD08F4a3ec4AE05080bED374A2947562b520E1DFb liquidity -\\xD1128b16691bAfafc5d626210a22c8B329BA710E liquidity -\\xD17e111CB0c2209Be83E6e37Ee8D8CFDD42B7571 liquidity -\\xD25d24641213D52377FbF7a82990C7D7BC3688EF liquidity -\\xD2c419057cd372a85b9BbA4a363303253De6fF57 liquidity -\\xD34AD431994192618E2E73867FA2B91eC2fAadf8 liquidity -\\xD458144Ff2dde7Da45Bb8A7E67971A44dAdA0AB7 liquidity -\\xD669AC924eb6812C48afA984B5efFd776d035001 liquidity -\\xD785d0e45fF76BB12400AbfC6D9c84500F2ac02D liquidity -\\xD816073771BEb353C527A980a0FF2d768DC4491C liquidity -\\xDD77394eCD4349c25eF3931D5f28e17dadf53d4c liquidity -\\xDD9626CF3C52FA817816940B937A49b44b3DD674 liquidity -\\xDEA8D87eC7b6d6C17F5C70ec82103F6330095Dca liquidity -\\xDEB0ffcc5FCd042C3F32BfCdaa069514Bc743F3d liquidity -\\xDcBB69104d58d4393B19f990FD4c1971D6F4B1E2 liquidity -\\xE1C3D39e2377F20325f0Fdf40b835c768E257C66 liquidity -\\xE4A386D9f2Bab2afb010Cb7130798A634757b599 liquidity -\\xE5a93F2Ffbc70c39154B09d6511Fc612d2f16DE4 Solver -\\xE73604fC1724a50CEcBC1096d4229b81aF117c94 liquidity -\\xE94980d906a4BD21E72d92431a5e32B7AD2436f2 liquidity -\\xEC017db25fe89b55e32228240f04B26a332bF315 liquidity -\\xEC3F72253094cbD1ff767dCFC0Fbe9Ee9e5831Ae liquidity -\\xED5ff7Ad04Caa9f69CBc20b6C82d00b4a3DAf114 liquidity -\\xEb99B563FB084c0BAE3a0Fb123d776C650Aa4766 liquidity -\\xEcA54b5CF597c261E2a4aC3dC4413A0A054EC583 liquidity -\\xF002d288087D9b0DEEb9185e131A1E77dBDF28F6 liquidity -\\xF17965920a9e676FCbA7b234605629b5b5727bd1 liquidity -\\xF48c7B663DFCa76E1954bC44f7Fc006e2e04b09C liquidity -\\xF5c26F655Da871e6508b36e42c5d78925fB094c4 liquidity -\\xF689f56b8653d492a85dE4a472894470dC9B9b33 liquidity -\\xF7E0e9c5934DB9ec9999c9DC8a8ca38e81e48Ac0 liquidity -\\xF8A9E585e91a26B71a84163aD1633F59e57d74e7 liquidity -\\xF8e8C46028e238EcF9973c9b74c103B1756823da liquidity -\\xF917b392d20f186A11fDB7a660BdE64B426D6776 liquidity -\\xFAE94708C2E91f70bA2c901bA23851840b3893B5 liquidity -\\xFAf106837b17F8c103dd10da56935Ef0ad302dc6 liquidity -\\xFB62b4F54C282A81356663Fff3961495786A7059 liquidity -\\xFaDFF26d4B95a59FF2Fc227906AD619b5406e628 liquidity -\\xFcb1954Aff83F07dB5F3665349797BaD77A75c81 liquidity -\\xa0a20191CBEA6826FCeBCE55Ac73c72580C780ef liquidity -\\xa12852Fe4f088b1d6118377b1f57622AdFC4B0E3 liquidity -\\xa35b617e794d4886413E676B44949e8AE1e896b3 liquidity -\\xa48358D4c0ad126276AA7Ba19ccf1EcA881A8B79 liquidity -\\xa5821aCF51177f8B827709e4863154fB59D6EA6A liquidity -\\xa67A1a69D198619411aF2dfF30593318Acf9D858 liquidity -\\xa6C2cD74aa618B5CBE0ea23ecEE72121743Bf4b7 liquidity -\\xa8c03018c35383D9a8DBE21F08a617cE67B19341 liquidity -\\xaCd4Fa35b83E832d400e401b1e87bF68FdeAd97E liquidity -\\xaF12196cBA071208eb76b04997875A5995361EFd liquidity -\\xaF52D0BfD8A8802261213D6715Ff3FeA1E5d0006 liquidity -\\xb0c6fEc41336d934C7D0deAa749203A39A1DD73f liquidity -\\xb40C8F06f285c5131839bAd685dFbf0eaD3f57b0 liquidity -\\xb51C321b30a173Fd160Ddc21DEa46f91a75E24a4 liquidity -\\xb93192C5584214dd60912D7Fd167AE841903220a liquidity -\\xb97E64AeE69137D3ADA7A2A14d9850645faE5387 liquidity -\\xb9E4f6B7cFC5F40E7bA40806E0be8726ECf034f0 liquidity -\\xbBC4CD6F38C99f39f00A65cECB4922d78Bfb029C liquidity -\\xbC8B4efD8c248a4be0ff0E4B7ae23B906903E42F liquidity -\\xbD40D7E895b87B8fF6a3F3203256a8e2003B79F2 liquidity -\\xba7dd58e6F294D6E26F22e267A62bB671Ee2b297 liquidity -\\xbd44C4198BAb1B0ddaee8899E9DaECD03292a434 liquidity -\\xbe401A46D21D92d4096E7C3302e59DfAe5BB320A liquidity -\\xc019415c47b861EA81F4240Ca8667d0a8ca382CF liquidity -\\xc09a5f4697Ba63a34f81a6f97A375259E3565e41 liquidity -\\xc242cbc2A919d18895AC19c907B8197148b2697b liquidity -\\xc2c602626f72956aE56eE4D90E180a2D8480DdeC liquidity -\\xc5053FBFeE038d50Bb0E444e2121FccecD722D89 liquidity -\\xc7CDB1839fB87ea5258E0829125d4910a3bAe8AB liquidity -\\xc7d44814ce209c08ACC59BC4cC597CB164062226 liquidity -\\xc98fb3c59d5a749AeB385E256b929F9B051F1b69 liquidity -\\xcC91634e10345125E0234EF88cf422381D9E7483 liquidity -\\xcE2B2Dd016d13Fb2D202405827f134dC85eFb5cA liquidity -\\xcF2602A2beC6D3AB30284f89404977A541aE8f58 liquidity -\\xca7b512316340b8d052c6b5aecf84338f3abbfb0 liquidity -\\xcd9B5f73cebF760E7113A71B5f47C4430F42AA28 liquidity -\\xcfE8a7eEeFa2182a91a86dB3C08ff6229899A50B liquidity -\\xd03d4aDAB29a4323aB0E04d5041324D2FAE9FdfB liquidity -\\xd14d291761fc53219eD09975316EED1C0C4D438d liquidity -\\xd2CF6bc70C93058F6545dF809df79f76f798aac0 liquidity -\\xd47c47acA9EA4d7F4c9c7E629A35B8A61815B1D0 liquidity -\\xdbF46Cabd90BA5c0D56f85eF1b9D4d04234E13EE liquidity -\\xdeAddd02B449bc6b3b253ccB08dA83cA5C443326 liquidity -\\xe08f9e738ddFC58DDC669E7400B817b099Ac2592 liquidity -\\xe0a0D0081BA638E2C95eB34f2bc949E70ea12Ecb liquidity -\\xe5764B7479544029EBE238b0F9074e450Fa6deD1 liquidity -\\xe6433B8BBdc8407B695b802e88F1718024A296cE liquidity -\\xe6aD3D014324fe724d961840a3dec1326D9d40F2 liquidity -\\xe7f6194D899c8FA0960d685c07125FfAADba5D74 liquidity -\\xeC00523d1FB47a9c9F70ADdaE34517421bB7b7e5 liquidity -\\xeE79a3bfBEb70c367Aba17D26528d231fcefE7ae liquidity -\\xeb13c6ff42f1307c026a7f6e2c97068658d9aea6 market maker -\\xec65c02a9FB6bb8Bb00067a7eE9116F8681945d4 liquidity -\\xf03b503cc9ee8aaa3b17856942a440be0c77cd84 liquidity -\\xf0D142931630F7fe354aadF2029a36B58B263842 liquidity -\\xf1a04A2c0310977B9fc0a0941182b7eA308d2b81 liquidity -\\xf20d27B75D08bE30f350D207D5BE391cbC20A9ef liquidity -\\xf29362D089C9EDc901CF70cB7c55C2Aa2C98539F liquidity -\\xf419c46fe10914cf5605be63b803a90cb3d4af82 Solver -\\xf4517a782b77Dfd62fB5ed7b31cbd78E34523B9b liquidity -\\xf67fDD47F522E7d6Ea11324E45A01914653F0dbC liquidity -\\xf9F8866E8cEF0019E3CAB2d9A61e8d5F6035D63a liquidity -\\xfAE2748F91525B7Dd7E9868c16f9Ad5a6EA5DE68 liquidity -\\xfcb2B2E0BF8B5c034fC68b06D4c9F867C3E76922 liquidity -\\xfeD27588535EEa65B4254946a717052d5661D5b3 liquidity -\\xff2d427b2C6Dc6E9F984e3706F673648f24F5331 liquidity +\\x002184C787c58638D41D7b6F35B38b2A967E5033 liquidity +\\x00Adb0E4c11BBe10A694678647A2076f62c12e11 liquidity +\\x00F0FBDEEa1cDEc029Ba6025ca726Fdcf43E9025 liquidity +\\x013DC982fEe3d7f4f8149BE53cDaD3dA4aDad162 liquidity +\\x01ef26514b9275CFe4EC4cb9552611F29C845963 liquidity +\\x024db5796C3CaAB34e9c0995A1DF17A91EECA6cC liquidity +\\x026617a003616C8F4a660DB526Ac068c7bd12490 liquidity +\\x02CcD30740867976Cc42049275A82392fC91eA26 liquidity +\\x0394626f556f772D67c928bb42760c091fF60804 liquidity +\\x04699Ff48CC6531727A12344c30F3eD1062Ff3ad liquidity +\\x052253771E92a5Ff3c31163492b7e9101e0FC62f liquidity +\\x068183e2057651a1C124c994489236447f9a5030 liquidity +\\x069741B2fFC5b1Af74ABbC8f8573bA70e3808409 liquidity +\\x06e230d45235b071CfDC55e05D78E5E79dc7F1a1 liquidity +\\x0725C16D7E811d03c8c2A64fbbaA579233C10DB1 liquidity +\\x07442F52C92152dE8A8A3984de7A999770809E57 liquidity +\\x077b3B2DD6C0a0004d1eA775D8983Bd2E4CbBb67 liquidity +\\x083a8d7C1959b6250278cEaEE183166a79Ce9D7F liquidity +\\x087Dc2C109a14b5Aa07Da01B6326DC1c20fb44e5 liquidity +\\x0F27680805e50Fa0ab0dDAEa026ec3Da292a24DF liquidity +\\x0aa9d96eafcf74415c2D5a8b212546eF2D653932 liquidity +\\x0b631108E1603697b88ddd615A085DED7Ff5925c liquidity +\\x0c4bBfAa02b14924554715145f83560843E249b9 liquidity +\\x0d655471115590137cE3986A111CC5db1c2714EA liquidity +\\x0f833795b7597fcb7f22d8278c91ef63d441e949 Solver +\\x1039EDd1d100185Eaf45141C99227D1B994CE11F liquidity +\\x105Fa0964F28978e9796B0E17F6f086070A2E2Aa liquidity +\\x1634CB63743C7E360ef6Ef367c5B0C3735F564b6 liquidity +\\x164dbA559A5273b05E98fdf2d50d87CA65C5BFD5 liquidity +\\x167460E04fa7f08AB2470dDdeDe0D57c4d5F0883 liquidity +\\x16D956b6EcE6D01Ac681bE3315E97C0B9f6Ff0f7 liquidity +\\x17cA9Ff2122D98bE579904BE062aF75Ad4B0aB57 liquidity +\\x184C6CD5b7482bf53fD9952DF1B6c55146d00d16 liquidity +\\x18A4F048a42674105F00700017C8098ed62dF4d9 liquidity +\\x19601E6825D2715CBD22B6AEC9B2528eDEe974A6 liquidity +\\x1A17D6F6C0676c2a8986f80be81Fff6f4774FAEf liquidity +\\x1DB4597389199F8851B53eD48aE90bF451C564Fe liquidity +\\x1E800A7E4b103cA2C270e162E66d1B099eC8C1A7 liquidity +\\x1b9A0da77a5cACe4E7035993cBB2e4b1b3b164CF liquidity +\\x1bf43Eb884A0624989f99Ed4AC3f1a2BdE0152f5 liquidity +\\x1c60B58C72933A9263c928b1D2Cd6D2a0188364b liquidity +\\x1cC2670592A99716E3Ae3e6d8132E8B2f924d457 liquidity +\\x1cD291E75bd43F27A6e81Ea0B0C4862ed41406D6 liquidity +\\x1dA1042fF6E08a7D75f79abFd1aBb46416d54CE2 liquidity +\\x1ea5A3e074e86Bd3728F8816D8A1d7C1490bD33A liquidity +\\x1f9282A27eE684b60Ab87676E969C45f80723198 liquidity +\\x222553e6215115ECfa5392AA915991296B21a8CE liquidity +\\x25b0472b6d7f284bC463D7c81f3CB2C3DCC025cf liquidity +\\x2619cd2Fb826455F5481040C125f0b8B5AAbe1D5 liquidity +\\x2661a8d2a2de9Bb48d0AA8c41aD0b7fD9ea04035 liquidity +\\x26F6A699D67AFFd52992e4b881dd3b20d7bCc9BA liquidity +\\x2755Db2E6Cf295957FEe39EAEF1D07852c4c158b liquidity +\\x282a610b988Ca1C9d1bE7df02288d63a73F4F124 liquidity +\\x284aC2a249A6ab1faEF688B4De6E9746c47b0cae liquidity +\\x2952bC69739c9534d09525ccCa33950F311CbE88 liquidity +\\x2F1098C021b96E740F291C2D9D7a9562b2f7539a liquidity +\\x2F5d0D3a2E4f46083433849a4BF39ac668a2771E liquidity +\\x2a0eF90bCecd966Ed27fA5Ce489964876AdC79cC liquidity +\\x2cef9A8596aa983aD973bd5B8b5278F3AC83b789 liquidity +\\x2dB377aDD47F5d1A321a634d5d10e0524CD939Ba liquidity +\\x3032aafDA2b54ec5BFf877790bd41A438923e6b4 liquidity +\\x30aC05531AD3Defd35b623023f4A9bF12F299A55 liquidity +\\x30d1c4B0cA76543eE50fD1fEB9ca1363d43fC461 liquidity +\\x31699404082d8908Eee25D17a6C5874DA89BfF23 liquidity +\\x31b27091913b24ba8420Fcf7c137240435332A16 liquidity +\\x31fc45a95F2a357b53121e761B91484298570CD7 liquidity +\\x3247CFcA66Df47a641C52f8F8244c02Ea0825208 liquidity +\\x328cfD33cf2fC206857738A8bD602cDaAb10301E liquidity +\\x355eC66487dFFe146c77Ae523c72765a6522161f liquidity +\\x36591116468a74eB8941d46EaeC3f4355f102ee3 liquidity +\\x36731EC6C6c10d99f09580820b8D30607A383288 liquidity +\\x36804478A1ca4B2Ce239bc41Af63B2d1d403b4c4 liquidity +\\x36f7c5b5b8d66cec99e1282dd1c069648a0d4637 Solver +\\x370a076b5b6A10A8355127db728911ED1D99E531 liquidity +\\x37DdD7D2183995E32aCCACaFD24A375110b19f41 liquidity +\\x39601A36170DB174774d83d0e8Fa8dE9E9B6993B liquidity +\\x3A468dcfBD8b3636372E87C981568D8D3FC76741 liquidity +\\x3BB14861D62021c675a8631386dBBF07F6A15Fe5 liquidity +\\x3D4Ca8e6c830e3358f0145CbA2e3c5A6B086DAAE liquidity +\\x3Db6773d641ddd0D2e866F9b8a2C87269B518D1b liquidity +\\x3F7393618972a9D8C74075Eb426820948510F2Bd liquidity +\\x3a58a6E39B62Fe2FF81e06B0777BB3a476e90f44 liquidity +\\x3b9059CE69f6bb14B2a27FeFf02f6C3021D9ff95 liquidity +\\x3c7A1158d85b264cC8CDC715A6Fe8D408B5F6129 liquidity +\\x3d184438246aB153FcD5BaC2B29680789de35035 liquidity +\\x3e6C2b2c3a842b6492F9F43349D77A40568e3d7E liquidity +\\x3eB57eE5885eC7Af5677012864F9c8dD1A0972c3 liquidity +\\x40d82b56a4C9FD0a9a650b94C8d0aA8bb120de2C liquidity +\\x4109A530eF9343E2EF776866Af5ba579e41a19cE liquidity +\\x410f792da8a0a2e2f43f7b9317dA04E00F05D1AD liquidity +\\x4285Ec840F446cB64BFe4e14532512d7C1c68995 liquidity +\\x42CeD56C69fB9b497CE46d1565D067e47D45194B liquidity +\\x43A734E3b6DB49e20362F2a1EBB76dF436a9b0F4 liquidity +\\x43F3752578d9F38677f6138A23960b49C7991703 liquidity +\\x43e186b7Af9a152F11392C82B3B57a79161f9168 liquidity +\\x43f1cc8461Bf9857D65d0f9CA25457dC3e0fDcd5 liquidity +\\x448B287E0dd7a932d1C5A80A4f4F4A12e5ae2B88 liquidity +\\x44F5ee112730Ce2Fffc12d3116eB6C8a1dC1280D liquidity +\\x453ad119f26128034d3b5c2b6179b8b7f63ae1c7 Solver +\\x459c7F5562787B665da29A59f6aD5821594872fc liquidity +\\x45d8a3d10cd7Da86Dac21a51B305312Ebf80072d liquidity +\\x46dDEC4FB343430EDC8F4174e8f18143bCCCc008 liquidity +\\x4721BeE9248389393460344Ff03f218Aee44a05c liquidity +\\x475023418a5Fdf5a395453078470649c2191273d liquidity +\\x47abfA594b9B2813cc82a42b180008c3f7dBAA30 liquidity +\\x483F081bB0C25A5B216D1A4BD9CE0196092A0575 liquidity +\\x4A77F409187E0f5084A391faC25c3F3497db73FB liquidity +\\x4Ac1432C02Fa477e814A305e69fd975c39c9517F liquidity +\\x4C7281e2Bd549a0aEa492b28Ef60E3D81Fed36E6 liquidity +\\x4CE34A79ad190f2E1546B14A70C0fE84bB947792 liquidity +\\x4D9AFb62d2c711fFC25727B84819eE17aDbdF34d liquidity +\\x4E748d6b60CD5c83859Acf63189669Bc83044FA6 liquidity +\\x4F1E062427302410a84a48C45C07834Cb9960359 liquidity +\\x4d83B3728850FDaEFe65360ae1B99665186a5866 liquidity +\\x4dAb56fc532A04e73087c18d3d377210a1233685 liquidity +\\x4f3A6729d0570f61E9b2f5C3277F6CB969183a76 liquidity +\\x50ACfC5d2f32CB2acebCA468A46E5331c6C696b8 liquidity +\\x51217e4769DFD61a42f8A509d4DCcC5683BFCB21 liquidity +\\x519C66D04878C0BA193B2e696173A0c0e17c527e liquidity +\\x51F56E82fC411a78d7D348C707E0de6D0c65Cf44 liquidity +\\x51f633756De84c4560387127BE94Fb74Fa04b57c liquidity +\\x52B2A0774488140726229Be88fCaB9eF8f991afE liquidity +\\x52Ed30bBEa4379cfA617633e7119DAE159B385Bf liquidity +\\x531eE733B6d6e320CDf73dAbc9D38A9e76954Cc6 liquidity +\\x547bC8f6c144d6D833C8A749C90a0Fc34CBc50eE liquidity +\\x54DA64b64aF6B1E4e7f911e036CE1E2Fae4b4a55 market maker +\\x55d633Df856809c035d1c8Fb17462d657Ad08a0C liquidity +\\x5636351e9fC58070fC9e4Dde36c1Ff76A1fbc5D6 liquidity +\\x56f16a40a00C016bd71bB3144C0Cd9932Fa9D847 liquidity +\\x5705487d0C6537bD2AFb7B53574e5Bd9Bd4b9813 market maker +\\x5706a8179757414bFF24A41b02D61997053B8537 liquidity +\\x575D09E5149F778178Da52edEBe06D326dEF24da liquidity +\\x57a71E92cF9d9D88d2A81127e61C642D0174b2Bf liquidity +\\x5A317285cD83092fD40153C4B7c3Df64d8482Da8 liquidity +\\x5AE84974FF12998Cfae93fc63f8e2DcaDbEDCC66 liquidity +\\x5Ce64e024D54Eee4E6409829CF0fF8529E5da170 market maker +\\x5F7DdAFa0D926bFBC78A20474A8f86044D5a4c43 liquidity +\\x5a30ff01dc11223cff4e99d4263cb6f3aaa69e70 Solver +\\x5c1722eD2F8bb781e57F2a6F464CFf06DBD84578 liquidity +\\x5c60B16246018638aD230db8343e69Aa36793e68 liquidity +\\x6015112DdD3f2EaCac088a9393C2CD85D6BCa8a9 liquidity +\\x607aDF506deBA187ca0233B410773d0dD583e1D4 liquidity +\\x637de2dA47603Af37Cb3A4A0Df5D03590DD9De4A liquidity +\\x63BFf26Aee9dB95F67676b1b2c1c0fdC841DB58f liquidity +\\x649E70229B30E5Bc0CEF679F9f09Cd64fDaBB0d9 liquidity +\\x64FefC0F6881806ce38F191eb608C717080d932B liquidity +\\x6529cE1070Bf93E78584285Ca6bb269Ea34650a3 liquidity +\\x65539d12c28946831D65Bb32eEc3A33CaBFB9249 liquidity +\\x65A6fb41eD0F7806ADD5969984Ca77F7B5a0E4e7 liquidity +\\x65AAEc82f8558667Cedb2862232A6772d3E93759 liquidity +\\x665316dabde5c5bc57ad0b2eed523447c5d2a570 Solver +\\x679C358D6d5Ec3f8FE5D19B8C454C11C4d0f2208 liquidity +\\x69107E1AEA247566313E2CaB4F46d27A3Fdc54E5 liquidity +\\x6DaF9013E8497Cd76F18516a9cf24ec53A359609 liquidity +\\x6a38aa8403469B4349Ec5D5d6e6E18E64f276F50 liquidity +\\x6a79D177B8Ab7e6CD84A4e36210bE3E174a20fd1 liquidity +\\x6aD3F9b3313162056361c90D68114282C9C73538 liquidity +\\x6b8A61F82b34b6A6c3141dEAc6aa9714E7B0a7a4 liquidity +\\x6bA77Ae3defE9101eE99a94aaCeacaDfE0B972E8 liquidity +\\x6bD4141af55314Cd3f4C81272033b0e025783Cc0 liquidity +\\x6c0C324354f26f43eC15c5d2c91F207A18524C1D liquidity +\\x6c76E2D26ac3010dBe081481698724030AEdbe0b liquidity +\\x6dC834bEF57e60470e35b3E333cEEd45EB32bA22 liquidity +\\x7127Bf85fFF72cDDf72a28a1569fc6Ce5810bB4D liquidity +\\x7129F869845e854AfA805170a6E42ce42a543b3D liquidity +\\x72DB39da38fa313A004770E8C4d9416428068024 liquidity +\\x7366346810E6760D56C94b844E43e0E319C9AE42 liquidity +\\x7445c64684Ba17Aaf03b17Fc39B208EE67C47Eb3 liquidity +\\x7496Da28605A040799383b49BBFC93eF0cd580aB liquidity +\\x74c61eC16D980Ac775D306444ceDB4414a170370 liquidity +\\x74ea753cF82DaC5d73817a53972C7F32778319F6 liquidity +\\x75287A9D114CeFE339Ec339E44d706E847651b93 liquidity +\\x75a2f340Fd362ffab3d9e6Ba2995Eb28189406f2 liquidity +\\x7945cdCA29ae9a7791998aff23c5DDC5cD257175 liquidity +\\x797ACcE57a3d283175351c37B4436D3ae87f0490 liquidity +\\x79D39b54B664D8aF7Ef3A685D855dB71685D62aa liquidity +\\x79ed01E900835A657d974F3D0bF99Ca3521FE2bB liquidity +\\x7Af6e8FD96615D8f6Bfe9c2E7BD39604a06b628f liquidity +\\x7B1560Ec3B6E77aEbfA82cD8eA6EB1cb02331029 liquidity +\\x7BBeaDccD09bAE29D8d40c4f91ab76EE25fC8dda liquidity +\\x7E86F9523aAC25b0Da7D158891D2F2e07FD710e7 liquidity +\\x7F2baf8C5Db610E6120c6D7Be6fd5ed930dc3308 liquidity +\\x7a48Dac683DA91e4faa5aB13D91AB5fd170875bd liquidity +\\x7bAeEbbd7Fd1f41f3DA69A08f8E053C8CCBb592b liquidity +\\x7bCe8f1485C74B5eA536C12eA5713E38fF353d2e liquidity +\\x7dCE6B3E6cCD3020f4121dA76a8857bdB878ace6 liquidity +\\x7dD72870863c6Bb12534334A14d15B5Ef5801421 liquidity +\\x806C6eB86A8274aE01798486d314aCa87884d52C liquidity +\\x8184d7d86Cad5db73722F8F4483187c3F61B4b1B liquidity +\\x81D3430bF6A609f40365868914C154182D8ee576 liquidity +\\x81F1563ec197c2504c275eD683Cf2b1483A26d5f liquidity +\\x81c89274Dc7C9BAcE082d2ca00697d2d2857D2eE liquidity +\\x83af1CfBF94f792eEB36741c5372F6660A9bE920 liquidity +\\x88c470b7A4Db417Ad3578B485302D0C260668393 liquidity +\\x89534Fa6c72d10DEe8a999Fab4139E7911f5Ea19 liquidity +\\x8E997C4b4F89514ea146D937C9ec89449F270195 liquidity +\\x8d8d0d74136AE888aA23eB81f9f0d95Cf9D6b8dD liquidity +\\x8fBAAaAc0D69Edbf4DaEba9322b103da635EC445 liquidity +\\x906B5c2877dEad3c5565b042094d182b7575ADdE liquidity +\\x90cBbcA16a0d1B802F575c179288B739d545b791 liquidity +\\x91598E8b03332339DB7FcD0CfAedB41F0c77131e liquidity +\\x917a07A0aF4E6A369562a16f9270a8D29E381963 liquidity +\\x919FACAB2566E06C1E8b643f8256A1E34d630E3b liquidity +\\x9482fa358097193ed699927CA0B1991e90eE4E7E liquidity +\\x952a27EC90C52bF00d540458E769114db893cF65 liquidity +\\x95D368183934bDFCcB2d0068f37aFeD3d350770a liquidity +\\x95D806485731E2033A0FDb3DcFfc0E6bF9FA3b37 liquidity +\\x9669dE5Aa6F9A0Ed5A757896Fe8840FD7e85c8B5 liquidity +\\x96aC86684b0657DA25EbC55Bdb075A0Acee1Ce94 liquidity +\\x98aff473B35E21Dc42c3983394c4867Ff8769cC6 liquidity +\\x98f55C7665B7d06293518E087DE88940417c9699 liquidity +\\x997d8977427E9A691b1535A148190f71FAAdC7e4 liquidity +\\x9DBFfA92Bb44F1d3b41Fa7761056FcD633d51459 liquidity +\\x9F0644875Df59661dA1F96546B04CE44EfA2926D liquidity +\\x9FdAafd6a031aeAF3D7355703C2413a921BCaC26 liquidity +\\x9bB418abb99402697B38562B7b483eBcf46e9b41 liquidity +\\x9bD926383A3514A1A5B379fC3fa8212FB39Ad6ED liquidity +\\x9cA9B931a382c35bc5B1c8B308f9329b7eC6364E liquidity +\\x9d735E56625e5fE7098E509e73238aca2557286a liquidity +\\x9e21FA74B59f3c3C9250f237B1E039509e0711ab liquidity +\\x9e6CCA0E2eb59Bcaf4649A918F091eF2d234c740 liquidity +\\x9eACdeeb7699E997AeECD3974884b4E3F3EDBf61 liquidity +\\x9ee11fccd3f692d1ddb281d81403b7e08b964c76 Solver +\\x9f550AE660491d1f77B4D141A53537a0d7949c60 liquidity +\\x9f6297e7341A1be2474d6Fe01779297276463b37 liquidity +\\x9f8157fee385f3620e5f3a259cd4851089305605 market maker +\\xA085278322B6E576493fA12A01d0422d987b88e9 liquidity +\\xA232eC1090723B860CBEd25480214C9E4607F002 liquidity +\\xA5a5506882CDcddD85e1102A18c6057af35Bf0ea liquidity +\\xAA4bdE8Bc545D4730e5e61aA8516FA8e525E9fE4 liquidity +\\xAB795A52D809e4Aa56da23b215Db7663d57CDE3A liquidity +\\xAE940E7244528dE404f746eED56f0044BAa65252 liquidity +\\xAEb53BD66935133b2c4A32241D663f60aF8Ef5C6 liquidity +\\xAb27410C58F34F17e14D16381616e949aB24229e liquidity +\\xB09a3A1F6e0a796b015fed908a6acD571cE23d9D liquidity +\\xB1339aA0B62a49ceB555a54af358fd1f31eD6814 liquidity +\\xB30D7400ab53cB81512629e26080127eFfb32c00 liquidity +\\xB498dB083e1E2c25A0d384f87a4D05eB7c05effC liquidity +\\xB5099eE9a42a7adD0Afe389bfbcD6C40C5a147C4 liquidity +\\xB6ba5632F7ab8f167fc832425410a5020f08B0eB liquidity +\\xB7bbA2aC0b2C27f8355bf9D8696E05573Bca945E liquidity +\\xB93bF9fd0890709d86f319EB5354f520329Db2E1 liquidity +\\xBAD6FCB58ade50D0fAC679b99193a00C452B3f5C liquidity +\\xBB8a6547F79790d3f7a5A7A0f7e73C7aa04A7d90 liquidity +\\xBF8C3FA1c408e45E684dE718002840454bDEC3D2 liquidity +\\xBFA03FeeB4889F360f61464dab315C1a159289aF liquidity +\\xBf6406713f46e33aB999Efd5126667F9B03FbE67 liquidity +\\xC3F0938CaF88d548188907fCBE34D948cFf6d001 liquidity +\\xC40C0D2Abfe61ED024E0DF709063a52E504D7922 liquidity +\\xC5B24B4Dab763a44AFe57f66eE0074C2598E84ab liquidity +\\xC77466A2449E519B5bffC3DFAcAAf1Fe1D765667 liquidity +\\xCB5026995eb2e85683e51A3293d264Fa5F07Dd81 liquidity +\\xCfA45284EE1eAa13682A9Da39a60D07b47c1074F liquidity +\\xD08F4a3ec4AE05080bED374A2947562b520E1DFb liquidity +\\xD1128b16691bAfafc5d626210a22c8B329BA710E liquidity +\\xD17e111CB0c2209Be83E6e37Ee8D8CFDD42B7571 liquidity +\\xD25d24641213D52377FbF7a82990C7D7BC3688EF liquidity +\\xD2c419057cd372a85b9BbA4a363303253De6fF57 liquidity +\\xD34AD431994192618E2E73867FA2B91eC2fAadf8 liquidity +\\xD458144Ff2dde7Da45Bb8A7E67971A44dAdA0AB7 liquidity +\\xD669AC924eb6812C48afA984B5efFd776d035001 liquidity +\\xD785d0e45fF76BB12400AbfC6D9c84500F2ac02D liquidity +\\xD816073771BEb353C527A980a0FF2d768DC4491C liquidity +\\xDD77394eCD4349c25eF3931D5f28e17dadf53d4c liquidity +\\xDD9626CF3C52FA817816940B937A49b44b3DD674 liquidity +\\xDEA8D87eC7b6d6C17F5C70ec82103F6330095Dca liquidity +\\xDEB0ffcc5FCd042C3F32BfCdaa069514Bc743F3d liquidity +\\xDcBB69104d58d4393B19f990FD4c1971D6F4B1E2 liquidity +\\xE1C3D39e2377F20325f0Fdf40b835c768E257C66 liquidity +\\xE4A386D9f2Bab2afb010Cb7130798A634757b599 liquidity +\\xE5a93F2Ffbc70c39154B09d6511Fc612d2f16DE4 Solver +\\xE73604fC1724a50CEcBC1096d4229b81aF117c94 liquidity +\\xE94980d906a4BD21E72d92431a5e32B7AD2436f2 liquidity +\\xEC017db25fe89b55e32228240f04B26a332bF315 liquidity +\\xEC3F72253094cbD1ff767dCFC0Fbe9Ee9e5831Ae liquidity +\\xED5ff7Ad04Caa9f69CBc20b6C82d00b4a3DAf114 liquidity +\\xEb99B563FB084c0BAE3a0Fb123d776C650Aa4766 liquidity +\\xEcA54b5CF597c261E2a4aC3dC4413A0A054EC583 liquidity +\\xF002d288087D9b0DEEb9185e131A1E77dBDF28F6 liquidity +\\xF17965920a9e676FCbA7b234605629b5b5727bd1 liquidity +\\xF48c7B663DFCa76E1954bC44f7Fc006e2e04b09C liquidity +\\xF5c26F655Da871e6508b36e42c5d78925fB094c4 liquidity +\\xF689f56b8653d492a85dE4a472894470dC9B9b33 liquidity +\\xF7E0e9c5934DB9ec9999c9DC8a8ca38e81e48Ac0 liquidity +\\xF8A9E585e91a26B71a84163aD1633F59e57d74e7 liquidity +\\xF8e8C46028e238EcF9973c9b74c103B1756823da liquidity +\\xF917b392d20f186A11fDB7a660BdE64B426D6776 liquidity +\\xFAE94708C2E91f70bA2c901bA23851840b3893B5 liquidity +\\xFAf106837b17F8c103dd10da56935Ef0ad302dc6 liquidity +\\xFB62b4F54C282A81356663Fff3961495786A7059 liquidity +\\xFaDFF26d4B95a59FF2Fc227906AD619b5406e628 liquidity +\\xFcb1954Aff83F07dB5F3665349797BaD77A75c81 liquidity +\\xa0a20191CBEA6826FCeBCE55Ac73c72580C780ef liquidity +\\xa12852Fe4f088b1d6118377b1f57622AdFC4B0E3 liquidity +\\xa35b617e794d4886413E676B44949e8AE1e896b3 liquidity +\\xa48358D4c0ad126276AA7Ba19ccf1EcA881A8B79 liquidity +\\xa5821aCF51177f8B827709e4863154fB59D6EA6A liquidity +\\xa67A1a69D198619411aF2dfF30593318Acf9D858 liquidity +\\xa6C2cD74aa618B5CBE0ea23ecEE72121743Bf4b7 liquidity +\\xa8c03018c35383D9a8DBE21F08a617cE67B19341 liquidity +\\xaCd4Fa35b83E832d400e401b1e87bF68FdeAd97E liquidity +\\xaF12196cBA071208eb76b04997875A5995361EFd liquidity +\\xaF52D0BfD8A8802261213D6715Ff3FeA1E5d0006 liquidity +\\xb0c6fEc41336d934C7D0deAa749203A39A1DD73f liquidity +\\xb40C8F06f285c5131839bAd685dFbf0eaD3f57b0 liquidity +\\xb51C321b30a173Fd160Ddc21DEa46f91a75E24a4 liquidity +\\xb93192C5584214dd60912D7Fd167AE841903220a liquidity +\\xb97E64AeE69137D3ADA7A2A14d9850645faE5387 liquidity +\\xb9E4f6B7cFC5F40E7bA40806E0be8726ECf034f0 liquidity +\\xbBC4CD6F38C99f39f00A65cECB4922d78Bfb029C liquidity +\\xbC8B4efD8c248a4be0ff0E4B7ae23B906903E42F liquidity +\\xbD40D7E895b87B8fF6a3F3203256a8e2003B79F2 liquidity +\\xba7dd58e6F294D6E26F22e267A62bB671Ee2b297 liquidity +\\xbd44C4198BAb1B0ddaee8899E9DaECD03292a434 liquidity +\\xbe401A46D21D92d4096E7C3302e59DfAe5BB320A liquidity +\\xc019415c47b861EA81F4240Ca8667d0a8ca382CF liquidity +\\xc09a5f4697Ba63a34f81a6f97A375259E3565e41 liquidity +\\xc242cbc2A919d18895AC19c907B8197148b2697b liquidity +\\xc2c602626f72956aE56eE4D90E180a2D8480DdeC liquidity +\\xc5053FBFeE038d50Bb0E444e2121FccecD722D89 liquidity +\\xc7CDB1839fB87ea5258E0829125d4910a3bAe8AB liquidity +\\xc7d44814ce209c08ACC59BC4cC597CB164062226 liquidity +\\xc98fb3c59d5a749AeB385E256b929F9B051F1b69 liquidity +\\xcC91634e10345125E0234EF88cf422381D9E7483 liquidity +\\xcE2B2Dd016d13Fb2D202405827f134dC85eFb5cA liquidity +\\xcF2602A2beC6D3AB30284f89404977A541aE8f58 liquidity +\\xca7b512316340b8d052c6b5aecf84338f3abbfb0 liquidity +\\xcd9B5f73cebF760E7113A71B5f47C4430F42AA28 liquidity +\\xcfE8a7eEeFa2182a91a86dB3C08ff6229899A50B liquidity +\\xd03d4aDAB29a4323aB0E04d5041324D2FAE9FdfB liquidity +\\xd14d291761fc53219eD09975316EED1C0C4D438d liquidity +\\xd2CF6bc70C93058F6545dF809df79f76f798aac0 liquidity +\\xd47c47acA9EA4d7F4c9c7E629A35B8A61815B1D0 liquidity +\\xdbF46Cabd90BA5c0D56f85eF1b9D4d04234E13EE liquidity +\\xdeAddd02B449bc6b3b253ccB08dA83cA5C443326 liquidity +\\xe08f9e738ddFC58DDC669E7400B817b099Ac2592 liquidity +\\xe0a0D0081BA638E2C95eB34f2bc949E70ea12Ecb liquidity +\\xe5764B7479544029EBE238b0F9074e450Fa6deD1 liquidity +\\xe6433B8BBdc8407B695b802e88F1718024A296cE liquidity +\\xe6aD3D014324fe724d961840a3dec1326D9d40F2 liquidity +\\xe7f6194D899c8FA0960d685c07125FfAADba5D74 liquidity +\\xeC00523d1FB47a9c9F70ADdaE34517421bB7b7e5 liquidity +\\xeE79a3bfBEb70c367Aba17D26528d231fcefE7ae liquidity +\\xeb13c6ff42f1307c026a7f6e2c97068658d9aea6 market maker +\\xec65c02a9FB6bb8Bb00067a7eE9116F8681945d4 liquidity +\\xf03b503cc9ee8aaa3b17856942a440be0c77cd84 liquidity +\\xf0D142931630F7fe354aadF2029a36B58B263842 liquidity +\\xf1a04A2c0310977B9fc0a0941182b7eA308d2b81 liquidity +\\xf20d27B75D08bE30f350D207D5BE391cbC20A9ef liquidity +\\xf29362D089C9EDc901CF70cB7c55C2Aa2C98539F liquidity +\\xf419c46fe10914cf5605be63b803a90cb3d4af82 Solver +\\xf4517a782b77Dfd62fB5ed7b31cbd78E34523B9b liquidity +\\xf67fDD47F522E7d6Ea11324E45A01914653F0dbC liquidity +\\xf9F8866E8cEF0019E3CAB2d9A61e8d5F6035D63a liquidity +\\xfAE2748F91525B7Dd7E9868c16f9Ad5a6EA5DE68 liquidity +\\xfcb2B2E0BF8B5c034fC68b06D4c9F867C3E76922 liquidity +\\xfeD27588535EEa65B4254946a717052d5661D5b3 liquidity +\\xff2d427b2C6Dc6E9F984e3706F673648f24F5331 liquidity \. - COMMIT; +COMMIT; -CREATE INDEX IF NOT EXISTS known_address_address_type_idx ON - gnosis_protocol.known_address (address, address_type); +CREATE INDEX IF NOT EXISTS known_address_address_type_idx ON gnosis_protocol.known_address (address, address_type); diff --git a/dune/abstractions/gnosis_protocol/view_balances.sql b/dune/abstractions/gnosis_protocol/view_balances.sql index 70006e5..27d090b 100644 --- a/dune/abstractions/gnosis_protocol/view_balances.sql +++ b/dune/abstractions/gnosis_protocol/view_balances.sql @@ -1,28 +1,39 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS gnosis_protocol.view_balances; -CREATE MATERIALIZED VIEW gnosis_protocol - .view_balances AS WITH last_movement - as (SELECT MAX (batch_id) as batch_id, - MAX (movement_date) as movement_date, trader, - token FROM gnosis_protocol.view_movement GROUP BY trader, - token) SELECT movement.trader, - movement.token_symbol, movement.token, movement.decimals, movement.balance, - movement.balance_deposited, movement.balance_deposited_atoms, - movement.balance_actual, movement.balance_actual_atoms, +CREATE MATERIALIZED VIEW gnosis_protocol.view_balances AS +WITH +last_movement as ( + SELECT + MAX(batch_id) as batch_id, + MAX(movement_date) as movement_date, + trader, + token + FROM gnosis_protocol.view_movement + GROUP BY trader, token +) +SELECT + movement.trader, + movement.token_symbol, + movement.token, + movement.decimals, + movement.balance, + movement.balance_deposited, + movement.balance_deposited_atoms, + movement.balance_actual, + movement.balance_actual_atoms, last_movement.movement_date as last_movement_date, - last_movement - .batch_id as last_movement_batch_id FROM last_movement JOIN - gnosis_protocol.view_movement movement ON movement - .batch_id = last_movement.batch_id AND movement - .trader = last_movement.trader AND movement - .token = last_movement.token; + last_movement.batch_id as last_movement_batch_id +FROM last_movement +JOIN gnosis_protocol.view_movement movement + ON movement.batch_id = last_movement.batch_id + AND movement.trader = last_movement.trader + AND movement.token = last_movement.token; -CREATE UNIQUE INDEX IF NOT EXISTS view_balances_id ON - gnosis_protocol.view_balances (trader, token); + +CREATE UNIQUE INDEX IF NOT EXISTS view_balances_id ON gnosis_protocol.view_balances (trader, token) ; CREATE INDEX view_balances_1 ON gnosis_protocol.view_balances (token); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/5 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_balances') ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/5 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_balances') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_daily_average_prices.sql b/dune/abstractions/gnosis_protocol/view_daily_average_prices.sql index 1417601..c025f99 100644 --- a/dune/abstractions/gnosis_protocol/view_daily_average_prices.sql +++ b/dune/abstractions/gnosis_protocol/view_daily_average_prices.sql @@ -2,40 +2,52 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS gnosis_protocol.view_daily_average_prices; CREATE MATERIALIZED VIEW gnosis_protocol.view_daily_average_prices AS - WITH days - as (SELECT date (time_series) - as day FROM generate_series ('2020-01-01' ::timestamp, now (), - '1 day') as time_series), +WITH +days as ( + SELECT date(time_series) as day + FROM generate_series('2020-01-01'::timestamp, now(), '1 day') as time_series +), - gp_prices as (SELECT symbol, date (price_date) as day, - AVG (token_usd_price) as average_price FROM - gnosis_protocol."view_price_batch" GROUP BY symbol, - day), +gp_prices as ( + SELECT symbol, date(price_date) as day, AVG(token_usd_price) as average_price + FROM gnosis_protocol."view_price_batch" + GROUP BY symbol, day +), - daily_prices - as (SELECT day, symbol, - average_price FROM (SELECT d.day, p.symbol, p.average_price, - ROW_NUMBER () OVER (PARTITION BY d.day, - p.symbol ORDER BY p.day desc) - as row FROM days d, - gp_prices p WHERE p.day <= d.day) a WHERE row - = 1) +daily_prices as ( + SELECT + day, + symbol, + average_price + FROM ( + SELECT + d.day, + p.symbol, + p.average_price, + ROW_NUMBER () OVER ( + PARTITION BY d.day, p.symbol + ORDER BY p.day desc + ) as row + FROM days d, gp_prices p + WHERE + p.day <= d.day + ) a WHERE row = 1 +) - SELECT *, - -100 - * (LAG (average_price) OVER (PARTITION BY symbol ORDER BY day) - - average_price) - / average_price AS price_change FROM daily_prices; +SELECT + *, + -100 * (LAG(average_price) OVER ( + PARTITION BY symbol + ORDER BY day + ) - average_price) / average_price AS price_change +FROM daily_prices; -CREATE UNIQUE INDEX IF NOT EXISTS view_daily_average_prices_id ON - gnosis_protocol.view_daily_average_prices (day, symbol); -CREATE INDEX view_daily_average_prices_1 ON - gnosis_protocol.view_daily_average_prices (day); -CREATE INDEX view_daily_average_prices_2 ON - gnosis_protocol.view_daily_average_prices (symbol); +CREATE UNIQUE INDEX IF NOT EXISTS view_daily_average_prices_id ON gnosis_protocol.view_daily_average_prices (day, symbol) ; +CREATE INDEX view_daily_average_prices_1 ON gnosis_protocol.view_daily_average_prices (day); +CREATE INDEX view_daily_average_prices_2 ON gnosis_protocol.view_daily_average_prices (symbol); -INSERT INTO cron.job (schedule, command)-- Every 6 hours.VALUES ( - '0 */6 * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_daily_average_prices') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +-- Every 6 hours. +VALUES ('0 */6 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_daily_average_prices') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_movement.sql b/dune/abstractions/gnosis_protocol/view_movement.sql index d70e0df..ea515e6 100644 --- a/dune/abstractions/gnosis_protocol/view_movement.sql +++ b/dune/abstractions/gnosis_protocol/view_movement.sql @@ -209,14 +209,13 @@ SELECT balances.balance_deposited_atoms FROM balances; -CREATE UNIQUE INDEX IF NOT EXISTS view_movement_id ON - gnosis_protocol.view_movement (trader, batch_id, token); + +CREATE UNIQUE INDEX IF NOT EXISTS view_movement_id ON gnosis_protocol.view_movement (trader, batch_id, token) ; CREATE INDEX view_movement_1 ON gnosis_protocol.view_movement (token_symbol); CREATE INDEX view_movement_2 ON gnosis_protocol.view_movement (token); CREATE INDEX view_movement_3 ON gnosis_protocol.view_movement (batch_id); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/5 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_movement') ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/5 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_movement') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_price_batch.sql b/dune/abstractions/gnosis_protocol/view_price_batch.sql index 019fb12..14db34a 100644 --- a/dune/abstractions/gnosis_protocol/view_price_batch.sql +++ b/dune/abstractions/gnosis_protocol/view_price_batch.sql @@ -182,17 +182,13 @@ FROM prices_in_usd LEFT OUTER JOIN best_owl_price ON best_owl_price.batch_id = prices_in_usd.batch_id AND best_owl_price.evt_index = prices_in_usd.evt_index; -CREATE UNIQUE INDEX IF NOT EXISTS view_price_batch_id ON - gnosis_protocol.view_price_batch (batch_id, token_id); -CREATE INDEX view_price_batch_idx_1 ON - gnosis_protocol.view_price_batch (token_id); -CREATE - INDEX view_price_batch_idx_2 ON gnosis_protocol.view_price_batch (symbol); -CREATE INDEX view_price_batch_idx_3 ON - gnosis_protocol.view_price_batch (price_date); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/5 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_price_batch') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +CREATE UNIQUE INDEX IF NOT EXISTS view_price_batch_id ON gnosis_protocol.view_price_batch (batch_id, token_id); +CREATE INDEX view_price_batch_idx_1 ON gnosis_protocol.view_price_batch (token_id); +CREATE INDEX view_price_batch_idx_2 ON gnosis_protocol.view_price_batch (symbol); +CREATE INDEX view_price_batch_idx_3 ON gnosis_protocol.view_price_batch (price_date); + +INSERT INTO cron.job (schedule, command) +VALUES ('*/5 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_price_batch') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_tokens.sql b/dune/abstractions/gnosis_protocol/view_tokens.sql index cd8153a..6e612e0 100644 --- a/dune/abstractions/gnosis_protocol/view_tokens.sql +++ b/dune/abstractions/gnosis_protocol/view_tokens.sql @@ -1,35 +1,50 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS gnosis_protocol.view_tokens; -CREATE MATERIALIZED VIEW gnosis_protocol.view_tokens AS WITH token_names as ( - SELECT *FROM (VALUES (14, 'aDAI', 18), (17, 'PAXG', 18)) - as t (token_id, symbol, decimals)), - tokens - as (SELECT ROW_NUMBER () OVER (ORDER BY transactions.block_number, - transactions.index) as token_id, - tokens.token, erc20.symbol, erc20.decimals, - transactions.block_time as add_date FROM - gnosis_protocol."BatchExchange_call_addToken" tokens JOIN - ethereum."transactions" transactions ON transactions.hash - = tokens.call_tx_hash AND transactions.success - = true LEFT OUTER JOIN erc20."tokens" as erc20 ON - erc20.contract_address - = tokens.token) SELECT tokens.token_id, - tokens.token, COALESCE (tokens.symbol, token_names.symbol) as symbol, - COALESCE (tokens.decimals, token_names.decimals) as decimals, - tokens.add_date FROM tokens LEFT OUTER JOIN - token_names ON tokens.token_id = token_names.token_id UNION all ( - SELECT 0 as token_id, +CREATE MATERIALIZED VIEW gnosis_protocol.view_tokens AS +WITH +token_names as ( + SELECT * FROM (VALUES + (14, 'aDAI', 18), + (17, 'PAXG', 18) + ) as t (token_id, symbol, decimals) +), +tokens as ( + SELECT + ROW_NUMBER() OVER (ORDER BY transactions.block_number, transactions.index) as token_id, + tokens.token, + erc20.symbol, + erc20.decimals, + transactions.block_time as add_date + FROM gnosis_protocol."BatchExchange_call_addToken" tokens + JOIN ethereum."transactions" transactions + ON transactions.hash=tokens.call_tx_hash + AND transactions.success=true + LEFT OUTER JOIN erc20."tokens" as erc20 + ON erc20.contract_address = tokens.token +) +SELECT + tokens.token_id, + tokens.token, + COALESCE(tokens.symbol, token_names.symbol) as symbol, + COALESCE(tokens.decimals, token_names.decimals) as decimals, + tokens.add_date +FROM tokens +LEFT OUTER JOIN token_names + ON tokens.token_id = token_names.token_id +UNION all ( + SELECT + 0 as token_id, '\x1a5f9352af8af974bfc03399e3767df6370d82e4' as token_address, - 'OWL' as symbol, 18 as decimals, - '2020-01-23 20:30:00.000' as add_date); + 'OWL' as symbol, + 18 as decimals, + '2020-01-23 20:30:00.000' as add_date +); -CREATE UNIQUE INDEX IF NOT EXISTS view_tokens_id ON - gnosis_protocol.view_tokens (token_id); +CREATE UNIQUE INDEX IF NOT EXISTS view_tokens_id ON gnosis_protocol.view_tokens (token_id) ; CREATE INDEX view_tokens_1 ON gnosis_protocol.view_tokens (symbol); CREATE INDEX view_tokens_2 ON gnosis_protocol.view_tokens (token); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/5 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_tokens') ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/5 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_tokens') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_trade_stats.sql b/dune/abstractions/gnosis_protocol/view_trade_stats.sql index 59789a0..65e8d4f 100644 --- a/dune/abstractions/gnosis_protocol/view_trade_stats.sql +++ b/dune/abstractions/gnosis_protocol/view_trade_stats.sql @@ -1,59 +1,79 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS gnosis_protocol.view_trade_stats; -CREATE MATERIALIZED VIEW gnosis_protocol.view_trade_stats AS WITH trades -as (SELECT trades.trade_date, trades.batch_id, trades.trader_hex as trader, - trades.order_id, trades.trade_sub_id, trades.sell_amount, - trades.sell_token_symbol, trades.sell_token_id, trades.buy_amount, - trades.buy_token_symbol, trades.buy_token_id, - (trades.sell_amount * price.token_usd_price) / 2 as usd_volume, - tx_hash as trade_tx_hash FROM - gnosis_protocol.view_trades trades JOIN - gnosis_protocol.view_price_batch price ON trades.batch_id - = price.batch_id AND trades.sell_token = price.token), - view_trade_stats - as (SELECT trades.*, "priceNumerator" as order_price_numerator, - "priceDenominator" as order_price_denominator, tx.hash as order_tx, - data::bytea::text ~'dec0de\d{8}$' as has_analytics, - substring (data::bytea::text, 'dec0de(\d{8})$') - as analytics FROM trades JOIN gnosis_protocol - ."BatchExchange_evt_OrderPlacement" orders ON trades.trader - = orders.owner AND trades.order_id - = orders.index LEFT OUTER JOIN ethereum.transactions tx ON - orders.evt_tx_hash - = tx.hash), - decoded_analalytics - as (SELECT trade_date, batch_id, trader, order_id, trade_sub_id, - regexp_matches (--Regex matches applies a filter, - this is why this regex cannot be done in - view_trade_stats and needs to be LEFT OUTER - joined analytics, - '(\d{2})(\d{2})(\d{1})(\d{2})(\d{1})$') - as analytics FROM view_trade_stats) SELECT stats - .*, - decoded.analytics[1] as app_id, decoded.analytics[2] as provider, - CASE WHEN decoded.analytics[3] = '0' THEN true WHEN decoded.analytics[3] - = '1' THEN false ELSE NULL END as is_desktop, - decoded.analytics[4] as browser, - decoded - .analytics[5] as screen_size FROM view_trade_stats stats LEFT - OUTER JOIN decoded_analalytics decoded ON stats - .batch_id = decoded.batch_id AND stats - .trader = decoded.trader AND stats - .order_id = decoded - .order_id AND - stats - .trade_sub_id = decoded - .trade_sub_id; +CREATE MATERIALIZED VIEW gnosis_protocol.view_trade_stats AS +WITH trades as ( + SELECT + trades.trade_date, + trades.batch_id, + trades.trader_hex as trader, + trades.order_id, + trades.trade_sub_id, + trades.sell_amount, + trades.sell_token_symbol, + trades.sell_token_id, + trades.buy_amount, + trades.buy_token_symbol, + trades.buy_token_id, + (trades.sell_amount * price.token_usd_price) / 2 as usd_volume, + tx_hash as trade_tx_hash + FROM gnosis_protocol.view_trades trades + JOIN gnosis_protocol.view_price_batch price + ON trades.batch_id = price.batch_id + AND trades.sell_token = price.token +), +view_trade_stats as ( + SELECT + trades.*, + "priceNumerator" as order_price_numerator, + "priceDenominator" as order_price_denominator, + tx.hash as order_tx, + data::bytea::text ~ 'dec0de\d{8}$' as has_analytics, + substring(data::bytea::text, 'dec0de(\d{8})$') as analytics + FROM trades + JOIN gnosis_protocol."BatchExchange_evt_OrderPlacement" orders + ON trades.trader = orders.owner + AND trades.order_id = orders.index + LEFT OUTER JOIN ethereum.transactions tx + ON orders.evt_tx_hash = tx.hash +), +decoded_analalytics as ( + SELECT + trade_date, + batch_id, + trader, + order_id, + trade_sub_id, + regexp_matches( -- Regex matches applies a filter, this is why this regex cannot be done in view_trade_stats and needs to be LEFT OUTER joined + analytics, + '(\d{2})(\d{2})(\d{1})(\d{2})(\d{1})$' + ) as analytics + FROM view_trade_stats +) +SELECT + stats.*, + decoded.analytics[1] as app_id, + decoded.analytics[2] as provider, + CASE + WHEN decoded.analytics[3] = '0' THEN true + WHEN decoded.analytics[3] = '1' THEN false + ELSE NULL + END as is_desktop, + decoded.analytics[4] as browser, + decoded.analytics[5] as screen_size +FROM view_trade_stats stats +LEFT OUTER JOIN decoded_analalytics decoded + ON stats.batch_id = decoded.batch_id + AND stats.trader = decoded.trader + AND stats.order_id = decoded.order_id + AND stats.trade_sub_id = decoded.trade_sub_id; -CREATE UNIQUE INDEX IF NOT EXISTS view_trade_stats_id ON gnosis_protocol - .view_trade_stats (batch_id, trader, order_id, trade_sub_id); -CREATE - INDEX view_trade_stats_idx_1 ON gnosis_protocol.view_trade_stats (app_id); -CREATE INDEX view_trade_stats_idx_2 ON - gnosis_protocol.view_trade_stats (trade_date); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/10 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_trades') ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +CREATE UNIQUE INDEX IF NOT EXISTS view_trade_stats_id ON gnosis_protocol.view_trade_stats (batch_id, trader, order_id, trade_sub_id); +CREATE INDEX view_trade_stats_idx_1 ON gnosis_protocol.view_trade_stats (app_id); +CREATE INDEX view_trade_stats_idx_2 ON gnosis_protocol.view_trade_stats (trade_date); + + +INSERT INTO cron.job (schedule, command) +VALUES ('*/10 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_trades') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/gnosis_protocol/view_trades.sql b/dune/abstractions/gnosis_protocol/view_trades.sql index eda1e67..56a688c 100644 --- a/dune/abstractions/gnosis_protocol/view_trades.sql +++ b/dune/abstractions/gnosis_protocol/view_trades.sql @@ -1,90 +1,98 @@ BEGIN; DROP MATERIALIZED VIEW IF EXISTS gnosis_protocol.view_trades; -CREATE MATERIALIZED VIEW gnosis_protocol.view_trades AS WITH reverts -AS (SELECT reversion.owner, reversion."orderId" AS order_id, +CREATE MATERIALIZED VIEW gnosis_protocol.view_trades AS +WITH reverts AS ( +SELECT + reversion.owner, + reversion."orderId" AS order_id, reversion.evt_block_time AS block_time, - RANK () OVER (PARTITION BY solution."batchId", reversion.owner, - reversion."orderId" ORDER BY reversion.evt_block_number, - reversion.evt_index) AS trade_sub_id, - solution."batchId" AS batch_id FROM gnosis_protocol - ."BatchExchange_evt_TradeReversion" reversion JOIN gnosis_protocol - ."BatchExchange_call_submitSolution" solution ON solution.call_tx_hash - = reversion.evt_tx_hash AND solution.call_success = true), - trades AS ( - SELECT TO_TIMESTAMP ((trades_aux.batch_id + 1) * 300) AS trade_date, - RANK () OVER (PARTITION BY trades_aux.batch_id, trades_aux.trader_hex, - trades_aux.order_id ORDER BY trades_aux.evt_block_number, - trades_aux.evt_index_trades) AS trade_sub_id, - trades_aux - .*FROM ( - SELECT-- id FLOOR (EXTRACT (epoch from solution.evt_block_time) - / 300) - - 1 AS batch_id, - --The event time tells us the batch.Between minute 0 - - 4 is resolved batch N - 1 trades."owner" AS trader_hex, - trades."orderId" AS order_id, - --Event index trades.evt_index AS evt_index_trades, - solution.evt_index AS evt_index_solution, - --dates &block info solution.evt_block_number, - solution.evt_block_time AS block_time, - --sell token trades."sellToken" AS sell_token_id, - sell_token."token" AS sell_token, - sell_token."symbol" AS sell_token_symbol, - sell_token."decimals" AS sell_token_decimals, - --sell amounts - trades."executedSellAmount" AS sell_amount_atoms, - trades."executedSellAmount" / 10 - ^ (COALESCE (sell_token.decimals, 18))AS sell_amount, - --buy token trades."buyToken" AS buy_token_id, - buy_token.token AS buy_token, - buy_token.symbol AS buy_token_symbol, - buy_token.decimals AS buy_token_decimals, - --buy amounts trades."executedBuyAmount" AS buy_amount_atoms, - trades."executedBuyAmount" / 10 - ^ (COALESCE (buy_token.decimals, 18))AS buy_amount, - --Tx and block info trades.evt_block_number AS block_number, - trades.evt_tx_hash AS tx_hash FROM gnosis_protocol - ."BatchExchange_evt_Trade" trades JOIN gnosis_protocol - ."BatchExchange_evt_SolutionSubmission" solution ON - solution.evt_tx_hash - = trades.evt_tx_hash JOIN gnosis_protocol - .view_tokens buy_token ON trades."buyToken" - = buy_token.token_id JOIN gnosis_protocol - .view_tokens sell_token ON trades."sellToken" - = sell_token.token_id) AS trades_aux) SELECT trades - .*, - reverts - .block_time AS - revert_time FROM trades LEFT OUTER JOIN reverts ON trades - .trader_hex = reverts.owner AND trades - .order_id = reverts.order_id AND trades - .trade_sub_id = reverts - .trade_sub_id AND - trades - .batch_id = reverts - .batch_id - ORDER - BY - trades - .batch_id - , - trades.trader_hex, trades.order_id, trade_sub_id; + RANK() OVER ( + PARTITION BY solution."batchId", reversion.owner, reversion."orderId" + ORDER BY reversion.evt_block_number, reversion.evt_index + ) AS trade_sub_id, + solution."batchId" AS batch_id +FROM gnosis_protocol."BatchExchange_evt_TradeReversion" reversion +JOIN gnosis_protocol."BatchExchange_call_submitSolution" solution + ON solution.call_tx_hash=reversion.evt_tx_hash + AND solution.call_success = true +), +trades AS ( +SELECT + TO_TIMESTAMP((trades_aux.batch_id + 1) * 300) AS trade_date, + RANK() OVER ( + PARTITION BY trades_aux.batch_id, trades_aux.trader_hex, trades_aux.order_id + ORDER BY trades_aux.evt_block_number, trades_aux.evt_index_trades + ) AS trade_sub_id, + trades_aux.* +FROM ( + SELECT + -- id + FLOOR(EXTRACT(epoch from solution.evt_block_time) / 300) - 1 AS batch_id, -- The event time tells us the batch. Between minute 0-4 is resolved batch N-1 + trades."owner" AS trader_hex, + trades."orderId" AS order_id, + -- Event index + trades.evt_index AS evt_index_trades, + solution.evt_index AS evt_index_solution, + -- dates & block info + solution.evt_block_number, + solution.evt_block_time AS block_time, + -- sell token + trades."sellToken" AS sell_token_id, + sell_token."token" AS sell_token, + sell_token."symbol" AS sell_token_symbol, + sell_token."decimals" AS sell_token_decimals, + -- sell amounts + trades."executedSellAmount" AS sell_amount_atoms, + trades."executedSellAmount" / 10^(COALESCE(sell_token.decimals, 18)) AS sell_amount, + -- buy token + trades."buyToken" AS buy_token_id, + buy_token.token AS buy_token, + buy_token.symbol AS buy_token_symbol, + buy_token.decimals AS buy_token_decimals, + -- buy amounts + trades."executedBuyAmount" AS buy_amount_atoms, + trades."executedBuyAmount" / 10^(COALESCE(buy_token.decimals, 18)) AS buy_amount, + -- Tx and block info + trades.evt_block_number AS block_number, + trades.evt_tx_hash AS tx_hash + FROM gnosis_protocol."BatchExchange_evt_Trade" trades + JOIN gnosis_protocol."BatchExchange_evt_SolutionSubmission" solution + ON solution.evt_tx_hash=trades.evt_tx_hash + JOIN gnosis_protocol.view_tokens buy_token + ON trades."buyToken" = buy_token.token_id + JOIN gnosis_protocol.view_tokens sell_token + ON trades."sellToken" = sell_token.token_id +) AS trades_aux) +SELECT + trades.*, + reverts.block_time AS revert_time +FROM trades +LEFT OUTER JOIN reverts + ON trades.trader_hex = reverts.owner + AND trades.order_id = reverts.order_id + AND trades.trade_sub_id = reverts.trade_sub_id + AND trades.batch_id = reverts.batch_id +ORDER BY + trades.batch_id, + trades.trader_hex, + trades.order_id, + trade_sub_id; -CREATE UNIQUE INDEX IF NOT EXISTS view_trades_id ON - gnosis_protocol.view_trades (batch_id, trader_hex, order_id, trade_sub_id); + + + +CREATE UNIQUE INDEX IF NOT EXISTS view_trades_id ON gnosis_protocol.view_trades (batch_id, trader_hex, order_id, trade_sub_id); CREATE INDEX view_trades_idx_1 ON gnosis_protocol.view_trades (trade_date); -CREATE - INDEX view_trades_idx_2 ON gnosis_protocol.view_trades (sell_token_symbol); +CREATE INDEX view_trades_idx_2 ON gnosis_protocol.view_trades (sell_token_symbol); CREATE INDEX view_trades_idx_3 ON gnosis_protocol.view_trades (sell_token); -CREATE - INDEX view_trades_idx_4 ON gnosis_protocol.view_trades (buy_token_symbol); +CREATE INDEX view_trades_idx_4 ON gnosis_protocol.view_trades (buy_token_symbol); CREATE INDEX view_trades_idx_5 ON gnosis_protocol.view_trades (buy_token); -CREATE INDEX view_trades_idx_6 ON gnosis_protocol.view_trades (trader_hex, - order_id); +CREATE INDEX view_trades_idx_6 ON gnosis_protocol.view_trades (trader_hex, order_id); + + -INSERT INTO cron.job (schedule, command) VALUES ( - '*/1 * * * *', - 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_trades') ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/1 * * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY gnosis_protocol.view_trades') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; COMMIT; diff --git a/dune/abstractions/iearn_v2/view_ytokens.sql b/dune/abstractions/iearn_v2/view_ytokens.sql index 1600eec..fabd091 100644 --- a/dune/abstractions/iearn_v2/view_ytokens.sql +++ b/dune/abstractions/iearn_v2/view_ytokens.sql @@ -1,16 +1,8 @@ -CREATE OR REPLACE VIEW iearn_v2.view_ytokens (symbol, contract_address, - decimals, - underlying_token_address) AS - VALUES ('yDAI' ::text, - '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01' ::bytea, 18 ::numeric, - '\x6B175474E89094C44Da98b954EedeAC495271d0F' ::bytea), - ('yUSDC' ::text, '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e' ::bytea, - 6 ::numeric, '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' ::bytea), - ('ySUSD' ::text, '\xF61718057901F84C4eEC4339EF8f0D86D2B45600' ::bytea, - 18 ::numeric, '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' ::bytea), - ('yUSDT' ::text, '\x83f798e925BcD4017Eb265844FDDAbb448f1707D' ::bytea, - 6 ::numeric, '\xdAC17F958D2ee523a2206206994597C13D831ec7' ::bytea), - ('yTUSD' ::text, '\x73a052500105205d34Daf004eAb301916DA8190f' ::bytea, - 18 ::numeric, '\x0000000000085d4780B73119b644AE5ecd22b376' ::bytea), - ('yBTC' ::text, '\x04Aa51bbcB46541455cCF1B8bef2ebc5d3787EC9' ::bytea, - 8 ::numeric, '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599' ::bytea); +CREATE OR REPLACE VIEW iearn_v2.view_ytokens (symbol, contract_address, decimals, underlying_token_address) AS VALUES +('yDAI'::text, '\x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01'::bytea, 18::numeric, '\x6B175474E89094C44Da98b954EedeAC495271d0F'::bytea), +('yUSDC'::text, '\xd6aD7a6750A7593E092a9B218d66C0A814a3436e'::bytea, 6::numeric, '\xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'::bytea), +('ySUSD'::text, '\xF61718057901F84C4eEC4339EF8f0D86D2B45600'::bytea, 18::numeric, '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51'::bytea), +('yUSDT'::text,'\x83f798e925BcD4017Eb265844FDDAbb448f1707D'::bytea, 6::numeric, '\xdAC17F958D2ee523a2206206994597C13D831ec7'::bytea), +('yTUSD'::text,'\x73a052500105205d34Daf004eAb301916DA8190f'::bytea, 18::numeric, '\x0000000000085d4780B73119b644AE5ecd22b376'::bytea), +('yBTC'::text, '\x04Aa51bbcB46541455cCF1B8bef2ebc5d3787EC9'::bytea, 8::numeric, '\x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'::bytea) +; diff --git a/dune/abstractions/index/view_indices.sql b/dune/abstractions/index/view_indices.sql index 0d23733..7d8ff56 100644 --- a/dune/abstractions/index/view_indices.sql +++ b/dune/abstractions/index/view_indices.sql @@ -1,51 +1,19 @@ -CREATE OR REPLACE VIEW index.view_indices (symbol, project, token_address, - asset_pool_address, status) AS - VALUES ('ypie' ::text, 'pieDAO' ::text, - '\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31' ::bytea, - '\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31' ::bytea, - 'wip' ::text), - ('BCP' ::text, 'pieDAO' ::text, - '\xe4f726adc8e89c6a6017f01eada77865db22da14' ::bytea, - '\x25af1F2c3772d6F19Aa6615571203757365D29C6' ::bytea, 'wip' ::text), - ('DEFI++' ::text, 'pieDAO' ::text, - '\x8d1ce361eb68e9e05573443c407d4a3bed23b033' ::bytea, - '\xd485e6a0389A42D75f4b00EcE91fc02340B73938' ::bytea, 'wip' ::text), - ('DEFI+L' ::text, 'pieDAO' ::text, - '\x78F225869c08d478c34e5f645d07A87d3fe8eb78' ::bytea, - '\x0e5C1813587088378787E7DD6C9cb4Cb01a0Ea18' ::bytea, 'ready' ::text), - ('DEFI+S' ::text, 'pieDAO' ::text, - '\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c' ::bytea, - '\x94743cfAa3FDC62e9693572314B5ee377EBa5d11' ::bytea, 'ready' ::text), - ('BTC++' ::text, 'pieDAO' ::text, - '\x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd' ::bytea, - '\x9891832633a83634765952b051bc7feF36714A46' ::bytea, 'ready' ::text), - ('USD++' ::text, 'pieDAO' ::text, - '\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e' ::bytea, - '\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e' ::bytea, 'ready' ::text), - ('ASSY' ::text, 'PowerPool' ::text, - '\xfa2562da1bba7b954f26c74725df51fb62646313' ::bytea, - '\xfa2562da1bba7b954f26c74725df51fb62646313' ::bytea, 'ready' ::text), - ('PIPT' ::text, 'PowerPool' ::text, - '\x26607aC599266b21d13c7aCF7942c7701a8b699c' ::bytea, - '\x26607aC599266b21d13c7aCF7942c7701a8b699c' ::bytea, 'ready' ::text), - ('YETI' ::text, 'PowerPool' ::text, - '\xb4bebD34f6DaaFd808f73De0d10235a92Fbb6c3D' ::bytea, - '\xb4bebD34f6DaaFd808f73De0d10235a92Fbb6c3D' ::bytea, 'ready' ::text), - ('DPI' ::text, 'IndexCoop' ::text, - '\x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b' ::bytea, - '\x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b' ::bytea, 'ready' ::text), - ('CGI' ::text, 'IndexCoop' ::text, - '\xada0a1202462085999652dc5310a7a9e2bf3ed42' ::bytea, - '\xada0a1202462085999652dc5310a7a9e2bf3ed42' ::bytea, 'ready' ::text), - ('DEFI5' ::text, 'Indexed' ::text, - '\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41' ::bytea, - '\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41' ::bytea, 'ready' ::text), - ('ORCL5' ::text, 'Indexed' ::text, - '\xd6cb2adf47655b1babddc214d79257348cbc39a7' ::bytea, - '\xd6cb2adf47655b1babddc214d79257348cbc39a7' ::bytea, 'ready' ::text), - ('CC10' ::text, 'Indexed' ::text, - '\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3' ::bytea, - '\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3' ::bytea, 'ready' ::text), - ('DEGEN' ::text, 'Indexed' ::text, - '\x126c121f99e1E211dF2e5f8De2d96Fa36647c855' ::bytea, - '\x126c121f99e1E211dF2e5f8De2d96Fa36647c855' ::bytea, 'ready' ::text); +CREATE OR REPLACE VIEW index.view_indices (symbol, project, token_address, asset_pool_address, status) AS VALUES +('ypie'::text, 'pieDAO' ::text, '\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31'::bytea, '\x17525e4f4af59fbc29551bc4ece6ab60ed49ce31'::bytea, 'wip'::text), +('BCP'::text, 'pieDAO' ::text, '\xe4f726adc8e89c6a6017f01eada77865db22da14'::bytea, '\x25af1F2c3772d6F19Aa6615571203757365D29C6'::bytea, 'wip'::text), +('DEFI++'::text,'pieDAO' ::text, '\x8d1ce361eb68e9e05573443c407d4a3bed23b033'::bytea, '\xd485e6a0389A42D75f4b00EcE91fc02340B73938'::bytea, 'wip'::text), +('DEFI+L'::text,'pieDAO' ::text, '\x78F225869c08d478c34e5f645d07A87d3fe8eb78'::bytea, '\x0e5C1813587088378787E7DD6C9cb4Cb01a0Ea18'::bytea, 'ready'::text), +('DEFI+S'::text,'pieDAO' ::text, '\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c'::bytea, '\x94743cfAa3FDC62e9693572314B5ee377EBa5d11'::bytea, 'ready'::text), +('BTC++'::text, 'pieDAO' ::text, '\x0327112423f3a68efdf1fcf402f6c5cb9f7c33fd'::bytea, '\x9891832633a83634765952b051bc7feF36714A46'::bytea, 'ready'::text), +('USD++'::text, 'pieDAO' ::text, '\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e'::bytea, '\x9A48BD0EC040ea4f1D3147C025cd4076A2e71e3e'::bytea, 'ready'::text), +('ASSY'::text, 'PowerPool' ::text, '\xfa2562da1bba7b954f26c74725df51fb62646313'::bytea, '\xfa2562da1bba7b954f26c74725df51fb62646313'::bytea, 'ready'::text), +('PIPT'::text, 'PowerPool' ::text, '\x26607aC599266b21d13c7aCF7942c7701a8b699c'::bytea, '\x26607aC599266b21d13c7aCF7942c7701a8b699c'::bytea, 'ready'::text), +('YETI'::text, 'PowerPool' ::text, '\xb4bebD34f6DaaFd808f73De0d10235a92Fbb6c3D'::bytea, '\xb4bebD34f6DaaFd808f73De0d10235a92Fbb6c3D'::bytea, 'ready'::text), +('DPI'::text, 'IndexCoop' ::text, '\x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'::bytea, '\x1494CA1F11D487c2bBe4543E90080AeBa4BA3C2b'::bytea, 'ready'::text), +('CGI'::text, 'IndexCoop' ::text, '\xada0a1202462085999652dc5310a7a9e2bf3ed42'::bytea, '\xada0a1202462085999652dc5310a7a9e2bf3ed42'::bytea, 'ready'::text), +('MVI'::text, 'IndexCoop' ::text, '\x72e364f2abdc788b7e918bc238b21f109cd634d7'::bytea, '\x72e364f2abdc788b7e918bc238b21f109cd634d7'::bytea, 'ready'::text), +('DEFI5'::text, 'Indexed' ::text, '\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41'::bytea, '\xfa6de2697D59E88Ed7Fc4dFE5A33daC43565ea41'::bytea, 'ready'::text), +('ORCL5'::text, 'Indexed' ::text, '\xd6cb2adf47655b1babddc214d79257348cbc39a7'::bytea, '\xd6cb2adf47655b1babddc214d79257348cbc39a7'::bytea, 'ready'::text), +('CC10'::text, 'Indexed' ::text, '\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3'::bytea, '\x17ac188e09a7890a1844e5e65471fe8b0ccfadf3'::bytea, 'ready'::text), +('DEGEN'::text, 'Indexed' ::text, '\x126c121f99e1E211dF2e5f8De2d96Fa36647c855'::bytea, '\x126c121f99e1E211dF2e5f8De2d96Fa36647c855'::bytea, 'ready'::text) +; diff --git a/dune/abstractions/index/view_indices_assets.sql b/dune/abstractions/index/view_indices_assets.sql index ca214eb..f0e8da1 100644 --- a/dune/abstractions/index/view_indices_assets.sql +++ b/dune/abstractions/index/view_indices_assets.sql @@ -1,206 +1,119 @@ -CREATE OR REPLACE VIEW index.view_indices_assets (Index, project, asset, - asset_address) AS - VALUES ('ASSY' ::text, 'PowerPool' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('ASSY' ::text, 'PowerPool' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('ASSY' ::text, 'PowerPool' ::text, 'SUSHI' ::text, - '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2' ::bytea), - ('ASSY' ::text, 'PowerPool' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('BCP' ::text, 'pieDAO' ::text, 'WBTC' ::text, - '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' ::bytea), - ('BCP' ::text, 'pieDAO' ::text, 'WETH' ::text, - '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ::bytea), - ('BCP' ::text, 'pieDAO' ::text, 'DEFI++' ::text, - '\x8d1ce361eb68e9e05573443c407d4a3bed23b033' ::bytea), - ('BTC++' ::text, 'pieDAO' ::text, 'WBTC' ::text, - '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' ::bytea), - ('BTC++' ::text, 'pieDAO' ::text, 'imBTC' ::text, - '\x3212b29e33587a00fb1c83346f5dbfa69a458923' ::bytea), - ('BTC++' ::text, 'pieDAO' ::text, 'pBTC' ::text, - '\x5228a22e72ccc52d415ecfd199f99d0665e7733b' ::bytea), - ('BTC++' ::text, 'pieDAO' ::text, 'sBTC' ::text, - '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'COMP' ::text, - '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'UMA' ::text, - '\x04fa0d235c4abf4bcf4787af4cf447de572ef828' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'CRV' ::text, - '\xd533a949740bb3306d119cc777fa900ba034cd52' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'LINK' ::text, - '\x514910771af9ca656af840dff83e8264ecf986ca' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'MKR' ::text, - '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'UNI' ::text, - '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('CC10' ::text, 'Indexed' ::text, 'OMG' ::text, - '\xd26114cd6ee289accf82350c8d8487fedb8a0c07' ::bytea), - ('CGI' ::text, 'IndexCoop' ::text, 'WETH' ::text, - '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ::bytea), - ('CGI' ::text, 'IndexCoop' ::text, 'WBTC' ::text, - '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' ::bytea), - ('CGI' ::text, 'IndexCoop' ::text, 'wDGLD' ::text, - '\x123151402076fc819B7564510989e475c9cD93CA' ::bytea), - ('DEFI++' ::text, 'pieDAO' ::text, 'DEFI+S' ::text, - '\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c' ::bytea), - ('DEFI++' ::text, 'pieDAO' ::text, 'DEFI+L' ::text, - '\x78f225869c08d478c34e5f645d07a87d3fe8eb78' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'COMP' ::text, - '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'MKR' ::text, - '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'UNI' ::text, - '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'LINK' ::text, - '\x514910771af9ca656af840dff83e8264ecf986ca' ::bytea), - ('DEFI+L' ::text, 'pieDAO' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'UMA' ::text, - '\x04fa0d235c4abf4bcf4787af4cf447de572ef828' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'REN' ::text, - '\x408e41876cccdc0f92210600ef50372656052a38' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'MLN' ::text, - '\xec67005c4e498ec7f55e092bd1d35cbc47c91892' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'LRC' ::text, - '\xbbbbca6a901c926f240b89eacb641d8aec7aeafd' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'PNT' ::text, - '\x89ab32156e46f46d02ade3fecbe5fc4243b9aaed' ::bytea), - ('DEFI+S' ::text, 'pieDAO' ::text, 'BAL' ::text, - '\xba100000625a3754423978a60c9317c58a424e3d' ::bytea), - ('DEFI5' ::text, 'Indexed' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('DEFI5' ::text, 'Indexed' ::text, 'UNI' ::text, - '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('DEFI5' ::text, 'Indexed' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('DEFI5' ::text, 'Indexed' ::text, 'COMP' ::text, - '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('DEFI5' ::text, 'Indexed' ::text, 'CRV' ::text, - '\xd533a949740bb3306d119cc777fa900ba034cd52' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'CRV' ::text, - '\xd533a949740bb3306d119cc777fa900ba034cd52' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'RUNE' ::text, - '\x3155ba85d5f96b2d030a4966af206230e46849cb' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'REN' ::text, - '\x408e41876cccdc0f92210600ef50372656052a38' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'RSR' ::text, - '\x8762db106b2c2a0bccb3a80d1ed41273552616e8' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, '1INCH' ::text, - '\x111111111117dC0aa78b770fA6A738034120C302' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'OCEAN' ::text, - '\x967da4048cD07aB37855c090aAF366e4ce1b9F48' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'ALPHA' ::text, - '\xa1faa113cbe53436df28ff0aee54275c13b40975' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'BADGER' ::text, - '\x3472A5A71965499acd81997a54BBA8D852C6E53d' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'POLS' ::text, - '\x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa' ::bytea), - ('DEGEN' ::text, 'Indexed' ::text, 'MIR' ::text, - '\x09a3ecafa817268f77be1283176b946c4ff2e608' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'LEND' ::text, - '\x80fb784b7ed66730e8b1dbd9820afd29931aab03' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'LRC' ::text, - '\xbbbbca6a901c926f240b89eacb641d8aec7aeafd' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'BAL' ::text, - '\xba100000625a3754423978a60c9317c58a424e3d' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'MTA' ::text, - '\xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'REN' ::text, - '\x408e41876cccdc0f92210600ef50372656052a38' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'COMP' ::text, - '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'REPv2' ::text, - '\x221657776846890989a759ba2973e427dff5c9bb' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'KNC' ::text, - '\xdd974d5c2e2928dea5f71b9825b8b646686bd200' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'UNI' ::text, - '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'MKR' ::text, - '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'SUSHI' ::text, - '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'FARM' ::text, - '\xa0246c9032bC3A600820415aE600c6388619A14D' ::bytea), - ('DPI' ::text, 'IndexCoop' ::text, 'CREAM' ::text, - '\x2ba592F78dB6436527729929AAf6c908497cB200' ::bytea), - ('ORCL5' ::text, 'Indexed' ::text, 'DIA' ::text, - '\x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419' ::bytea), - ('ORCL5' ::text, 'Indexed' ::text, 'ORAI' ::text, - '\x4c11249814f11b9346808179cf06e71ac328c1b5' ::bytea), - ('ORCL5' ::text, 'Indexed' ::text, 'UMA' ::text, - '\x04fa0d235c4abf4bcf4787af4cf447de572ef828' ::bytea), - ('ORCL5' ::text, 'Indexed' ::text, 'LINK' ::text, - '\x514910771af9ca656af840dff83e8264ecf986ca' ::bytea), - ('ORCL5' ::text, 'Indexed' ::text, 'BAND' ::text, - '\xba11d00c5f74255f56a5e366f4f77f5a186d7f55' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'SNX' ::text, - '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'CVP' ::text, - '\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'COMP' ::text, - '\xc00e94cb662c3520282e6f5717214004a7f26888' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'AAVE' ::text, - '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'MKR' ::text, - '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' ::bytea), - ('PIPT' ::text, 'PowerPool' ::text, 'UNI' ::text, - '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984' ::bytea), - ('USD++' ::text, 'pieDAO' ::text, 'sUSD' ::text, - '\x57ab1ec28d129707052df4df418d58a2d46d5f51' ::bytea), - ('USD++' ::text, 'pieDAO' ::text, 'TUSD' ::text, - '\x0000000000085d4780b73119b644ae5ecd22b376' ::bytea), - ('USD++' ::text, 'pieDAO' ::text, 'DAI' ::text, - '\x6b175474e89094c44da98b954eedeac495271d0f' ::bytea), - ('USD++' ::text, 'pieDAO' ::text, 'USDC' ::text, - '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'PICKLE' ::text, - '\x429881672b9ae42b8eba0e26cd9c73711b891ca5' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'KP3R' ::text, - '\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'COVER' ::text, - '\x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'SUSHI' ::text, - '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'AKRO' ::text, - '\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'CREAM' ::text, - '\x2ba592f78db6436527729929aaf6c908497cb200' ::bytea), - ('YETI' ::text, 'PowerPool' ::text, 'CVP' ::text, - '\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'CREAM' ::text, - '\x2ba592f78db6436527729929aaf6c908497cb200' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'aYFI' ::text, - '\x12e51e77daaa58aa0e9247db7510ea4b46f9bead' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'KP3R' ::text, - '\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'xSUSHI' ::text, - '\x8798249c2e607446efb7ad49ec89dd1865ff4272' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'PICKLE' ::text, - '\x429881672b9ae42b8eba0e26cd9c73711b891ca5' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'AKRO' ::text, - '\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'YFI' ::text, - '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e' ::bytea), - ('YPIE' ::text, 'pieDAO' ::text, 'SUSHI' ::text, - '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2' ::bytea); +CREATE OR REPLACE VIEW index.view_indices_assets (Index, project, asset, asset_address) AS VALUES +('ASSY' ::text, 'PowerPool' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('ASSY' ::text, 'PowerPool' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('ASSY' ::text, 'PowerPool' ::text, 'SUSHI' ::text, '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2'::bytea), +('ASSY' ::text, 'PowerPool' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('BCP' ::text, 'pieDAO' ::text, 'WBTC' ::text, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599'::bytea), +('BCP' ::text, 'pieDAO' ::text, 'WETH' ::text, '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'::bytea), +('BCP' ::text, 'pieDAO' ::text, 'DEFI++' ::text, '\x8d1ce361eb68e9e05573443c407d4a3bed23b033'::bytea), +('BTC++' ::text, 'pieDAO' ::text, 'WBTC' ::text, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599'::bytea), +('BTC++' ::text, 'pieDAO' ::text, 'imBTC' ::text, '\x3212b29e33587a00fb1c83346f5dbfa69a458923'::bytea), +('BTC++' ::text, 'pieDAO' ::text, 'pBTC' ::text, '\x5228a22e72ccc52d415ecfd199f99d0665e7733b'::bytea), +('BTC++' ::text, 'pieDAO' ::text, 'sBTC' ::text, '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6'::bytea), +('CC10' ::text, 'Indexed' ::text, 'COMP' ::text, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), +('CC10' ::text, 'Indexed' ::text, 'UMA' ::text, '\x04fa0d235c4abf4bcf4787af4cf447de572ef828'::bytea), +('CC10' ::text, 'Indexed' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('CC10' ::text, 'Indexed' ::text, 'CRV' ::text, '\xd533a949740bb3306d119cc777fa900ba034cd52'::bytea), +('CC10' ::text, 'Indexed' ::text, 'LINK' ::text, '\x514910771af9ca656af840dff83e8264ecf986ca'::bytea), +('CC10' ::text, 'Indexed' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('CC10' ::text, 'Indexed' ::text, 'MKR' ::text, '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2'::bytea), +('CC10' ::text, 'Indexed' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('CC10' ::text, 'Indexed' ::text, 'UNI' ::text, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), +('CC10' ::text, 'Indexed' ::text, 'OMG' ::text, '\xd26114cd6ee289accf82350c8d8487fedb8a0c07'::bytea), +('CGI' ::text, 'IndexCoop' ::text, 'WETH' ::text, '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'::bytea), +('CGI' ::text, 'IndexCoop' ::text, 'WBTC' ::text, '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599'::bytea), +('CGI' ::text, 'IndexCoop' ::text, 'wDGLD' ::text, '\x123151402076fc819B7564510989e475c9cD93CA'::bytea), +('DEFI++' ::text, 'pieDAO' ::text, 'DEFI+S' ::text, '\xad6a626ae2b43dcb1b39430ce496d2fa0365ba9c'::bytea), +('DEFI++' ::text, 'pieDAO' ::text, 'DEFI+L' ::text, '\x78f225869c08d478c34e5f645d07a87d3fe8eb78'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'COMP' ::text, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'MKR' ::text, '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'UNI' ::text, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'LINK' ::text, '\x514910771af9ca656af840dff83e8264ecf986ca'::bytea), +('DEFI+L' ::text, 'pieDAO' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'UMA' ::text, '\x04fa0d235c4abf4bcf4787af4cf447de572ef828'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'REN' ::text, '\x408e41876cccdc0f92210600ef50372656052a38'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'MLN' ::text, '\xec67005c4e498ec7f55e092bd1d35cbc47c91892'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'LRC' ::text, '\xbbbbca6a901c926f240b89eacb641d8aec7aeafd'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'PNT' ::text, '\x89ab32156e46f46d02ade3fecbe5fc4243b9aaed'::bytea), +('DEFI+S' ::text, 'pieDAO' ::text, 'BAL' ::text, '\xba100000625a3754423978a60c9317c58a424e3d'::bytea), +('DEFI5' ::text, 'Indexed' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('DEFI5' ::text, 'Indexed' ::text, 'UNI' ::text, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), +('DEFI5' ::text, 'Indexed' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('DEFI5' ::text, 'Indexed' ::text, 'COMP' ::text, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), +('DEFI5' ::text, 'Indexed' ::text, 'CRV' ::text, '\xd533a949740bb3306d119cc777fa900ba034cd52'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'CRV' ::text, '\xd533a949740bb3306d119cc777fa900ba034cd52'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'RUNE' ::text, '\x3155ba85d5f96b2d030a4966af206230e46849cb'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'REN' ::text, '\x408e41876cccdc0f92210600ef50372656052a38'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'RSR' ::text, '\x8762db106b2c2a0bccb3a80d1ed41273552616e8'::bytea), +('DEGEN' ::text, 'Indexed' ::text, '1INCH' ::text, '\x111111111117dC0aa78b770fA6A738034120C302'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'OCEAN' ::text, '\x967da4048cD07aB37855c090aAF366e4ce1b9F48'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'ALPHA' ::text, '\xa1faa113cbe53436df28ff0aee54275c13b40975'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'BADGER' ::text, '\x3472A5A71965499acd81997a54BBA8D852C6E53d'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'POLS' ::text, '\x83e6f1E41cdd28eAcEB20Cb649155049Fac3D5Aa'::bytea), +('DEGEN' ::text, 'Indexed' ::text, 'MIR' ::text, '\x09a3ecafa817268f77be1283176b946c4ff2e608'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'LEND' ::text, '\x80fb784b7ed66730e8b1dbd9820afd29931aab03'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'LRC' ::text, '\xbbbbca6a901c926f240b89eacb641d8aec7aeafd'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'BAL' ::text, '\xba100000625a3754423978a60c9317c58a424e3d'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'MTA' ::text, '\xa3bed4e1c75d00fa6f4e5e6922db7261b5e9acd2'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'REN' ::text, '\x408e41876cccdc0f92210600ef50372656052a38'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'COMP' ::text, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'REPv2' ::text, '\x221657776846890989a759ba2973e427dff5c9bb'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'KNC' ::text, '\xdd974d5c2e2928dea5f71b9825b8b646686bd200'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'UNI' ::text, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'MKR' ::text, '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'SUSHI' ::text, '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'FARM' ::text, '\xa0246c9032bC3A600820415aE600c6388619A14D'::bytea), +('DPI' ::text, 'IndexCoop' ::text, 'CREAM' ::text, '\x2ba592F78dB6436527729929AAf6c908497cB200'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'MANA' ::text, '\x0f5d2fb29fb7d3cfee444a200298f468908cc942'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'ENJ' ::text, '\xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'SAND' ::text, '\x3845badAde8e6dFF049820680d1F14bD3903a5d0'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'AXS' ::text, '\xF5D669627376EBd411E34b98F19C868c8ABA5ADA'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'RFOX' ::text, '\xa1d6df714f91debf4e0802a542e13067f31b8262'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'WAXE' ::text, '\x7a2Bc711E19ba6aff6cE8246C546E8c4B4944DFD'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'AUDIO' ::text, '\x18aAA7115705e8be94bfFEBDE57Af9BFc265B998'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'DG' ::text, '\xee06a81a695750e71a662b51066f2c74cf4478a0'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'NFTX' ::text, '\x87d73E916D7057945c9BcD8cdd94e42A6F47f776'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'TVK' ::text, '\xd084b83c305dafd76ae3e1b4e1f1fe2ecccb3988'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'MEME' ::text, '\xD5525D397898e5502075Ea5E830d8914f6F0affe'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'RARI' ::text, '\xfca59cd816ab1ead66534d82bc21e7515ce441cf'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'REVV' ::text, '\x557B933a7C2c45672B610F8954A3deB39a51A8Ca'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'WHALE' ::text, '\x9355372396e3F6daF13359B7b607a3374cc638e0'::bytea), +('MVI' ::text, 'IndexCoop' ::text, 'MUSE' ::text, '\xb6ca7399b4f9ca56fc27cbff44f4d2e4eef1fc81'::bytea), +('ORCL5' ::text, 'Indexed' ::text, 'DIA' ::text, '\x84ca8bc7997272c7cfb4d0cd3d55cd942b3c9419'::bytea), +('ORCL5' ::text, 'Indexed' ::text, 'ORAI' ::text, '\x4c11249814f11b9346808179cf06e71ac328c1b5'::bytea), +('ORCL5' ::text, 'Indexed' ::text, 'UMA' ::text, '\x04fa0d235c4abf4bcf4787af4cf447de572ef828'::bytea), +('ORCL5' ::text, 'Indexed' ::text, 'LINK' ::text, '\x514910771af9ca656af840dff83e8264ecf986ca'::bytea), +('ORCL5' ::text, 'Indexed' ::text, 'BAND' ::text, '\xba11d00c5f74255f56a5e366f4f77f5a186d7f55'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'SNX' ::text, '\xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'CVP' ::text, '\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'COMP' ::text, '\xc00e94cb662c3520282e6f5717214004a7f26888'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'AAVE' ::text, '\x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'MKR' ::text, '\x9f8f72aa9304c8b593d555f12ef6589cc3a579a2'::bytea), +('PIPT' ::text, 'PowerPool' ::text, 'UNI' ::text, '\x1f9840a85d5af5bf1d1762f925bdaddc4201f984'::bytea), +('USD++' ::text, 'pieDAO' ::text, 'sUSD' ::text, '\x57ab1ec28d129707052df4df418d58a2d46d5f51'::bytea), +('USD++' ::text, 'pieDAO' ::text, 'TUSD' ::text, '\x0000000000085d4780b73119b644ae5ecd22b376'::bytea), +('USD++' ::text, 'pieDAO' ::text, 'DAI' ::text, '\x6b175474e89094c44da98b954eedeac495271d0f'::bytea), +('USD++' ::text, 'pieDAO' ::text, 'USDC' ::text, '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'PICKLE' ::text, '\x429881672b9ae42b8eba0e26cd9c73711b891ca5'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'KP3R' ::text, '\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'COVER' ::text, '\x4688a8b1f292fdab17e9a90c8bc379dc1dbd8713'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'SUSHI' ::text, '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'AKRO' ::text, '\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'CREAM' ::text, '\x2ba592f78db6436527729929aaf6c908497cb200'::bytea), +('YETI' ::text, 'PowerPool' ::text, 'CVP' ::text, '\x38e4adb44ef08f22f5b5b76a8f0c2d0dcbe7dca1'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'CREAM' ::text, '\x2ba592f78db6436527729929aaf6c908497cb200'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'aYFI' ::text, '\x12e51e77daaa58aa0e9247db7510ea4b46f9bead'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'KP3R' ::text, '\x1ceb5cb57c4d4e2b2433641b95dd330a33185a44'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'xSUSHI' ::text, '\x8798249c2e607446efb7ad49ec89dd1865ff4272'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'PICKLE' ::text, '\x429881672b9ae42b8eba0e26cd9c73711b891ca5'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'AKRO' ::text, '\x8ab7404063ec4dbcfd4598215992dc3f8ec853d7'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'YFI' ::text, '\x0bc529c00c6401aef6d220be8c6ea1667f6ad93e'::bytea), +('YPIE' ::text, 'pieDAO' ::text, 'SUSHI' ::text, '\x6b3595068778dd592e39a122f4f5a5cf09c90fe2'::bytea) +; diff --git a/dune/abstractions/lending/borrow.sql b/dune/abstractions/lending/borrow.sql index 9980f93..841295e 100644 --- a/dune/abstractions/lending/borrow.sql +++ b/dune/abstractions/lending/borrow.sql @@ -1,165 +1,211 @@ -CREATE TABLE lending.borrow (project text NOT NULL, version text, - block_time timestamptz NOT NULL, - block_number numeric NOT NULL, tx_hash bytea, - evt_index integer, trace_address integer[], - borrower bytea, tx_from bytea, - asset_address bytea, asset_symbol text, - token_amount numeric, usd_value numeric); +CREATE TABLE lending.borrow ( + project text NOT NULL, + version text, + block_time timestamptz NOT NULL, + block_number numeric NOT NULL, + tx_hash bytea, + evt_index integer, + trace_address integer[], + borrower bytea, + tx_from bytea, + asset_address bytea, + asset_symbol text, + token_amount numeric, + usd_value numeric +); -CREATE OR REPLACE FUNCTION lending.insert_borrow ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; -BEGIN -WITH borrow -AS (SELECT project, version, borrow.block_number, borrow.block_time, tx_hash, - evt_index, trace_address, tx."from" as tx_from, borrower, - t.symbol AS asset_symbol, asset_address, - asset_amount / 10 ^ t.decimals AS token_amount, - asset_amount / 10 - ^ t.decimals - * p.price AS usd_value FROM ( - --Aave V1 SELECT 'Aave' AS project, '1' AS version, - evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] as trace_address, borrower, - CASE WHEN _reserve - = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' --Use - WETH instead of Aave - "mock" address ELSE _reserve END AS asset_address, - _amount AS asset_amount FROM ( - --lending SELECT evt_block_number, evt_block_time, - evt_tx_hash, evt_index, _reserve, _amount, - "_user" AS borrower FROM aave - ."LendingPool_evt_Borrow" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - UNION ALL +CREATE OR REPLACE FUNCTION lending.insert_borrow(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; +BEGIN +WITH borrow AS ( + SELECT + project, + version, + borrow.block_number, + borrow.block_time, + tx_hash, + evt_index, + trace_address, + tx."from" as tx_from, + borrower, + t.symbol AS asset_symbol, + asset_address, + asset_amount / 10^t.decimals AS token_amount, + asset_amount / 10^t.decimals*p.price AS usd_value + FROM ( + -- Aave V1 + SELECT + 'Aave' AS project, + '1' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] as trace_address, + borrower, + CASE + WHEN _reserve = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' --Use WETH instead of Aave "mock" address + ELSE _reserve + END AS asset_address, + _amount AS asset_amount + FROM ( + --lending + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, _reserve, _amount, "_user" AS borrower + FROM aave."LendingPool_evt_Borrow" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - SELECT evt_block_number, - evt_block_time, evt_tx_hash, evt_index, _reserve, - _amount, - "_target" AS borrower FROM - aave."LendingPool_evt_FlashLoan" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) aave + UNION ALL - UNION ALL + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, _reserve, _amount, "_target" AS borrower + FROM aave."LendingPool_evt_FlashLoan" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ) aave + - -- Aave V2 SELECT 'Aave' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] as trace_address, borrower, - reserve AS asset_address, - amount AS asset_amount FROM ( - --lending SELECT evt_block_number, evt_block_time, - evt_tx_hash, evt_index, reserve, amount, - "user" AS borrower FROM aave_v2 - ."LendingPool_evt_Borrow" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + UNION ALL + + -- Aave V2 + SELECT + 'Aave' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] as trace_address, + borrower, + reserve AS asset_address, + amount AS asset_amount + FROM ( + --lending + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, reserve, amount, "user" AS borrower + FROM aave_v2."LendingPool_evt_Borrow" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION ALL + UNION ALL - SELECT evt_block_number, - evt_block_time, evt_tx_hash, evt_index, - asset AS reserve, amount, - target AS borrower FROM - aave_v2."LendingPool_evt_FlashLoan" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) aave_v2 + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, asset AS reserve, amount, target AS borrower + FROM aave_v2."LendingPool_evt_FlashLoan" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ) aave_v2 - UNION ALL + UNION ALL - -- Compound SELECT 'Compound' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] as trace_address, borrower, - c."underlying_token_address" AS asset_address, - "borrowAmount" AS asset_amount FROM ( - SELECT *FROM compound_v2 - ."cErc20_evt_Borrow" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."cEther_evt_Borrow" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."CErc20Delegator_evt_Borrow" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) - events LEFT JOIN compound.view_ctokens c ON - events.contract_address - = c.contract_address + -- Compound + SELECT + 'Compound' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] as trace_address, + borrower, + c."underlying_token_address" AS asset_address, + "borrowAmount" AS asset_amount + FROM ( + SELECT * FROM compound_v2."cErc20_evt_Borrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."cEther_evt_Borrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."CErc20Delegator_evt_Borrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + ) events + LEFT JOIN compound.view_ctokens c ON events.contract_address = c.contract_address - UNION ALL + UNION ALL - -- MakerDAO SELECT 'MakerDAO' AS project, - '2' AS version, call_block_number AS block_number, - call_block_time AS block_time, call_tx_hash AS tx_hash, - NULL::integer as evt_index, - call_trace_address as trace_address, borrower, - '\x6b175474e89094c44da98b954eedeac495271d0f' ::bytea AS - asset_address, - asset_amount FROM ( - --ERC20 Dai SELECT call_block_number, call_block_time, - call_tx_hash, call_trace_address, - "wad" AS asset_amount, - "usr" AS borrower FROM makermcd - ."DAI_call_mint" WHERE call_success AND wad - > 0 AND call_block_time - >= start_ts AND call_block_time< - end_ts + -- MakerDAO + SELECT + 'MakerDAO' AS project, + '2' AS version, + call_block_number AS block_number, + call_block_time AS block_time, + call_tx_hash AS tx_hash, + NULL::integer as evt_index, + call_trace_address as trace_address, + borrower, + '\x6b175474e89094c44da98b954eedeac495271d0f'::bytea AS asset_address, + asset_amount + FROM ( + --ERC20 Dai + SELECT call_block_number, call_block_time, call_tx_hash, call_trace_address, "wad" AS asset_amount, "usr" AS borrower + FROM makermcd."DAI_call_mint" + WHERE call_success + AND wad > 0 + AND call_block_time >= start_ts + AND call_block_time < end_ts - UNION ALL-- Dai in DSR SELECT - call_block_number, - call_block_time, call_tx_hash, - call_trace_address, - "rad" / 1e27 AS asset_amount, - "src" AS borrower FROM makermcd - ."VAT_call_move" WHERE call_success AND - dst - = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AND - rad> 0 AND call_block_time - >= start_ts AND call_block_time < end_ts) maker) - borrow INNER JOIN ethereum.transactions tx ON - borrow.tx_hash - = tx.hash AND tx.block_number >= start_block AND tx.block_number - < end_block AND tx.block_time >= start_ts AND tx.block_time - < end_ts LEFT JOIN erc20.tokens t ON t.contract_address - = borrow.asset_address LEFT JOIN prices.usd p ON p.minute - = date_trunc ('minute', borrow.block_time) AND p.contract_address - = borrow.asset_address AND p.minute >= start_ts AND p.minute < end_ts), - rows - AS (INSERT INTO lending.borrow (project, version, block_time, block_number, - tx_hash, evt_index, trace_address, tx_from, - borrower, asset_address, asset_symbol, - token_amount, usd_value) SELECT project, - version, block_time, block_number, tx_hash, evt_index, trace_address, - tx_from, borrower, asset_address, asset_symbol, token_amount, - usd_value FROM borrow ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; + UNION ALL + -- Dai in DSR + SELECT call_block_number, call_block_time, call_tx_hash, call_trace_address, "rad"/1e27 AS asset_amount, "src" AS borrower + FROM makermcd."VAT_call_move" + WHERE call_success + AND dst = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + AND rad > 0 + AND call_block_time >= start_ts + AND call_block_time < end_ts + ) maker + ) borrow + INNER JOIN ethereum.transactions tx + ON borrow.tx_hash = tx.hash + AND tx.block_number >= start_block + AND tx.block_number < end_block + AND tx.block_time >= start_ts + AND tx.block_time < end_ts + LEFT JOIN erc20.tokens t ON t.contract_address = borrow.asset_address + LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', borrow.block_time) AND p.contract_address = borrow.asset_address AND p.minute >= start_ts AND p.minute < end_ts +), +rows AS ( + INSERT INTO lending.borrow ( + project, + version, + block_time, + block_number, + tx_hash, + evt_index, + trace_address, + tx_from, + borrower, + asset_address, + asset_symbol, + token_amount, + usd_value + ) + SELECT + project, + version, + block_time, + block_number, + tx_hash, + evt_index, + trace_address, + tx_from, + borrower, + asset_address, + asset_symbol, + token_amount, + usd_value + FROM borrow + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; + -CREATE UNIQUE INDEX IF NOT EXISTS lending_borrow_tr_addr_uniq_idx ON - lending.borrow (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS lending_borrow_evt_index_uniq_idx ON - lending.borrow (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS lending_borrow_block_time_idx ON lending.borrow - USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS lending_borrow_tr_addr_uniq_idx ON lending.borrow (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS lending_borrow_evt_index_uniq_idx ON lending.borrow (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS lending_borrow_block_time_idx ON lending.borrow USING BRIN (block_time); -SELECT lending.insert_borrow ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM lending.borrow LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '14 1 * * *', - $$SELECT lending.insert_borrow ( - (SELECT max (block_time) - interval '2 days' FROM lending.borrow), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM lending.borrow)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +SELECT lending.insert_borrow('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM lending.borrow LIMIT 1); +INSERT INTO cron.job (schedule, command) +VALUES ('14 1 * * *', $$SELECT lending.insert_borrow((SELECT max(block_time) - interval '2 days' FROM lending.borrow), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM lending.borrow)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/lending/collateral_change.sql b/dune/abstractions/lending/collateral_change.sql index 78005de..5807aff 100644 --- a/dune/abstractions/lending/collateral_change.sql +++ b/dune/abstractions/lending/collateral_change.sql @@ -1,203 +1,269 @@ CREATE TABLE lending.collateral_change ( - project text NOT NULL, version text, block_time timestamptz NOT NULL, - block_number numeric NOT NULL, tx_hash bytea, evt_index integer, - trace_address integer[], borrower bytea, tx_from bytea, - asset_address bytea, asset_symbol text, token_amount numeric, - usd_value numeric); - -CREATE OR REPLACE FUNCTION lending.insert_collateral_changes ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; + project text NOT NULL, + version text, + block_time timestamptz NOT NULL, + block_number numeric NOT NULL, + tx_hash bytea, + evt_index integer, + trace_address integer[], + borrower bytea, + tx_from bytea, + asset_address bytea, + asset_symbol text, + token_amount numeric, + usd_value numeric +); + + +CREATE OR REPLACE FUNCTION lending.insert_collateral_changes(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH collateral_change -AS (SELECT project, version, collateral.block_number, collateral.block_time, - tx_hash, evt_index, trace_address, tx."from" AS tx_from, borrower, - t.symbol AS asset_symbol, asset_address, - asset_amount / 10 ^ t.decimals AS token_amount, - asset_amount / 10 - ^ t.decimals - * p.price AS usd_value FROM ( - - --Aave add collateral SELECT 'Aave' AS project, - '1' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "_user" AS borrower, - CASE-- Use WETH instead of Aave - "mock" address WHEN _reserve - = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ELSE - _reserve END AS asset_address, - _amount AS asset_amount FROM aave - ."LendingPool_evt_Deposit" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION ALL - - -- Aave remove collateral SELECT 'Aave' AS project, - '1' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "_user" AS borrower, - CASE-- Use WETH instead of Aave - "mock" address WHEN _reserve - = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' ELSE - _reserve END AS asset_address, - -"_amount" AS asset_amount FROM - aave."LendingPool_evt_RedeemUnderlying" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION ALL-- Aave 2 add collateral - SELECT 'Aave' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "user" AS borrower, reserve AS asset_address, - amount AS asset_amount FROM aave_v2 - ."LendingPool_evt_Deposit" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION ALL-- Aave 2 remove collateral - SELECT 'Aave' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "user" AS borrower, reserve AS asset_address, - -amount AS asset_amount FROM aave_v2 - ."LendingPool_evt_Withdraw" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION ALL-- Aave 2 liquidation calls - SELECT 'Aave' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "user" AS borrower, "collateralAsset" AS asset_address, - -"liquidatedCollateralAmount" AS asset_amount FROM - aave_v2."LendingPool_evt_LiquidationCall" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts AND - "receiveAToken" - = FALSE - - UNION ALL-- Compound add collateral - SELECT 'Compound' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - minter AS borrower, - c."underlying_token_address" AS asset_address, - "mintAmount" AS asset_amount FROM ( - SELECT *FROM - compound_v2."cErc20_evt_Mint" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."cEther_evt_Mint" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."CErc20Delegator_evt_Mint" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) - compound_add LEFT JOIN compound - .view_ctokens c ON compound_add.contract_address - = c.contract_address - - UNION ALL-- Compound remove collateral - SELECT 'Compound' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - redeemer AS borrower, - c."underlying_token_address" AS asset_address, - -"redeemAmount" AS asset_amount FROM ( - SELECT *FROM compound_v2 - ."cErc20_evt_Redeem" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."cEther_evt_Redeem" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."CErc20Delegator_evt_Redeem" WHERE - evt_block_time - >= start_ts AND evt_block_time - < end_ts) compound_redeem LEFT JOIN compound - .view_ctokens c ON compound_redeem.contract_address - = c.contract_address - - UNION ALL - - -- MakerDAO add collateral SELECT 'MakerDAO' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "from" AS borrower, tr.contract_address AS asset_address, - value AS assset_amount FROM - erc20."ERC20_evt_Transfer" tr WHERE - "to" IN (SELECT address FROM - makermcd.collateral_addresses) - AND evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION ALL - - -- MakerDAO remove collateral - SELECT 'MakerDAO' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, - "to" AS borrower, tr.contract_address AS asset_address, - -value AS assset_amount FROM - erc20."ERC20_evt_Transfer" tr WHERE - "from" IN (SELECT address FROM makermcd - .collateral_addresses) - AND evt_block_time - >= start_ts AND evt_block_time < end_ts) - collateral INNER JOIN - ethereum.transactions tx ON collateral.tx_hash - = tx.hash AND tx.block_number >= start_block AND tx.block_number - < end_block AND tx.block_time >= start_ts AND tx.block_time - < end_ts LEFT JOIN erc20.tokens t ON t.contract_address - = collateral.asset_address LEFT JOIN prices.usd p ON p.minute - = date_trunc ('minute', collateral.block_time) AND p.contract_address - = collateral.asset_address AND p.minute >= start_ts AND p.minute < end_ts), - rows - AS (INSERT INTO lending.collateral_change ( - project, version, block_time, block_number, tx_hash, evt_index, - trace_address, tx_from, borrower, asset_address, asset_symbol, - token_amount, usd_value) SELECT project, - version, block_time, block_number, tx_hash, evt_index, trace_address, - tx_from, borrower, asset_address, asset_symbol, token_amount, - usd_value FROM collateral_change ON CONFLICT DO NOTHING - RETURNING 1) SELECT count (*) INTO r from rows; +WITH collateral_change AS ( + SELECT + project, + version, + collateral.block_number, + collateral.block_time, + tx_hash, + evt_index, + trace_address, + tx."from" AS tx_from, + borrower, + t.symbol AS asset_symbol, + asset_address, + asset_amount / 10^t.decimals AS token_amount, + asset_amount / 10^t.decimals*p.price AS usd_value + FROM ( + + -- Aave add collateral + SELECT + 'Aave' AS project, + '1' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "_user" AS borrower, + CASE --Use WETH instead of Aave "mock" address + WHEN _reserve = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' + ELSE _reserve + END AS asset_address, + _amount AS asset_amount + FROM aave."LendingPool_evt_Deposit" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION ALL + + -- Aave remove collateral + SELECT + 'Aave' AS project, + '1' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "_user" AS borrower, + CASE --Use WETH instead of Aave "mock" address + WHEN _reserve = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' + ELSE _reserve + END AS asset_address, + -"_amount" AS asset_amount + FROM aave."LendingPool_evt_RedeemUnderlying" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION ALL + -- Aave 2 add collateral + SELECT + 'Aave' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "user" AS borrower, + reserve AS asset_address, + amount AS asset_amount + FROM aave_v2."LendingPool_evt_Deposit" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION ALL + -- Aave 2 remove collateral + SELECT + 'Aave' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "user" AS borrower, + reserve AS asset_address, + -amount AS asset_amount + FROM aave_v2."LendingPool_evt_Withdraw" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION ALL + --Aave 2 liquidation calls + SELECT + 'Aave' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "user" AS borrower, + "collateralAsset" AS asset_address, + -"liquidatedCollateralAmount" AS asset_amount + FROM aave_v2."LendingPool_evt_LiquidationCall" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + AND "receiveAToken" = FALSE + + UNION ALL + -- Compound add collateral + SELECT + 'Compound' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + minter AS borrower, + c."underlying_token_address" AS asset_address, + "mintAmount" AS asset_amount + FROM ( + SELECT * FROM compound_v2."cErc20_evt_Mint" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."cEther_evt_Mint" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."CErc20Delegator_evt_Mint" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + ) compound_add + LEFT JOIN compound.view_ctokens c ON compound_add.contract_address = c.contract_address + + UNION ALL + -- Compound remove collateral + SELECT + 'Compound' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + redeemer AS borrower, + c."underlying_token_address" AS asset_address, + -"redeemAmount" AS asset_amount + FROM ( + SELECT * FROM compound_v2."cErc20_evt_Redeem" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."cEther_evt_Redeem" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."CErc20Delegator_evt_Redeem" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + ) compound_redeem + LEFT JOIN compound.view_ctokens c ON compound_redeem.contract_address = c.contract_address + + UNION ALL + + -- MakerDAO add collateral + SELECT + 'MakerDAO' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "from" AS borrower, + tr.contract_address AS asset_address, + value AS assset_amount + FROM erc20."ERC20_evt_Transfer" tr + WHERE "to" IN (SELECT address FROM makermcd.collateral_addresses) + AND evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION ALL + + -- MakerDAO remove collateral + SELECT + 'MakerDAO' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + "to" AS borrower, + tr.contract_address AS asset_address, + -value AS assset_amount + FROM erc20."ERC20_evt_Transfer" tr + WHERE "from" IN (SELECT address FROM makermcd.collateral_addresses) + AND evt_block_time >= start_ts + AND evt_block_time < end_ts + ) collateral + INNER JOIN ethereum.transactions tx + ON collateral.tx_hash = tx.hash + AND tx.block_number >= start_block + AND tx.block_number < end_block + AND tx.block_time >= start_ts + AND tx.block_time < end_ts + LEFT JOIN erc20.tokens t ON t.contract_address = collateral.asset_address + LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', collateral.block_time) AND p.contract_address = collateral.asset_address AND p.minute >= start_ts AND p.minute < end_ts +), +rows AS ( + INSERT INTO lending.collateral_change ( + project, + version, + block_time, + block_number, + tx_hash, + evt_index, + trace_address, + tx_from, + borrower, + asset_address, + asset_symbol, + token_amount, + usd_value + ) + SELECT + project, + version, + block_time, + block_number, + tx_hash, + evt_index, + trace_address, + tx_from, + borrower, + asset_address, + asset_symbol, + token_amount, + usd_value + FROM collateral_change + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; - -CREATE UNIQUE INDEX IF NOT EXISTS lending_collateral_change_tr_addr_uniq_idx ON - lending.collateral_change (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS lending_collateral_change_evt_index_uniq_idx - ON lending.collateral_change (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS lending_collateral_change_block_time_idx ON - lending.collateral_change USING BRIN (block_time); - -SELECT lending.insert_collateral_changes ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM lending.collateral_change LIMIT 1); +END +$function$; + + +CREATE UNIQUE INDEX IF NOT EXISTS lending_collateral_change_tr_addr_uniq_idx ON lending.collateral_change (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS lending_collateral_change_evt_index_uniq_idx ON lending.collateral_change (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS lending_collateral_change_block_time_idx ON lending.collateral_change USING BRIN (block_time); + +SELECT lending.insert_collateral_changes('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM lending.collateral_change LIMIT 1); INSERT INTO cron.job (schedule, command) - VALUES ('14 0 * * *', - $$SELECT lending.insert_collateral_changes ( - (SELECT max (block_time) - - interval '2 days' FROM lending.collateral_change), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - - interval '2 days' FROM lending.collateral_change)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +VALUES ('14 0 * * *', $$SELECT lending.insert_collateral_changes((SELECT max(block_time) - interval '2 days' FROM lending.collateral_change), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM lending.collateral_change)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/lending/repay.sql b/dune/abstractions/lending/repay.sql index cec89f9..9650e03 100644 --- a/dune/abstractions/lending/repay.sql +++ b/dune/abstractions/lending/repay.sql @@ -1,167 +1,209 @@ -CREATE TABLE lending.repay (project text NOT NULL, version text, - block_time timestamptz NOT NULL, - block_number numeric NOT NULL, tx_hash bytea, - evt_index integer, trace_address integer[], - borrower bytea, tx_from bytea, asset_address bytea, - asset_symbol text, token_amount numeric, - usd_value numeric); +CREATE TABLE lending.repay ( + project text NOT NULL, + version text, + block_time timestamptz NOT NULL, + block_number numeric NOT NULL, + tx_hash bytea, + evt_index integer, + trace_address integer[], + borrower bytea, + tx_from bytea, + asset_address bytea, + asset_symbol text, + token_amount numeric, + usd_value numeric +); -CREATE OR REPLACE FUNCTION lending.insert_repays ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; -BEGIN -WITH repays -AS (SELECT project, version, repay.block_number, repay.block_time, tx_hash, - evt_index, trace_address, tx."from" as tx_from, borrower, - t.symbol AS asset_symbol, asset_address, - asset_amount / 10 ^ t.decimals AS token_amount, - asset_amount / 10 - ^ t.decimals - * p.price AS usd_value FROM ( - --AAVE 1 SELECT 'Aave' AS project, '1' AS version, - evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, borrower, - CASE WHEN _reserve - = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' --Use - WETH instead of Aave - "mock" address ELSE _reserve END AS asset_address, - asset_amount FROM ( - --lending SELECT evt_block_number, evt_block_time, - evt_tx_hash, evt_index, _reserve, - "_amountMinusFees" AS asset_amount, - "_user" AS borrower FROM aave - ."LendingPool_evt_Repay" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - UNION ALL +CREATE OR REPLACE FUNCTION lending.insert_repays(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; +BEGIN +WITH repays AS ( + SELECT + project, + version, + repay.block_number, + repay.block_time, + tx_hash, + evt_index, + trace_address, + tx."from" as tx_from, + borrower, + t.symbol AS asset_symbol, + asset_address, + asset_amount / 10^t.decimals AS token_amount, + asset_amount / 10^t.decimals*p.price AS usd_value + FROM ( + -- AAVE 1 + SELECT + 'Aave' AS project, + '1' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + borrower, + CASE + WHEN _reserve = '\xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' THEN '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' --Use WETH instead of Aave "mock" address + ELSE _reserve + END AS asset_address, + asset_amount + FROM ( + --lending + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, _reserve, "_amountMinusFees" AS asset_amount, "_user" AS borrower + FROM aave."LendingPool_evt_Repay" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - -- flash loan SELECT evt_block_number, - evt_block_time, evt_tx_hash, evt_index, _reserve, - "_amount" AS asset_amount, - "_target" AS borrower FROM - aave."LendingPool_evt_FlashLoan" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) aave + UNION ALL - UNION ALL + --flash loan + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, _reserve, "_amount" AS asset_amount, "_target" AS borrower + FROM aave."LendingPool_evt_FlashLoan" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ) aave - -- AAVE 2 SELECT 'Aave' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, borrower, - reserve AS asset_address, - asset_amount FROM ( - --lending SELECT evt_block_number, evt_block_time, - evt_tx_hash, evt_index, reserve, - amount AS asset_amount, - "user" AS borrower FROM aave_v2 - ."LendingPool_evt_Repay" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + UNION ALL + + -- AAVE 2 + SELECT + 'Aave' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + borrower, + reserve AS asset_address, + asset_amount + FROM ( + --lending + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, reserve, amount AS asset_amount, "user" AS borrower + FROM aave_v2."LendingPool_evt_Repay" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION ALL + UNION ALL - -- flash loan SELECT evt_block_number, - evt_block_time, evt_tx_hash, evt_index, asset, - amount AS asset_amount, - target AS borrower FROM - aave_v2."LendingPool_evt_FlashLoan" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) aave2 + --flash loan + SELECT evt_block_number, evt_block_time, evt_tx_hash, evt_index, asset, amount AS asset_amount, target AS borrower + FROM aave_v2."LendingPool_evt_FlashLoan" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ) aave2 - UNION ALL-- Compound 1 SELECT 'Compound' AS project, - '2' AS version, evt_block_number AS block_number, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index, NULL::integer[] AS trace_address, borrower, - c."underlying_token_address" AS asset_address, - "repayAmount" AS asset_amount FROM ( - SELECT *FROM compound_v2 - ."cErc20_evt_RepayBorrow" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."cEther_evt_RepayBorrow" WHERE - evt_block_time - >= start_ts AND evt_block_time - < end_ts UNION ALL SELECT - * FROM compound_v2 - ."CErc20Delegator_evt_RepayBorrow" WHERE - evt_block_time - >= start_ts AND evt_block_time < end_ts) - compound LEFT JOIN compound.view_ctokens c ON - compound.contract_address - = c.contract_address + UNION ALL + -- Compound 1 + SELECT + 'Compound' AS project, + '2' AS version, + evt_block_number AS block_number, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index, + NULL::integer[] AS trace_address, + borrower, + c."underlying_token_address" AS asset_address, + "repayAmount" AS asset_amount + FROM ( + SELECT * FROM compound_v2."cErc20_evt_RepayBorrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."cEther_evt_RepayBorrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + UNION ALL + SELECT * FROM compound_v2."CErc20Delegator_evt_RepayBorrow" WHERE evt_block_time >= start_ts AND evt_block_time < end_ts + ) compound + LEFT JOIN compound.view_ctokens c ON compound.contract_address = c.contract_address - UNION ALL-- MAKER DAO + UNION ALL + --MAKER DAO - SELECT 'MakerDAO' AS project, - '2' AS version, call_block_number AS block_number, - call_block_time AS block_time, call_tx_hash AS tx_hash, - NULL::integer AS evt_index, - call_trace_address AS trace_address, borrower, - '\x6b175474e89094c44da98b954eedeac495271d0f' ::bytea AS - asset_address, - asset_amount FROM ( - SELECT call_block_number, call_block_time, - call_tx_hash, call_trace_address, - "wad" AS asset_amount, - "usr" AS borrower FROM makermcd - ."DAI_call_burn" WHERE call_success AND wad - > 0 AND call_block_time - >= start_ts AND call_block_time< - end_ts + SELECT + 'MakerDAO' AS project, + '2' AS version, + call_block_number AS block_number, + call_block_time AS block_time, + call_tx_hash AS tx_hash, + NULL::integer AS evt_index, + call_trace_address AS trace_address, + borrower, + '\x6b175474e89094c44da98b954eedeac495271d0f'::bytea AS asset_address, + asset_amount + FROM ( + SELECT call_block_number, call_block_time, call_tx_hash, call_trace_address, "wad" AS asset_amount, "usr" AS borrower + FROM makermcd."DAI_call_burn" + WHERE call_success + AND wad > 0 + AND call_block_time >= start_ts + AND call_block_time < end_ts - UNION ALL + UNION ALL - SELECT call_block_number, - call_block_time, call_tx_hash, - call_trace_address, - "rad" / 1e27 AS asset_amount, - "dst" AS borrower FROM makermcd - ."VAT_call_move" WHERE call_success AND - src - = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' AND - rad> 0 AND call_block_time - >= start_ts AND call_block_time < end_ts) maker) - repay INNER JOIN ethereum.transactions tx ON repay.tx_hash - = tx.hash AND tx.block_number >= start_block AND tx.block_number - < end_block AND tx.block_time >= start_ts AND tx.block_time - < end_ts LEFT JOIN erc20.tokens t ON t.contract_address - = repay.asset_address LEFT JOIN prices.usd p ON p.minute - = date_trunc ('minute', repay.block_time) AND p.contract_address - = repay.asset_address AND p.minute >= start_ts AND p.minute < end_ts), - rows - AS (INSERT INTO lending.repay (project, block_time, borrower, asset_symbol, - token_amount, usd_value, asset_address, - version, tx_hash, trace_address, evt_index, - block_number, tx_from) SELECT project, - block_time, borrower, asset_symbol, token_amount, usd_value, - asset_address, version, tx_hash, trace_address, evt_index, - block_number, - tx_from FROM repays ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; + SELECT call_block_number, call_block_time, call_tx_hash, call_trace_address, "rad" / 1e27 AS asset_amount, "dst" AS borrower + FROM makermcd."VAT_call_move" + WHERE call_success AND src = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + AND rad>0 + AND call_block_time >= start_ts + AND call_block_time < end_ts + ) maker + ) repay + INNER JOIN ethereum.transactions tx + ON repay.tx_hash = tx.hash + AND tx.block_number >= start_block + AND tx.block_number < end_block + AND tx.block_time >= start_ts + AND tx.block_time < end_ts + LEFT JOIN erc20.tokens t ON t.contract_address = repay.asset_address + LEFT JOIN prices.usd p ON p.minute = date_trunc('minute', repay.block_time) AND p.contract_address = repay.asset_address AND p.minute >= start_ts AND p.minute < end_ts +), +rows AS ( + INSERT INTO lending.repay ( + project, + block_time, + borrower, + asset_symbol, + token_amount, + usd_value, + asset_address, + version, + tx_hash, + trace_address, + evt_index, + block_number, + tx_from + ) + SELECT + project, + block_time, + borrower, + asset_symbol, + token_amount, + usd_value, + asset_address, + version, + tx_hash, + trace_address, + evt_index, + block_number, + tx_from + FROM repays + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; + -CREATE UNIQUE INDEX IF NOT EXISTS lending_repays_tr_addr_uniq_idx ON - lending.repay (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS lending_repays_evt_index_uniq_idx ON - lending.repay (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS lending_repays_block_time_idx ON lending.repay - USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS lending_repays_tr_addr_uniq_idx ON lending.repay (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS lending_repays_evt_index_uniq_idx ON lending.repay (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS lending_repays_block_time_idx ON lending.repay USING BRIN (block_time); -SELECT lending.insert_repays ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM lending.repay LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '14 2 * * *', - $$SELECT lending.insert_repays ( - (SELECT max (block_time) - interval '2 days' FROM lending.repay), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM lending.repay)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +SELECT lending.insert_repays('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM lending.repay LIMIT 1); +INSERT INTO cron.job (schedule, command) +VALUES ('14 2 * * *', $$SELECT lending.insert_repays((SELECT max(block_time) - interval '2 days' FROM lending.repay), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM lending.repay)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/loopring/fn_decode_float_16.sql b/dune/abstractions/loopring/fn_decode_float_16.sql index c7ba873..c702beb 100644 --- a/dune/abstractions/loopring/fn_decode_float_16.sql +++ b/dune/abstractions/loopring/fn_decode_float_16.sql @@ -1,13 +1,14 @@ DROP FUNCTION loopring.fn_decode_float_16; -CREATE OR REPLACE FUNCTION loopring.fn_decode_float_16 (data bytea) RETURNS - double precision AS $$ DECLARE exponent integer; -mantissa integer; -value integer; +CREATE OR REPLACE FUNCTION loopring.fn_decode_float_16(data bytea) RETURNS double precision AS $$ +DECLARE + exponent integer; + mantissa integer; + value integer; BEGIN -value = get_byte (data, 0) * 256 + get_byte (data, 1); -exponent = value / 2048; -mantissa = value - (exponent * 2048); -return mantissa * POW (10, exponent); -END; -$$ LANGUAGE PLPGSQL; \ No newline at end of file + value = get_byte(data, 0) * 256 + get_byte(data, 1); + exponent = value / 2048; + mantissa = value - (exponent * 2048); + return mantissa * POW(10, exponent); +END; $$ +LANGUAGE PLPGSQL; \ No newline at end of file diff --git a/dune/abstractions/loopring/fn_decode_float_24.sql b/dune/abstractions/loopring/fn_decode_float_24.sql index 168f901..4c96164 100644 --- a/dune/abstractions/loopring/fn_decode_float_24.sql +++ b/dune/abstractions/loopring/fn_decode_float_24.sql @@ -1,14 +1,14 @@ DROP FUNCTION loopring.fn_decode_float_24; -CREATE OR REPLACE FUNCTION loopring.fn_decode_float_24 (data bytea) RETURNS - double precision AS $$ DECLARE exponent integer; -mantissa integer; -value integer; +CREATE OR REPLACE FUNCTION loopring.fn_decode_float_24(data bytea) RETURNS double precision AS $$ +DECLARE + exponent integer; + mantissa integer; + value integer; BEGIN -value = get_byte (data, 0) * 65536 + get_byte (data, 1) * 256 - + get_byte (data, 2); -exponent = value / 524288; -mantissa = value - (exponent * 524288); -return mantissa * POW (10, exponent); -END; -$$ LANGUAGE PLPGSQL; \ No newline at end of file + value = get_byte(data, 0) * 65536 + get_byte(data, 1) * 256 + get_byte(data, 2); + exponent = value / 524288; + mantissa = value - (exponent * 524288); + return mantissa * POW(10, exponent); +END; $$ +LANGUAGE PLPGSQL; \ No newline at end of file diff --git a/dune/abstractions/loopring/fn_process_block_v2.sql b/dune/abstractions/loopring/fn_process_block_v2.sql index 7c7cf58..8bcd81e 100644 --- a/dune/abstractions/loopring/fn_process_block_v2.sql +++ b/dune/abstractions/loopring/fn_process_block_v2.sql @@ -9,103 +9,144 @@ DROP TYPE loopring.account_update_struct; DROP TYPE loopring.amm_update_struct; DROP TYPE loopring.signature_verification_struct; -CREATE TYPE loopring.deposit_struct AS (toAddress bytea, toAccount numeric, - token numeric, - amount double precision); +CREATE TYPE loopring.deposit_struct AS ( + toAddress bytea, + toAccount numeric, + token numeric, + amount double precision +); -CREATE TYPE loopring.withdraw_struct -AS (fromAddress bytea, fromAccount numeric, token numeric, - amount double precision, feeToken numeric, fee double precision); +CREATE TYPE loopring.withdraw_struct AS ( + fromAddress bytea, + fromAccount numeric, + token numeric, + amount double precision, + feeToken numeric, + fee double precision +); -CREATE TYPE loopring.transfer_struct -AS (token numeric, amount double precision, feeToken numeric, - fee double precision, fromAccount numeric, toAccount numeric, - toAddress bytea, fromAddress bytea); +CREATE TYPE loopring.transfer_struct AS ( + token numeric, + amount double precision, + feeToken numeric, + fee double precision, + fromAccount numeric, + toAccount numeric, + toAddress bytea, + fromAddress bytea +); -CREATE TYPE loopring.spot_trade_struct AS (accountA numeric, accountB numeric, - tokenA numeric, tokenB numeric, - amountA double precision, - amountB double precision); +CREATE TYPE loopring.spot_trade_struct AS ( + accountA numeric, + accountB numeric, + tokenA numeric, + tokenB numeric, + amountA double precision, + amountB double precision +); -CREATE TYPE loopring.account_update_struct -AS (ownerAddress bytea, ownerAccount numeric, feeToken numeric, - fee double precision, publicKey bytea); +CREATE TYPE loopring.account_update_struct AS ( + ownerAddress bytea, + ownerAccount numeric, + feeToken numeric, + fee double precision, + publicKey bytea +); -CREATE TYPE loopring.amm_update_struct AS (ownerAddress bytea, - ownerAccount numeric, token numeric, - feeBips numeric, - weight double precision); +CREATE TYPE loopring.amm_update_struct AS ( + ownerAddress bytea, + ownerAccount numeric, + token numeric, + feeBips numeric, + weight double precision +); -CREATE TYPE loopring.signature_verification_struct AS (ownerAddress bytea, - ownerAccount numeric); +CREATE TYPE loopring.signature_verification_struct AS ( + ownerAddress bytea, + ownerAccount numeric +); -CREATE TYPE loopring.transaction_struct -AS (block_timestamp timestamptz, blockIdx integer, txIdx integer, - txType integer, deposit loopring.deposit_struct, - withdraw loopring.withdraw_struct, transfer loopring.transfer_struct, +CREATE TYPE loopring.transaction_struct AS ( + block_timestamp timestamptz, + blockIdx integer, + txIdx integer, + txType integer, + deposit loopring.deposit_struct, + withdraw loopring.withdraw_struct, + transfer loopring.transfer_struct, spot_trade loopring.spot_trade_struct, account_update loopring.account_update_struct, amm_update loopring.amm_update_struct, - signature_verification loopring.signature_verification_struct); + signature_verification loopring.signature_verification_struct +); -CREATE OR REPLACE FUNCTION loopring - .fn_process_block_v2 (blockSize integer, _data bytea, - block_timestamp timestamptz, - blockIdx integer) RETURNS SETOF loopring - .transaction_struct AS $$ BEGIN RETURN QUERY SELECT block_timestamp, - blockIdx, i, get_byte (substr (x.data, 1, 1), 0) as txType, - (substr (x.data, 2, 20), bytea2numeric (substr (x.data, 2 + 20, 4), false), - bytea2numeric (substr (x.data, 2 + 20 + 4, 2), false), - bytea2numeric (substr (x.data, 2 + 20 + 4 + 2, 12), false)::double - precision)::loopring.deposit_struct as deposit, - (substr (x.data, 2 + 1, 20), - bytea2numeric (substr (x.data, 2 + 1 + 20, 4), false), - bytea2numeric (substr (x.data, 2 + 1 + 20 + 4, 2), false), - bytea2numeric (substr (x.data, 2 + 1 + 20 + 4 + 2, 12), - false)::double precision, - bytea2numeric (substr (x.data, 2 + 1 + 20 + 4 + 2 + 12, 2), false), - loopring.fn_decode_float_16 ( - substr (x.data, 2 + 1 + 20 + 4 + 2 + 12 + 2, - 2))::double precision)::loopring.withdraw_struct as withdraw, - (bytea2numeric (substr (x.data, 2 + 1 + 4 + 4, 2), false), - loopring.fn_decode_float_24 (substr (x.data, 2 + 1 + 4 + 4 + 2, - 3))::double precision, - bytea2numeric (substr (x.data, 2 + 1 + 4 + 4 + 2 + 3, 2), false), - loopring.fn_decode_float_16 (substr (x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2, - 2))::double precision, - bytea2numeric (substr (x.data, 2 + 1, 4), false), - bytea2numeric (substr (x.data, 2 + 1 + 4, 4), false), - substr (x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2 + 2 + 4, 20), - substr (x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2 + 2 + 4 + 20, - 20))::loopring.transfer_struct as transfer, - (bytea2numeric (substr (x.data, 2 + 4 + 4, 4), false), - bytea2numeric (substr (x.data, 2 + 4 + 4 + 4, 4), false), - bytea2numeric (substr (x.data, 2 + 4 + 4 + 4 + 4, 2), false), - bytea2numeric (substr (x.data, 2 + 4 + 4 + 4 + 4 + 2, 2), false), - loopring.fn_decode_float_24 (substr (x.data, 2 + 4 + 4 + 4 + 4 + 2 + 2, - 3))::double precision, - loopring.fn_decode_float_24 (substr ( - x.data, 2 + 4 + 4 + 4 + 4 + 2 + 2 + 3, - 3))::double precision)::loopring.spot_trade_struct as spot_trade, - (substr (x.data, 2 + 1, 20), - bytea2numeric (substr (x.data, 2 + 1 + 20, 4), false), - bytea2numeric (substr (x.data, 2 + 1 + 20 + 4, 2), false), - loopring.fn_decode_float_16 (substr (x.data, 2 + 1 + 20 + 4 + 2, - 2))::double precision, - substr (x.data, 2 + 1 + 20 + 4 + 2 + 2, - 32))::loopring.account_update_struct as account_update, - (substr (x.data, 2, 20), bytea2numeric (substr (x.data, 2 + 20, 4), false), - bytea2numeric (substr (x.data, 2 + 20 + 4, 2), false), - get_byte (substr (x.data, 2 + 20 + 4 + 2, 1), 0), - bytea2numeric (substr (x.data, 2 + 20 + 4 + 2 + 1, 12), - false)::double precision)::loopring.amm_update_struct as - amm_update, - (substr (x.data, 2, 20), - bytea2numeric (substr (x.data, 2 + 20, 4), false))::loopring - .signature_verification_struct as signature_verification FROM - generate_series (0, blockSize - 1) i, - LATERAL (SELECT (substr (_data, 99 + i * 29, 29) - || substr (_data, 99 + blockSize * 29 + i * 39, 39)) - AS data) x; + +CREATE OR REPLACE FUNCTION loopring.fn_process_block_v2(blockSize integer, _data bytea, block_timestamp timestamptz, blockIdx integer) +RETURNS SETOF loopring.transaction_struct +AS $$ +BEGIN +RETURN QUERY +SELECT + block_timestamp, + blockIdx, + i, + get_byte(substr(x.data, 1, 1), 0) as txType, + ( + substr(x.data, 2, 20), + bytea2numeric(substr(x.data, 2 + 20, 4), false), + bytea2numeric(substr(x.data, 2 + 20 + 4, 2), false), + bytea2numeric(substr(x.data, 2 + 20 + 4 + 2, 12), false)::double precision + )::loopring.deposit_struct as deposit, + ( + substr(x.data, 2 + 1, 20), + bytea2numeric(substr(x.data, 2 + 1 + 20, 4), false), + bytea2numeric(substr(x.data, 2 + 1 + 20 + 4, 2), false), + bytea2numeric(substr(x.data, 2 + 1 + 20 + 4 + 2, 12), false)::double precision, + bytea2numeric(substr(x.data, 2 + 1 + 20 + 4 + 2 + 12, 2), false), + loopring.fn_decode_float_16(substr(x.data, 2 + 1 + 20 + 4 + 2 + 12 + 2, 2))::double precision + )::loopring.withdraw_struct as withdraw, + ( + bytea2numeric(substr(x.data, 2 + 1 + 4 + 4, 2), false), + loopring.fn_decode_float_24(substr(x.data, 2 + 1 + 4 + 4 + 2, 3))::double precision, + bytea2numeric(substr(x.data, 2 + 1 + 4 + 4 + 2 + 3, 2), false), + loopring.fn_decode_float_16(substr(x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2, 2))::double precision, + bytea2numeric(substr(x.data, 2 + 1, 4), false), + bytea2numeric(substr(x.data, 2 + 1 + 4, 4), false), + substr(x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2 + 2 + 4, 20), + substr(x.data, 2 + 1 + 4 + 4 + 2 + 3 + 2 + 2 + 4 + 20, 20) + )::loopring.transfer_struct as transfer, + ( + bytea2numeric(substr(x.data, 2 + 4 + 4, 4), false), + bytea2numeric(substr(x.data, 2 + 4 + 4 + 4, 4), false), + bytea2numeric(substr(x.data, 2 + 4 + 4 + 4 + 4, 2), false), + bytea2numeric(substr(x.data, 2 + 4 + 4 + 4 + 4 + 2, 2), false), + loopring.fn_decode_float_24(substr(x.data, 2 + 4 + 4 + 4 + 4 + 2 + 2, 3))::double precision, + loopring.fn_decode_float_24(substr(x.data, 2 + 4 + 4 + 4 + 4 + 2 + 2 + 3, 3))::double precision + )::loopring.spot_trade_struct as spot_trade, + ( + substr(x.data, 2 + 1, 20), + bytea2numeric(substr(x.data, 2 + 1 + 20, 4), false), + bytea2numeric(substr(x.data, 2 + 1 + 20 + 4, 2), false), + loopring.fn_decode_float_16(substr(x.data, 2 + 1 + 20 + 4 + 2, 2))::double precision, + substr(x.data, 2 + 1 + 20 + 4 + 2 + 2, 32) + )::loopring.account_update_struct as account_update, + ( + substr(x.data, 2, 20), + bytea2numeric(substr(x.data, 2 + 20, 4), false), + bytea2numeric(substr(x.data, 2 + 20 + 4, 2), false), + get_byte(substr(x.data, 2 + 20 + 4 + 2, 1), 0), + bytea2numeric(substr(x.data, 2 + 20 + 4 + 2 + 1, 12), false)::double precision + )::loopring.amm_update_struct as amm_update, + ( + substr(x.data, 2, 20), + bytea2numeric(substr(x.data, 2 + 20, 4), false) + )::loopring.signature_verification_struct as signature_verification +FROM generate_series(0, blockSize - 1) i, LATERAL ( + SELECT (substr(_data, 99+i*29, 29) || substr(_data, 99+blockSize*29+i*39, 39)) AS data +) x; END; -$$ LANGUAGE PLPGSQL IMMUTABLE STRICT; \ No newline at end of file +$$ +LANGUAGE PLPGSQL +IMMUTABLE +STRICT +; \ No newline at end of file diff --git a/dune/abstractions/loopring/fn_process_trade_block_v1.sql b/dune/abstractions/loopring/fn_process_trade_block_v1.sql index 4c80882..d9baa37 100644 --- a/dune/abstractions/loopring/fn_process_trade_block_v1.sql +++ b/dune/abstractions/loopring/fn_process_trade_block_v1.sql @@ -2,41 +2,46 @@ DROP FUNCTION loopring.fn_process_trade_block_v1; DROP TYPE loopring.trade_struct; -CREATE TYPE loopring.trade_struct AS (block_timestamp timestamptz, - tokenA integer, fillA double precision, - tokenB integer, fillB double precision, - accountA integer, accountB integer, - protocolFeeTakerBips double precision, - protocolFeeMakerBips double precision); +CREATE TYPE loopring.trade_struct AS ( + block_timestamp timestamptz, + tokenA integer, + fillA double precision, + tokenB integer, + fillB double precision, + accountA integer, + accountB integer, + protocolFeeTakerBips double precision, + protocolFeeMakerBips double precision +); -CREATE OR REPLACE FUNCTION loopring - .fn_process_trade_block_v1 (blockSize integer, data bytea, - block_timestamp timestamptz) - RETURNS SETOF loopring.trade_struct AS $$ DECLARE offsetTokens integer; -offsetFills integer; -offsetAccounts integer; -protocolFeeTakerBips double precision; -protocolFeeMakerBips double precision; +CREATE OR REPLACE FUNCTION loopring.fn_process_trade_block_v1 (blockSize integer, data bytea, block_timestamp timestamptz) + RETURNS SETOF loopring.trade_struct + AS $$ +DECLARE + offsetTokens integer; + offsetFills integer; + offsetAccounts integer; + protocolFeeTakerBips double precision; + protocolFeeMakerBips double precision; BEGIN -offsetTokens = 111 + blockSize * 10; -offsetFills = 111 + blockSize * 12; -offsetAccounts = 111 + blockSize * 5; -protocolFeeTakerBips = get_byte (data, 73)::numeric / 100000; -protocolFeeMakerBips = get_byte (data, 74)::numeric / 100000; -RETURN query SELECT block_timestamp, - get_byte (substr (data, (offsetTokens + i * 2), 1), 0), - loopring.fn_decode_float_24 (substr (data, (offsetFills + i * 6), 3)), - get_byte (substr (data, (offsetTokens + i * 2) + 1, 1), 0), - loopring.fn_decode_float_24 (substr (data, (offsetFills + i * 6) + 3, 3)), - (get_byte (substr (data, offsetAccounts + i * 5, 5), 0) * 65536 - + get_byte (substr (data, offsetAccounts + i * 5, 5), 1) * 256 - + get_byte (substr (data, offsetAccounts + i * 5, 5), 2)) - / 16, - (get_byte (substr (data, offsetAccounts + i * 5, 5), 2) * 65536 - + get_byte (substr (data, offsetAccounts + i * 5, 5), 3) * 256 - + get_byte (substr (data, offsetAccounts + i * 5, 5), 4)) - & (1048576 - 1), - protocolFeeTakerBips, - protocolFeeMakerBips FROM generate_series (0, blockSize - 1) i; + offsetTokens = 111 + blockSize * 10; + offsetFills = 111 + blockSize * 12; + offsetAccounts = 111 + blockSize * 5; + protocolFeeTakerBips = get_byte(data, 73)::numeric / 100000; + protocolFeeMakerBips = get_byte(data, 74)::numeric / 100000; + RETURN query + SELECT + block_timestamp, + get_byte(substr(data, (offsetTokens + i * 2), 1), 0), + loopring.fn_decode_float_24(substr(data, (offsetFills + i * 6), 3)), + get_byte(substr(data, (offsetTokens + i * 2) + 1, 1), 0), + loopring.fn_decode_float_24(substr(data, (offsetFills + i * 6) + 3, 3)), + (get_byte(substr(data, offsetAccounts + i * 5, 5), 0) * 65536 + get_byte(substr(data, offsetAccounts + i * 5, 5), 1) * 256 + get_byte(substr(data, offsetAccounts + i * 5, 5), 2)) / 16, (get_byte(substr(data, offsetAccounts + i * 5, 5), 2) * 65536 + get_byte(substr(data, offsetAccounts + i * 5, 5), 3) * 256 + get_byte(substr(data, offsetAccounts + i * 5, 5), 4)) & (1048576 - 1), + protocolFeeTakerBips, + protocolFeeMakerBips + FROM + generate_series(0, blockSize - 1) i; END; -$$ LANGUAGE PLPGSQL; +$$ +LANGUAGE PLPGSQL; + diff --git a/dune/abstractions/makermcd/collateral_addresses.sql b/dune/abstractions/makermcd/collateral_addresses.sql index 352c5cc..c169f4e 100644 --- a/dune/abstractions/makermcd/collateral_addresses.sql +++ b/dune/abstractions/makermcd/collateral_addresses.sql @@ -1,53 +1,35 @@ ---Addresses are JOIN addresses from here https - : // changelog.makerdao.com/releases/mainnet/1.2.1/contracts.json - CREATE TABLE IF NOT EXISTS makermcd.collateral_addresses ( - address bytea, project text, token_address bytea, details text); +-- Addresses are JOIN addresses from here https://changelog.makerdao.com/releases/mainnet/1.2.1/contracts.json +CREATE TABLE IF NOT EXISTS makermcd.collateral_addresses ( + address bytea, + project text, + token_address bytea, + details text +); BEGIN; DELETE FROM makermcd.collateral_addresses *; -COPY makermcd.collateral_addresses (address, project, token_address, - details) FROM stdin; -\\x2f0b23f53734252bda2277357e97e1517d6b042a - MakerDAO \\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH A -\\x08638eF1A205bE6762A8b935F5da9b700Cf7322c - MakerDAO \\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH B -\\x3d0b1912b66114d4096f48a8cee3a56c231772ca - MakerDAO \\x0d8775f648430679a709e98d2b0cb6250d2887ef BAT -\\xA191e578a6736167326d05c119CE0c90849E84B7 - MakerDAO \\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC A -\\x2600004fd1585f7270756DDc88aD9cfA10dD0428 - MakerDAO \\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC B -\\x4454aF7C8bb9463203b66C816220D41ED7837f44 - MakerDAO \\x0000000000085d4780B73119b644AE5ecd22b376 TUSD -\\xc7e8Cd72BDEe38865b4F5615956eF47ce1a7e5D0 - MakerDAO \\xe41d2489571d322189246dafa5ebde1f4699f498 ZRX -\\x475F1a89C1ED844A08E8f6C50A00228b5E59E4A9 - MakerDAO \\xdd974d5c2e2928dea5f71b9825b8b646686bd200 KNC -\\xA6EA3b9C04b8a38Ff5e224E7c3D6937ca44C0ef9 MakerDAO \\x0f5d2fb29fb7d3cfee444a200298f468908cc942 - Mana -\\x0Ac6A1D74E84C2dF9063bDDc31699FF2a2BB22A2 MakerDAO \\xdac17f958d2ee523a2206206994597c13d831ec7 - USDT -\\x7e62B7E279DFC78DEB656E34D6a435cC08a44666 MakerDAO \\x8e870d67f660d95d5be530380d0ec0bd388289e1 - PAXUSD -\\xBEa7cDfB4b49EC154Ae1c0D731E4DC773A3265aA MakerDAO \\xc00e94cb662c3520282e6f5717214004a7f26888 - COMP -\\x6C186404A7A238D3d6027C0299D1822c1cf5d8f1 MakerDAO \\xbbbbca6a901c926f240b89eacb641d8aec7aeafd - LRC -\\xdFccAf8fDbD2F4805C174f856a317765B49E4a50 MakerDAO \\x514910771af9ca656af840dff83e8264ecf986ca - LINK -\\xBF72Da2Bd84c5170618Fbe5914B0ECA9638d5eb5 MakerDAO \\x2260fac5e5542a773aa44fbcfedf7c193bc2c599 - WBTC -\\x4a03Aa7fb3973d8f0221B466EefB53D0aC195f55 MakerDAO \\xba100000625a3754423978a60c9317c58a424e3d - BAL -\\x3ff33d9162aD47660083D7DC4bC02Fb231c81677 MakerDAO \\x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e - YFI -\\xe29A14bcDeA40d83675aa43B72dF07f649738C8b MakerDAO \\x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd - GUSD -\\x3BC3A58b4FC1CbE7e98bB4aB7c99535e8bA9b8F1 MakerDAO \\x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 - UNI -\\xFD5608515A47C37afbA68960c1916b79af9491D0 MakerDAO \\xEB4C2781e4ebA804CE9a9803C67d0893436bB27D - RENBTC +COPY makermcd.collateral_addresses(address, project, token_address, details) FROM stdin; +\\x2f0b23f53734252bda2277357e97e1517d6b042a MakerDAO \\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH A +\\x08638eF1A205bE6762A8b935F5da9b700Cf7322c MakerDAO \\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 WETH B +\\x3d0b1912b66114d4096f48a8cee3a56c231772ca MakerDAO \\x0d8775f648430679a709e98d2b0cb6250d2887ef BAT +\\xA191e578a6736167326d05c119CE0c90849E84B7 MakerDAO \\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC A +\\x2600004fd1585f7270756DDc88aD9cfA10dD0428 MakerDAO \\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 USDC B +\\x4454aF7C8bb9463203b66C816220D41ED7837f44 MakerDAO \\x0000000000085d4780B73119b644AE5ecd22b376 TUSD +\\xc7e8Cd72BDEe38865b4F5615956eF47ce1a7e5D0 MakerDAO \\xe41d2489571d322189246dafa5ebde1f4699f498 ZRX +\\x475F1a89C1ED844A08E8f6C50A00228b5E59E4A9 MakerDAO \\xdd974d5c2e2928dea5f71b9825b8b646686bd200 KNC +\\xA6EA3b9C04b8a38Ff5e224E7c3D6937ca44C0ef9 MakerDAO \\x0f5d2fb29fb7d3cfee444a200298f468908cc942 Mana +\\x0Ac6A1D74E84C2dF9063bDDc31699FF2a2BB22A2 MakerDAO \\xdac17f958d2ee523a2206206994597c13d831ec7 USDT +\\x7e62B7E279DFC78DEB656E34D6a435cC08a44666 MakerDAO \\x8e870d67f660d95d5be530380d0ec0bd388289e1 PAXUSD +\\xBEa7cDfB4b49EC154Ae1c0D731E4DC773A3265aA MakerDAO \\xc00e94cb662c3520282e6f5717214004a7f26888 COMP +\\x6C186404A7A238D3d6027C0299D1822c1cf5d8f1 MakerDAO \\xbbbbca6a901c926f240b89eacb641d8aec7aeafd LRC +\\xdFccAf8fDbD2F4805C174f856a317765B49E4a50 MakerDAO \\x514910771af9ca656af840dff83e8264ecf986ca LINK +\\xBF72Da2Bd84c5170618Fbe5914B0ECA9638d5eb5 MakerDAO \\x2260fac5e5542a773aa44fbcfedf7c193bc2c599 WBTC +\\x4a03Aa7fb3973d8f0221B466EefB53D0aC195f55 MakerDAO \\xba100000625a3754423978a60c9317c58a424e3d BAL +\\x3ff33d9162aD47660083D7DC4bC02Fb231c81677 MakerDAO \\x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e YFI +\\xe29A14bcDeA40d83675aa43B72dF07f649738C8b MakerDAO \\x056Fd409E1d7A124BD7017459dFEa2F387b6d5Cd GUSD +\\x3BC3A58b4FC1CbE7e98bB4aB7c99535e8bA9b8F1 MakerDAO \\x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 UNI +\\xFD5608515A47C37afbA68960c1916b79af9491D0 MakerDAO \\xEB4C2781e4ebA804CE9a9803C67d0893436bB27D RENBTC \. - COMMIT; +COMMIT; diff --git a/dune/abstractions/oneinch/swaps.sql b/dune/abstractions/oneinch/swaps.sql index ced0340..1890f6c 100644 --- a/dune/abstractions/oneinch/swaps.sql +++ b/dune/abstractions/oneinch/swaps.sql @@ -1,200 +1,212 @@ -CREATE TABLE oneinch.swaps (tx_from bytea, tx_to bytea, from_token bytea, - to_token bytea, from_amount numeric, - to_amount numeric, from_usd numeric, - to_usd numeric, tx_hash bytea, - block_time timestamptz NOT NULL, - contract_address bytea, evt_index integer, - trace_address integer[]); +CREATE TABLE oneinch.swaps ( + tx_from bytea, + tx_to bytea, + from_token bytea, + to_token bytea, + from_amount numeric, + to_amount numeric, + from_usd numeric, + to_usd numeric, + tx_hash bytea, + block_time timestamptz NOT NULL, + contract_address bytea, + evt_index integer, + trace_address integer[] +); -CREATE OR REPLACE FUNCTION oneinch.insert_swap ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION oneinch.insert_swap(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH swap -AS (SELECT tx."from" AS tx_from, tx."to" AS tx_to, from_token, to_token, - from_amount, to_amount, tx_hash, tmp.evt_index, tmp.block_time, - tmp.contract_address, tmp.trace_address, - from_amount *( - CASE WHEN from_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN from_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = from_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1 - .decimals END) END) as from_usd, - to_amount *( - CASE WHEN to_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN to_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = to_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t2.decimals IS NULL - WHEN true THEN 18 else t2.decimals END) END) - as to_usd FROM ( - SELECT "fromToken" as from_token, "toToken" as to_token, - "tokensAmount" as from_amount, "minTokensAmount" as to_amount, - call_tx_hash as tx_hash, call_block_time as block_time, - call_trace_address as trace_address, NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v1_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "tokensAmount" as from_amount, - "minTokensAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v2_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "tokensAmount" as from_amount, - "minTokensAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v3_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "tokensAmount" as from_amount, - "minTokensAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v4_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "tokensAmount" as from_amount, - "minTokensAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v5_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "tokensAmount" as from_amount, - "minTokensAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v6_call_aggregate" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "fromTokenAmount" as from_amount, - "minReturnAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."exchange_v7_call_swap" WHERE - call_success UNION ALL SELECT "fromToken" as from_token, - "toToken" as to_token, "fromTokenAmount" as from_amount, - "minReturnAmount" as to_amount, call_tx_hash as tx_hash, - call_block_time as block_time, call_trace_address as trace_address, - NULL::integer as evt_index, - contract_address FROM oneinch."OneInchExchange_call_swap" WHERE - call_success UNION ALL SELECT "srcToken" as from_token, - "dstToken" as to_token, "spentAmount" as from_amount, - "returnAmount" as to_amount, evt_tx_hash as tx_hash, - evt_block_time as block_time, - NULL::integer[] as call_trace_address, evt_index, - contract_address FROM - oneinch_v2."OneInchExchange_evt_Swapped" UNION ALL SELECT - "srcToken" as from_token, - "dstToken" as to_token, "spentAmount" as from_amount, - "returnAmount" as to_amount, evt_tx_hash as tx_hash, - evt_block_time as block_time, - NULL::integer[] as call_trace_address, evt_index, - contract_address FROM oneinch_v3."AggregationRouterV3_evt_Swapped") - tmp INNER JOIN ethereum.transactions tx ON tx.hash - = tx_hash LEFT JOIN erc20.tokens t1 ON t1.contract_address - = from_token LEFT JOIN erc20.tokens t2 ON t2.contract_address - = to_token WHERE tmp.block_time >= start_ts AND tmp.block_time < end_ts), - rows - AS (INSERT INTO oneinch.swaps (tx_from, tx_to, from_token, to_token, - from_amount, to_amount, from_usd, to_usd, - tx_hash, block_time, contract_address, - evt_index, trace_address) SELECT tx_from, - tx_to, from_token, to_token, from_amount, to_amount, from_usd, to_usd, - tx_hash, block_time, contract_address, evt_index, - trace_address FROM swap ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH swap AS ( + SELECT tx."from" AS tx_from, + tx."to" AS tx_to, + from_token, + to_token, + from_amount, + to_amount, + tx_hash, + tmp.evt_index, + tmp.block_time, + tmp.contract_address, + tmp.trace_address, + from_amount * ( + CASE + WHEN from_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN from_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = from_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1.decimals END) + END + ) as from_usd, + to_amount * ( + CASE + WHEN to_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN to_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = to_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t2.decimals IS NULL WHEN true THEN 18 else t2.decimals END) + END + ) as to_usd + FROM ( + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v1_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v2_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v3_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v4_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v5_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "tokensAmount" as from_amount, "minTokensAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v6_call_aggregate" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "fromTokenAmount" as from_amount, "minReturnAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."exchange_v7_call_swap" WHERE call_success UNION ALL + SELECT "fromToken" as from_token, "toToken" as to_token, "fromTokenAmount" as from_amount, "minReturnAmount" as to_amount, call_tx_hash as tx_hash, call_block_time as block_time, call_trace_address as trace_address, NULL::integer as evt_index, contract_address FROM oneinch."OneInchExchange_call_swap" WHERE call_success UNION ALL + SELECT "srcToken" as from_token, "dstToken" as to_token, "spentAmount" as from_amount, "returnAmount" as to_amount, evt_tx_hash as tx_hash, evt_block_time as block_time, NULL::integer[] as call_trace_address, evt_index, contract_address FROM oneinch_v2."OneInchExchange_evt_Swapped" UNION ALL + SELECT "srcToken" as from_token, "dstToken" as to_token, "spentAmount" as from_amount, "returnAmount" as to_amount, evt_tx_hash as tx_hash, evt_block_time as block_time, NULL::integer[] as call_trace_address, evt_index, contract_address FROM oneinch_v3."AggregationRouterV3_evt_Swapped" + ) tmp + INNER JOIN ethereum.transactions tx ON tx.hash = tx_hash + LEFT JOIN erc20.tokens t1 ON t1.contract_address = from_token + LEFT JOIN erc20.tokens t2 ON t2.contract_address = to_token + WHERE tmp.block_time >= start_ts + AND tmp.block_time < end_ts +), +rows AS ( + INSERT INTO oneinch.swaps ( + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + block_time, + contract_address, + evt_index, + trace_address + ) + SELECT + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + block_time, + contract_address, + evt_index, + trace_address + FROM swap + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS oneinch_sswaps_unique_trace_address_idx ON - oneinch.swaps (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS oneinch_sswaps_unique_evt_index_idx ON - oneinch.swaps (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS oneinch_swaps_idx ON oneinch.swaps - USING BRIN (block_time); -CREATE - INDEX IF NOT EXISTS oneinch_swaps_idx_tx_from ON oneinch.swaps (tx_from); +CREATE UNIQUE INDEX IF NOT EXISTS oneinch_sswaps_unique_trace_address_idx ON oneinch.swaps (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS oneinch_sswaps_unique_evt_index_idx ON oneinch.swaps (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS oneinch_swaps_idx ON oneinch.swaps USING BRIN (block_time); +CREATE INDEX IF NOT EXISTS oneinch_swaps_idx_tx_from ON oneinch.swaps (tx_from); ---backfill SELECT oneinch.insert_swap ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM oneinch.swaps LIMIT 1); +-- backfill +SELECT oneinch.insert_swap('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM oneinch.swaps LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/15 * * * *', - $$SELECT oneinch.insert_swap ( - (SELECT max (block_time) - interval '2 days' FROM oneinch.swaps), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM oneinch.swaps)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/15 * * * *', $$SELECT oneinch.insert_swap((SELECT max(block_time) - interval '2 days' FROM oneinch.swaps), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM oneinch.swaps)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/oneproto/swaps.sql b/dune/abstractions/oneproto/swaps.sql index b62f317..49ae15f 100644 --- a/dune/abstractions/oneproto/swaps.sql +++ b/dune/abstractions/oneproto/swaps.sql @@ -1,142 +1,206 @@ -CREATE TABLE oneproto.swaps (tx_from bytea, tx_to bytea, from_token bytea, - to_token bytea, from_amount numeric, - to_amount numeric, from_usd numeric, - to_usd numeric, tx_hash bytea, - block_time timestamptz NOT NULL, - contract_address bytea, evt_index integer); +CREATE TABLE oneproto.swaps ( + tx_from bytea, + tx_to bytea, + from_token bytea, + to_token bytea, + from_amount numeric, + to_amount numeric, + from_usd numeric, + to_usd numeric, + tx_hash bytea, + block_time timestamptz NOT NULL, + contract_address bytea, + evt_index integer +); -CREATE OR REPLACE FUNCTION oneproto.insert_swap ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION oneproto.insert_swap(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH swap -AS (SELECT tx."from" AS tx_from, tx."to" AS tx_to, from_token, to_token, - from_amount, to_amount, tx_hash, tmp.evt_index, tmp.block_time, - tmp.contract_address, - from_amount *( - CASE WHEN from_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN from_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = from_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1 - .decimals END) END) as from_usd, - to_amount *( - CASE WHEN to_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN to_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = to_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t2.decimals IS NULL - WHEN true THEN 18 else t2.decimals END) END) - as to_usd FROM (SELECT "fromToken" as from_token, - "destToken" as to_token, - "fromTokenAmount" as from_amount, - "destTokenAmount" as to_amount, evt_tx_hash as tx_hash, - evt_block_time as block_time, contract_address, - evt_index FROM oneproto."OneSplitAudit_evt_Swapped") - tmp INNER JOIN ethereum.transactions tx ON tx.hash - = tx_hash LEFT JOIN erc20.tokens t1 ON t1.contract_address - = from_token LEFT JOIN erc20.tokens t2 ON t2.contract_address - = to_token WHERE tmp.block_time >= start_ts AND tmp.block_time < end_ts), - rows - AS (INSERT INTO oneproto.swaps (tx_from, tx_to, from_token, to_token, - from_amount, to_amount, from_usd, to_usd, - tx_hash, block_time, contract_address, - evt_index) SELECT tx_from, - tx_to, from_token, to_token, from_amount, to_amount, from_usd, to_usd, - tx_hash, block_time, contract_address, - evt_index FROM swap ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH swap AS ( + SELECT tx."from" AS tx_from, + tx."to" AS tx_to, + from_token, + to_token, + from_amount, + to_amount, + tx_hash, + tmp.evt_index, + tmp.block_time, + tmp.contract_address, + from_amount * ( + CASE + WHEN from_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN from_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = from_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1.decimals END) + END + ) as from_usd, + to_amount * ( + CASE + WHEN to_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN to_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = to_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t2.decimals IS NULL WHEN true THEN 18 else t2.decimals END) + END + ) as to_usd + FROM ( + SELECT "fromToken" as from_token, + "destToken" as to_token, + "fromTokenAmount" as from_amount, + "destTokenAmount" as to_amount, + evt_tx_hash as tx_hash, + evt_block_time as block_time, + contract_address, + evt_index + FROM oneproto."OneSplitAudit_evt_Swapped" + ) tmp + INNER JOIN ethereum.transactions tx ON tx.hash = tx_hash + LEFT JOIN erc20.tokens t1 ON t1.contract_address = from_token + LEFT JOIN erc20.tokens t2 ON t2.contract_address = to_token + WHERE tmp.block_time >= start_ts + AND tmp.block_time < end_ts +), +rows AS ( + INSERT INTO oneproto.swaps ( + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + block_time, + contract_address, + evt_index + ) + SELECT + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + block_time, + contract_address, + evt_index + FROM swap + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS oneproto_swaps_unique_idx_1 ON - oneproto.swaps (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS oneproto_swaps_idx_1 ON oneproto.swaps - USING BRIN (block_time); -CREATE - INDEX IF NOT EXISTS oneproto_swaps_idx_tx_from ON oneproto.swaps (tx_from); +CREATE UNIQUE INDEX IF NOT EXISTS oneproto_swaps_unique_idx_1 ON oneproto.swaps (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS oneproto_swaps_idx_1 ON oneproto.swaps USING BRIN (block_time); +CREATE INDEX IF NOT EXISTS oneproto_swaps_idx_tx_from ON oneproto.swaps (tx_from); ---backfill SELECT oneproto.insert_swap ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM oneproto.swaps LIMIT 1); +-- backfill +SELECT oneproto.insert_swap('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM oneproto.swaps LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/17 * * * *', - $$SELECT oneproto.insert_swap ( - (SELECT max (block_time) - interval '2 days' FROM oneproto.swaps), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM oneproto.swaps)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/17 * * * *', $$SELECT oneproto.insert_swap((SELECT max(block_time) - interval '2 days' FROM oneproto.swaps), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM oneproto.swaps)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/onesplit/swaps.sql b/dune/abstractions/onesplit/swaps.sql index c061e7b..68a7468 100644 --- a/dune/abstractions/onesplit/swaps.sql +++ b/dune/abstractions/onesplit/swaps.sql @@ -1,149 +1,218 @@ -CREATE TABLE onesplit.swaps (tx_from bytea, tx_to bytea, from_token bytea, - to_token bytea, from_amount numeric, - to_amount numeric, from_usd numeric, - to_usd numeric, tx_hash bytea, - trace_address integer[], - block_time timestamptz NOT NULL, - contract_address bytea); +CREATE TABLE onesplit.swaps ( + tx_from bytea, + tx_to bytea, + from_token bytea, + to_token bytea, + from_amount numeric, + to_amount numeric, + from_usd numeric, + to_usd numeric, + tx_hash bytea, + trace_address integer[], + block_time timestamptz NOT NULL, + contract_address bytea +); -CREATE OR REPLACE FUNCTION onesplit.insert_swap ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION onesplit.insert_swap(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH swap -AS (SELECT tx."from" AS tx_from, tx."to" AS tx_to, from_token, to_token, - from_amount, to_amount, tx_hash, tmp.call_trace_address AS trace_address, - tmp.block_time, tmp.contract_address, - from_amount *( - CASE WHEN from_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN from_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN from_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = from_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1 - .decimals END) END) as from_usd, - to_amount *( - CASE WHEN to_token IN ( - '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', - --ETH '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', - --WETH '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', - --sETH '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', - --aETH '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' --BETH) - THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'ETH' AND p.minute = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token IN ('\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', - --renBTC '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' --WBTC) - THEN (SELECT p.price - / 1e8 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND - p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' --sBTC) THEN ( - SELECT p.price / 1e18 FROM prices.layer1_usd p WHERE p.symbol - = 'BTC' AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) WHEN to_token - IN ('\xdac17f958d2ee523a2206206994597c13d831ec7', - --USDT (6) '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' --USDC ( - 6)) THEN (1 / 1e6) WHEN to_token - IN ('\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', - --SAI '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI '\x0000000000085d4780B73119b644AE5ecd22b376', - --TUSD '\x309627af60f0926daa6041b8279484312f2bf060', - --USDB '\x8E870D67F660D95d5be530380D0eC0bd388289E1', - --PAX '\x57ab1e02fee23774580c119740129eac7081e9d3', - --sUSD 1 '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' --sUSD 2) - THEN (1 / 1e18) ELSE ( - SELECT p.price FROM prices."usd" p WHERE - p.contract_address - = to_token AND p.minute - = date_trunc ('minute', tmp.block_time) - LIMIT 1) - / POWER (10, CASE t2.decimals IS NULL - WHEN true THEN 18 else t2.decimals END) END) - as to_usd FROM (SELECT "fromToken" AS from_token, - "toToken" AS to_token, "amount" AS from_amount, - "minReturn" AS to_amount, call_tx_hash AS tx_hash, - call_trace_address, call_block_time AS block_time, - contract_address FROM - onesplit."OneSplit_call_swap" WHERE call_success - UNION ALL SELECT "fromToken" AS from_token, - "toToken" AS to_token, "amount" AS from_amount, - "minReturn" AS to_amount, call_tx_hash AS tx_hash, - call_trace_address, call_block_time AS block_time, - contract_address FROM onesplit - ."OneSplit_call_goodSwap" WHERE call_success) - tmp INNER JOIN ethereum.transactions tx ON tx.hash - = tx_hash LEFT JOIN erc20.tokens t1 ON t1.contract_address - = from_token LEFT JOIN erc20.tokens t2 ON t2.contract_address - = to_token WHERE tmp.block_time >= start_ts AND tmp.block_time < end_ts), - rows - AS (INSERT INTO onesplit.swaps (tx_from, tx_to, from_token, to_token, - from_amount, to_amount, from_usd, to_usd, - tx_hash, trace_address, block_time, - contract_address) SELECT tx_from, - tx_to, from_token, to_token, from_amount, to_amount, from_usd, to_usd, - tx_hash, trace_address, block_time, - contract_address FROM swap ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH swap AS ( + SELECT tx."from" AS tx_from, + tx."to" AS tx_to, + from_token, + to_token, + from_amount, + to_amount, + tx_hash, + tmp.call_trace_address AS trace_address, + tmp.block_time, + tmp.contract_address, + from_amount * ( + CASE + WHEN from_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN from_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN from_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = from_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t1.decimals IS NULL WHEN true THEN 18 else t1.decimals END) + END + ) as from_usd, + to_amount * ( + CASE + WHEN to_token IN ( + '\xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', -- ETH + '\xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', -- WETH + '\x5e74c9036fb86bd7ecdcb084a0673efc32ea31cb', -- sETH + '\x3a3a65aab0dd2a17e3f1947ba16138cd37d08c04', -- aETH + '\xc0829421c1d260bd3cb3e0f06cfe2d52db2ce315' -- BETH + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'ETH' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xeb4c2781e4eba804ce9a9803c67d0893436bb27d', -- renBTC + '\x2260fac5e5542a773aa44fbcfedf7c193bc2c599' -- WBTC + ) THEN ( + SELECT p.price/1e8 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xfe18be6b3bd88a2d2a7f928d00292e7a9963cfc6' -- sBTC + ) THEN ( + SELECT p.price/1e18 + FROM prices.layer1_usd p + WHERE p.symbol = 'BTC' + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) + WHEN to_token IN ( + '\xdac17f958d2ee523a2206206994597c13d831ec7', -- USDT (6) + '\xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -- USDC (6) + ) THEN (1/1e6) + WHEN to_token IN ( + '\x89d24a6b4ccb1b6faa2625fe562bdd9a23260359', -- SAI + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + '\x0000000000085d4780B73119b644AE5ecd22b376', -- TUSD + '\x309627af60f0926daa6041b8279484312f2bf060', -- USDB + '\x8E870D67F660D95d5be530380D0eC0bd388289E1', -- PAX + '\x57ab1e02fee23774580c119740129eac7081e9d3', -- sUSD 1 + '\x57Ab1ec28D129707052df4dF418D58a2D46d5f51' -- sUSD 2 + ) THEN (1/1e18) + ELSE ( + SELECT p.price + FROM prices."usd" p + WHERE p.contract_address = to_token + AND p.minute = date_trunc('minute', tmp.block_time) + LIMIT 1 + ) / POWER(10, CASE t2.decimals IS NULL WHEN true THEN 18 else t2.decimals END) + END + ) as to_usd +FROM ( + SELECT "fromToken" AS from_token, + "toToken" AS to_token, + "amount" AS from_amount, + "minReturn" AS to_amount, + call_tx_hash AS tx_hash, + call_trace_address, + call_block_time AS block_time, + contract_address + FROM onesplit."OneSplit_call_swap" + WHERE call_success + UNION ALL + SELECT "fromToken" AS from_token, + "toToken" AS to_token, + "amount" AS from_amount, + "minReturn" AS to_amount, + call_tx_hash AS tx_hash, + call_trace_address, + call_block_time AS block_time, + contract_address + FROM onesplit."OneSplit_call_goodSwap" + WHERE call_success +) tmp +INNER JOIN ethereum.transactions tx ON tx.hash = tx_hash +LEFT JOIN erc20.tokens t1 ON t1.contract_address = from_token +LEFT JOIN erc20.tokens t2 ON t2.contract_address = to_token +WHERE tmp.block_time >= start_ts + AND tmp.block_time < end_ts +), +rows AS ( + INSERT INTO onesplit.swaps ( + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + trace_address, + block_time, + contract_address + ) + SELECT + tx_from, + tx_to, + from_token, + to_token, + from_amount, + to_amount, + from_usd, + to_usd, + tx_hash, + trace_address, + block_time, + contract_address + FROM swap + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS oonesplit_swaps_unique_idx ON - onesplit.swaps (tx_hash, trace_address); -CREATE INDEX IF NOT EXISTS onesplit_swaps_idx ON onesplit.swaps - USING BRIN (block_time); -CREATE - INDEX IF NOT EXISTS onesplit_swaps_idx_tx_from ON onesplit.swaps (tx_from); +CREATE UNIQUE INDEX IF NOT EXISTS oonesplit_swaps_unique_idx ON onesplit.swaps (tx_hash, trace_address); +CREATE INDEX IF NOT EXISTS onesplit_swaps_idx ON onesplit.swaps USING BRIN (block_time); +CREATE INDEX IF NOT EXISTS onesplit_swaps_idx_tx_from ON onesplit.swaps (tx_from); ---backfill SELECT onesplit.insert_swap ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM onesplit.swaps LIMIT 1); +--backfill +SELECT onesplit.insert_swap('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM onesplit.swaps LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/14 * * * *', - $$SELECT onesplit.insert_swap ( - (SELECT max (block_time) - interval '2 days' FROM onesplit.swaps), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM onesplit.swaps)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/14 * * * *', $$SELECT onesplit.insert_swap((SELECT max(block_time) - interval '2 days' FROM onesplit.swaps), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM onesplit.swaps)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/public/bytea2numeric.sql b/dune/abstractions/public/bytea2numeric.sql index 969bfb3..4966658 100644 --- a/dune/abstractions/public/bytea2numeric.sql +++ b/dune/abstractions/public/bytea2numeric.sql @@ -1,6 +1,6 @@ -DROP FUNCTION bytea2numeric (bytea, boolean, text); -CREATE FUNCTION bytea2numeric (a bytea, signed boolean = true, - byteorder text = 'big') RETURNS numeric AS $$ - return int.from_bytes (a, byteorder = byteorder, - signed - = signed) $$ LANGUAGE plpython3u IMMUTABLE STRICT; +DROP FUNCTION bytea2numeric(bytea, boolean, text); +CREATE FUNCTION bytea2numeric(a bytea, signed boolean = true, byteorder text = 'big') + RETURNS numeric +AS $$ + return int.from_bytes(a, byteorder=byteorder, signed=signed) +$$ LANGUAGE plpython3u IMMUTABLE STRICT; diff --git a/dune/abstractions/public/numeric2bytea.sql b/dune/abstractions/public/numeric2bytea.sql index 50e80d5..d3ad8e9 100644 --- a/dune/abstractions/public/numeric2bytea.sql +++ b/dune/abstractions/public/numeric2bytea.sql @@ -1,7 +1,6 @@ -DROP FUNCTION numeric2bytea (numeric, integer, boolean, text); -CREATE FUNCTION numeric2bytea (a numeric, _length integer = 32, - signed boolean = true, - byteorder text = 'big') RETURNS bytea AS $$ - return int (a) - .to_bytes (_length, byteorder = byteorder, - signed = signed) $$ LANGUAGE plpython3u IMMUTABLE STRICT; +DROP FUNCTION numeric2bytea(numeric, integer, boolean, text); +CREATE FUNCTION numeric2bytea (a numeric, _length integer = 32, signed boolean = true, byteorder text = 'big') + RETURNS bytea +AS $$ + return int(a).to_bytes(_length, byteorder=byteorder, signed=signed) +$$ LANGUAGE plpython3u IMMUTABLE STRICT; diff --git a/dune/abstractions/stablecoin/burn.sql b/dune/abstractions/stablecoin/burn.sql index 2bf5a58..b978bfc 100644 --- a/dune/abstractions/stablecoin/burn.sql +++ b/dune/abstractions/stablecoin/burn.sql @@ -1,78 +1,124 @@ -CREATE TABLE stablecoin.burn (burner bytea, amount numeric, symbol text, - block_time timestamptz NOT NULL, - "name" text NOT NULL, token_address bytea, - to_address bytea, amount_raw numeric, - decimals numeric, tx_hash bytea, - evt_index integer, trace_address integer[]); +CREATE TABLE stablecoin.burn ( + burner bytea, + amount numeric, + symbol text, + block_time timestamptz NOT NULL, + "name" text NOT NULL, + token_address bytea, + to_address bytea, + amount_raw numeric, + decimals numeric, + tx_hash bytea, + evt_index integer, + trace_address integer[] +); -CREATE OR REPLACE FUNCTION stablecoin.insert_burn ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION stablecoin.insert_burn(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN WITH burn AS ( - SELECT "name", evt_block_time AS block_time, evt_tx_hash AS tx_hash, - "to" AS to_address, "from" AS burner, st.contract_address AS token_address, - st.symbol AS symbol, st.decimals, value / 10 ^ st.decimals AS amount, - value AS amount_raw, evt_index, - trace_address FROM ( - SELECT evt_block_time, evt_tx_hash, "from", --burner "to", - contract_address, value, evt_index, - NULL::integer[] as trace_address FROM - erc20."ERC20_evt_Transfer" evt WHERE "to" - = '\x0000000000000000000000000000000000000000' - + SELECT "name", + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + "to" AS to_address, + "from" AS burner, + st.contract_address AS token_address, + st.symbol AS symbol, + st.decimals, + value / 10^st.decimals AS amount, + value AS amount_raw, + evt_index, + trace_address + FROM ( + SELECT evt_block_time, + evt_tx_hash, + "from", -- burner + "to", + contract_address, + value, + evt_index, + NULL::integer[] as trace_address + FROM erc20."ERC20_evt_Transfer" evt + WHERE "to" = '\x0000000000000000000000000000000000000000' + UNION ALL + + -- USDT + SELECT evt_block_time, + evt_tx_hash, + "from", -- burner + "to", -- USDT + contract_address, + value, + evt_index, + NULL::integer[] + FROM erc20."ERC20_evt_Transfer" + WHERE contract_address = '\xdac17f958d2ee523a2206206994597c13d831ec7' + AND "to" = '\xc6cde7c39eb2f0f0095f41570af89efc2c1ea828' -- USDT - -- USDT SELECT evt_block_time, - evt_tx_hash, "from", --burner "to", --USDT contract_address, value, - evt_index, - NULL::integer[] FROM erc20."ERC20_evt_Transfer" WHERE contract_address - = '\xdac17f958d2ee523a2206206994597c13d831ec7' AND "to" - = '\xc6cde7c39eb2f0f0095f41570af89efc2c1ea828' --USDT - - UNION ALL + UNION ALL - -- DSR Dai SELECT call_block_time, - call_tx_hash, "src", --from "dst", - '\x6b175474e89094c44da98b954eedeac495271d0f', --DAI "rad" / 1e27, - NULL::integer, - call_trace_address FROM makermcd."VAT_call_move" maker WHERE - call_success - = 'true' AND src = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7') - burns INNER JOIN erc20.stablecoins st ON st.contract_address - = burns.contract_address WHERE burns.evt_block_time - >= start_ts AND burns.evt_block_time < end_ts), - rows - AS (INSERT INTO stablecoin.burn ("name", block_time, tx_hash, burner, - to_address, token_address, symbol, - decimals, amount, amount_raw, evt_index, - trace_address) SELECT "name", - block_time, tx_hash, burner, to_address, token_address, symbol, - decimals, amount, amount_raw, evt_index, - trace_address FROM burn ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; + -- DSR Dai + SELECT call_block_time, + call_tx_hash, + "src", -- from + "dst", + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + "rad" / 1e27, + NULL::integer, + call_trace_address + FROM makermcd."VAT_call_move" maker + WHERE call_success = 'true' + AND src = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + ) burns + INNER JOIN erc20.stablecoins st + ON st.contract_address = burns.contract_address + WHERE burns.evt_block_time >= start_ts + AND burns.evt_block_time < end_ts +), +rows AS ( + INSERT INTO stablecoin.burn ( + "name", + block_time, + tx_hash, + burner, + to_address, + token_address, + symbol, + decimals, + amount, + amount_raw, + evt_index, + trace_address + ) + SELECT + "name", + block_time, + tx_hash, + burner, + to_address, + token_address, + symbol, + decimals, + amount, + amount_raw, + evt_index, + trace_address + FROM burn + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_burn_tr_addr_uniq_idx ON - stablecoin.burn (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_burn_evt_index_uniq_idx ON - stablecoin.burn (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS stablecoin_burn_block_time_idx ON stablecoin.burn - USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_burn_tr_addr_uniq_idx ON stablecoin.burn (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_burn_evt_index_uniq_idx ON stablecoin.burn (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS stablecoin_burn_block_time_idx ON stablecoin.burn USING BRIN (block_time); -SELECT stablecoin.insert_burn ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM stablecoin.burn LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '14 1 * * *', - $$SELECT stablecoin.insert_burn ( - (SELECT max (block_time) - interval '2 days' FROM stablecoin.burn), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM stablecoin.burn)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +SELECT stablecoin.insert_burn('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM stablecoin.burn LIMIT 1); +INSERT INTO cron.job (schedule, command) +VALUES ('14 1 * * *', $$SELECT stablecoin.insert_burn((SELECT max(block_time) - interval '2 days' FROM stablecoin.burn), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM stablecoin.burn)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/stablecoin/mint.sql b/dune/abstractions/stablecoin/mint.sql index 24e63c2..403718e 100644 --- a/dune/abstractions/stablecoin/mint.sql +++ b/dune/abstractions/stablecoin/mint.sql @@ -1,78 +1,125 @@ -CREATE TABLE stablecoin.mint (minter bytea, amount numeric, symbol text, - block_time timestamptz NOT NULL, - "name" text NOT NULL, token_address bytea, - from_address bytea, amount_raw numeric, - decimals numeric, tx_hash bytea, - evt_index integer, trace_address integer[]); +CREATE TABLE stablecoin.mint ( + minter bytea, + amount numeric, + symbol text, + block_time timestamptz NOT NULL, + "name" text NOT NULL, + token_address bytea, + from_address bytea, + amount_raw numeric, + decimals numeric, + tx_hash bytea, + evt_index integer, + trace_address integer[] +); -CREATE OR REPLACE FUNCTION stablecoin.insert_mint ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION stablecoin.insert_mint(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN WITH mint AS ( - SELECT "name", evt_block_time AS block_time, evt_tx_hash AS tx_hash, - "to" AS minter, "from" AS from_address, - st.contract_address AS token_address, st.symbol AS symbol, st.decimals, - value / 10 ^ st.decimals AS amount, value AS amount_raw, evt_index, - trace_address FROM ( - --all stablecoins that mint from \x0000....SELECT evt_block_time, - evt_tx_hash, "to", --minter "from", contract_address, value, evt_index, - NULL::integer[] as trace_address FROM - erc20."ERC20_evt_Transfer" evt WHERE "from" - = '\x0000000000000000000000000000000000000000' - + SELECT "name", + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + "to" AS minter, + "from" AS from_address, + st.contract_address AS token_address, + st.symbol AS symbol, + st.decimals, + value / 10^st.decimals AS amount, + value AS amount_raw, + evt_index, + trace_address + FROM ( + -- all stablecoins that mint from \x0000.... + SELECT evt_block_time, + evt_tx_hash, + "to", -- minter + "from", + contract_address, + value, + evt_index, + NULL::integer[] as trace_address + FROM erc20."ERC20_evt_Transfer" evt + WHERE "from" = '\x0000000000000000000000000000000000000000' + UNION ALL + + -- USDT + SELECT evt_block_time, + evt_tx_hash, + "to", -- minter + "from", -- USDT + contract_address, + value, + evt_index, + NULL::integer[] + FROM erc20."ERC20_evt_Transfer" + WHERE contract_address = '\xdac17f958d2ee523a2206206994597c13d831ec7' + AND "from" = '\xc6cde7c39eb2f0f0095f41570af89efc2c1ea828' -- USDT - -- USDT SELECT evt_block_time, - evt_tx_hash, "to", --minter "from", --USDT contract_address, value, - evt_index, - NULL::integer[] FROM erc20."ERC20_evt_Transfer" WHERE contract_address - = '\xdac17f958d2ee523a2206206994597c13d831ec7' AND "from" - = '\xc6cde7c39eb2f0f0095f41570af89efc2c1ea828' --USDT - - UNION ALL + UNION ALL - -- DSR Dai SELECT call_block_time, - call_tx_hash, "src", "dst", - --from '\x6b175474e89094c44da98b954eedeac495271d0f', - --DAI "rad" / 1e27, NULL::integer, - call_trace_address FROM makermcd."VAT_call_move" maker WHERE - call_success - = 'true' AND dst = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7') - mints INNER JOIN erc20.stablecoins st ON st.contract_address - = mints.contract_address WHERE mints.evt_block_time - >= start_ts AND mints.evt_block_time < end_ts), - rows - AS (INSERT INTO stablecoin.mint ("name", block_time, tx_hash, minter, - from_address, token_address, symbol, - decimals, amount, amount_raw, evt_index, - trace_address) SELECT "name", - block_time, tx_hash, minter, from_address, token_address, symbol, - decimals, amount, amount_raw, evt_index, - trace_address FROM mint ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; + -- DSR Dai + SELECT call_block_time, + call_tx_hash, + "src", + "dst", -- from + '\x6b175474e89094c44da98b954eedeac495271d0f', -- DAI + "rad" / 1e27, + NULL::integer, + call_trace_address + FROM makermcd."VAT_call_move" maker + WHERE call_success = 'true' + AND dst = '\x197e90f9fad81970ba7976f33cbd77088e5d7cf7' + ) mints + INNER JOIN erc20.stablecoins st + ON st.contract_address = mints.contract_address + WHERE mints.evt_block_time >= start_ts + AND mints.evt_block_time < end_ts +), +rows AS ( + INSERT INTO stablecoin.mint ( + "name", + block_time, + tx_hash, + minter, + from_address, + token_address, + symbol, + decimals, + amount, + amount_raw, + evt_index, + trace_address + ) + SELECT + "name", + block_time, + tx_hash, + minter, + from_address, + token_address, + symbol, + decimals, + amount, + amount_raw, + evt_index, + trace_address + FROM mint + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_mint_tr_addr_uniq_idx ON - stablecoin.mint (tx_hash, trace_address); -CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_mint_evt_index_uniq_idx ON - stablecoin.mint (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS stablecoin_mint_block_time_idx ON stablecoin.mint - USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_mint_tr_addr_uniq_idx ON stablecoin.mint (tx_hash, trace_address); +CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_mint_evt_index_uniq_idx ON stablecoin.mint (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS stablecoin_mint_block_time_idx ON stablecoin.mint USING BRIN (block_time); -SELECT stablecoin.insert_mint ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM stablecoin.mint LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '14 1 * * *', - $$SELECT stablecoin.insert_mint ( - (SELECT max (block_time) - interval '2 days' FROM stablecoin.mint), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - interval '2 days' FROM stablecoin.mint)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +SELECT stablecoin.insert_mint('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM stablecoin.mint LIMIT 1); +INSERT INTO cron.job (schedule, command) +VALUES ('14 1 * * *', $$SELECT stablecoin.insert_mint((SELECT max(block_time) - interval '2 days' FROM stablecoin.mint), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM stablecoin.mint)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/stablecoin/transfer.sql b/dune/abstractions/stablecoin/transfer.sql index 27e3500..a1bde4f 100644 --- a/dune/abstractions/stablecoin/transfer.sql +++ b/dune/abstractions/stablecoin/transfer.sql @@ -1,52 +1,77 @@ -CREATE TABLE stablecoin.transfer ("from" bytea, "to" bytea, - coin_name text NOT NULL, symbol text, - decimals numeric, contract_address bytea, - amount numeric, amount_raw numeric, - block_time timestamptz NOT NULL, - tx_hash bytea, evt_index integer); +CREATE TABLE stablecoin.transfer ( + "from" bytea, + "to" bytea, + coin_name text NOT NULL, + symbol text, + decimals numeric, + contract_address bytea, + amount numeric, + amount_raw numeric, + block_time timestamptz NOT NULL, + tx_hash bytea, + evt_index integer +); -CREATE OR REPLACE FUNCTION stablecoin.insert_transfer ( - start_ts timestamptz, end_ts timestamptz = now (), start_block numeric = 0, - end_block numeric - = 9e18) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION stablecoin.insert_transfer(start_ts timestamptz, end_ts timestamptz=now(), start_block numeric=0, end_block numeric=9e18) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH transfers -AS (SELECT symbol, value / 10 ^ decimals AS amount, "from", "to", - name AS coin_name, tr.contract_address, value AS amount_raw, decimals, - evt_block_time AS block_time, evt_tx_hash AS tx_hash, - evt_index FROM erc20."ERC20_evt_Transfer" tr INNER JOIN - erc20.stablecoins st ON tr.contract_address - = st.contract_address WHERE tr.evt_block_time - >= start_ts AND tr.evt_block_time < end_ts), - rows - AS (INSERT INTO stablecoin.transfer (symbol, amount, "from", "to", - coin_name, contract_address, - amount_raw, decimals, block_time, - tx_hash, evt_index) SELECT symbol, - amount, "from", "to", coin_name, contract_address, amount_raw, - decimals, block_time, tx_hash, - evt_index FROM transfers ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH transfers AS ( + SELECT symbol, + value / 10^decimals AS amount, + "from", + "to", + name AS coin_name, + tr.contract_address, + value AS amount_raw, + decimals, + evt_block_time AS block_time, + evt_tx_hash AS tx_hash, + evt_index + FROM erc20."ERC20_evt_Transfer" tr + INNER JOIN erc20.stablecoins st ON tr.contract_address = st.contract_address + WHERE tr.evt_block_time >= start_ts + AND tr.evt_block_time < end_ts +), +rows AS ( + INSERT INTO stablecoin.transfer ( + symbol, + amount, + "from", + "to", + coin_name, + contract_address, + amount_raw, + decimals, + block_time, + tx_hash, + evt_index + ) + SELECT + symbol, + amount, + "from", + "to", + coin_name, + contract_address, + amount_raw, + decimals, + block_time, + tx_hash, + evt_index + FROM transfers + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_transfer_evt_index_uniq_idx ON - stablecoin.transfer (tx_hash, evt_index); -CREATE INDEX IF NOT EXISTS stablecoin_transfer_block_time_idx ON - stablecoin.transfer USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS stablecoin_transfer_evt_index_uniq_idx ON stablecoin.transfer (tx_hash, evt_index); +CREATE INDEX IF NOT EXISTS stablecoin_transfer_block_time_idx ON stablecoin.transfer USING BRIN (block_time); -SELECT stablecoin.insert_transfer ( - '2019-01-01', (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time < '2019-01-01'), - (SELECT MAX (number) FROM ethereum.blocks)) WHERE NOT - EXISTS (SELECT *FROM stablecoin.transfer LIMIT 1); -INSERT INTO cron.job (schedule, command) VALUES ( - '14 1 * * *', - $$SELECT stablecoin.insert_transfer ( - (SELECT max (block_time) - interval '2 days' FROM stablecoin.transfer), - (SELECT now ()), - (SELECT max (number) FROM ethereum.blocks WHERE time - < (SELECT max (block_time) - - interval '2 days' FROM stablecoin.transfer)), - (SELECT MAX (number) FROM ethereum.blocks)); - $$) ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +SELECT stablecoin.insert_transfer('2019-01-01', (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < '2019-01-01'), (SELECT MAX(number) FROM ethereum.blocks)) WHERE NOT EXISTS (SELECT * FROM stablecoin.transfer LIMIT 1); +INSERT INTO cron.job (schedule, command) +VALUES ('14 1 * * *', $$SELECT stablecoin.insert_transfer((SELECT max(block_time) - interval '2 days' FROM stablecoin.transfer), (SELECT now()), (SELECT max(number) FROM ethereum.blocks WHERE time < (SELECT max(block_time) - interval '2 days' FROM stablecoin.transfer)), (SELECT MAX(number) FROM ethereum.blocks));$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/synthetix/rates.sql b/dune/abstractions/synthetix/rates.sql index 84ffaaf..59ac14c 100644 --- a/dune/abstractions/synthetix/rates.sql +++ b/dune/abstractions/synthetix/rates.sql @@ -1,136 +1,128 @@ CREATE TABLE IF NOT EXISTS synthetix.rates ( - currency_key bytea NOT NULL, currency_rate numeric NOT NULL, - block_time timestamptz NOT NULL, PRIMARY KEY (currency_key, block_time)); + currency_key bytea NOT NULL, + currency_rate numeric NOT NULL, + block_time timestamptz NOT NULL, + PRIMARY KEY(currency_key, block_time) +); CREATE INDEX rates_block_time ON synthetix.rates (block_time); CREATE INDEX rates_currency_key ON synthetix.rates (currency_key); -CREATE INDEX rates_currency_key_block_time ON synthetix.rates (currency_key, - block_time DESC) - INCLUDE (currency_rate); +CREATE INDEX rates_currency_key_block_time ON synthetix.rates (currency_key, block_time DESC) INCLUDE (currency_rate); INSERT INTO synthetix.rates VALUES ( - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - 1000000000000000000 ::numeric, - '2019-03-11T22:17:52.000Z' ::timestamptz) ON CONFLICT DO NOTHING; - -CREATE OR REPLACE FUNCTION synthetix.insert_rates (start_ts timestamptz, - end_ts timestamptz = now ()) - RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; + '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, 1000000000000000000::numeric, '2019-03-11T22:17:52.000Z'::timestamptz +) ON CONFLICT DO NOTHING; + +CREATE OR REPLACE FUNCTION synthetix.insert_rates(start_ts timestamptz, end_ts timestamptz=now()) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH rows -AS (INSERT INTO synthetix.rates SELECT currency_key, currency_rate, - evt_block_time AS block_time FROM - synthetix."ExchangeRates_evt_RatesUpdated" r, - unnest ("currencyKeys", "newRates") AS u (currency_key, currency_rate) - WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN - synthetix."ExchangeRates_evt_AggregatorAdded" agg ON agg.aggregator - = cl.contract_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time < end_ts - - UNION - - SELECT currency_key, - currency_rate, - evt_block_time AS block_time FROM - synthetix."ExchangeRates_v2_23_3_evt_RatesUpdated" r, - unnest ("currencyKeys", "newRates") AS u (currency_key, currency_rate) - WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN synthetix - ."ExchangeRates_v2_23_3_evt_AggregatorAdded" agg ON agg.aggregator - = cl.contract_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN chainlink - ."view_aggregator_mappings" clam ON clam.aggregator_address - = cl.contract_address INNER JOIN synthetix - ."ExchangeRates_v2_27_2_evt_AggregatorAdded" agg ON agg.aggregator - = clam.proxy_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN chainlink - ."view_aggregator_mappings" clam ON clam.aggregator_address - = cl.contract_address INNER JOIN synthetix - ."ExchangeRates_v2_28_4_evt_AggregatorAdded" agg ON agg.aggregator - = clam.proxy_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN chainlink - ."view_aggregator_mappings" clam ON clam.aggregator_address - = cl.contract_address INNER JOIN synthetix - ."ExchangeRates_v2_30_0_evt_AggregatorAdded" agg ON agg.aggregator - = clam.proxy_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN chainlink - ."view_aggregator_mappings" clam ON clam.aggregator_address - = cl.contract_address INNER JOIN synthetix - ."ExchangeRates_v2_31_1_evt_AggregatorAdded" agg ON agg.aggregator - = clam.proxy_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts - - UNION - - SELECT agg."currencyKey" AS currency_key, - cl.current * 1e10 AS currency_rate, - cl.evt_block_time AS block_time FROM - chainlink."Aggregator_evt_AnswerUpdated" cl INNER JOIN chainlink - ."view_aggregator_mappings" clam ON clam.aggregator_address - = cl.contract_address INNER JOIN synthetix - ."ExchangeRates_v2_35_2_evt_AggregatorAdded" agg ON agg.aggregator - = clam.proxy_address WHERE cl.evt_block_time - >= start_ts AND cl.evt_block_time - < end_ts ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH rows AS ( + INSERT INTO synthetix.rates + SELECT currency_key, currency_rate, evt_block_time AS block_time + FROM synthetix."ExchangeRates_evt_RatesUpdated" r, unnest("currencyKeys", "newRates") AS u(currency_key, currency_rate) + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN synthetix."ExchangeRates_evt_AggregatorAdded" agg ON agg.aggregator = cl.contract_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT currency_key, currency_rate, evt_block_time AS block_time + FROM synthetix."ExchangeRates_v2_23_3_evt_RatesUpdated" r, unnest("currencyKeys", "newRates") AS u(currency_key, currency_rate) + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN synthetix."ExchangeRates_v2_23_3_evt_AggregatorAdded" agg ON agg.aggregator = cl.contract_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN chainlink."view_aggregator_mappings" clam ON clam.aggregator_address = cl.contract_address + INNER JOIN synthetix."ExchangeRates_v2_27_2_evt_AggregatorAdded" agg ON agg.aggregator = clam.proxy_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN chainlink."view_aggregator_mappings" clam ON clam.aggregator_address = cl.contract_address + INNER JOIN synthetix."ExchangeRates_v2_28_4_evt_AggregatorAdded" agg ON agg.aggregator = clam.proxy_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN chainlink."view_aggregator_mappings" clam ON clam.aggregator_address = cl.contract_address + INNER JOIN synthetix."ExchangeRates_v2_30_0_evt_AggregatorAdded" agg ON agg.aggregator = clam.proxy_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN chainlink."view_aggregator_mappings" clam ON clam.aggregator_address = cl.contract_address + INNER JOIN synthetix."ExchangeRates_v2_31_1_evt_AggregatorAdded" agg ON agg.aggregator = clam.proxy_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + + UNION + + SELECT + agg."currencyKey" AS currency_key, + cl.current * 1e10 AS currency_rate, + cl.evt_block_time AS block_time + FROM chainlink."Aggregator_evt_AnswerUpdated" cl + INNER JOIN chainlink."view_aggregator_mappings" clam ON clam.aggregator_address = cl.contract_address + INNER JOIN synthetix."ExchangeRates_v2_35_2_evt_AggregatorAdded" agg ON agg.aggregator = clam.proxy_address + WHERE cl.evt_block_time >= start_ts + AND cl.evt_block_time < end_ts + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; + -SELECT synthetix.insert_rates ('2019-01-01', - (SELECT max (time) FROM ethereum.blocks)); +SELECT synthetix.insert_rates('2019-01-01', (SELECT max(time) FROM ethereum.blocks)); -INSERT INTO cron.job (schedule, command) VALUES ( - '*/5 * * * *', - 'SELECT synthetix.insert_rates((SELECT max(block_time) FROM synthetix.rates));') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; +INSERT INTO cron.job (schedule, command) +VALUES ('*/5 * * * *', 'SELECT synthetix.insert_rates((SELECT max(block_time) FROM synthetix.rates));') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; diff --git a/dune/abstractions/synthetix/symbols.sql b/dune/abstractions/synthetix/symbols.sql index ed8fbea..0d3afc4 100644 --- a/dune/abstractions/synthetix/symbols.sql +++ b/dune/abstractions/synthetix/symbols.sql @@ -1,259 +1,250 @@ -CREATE TABLE IF NOT EXISTS synthetix.symbols (symbol text, address bytea, - block_time timestamptz, - PRIMARY KEY (symbol, address)); -INSERT INTO synthetix.symbols - VALUES ('sAUD', '\xB03dFc4b9C9756B6D4Fbc12DAde7732149Fcf00d'), - ('sAUD', '\x710882750DDe5DBc64e5a7df23a8cF068dF74910'), - ('sAUD', '\xa6FE80c4c4AADb4B33dB7f22dc9AE2C4697cC406'), - ('sAUD', '\xACa2179a884bAC7C3D0bc4131585E1B7DbDD048e'), - ('sAUD', '\xe04d8770Dc06135Dd97214ea8bcbf7B1CC057AA3'), - ('sBRL', '\xa5A4ccCCcAa26Cea096F6E493839423F4D66c63F'), - ('sBTC', '\xf8AD89091B2724bdb7528c50B282B565Db4635bb'), - ('sBTC', '\x832177F21CCDcc286003faDF4e98fc11dc5C627F'), - ('sBTC', '\x6bCd1caE4A3c099c696B51f889bE2120DF62b7c0'), - ('sBTC', '\xF0ac210915BD88Ea51c9EB800a4078a85927efdF'), - ('sBTC', '\x17628A557d1Fc88D1c35989dcBAC3f3e275E2d2B'), - ('sCAD', '\x8f69c9Ee79Bf9320E1A5C19e559108E1cb3d002B'), - ('sCHF', '\x9270D9970D6ACA773e2FA01633CDc091a46714c9'), - ('sCHF', '\x296b019E6dF25Ce3b71d4239b8C7CEc1a417d4E9'), - ('sCHF', '\xfF0b8894CC44F300e124bcd39F95555816b8B1d5'), - ('sCHF', '\x64C73355FBD0274e677609E8fb372427DF975508'), - ('sCHF', '\x253914cf059f4c3E277c28060C404acFc38FB6e2'), - ('sCNY', '\x60C34eB93AFCd1B701fF8C036B128441C68A8A70'), - ('sEUR', '\xC2bb52457D81FBD223CC92b44cd372d36b338A10'), - ('sEUR', '\x45AA2F706C3d695aCC1DA9698Fb803b8Ef5157ba'), - ('sEUR', '\x68473dc4B7A4b0867fd7C5b9A982Fea407DAD320'), - ('sEUR', '\x57e4A2D7D9b759Cf6FA2C937D52E408c66fB6384'), - ('sEUR', '\x2fB419E7023b32201e9aB3aba947f5c101a5C30e'), - ('sGBP', '\xdB36B8f25bB1f289d97aeE8f87BAcCaC58fA8883'), - ('sGBP', '\x0a24864596C54D79C825e64b281645249C14590C'), - ('sGBP', '\xD8C733Ac0B2Db47BbA7af7716Eb696e62C417D5b'), - ('sGBP', '\x486e27D56c0744970687927728598F8B96451Cc4'), - ('sGBP', '\x8FA7FBb0144CeA832a76547aEAB1Ad8d9e4588F1'), - ('sGBP', '\xB3098Ae40f488ffdb979827Fd01597CC20c5a5A0'), - ('sINR', '\x51671B7556EbEB4c43180e983F5569973e15cAc9'), - ('sJPY', '\xD9E5A009Ec07dE76616d7361Ed713eF434d71325'), - ('sJPY', '\x11Dfa1Bf994Ea47e361eC474519Afd627e932eb0'), - ('sJPY', '\x4B1cE9C42A381CB2d74ffeF20103e502e2fc619C'), - ('sJPY', '\x68043c3EAE66Ac1c28341867491E615412fc84FD'), - ('sJPY', '\x8ed1B71B00DbaB96A6db6DF0C910f749243de6D3'), - ('sKRW', '\xdF846D3ded30A0590319f8A7ECD4e233B0e9188C'), - ('sNZD', '\xCF401f31c63F58DEbfC76F441731dfa945cd0Bde'), - ('sPLN', '\x1943dBd2A793c588B5170188Ee6fb62E02AfdfF7'), - ('sRUB', '\x8a8DcbBa6038c6Fc6D192F5cf5C5dD83B98591bc'), - ('sSGD', '\x2aE393C18b6Aa62D6a2250aF7b803Fa6973bC981'), - ('sUSD', '\x0cBE2dF57CA9191B64a7Af3baa3F946fa7Df2F25'), - ('sUSD', '\xd8B325e9a95aBc44cEdc90AAb64ec1f231F2Cc8f'), - ('sUSD', '\x2656a6E566f8e60f444B283bf346fC74A9990c96'), - ('sUSD', '\x289e9a4674663decEE54f781AaDE5327304A32f8'), - ('sUSD', '\x2A020C1ad728f1C12735bC4877CEECa4491A4a3D'), - ('sUSD', '\xAe38b81459d74A8C16eAa968c792207603D84480'), - ('sXAG', '\x4D57A8212BDb8bdca049365BCE8afA0244a0E3FC'), - ('sXAG', '\xD6308849094c5E6Eb0EDAba255A06Ca32B0106Bf'), - ('sXAG', '\x3A412043939d9F7e53373b64f858ecB870a92E50'), - ('sXAG', '\xd415e342a5C7Ee189D939b4DC17E85880fE1096A'), - ('sXAG', '\x1B9d6cD65dDC981410cb93Af91B097667E0Bc7eE'), - ('sXAU', '\x112D5fA64e4902B6ff1a35495a0f878c210A5601'), - ('sXAU', '\x4a15d9dfC95ba7B9e33CE70e7E0762dc8F7AC237'), - ('sXAU', '\x4d96b67f5BDe58A622D9bF2B8a1906C8B084fAf4'), - ('sXAU', '\x00aB7c26A5a6C4C32D0b897E4Af3CB32F92aad34'), - ('sXAU', '\xA408d8e01C8E084B67559226C5B55D6F0B7074e2'), - ('XDR', '\x2972705AF18c66c14CDd27AD412961E01944A9C3'), - ('XDR', '\x6025f88ABB6d99d02c5EEd82C151d52Bac8E444b'), - ('XDR', '\x30A46E656CdcA6B401Ff043e1aBb151490a07ab0'), - ('XDR', '\x96f9D144E55149437640512B82d7Dda065E89773'), - ('sETH', '\x42456D7084eacF4083f1140d3229471bbA2949A8'), - ('sETH', '\x8519d1BDb4cC1753DF95C6E98F6Bd0E95dE568D9'), - ('sETH', '\x0577d4268ABE6777aE37688D015598819088297B'), - ('sETH', '\xD81AdA188331e627567BBEF80F91217cd3109592'), - ('sETH', '\x9f71b6596b2C9d357f9F04F8cA772fbD6e2c211C'), - ('sETH', '\xD0DC005d31C2979CC0d38718e23c82D1A50004C0'), - ('sBNB', '\xC906de7f8b4C1a4787023F50F49CE98F9F67c4b8'), - ('sBNB', '\x33cE216C10dEA5E724b7A90628ce7853eef127B3'), - ('sBNB', '\xE5787927410b659cc4eA2441cDaa361f9D7b250C'), - ('sBNB', '\xaE3971E603b11dA40aea85d8c2355150c7c47683'), - ('sBNB', '\xadaD43Be81E2206f6D1aF4299cA2a029e16af7AB'), - ('iBTC', '\xd8f6B6b6782632275B2B51230654f687f5b12Cde'), - ('iBTC', '\xccC395f0eBFAA26dCC2D3BACc23d55614002236b'), - ('iBTC', '\xCe88906100c145522Be3a509683881241aBb3C52'), - ('iBTC', '\x83266A95429b903cC5e954bF61c7eddf8a52b971'), - ('iBTC', '\x810425566d1d3078B15A6f035b17886F18F3c54B'), - ('iBTC', '\xc704c9AA89d1ca60F67B3075d05fBb92b3B00B3B'), - ('iETH', '\x51Fe40e6292dbC44623b298a4086ffA6f5976ba1'), - ('iETH', '\x9b461df6fc38E1baEC08c06EB9e916093af8d11C'), - ('iETH', '\x3f3804176D90640aC6063124afd4bc0636aC85B6'), - ('iETH', '\xf53B56B6Fb98aaF514bcd28f6Fa6fd20C24E5c22'), - ('iETH', '\xc0bA711B4E128425Be9245ce750D82c90b42D6D2'), - ('iETH', '\xaE55F163337A2A46733AA66dA9F35299f9A46e9e'), - ('iBNB', '\x56751D5Ac7D2B614C79d22e6b52D3285cFA8a293'), - ('iBNB', '\xED4A3Adffa428fFD126AeD8ba5b8B58bb12c11ca'), - ('iBNB', '\x57Ff288dd9D478b046647A5aB917195449F1F6e5'), - ('iBNB', '\x09400Ec683F70174E1217d6dcdBf42448E8De5d6'), - ('iBNB', '\xc68b5Eb9e035b2B84568A4C6201e3b200C0236ba'), - ('iBNB', '\xf86048DFf23cF130107dfB4e6386f574231a5C65'), - ('sMKR', '\x13586160e4F890D0631c3C08D989f5b7AFe202b0'), - ('sMKR', '\xFAc2B3400Df00a348C3118831a45A05255F9004A'), - ('sMKR', '\x84965DCa28c4Eb9dE61d80f80e811eA12BE1c819'), - ('sMKR', '\x54A0326fB698c2CFACa5327550a897FA66d21f07'), - ('sMKR', '\xD1599E478cC818AFa42A4839a6C665D9279C3E50'), - ('sTRX', '\xa6e5DA838D3b8338783E0710E1D5F6C8e8E998CE'), - ('sTRX', '\x0dA04b80e21B344fCFD49C04bEC658E80F1D7428'), - ('sTRX', '\x1A60E2E2A8BE0BC2B6381dd31Fd3fD5F9A28dE4c'), - ('sTRX', '\x3d0e7c09242b0cAd4e81cB2f6D2183EF517500EF'), - ('sTRX', '\xC4Be4583bc0307C56CF301975b2B2B1E5f95fcB2'), - ('sXTZ', '\x6E5Bc3e877CFaa06eF97dfA12e63EfbB8FCbb03e'), - ('sXTZ', '\xC0b1F43Ee7b0670F7B34e14c4702e54a905A51B5'), - ('sXTZ', '\xe109da5361299eD96D91146B8Cc12F682D21964e'), - ('sXTZ', '\x2CB1B47fB16013798086f267E04E6579dcb72A74'), - ('sXTZ', '\x91DBC6f587D043FEfbaAD050AB48696B30F13d89'), - ('iMKR', '\x99bcc501d04F400Ba3F78b5375D00B56acE6Ee0D'), - ('iMKR', '\x047FC84504714d526808Be07BF17Bdd70726ef92'), - ('iMKR', '\xD95e7F80766580634B2E0E49d9F66af317994FC7'), - ('iMKR', '\x10A0532DE3C86D9cE810F004FaBcf5a1EA464390'), - ('iMKR', '\x1228c7D8BBc5bC53DB181bD7B1fcE765aa83bF8A'), - ('iTRX', '\x87ea2450EaB99A74e55E2B446290011765393AC1'), - ('iTRX', '\x80eDAC70ec108a9c5B47972da9924397Ba974Ff9'), - ('iTRX', '\x406555dbF02e9E4df9AdeAeC9DA76ABeED8C1BC3'), - ('iTRX', '\x2DE37AF5BA64f5CaE3202Bf13dbEDc4D46e8046f'), - ('iTRX', '\xdD87cbDe3C1f8F728C7924c8C9C983Af6dfcfeA8'), - ('iXTZ', '\xFE6Cd6dE459db214818492f532Ec02Ba87319437'), - ('iXTZ', '\x72661E76475354403838EB04144206f70Ff97d79'), - ('iXTZ', '\xAD7258d0054c03112a4f5489A4B24eC34a2fc787'), - ('iXTZ', '\x59D39e14cC735b39746c94351E7fbDd92C8D0d3C'), - ('iXTZ', '\x6dFDFbfB4B180be4482F8b753fb33720C2831a9f'), - ('sCEX', '\x6aa0f8620614aFe9BD4aBA3148439b08eb2557C0'), - ('sCEX', '\x93CfF799F255eDa2089cFB3F05696B5B66873C1A'), - ('sCEX', '\x8a3ca1d2d9a05683EB4DB447d0e3122Fec09d9ee'), - ('sCEX', '\x2420057461bD2fb756e0A610897c51De7fB18311'), - ('sCEX', '\x5eA2544551448cF6DcC1D853aDdd663D480fd8d3'), - ('iCEX', '\x66B86625ee80b06e94E027e44eA35680a0730233'), - ('iCEX', '\x43e1505E315BE6C8b875a37F7D8753Ba84140A37'), - ('iCEX', '\xDa5eD43B9B6E36b4f27cc6D8c1974532cdBd55F9'), - ('iCEX', '\xf7011510572d0EFE31d1E90cd6dc1EF84e6B13b8'), - ('iCEX', '\x817c39c8825e12eA7752483c85dd2c800b78B357'), - ('sXRP', '\xFf6866FF46c71706DcD5A0A38f12279553bE6233'), - ('sXRP', '\xC64CdA66Bc1d026b984D6BEE6aDBf71eAc8A099d'), - ('sXRP', '\x4dc1E8bAcc26D563941dCB59c72BD9FE58663778'), - ('sXRP', '\xF5d0BFBc617d3969C1AcE93490A76cE80Db1Ed0e'), - ('sLTC', '\x8e0cC15bBCd10E170AC07982B5D6930502C63784'), - ('sLTC', '\x088256945480c884C067a8Bc98A72A1C984f826B'), - ('sLTC', '\x79BEf89A63bE04A75F1fA42E8f42ad873B6f43e2'), - ('sLTC', '\x6cF29c515A33209c6eCa43c293004ac80c0614f0'), - ('sLINK', '\x34B19046c6657D26B0C9b63d3Fb54C2754Ed4537'), - ('sLINK', '\x46824bFAaFd049fB0Af9a45159A88e595Bbbb9f7'), - ('sLINK', '\x3D663Dbe79fA9752815e03e129D6703eDE1C6D71'), - ('sLINK', '\xAf918f4a72BC34E59dFaF65866feC87947F1f590'), - ('sDEFI', '\x4917E9Ef69E3a1C82651c9158cA2c25b3A564760'), - ('sDEFI', '\xF778Ec504245EfE1eA010C5C3E50b6F5f5E117da'), - ('sDEFI', '\xE725d6Ff29d0679C9Cb6Fa8972a1E8a7FB49610B'), - ('sDEFI', '\xf5a6115Aa582Fd1BEEa22BC93B7dC7a785F60d03'), - ('iXRP', '\xcBBb17D9767bD57FBF4Bbf8842E916bCb3826ec1'), - ('iXRP', '\xd7adF1b5E31D1C40E08F16a2095338ce3aA8f2Fc'), - ('iXRP', '\xccda7941aB1AC7a32F49843c0b3EDF618b20F6Ae'), - ('iXRP', '\x71Cd588eFA3609bc14E7B0c7C57dDDfd3a72E8a2'), - ('iLINK', '\xEC114001D23eeFE6624Fb42cCbF4b3c793e295f1'), - ('iLINK', '\x3DdF5dAd59F8F8e8f957709B044eE84e87B42e25'), - ('iLINK', '\x8c6680412e914932A9abC02B6c7cbf690e583aFA'), - ('iLINK', '\x63d630B6D89c21E171E86c51C7243284510DBd79'), - ('iLTC', '\x05DD55C18999b4a2f905978C029B85dA37750170'), - ('iLTC', '\xec98BB42C8F03485bf659378da694512a16f3482'), - ('iLTC', '\xfca2e82E5414c695c81b99D753b0b11c50bDC93D'), - ('iLTC', '\x0f5BdfD0958345C2e7Adb1741024aEd6Dd159e6C'), - ('iDEFI', '\x8E39e807D9eaE1cED9BCE296F211c38BA5ab2f9B'), - ('iDEFI', '\xC5Bfbc63dc8D36E81434e93e0ee097999879d7F4'), - ('iDEFI', '\xaE7D62Fb6a305E6d9E9F8c43bbb41093c2bE52f6'), - ('iDEFI', '\x489d4D4c4bC781EAab3A36C44d66762Ceb6e1e2D'), - ('sEOS', '\x31a9c51eEd5282F11ae5CDD061A65A4ce0346C08'), - ('sBCH', '\x9b68b85c61B082B2495B342F26B20a57cFd73D26'), - ('sETC', '\x2369D37ae9B30451D859C11CAbAc70df1CE48F78'), - ('sDASH', '\xc66499aCe3B6c6a30c784bE5511E8d338d543913'), - ('sXMR', '\x86FD9c0261E804476bA11056fFD758da2469ed56'), - ('sADA', '\x1Cda42C559D2EB137103D9A01d1ae736dEDA3aEF'), - ('sFTSE', '\x8D34924EAe7578692775fDd94Ed27bc355397E4a'), - ('sNIKKEI', '\x4CeB220C5E38E27ef5187F7ab853aC182D233d39'), - ('iEOS', '\xc66a263f2C7C1Af0bD70c6cA4Bff5936F3D6Ef9F'), - ('iBCH', '\x0E87a320daCE86A0b427FA2Bae282dE5c7697278'), - ('iETC', '\xF13f9E75913b352622F8AEEA5Ac32498b1C228d0'), - ('iDASH', '\x5f7A299Be82D8f5A626300c62C477b233F616121'), - ('iXMR', '\xC5D2b3f5DAf11B6111Af86a72A5938B0fE6c5045'), - ('iADA', - '\x9D4193187B247a400E8D8ba716F1C18c0dC65528')ON CONFLICT DO NOTHING; +CREATE TABLE IF NOT EXISTS synthetix.symbols ( + symbol text, + address bytea, + block_time timestamptz, + PRIMARY KEY(symbol, address) +); +INSERT INTO synthetix.symbols VALUES + ('sAUD', '\xB03dFc4b9C9756B6D4Fbc12DAde7732149Fcf00d'), + ('sAUD', '\x710882750DDe5DBc64e5a7df23a8cF068dF74910'), + ('sAUD', '\xa6FE80c4c4AADb4B33dB7f22dc9AE2C4697cC406'), + ('sAUD', '\xACa2179a884bAC7C3D0bc4131585E1B7DbDD048e'), + ('sAUD', '\xe04d8770Dc06135Dd97214ea8bcbf7B1CC057AA3'), + ('sBRL', '\xa5A4ccCCcAa26Cea096F6E493839423F4D66c63F'), + ('sBTC', '\xf8AD89091B2724bdb7528c50B282B565Db4635bb'), + ('sBTC', '\x832177F21CCDcc286003faDF4e98fc11dc5C627F'), + ('sBTC', '\x6bCd1caE4A3c099c696B51f889bE2120DF62b7c0'), + ('sBTC', '\xF0ac210915BD88Ea51c9EB800a4078a85927efdF'), + ('sBTC', '\x17628A557d1Fc88D1c35989dcBAC3f3e275E2d2B'), + ('sCAD', '\x8f69c9Ee79Bf9320E1A5C19e559108E1cb3d002B'), + ('sCHF', '\x9270D9970D6ACA773e2FA01633CDc091a46714c9'), + ('sCHF', '\x296b019E6dF25Ce3b71d4239b8C7CEc1a417d4E9'), + ('sCHF', '\xfF0b8894CC44F300e124bcd39F95555816b8B1d5'), + ('sCHF', '\x64C73355FBD0274e677609E8fb372427DF975508'), + ('sCHF', '\x253914cf059f4c3E277c28060C404acFc38FB6e2'), + ('sCNY', '\x60C34eB93AFCd1B701fF8C036B128441C68A8A70'), + ('sEUR', '\xC2bb52457D81FBD223CC92b44cd372d36b338A10'), + ('sEUR', '\x45AA2F706C3d695aCC1DA9698Fb803b8Ef5157ba'), + ('sEUR', '\x68473dc4B7A4b0867fd7C5b9A982Fea407DAD320'), + ('sEUR', '\x57e4A2D7D9b759Cf6FA2C937D52E408c66fB6384'), + ('sEUR', '\x2fB419E7023b32201e9aB3aba947f5c101a5C30e'), + ('sGBP', '\xdB36B8f25bB1f289d97aeE8f87BAcCaC58fA8883'), + ('sGBP', '\x0a24864596C54D79C825e64b281645249C14590C'), + ('sGBP', '\xD8C733Ac0B2Db47BbA7af7716Eb696e62C417D5b'), + ('sGBP', '\x486e27D56c0744970687927728598F8B96451Cc4'), + ('sGBP', '\x8FA7FBb0144CeA832a76547aEAB1Ad8d9e4588F1'), + ('sGBP', '\xB3098Ae40f488ffdb979827Fd01597CC20c5a5A0'), + ('sINR', '\x51671B7556EbEB4c43180e983F5569973e15cAc9'), + ('sJPY', '\xD9E5A009Ec07dE76616d7361Ed713eF434d71325'), + ('sJPY', '\x11Dfa1Bf994Ea47e361eC474519Afd627e932eb0'), + ('sJPY', '\x4B1cE9C42A381CB2d74ffeF20103e502e2fc619C'), + ('sJPY', '\x68043c3EAE66Ac1c28341867491E615412fc84FD'), + ('sJPY', '\x8ed1B71B00DbaB96A6db6DF0C910f749243de6D3'), + ('sKRW', '\xdF846D3ded30A0590319f8A7ECD4e233B0e9188C'), + ('sNZD', '\xCF401f31c63F58DEbfC76F441731dfa945cd0Bde'), + ('sPLN', '\x1943dBd2A793c588B5170188Ee6fb62E02AfdfF7'), + ('sRUB', '\x8a8DcbBa6038c6Fc6D192F5cf5C5dD83B98591bc'), + ('sSGD', '\x2aE393C18b6Aa62D6a2250aF7b803Fa6973bC981'), + ('sUSD', '\x0cBE2dF57CA9191B64a7Af3baa3F946fa7Df2F25'), + ('sUSD', '\xd8B325e9a95aBc44cEdc90AAb64ec1f231F2Cc8f'), + ('sUSD', '\x2656a6E566f8e60f444B283bf346fC74A9990c96'), + ('sUSD', '\x289e9a4674663decEE54f781AaDE5327304A32f8'), + ('sUSD', '\x2A020C1ad728f1C12735bC4877CEECa4491A4a3D'), + ('sUSD', '\xAe38b81459d74A8C16eAa968c792207603D84480'), + ('sXAG', '\x4D57A8212BDb8bdca049365BCE8afA0244a0E3FC'), + ('sXAG', '\xD6308849094c5E6Eb0EDAba255A06Ca32B0106Bf'), + ('sXAG', '\x3A412043939d9F7e53373b64f858ecB870a92E50'), + ('sXAG', '\xd415e342a5C7Ee189D939b4DC17E85880fE1096A'), + ('sXAG', '\x1B9d6cD65dDC981410cb93Af91B097667E0Bc7eE'), + ('sXAU', '\x112D5fA64e4902B6ff1a35495a0f878c210A5601'), + ('sXAU', '\x4a15d9dfC95ba7B9e33CE70e7E0762dc8F7AC237'), + ('sXAU', '\x4d96b67f5BDe58A622D9bF2B8a1906C8B084fAf4'), + ('sXAU', '\x00aB7c26A5a6C4C32D0b897E4Af3CB32F92aad34'), + ('sXAU', '\xA408d8e01C8E084B67559226C5B55D6F0B7074e2'), + ('XDR', '\x2972705AF18c66c14CDd27AD412961E01944A9C3'), + ('XDR', '\x6025f88ABB6d99d02c5EEd82C151d52Bac8E444b'), + ('XDR', '\x30A46E656CdcA6B401Ff043e1aBb151490a07ab0'), + ('XDR', '\x96f9D144E55149437640512B82d7Dda065E89773'), + ('sETH', '\x42456D7084eacF4083f1140d3229471bbA2949A8'), + ('sETH', '\x8519d1BDb4cC1753DF95C6E98F6Bd0E95dE568D9'), + ('sETH', '\x0577d4268ABE6777aE37688D015598819088297B'), + ('sETH', '\xD81AdA188331e627567BBEF80F91217cd3109592'), + ('sETH', '\x9f71b6596b2C9d357f9F04F8cA772fbD6e2c211C'), + ('sETH', '\xD0DC005d31C2979CC0d38718e23c82D1A50004C0'), + ('sBNB', '\xC906de7f8b4C1a4787023F50F49CE98F9F67c4b8'), + ('sBNB', '\x33cE216C10dEA5E724b7A90628ce7853eef127B3'), + ('sBNB', '\xE5787927410b659cc4eA2441cDaa361f9D7b250C'), + ('sBNB', '\xaE3971E603b11dA40aea85d8c2355150c7c47683'), + ('sBNB', '\xadaD43Be81E2206f6D1aF4299cA2a029e16af7AB'), + ('iBTC', '\xd8f6B6b6782632275B2B51230654f687f5b12Cde'), + ('iBTC', '\xccC395f0eBFAA26dCC2D3BACc23d55614002236b'), + ('iBTC', '\xCe88906100c145522Be3a509683881241aBb3C52'), + ('iBTC', '\x83266A95429b903cC5e954bF61c7eddf8a52b971'), + ('iBTC', '\x810425566d1d3078B15A6f035b17886F18F3c54B'), + ('iBTC', '\xc704c9AA89d1ca60F67B3075d05fBb92b3B00B3B'), + ('iETH', '\x51Fe40e6292dbC44623b298a4086ffA6f5976ba1'), + ('iETH', '\x9b461df6fc38E1baEC08c06EB9e916093af8d11C'), + ('iETH', '\x3f3804176D90640aC6063124afd4bc0636aC85B6'), + ('iETH', '\xf53B56B6Fb98aaF514bcd28f6Fa6fd20C24E5c22'), + ('iETH', '\xc0bA711B4E128425Be9245ce750D82c90b42D6D2'), + ('iETH', '\xaE55F163337A2A46733AA66dA9F35299f9A46e9e'), + ('iBNB', '\x56751D5Ac7D2B614C79d22e6b52D3285cFA8a293'), + ('iBNB', '\xED4A3Adffa428fFD126AeD8ba5b8B58bb12c11ca'), + ('iBNB', '\x57Ff288dd9D478b046647A5aB917195449F1F6e5'), + ('iBNB', '\x09400Ec683F70174E1217d6dcdBf42448E8De5d6'), + ('iBNB', '\xc68b5Eb9e035b2B84568A4C6201e3b200C0236ba'), + ('iBNB', '\xf86048DFf23cF130107dfB4e6386f574231a5C65'), + ('sMKR', '\x13586160e4F890D0631c3C08D989f5b7AFe202b0'), + ('sMKR', '\xFAc2B3400Df00a348C3118831a45A05255F9004A'), + ('sMKR', '\x84965DCa28c4Eb9dE61d80f80e811eA12BE1c819'), + ('sMKR', '\x54A0326fB698c2CFACa5327550a897FA66d21f07'), + ('sMKR', '\xD1599E478cC818AFa42A4839a6C665D9279C3E50'), + ('sTRX', '\xa6e5DA838D3b8338783E0710E1D5F6C8e8E998CE'), + ('sTRX', '\x0dA04b80e21B344fCFD49C04bEC658E80F1D7428'), + ('sTRX', '\x1A60E2E2A8BE0BC2B6381dd31Fd3fD5F9A28dE4c'), + ('sTRX', '\x3d0e7c09242b0cAd4e81cB2f6D2183EF517500EF'), + ('sTRX', '\xC4Be4583bc0307C56CF301975b2B2B1E5f95fcB2'), + ('sXTZ', '\x6E5Bc3e877CFaa06eF97dfA12e63EfbB8FCbb03e'), + ('sXTZ', '\xC0b1F43Ee7b0670F7B34e14c4702e54a905A51B5'), + ('sXTZ', '\xe109da5361299eD96D91146B8Cc12F682D21964e'), + ('sXTZ', '\x2CB1B47fB16013798086f267E04E6579dcb72A74'), + ('sXTZ', '\x91DBC6f587D043FEfbaAD050AB48696B30F13d89'), + ('iMKR', '\x99bcc501d04F400Ba3F78b5375D00B56acE6Ee0D'), + ('iMKR', '\x047FC84504714d526808Be07BF17Bdd70726ef92'), + ('iMKR', '\xD95e7F80766580634B2E0E49d9F66af317994FC7'), + ('iMKR', '\x10A0532DE3C86D9cE810F004FaBcf5a1EA464390'), + ('iMKR', '\x1228c7D8BBc5bC53DB181bD7B1fcE765aa83bF8A'), + ('iTRX', '\x87ea2450EaB99A74e55E2B446290011765393AC1'), + ('iTRX', '\x80eDAC70ec108a9c5B47972da9924397Ba974Ff9'), + ('iTRX', '\x406555dbF02e9E4df9AdeAeC9DA76ABeED8C1BC3'), + ('iTRX', '\x2DE37AF5BA64f5CaE3202Bf13dbEDc4D46e8046f'), + ('iTRX', '\xdD87cbDe3C1f8F728C7924c8C9C983Af6dfcfeA8'), + ('iXTZ', '\xFE6Cd6dE459db214818492f532Ec02Ba87319437'), + ('iXTZ', '\x72661E76475354403838EB04144206f70Ff97d79'), + ('iXTZ', '\xAD7258d0054c03112a4f5489A4B24eC34a2fc787'), + ('iXTZ', '\x59D39e14cC735b39746c94351E7fbDd92C8D0d3C'), + ('iXTZ', '\x6dFDFbfB4B180be4482F8b753fb33720C2831a9f'), + ('sCEX', '\x6aa0f8620614aFe9BD4aBA3148439b08eb2557C0'), + ('sCEX', '\x93CfF799F255eDa2089cFB3F05696B5B66873C1A'), + ('sCEX', '\x8a3ca1d2d9a05683EB4DB447d0e3122Fec09d9ee'), + ('sCEX', '\x2420057461bD2fb756e0A610897c51De7fB18311'), + ('sCEX', '\x5eA2544551448cF6DcC1D853aDdd663D480fd8d3'), + ('iCEX', '\x66B86625ee80b06e94E027e44eA35680a0730233'), + ('iCEX', '\x43e1505E315BE6C8b875a37F7D8753Ba84140A37'), + ('iCEX', '\xDa5eD43B9B6E36b4f27cc6D8c1974532cdBd55F9'), + ('iCEX', '\xf7011510572d0EFE31d1E90cd6dc1EF84e6B13b8'), + ('iCEX', '\x817c39c8825e12eA7752483c85dd2c800b78B357'), + ('sXRP', '\xFf6866FF46c71706DcD5A0A38f12279553bE6233'), + ('sXRP', '\xC64CdA66Bc1d026b984D6BEE6aDBf71eAc8A099d'), + ('sXRP', '\x4dc1E8bAcc26D563941dCB59c72BD9FE58663778'), + ('sXRP', '\xF5d0BFBc617d3969C1AcE93490A76cE80Db1Ed0e'), + ('sLTC', '\x8e0cC15bBCd10E170AC07982B5D6930502C63784'), + ('sLTC', '\x088256945480c884C067a8Bc98A72A1C984f826B'), + ('sLTC', '\x79BEf89A63bE04A75F1fA42E8f42ad873B6f43e2'), + ('sLTC', '\x6cF29c515A33209c6eCa43c293004ac80c0614f0'), + ('sLINK', '\x34B19046c6657D26B0C9b63d3Fb54C2754Ed4537'), + ('sLINK', '\x46824bFAaFd049fB0Af9a45159A88e595Bbbb9f7'), + ('sLINK', '\x3D663Dbe79fA9752815e03e129D6703eDE1C6D71'), + ('sLINK', '\xAf918f4a72BC34E59dFaF65866feC87947F1f590'), + ('sDEFI', '\x4917E9Ef69E3a1C82651c9158cA2c25b3A564760'), + ('sDEFI', '\xF778Ec504245EfE1eA010C5C3E50b6F5f5E117da'), + ('sDEFI', '\xE725d6Ff29d0679C9Cb6Fa8972a1E8a7FB49610B'), + ('sDEFI', '\xf5a6115Aa582Fd1BEEa22BC93B7dC7a785F60d03'), + ('iXRP', '\xcBBb17D9767bD57FBF4Bbf8842E916bCb3826ec1'), + ('iXRP', '\xd7adF1b5E31D1C40E08F16a2095338ce3aA8f2Fc'), + ('iXRP', '\xccda7941aB1AC7a32F49843c0b3EDF618b20F6Ae'), + ('iXRP', '\x71Cd588eFA3609bc14E7B0c7C57dDDfd3a72E8a2'), + ('iLINK', '\xEC114001D23eeFE6624Fb42cCbF4b3c793e295f1'), + ('iLINK', '\x3DdF5dAd59F8F8e8f957709B044eE84e87B42e25'), + ('iLINK', '\x8c6680412e914932A9abC02B6c7cbf690e583aFA'), + ('iLINK', '\x63d630B6D89c21E171E86c51C7243284510DBd79'), + ('iLTC', '\x05DD55C18999b4a2f905978C029B85dA37750170'), + ('iLTC', '\xec98BB42C8F03485bf659378da694512a16f3482'), + ('iLTC', '\xfca2e82E5414c695c81b99D753b0b11c50bDC93D'), + ('iLTC', '\x0f5BdfD0958345C2e7Adb1741024aEd6Dd159e6C'), + ('iDEFI', '\x8E39e807D9eaE1cED9BCE296F211c38BA5ab2f9B'), + ('iDEFI', '\xC5Bfbc63dc8D36E81434e93e0ee097999879d7F4'), + ('iDEFI', '\xaE7D62Fb6a305E6d9E9F8c43bbb41093c2bE52f6'), + ('iDEFI', '\x489d4D4c4bC781EAab3A36C44d66762Ceb6e1e2D'), + ('sEOS', '\x31a9c51eEd5282F11ae5CDD061A65A4ce0346C08'), + ('sBCH', '\x9b68b85c61B082B2495B342F26B20a57cFd73D26'), + ('sETC', '\x2369D37ae9B30451D859C11CAbAc70df1CE48F78'), + ('sDASH', '\xc66499aCe3B6c6a30c784bE5511E8d338d543913'), + ('sXMR', '\x86FD9c0261E804476bA11056fFD758da2469ed56'), + ('sADA', '\x1Cda42C559D2EB137103D9A01d1ae736dEDA3aEF'), + ('sFTSE', '\x8D34924EAe7578692775fDd94Ed27bc355397E4a'), + ('sNIKKEI', '\x4CeB220C5E38E27ef5187F7ab853aC182D233d39'), + ('iEOS', '\xc66a263f2C7C1Af0bD70c6cA4Bff5936F3D6Ef9F'), + ('iBCH', '\x0E87a320daCE86A0b427FA2Bae282dE5c7697278'), + ('iETC', '\xF13f9E75913b352622F8AEEA5Ac32498b1C228d0'), + ('iDASH', '\x5f7A299Be82D8f5A626300c62C477b233F616121'), + ('iXMR', '\xC5D2b3f5DAf11B6111Af86a72A5938B0fE6c5045'), + ('iADA', '\x9D4193187B247a400E8D8ba716F1C18c0dC65528') +ON CONFLICT DO NOTHING; -CREATE OR REPLACE FUNCTION synthetix.insert_symbols ( - start_ts timestamptz, - end_ts timestamptz - = now ()) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION synthetix.insert_symbols(start_ts timestamptz, end_ts timestamptz=now()) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH rows -AS (INSERT INTO synthetix.symbols SELECT - trim ('\000' from encode ("currencyKey", 'escape')) AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts +WITH rows AS ( + INSERT INTO synthetix.symbols + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_27_2_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_27_2_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_28_4_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_28_4_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_30_0_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_30_0_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_31_1_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_31_1_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_35_2_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_35_2_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts - UNION + UNION - SELECT trim ('\000' from encode ("currencyKey", 'escape')) - AS symbol, - synth AS address, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_36_0_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; + SELECT trim('\000' from encode("currencyKey", 'escape')) AS symbol, synth AS address, evt_block_time AS block_time + FROM synthetix."Issuer_v2_36_0_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; -SELECT synthetix.insert_symbols ('2019-01-01', - (SELECT max (time) FROM ethereum.blocks)); +SELECT synthetix.insert_symbols('2019-01-01', (SELECT max(time) FROM ethereum.blocks)); + +INSERT INTO cron.job (schedule, command) +VALUES ('3 0 * * *', 'SELECT synthetix.insert_symbols((SELECT max(block_time) FROM synthetix.symbols));') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; -INSERT INTO cron.job (schedule, command) VALUES ( - '3 0 * * *', - 'SELECT synthetix.insert_symbols((SELECT max(block_time) FROM synthetix.symbols));') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; diff --git a/dune/abstractions/synthetix/synths.sql b/dune/abstractions/synthetix/synths.sql index 6230cb1..8085765 100644 --- a/dune/abstractions/synthetix/synths.sql +++ b/dune/abstractions/synthetix/synths.sql @@ -1,764 +1,249 @@ CREATE TABLE IF NOT EXISTS synthetix.synths ( - address bytea NOT NULL, currency_key bytea NOT NULL, - block_time timestamptz NOT NULL, PRIMARY KEY (currency_key, block_time)); - -INSERT INTO synthetix.synths VALUES ( - '\xB03dFc4b9C9756B6D4Fbc12DAde7732149Fcf00d' ::bytea, - '\x7341554400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xa5A4ccCCcAa26Cea096F6E493839423F4D66c63F' ::bytea, - '\x7342524c00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xf8AD89091B2724bdb7528c50B282B565Db4635bb' ::bytea, - '\x7342544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x8f69c9Ee79Bf9320E1A5C19e559108E1cb3d002B' ::bytea, - '\x7343414400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x9270D9970D6ACA773e2FA01633CDc091a46714c9' ::bytea, - '\x7343484600000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x60C34eB93AFCd1B701fF8C036B128441C68A8A70' ::bytea, - '\x73434e5900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xC2bb52457D81FBD223CC92b44cd372d36b338A10' ::bytea, - '\x7345555200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xdB36B8f25bB1f289d97aeE8f87BAcCaC58fA8883' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x51671B7556EbEB4c43180e983F5569973e15cAc9' ::bytea, - '\x73494e5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xD9E5A009Ec07dE76616d7361Ed713eF434d71325' ::bytea, - '\x734a505900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xdF846D3ded30A0590319f8A7ECD4e233B0e9188C' ::bytea, - '\x734b525700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\xCF401f31c63F58DEbfC76F441731dfa945cd0Bde' ::bytea, - '\x734e5a4400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x1943dBd2A793c588B5170188Ee6fb62E02AfdfF7' ::bytea, - '\x73504c4e00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x8a8DcbBa6038c6Fc6D192F5cf5C5dD83B98591bc' ::bytea, - '\x7352554200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x2aE393C18b6Aa62D6a2250aF7b803Fa6973bC981' ::bytea, - '\x7353474400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x0cBE2dF57CA9191B64a7Af3baa3F946fa7Df2F25' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x4D57A8212BDb8bdca049365BCE8afA0244a0E3FC' ::bytea, - '\x7358414700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x112D5fA64e4902B6ff1a35495a0f878c210A5601' ::bytea, - '\x7358415500000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-03-11T22:17:52.000Z' ::timestamptz), - ('\x42456D7084eacF4083f1140d3229471bbA2949A8' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-04-23T23:43:01.000Z' ::timestamptz), - ('\xC906de7f8b4C1a4787023F50F49CE98F9F67c4b8' ::bytea, - '\x73424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-04-23T23:43:01.000Z' ::timestamptz), - ('\xd8f6B6b6782632275B2B51230654f687f5b12Cde' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-04-23T23:43:01.000Z' ::timestamptz), - ('\x51Fe40e6292dbC44623b298a4086ffA6f5976ba1' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-04-23T23:43:01.000Z' ::timestamptz), - ('\x56751D5Ac7D2B614C79d22e6b52D3285cFA8a293' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-04-23T23:43:01.000Z' ::timestamptz), - ('\x13586160e4F890D0631c3C08D989f5b7AFe202b0' ::bytea, - '\x734d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-03T02:47:48.000Z' ::timestamptz), - ('\xa6e5DA838D3b8338783E0710E1D5F6C8e8E998CE' ::bytea, - '\x7354525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-03T02:47:48.000Z' ::timestamptz), - ('\x6E5Bc3e877CFaa06eF97dfA12e63EfbB8FCbb03e' ::bytea, - '\x7358545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-03T02:47:48.000Z' ::timestamptz), - ('\x0a24864596C54D79C825e64b281645249C14590C' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-06T03:28:25.000Z' ::timestamptz), - ('\xccC395f0eBFAA26dCC2D3BACc23d55614002236b' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\x9b461df6fc38E1baEC08c06EB9e916093af8d11C' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\xED4A3Adffa428fFD126AeD8ba5b8B58bb12c11ca' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\x99bcc501d04F400Ba3F78b5375D00B56acE6Ee0D' ::bytea, - '\x694d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\x87ea2450EaB99A74e55E2B446290011765393AC1' ::bytea, - '\x6954525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\xFE6Cd6dE459db214818492f532Ec02Ba87319437' ::bytea, - '\x6958545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-07-19T00:31:41.000Z' ::timestamptz), - ('\x6aa0f8620614aFe9BD4aBA3148439b08eb2557C0' ::bytea, - '\x7343455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-08-19T21:07:45.000Z' ::timestamptz), - ('\x66B86625ee80b06e94E027e44eA35680a0730233' ::bytea, - '\x6943455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-08-19T21:07:45.000Z' ::timestamptz), - ('\x710882750DDe5DBc64e5a7df23a8cF068dF74910' ::bytea, - '\x7341554400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x832177F21CCDcc286003faDF4e98fc11dc5C627F' ::bytea, - '\x7342544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x296b019E6dF25Ce3b71d4239b8C7CEc1a417d4E9' ::bytea, - '\x7343484600000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x45AA2F706C3d695aCC1DA9698Fb803b8Ef5157ba' ::bytea, - '\x7345555200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xD8C733Ac0B2Db47BbA7af7716Eb696e62C417D5b' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x11Dfa1Bf994Ea47e361eC474519Afd627e932eb0' ::bytea, - '\x734a505900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xd8B325e9a95aBc44cEdc90AAb64ec1f231F2Cc8f' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xD6308849094c5E6Eb0EDAba255A06Ca32B0106Bf' ::bytea, - '\x7358414700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x4a15d9dfC95ba7B9e33CE70e7E0762dc8F7AC237' ::bytea, - '\x7358415500000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x8519d1BDb4cC1753DF95C6E98F6Bd0E95dE568D9' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x33cE216C10dEA5E724b7A90628ce7853eef127B3' ::bytea, - '\x73424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xCe88906100c145522Be3a509683881241aBb3C52' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x3f3804176D90640aC6063124afd4bc0636aC85B6' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x57Ff288dd9D478b046647A5aB917195449F1F6e5' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xFAc2B3400Df00a348C3118831a45A05255F9004A' ::bytea, - '\x734d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x0dA04b80e21B344fCFD49C04bEC658E80F1D7428' ::bytea, - '\x7354525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\xC0b1F43Ee7b0670F7B34e14c4702e54a905A51B5' ::bytea, - '\x7358545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x047FC84504714d526808Be07BF17Bdd70726ef92' ::bytea, - '\x694d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x80eDAC70ec108a9c5B47972da9924397Ba974Ff9' ::bytea, - '\x6954525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x72661E76475354403838EB04144206f70Ff97d79' ::bytea, - '\x6958545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x93CfF799F255eDa2089cFB3F05696B5B66873C1A' ::bytea, - '\x7343455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x43e1505E315BE6C8b875a37F7D8753Ba84140A37' ::bytea, - '\x6943455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-09-26T08:58:44.000Z' ::timestamptz), - ('\x2656a6E566f8e60f444B283bf346fC74A9990c96' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x0577d4268ABE6777aE37688D015598819088297B' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\xFf6866FF46c71706DcD5A0A38f12279553bE6233' ::bytea, - '\x7358525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x8e0cC15bBCd10E170AC07982B5D6930502C63784' ::bytea, - '\x734c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x34B19046c6657D26B0C9b63d3Fb54C2754Ed4537' ::bytea, - '\x734c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x4917E9Ef69E3a1C82651c9158cA2c25b3A564760' ::bytea, - '\x7344454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\xcBBb17D9767bD57FBF4Bbf8842E916bCb3826ec1' ::bytea, - '\x6958525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\xEC114001D23eeFE6624Fb42cCbF4b3c793e295f1' ::bytea, - '\x694c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x05DD55C18999b4a2f905978C029B85dA37750170' ::bytea, - '\x694c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\x8E39e807D9eaE1cED9BCE296F211c38BA5ab2f9B' ::bytea, - '\x6944454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-11-08T00:49:46.000Z' ::timestamptz), - ('\xa6FE80c4c4AADb4B33dB7f22dc9AE2C4697cC406' ::bytea, - '\x7341554400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x6bCd1caE4A3c099c696B51f889bE2120DF62b7c0' ::bytea, - '\x7342544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xfF0b8894CC44F300e124bcd39F95555816b8B1d5' ::bytea, - '\x7343484600000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x68473dc4B7A4b0867fd7C5b9A982Fea407DAD320' ::bytea, - '\x7345555200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x486e27D56c0744970687927728598F8B96451Cc4' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x4B1cE9C42A381CB2d74ffeF20103e502e2fc619C' ::bytea, - '\x734a505900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x289e9a4674663decEE54f781AaDE5327304A32f8' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x3A412043939d9F7e53373b64f858ecB870a92E50' ::bytea, - '\x7358414700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x4d96b67f5BDe58A622D9bF2B8a1906C8B084fAf4' ::bytea, - '\x7358415500000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xD81AdA188331e627567BBEF80F91217cd3109592' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xE5787927410b659cc4eA2441cDaa361f9D7b250C' ::bytea, - '\x73424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x83266A95429b903cC5e954bF61c7eddf8a52b971' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xf53B56B6Fb98aaF514bcd28f6Fa6fd20C24E5c22' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x09400Ec683F70174E1217d6dcdBf42448E8De5d6' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x84965DCa28c4Eb9dE61d80f80e811eA12BE1c819' ::bytea, - '\x734d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x1A60E2E2A8BE0BC2B6381dd31Fd3fD5F9A28dE4c' ::bytea, - '\x7354525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xe109da5361299eD96D91146B8Cc12F682D21964e' ::bytea, - '\x7358545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xD95e7F80766580634B2E0E49d9F66af317994FC7' ::bytea, - '\x694d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x406555dbF02e9E4df9AdeAeC9DA76ABeED8C1BC3' ::bytea, - '\x6954525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xAD7258d0054c03112a4f5489A4B24eC34a2fc787' ::bytea, - '\x6958545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x8a3ca1d2d9a05683EB4DB447d0e3122Fec09d9ee' ::bytea, - '\x7343455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xDa5eD43B9B6E36b4f27cc6D8c1974532cdBd55F9' ::bytea, - '\x6943455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xC64CdA66Bc1d026b984D6BEE6aDBf71eAc8A099d' ::bytea, - '\x7358525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x088256945480c884C067a8Bc98A72A1C984f826B' ::bytea, - '\x734c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x46824bFAaFd049fB0Af9a45159A88e595Bbbb9f7' ::bytea, - '\x734c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xF778Ec504245EfE1eA010C5C3E50b6F5f5E117da' ::bytea, - '\x7344454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xd7adF1b5E31D1C40E08F16a2095338ce3aA8f2Fc' ::bytea, - '\x6958525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\x3DdF5dAd59F8F8e8f957709B044eE84e87B42e25' ::bytea, - '\x694c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xec98BB42C8F03485bf659378da694512a16f3482' ::bytea, - '\x694c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xC5Bfbc63dc8D36E81434e93e0ee097999879d7F4' ::bytea, - '\x6944454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2019-12-12T05:03:22.000Z' ::timestamptz), - ('\xACa2179a884bAC7C3D0bc4131585E1B7DbDD048e' ::bytea, - '\x7341554400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xF0ac210915BD88Ea51c9EB800a4078a85927efdF' ::bytea, - '\x7342544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x64C73355FBD0274e677609E8fb372427DF975508' ::bytea, - '\x7343484600000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x57e4A2D7D9b759Cf6FA2C937D52E408c66fB6384' ::bytea, - '\x7345555200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x8FA7FBb0144CeA832a76547aEAB1Ad8d9e4588F1' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x68043c3EAE66Ac1c28341867491E615412fc84FD' ::bytea, - '\x734a505900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x2A020C1ad728f1C12735bC4877CEECa4491A4a3D' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xd415e342a5C7Ee189D939b4DC17E85880fE1096A' ::bytea, - '\x7358414700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x00aB7c26A5a6C4C32D0b897E4Af3CB32F92aad34' ::bytea, - '\x7358415500000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x9f71b6596b2C9d357f9F04F8cA772fbD6e2c211C' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xaE3971E603b11dA40aea85d8c2355150c7c47683' ::bytea, - '\x73424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x810425566d1d3078B15A6f035b17886F18F3c54B' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xc0bA711B4E128425Be9245ce750D82c90b42D6D2' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xc68b5Eb9e035b2B84568A4C6201e3b200C0236ba' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x54A0326fB698c2CFACa5327550a897FA66d21f07' ::bytea, - '\x734d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x3d0e7c09242b0cAd4e81cB2f6D2183EF517500EF' ::bytea, - '\x7354525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x2CB1B47fB16013798086f267E04E6579dcb72A74' ::bytea, - '\x7358545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x10A0532DE3C86D9cE810F004FaBcf5a1EA464390' ::bytea, - '\x694d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x2DE37AF5BA64f5CaE3202Bf13dbEDc4D46e8046f' ::bytea, - '\x6954525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x59D39e14cC735b39746c94351E7fbDd92C8D0d3C' ::bytea, - '\x6958545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x2420057461bD2fb756e0A610897c51De7fB18311' ::bytea, - '\x7343455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xf7011510572d0EFE31d1E90cd6dc1EF84e6B13b8' ::bytea, - '\x6943455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x4dc1E8bAcc26D563941dCB59c72BD9FE58663778' ::bytea, - '\x7358525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x79BEf89A63bE04A75F1fA42E8f42ad873B6f43e2' ::bytea, - '\x734c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x3D663Dbe79fA9752815e03e129D6703eDE1C6D71' ::bytea, - '\x734c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xE725d6Ff29d0679C9Cb6Fa8972a1E8a7FB49610B' ::bytea, - '\x7344454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xccda7941aB1AC7a32F49843c0b3EDF618b20F6Ae' ::bytea, - '\x6958525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\x8c6680412e914932A9abC02B6c7cbf690e583aFA' ::bytea, - '\x694c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xfca2e82E5414c695c81b99D753b0b11c50bDC93D' ::bytea, - '\x694c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xaE7D62Fb6a305E6d9E9F8c43bbb41093c2bE52f6' ::bytea, - '\x6944454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-02-20T06:38:03.000Z' ::timestamptz), - ('\xe04d8770Dc06135Dd97214ea8bcbf7B1CC057AA3' ::bytea, - '\x7341554400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x17628A557d1Fc88D1c35989dcBAC3f3e275E2d2B' ::bytea, - '\x7342544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x253914cf059f4c3E277c28060C404acFc38FB6e2' ::bytea, - '\x7343484600000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x2fB419E7023b32201e9aB3aba947f5c101a5C30e' ::bytea, - '\x7345555200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xB3098Ae40f488ffdb979827Fd01597CC20c5a5A0' ::bytea, - '\x7347425000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x8ed1B71B00DbaB96A6db6DF0C910f749243de6D3' ::bytea, - '\x734a505900000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xAe38b81459d74A8C16eAa968c792207603D84480' ::bytea, - '\x7355534400000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x1B9d6cD65dDC981410cb93Af91B097667E0Bc7eE' ::bytea, - '\x7358414700000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xA408d8e01C8E084B67559226C5B55D6F0B7074e2' ::bytea, - '\x7358415500000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xD0DC005d31C2979CC0d38718e23c82D1A50004C0' ::bytea, - '\x7345544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xadaD43Be81E2206f6D1aF4299cA2a029e16af7AB' ::bytea, - '\x73424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xc704c9AA89d1ca60F67B3075d05fBb92b3B00B3B' ::bytea, - '\x6942544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xaE55F163337A2A46733AA66dA9F35299f9A46e9e' ::bytea, - '\x6945544800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xf86048DFf23cF130107dfB4e6386f574231a5C65' ::bytea, - '\x69424e4200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xD1599E478cC818AFa42A4839a6C665D9279C3E50' ::bytea, - '\x734d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xC4Be4583bc0307C56CF301975b2B2B1E5f95fcB2' ::bytea, - '\x7354525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x91DBC6f587D043FEfbaAD050AB48696B30F13d89' ::bytea, - '\x7358545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x1228c7D8BBc5bC53DB181bD7B1fcE765aa83bF8A' ::bytea, - '\x694d4b5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xdD87cbDe3C1f8F728C7924c8C9C983Af6dfcfeA8' ::bytea, - '\x6954525800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x6dFDFbfB4B180be4482F8b753fb33720C2831a9f' ::bytea, - '\x6958545a00000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x5eA2544551448cF6DcC1D853aDdd663D480fd8d3' ::bytea, - '\x7343455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x817c39c8825e12eA7752483c85dd2c800b78B357' ::bytea, - '\x6943455800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xF5d0BFBc617d3969C1AcE93490A76cE80Db1Ed0e' ::bytea, - '\x7358525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x6cF29c515A33209c6eCa43c293004ac80c0614f0' ::bytea, - '\x734c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xAf918f4a72BC34E59dFaF65866feC87947F1f590' ::bytea, - '\x734c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\xf5a6115Aa582Fd1BEEa22BC93B7dC7a785F60d03' ::bytea, - '\x7344454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x71Cd588eFA3609bc14E7B0c7C57dDDfd3a72E8a2' ::bytea, - '\x6958525000000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x63d630B6D89c21E171E86c51C7243284510DBd79' ::bytea, - '\x694c494e4b000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x0f5BdfD0958345C2e7Adb1741024aEd6Dd159e6C' ::bytea, - '\x694c544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x489d4D4c4bC781EAab3A36C44d66762Ceb6e1e2D' ::bytea, - '\x6944454649000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-03-31T04:11:35.000Z' ::timestamptz), - ('\x31a9c51eEd5282F11ae5CDD061A65A4ce0346C08' ::bytea, - '\x73454f5300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x9b68b85c61B082B2495B342F26B20a57cFd73D26' ::bytea, - '\x7342434800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x2369D37ae9B30451D859C11CAbAc70df1CE48F78' ::bytea, - '\x7345544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\xc66499aCe3B6c6a30c784bE5511E8d338d543913' ::bytea, - '\x7344415348000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x86FD9c0261E804476bA11056fFD758da2469ed56' ::bytea, - '\x73584d5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x1Cda42C559D2EB137103D9A01d1ae736dEDA3aEF' ::bytea, - '\x7341444100000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x8D34924EAe7578692775fDd94Ed27bc355397E4a' ::bytea, - '\x7346545345000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x4CeB220C5E38E27ef5187F7ab853aC182D233d39' ::bytea, - '\x734e494b4b454900000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\xc66a263f2C7C1Af0bD70c6cA4Bff5936F3D6Ef9F' ::bytea, - '\x69454f5300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x0E87a320daCE86A0b427FA2Bae282dE5c7697278' ::bytea, - '\x6942434800000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\xF13f9E75913b352622F8AEEA5Ac32498b1C228d0' ::bytea, - '\x6945544300000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x5f7A299Be82D8f5A626300c62C477b233F616121' ::bytea, - '\x6944415348000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\xC5D2b3f5DAf11B6111Af86a72A5938B0fE6c5045' ::bytea, - '\x69584d5200000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz), - ('\x9D4193187B247a400E8D8ba716F1C18c0dC65528' ::bytea, - '\x6941444100000000000000000000000000000000000000000000000000000000' :: - bytea, - '2020-04-02T09:34:45.000Z' ::timestamptz)ON CONFLICT DO NOTHING; - -CREATE INDEX synths_currency_key_block_time ON - synthetix.synths (currency_key, block_time DESC) INCLUDE (address); - -CREATE OR REPLACE FUNCTION synthetix.insert_synths ( - start_ts timestamptz, - end_ts timestamptz - = now ()) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; + address bytea NOT NULL, + currency_key bytea NOT NULL, + block_time timestamptz NOT NULL, + PRIMARY KEY(currency_key, block_time) +); + +INSERT INTO synthetix.synths VALUES + ('\xB03dFc4b9C9756B6D4Fbc12DAde7732149Fcf00d'::bytea, '\x7341554400000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xa5A4ccCCcAa26Cea096F6E493839423F4D66c63F'::bytea, '\x7342524c00000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xf8AD89091B2724bdb7528c50B282B565Db4635bb'::bytea, '\x7342544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x8f69c9Ee79Bf9320E1A5C19e559108E1cb3d002B'::bytea, '\x7343414400000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x9270D9970D6ACA773e2FA01633CDc091a46714c9'::bytea, '\x7343484600000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x60C34eB93AFCd1B701fF8C036B128441C68A8A70'::bytea, '\x73434e5900000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xC2bb52457D81FBD223CC92b44cd372d36b338A10'::bytea, '\x7345555200000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xdB36B8f25bB1f289d97aeE8f87BAcCaC58fA8883'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x51671B7556EbEB4c43180e983F5569973e15cAc9'::bytea, '\x73494e5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xD9E5A009Ec07dE76616d7361Ed713eF434d71325'::bytea, '\x734a505900000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xdF846D3ded30A0590319f8A7ECD4e233B0e9188C'::bytea, '\x734b525700000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\xCF401f31c63F58DEbfC76F441731dfa945cd0Bde'::bytea, '\x734e5a4400000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x1943dBd2A793c588B5170188Ee6fb62E02AfdfF7'::bytea, '\x73504c4e00000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x8a8DcbBa6038c6Fc6D192F5cf5C5dD83B98591bc'::bytea, '\x7352554200000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x2aE393C18b6Aa62D6a2250aF7b803Fa6973bC981'::bytea, '\x7353474400000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x0cBE2dF57CA9191B64a7Af3baa3F946fa7Df2F25'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x4D57A8212BDb8bdca049365BCE8afA0244a0E3FC'::bytea, '\x7358414700000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x112D5fA64e4902B6ff1a35495a0f878c210A5601'::bytea, '\x7358415500000000000000000000000000000000000000000000000000000000'::bytea, '2019-03-11T22:17:52.000Z'::timestamptz), + ('\x42456D7084eacF4083f1140d3229471bbA2949A8'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-04-23T23:43:01.000Z'::timestamptz), + ('\xC906de7f8b4C1a4787023F50F49CE98F9F67c4b8'::bytea, '\x73424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-04-23T23:43:01.000Z'::timestamptz), + ('\xd8f6B6b6782632275B2B51230654f687f5b12Cde'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-04-23T23:43:01.000Z'::timestamptz), + ('\x51Fe40e6292dbC44623b298a4086ffA6f5976ba1'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-04-23T23:43:01.000Z'::timestamptz), + ('\x56751D5Ac7D2B614C79d22e6b52D3285cFA8a293'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-04-23T23:43:01.000Z'::timestamptz), + ('\x13586160e4F890D0631c3C08D989f5b7AFe202b0'::bytea, '\x734d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-03T02:47:48.000Z'::timestamptz), + ('\xa6e5DA838D3b8338783E0710E1D5F6C8e8E998CE'::bytea, '\x7354525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-03T02:47:48.000Z'::timestamptz), + ('\x6E5Bc3e877CFaa06eF97dfA12e63EfbB8FCbb03e'::bytea, '\x7358545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-03T02:47:48.000Z'::timestamptz), + ('\x0a24864596C54D79C825e64b281645249C14590C'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-06T03:28:25.000Z'::timestamptz), + ('\xccC395f0eBFAA26dCC2D3BACc23d55614002236b'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\x9b461df6fc38E1baEC08c06EB9e916093af8d11C'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\xED4A3Adffa428fFD126AeD8ba5b8B58bb12c11ca'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\x99bcc501d04F400Ba3F78b5375D00B56acE6Ee0D'::bytea, '\x694d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\x87ea2450EaB99A74e55E2B446290011765393AC1'::bytea, '\x6954525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\xFE6Cd6dE459db214818492f532Ec02Ba87319437'::bytea, '\x6958545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-07-19T00:31:41.000Z'::timestamptz), + ('\x6aa0f8620614aFe9BD4aBA3148439b08eb2557C0'::bytea, '\x7343455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-08-19T21:07:45.000Z'::timestamptz), + ('\x66B86625ee80b06e94E027e44eA35680a0730233'::bytea, '\x6943455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-08-19T21:07:45.000Z'::timestamptz), + ('\x710882750DDe5DBc64e5a7df23a8cF068dF74910'::bytea, '\x7341554400000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x832177F21CCDcc286003faDF4e98fc11dc5C627F'::bytea, '\x7342544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x296b019E6dF25Ce3b71d4239b8C7CEc1a417d4E9'::bytea, '\x7343484600000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x45AA2F706C3d695aCC1DA9698Fb803b8Ef5157ba'::bytea, '\x7345555200000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xD8C733Ac0B2Db47BbA7af7716Eb696e62C417D5b'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x11Dfa1Bf994Ea47e361eC474519Afd627e932eb0'::bytea, '\x734a505900000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xd8B325e9a95aBc44cEdc90AAb64ec1f231F2Cc8f'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xD6308849094c5E6Eb0EDAba255A06Ca32B0106Bf'::bytea, '\x7358414700000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x4a15d9dfC95ba7B9e33CE70e7E0762dc8F7AC237'::bytea, '\x7358415500000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x8519d1BDb4cC1753DF95C6E98F6Bd0E95dE568D9'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x33cE216C10dEA5E724b7A90628ce7853eef127B3'::bytea, '\x73424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xCe88906100c145522Be3a509683881241aBb3C52'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x3f3804176D90640aC6063124afd4bc0636aC85B6'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x57Ff288dd9D478b046647A5aB917195449F1F6e5'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xFAc2B3400Df00a348C3118831a45A05255F9004A'::bytea, '\x734d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x0dA04b80e21B344fCFD49C04bEC658E80F1D7428'::bytea, '\x7354525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\xC0b1F43Ee7b0670F7B34e14c4702e54a905A51B5'::bytea, '\x7358545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x047FC84504714d526808Be07BF17Bdd70726ef92'::bytea, '\x694d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x80eDAC70ec108a9c5B47972da9924397Ba974Ff9'::bytea, '\x6954525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x72661E76475354403838EB04144206f70Ff97d79'::bytea, '\x6958545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x93CfF799F255eDa2089cFB3F05696B5B66873C1A'::bytea, '\x7343455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x43e1505E315BE6C8b875a37F7D8753Ba84140A37'::bytea, '\x6943455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-09-26T08:58:44.000Z'::timestamptz), + ('\x2656a6E566f8e60f444B283bf346fC74A9990c96'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x0577d4268ABE6777aE37688D015598819088297B'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\xFf6866FF46c71706DcD5A0A38f12279553bE6233'::bytea, '\x7358525000000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x8e0cC15bBCd10E170AC07982B5D6930502C63784'::bytea, '\x734c544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x34B19046c6657D26B0C9b63d3Fb54C2754Ed4537'::bytea, '\x734c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x4917E9Ef69E3a1C82651c9158cA2c25b3A564760'::bytea, '\x7344454649000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\xcBBb17D9767bD57FBF4Bbf8842E916bCb3826ec1'::bytea, '\x6958525000000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\xEC114001D23eeFE6624Fb42cCbF4b3c793e295f1'::bytea, '\x694c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x05DD55C18999b4a2f905978C029B85dA37750170'::bytea, '\x694c544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\x8E39e807D9eaE1cED9BCE296F211c38BA5ab2f9B'::bytea, '\x6944454649000000000000000000000000000000000000000000000000000000'::bytea, '2019-11-08T00:49:46.000Z'::timestamptz), + ('\xa6FE80c4c4AADb4B33dB7f22dc9AE2C4697cC406'::bytea, '\x7341554400000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x6bCd1caE4A3c099c696B51f889bE2120DF62b7c0'::bytea, '\x7342544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xfF0b8894CC44F300e124bcd39F95555816b8B1d5'::bytea, '\x7343484600000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x68473dc4B7A4b0867fd7C5b9A982Fea407DAD320'::bytea, '\x7345555200000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x486e27D56c0744970687927728598F8B96451Cc4'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x4B1cE9C42A381CB2d74ffeF20103e502e2fc619C'::bytea, '\x734a505900000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x289e9a4674663decEE54f781AaDE5327304A32f8'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x3A412043939d9F7e53373b64f858ecB870a92E50'::bytea, '\x7358414700000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x4d96b67f5BDe58A622D9bF2B8a1906C8B084fAf4'::bytea, '\x7358415500000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xD81AdA188331e627567BBEF80F91217cd3109592'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xE5787927410b659cc4eA2441cDaa361f9D7b250C'::bytea, '\x73424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x83266A95429b903cC5e954bF61c7eddf8a52b971'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xf53B56B6Fb98aaF514bcd28f6Fa6fd20C24E5c22'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x09400Ec683F70174E1217d6dcdBf42448E8De5d6'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x84965DCa28c4Eb9dE61d80f80e811eA12BE1c819'::bytea, '\x734d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x1A60E2E2A8BE0BC2B6381dd31Fd3fD5F9A28dE4c'::bytea, '\x7354525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xe109da5361299eD96D91146B8Cc12F682D21964e'::bytea, '\x7358545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xD95e7F80766580634B2E0E49d9F66af317994FC7'::bytea, '\x694d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x406555dbF02e9E4df9AdeAeC9DA76ABeED8C1BC3'::bytea, '\x6954525800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xAD7258d0054c03112a4f5489A4B24eC34a2fc787'::bytea, '\x6958545a00000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x8a3ca1d2d9a05683EB4DB447d0e3122Fec09d9ee'::bytea, '\x7343455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xDa5eD43B9B6E36b4f27cc6D8c1974532cdBd55F9'::bytea, '\x6943455800000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xC64CdA66Bc1d026b984D6BEE6aDBf71eAc8A099d'::bytea, '\x7358525000000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x088256945480c884C067a8Bc98A72A1C984f826B'::bytea, '\x734c544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x46824bFAaFd049fB0Af9a45159A88e595Bbbb9f7'::bytea, '\x734c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xF778Ec504245EfE1eA010C5C3E50b6F5f5E117da'::bytea, '\x7344454649000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xd7adF1b5E31D1C40E08F16a2095338ce3aA8f2Fc'::bytea, '\x6958525000000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\x3DdF5dAd59F8F8e8f957709B044eE84e87B42e25'::bytea, '\x694c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xec98BB42C8F03485bf659378da694512a16f3482'::bytea, '\x694c544300000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xC5Bfbc63dc8D36E81434e93e0ee097999879d7F4'::bytea, '\x6944454649000000000000000000000000000000000000000000000000000000'::bytea, '2019-12-12T05:03:22.000Z'::timestamptz), + ('\xACa2179a884bAC7C3D0bc4131585E1B7DbDD048e'::bytea, '\x7341554400000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xF0ac210915BD88Ea51c9EB800a4078a85927efdF'::bytea, '\x7342544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x64C73355FBD0274e677609E8fb372427DF975508'::bytea, '\x7343484600000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x57e4A2D7D9b759Cf6FA2C937D52E408c66fB6384'::bytea, '\x7345555200000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x8FA7FBb0144CeA832a76547aEAB1Ad8d9e4588F1'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x68043c3EAE66Ac1c28341867491E615412fc84FD'::bytea, '\x734a505900000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x2A020C1ad728f1C12735bC4877CEECa4491A4a3D'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xd415e342a5C7Ee189D939b4DC17E85880fE1096A'::bytea, '\x7358414700000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x00aB7c26A5a6C4C32D0b897E4Af3CB32F92aad34'::bytea, '\x7358415500000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x9f71b6596b2C9d357f9F04F8cA772fbD6e2c211C'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xaE3971E603b11dA40aea85d8c2355150c7c47683'::bytea, '\x73424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x810425566d1d3078B15A6f035b17886F18F3c54B'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xc0bA711B4E128425Be9245ce750D82c90b42D6D2'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xc68b5Eb9e035b2B84568A4C6201e3b200C0236ba'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x54A0326fB698c2CFACa5327550a897FA66d21f07'::bytea, '\x734d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x3d0e7c09242b0cAd4e81cB2f6D2183EF517500EF'::bytea, '\x7354525800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x2CB1B47fB16013798086f267E04E6579dcb72A74'::bytea, '\x7358545a00000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x10A0532DE3C86D9cE810F004FaBcf5a1EA464390'::bytea, '\x694d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x2DE37AF5BA64f5CaE3202Bf13dbEDc4D46e8046f'::bytea, '\x6954525800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x59D39e14cC735b39746c94351E7fbDd92C8D0d3C'::bytea, '\x6958545a00000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x2420057461bD2fb756e0A610897c51De7fB18311'::bytea, '\x7343455800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xf7011510572d0EFE31d1E90cd6dc1EF84e6B13b8'::bytea, '\x6943455800000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x4dc1E8bAcc26D563941dCB59c72BD9FE58663778'::bytea, '\x7358525000000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x79BEf89A63bE04A75F1fA42E8f42ad873B6f43e2'::bytea, '\x734c544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x3D663Dbe79fA9752815e03e129D6703eDE1C6D71'::bytea, '\x734c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xE725d6Ff29d0679C9Cb6Fa8972a1E8a7FB49610B'::bytea, '\x7344454649000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xccda7941aB1AC7a32F49843c0b3EDF618b20F6Ae'::bytea, '\x6958525000000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\x8c6680412e914932A9abC02B6c7cbf690e583aFA'::bytea, '\x694c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xfca2e82E5414c695c81b99D753b0b11c50bDC93D'::bytea, '\x694c544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xaE7D62Fb6a305E6d9E9F8c43bbb41093c2bE52f6'::bytea, '\x6944454649000000000000000000000000000000000000000000000000000000'::bytea, '2020-02-20T06:38:03.000Z'::timestamptz), + ('\xe04d8770Dc06135Dd97214ea8bcbf7B1CC057AA3'::bytea, '\x7341554400000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x17628A557d1Fc88D1c35989dcBAC3f3e275E2d2B'::bytea, '\x7342544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x253914cf059f4c3E277c28060C404acFc38FB6e2'::bytea, '\x7343484600000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x2fB419E7023b32201e9aB3aba947f5c101a5C30e'::bytea, '\x7345555200000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xB3098Ae40f488ffdb979827Fd01597CC20c5a5A0'::bytea, '\x7347425000000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x8ed1B71B00DbaB96A6db6DF0C910f749243de6D3'::bytea, '\x734a505900000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xAe38b81459d74A8C16eAa968c792207603D84480'::bytea, '\x7355534400000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x1B9d6cD65dDC981410cb93Af91B097667E0Bc7eE'::bytea, '\x7358414700000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xA408d8e01C8E084B67559226C5B55D6F0B7074e2'::bytea, '\x7358415500000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xD0DC005d31C2979CC0d38718e23c82D1A50004C0'::bytea, '\x7345544800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xadaD43Be81E2206f6D1aF4299cA2a029e16af7AB'::bytea, '\x73424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xc704c9AA89d1ca60F67B3075d05fBb92b3B00B3B'::bytea, '\x6942544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xaE55F163337A2A46733AA66dA9F35299f9A46e9e'::bytea, '\x6945544800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xf86048DFf23cF130107dfB4e6386f574231a5C65'::bytea, '\x69424e4200000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xD1599E478cC818AFa42A4839a6C665D9279C3E50'::bytea, '\x734d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xC4Be4583bc0307C56CF301975b2B2B1E5f95fcB2'::bytea, '\x7354525800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x91DBC6f587D043FEfbaAD050AB48696B30F13d89'::bytea, '\x7358545a00000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x1228c7D8BBc5bC53DB181bD7B1fcE765aa83bF8A'::bytea, '\x694d4b5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xdD87cbDe3C1f8F728C7924c8C9C983Af6dfcfeA8'::bytea, '\x6954525800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x6dFDFbfB4B180be4482F8b753fb33720C2831a9f'::bytea, '\x6958545a00000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x5eA2544551448cF6DcC1D853aDdd663D480fd8d3'::bytea, '\x7343455800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x817c39c8825e12eA7752483c85dd2c800b78B357'::bytea, '\x6943455800000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xF5d0BFBc617d3969C1AcE93490A76cE80Db1Ed0e'::bytea, '\x7358525000000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x6cF29c515A33209c6eCa43c293004ac80c0614f0'::bytea, '\x734c544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xAf918f4a72BC34E59dFaF65866feC87947F1f590'::bytea, '\x734c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\xf5a6115Aa582Fd1BEEa22BC93B7dC7a785F60d03'::bytea, '\x7344454649000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x71Cd588eFA3609bc14E7B0c7C57dDDfd3a72E8a2'::bytea, '\x6958525000000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x63d630B6D89c21E171E86c51C7243284510DBd79'::bytea, '\x694c494e4b000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x0f5BdfD0958345C2e7Adb1741024aEd6Dd159e6C'::bytea, '\x694c544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x489d4D4c4bC781EAab3A36C44d66762Ceb6e1e2D'::bytea, '\x6944454649000000000000000000000000000000000000000000000000000000'::bytea, '2020-03-31T04:11:35.000Z'::timestamptz), + ('\x31a9c51eEd5282F11ae5CDD061A65A4ce0346C08'::bytea, '\x73454f5300000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x9b68b85c61B082B2495B342F26B20a57cFd73D26'::bytea, '\x7342434800000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x2369D37ae9B30451D859C11CAbAc70df1CE48F78'::bytea, '\x7345544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\xc66499aCe3B6c6a30c784bE5511E8d338d543913'::bytea, '\x7344415348000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x86FD9c0261E804476bA11056fFD758da2469ed56'::bytea, '\x73584d5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x1Cda42C559D2EB137103D9A01d1ae736dEDA3aEF'::bytea, '\x7341444100000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x8D34924EAe7578692775fDd94Ed27bc355397E4a'::bytea, '\x7346545345000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x4CeB220C5E38E27ef5187F7ab853aC182D233d39'::bytea, '\x734e494b4b454900000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\xc66a263f2C7C1Af0bD70c6cA4Bff5936F3D6Ef9F'::bytea, '\x69454f5300000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x0E87a320daCE86A0b427FA2Bae282dE5c7697278'::bytea, '\x6942434800000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\xF13f9E75913b352622F8AEEA5Ac32498b1C228d0'::bytea, '\x6945544300000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x5f7A299Be82D8f5A626300c62C477b233F616121'::bytea, '\x6944415348000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\xC5D2b3f5DAf11B6111Af86a72A5938B0fE6c5045'::bytea, '\x69584d5200000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz), + ('\x9D4193187B247a400E8D8ba716F1C18c0dC65528'::bytea, '\x6941444100000000000000000000000000000000000000000000000000000000'::bytea, '2020-04-02T09:34:45.000Z'::timestamptz) +ON CONFLICT DO NOTHING; + +CREATE INDEX synths_currency_key_block_time ON synthetix.synths (currency_key, block_time DESC) INCLUDE (address); + +CREATE OR REPLACE FUNCTION synthetix.insert_synths(start_ts timestamptz, end_ts timestamptz=now()) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH rows -AS (INSERT INTO synthetix.synths SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_27_2_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_28_4_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_30_0_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_31_1_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_35_2_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time < end_ts - - UNION - - SELECT synth AS address, - "currencyKey" AS currency_key, - evt_block_time AS block_time FROM - synthetix."Issuer_v2_36_0_evt_SynthAdded" WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH rows AS ( + INSERT INTO synthetix.synths + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_27_2_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_28_4_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_30_0_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_31_1_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_35_2_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + + UNION + + SELECT synth AS address, "currencyKey" AS currency_key, evt_block_time AS block_time + FROM synthetix."Issuer_v2_36_0_evt_SynthAdded" + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; + +SELECT synthetix.insert_synths('2018-01-01', (SELECT max(time) FROM ethereum.blocks)); -SELECT synthetix.insert_synths ('2018-01-01', - (SELECT max (time) FROM ethereum.blocks)); +INSERT INTO cron.job (schedule, command) +VALUES ('3 0 * * *', 'SELECT synthetix.insert_synths((SELECT max(block_time) FROM synthetix.synths));') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; -INSERT INTO cron.job (schedule, command) VALUES ( - '3 0 * * *', - 'SELECT synthetix.insert_synths((SELECT max(block_time) FROM synthetix.synths));') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; diff --git a/dune/abstractions/synthetix/trades.sql b/dune/abstractions/synthetix/trades.sql index a07c5b7..3209095 100644 --- a/dune/abstractions/synthetix/trades.sql +++ b/dune/abstractions/synthetix/trades.sql @@ -1,61 +1,67 @@ CREATE TABLE synthetix.trades ( - block_time timestamptz NOT NULL, token_a_amount numeric, - token_b_amount numeric, token_a_amount_usd numeric, - token_b_amount_usd numeric, project text NOT NULL, version text, - trader_a bytea, trader_b bytea, token_a_amount_raw numeric, - token_b_amount_raw numeric, token_a_address bytea, token_b_address bytea, - exchange_contract_address bytea NOT NULL, tx_hash bytea NOT NULL, - trace_address integer[], evt_index integer, trade_id integer); + block_time timestamptz NOT NULL, + token_a_amount numeric, + token_b_amount numeric, + token_a_amount_usd numeric, + token_b_amount_usd numeric, + project text NOT NULL, + version text, + trader_a bytea, + trader_b bytea, + token_a_amount_raw numeric, + token_b_amount_raw numeric, + token_a_address bytea, + token_b_address bytea, + exchange_contract_address bytea NOT NULL, + tx_hash bytea NOT NULL, + trace_address integer[], + evt_index integer, + trade_id integer +); -CREATE UNIQUE INDEX IF NOT EXISTS synth_trades_evt_index_uniq_idx ON - synthetix.trades (tx_hash, evt_index, trade_id); -CREATE INDEX IF NOT EXISTS synth_trades_block_time_idx ON synthetix.trades - USING BRIN (block_time); +CREATE UNIQUE INDEX IF NOT EXISTS synth_trades_evt_index_uniq_idx ON synthetix.trades (tx_hash, evt_index, trade_id); +CREATE INDEX IF NOT EXISTS synth_trades_block_time_idx ON synthetix.trades USING BRIN (block_time); -CREATE OR REPLACE FUNCTION synthetix.insert_trades ( - start_ts timestamptz, - end_ts timestamptz - = now ()) RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION synthetix.insert_trades(start_ts timestamptz, end_ts timestamptz=now()) RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH rows -AS (INSERT INTO synthetix.trades SELECT trade.evt_block_time AS block_time, - trade."fromAmount" / 1e18 AS token_a_amount, - trade."toAmount" / 1e18 AS token_b_amount, - trade."fromAmount" / 1e18 - * (SELECT currency_rate FROM synthetix.rates WHERE - trade."fromCurrencyKey" - = currency_key AND block_time - <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) - / 1e18 as token_a_amount_usd, - trade."toAmount" / 1e18 - * (SELECT currency_rate FROM synthetix.rates WHERE - trade."toCurrencyKey" - = currency_key AND block_time - <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) - / 1e18 as token_b_amount_usd, - 'Synthetix' AS project, '1' AS version, trade.account AS trader_a, - NULL::bytea AS trader_b, trade."fromAmount" AS token_a_amount_raw, - trade."toAmount" AS token_b_amount_raw, - (SELECT address FROM synthetix.synths WHERE trade."fromCurrencyKey" - = currency_key AND block_time - <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) - AS token_a_address, - (SELECT address FROM synthetix.synths WHERE trade."toCurrencyKey" - = currency_key AND block_time - <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) - AS token_b_address, - trade.contract_address AS exchange_contract_address, - trade.evt_tx_hash AS tx_hash, NULL::integer[] AS trace_address, - trade.evt_index AS evt_index, - row_number () OVER (PARTITION BY evt_tx_hash, evt_index) AS trade_id FROM - synthetix."Synthetix_evt_SynthExchange" trade WHERE evt_block_time - >= start_ts AND evt_block_time - < end_ts ON CONFLICT DO NOTHING RETURNING 1) SELECT - count (*) INTO r from rows; +WITH rows AS ( + INSERT INTO synthetix.trades + SELECT + trade.evt_block_time AS block_time, + trade."fromAmount"/1e18 AS token_a_amount, + trade."toAmount"/1e18 AS token_b_amount, + trade."fromAmount"/1e18 * (SELECT currency_rate FROM synthetix.rates WHERE trade."fromCurrencyKey" = currency_key AND block_time <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1)/1e18 as token_a_amount_usd, + trade."toAmount"/1e18 * (SELECT currency_rate FROM synthetix.rates WHERE trade."toCurrencyKey" = currency_key AND block_time <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1)/1e18 as token_b_amount_usd, + 'Synthetix' AS project, + '1' AS version, + trade.account AS trader_a, + NULL::bytea AS trader_b, + trade."fromAmount" AS token_a_amount_raw, + trade."toAmount" AS token_b_amount_raw, + (SELECT address FROM synthetix.synths WHERE trade."fromCurrencyKey" = currency_key AND block_time <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) AS token_a_address, + (SELECT address FROM synthetix.synths WHERE trade."toCurrencyKey" = currency_key AND block_time <= trade.evt_block_time ORDER BY block_time DESC LIMIT 1) AS token_b_address, + trade.contract_address AS exchange_contract_address, + trade.evt_tx_hash AS tx_hash, + NULL::integer[] AS trace_address, + trade.evt_index AS evt_index, + row_number() OVER (PARTITION BY evt_tx_hash, evt_index) AS trade_id + FROM + synthetix."Synthetix_evt_SynthExchange" trade + WHERE evt_block_time >= start_ts + AND evt_block_time < end_ts + ON CONFLICT DO NOTHING + RETURNING 1 +) +SELECT count(*) INTO r from rows; RETURN r; -END $function$; +END +$function$; + + +INSERT INTO cron.job (schedule, command) +VALUES ('*/10 * * * *', 'SELECT synthetix.insert_trades((SELECT max(block_time) FROM synthetix.trades));') +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; + -INSERT INTO cron.job (schedule, command) VALUES ( - '*/10 * * * *', - 'SELECT synthetix.insert_trades((SELECT max(block_time) FROM synthetix.trades));') - ON CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; diff --git a/dune/abstractions/token_balances/project_addresses.sql b/dune/abstractions/token_balances/project_addresses.sql index 3372d9b..c19efc4 100644 --- a/dune/abstractions/token_balances/project_addresses.sql +++ b/dune/abstractions/token_balances/project_addresses.sql @@ -1,56 +1,64 @@ CREATE TABLE IF NOT EXISTS token_balances.project_addresses ( - address bytea PRIMARY KEY, project text, details text); + address bytea PRIMARY KEY, + project text, + details text +); -CREATE OR REPLACE FUNCTION token_balances.insert_addresses () - RETURNS integer LANGUAGE plpgsql AS $function$ DECLARE r integer; +CREATE OR REPLACE FUNCTION token_balances.insert_addresses() RETURNS integer +LANGUAGE plpgsql AS $function$ +DECLARE r integer; BEGIN -WITH rows AS ( + WITH rows AS ( - INSERT INTO token_balances.project_addresses (address, project, details) + INSERT INTO token_balances.project_addresses (address, project, details) - -- uniswap v1 SELECT DISTINCT exchange AS address, - 'Uniswap' AS project, - 'v1' AS details FROM uniswap."Factory_evt_NewExchange" + -- uniswap v1 + SELECT DISTINCT exchange AS address, 'Uniswap' AS project, 'v1' AS details + FROM uniswap."Factory_evt_NewExchange" - UNION ALL + UNION ALL - -- uniswap v2 SELECT DISTINCT pair AS address, - 'Uniswap' AS project, - 'v2' AS details FROM uniswap_v2."Factory_evt_PairCreated" + -- uniswap v2 + SELECT DISTINCT pair AS address, 'Uniswap' AS project, 'v2' AS details + FROM uniswap_v2."Factory_evt_PairCreated" - UNION ALL + UNION ALL - -- compound v1 SELECT DISTINCT contract_address AS address, - 'Compound' AS project, - 'v1' AS details FROM compound_v1."MoneyMarket_evt_SupplyReceived" + --compound v1 + SELECT DISTINCT contract_address AS address, 'Compound' AS project, 'v1' AS details + FROM compound_v1."MoneyMarket_evt_SupplyReceived" - UNION ALL-- --compound v2 SELECT DISTINCT "cToken" AS address, - 'Compound' AS project, - 'v2' AS details FROM compound_v2."Unitroller_evt_MarketListed" + UNION ALL + -- + -- compound v2 + SELECT DISTINCT "cToken" AS address, 'Compound' AS project, 'v2' AS details + FROM compound_v2."Unitroller_evt_MarketListed" - UNION ALL + UNION ALL - -- maker multi collateral dai SELECT DISTINCT address, - project, - 'MCD' AS details FROM makermcd.collateral_addresses + -- maker multi collateral dai + SELECT DISTINCT address, project, 'MCD' AS details + FROM makermcd.collateral_addresses UNION ALL - -- aave SELECT '\x3dfd23A6c5E8BbcFc9581d2E864a68feb6a076d3' ::bytea AS - address, - 'Aave' AS project, - NULL::text AS details-- UNION ALL + -- aave + SELECT '\x3dfd23A6c5E8BbcFc9581d2E864a68feb6a076d3'::bytea AS address, 'Aave' AS project, NULL::text AS details + -- + UNION ALL - -- curve.fi SELECT DISTINCT (exchange_contract_address), - 'Curve' AS project, - NULL::text AS details FROM curvefi.view_trades + -- curve.fi + SELECT DISTINCT(exchange_contract_address), 'Curve' AS project, NULL::text AS details + FROM curvefi.view_trades - ON CONFLICT (address) DO UPDATE SET project - = EXCLUDED.project, - details = EXCLUDED.details RETURNING 1) SELECT count (*) INTO r from rows; -RETURN r; -END $function$; + ON CONFLICT (address) DO UPDATE SET project=EXCLUDED.project, details=EXCLUDED.details + RETURNING 1 + ) + SELECT count(*) INTO r from rows; + RETURN r; +END +$function$; INSERT INTO cron.job (schedule, command) - VALUES ('59 * * * *', $$SELECT token_balances.insert_addresses (); $$) ON - CONFLICT (command) DO UPDATE SET schedule = EXCLUDED.schedule; \ No newline at end of file +VALUES ('59 * * * *', $$SELECT token_balances.insert_addresses();$$) +ON CONFLICT (command) DO UPDATE SET schedule=EXCLUDED.schedule; \ No newline at end of file diff --git a/labels/ethereum/balancer_arbitrage.sql b/labels/ethereum/balancer_arbitrage.sql new file mode 100644 index 0000000..2cdbb0a --- /dev/null +++ b/labels/ethereum/balancer_arbitrage.sql @@ -0,0 +1,29 @@ +SELECT + DISTINCT(t.to) AS address, + 'arbitrage bot' AS label, + 'dapp usage' AS type, + 'balancerlabs' AS author +FROM dex.trades t1 +INNER JOIN dex.trades t2 +ON t1.tx_hash = t2.tx_hash +AND t1.token_a_address = t2.token_b_address +AND t1.token_b_address = t2.token_a_address +AND ((t1.project = 'Balancer' AND t2.project = 'Uniswap') or (t1.project = 'Uniswap' AND t2.project = 'Balancer')) +INNER JOIN ethereum.transactions t ON t.hash = t1.tx_hash +WHERE t1.block_time >= '{{timestamp}}' +AND t2.block_time >= '{{timestamp}}' +UNION ALL +SELECT + DISTINCT(t.to) AS address, + 'arbitrage bot' AS label, + 'dapp usage' AS type, + 'balancerlabs' AS author +FROM dex.trades t1 +INNER JOIN dex.trades t2 +ON t1.tx_hash = t2.tx_hash +AND t1.token_a_address = t2.token_b_address +AND t1.token_b_address = t2.token_a_address +AND ((t1.project = 'Balancer' AND t2.project = 'Sushiswap') or (t1.project = 'Sushiswap' AND t2.project = 'Balancer')) +INNER JOIN ethereum.transactions t ON t.hash = t1.tx_hash +WHERE t1.block_time >= '{{timestamp}}' +AND t2.block_time >= '{{timestamp}}' diff --git a/labels/ethereum/contracts.sql b/labels/ethereum/contracts.sql index bae0743..47328ff 100644 --- a/labels/ethereum/contracts.sql +++ b/labels/ethereum/contracts.sql @@ -7,6 +7,8 @@ FROM ethereum.contracts WHERE address IS NOT NULL +AND + updated_at >= '{{timestamp}}' UNION SELECT address, diff --git a/package.json b/package.json index c8f2154..2c396aa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dune-snippets", - "version": "1.8.0", + "version": "1.8.1", "description": "Dune Analytics Snippets", "main": "dune/index.json", "scripts": {