ERC 20 Flash Mint
Implementation of the ERC3156 Flash loans extension, as defined in https://eips.ethereum.org/EIPS/eip-3156[ERC-3156]. Adds the {flashLoan} method, which provides flash loan support at the token level. By default there is no fee, but this can be changed by overriding {flashFee}. Available since v4.1.
Methods
allowance
See {IERC20-allowance}.
Parameters
Name | Type | Description |
---|---|---|
owner | address | undefined |
spender | address | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | undefined |
approve
See {IERC20-approve}. Requirements: - spender
cannot be the zero address.
Parameters
Name | Type | Description |
---|---|---|
spender | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
balanceOf
See {IERC20-balanceOf}.
Parameters
Name | Type | Description |
---|---|---|
account | address | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | undefined |
decimals
Returns the number of decimals used to get its user representation. For example, if decimals
equals 2
, a balance of 505
tokens should be displayed to a user as 5.05
(505 / 10 ** 2
). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for display purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.
Returns
Name | Type | Description |
---|---|---|
_0 | uint8 | undefined |
decreaseAllowance
Atomically decreases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address. - spender
must have allowance for the caller of at least subtractedValue
.
Parameters
Name | Type | Description |
---|---|---|
spender | address | undefined |
subtractedValue | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
flashFee
Returns the fee applied when doing flash loans. By default this implementation has 0 fees. This function can be overloaded to make the flash loan mechanism deflationary.
Parameters
Name | Type | Description |
---|---|---|
token | address | The token to be flash loaned. |
amount | uint256 | The amount of tokens to be loaned. |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | The fees applied to the corresponding flash loan. |
flashLoan
Performs a flash loan. New tokens are minted and sent to the receiver
, who is required to implement the {IERC3156FlashBorrower} interface. By the end of the flash loan, the receiver is expected to own amount + fee tokens and have them approved back to the token contract itself so they can be burned.
Parameters
Name | Type | Description |
---|---|---|
receiver | contract IERC3156FlashBorrower | The receiver of the flash loan. Should implement the {IERC3156FlashBorrower.onFlashLoan} interface. |
token | address | The token to be flash loaned. Only |
amount | uint256 | The amount of tokens to be loaned. |
data | bytes | An arbitrary datafield that is passed to the receiver. |
Returns
Name | Type | Description |
---|---|---|
_0 | bool |
|
increaseAllowance
Atomically increases the allowance granted to spender
by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender
cannot be the zero address.
Parameters
Name | Type | Description |
---|---|---|
spender | address | undefined |
addedValue | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
maxFlashLoan
Returns the maximum amount of tokens available for loan.
Parameters
Name | Type | Description |
---|---|---|
token | address | The address of the token that is requested. |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | The amont of token that can be loaned. |
name
Returns the name of the token.
Returns
Name | Type | Description |
---|---|---|
_0 | string | undefined |
symbol
Returns the symbol of the token, usually a shorter version of the name.
Returns
Name | Type | Description |
---|---|---|
_0 | string | undefined |
totalSupply
See {IERC20-totalSupply}.
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | undefined |
transfer
See {IERC20-transfer}. Requirements: - recipient
cannot be the zero address. - the caller must have a balance of at least amount
.
Parameters
Name | Type | Description |
---|---|---|
recipient | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
transferFrom
See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - sender
and recipient
cannot be the zero address. - sender
must have a balance of at least amount
. - the caller must have allowance for sender
's tokens of at least amount
.
Parameters
Name | Type | Description |
---|---|---|
sender | address | undefined |
recipient | address | undefined |
amount | uint256 | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
Events
Approval
Parameters
Name | Type | Description |
---|---|---|
owner | address | undefined |
spender | address | undefined |
value | uint256 | undefined |
Transfer
Parameters
Name | Type | Description |
---|---|---|
from | address | undefined |
to | address | undefined |
value | uint256 | undefined |
Last updated