Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

eth_abi.exceptions.NoEntriesFound: No matching entries for 'tuple' in decoder registry #83

Closed
Zaptrouiyerxi opened this issue Oct 18, 2022 · 8 comments · Fixed by #84 or #89
Closed
Labels
enhancement New feature or request

Comments

@Zaptrouiyerxi
Copy link

Zaptrouiyerxi commented Oct 18, 2022

Seems to be like ethereum/web3.py#2211
Sorry if this is not proper form. I have literally started coding 2 months ago.
Replicate this with the boilerplate tutorial, and tx : 0xa139231454fd021dd227a94fff6a1b6260890bb95e5f5bf8517af36e228575e6

@kigawas kigawas added the wontfix This will not be worked on label Oct 19, 2022
@kigawas
Copy link
Owner

kigawas commented Oct 19, 2022

It's eth_abi.decode's problem.

ABI:

[{'inputs': [{'internalType': 'address', 'name': 'conduitController', 'type': 'address'}], 'stateMutability': 'nonpayable', 'type': 'constructor'}, {'inputs': [], 'name': 'BadContractSignature', 'type': 'error'}, {'inputs': [], 'name': 'BadFraction', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'BadReturnValueFromERC20OnTransfer', 'type': 'error'}, {'inputs': [{'internalType': 'uint8', 'name': 'v', 'type': 'uint8'}], 'name': 'BadSignatureV', 'type': 'error'}, {'inputs': [], 'name': 'ConsiderationCriteriaResolverOutOfRange', 'type': 'error'}, {'inputs': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'considerationIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'shortfallAmount', 'type': 'uint256'}], 'name': 'ConsiderationNotMet', 'type': 'error'}, {'inputs': [], 'name': 'CriteriaNotEnabledForItem', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256[]', 'name': 'identifiers', 'type': 'uint256[]'}, {'internalType': 'uint256[]', 'name': 'amounts', 'type': 'uint256[]'}], 'name': 'ERC1155BatchTransferGenericFailure', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'EtherTransferGenericFailure', 'type': 'error'}, {'inputs': [], 'name': 'InexactFraction', 'type': 'error'}, {'inputs': [], 'name': 'InsufficientEtherSupplied', 'type': 'error'}, {'inputs': [], 'name': 'Invalid1155BatchTransferEncoding', 'type': 'error'}, {'inputs': [], 'name': 'InvalidBasicOrderParameterEncoding', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'conduit', 'type': 'address'}], 'name': 'InvalidCallToConduit', 'type': 'error'}, {'inputs': [], 'name': 'InvalidCanceller', 'type': 'error'}, {'inputs': [{'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'address', 'name': 'conduit', 'type': 'address'}], 'name': 'InvalidConduit', 'type': 'error'}, {'inputs': [], 'name': 'InvalidERC721TransferAmount', 'type': 'error'}, {'inputs': [], 'name': 'InvalidFulfillmentComponentData', 'type': 'error'}, {'inputs': [{'internalType': 'uint256', 'name': 'value', 'type': 'uint256'}], 'name': 'InvalidMsgValue', 'type': 'error'}, {'inputs': [], 'name': 'InvalidNativeOfferItem', 'type': 'error'}, {'inputs': [], 'name': 'InvalidProof', 'type': 'error'}, {'inputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'name': 'InvalidRestrictedOrder', 'type': 'error'}, {'inputs': [], 'name': 'InvalidSignature', 'type': 'error'}, {'inputs': [], 'name': 'InvalidSigner', 'type': 'error'}, {'inputs': [], 'name': 'InvalidTime', 'type': 'error'}, {'inputs': [], 'name': 'MismatchedFulfillmentOfferAndConsiderationComponents', 'type': 'error'}, {'inputs': [{'internalType': 'enum Side', 'name': 'side', 'type': 'uint8'}], 'name': 'MissingFulfillmentComponentOnAggregation', 'type': 'error'}, {'inputs': [], 'name': 'MissingItemAmount', 'type': 'error'}, {'inputs': [], 'name': 'MissingOriginalConsiderationItems', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}], 'name': 'NoContract', 'type': 'error'}, {'inputs': [], 'name': 'NoReentrantCalls', 'type': 'error'}, {'inputs': [], 'name': 'NoSpecifiedOrdersAvailable', 'type': 'error'}, {'inputs': [], 'name': 'OfferAndConsiderationRequiredOnFulfillment', 'type': 'error'}, {'inputs': [], 'name': 'OfferCriteriaResolverOutOfRange', 'type': 'error'}, {'inputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'name': 'OrderAlreadyFilled', 'type': 'error'}, {'inputs': [], 'name': 'OrderCriteriaResolverOutOfRange', 'type': 'error'}, {'inputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'name': 'OrderIsCancelled', 'type': 'error'}, {'inputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'name': 'OrderPartiallyFilled', 'type': 'error'}, {'inputs': [], 'name': 'PartialFillsNotEnabledForOrder', 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'address', 'name': 'from', 'type': 'address'}, {'internalType': 'address', 'name': 'to', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'name': 'TokenTransferGenericFailure', 'type': 'error'}, {'inputs': [], 'name': 'UnresolvedConsiderationCriteria', 'type': 'error'}, {'inputs': [], 'name': 'UnresolvedOfferCriteria', 'type': 'error'}, {'inputs': [], 'name': 'UnusedItemParameters', 'type': 'error'}, {'anonymous': False, 'inputs': [{'indexed': False, 'internalType': 'uint256', 'name': 'newCounter', 'type': 'uint256'}, {'indexed': True, 'internalType': 'address', 'name': 'offerer', 'type': 'address'}], 'name': 'CounterIncremented', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}, {'indexed': True, 'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'zone', 'type': 'address'}], 'name': 'OrderCancelled', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}, {'indexed': True, 'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'indexed': False, 'internalType': 'address', 'name': 'recipient', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'indexed': False, 'internalType': 'struct SpentItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'indexed': False, 'internalType': 'struct ReceivedItem[]', 'name': 'consideration', 'type': 'tuple[]'}], 'name': 'OrderFulfilled', 'type': 'event'}, {'anonymous': False, 'inputs': [{'indexed': False, 'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}, {'indexed': True, 'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'indexed': True, 'internalType': 'address', 'name': 'zone', 'type': 'address'}], 'name': 'OrderValidated', 'type': 'event'}, {'inputs': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'counter', 'type': 'uint256'}], 'internalType': 'struct OrderComponents[]', 'name': 'orders', 'type': 'tuple[]'}], 'name': 'cancel', 'outputs': [{'internalType': 'bool', 'name': 'cancelled', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'uint120', 'name': 'numerator', 'type': 'uint120'}, {'internalType': 'uint120', 'name': 'denominator', 'type': 'uint120'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}, {'internalType': 'bytes', 'name': 'extraData', 'type': 'bytes'}], 'internalType': 'struct AdvancedOrder', 'name': 'advancedOrder', 'type': 'tuple'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'enum Side', 'name': 'side', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'index', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'bytes32[]', 'name': 'criteriaProof', 'type': 'bytes32[]'}], 'internalType': 'struct CriteriaResolver[]', 'name': 'criteriaResolvers', 'type': 'tuple[]'}, {'internalType': 'bytes32', 'name': 'fulfillerConduitKey', 'type': 'bytes32'}, {'internalType': 'address', 'name': 'recipient', 'type': 'address'}], 'name': 'fulfillAdvancedOrder', 'outputs': [{'internalType': 'bool', 'name': 'fulfilled', 'type': 'bool'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'uint120', 'name': 'numerator', 'type': 'uint120'}, {'internalType': 'uint120', 'name': 'denominator', 'type': 'uint120'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}, {'internalType': 'bytes', 'name': 'extraData', 'type': 'bytes'}], 'internalType': 'struct AdvancedOrder[]', 'name': 'advancedOrders', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'enum Side', 'name': 'side', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'index', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'bytes32[]', 'name': 'criteriaProof', 'type': 'bytes32[]'}], 'internalType': 'struct CriteriaResolver[]', 'name': 'criteriaResolvers', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[][]', 'name': 'offerFulfillments', 'type': 'tuple[][]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[][]', 'name': 'considerationFulfillments', 'type': 'tuple[][]'}, {'internalType': 'bytes32', 'name': 'fulfillerConduitKey', 'type': 'bytes32'}, {'internalType': 'address', 'name': 'recipient', 'type': 'address'}, {'internalType': 'uint256', 'name': 'maximumFulfilled', 'type': 'uint256'}], 'name': 'fulfillAvailableAdvancedOrders', 'outputs': [{'internalType': 'bool[]', 'name': 'availableOrders', 'type': 'bool[]'}, {'components': [{'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ReceivedItem', 'name': 'item', 'type': 'tuple'}, {'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}], 'internalType': 'struct Execution[]', 'name': 'executions', 'type': 'tuple[]'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}], 'internalType': 'struct Order[]', 'name': 'orders', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[][]', 'name': 'offerFulfillments', 'type': 'tuple[][]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[][]', 'name': 'considerationFulfillments', 'type': 'tuple[][]'}, {'internalType': 'bytes32', 'name': 'fulfillerConduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'maximumFulfilled', 'type': 'uint256'}], 'name': 'fulfillAvailableOrders', 'outputs': [{'internalType': 'bool[]', 'name': 'availableOrders', 'type': 'bool[]'}, {'components': [{'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ReceivedItem', 'name': 'item', 'type': 'tuple'}, {'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}], 'internalType': 'struct Execution[]', 'name': 'executions', 'type': 'tuple[]'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'components': [{'internalType': 'address', 'name': 'considerationToken', 'type': 'address'}, {'internalType': 'uint256', 'name': 'considerationIdentifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'considerationAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'internalType': 'address', 'name': 'offerToken', 'type': 'address'}, {'internalType': 'uint256', 'name': 'offerIdentifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'offerAmount', 'type': 'uint256'}, {'internalType': 'enum BasicOrderType', 'name': 'basicOrderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'offererConduitKey', 'type': 'bytes32'}, {'internalType': 'bytes32', 'name': 'fulfillerConduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalAdditionalRecipients', 'type': 'uint256'}, {'components': [{'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct AdditionalRecipient[]', 'name': 'additionalRecipients', 'type': 'tuple[]'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}], 'internalType': 'struct BasicOrderParameters', 'name': 'parameters', 'type': 'tuple'}], 'name': 'fulfillBasicOrder', 'outputs': [{'internalType': 'bool', 'name': 'fulfilled', 'type': 'bool'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}], 'internalType': 'struct Order', 'name': 'order', 'type': 'tuple'}, {'internalType': 'bytes32', 'name': 'fulfillerConduitKey', 'type': 'bytes32'}], 'name': 'fulfillOrder', 'outputs': [{'internalType': 'bool', 'name': 'fulfilled', 'type': 'bool'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}], 'name': 'getCounter', 'outputs': [{'internalType': 'uint256', 'name': 'counter', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'counter', 'type': 'uint256'}], 'internalType': 'struct OrderComponents', 'name': 'order', 'type': 'tuple'}], 'name': 'getOrderHash', 'outputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'internalType': 'bytes32', 'name': 'orderHash', 'type': 'bytes32'}], 'name': 'getOrderStatus', 'outputs': [{'internalType': 'bool', 'name': 'isValidated', 'type': 'bool'}, {'internalType': 'bool', 'name': 'isCancelled', 'type': 'bool'}, {'internalType': 'uint256', 'name': 'totalFilled', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'totalSize', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'incrementCounter', 'outputs': [{'internalType': 'uint256', 'name': 'newCounter', 'type': 'uint256'}], 'stateMutability': 'nonpayable', 'type': 'function'}, {'inputs': [], 'name': 'information', 'outputs': [{'internalType': 'string', 'name': 'version', 'type': 'string'}, {'internalType': 'bytes32', 'name': 'domainSeparator', 'type': 'bytes32'}, {'internalType': 'address', 'name': 'conduitController', 'type': 'address'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'uint120', 'name': 'numerator', 'type': 'uint120'}, {'internalType': 'uint120', 'name': 'denominator', 'type': 'uint120'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}, {'internalType': 'bytes', 'name': 'extraData', 'type': 'bytes'}], 'internalType': 'struct AdvancedOrder[]', 'name': 'advancedOrders', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'enum Side', 'name': 'side', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'index', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'bytes32[]', 'name': 'criteriaProof', 'type': 'bytes32[]'}], 'internalType': 'struct CriteriaResolver[]', 'name': 'criteriaResolvers', 'type': 'tuple[]'}, {'components': [{'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[]', 'name': 'offerComponents', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[]', 'name': 'considerationComponents', 'type': 'tuple[]'}], 'internalType': 'struct Fulfillment[]', 'name': 'fulfillments', 'type': 'tuple[]'}], 'name': 'matchAdvancedOrders', 'outputs': [{'components': [{'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ReceivedItem', 'name': 'item', 'type': 'tuple'}, {'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}], 'internalType': 'struct Execution[]', 'name': 'executions', 'type': 'tuple[]'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}], 'internalType': 'struct Order[]', 'name': 'orders', 'type': 'tuple[]'}, {'components': [{'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[]', 'name': 'offerComponents', 'type': 'tuple[]'}, {'components': [{'internalType': 'uint256', 'name': 'orderIndex', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'itemIndex', 'type': 'uint256'}], 'internalType': 'struct FulfillmentComponent[]', 'name': 'considerationComponents', 'type': 'tuple[]'}], 'internalType': 'struct Fulfillment[]', 'name': 'fulfillments', 'type': 'tuple[]'}], 'name': 'matchOrders', 'outputs': [{'components': [{'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifier', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ReceivedItem', 'name': 'item', 'type': 'tuple'}, {'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}], 'internalType': 'struct Execution[]', 'name': 'executions', 'type': 'tuple[]'}], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [], 'name': 'name', 'outputs': [{'internalType': 'string', 'name': 'contractName', 'type': 'string'}], 'stateMutability': 'pure', 'type': 'function'}, {'inputs': [{'components': [{'components': [{'internalType': 'address', 'name': 'offerer', 'type': 'address'}, {'internalType': 'address', 'name': 'zone', 'type': 'address'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}], 'internalType': 'struct OfferItem[]', 'name': 'offer', 'type': 'tuple[]'}, {'components': [{'internalType': 'enum ItemType', 'name': 'itemType', 'type': 'uint8'}, {'internalType': 'address', 'name': 'token', 'type': 'address'}, {'internalType': 'uint256', 'name': 'identifierOrCriteria', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'startAmount', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endAmount', 'type': 'uint256'}, {'internalType': 'address payable', 'name': 'recipient', 'type': 'address'}], 'internalType': 'struct ConsiderationItem[]', 'name': 'consideration', 'type': 'tuple[]'}, {'internalType': 'enum OrderType', 'name': 'orderType', 'type': 'uint8'}, {'internalType': 'uint256', 'name': 'startTime', 'type': 'uint256'}, {'internalType': 'uint256', 'name': 'endTime', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'zoneHash', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'salt', 'type': 'uint256'}, {'internalType': 'bytes32', 'name': 'conduitKey', 'type': 'bytes32'}, {'internalType': 'uint256', 'name': 'totalOriginalConsiderationItems', 'type': 'uint256'}], 'internalType': 'struct OrderParameters', 'name': 'parameters', 'type': 'tuple'}, {'internalType': 'bytes', 'name': 'signature', 'type': 'bytes'}], 'internalType': 'struct Order[]', 'name': 'orders', 'type': 'tuple[]'}], 'name': 'validate', 'outputs': [{'internalType': 'bool', 'name': 'validated', 'type': 'bool'}], 'stateMutability': 'nonpayable', 'type': 'function'}]

Transaction:

0xfb0f3ee1000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b53d9d99ecb800000000000000000000000000001850dd8fb9323b01c340d0eb1da1ec16cc8ee1a2000000000000000000000000004c00500000ad104d7dbd00e3ae0a5c00560c00000000000000000000000000bc4ca0eda7647a8ab7c2061c2e118a18a936f13d000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000006346e1d200000000000000000000000000000000000000000000000000000000636fadcd0000000000000000000000000000000000000000000000000000000000000000360c6ebe00000000000000000000000000000000000000000589c7ee474bc5850000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f00000000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000018fae27693b400000000000000000000000000000000a26b00c1f0df003000390027140000faa71900000000000000000000000000000000000000000000000018fae27693b40000000000000000000000000000a858ddc0445d8131dac4d1de01f834ffcba52ef10000000000000000000000000000000000000000000000000000000000000041046bd0fda5b934a96ef4700da1b64e03e7451e6a6ee45a5004b93823ff3baae34b9f1c4f667781b5fedd27dc67339d4fd3e4ae2a873b315090e6312853732f9a1c00000000000000000000000000000000000000000000000000000000000000360c6ebe

@kigawas
Copy link
Owner

kigawas commented Oct 19, 2022

Oh, I think I can fix it

@kigawas kigawas added enhancement New feature or request and removed wontfix This will not be worked on labels Oct 19, 2022
@kigawas
Copy link
Owner

kigawas commented Oct 20, 2022

It's been released in 0.1.5.
If you encounter any further problems on decoding tuple, feel free to reopen this issue :)

@Zaptrouiyerxi
Copy link
Author

Thank you! =)

@mbellmbell
Copy link

mbellmbell commented Nov 8, 2022

@kigawas

I just started getting this error using v0.1.5.
eth_abi.exceptions.NoEntriesFound: No matching entries for 'tuple' in decoder registry

Here is code:

from web3_input_decoder import InputDecoder

abi = [{'inputs': [{'internalType': 'uint256', 'name': 'amountIn', 'type': 'uint256'},
                   {'internalType': 'uint256', 'name': 'amountOutMin', 'type': 'uint256'}, {
                       'components': [{'internalType': 'address', 'name': 'from', 'type': 'address'},
                                      {'internalType': 'address', 'name': 'to', 'type': 'address'},
                                      {'internalType': 'bool', 'name': 'stable', 'type': 'bool'}],
                       'internalType': 'struct BaseV1Router01.route[]', 'name': 'routes', 'type': 'tuple[]'},
                   {'internalType': 'address', 'name': 'to', 'type': 'address'},
                   {'internalType': 'uint256', 'name': 'deadline', 'type': 'uint256'}],
        'name': 'swapExactTokensForTokens',
        'outputs': [{'internalType': 'uint256[]', 'name': 'amounts', 'type': 'uint256[]'}],
        'stateMutability': 'nonpayable', 'type': 'function'}]

input_data = '0xf41766d80000000000000000000000000000000000000000000000000000000002dc6c000000000000000000000000000000000000000000000000001bbc2e22c5c1c2cb00000000000000000000000000000000000000000000000000000000000000a00000000000000000000000007c77b132a0cd0ad1c694ab8645affa26c2787d6600000000000000000000000000000000000000000000000000000000636aaa2f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ea32a96608495e54156ae48931a7c20f0dcc1a21000000000000000000000000deaddeaddeaddeaddeaddeaddeaddeaddead00000000000000000000000000000000000000000000000000000000000000000000'

decoder = InputDecoder(abi)
decoded = decoder.decode_function(input_data)
print(decoded)

@kigawas
Copy link
Owner

kigawas commented Nov 9, 2022

@mmm3bbb

Thanks for reporting. Can you post your transaction ID?

@kigawas kigawas reopened this Nov 9, 2022
@mbellmbell
Copy link

@kigawas
Copy link
Owner

kigawas commented Nov 10, 2022

0.1.6 is released now. Tuple array is now supported.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants