PToken

Implementation of the interest bearing token for the ParaSpace protocol

PERMIT_TYPEHASH

bytes32 PERMIT_TYPEHASH

PTOKEN_REVISION

uint256 PTOKEN_REVISION

_treasury

address _treasury

_underlyingAsset

address _underlyingAsset

getRevision

function getRevision() internal pure virtual returns (uint256)

Returns the revision number of the contract

Needs to be defined in the inherited class as a constant.

Return Values

constructor

constructor(contract IPool pool) public

Constructor.

Parameters

initialize

function initialize(contract IPool initializingPool, address treasury, address underlyingAsset, contract IRewardController incentivesController, uint8 pTokenDecimals, string pTokenName, string pTokenSymbol, bytes params) external

Initializes the pToken

Parameters

mint

function mint(address caller, address onBehalfOf, uint256 amount, uint256 index) external virtual returns (bool)

Mints amount xTokens to user

Parameters

Return Values

burn

function burn(address from, address receiverOfUnderlying, uint256 amount, uint256 index) external virtual

Burns xTokens from user and sends the equivalent amount of underlying to receiverOfUnderlying

In some instances, the mint event could be emitted from a burn transaction if the amount to burn is less than the interest that the user accrued

Parameters

mintToTreasury

function mintToTreasury(uint256 amount, uint256 index) external

Mints xTokens to the reserve treasury

Parameters

transferOnLiquidation

function transferOnLiquidation(address from, address to, uint256 value) external

Transfers xTokens in the event of a borrow being liquidated, in case the liquidators reclaims the xToken

Parameters

balanceOf

function balanceOf(address user) public view virtual returns (uint256)

Returns the amount of tokens owned by account.

totalSupply

function totalSupply() public view virtual returns (uint256)

Returns the amount of tokens in existence.

RESERVE_TREASURY_ADDRESS

function RESERVE_TREASURY_ADDRESS() external view returns (address)

Returns the address of the ParaSpace treasury, receiving the fees on this xToken.

Return Values

UNDERLYING_ASSET_ADDRESS

function UNDERLYING_ASSET_ADDRESS() external view returns (address)

Returns the address of the underlying asset of this xToken (E.g. WETH for pWETH)

Return Values

transferUnderlyingTo

function transferUnderlyingTo(address target, uint256 amount) external virtual

Transfers the underlying asset to target.

Used by the Pool to transfer assets in borrow(), withdraw() and flashLoan()

Parameters

handleRepayment

function handleRepayment(address user, uint256 amount) external virtual

Handles the underlying received by the xToken after the transfer has been completed.

The default implementation is empty as with standard ERC20 tokens, nothing needs to be done after the transfer is concluded. However in the future there may be xTokens that allow for example to stake the underlying to receive LM rewards. In that case, handleRepayment() would perform the staking of the underlying asset.

Parameters

permit

function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external

Allow passing a signed message to approve spending

implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md

Parameters

_transfer

function _transfer(address from, address to, uint256 amount, bool validate) internal

Transfers the pTokens between two users. Validates the transfer (ie checks for valid HF after the transfer) if required

Parameters

_transfer

function _transfer(address from, address to, uint128 amount) internal

Overrides the parent _transfer to force validated transfer() and transferFrom()

Parameters

DOMAIN_SEPARATOR

function DOMAIN_SEPARATOR() public view returns (bytes32)

Overrides the base function to fully implement IPToken see IncentivizedERC20.DOMAIN_SEPARATOR() for more detailed documentation

nonces

function nonces(address owner) public view returns (uint256)

Overrides the base function to fully implement IPToken see IncentivizedERC20.nonces() for more detailed documentation

_EIP712BaseId

function _EIP712BaseId() internal view returns (string)

Returns the user readable name of signing domain (e.g. token name)

Return Values

rescueTokens

function rescueTokens(address token, address to, uint256 amount) external

Rescue and transfer tokens locked in this contract

Parameters

getXTokenType

function getXTokenType() external pure virtual returns (enum XTokenType)

return token type`of xToken