Wombat Exchange
Wombat Exchange
Search
K
Links

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 least subtractedValue.
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 least amount.
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 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.
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 modified 1yr ago