You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
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);
|
|
}
|
|
}
|
|
|