Add support for any taker
This commit is contained in:
parent
2f1a9bc751
commit
e29c4fad72
@ -91,3 +91,12 @@ def get_amount_transferred_to_address(address: str, transfers: List[Transfer]) -
|
|||||||
if transfer.to_address == address:
|
if transfer.to_address == address:
|
||||||
return transfer.amount
|
return transfer.amount
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
def get_amount_transferred_by_token_address(
|
||||||
|
token_address: str, transfers: List[Transfer]
|
||||||
|
) -> int:
|
||||||
|
for transfer in transfers:
|
||||||
|
if transfer.token_address == token_address:
|
||||||
|
return transfer.amount
|
||||||
|
return 0
|
||||||
|
@ -9,7 +9,10 @@ from mev_inspect.schemas.classifiers import (
|
|||||||
ClassifierSpec,
|
ClassifierSpec,
|
||||||
SwapClassifier,
|
SwapClassifier,
|
||||||
)
|
)
|
||||||
from mev_inspect.classifiers.helpers import get_amount_transferred_to_address
|
from mev_inspect.classifiers.helpers import (
|
||||||
|
get_amount_transferred_to_address,
|
||||||
|
get_amount_transferred_by_token_address,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ZeroExSwapClassifier(SwapClassifier):
|
class ZeroExSwapClassifier(SwapClassifier):
|
||||||
@ -38,21 +41,28 @@ class ZeroExSwapClassifier(SwapClassifier):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
raise NotImplementedError
|
raise RuntimeError(
|
||||||
|
f"Unknown 0x orderbook function: {trace.function_signature}"
|
||||||
|
)
|
||||||
|
|
||||||
token_out_amount = trace.inputs["takerTokenFillAmount"]
|
token_out_amount = trace.inputs["takerTokenFillAmount"]
|
||||||
token_in_amount = get_amount_transferred_to_address(
|
|
||||||
taker_address, child_transfers
|
|
||||||
)
|
|
||||||
|
|
||||||
contract_address = trace.to_address
|
if taker_address == "0x0000000000000000000000000000000000000000":
|
||||||
|
token_in_amount = get_amount_transferred_by_token_address(
|
||||||
|
token_in_address, child_transfers
|
||||||
|
)
|
||||||
|
|
||||||
|
else:
|
||||||
|
token_in_amount = get_amount_transferred_to_address(
|
||||||
|
taker_address, child_transfers
|
||||||
|
)
|
||||||
|
|
||||||
return Swap(
|
return Swap(
|
||||||
abi_name=trace.abi_name,
|
abi_name=trace.abi_name,
|
||||||
transaction_hash=trace.transaction_hash,
|
transaction_hash=trace.transaction_hash,
|
||||||
block_number=trace.block_number,
|
block_number=trace.block_number,
|
||||||
trace_address=trace.trace_address,
|
trace_address=trace.trace_address,
|
||||||
contract_address=contract_address,
|
contract_address=trace.to_address,
|
||||||
protocol=Protocol.zero_ex,
|
protocol=Protocol.zero_ex,
|
||||||
from_address=trace.from_address,
|
from_address=trace.from_address,
|
||||||
to_address=trace.to_address,
|
to_address=trace.to_address,
|
||||||
@ -183,6 +193,7 @@ ZEROX_GENERIC_SPECS = [
|
|||||||
classifiers={
|
classifiers={
|
||||||
"fillOrKillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": ZeroExSwapClassifier,
|
"fillOrKillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": ZeroExSwapClassifier,
|
||||||
"fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": ZeroExSwapClassifier,
|
"fillRfqOrder((address,address,uint128,uint128,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": ZeroExSwapClassifier,
|
||||||
|
"fillLimitOrder((address,address,uint128,uint128,uint128,address,address,address,address,bytes32,uint64,uint256),(uint8,uint8,bytes32,bytes32),uint128)": ZeroExSwapClassifier,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ClassifierSpec(
|
ClassifierSpec(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user