fTokenNativeUnderlyingEIP2612Withdrawals ​
Inherits:fTokenNativeUnderlyingActions
fTokens support EIP-2612 permit approvals via signature so withdrawals are possible with signature. This contract implements those withdrawals for a native underlying asset.
Functions ​
withdrawWithSignatureNative ​
withdraw amount of assets_ in native token with ERC-2612 permit signature for fToken approval. owner_ signs ERC-2612 permit signature_ to give allowance of fTokens to msg.sender. Note there might be tiny inaccuracies between requested assets_ and actually received assets amount. allowance via signature should cover previewWithdraw(assets_) plus a little buffer to avoid revert. Inherent trust assumption that msg.sender will set receiver_ and minAmountOut_ as owner_ intends (which is always the case when giving allowance to some spender).
function withdrawWithSignatureNative(
uint256 sharesToPermit_,
uint256 assets_,
address receiver_,
address owner_,
uint256 maxSharesBurn_,
uint256 deadline_,
bytes calldata signature_
) external nonReentrant returns (uint256 shares_);Parameters
| Name | Type | Description |
|---|---|---|
sharesToPermit_ | uint256 | shares amount to use for EIP2612 permit(). Should cover previewWithdraw(assets_) + small buffer. |
assets_ | uint256 | amount of assets to withdraw |
receiver_ | address | receiver of withdrawn assets |
owner_ | address | owner to withdraw from (must be signature signer) |
maxSharesBurn_ | uint256 | maximum accepted amount of shares burned |
deadline_ | uint256 | deadline for signature validity |
signature_ | bytes | packed signature of signing the EIP712 hash for ERC-2612 permit |
Returns
| Name | Type | Description |
|---|---|---|
shares_ | uint256 | burned shares amount |
redeemWithSignatureNative ​
redeem amount of shares_ as native token with ERC-2612 permit signature for fToken approval. owner_ signs ERC-2612 permit signature_ to give allowance of fTokens to msg.sender. Note there might be tiny inaccuracies between requested shares_ to redeem and actually burned shares. allowance via signature must cover shares_ plus a tiny buffer. Inherent trust assumption that msg.sender will set receiver_ and minAmountOut_ as owner_ intends (which is always the case when giving allowance to some spender). Recommended to use withdrawNative() over redeem because it is more gas efficient and can set specific amount.
function redeemWithSignatureNative(
uint256 shares_,
address receiver_,
address owner_,
uint256 minAmountOut_,
uint256 deadline_,
bytes calldata signature_
) external nonReentrant returns (uint256 assets_);Parameters
| Name | Type | Description |
|---|---|---|
shares_ | uint256 | amount of shares to redeem |
receiver_ | address | receiver of withdrawn assets |
owner_ | address | owner to withdraw from (must be signature signer) |
minAmountOut_ | uint256 | minimum accepted amount of assets withdrawn |
deadline_ | uint256 | deadline for signature validity |
signature_ | bytes | packed signature of signing the EIP712 hash for ERC-2612 permit |
Returns
| Name | Type | Description |
|---|---|---|
assets_ | uint256 | withdrawn assets amount |

