Require exchange_wallet_address and rename payment_token -> payment_token_address

This commit is contained in:
Shea Ketsdever 2021-12-23 18:57:11 -06:00
parent 66e1e64675
commit 1f84f95fff
4 changed files with 22 additions and 23 deletions

View File

@ -28,7 +28,7 @@ def upgrade():
sa.Column("error", sa.String(256), nullable=True), sa.Column("error", sa.String(256), nullable=True),
sa.Column("seller_address", sa.String(256), nullable=False), sa.Column("seller_address", sa.String(256), nullable=False),
sa.Column("buyer_address", sa.String(256), nullable=False), sa.Column("buyer_address", sa.String(256), nullable=False),
sa.Column("payment_token", sa.String(256), nullable=False), sa.Column("payment_token_address", sa.String(256), nullable=False),
sa.Column("payment_amount", sa.Numeric, nullable=False), sa.Column("payment_amount", sa.Numeric, nullable=False),
sa.Column("collection_address", sa.String(256), nullable=False), sa.Column("collection_address", sa.String(256), nullable=False),
sa.Column("token_id", sa.Numeric, nullable=False), sa.Column("token_id", sa.Numeric, nullable=False),

View File

@ -12,7 +12,7 @@ def create_nft_trade_from_transfers(
collection_address: str, collection_address: str,
seller_address: str, seller_address: str,
buyer_address: str, buyer_address: str,
exchange_wallet_address: Optional[str], exchange_wallet_address: str,
) -> Optional[NftTrade]: ) -> Optional[NftTrade]:
transfers_to_buyer = _filter_transfers(child_transfers, to_address=buyer_address) transfers_to_buyer = _filter_transfers(child_transfers, to_address=buyer_address)
transfers_to_seller = _filter_transfers(child_transfers, to_address=seller_address) transfers_to_seller = _filter_transfers(child_transfers, to_address=seller_address)
@ -23,27 +23,26 @@ def create_nft_trade_from_transfers(
if transfers_to_buyer[0].token_address != collection_address: if transfers_to_buyer[0].token_address != collection_address:
return None return None
payment_token = transfers_to_seller[0].token_address payment_token_address = transfers_to_seller[0].token_address
payment_amount = transfers_to_seller[0].amount payment_amount = transfers_to_seller[0].amount
token_id = transfers_to_buyer[0].amount token_id = transfers_to_buyer[0].amount
if exchange_wallet_address is not None: transfers_from_seller_to_exchange = _filter_transfers(
transfers_from_seller_to_exchange = _filter_transfers( child_transfers,
child_transfers, from_address=seller_address,
from_address=seller_address, to_address=exchange_wallet_address,
to_address=exchange_wallet_address, )
) transfers_from_buyer_to_exchange = _filter_transfers(
transfers_from_buyer_to_exchange = _filter_transfers( child_transfers,
child_transfers, from_address=buyer_address,
from_address=buyer_address, to_address=exchange_wallet_address,
to_address=exchange_wallet_address, )
) for fee in [
for fee in [ *transfers_from_seller_to_exchange,
*transfers_from_seller_to_exchange, *transfers_from_buyer_to_exchange,
*transfers_from_buyer_to_exchange, ]:
]: # Assumes that exchange fees are paid with the same token as the sale
# Assumes that exchange fees are paid with the same token as the sale payment_amount -= fee.amount
payment_amount -= fee.amount
return NftTrade( return NftTrade(
abi_name=trace.abi_name, abi_name=trace.abi_name,
@ -55,7 +54,7 @@ def create_nft_trade_from_transfers(
error=trace.error, error=trace.error,
seller_address=seller_address, seller_address=seller_address,
buyer_address=buyer_address, buyer_address=buyer_address,
payment_token=payment_token, payment_token_address=payment_token_address,
payment_amount=payment_amount, payment_amount=payment_amount,
collection_address=collection_address, collection_address=collection_address,
token_id=token_id, token_id=token_id,

View File

@ -15,7 +15,7 @@ class NftTradeModel(Base):
error = Column(String, nullable=True) error = Column(String, nullable=True)
seller_address = Column(String, nullable=False) seller_address = Column(String, nullable=False)
buyer_address = Column(String, nullable=False) buyer_address = Column(String, nullable=False)
payment_token = Column(String, nullable=False) payment_token_address = Column(String, nullable=False)
payment_amount = Column(Numeric, nullable=False) payment_amount = Column(Numeric, nullable=False)
collection_address = Column(String, nullable=False) collection_address = Column(String, nullable=False)
token_id = Column(Numeric, nullable=False) token_id = Column(Numeric, nullable=False)

View File

@ -15,7 +15,7 @@ class NftTrade(BaseModel):
error: Optional[str] error: Optional[str]
seller_address: str seller_address: str
buyer_address: str buyer_address: str
payment_token: str payment_token_address: str
payment_amount: int payment_amount: int
collection_address: str collection_address: str
token_id: int token_id: int