1234567891011121314151617181920212223242526272829303132333435363738394041 |
- pragma solidity ^0.5.0;
- import "./IRelayRecipient.sol";
- import "./GSNContext.sol";
- import "./bouncers/GSNBouncerBase.sol";
- import "./IRelayHub.sol";
- /*
- * @dev Base GSN recipient contract, adding the recipient interface and enabling
- * GSN support. Not all interface methods are implemented, derived contracts
- * must do so 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 This function returns the version string of the RelayHub for which
- * this recipient implementation was built. It's not currently used, but
- * may be used by tooling.
- */
- // 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 Triggers a withdraw of the recipient's deposits in RelayHub. Can
- * be used by derived contracts to expose the functionality in an external
- * interface.
- */
- function _withdrawDeposits(uint256 amount, address payable payee) internal {
- IRelayHub(_relayHub).withdraw(amount, payee);
- }
- }
|