The core of the MPL V2 token is based on the audited and battle-tested ERC20 contract. The existing ERC20 contract used for xMPL and all existing pools will serve as the foundation for MPL V2. The ERC20 contract provides the following functions:
approve(): Allows one account to set the allowance of another account over their tokens.
decreaseAllowance(): Allows one account to decrease the allowance of another account over their tokens.
increaseAllowance(): Allows one account to increase the allowance of another account over their tokens.
permit(): Approve by signature.
transfer(): Moves an amount of tokens from msg.sender to a specified account.
transferFrom(): Moves a pre-approved amount of tokens from a sender to a specified account.
_mint(): Creates new tokens for a given account and increases the total supply.
_burn(): Removes tokens from an account and decreases the total supply.
At construction time, the MPLv2 should do a one time mint of 10% of the supply directly to the treasury. Additionally 10 Million MPLv2 will be minted to the migrator contract to facilitate a 1-1 swap from MPL V1 to MPL v2.