Meta Transactions

This document is better viewed at



import "@openzeppelin/contracts/metatx/ERC2771Context.sol";

Context variant with ERC2771 support.

constructor(address trustedForwarder) internal

isTrustedForwarder(address forwarder) → bool public

_msgSender() → address sender internal

_msgData() → bytes internal



import "@openzeppelin/contracts/metatx/MinimalForwarder.sol";

Simple minimal forwarder to be used together with an ERC2771 compatible contract. See ERC2771Context.

MinimalForwarder is mainly meant for testing, as it is missing features to be a good production-ready forwarder. This contract does not intend to have all the properties that are needed for a sound forwarding system. A fully functioning forwarding system with good properties requires more complexity. We suggest you look at other projects such as the GSN which do have the goal of building a system like that.

getNonce(address from) → uint256 public

verify(struct MinimalForwarder.ForwardRequest req, bytes signature) → bool public

execute(struct MinimalForwarder.ForwardRequest req, bytes signature) → bool, bytes public