ProjectOpenSea / seaport-js

A TypeScript library to interface with the Seaport marketplace.
MIT License
255 stars 181 forks source link

Unknown custom error when estimating gas #613

Closed Chinch-Bug closed 2 weeks ago

Chinch-Bug commented 3 months ago

Component

Utils

Have you ensured that all of these are up to date?

What version of seaport-js are you on?

4.0.4

What function is the bug in?

transactionMethods.estimateGas of fulfillOrder

Operating System

Windows

Describe the bug

Error: execution reverted (unknown custom error) (action="estimateGas", data="0xd232fd2c3c898f7f86bbabf72d061383b7042604f63368cd8d512e037138725515e36f01", reason=null, transaction={ "data": "0xfb0f3ee10000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d17ab7ced2000000000000000000000000008995c3bee9655f41dee4f34f9508a56589252f67000000000000000000000000000056f7000000ece9003ca63978907a00ffd100000000000000000000000000d4e4bef93baa9e6997be453f8f07f59ffba356ef00000000000000000000000000000000000000000000000000000000000002b30000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000665dc8dd00000000000000000000000000000000000000000000000000000000674f18f30000000000000000000000000000000000000000000000000000000000000000360c6ebe00000000000000000000000000000000000000000dd73b7bd9cbda3b0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002e00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000005a95ee9ea000000000000000000000000000000a26b00c1f0df003000390027140000faa71900000000000000000000000000000000000000000000000000000b52bdd3d40000000000000000000000000016d4d641893f33010141783cec43701cd5b976d700000000000000000000000000000000000000000000000000000000000000e337de30ec40accd37e2b6c915e37a6892938011187113b0301c25af4afd9f2d8840633206b13b24329ffe3b94dda558485fa64e4bf960f610469c797539084eaa000009aedf5bccb70827dd5281c59dde2193850e652c7dbaa1176e44970059f1b990a2b6e9e69de1a1277a3f222139668cb4ca5a1f925c3b366da3519019506187926ed5fcd0d67966ad5dc758ae52a8244d88783a981dd11eaf4b2d1459b5725a4bcfba4b60c842dcc863552811436aed8fbb9dce2510e3b83319404b47720cd6cac735145e71c7016236a9b2169351323ce901e4ad269ffdeafcc20b973fe7848d710000000000000000000000000000000000000000000000000000000000", "from": "0x54cD773b3aa602F9871dDCaf21C5FA562549815B", "to": "0x0000000000000068F116a894984e2DB1123eB395" }, invocation=null, revert=null, code=CALL_EXCEPTION, version=6.13.2)

I've written a function that estimates the gas price, then executes an order, and it works fine with several collections I've tried this with (so far all on BASE chain). However, consistently NFTs from the collection base-cousins throw this error instead, and I'm not sure how to fix this, or if this is even something that can be fixed

ryanio commented 3 months ago

You can see here the contract has a transfer validation registry set, so you need to use the right zone for the order and pass the fulfillment data from the OS API for the ERC721C functions (read more here). https://basescan.org/address/0xd4e4bef93baa9e6997be453f8f07f59ffba356ef#readContract

opensea-js has functions to help with this if you don't want to write it from scratch

Chinch-Bug commented 3 months ago

I've been passing the fulfillment_data.orders[0] from the OS API, and the zone listed there seems to match the SignedZone. I wasn't adding the extraData before, but the exception still looks to be getting thrown with:

var transaction = await sdk.fulfillOrder({
    order: signed_order.data.fulfillment_data.orders[0],
    accountAddress: address,
    extraData: signed_order.data.fulfillment_data.transaction.input_data.advancedOrder.extraData
  });

I'm not sure exactly what else I'm supposed to be giving it from here

github-actions[bot] commented 4 weeks ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions. If you believe this was a mistake, please comment.