From c26910e74b7a28343b1d06c66cd3c2b25e64154c Mon Sep 17 00:00:00 2001 From: Luke Van Seters Date: Wed, 19 Jan 2022 17:07:24 -0500 Subject: [PATCH 1/2] Add liquidations to the summary --- mev_inspect/crud/summary.py | 78 +++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/mev_inspect/crud/summary.py b/mev_inspect/crud/summary.py index 81f5614..1399cb0 100644 --- a/mev_inspect/crud/summary.py +++ b/mev_inspect/crud/summary.py @@ -70,6 +70,76 @@ INSERT INTO mev_summary ( ) """ +INSERT_LIQUIDATIONS_SUMMARY_QUERY = """ +SELECT + l.block_number, + b.block_timestamp, + l.transaction_hash, + 'liquidation' as type, + l.protocol as protocol, + l.received_amount* + ( + SELECT usd_price + FROM prices + WHERE token_address = l.received_token_address + AND timestamp <= b.block_timestamp + ORDER BY timestamp DESC + LIMIT 1 + ) + /POWER(10, received_token.decimals) + + - + + l.debt_purchase_amount* + ( + SELECT usd_price + FROM prices + WHERE token_address = l.debt_token_address + AND timestamp <= b.block_timestamp + ORDER BY timestamp DESC + LIMIT 1 + ) + /POWER(10, debt_token.decimals) as gross_profit_usd, + ( + ( + ((mp.gas_used * mp.gas_price) + mp.coinbase_transfer) / + POWER(10, 18) + ) * + ( + SELECT usd_price + FROM prices p + WHERE + p.timestamp <= b.block_timestamp + AND p.token_address = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' + ORDER BY p.timestamp DESC + LIMIT 1 + ) + ) AS miner_payment_usd, + mp.gas_used, + mp.gas_price, + mp.coinbase_transfer, + mp.gas_price_with_coinbase_transfer, + mp.miner_address, + ct.error +FROM liquidations l +JOIN blocks b ON b.block_number = l.block_number +JOIN tokens received_token ON received_token.token_address = l.received_token_address +JOIN tokens debt_token ON debt_token.token_address = l.debt_token_address +JOIN miner_payments mp ON + mp.block_number = l.block_number AND + mp.transaction_hash = l.transaction_hash +JOIN classified_traces ct ON + ct.block_number = l.block_number AND + ct.transaction_hash = l.transaction_hash +WHERE + b.block_number >= :after_block_number AND + b.block_number < :before_block_number AND + ct.trace_address = '{}' AND + l.debt_purchase_amount > 0 AND + l.received_amount > 0 AND + l.debt_purchase_amount < 115792089237316195423570985008687907853269984665640564039457584007913129639935 +""" + def update_summary_for_block_range( db_session, @@ -116,4 +186,12 @@ def _insert_into_summary_for_block_range( }, ) + db_session.execute( + INSERT_LIQUIDATIONS_SUMMARY_QUERY, + params={ + "after_block_number": after_block_number, + "before_block_number": before_block_number, + }, + ) + db_session.commit() From 0266582889ec57b5c6c31ffebab9d4d5c7380a09 Mon Sep 17 00:00:00 2001 From: Luke Van Seters Date: Thu, 20 Jan 2022 10:10:50 -0500 Subject: [PATCH 2/2] Actually insert the data. Fix the ordering --- mev_inspect/crud/summary.py | 130 +++++++++++++++++++----------------- 1 file changed, 67 insertions(+), 63 deletions(-) diff --git a/mev_inspect/crud/summary.py b/mev_inspect/crud/summary.py index 1399cb0..85a2961 100644 --- a/mev_inspect/crud/summary.py +++ b/mev_inspect/crud/summary.py @@ -71,73 +71,77 @@ INSERT INTO mev_summary ( """ INSERT_LIQUIDATIONS_SUMMARY_QUERY = """ -SELECT - l.block_number, - b.block_timestamp, - l.transaction_hash, - 'liquidation' as type, - l.protocol as protocol, - l.received_amount* - ( - SELECT usd_price - FROM prices - WHERE token_address = l.received_token_address - AND timestamp <= b.block_timestamp - ORDER BY timestamp DESC - LIMIT 1 - ) - /POWER(10, received_token.decimals) - - - - - l.debt_purchase_amount* - ( - SELECT usd_price - FROM prices - WHERE token_address = l.debt_token_address - AND timestamp <= b.block_timestamp - ORDER BY timestamp DESC - LIMIT 1 - ) - /POWER(10, debt_token.decimals) as gross_profit_usd, - ( - ( - ((mp.gas_used * mp.gas_price) + mp.coinbase_transfer) / - POWER(10, 18) - ) * +INSERT INTO mev_summary ( + SELECT + NULL, + l.block_number, + b.block_timestamp, + l.protocol as protocol, + l.transaction_hash, + 'liquidation' as type, + l.received_amount* ( SELECT usd_price - FROM prices p - WHERE - p.timestamp <= b.block_timestamp - AND p.token_address = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' - ORDER BY p.timestamp DESC + FROM prices + WHERE token_address = l.received_token_address + AND timestamp <= b.block_timestamp + ORDER BY timestamp DESC LIMIT 1 ) - ) AS miner_payment_usd, - mp.gas_used, - mp.gas_price, - mp.coinbase_transfer, - mp.gas_price_with_coinbase_transfer, - mp.miner_address, - ct.error -FROM liquidations l -JOIN blocks b ON b.block_number = l.block_number -JOIN tokens received_token ON received_token.token_address = l.received_token_address -JOIN tokens debt_token ON debt_token.token_address = l.debt_token_address -JOIN miner_payments mp ON - mp.block_number = l.block_number AND - mp.transaction_hash = l.transaction_hash -JOIN classified_traces ct ON - ct.block_number = l.block_number AND - ct.transaction_hash = l.transaction_hash -WHERE - b.block_number >= :after_block_number AND - b.block_number < :before_block_number AND - ct.trace_address = '{}' AND - l.debt_purchase_amount > 0 AND - l.received_amount > 0 AND - l.debt_purchase_amount < 115792089237316195423570985008687907853269984665640564039457584007913129639935 + /POWER(10, received_token.decimals) + + - + + l.debt_purchase_amount* + ( + SELECT usd_price + FROM prices + WHERE token_address = l.debt_token_address + AND timestamp <= b.block_timestamp + ORDER BY timestamp DESC + LIMIT 1 + ) + /POWER(10, debt_token.decimals) as gross_profit_usd, + ( + ( + ((mp.gas_used * mp.gas_price) + mp.coinbase_transfer) / + POWER(10, 18) + ) * + ( + SELECT usd_price + FROM prices p + WHERE + p.timestamp <= b.block_timestamp + AND p.token_address = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' + ORDER BY p.timestamp DESC + LIMIT 1 + ) + ) AS miner_payment_usd, + mp.gas_used, + mp.gas_price, + mp.coinbase_transfer, + mp.gas_price_with_coinbase_transfer, + mp.miner_address, + mp.base_fee_per_gas, + ct.error as error + FROM liquidations l + JOIN blocks b ON b.block_number = l.block_number + JOIN tokens received_token ON received_token.token_address = l.received_token_address + JOIN tokens debt_token ON debt_token.token_address = l.debt_token_address + JOIN miner_payments mp ON + mp.block_number = l.block_number AND + mp.transaction_hash = l.transaction_hash + JOIN classified_traces ct ON + ct.block_number = l.block_number AND + ct.transaction_hash = l.transaction_hash + WHERE + b.block_number >= :after_block_number AND + b.block_number < :before_block_number AND + ct.trace_address = '{}' AND + l.debt_purchase_amount > 0 AND + l.received_amount > 0 AND + l.debt_purchase_amount < 115792089237316195423570985008687907853269984665640564039457584007913129639935 +) """