tToken
tToken
tTokens are tokens minted and burnt upon supply and withdraw of assets to an Themis market, which denote the amount of crypto assets supplied and the yield earned on those assets. The tTokens’ value is pegged to the value of the corresponding supplied asset at a 1:1 ratio and can be safely stored, transferred or traded. All yield collected by the tTokens' reserves are distributed to tToken holders directly by continuously increasing their wallet balance.
EIP20 Methods
All standard EIP20 methods are implemented for tTokens, 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 yield generated by the principal balance.
EIP712 Methods
DOMAIN_SEPARATOR
function DOMAIN_SEPARATOR()
Get the domain separator for the token at current chain.
nonces
function nonces(address owner)
Returns the nonce value for address specified as parameter. This is the nonce used when calling permit()
Protocol View Methods
scaledBalanceOf
function scaledBalanceOf(address user)
Returns the scaled supply balance of user
. The scaled balance is the sum of all the updated stored balance divided by the reserve's liquidity index at the moment of the update.
getScaledUserBalanceAndSupply
function getScaledUserBalanceAndSupply(address user)
Returns the scaled balance of the user and the scaled total supply.
scaledTotalSupply
function scaledTotalSupply()
Returns the scaled total supply of the tToken.
getPreviousIndex
function getPreviousIndex(address user)
Returns last index interest that was accrued to the user's balance (expressed in ray).
getIncentivesController
function getIncentivesController()
Returns the address of the Incentives Controller contract
POOL
function POOL()
Returns the address of the associated Pool for the tToken.
UNDERLYING_ASSET_ADDRESS
function UNDERLYING_ASSET_ADDRESS()
Returns address of the underlying reserve asset.
RESERVE_TREASURY_ADDRESS
function RESERVE_TREASURY_ADDRESS()
Returns address of the Treasury, controlled by governance, receiving the fee on this aToken.
Protocol Write Methods
setIncentivesController
function setIncentivesController(IIncentivesController controller)
Sets a new Incentives Controller.
Only Pool Admin can call this methods. To update Incentives Controller on main Themis market, Governance Proposal must be submitted.
permit
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.
|Name|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|
FAQ
How tToken earn interest? / How tToken balance increases?
Pool methods (deposit, withdraw, borrow, repay, liquidationCall) updates the state and cumulated liquidity index of the reserve once every block. tToken's balanceOf method returns the balance computed based on block.timestamp
and liquidityIndex
of the underlying reserve and hence, returns the most up to date balance of account, which includes principal
+ interest
.
LiquidityRate vs LiquidityIndex
Can I transfer tTokens? Yes! with few caveat to keep in mind
By transferring tTokens, you’re transferring your balance of the underlying asset. Only the account holding the tTokens can withdraw the deposited asset.
AToken transfer will fail if the resulting Health Factor of user will end up being below 1.
If I transfer tToken does my pending liquidity rewards get transferred? No, liquidity rewards earned prior to the transfer of tToken are accrued by the user/address holding the tTokens originally. Though, all future liquidity rewards will be earned by the new recepient.
What is the difference between ScaledBalance and Balance?
Example please! Let’s say you supply 1,000 DAI to the Themis Pool, you will receive 1,000 tDAI (at 1:1 exchange rate). You can see your tDAI balance increasing right away. Now, say a month later your tDAI balance is 1,050. You could withdraw 1,050 DAI from LendingPool by burning 1050 tDAI.
Last updated