transfer & mint
Last updated
Was this helpful?
Last updated
Was this helpful?
This transfers the asset to be supplied from user to the corresponding AToken contract
from: msg.sender
to: aTokenAddress
(aDAI, aWETH...)
minting of ATokens corresponding the supplied asset
mint
calls _mintScaled
_mintScaled
mints tokens in-line with the current liquidity index, as seen by amountScaled
amountToMint
: amountScaled
cast as uint128
balanceIncrease
: interest accrued from user's last recorded index and current index
_userState[onBehalfOf].additionalData
is updated with the latest index.
balanceIncrease
is calculated as part of the mint event emission.
super.BalanceOf
and _userState[onBehalfOf].additionalData
super.BalanceOf
calls balanceOf
declared in IncentivizedERC20.sol
Inheritance: ScaledBalanceTokenBase > MintableIncentivizedERC20 > IncentivizedERC20
notice the irregular definition of balanceOf
, it calls out a mapping _userState
_userState
is mapping of user addresses to UserState
structs
Each UserState
struct stores a user's balance with a wildcard field of additionalData
mint
returns the bool value of (scaledBalance == 0)
scaledBalance
is the amount of balance a user has of a specific asset pre-dating this supply action
(scaledBalance == 0)
will return true only if this supply action is the user's very first supply action - specific to said asset.
The return bool value is useful to us as explained in the next section.
It additionally provides helpers to increase or decrease an allowance, to mitigate possible with vanilla approve
.
For more: