diff --git a/alembic/versions/d70c08b4db6f_add_to_address_and_from_address_to_.py b/alembic/versions/d70c08b4db6f_add_to_address_and_from_address_to_.py new file mode 100644 index 0000000..01f075c --- /dev/null +++ b/alembic/versions/d70c08b4db6f_add_to_address_and_from_address_to_.py @@ -0,0 +1,32 @@ +"""Add to_address and from_address to miner_payments table + +Revision ID: d70c08b4db6f +Revises: 083978d6e455 +Create Date: 2021-08-30 22:10:04.186251 + +""" +import sqlalchemy as sa +from alembic import op + + +# revision identifiers, used by Alembic. +revision = "d70c08b4db6f" +down_revision = "083978d6e455" +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + "miner_payments", + sa.Column("transaction_to_address", sa.String(256), nullable=True), + ) + op.add_column( + "miner_payments", + sa.Column("transaction_from_address", sa.String(256), nullable=True), + ) + + +def downgrade(): + op.drop_column("miner_payments", "transaction_to_address") + op.drop_column("miner_payments", "transaction_from_address") diff --git a/mev_inspect/miner_payments.py b/mev_inspect/miner_payments.py index e4fbeef..cb3d80f 100644 --- a/mev_inspect/miner_payments.py +++ b/mev_inspect/miner_payments.py @@ -22,6 +22,12 @@ def get_miner_payments( for receipt in receipts: transaciton_traces = traces_by_transaction_hash[receipt.transaction_hash] + + if len(transaciton_traces) == 0: + continue + + first_trace = sorted(transaciton_traces, key=lambda t: t.trace_address)[0] + eth_transfers = get_eth_transfers(transaciton_traces) miner_eth_transfers = filter_transfers( eth_transfers, to_address=miner_address.lower() @@ -46,6 +52,8 @@ def get_miner_payments( base_fee_per_gas=base_fee_per_gas, gas_used=receipt.gas_used, coinbase_transfer=coinbase_transfer, + transaction_to_address=first_trace.to_address, + transaction_from_address=first_trace.from_address, ) ) diff --git a/mev_inspect/models/miner_payments.py b/mev_inspect/models/miner_payments.py index b3c1e68..1336060 100644 --- a/mev_inspect/models/miner_payments.py +++ b/mev_inspect/models/miner_payments.py @@ -15,3 +15,5 @@ class MinerPaymentModel(Base): gas_price = Column(Numeric, nullable=False) gas_price_with_coinbase_transfer = Column(Numeric, nullable=False) gas_used = Column(Numeric, nullable=False) + transaction_from_address = Column(String, nullable=True) + transaction_to_address = Column(String, nullable=True) diff --git a/mev_inspect/schemas/miner_payments.py b/mev_inspect/schemas/miner_payments.py index 6f208b3..aa12d59 100644 --- a/mev_inspect/schemas/miner_payments.py +++ b/mev_inspect/schemas/miner_payments.py @@ -1,3 +1,5 @@ +from typing import Optional + from pydantic import BaseModel @@ -11,3 +13,5 @@ class MinerPayment(BaseModel): gas_price: int gas_price_with_coinbase_transfer: int gas_used: int + transaction_to_address: Optional[str] + transaction_from_address: Optional[str]