Skip to content

Latest commit

 

History

History
59 lines (49 loc) · 1.7 KB

README.md

File metadata and controls

59 lines (49 loc) · 1.7 KB

// SPDX-License-Identifier: MIT pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol";

contract DD is ERC20, ERC20Burnable, Pausable, Ownable, ERC20Permit, ERC20Votes, ERC20FlashMint { constructor() ERC20("DD", "DD") ERC20Permit("DD") { _mint(msg.sender, 100000 * 10 ** decimals()); }

function pause() public onlyOwner {
    _pause();
}

function unpause() public onlyOwner {
    _unpause();
}

function mint(address to, uint256 amount) public onlyOwner {
    _mint(to, amount);
}

function _beforeTokenTransfer(address from, address to, uint256 amount)
    internal
    whenNotPaused
    override
{
    super._beforeTokenTransfer(from, to, amount);
}

// The following functions are overrides required by Solidity.

function _afterTokenTransfer(address from, address to, uint256 amount)
    internal
    override(ERC20, ERC20Votes)
{
    super._afterTokenTransfer(from, to, amount);
}

function _mint(address to, uint256 amount)
    internal
    override(ERC20, ERC20Votes)
{
    super._mint(to, amount);
}

function _burn(address account, uint256 amount)
    internal
    override(ERC20, ERC20Votes)
{
    super._burn(account, amount);
}

}