12345678910111213141516171819202122232425262728293031323334353637383940 |
- pragma solidity ^0.5.0;
- import "./IRelayRecipient.sol";
- import "./GSNContext.sol";
- import "./bouncers/GSNBouncerBase.sol";
- import "./IRelayHub.sol";
- /**
- * @dev Base GSN recipient contract: includes the {IRelayRecipient} interface and enables GSN support on all contracts
- * in the inheritance tree.
- *
- * Not all interface methods are implemented (e.g. {acceptRelayedCall}, derived contracts must provide one themselves.
- */
- contract GSNRecipient is IRelayRecipient, GSNContext, GSNBouncerBase {
- /**
- * @dev Returns the `RelayHub` address for this recipient contract.
- */
- function getHubAddr() public view returns (address) {
- return _relayHub;
- }
- /**
- * @dev Returns the version string of the `RelayHub` for which this recipient implementation was built.
- */
- // This function is view for future-proofing, it may require reading from
- // storage in the future.
- function relayHubVersion() public view returns (string memory) {
- this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
- return "1.0.0";
- }
- /**
- * @dev Withdraws the recipient's deposits in `RelayHub`.
- *
- * Derived contracts should expose this in an external interface with proper access control.
- */
- function _withdrawDeposits(uint256 amount, address payable payee) internal {
- IRelayHub(_relayHub).withdraw(amount, payee);
- }
- }
|