# ERC2771Recipient

The ERC-2771 Recipient Base Abstract Class - Implementation

Note that this contract was called BaseRelayRecipient in the previous revision of the GSN.

A base contract to be inherited by any contract that want to receive relayed transactions.

A subclass must use _msgSender() instead of msg.sender.

# Functions

# getTrustedForwarder()

→ address forwarder (public)

⚠️ Warning ⚠️ The Forwarder can have a full control over your Recipient. Only trust verified Forwarder. Method is not a required method to allow Recipients to trust multiple Forwarders. Not recommended yet.

# Return values

The address of the Forwarder contract that is being used.


# _setTrustedForwarder(address _forwarder)

(internal)


# isTrustedForwarder(address forwarder)

→ bool (public)

⚠️ Warning ⚠️ The Forwarder can have a full control over your Recipient. Only trust verified Forwarder.

forwarder: The address of the Forwarder contract that is being used.

# Return values

true if the Forwarder is trusted to forward relayed transactions by this Recipient.


# _msgSender()

→ address ret (internal)

Use this method the contract anywhere instead of msg.sender to support relayed transactions.

# Return values

The real sender of this call. For a call that came through the Forwarder the real sender is extracted from the last 20 bytes of the msg.data. Otherwise simply returns msg.sender.


# _msgData()

→ bytes ret (internal)

Use this method in the contract instead of msg.data when difference matters (hashing, signature, etc.)

# Return values

The real msg.data of this call. For a call that came through the Forwarder, the real sender address was appended as the last 20 bytes of the msg.data - so this method will strip those 20 bytes off. Otherwise (if the call was made directly and not through the forwarder) simply returns msg.data.