From 065077076f7c6ee93963ce9ccde25a0341db11b0 Mon Sep 17 00:00:00 2001 From: Ababananas <147140948+Ababananas@users.noreply.github.com> Date: Thu, 4 Jan 2024 22:20:14 +0600 Subject: [PATCH] Aba --- utils/extraRpcs.json | 61 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/utils/extraRpcs.json b/utils/extraRpcs.json index 204c8aca0a..76467466bf 100644 --- a/utils/extraRpcs.json +++ b/utils/extraRpcs.json @@ -1,8 +1,55 @@ -{ - "56": { - "rpcs": [ - "https://bscrpc.com", - "https://bsc-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3" - ] - } +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts@5.0.1/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts@5.0.1/token/ERC20/extensions/ERC20Burnable.sol"; +import "@openzeppelin/contracts@5.0.1/token/ERC20/extensions/ERC20Pausable.sol"; +import "@openzeppelin/contracts@5.0.1/access/AccessControl.sol"; +import "@openzeppelin/contracts@5.0.1/token/ERC20/extensions/ERC20Permit.sol"; +import "@openzeppelin/contracts@5.0.1/token/ERC20/extensions/ERC20Votes.sol"; +import "@openzeppelin/contracts@5.0.1/token/ERC20/extensions/ERC20FlashMint.sol"; + +contract Mytoken is ERC20, ERC20Burnable, ERC20Pausable, AccessControl, ERC20Permit, ERC20Votes, ERC20FlashMint { + bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE"); + bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); + + constructor(address defaultAdmin, address pauser, address minter) + ERC20("Mytoken", "Aba") + ERC20Permit("Mytoken") + { + _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin); + _grantRole(PAUSER_ROLE, pauser); + _mint(msg.sender, 2000 * 10 ** decimals()); + _grantRole(MINTER_ROLE, minter); + } + + function pause() public onlyRole(PAUSER_ROLE) { + _pause(); + } + + function unpause() public onlyRole(PAUSER_ROLE) { + _unpause(); + } + + function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) { + _mint(to, amount); + } + + // The following functions are overrides required by Solidity. + + function _update(address from, address to, uint256 value) + internal + override(ERC20, ERC20Pausable, ERC20Votes) + { + super._update(from, to, value); + } + + function nonces(address owner) + public + view + override(ERC20Permit, Nonces) + returns (uint256) + { + return super.nonces(owner); + } }