OpenSea documentation provides differing information on how to implement meta-transactions:

The code snippet OpenSea has under "Meta-transactions" shows the contract inheriting ERC721, ContextMixin, and ERC2771Context.

But the link on that page to "Sample implementations" shows the contract inheriting ERC721, ContextMixin, and NativeMetaTransaction.

Are both ways compatible with OpenSea?

(If using ERC2771Context, is there anything additional that needs to be done, such as passing ERC2771Context the address of a trusted forwarder?)

1 Answer 1


OpenSea gave me this answer to the question:

I've checked in with our developers and they've let me know both examples you've provided should work; the code detailed in our developer docs was written more recently, however they personally know the code detailed in github works and would recommend that route.

Furthermore, in the github example the custom contract you've created is the forwarder, but if you choose to use the developer docs, you can use your contract as the forwarder there as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.