Asset
Contract presenting LP tokens in a pool.
contracts/wombat-core/asset/Asset.sol
Title: Asset
Notice: Contract presenting an asset in a pool
Details: Expect to be owned by Timelock for management, and pool links to Pool for coordination
constructor
constructor(underlyingToken_, name_, symbol_)
Arguments
name | type | description |
underlyingToken_ | address | |
name_ | string | |
symbol_ | string |
event Approval
***Asset.Approval(owner, spender, value) ***
Arguments
name | type | description |
owner | address | indexed |
spender | address | indexed |
value | uint256 | not indexed |
event OwnershipTransferred
***Asset.OwnershipTransferred(previousOwner, newOwner) ***
Arguments
name | type | description |
previousOwner | address | indexed |
newOwner | address | indexed |
event SetMaxSupply
***Asset.SetMaxSupply(previousMaxSupply, newMaxSupply) ***
Notice: An event thats emitted when max supply is updated
Arguments
name | type | description |
previousMaxSupply | uint256 | not indexed |
newMaxSupply | uint256 | not indexed |
event SetPool
***Asset.SetPool(previousPoolAddr, newPoolAddr) ***
Notice: An event thats emitted when pool address is updated
Arguments
name | type | description |
previousPoolAddr | address | not indexed |
newPoolAddr | address | not indexed |
event Transfer
***Asset.Transfer(from, to, value) ***
Arguments
name | type | description |
from | address | indexed |
to | address | indexed |
value | uint256 | not indexed |
stateVariable cash
Asset.cash() view
Notice: Cash balance, normally it should align with IERC20(underlyingToken).balanceOf(address(this))
Details: 18.18 fixed point decimals
Outputs
name | type | description |
uint120 |
stateVariable liability
Asset.liability() view
Notice: Total liability, equals to the sum of deposit and dividend
Details: 18.18 fixed point decimals
Outputs
name | type | description |
uint120 |
stateVariable maxSupply
Asset.maxSupply() view
Notice: maxSupply the maximum amount of asset the pool is allowed to mint. The unit is the same as the underlying token
Details: if 0, means asset has no max
Outputs
name | type | description |
uint256 |
function DOMAIN_SEPARATOR
Asset.DOMAIN_SEPARATOR() view
Details: See {IERC20Permit-DOMAIN_SEPARATOR}.
Outputs
name | type | description |
bytes32 |
function addCash
***Asset.addCash(amount) ***
Notice: Adds cash, expects actual ERC20 underlyingToken got transferred in. Can only be called by Pool.
Arguments
name | type | description |
amount | uint256 | amount to add |
function addLiability
***Asset.addLiability(amount) ***
Notice: Adds deposit or dividend, expect LP underlyingToken minted in case of deposit. Can only be called by Pool.
Arguments
name | type | description |
amount | uint256 | amount to add |
function allowance
Asset.allowance(owner, spender) view
Details: See {IERC20-allowance}.
Arguments
name | type | description |
owner | address | |
spender | address |
Outputs
name | type | description |
uint256 |
function approve
***Asset.approve(spender, amount) ***
Details: See {IERC20-approve}. Requirements: -
spender
cannot be the zero address.
Arguments
name | type | description |
spender | address | |
amount | uint256 |
Outputs
name | type | description |
bool |
function balanceOf
Asset.balanceOf(account) view
Details: See {IERC20-balanceOf}.
Arguments
name | type | description |
account | address |
Outputs
name | type | description |
uint256 |
function burn
***Asset.burn(to, amount) ***
Notice: Burn ERC20 Asset LP Token, expect pool coordinates other state updates. Can only be called by Pool.
Arguments
name | type | description |
to | address | address holding the tokens |
amount | uint256 | amount to burn |
function decimals
Asset.decimals() view
Notice: Returns the decimals of Asset, fixed to 18 decimals
Outputs
name | type | description |
uint8 | decimals for asset |
function decreaseAllowance
***Asset.decreaseAllowance(spender, subtractedValue) ***
Details: 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 leastsubtractedValue
.
Arguments
name | type | description |
spender | address | |
subtractedValue | uint256 |
Outputs
name | type | description |
bool |
function increaseAllowance
***Asset.increaseAllowance(spender, addedValue) ***
Details: 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.
Arguments
name | type | description |
spender | address | |
addedValue | uint256 |
Outputs
name | type | description |
bool |
function mint
***Asset.mint(to, amount) ***
Notice: Mint ERC20 Asset LP Token, expect pool coordinates other state updates. Can only be called by Pool.
Arguments
name | type | description |
to | address | address to transfer the token to |
amount | uint256 | amount to transfer |
function name
Asset.name() view
Details: Returns the name of the token.
Outputs
name | type | description |
string |
function nonces
Asset.nonces(owner) view
Details: See {IERC20Permit-nonces}.
Arguments
name | type | description |
owner | address |
Outputs
name | type | description |
uint256 |
function owner
Asset.owner() view
Details: Returns the address of the current owner.
Outputs
name | type | description |
address |
function permit
***Asset.permit(owner, spender, value, deadline, v, r, s) ***
Details: See {IERC20Permit-permit}.
Arguments
name | type | description |
owner | address | |
spender | address | |
value | uint256 | |
deadline | uint256 | |
v | uint8 | |
r | bytes32 | |
s | bytes32 |
function pool
Asset.pool() view
Notice: The Pool
Outputs
name | type | description |
address |
function removeCash
***Asset.removeCash(amount) ***
Notice: Deducts cash, expect actual ERC20 got transferred out (by transferUnderlyingToken()). Can only be called by Pool.
Arguments
name | type | description |
amount | uint256 | amount to remove |
function removeLiability
***Asset.removeLiability(amount) ***
Notice: Removes deposit and dividend earned, expect LP underlyingToken burnt. Can only be called by Pool.
Arguments
name | type | description |
amount | uint256 | amount to remove |
function renounceOwnership
***Asset.renounceOwnership() ***
Details: Leaves the contract without owner. It will not be possible to call
onlyOwner
functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
function setMaxSupply
***Asset.setMaxSupply(maxSupply_) ***
Notice: Changes asset max supply. Can only be set by the contract owner. 18 decimals
Arguments
name | type | description |
maxSupply_ | uint256 | the new asset's max supply |
function setPool
***Asset.setPool(pool_) ***
Notice: TODO: move pool address setup within contract initializationChanges the pool. Can only be set by the contract owner.
Arguments
name | type | description |
pool_ | address | new pool's address |
function symbol
Asset.symbol() view
Details: Returns the symbol of the token, usually a shorter version of the name.
Outputs
name | type | description |
string |
function totalSupply
Asset.totalSupply() view
Details: See {IERC20-totalSupply}.
Outputs
name | type | description |
uint256 |
function transfer
***Asset.transfer(recipient, amount) ***
Details: See {IERC20-transfer}. Requirements: -
recipient
cannot be the zero address. - the caller must have a balance of at leastamount
.
Arguments
name | type | description |
recipient | address | |
amount | uint256 |
Outputs
name | type | description |
bool |
function transferFrom
***Asset.transferFrom(sender, recipient, amount) ***
Details: 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
andrecipient
cannot be the zero address. -sender
must have a balance of at leastamount
. - the caller must have allowance forsender
's tokens of at leastamount
.
Arguments
name | type | description |
sender | address | |
recipient | address | |
amount | uint256 |
Outputs
name | type | description |
bool |
function transferOwnership
***Asset.transferOwnership(newOwner) ***
Details: Transfers ownership of the contract to a new account (
newOwner
). Can only be called by the current owner.
Arguments
name | type | description |
newOwner | address |
function transferUnderlyingToken
***Asset.transferUnderlyingToken(to, amount) ***
Notice: Transfers ERC20 underlyingToken from this contract to another account. Can only be called by Pool.
Details: Not to be confused with transferring Wombat Assets.
Arguments
name | type | description |
to | address | address to transfer the token to |
amount | uint256 | amount to transfer |
function underlyingToken
Asset.underlyingToken() view
Notice: The underlying underlyingToken represented by this asset
Outputs
name | type | description |
address |
function underlyingTokenBalance
Asset.underlyingTokenBalance() view
Notice: Get underlying Token Balance
Outputs
name | type | description |
uint256 | Returns the actual balance of ERC20 underlyingToken |
function underlyingTokenDecimals
Asset.underlyingTokenDecimals() view
Outputs
name | type | description |
uint8 |
Last updated