From 23635892a642d1a1ce665be7b171bf80a726efb9 Mon Sep 17 00:00:00 2001 From: Gui Heise Date: Mon, 13 Dec 2021 21:07:24 -0500 Subject: [PATCH 1/5] Add check for reverted orders --- mev_inspect/classifiers/specs/zero_ex.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mev_inspect/classifiers/specs/zero_ex.py b/mev_inspect/classifiers/specs/zero_ex.py index 9cd5035..4338ace 100644 --- a/mev_inspect/classifiers/specs/zero_ex.py +++ b/mev_inspect/classifiers/specs/zero_ex.py @@ -225,10 +225,13 @@ ZEROX_CLASSIFIER_SPECS = ZEROX_CONTRACT_SPECS + ZEROX_GENERIC_SPECS def _get_taker_token_in_amount( - taker_address: str, token_in_address: str, child_transfers: List[Transfer] + trace: DecodedCallTrace, + taker_address: str, + token_in_address: str, + child_transfers: List[Transfer], ) -> int: - if len(child_transfers) != 2: + if len(child_transfers) != 2 and trace.error == None: raise ValueError( f"A settled order should consist of 2 child transfers, not {len(child_transfers)}." ) @@ -263,7 +266,7 @@ def _get_0x_token_in_data( ) token_in_amount = _get_taker_token_in_amount( - taker_address, token_in_address, child_transfers + trace, taker_address, token_in_address, child_transfers ) return token_in_address, token_in_amount From c090624f4c7c704e2502fe2a6ca123c8c24f33ac Mon Sep 17 00:00:00 2001 From: Gui Heise Date: Wed, 15 Dec 2021 11:06:22 -0500 Subject: [PATCH 2/5] move none check --- mev_inspect/classifiers/specs/zero_ex.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mev_inspect/classifiers/specs/zero_ex.py b/mev_inspect/classifiers/specs/zero_ex.py index 4338ace..3c117fe 100644 --- a/mev_inspect/classifiers/specs/zero_ex.py +++ b/mev_inspect/classifiers/specs/zero_ex.py @@ -231,7 +231,10 @@ def _get_taker_token_in_amount( child_transfers: List[Transfer], ) -> int: - if len(child_transfers) != 2 and trace.error == None: + if trace.error is not None: + return 0 + + if len(child_transfers) != 2: raise ValueError( f"A settled order should consist of 2 child transfers, not {len(child_transfers)}." ) From 42b82be386b05ac336654007bcd16c5ead9de729 Mon Sep 17 00:00:00 2001 From: Gui Heise Date: Wed, 15 Dec 2021 13:54:51 -0500 Subject: [PATCH 3/5] Add exception to transfers not found --- mev_inspect/classifiers/specs/zero_ex.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mev_inspect/classifiers/specs/zero_ex.py b/mev_inspect/classifiers/specs/zero_ex.py index 3c117fe..009c34c 100644 --- a/mev_inspect/classifiers/specs/zero_ex.py +++ b/mev_inspect/classifiers/specs/zero_ex.py @@ -247,7 +247,8 @@ def _get_taker_token_in_amount( for transfer in child_transfers: if transfer.to_address == taker_address: return transfer.amount - return 0 + + raise ValueError("Unable to find transfers matching 0x order.") def _get_0x_token_in_data( From af01b4e8b5c0a7f83bd52ed3af1f940a56504651 Mon Sep 17 00:00:00 2001 From: Gui Heise Date: Wed, 15 Dec 2021 14:03:51 -0500 Subject: [PATCH 4/5] Value to Runtime error --- mev_inspect/classifiers/specs/zero_ex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mev_inspect/classifiers/specs/zero_ex.py b/mev_inspect/classifiers/specs/zero_ex.py index 009c34c..4aa2e4e 100644 --- a/mev_inspect/classifiers/specs/zero_ex.py +++ b/mev_inspect/classifiers/specs/zero_ex.py @@ -248,7 +248,7 @@ def _get_taker_token_in_amount( if transfer.to_address == taker_address: return transfer.amount - raise ValueError("Unable to find transfers matching 0x order.") + raise RuntimeError("Unable to find transfers matching 0x order.") def _get_0x_token_in_data( From c93e216647be485a09a8aba79a017c3a4dea8fb8 Mon Sep 17 00:00:00 2001 From: Gui Heise Date: Wed, 15 Dec 2021 14:35:29 -0500 Subject: [PATCH 5/5] Fix length check for child transfers --- mev_inspect/classifiers/specs/zero_ex.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mev_inspect/classifiers/specs/zero_ex.py b/mev_inspect/classifiers/specs/zero_ex.py index 4aa2e4e..0eb423f 100644 --- a/mev_inspect/classifiers/specs/zero_ex.py +++ b/mev_inspect/classifiers/specs/zero_ex.py @@ -234,7 +234,7 @@ def _get_taker_token_in_amount( if trace.error is not None: return 0 - if len(child_transfers) != 2: + if len(child_transfers) < 2: raise ValueError( f"A settled order should consist of 2 child transfers, not {len(child_transfers)}." )