A simple Smart Contract for a Standard, Capped, Mintable, Burnable, Payable ERC20 Token.
Token has a Role Based Access Control so you can add the MINTER permission to users or Smart Contracts.
Token has a trasferEnabled property. Nobody can transfer tokens until the property will be enabled or you can define users as OPERATOR allowed to transfer also if not enabled.
Token has the ERC1363 behaviors. ERC1363 is an ERC20 compatible token that can make a callback on the receiver contract to notify token transfers or token approvals.
npm install @vittominacori/erc20-tokenpragma solidity ^0.7.0;
import "@vittominacori/erc20-token/contracts/ERC20Base.sol";
contract MyToken is ERC20Base {
constructor (
string memory name,
string memory symbol,
uint8 decimals,
uint256 cap,
uint256 initialSupply,
bool isTransferEnabled
) ERC20Base(name, symbol, decimals, cap, initialSupply, isTransferEnabled) {}
// your stuff
}npm installOpen the Truffle console
npm run truffle:consolenpm run truffle:compilenpm run truffle:testOpen the Hardhat console
npm run hardhat:consolenpm run hardhat:compilenpm run hardhat:testnpm run hardhat:coverageUse Solhint
npm run lint:solUse ESLint
npm run lint:jsUse ESLint and fix
npm run lint:fixCode released under the MIT License.