ISelfPermit
Functionality to call permit on any EIP-2612-compliant token for use in the route
Functions
selfPermit
Permits this contract to spend a given token from msg.sender
The owner
is always msg.sender and the spender
is always address(this).
function selfPermit(address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable;
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the token spent |
value | uint256 | The amount that can be spent of token |
deadline | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
v | uint8 | Must produce valid secp256k1 signature from the holder along with r and s |
r | bytes32 | Must produce valid secp256k1 signature from the holder along with v and s |
s | bytes32 | Must produce valid secp256k1 signature from the holder along with r and v |
selfPermitIfNecessary
Permits this contract to spend a given token from msg.sender
The owner
is always msg.sender and the spender
is always address(this).
Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit
function selfPermitIfNecessary(
address token,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
)
external
payable;
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the token spent |
value | uint256 | The amount that can be spent of token |
deadline | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
v | uint8 | Must produce valid secp256k1 signature from the holder along with r and s |
r | bytes32 | Must produce valid secp256k1 signature from the holder along with v and s |
s | bytes32 | Must produce valid secp256k1 signature from the holder along with r and v |
selfPermitAllowed
Permits this contract to spend the sender's tokens for permit signatures that have the allowed
parameter
The owner
is always msg.sender and the spender
is always address(this)
function selfPermitAllowed(
address token,
uint256 nonce,
uint256 expiry,
uint8 v,
bytes32 r,
bytes32 s
)
external
payable;
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the token spent |
nonce | uint256 | The current nonce of the owner |
expiry | uint256 | The timestamp at which the permit is no longer valid |
v | uint8 | Must produce valid secp256k1 signature from the holder along with r and s |
r | bytes32 | Must produce valid secp256k1 signature from the holder along with v and s |
s | bytes32 | Must produce valid secp256k1 signature from the holder along with r and v |
selfPermitAllowedIfNecessary
Permits this contract to spend the sender's tokens for permit signatures that have the allowed
parameter
The owner
is always msg.sender and the spender
is always address(this)
Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.
function selfPermitAllowedIfNecessary(
address token,
uint256 nonce,
uint256 expiry,
uint8 v,
bytes32 r,
bytes32 s
)
external
payable;
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the token spent |
nonce | uint256 | The current nonce of the owner |
expiry | uint256 | The timestamp at which the permit is no longer valid |
v | uint8 | Must produce valid secp256k1 signature from the holder along with r and s |
r | bytes32 | Must produce valid secp256k1 signature from the holder along with v and s |
s | bytes32 | Must produce valid secp256k1 signature from the holder along with r and v |