vTokens
vTokens are yield-generating tokens that are minted and burned upon
deposit
and withdraw
. The vTokens' value is pegged to the value of the corresponding deposited asset at a 1:1 ratio, and can be safely stored, transferred or traded. All interest collected by the vTokens reserves are distributed to vTokens holders directly by continuously increasing their wallet balance.For all minting and burning actions, see
Deposit()
and Withdraw()
methods in the LendingPool
contract.All standard EIP20 methods are implemented, such as
balanceOf()
, transfer()
, transferFrom()
, approve()
, totalSupply()
, etc.balanceOf()
will always return the most up to date balance of the user, which includes their principal balance + the interest generated by the principal balance.function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
Allows a user to permit another account (or contract) to use their funds using a signed message. This enables gas-less transactions and single approval/transfer transactions.
Parameter | Type | Description |
---|---|---|
owner | address | The owner of the funds |
spender | address | The spender for the funds |
value | uint256 | The amount the spender is permitted to use |
deadline | uint256 | The deadline timestamp that the permit is valid. Use type(uint).max for no deadline. |
v | uint8 | Signature parameter |
r | bytes32 | Signature parameter |
s | bytes32 | Signature parameter |
function _nonces(address owner) public
Returns the next valid nonce to submit when calling
permit()
function UNDERLYING_ASSET_ADDRESS()
Returns the underlying asset of the vToken.
function RESERVE_TREASURY_ADDRESS()
Returns the address of the vTokens reserve treasury.
function POOL()
function scaledBalanceOf(address user)
Returns the scaled balance of
user
as a uint256
.The scaled balance is the balance of the underlying asset of the user (amount deposited), divided by the current liquidity index at the moment of the update.
I.e.
â
This essentially 'marks' when a user has deposited in the reserve pool, and can be used to calculate the users current compounded vToken balance.
Example:
- User A deposits 1000 DAI at the liquidity index of 1.1
- User B deposits another amount into the same pool
- The liquidity index is now 1.2.
- Therefore to calculate User A's current compounded vToken balance, the reverse operation should be performed:â
function getScaledUserBalanceAndSupply(address user)
Returns the scaled balance of
user
and the principal total supply.Type | Description |
---|---|
uint256 | scaled balance of user |
uint256 | principal total supply |
function scaledTotalSupply()
Returns the scaled total supply of the vToken as
uint256
.The scaled total supply is the sum of all the updated stored balances, divided by the reserve index at the moment of the update.
function isTransferAllowed(address user, uint256 amount)
Returns
true
if a transfer is allowed.Last modified 5mo ago