Skip to content

Latest commit

 

History

History
367 lines (314 loc) · 10.3 KB

NPM.md

File metadata and controls

367 lines (314 loc) · 10.3 KB

NPM.sol

View Source: contracts/core/token/NPM.sol

↗ Extends: WithPausability, WithRecovery, ERC20 ↘ Derived Contracts: POT

NPM

Contract Members

Constants & Variables

uint256 private constant _CAP;
uint256 private _issued;

Events

event Minted(bytes32 indexed key, address indexed account, uint256  amount);

Functions

function (address timelockOrOwner, string tokenName, string tokenSymbol) public nonpayable Ownable Pausable ERC20 

Arguments

Name Type Description
timelockOrOwner address
tokenName string
tokenSymbol string
Source Code
constructor(
    address timelockOrOwner,
    string memory tokenName,
    string memory tokenSymbol
  ) Ownable() Pausable() ERC20(tokenName, tokenSymbol) {
    require(timelockOrOwner != address(0), "Invalid owner");
    require(bytes(tokenName).length > 0, "Invalid token name");
    require(bytes(tokenSymbol).length > 0, "Invalid token symbol");

    super._transferOwnership(timelockOrOwner);
  }

_beforeTokenTransfer

function _beforeTokenTransfer(address , address , uint256 ) internal view whenNotPaused 

Arguments

Name Type Description
address
address
uint256
Source Code
function _beforeTokenTransfer(
    address,
    address,
    uint256
  ) internal view virtual override whenNotPaused {}

issueMany

function issueMany(bytes32 key, address[] receivers, uint256[] amounts) external nonpayable onlyOwner whenNotPaused 

Arguments

Name Type Description
key bytes32
receivers address[]
amounts uint256[]
Source Code
function issueMany(
    bytes32 key,
    address[] calldata receivers,
    uint256[] calldata amounts
  ) external onlyOwner whenNotPaused {
    require(receivers.length > 0, "No receiver");
    require(receivers.length == amounts.length, "Invalid args");

    _issued += _sumOf(amounts);
    require(_issued <= _CAP, "Cap exceeded");

    for (uint256 i = 0; i < receivers.length; i++) {
      _issue(key, receivers[i], amounts[i]);
    }
  }

transferMany

function transferMany(address[] receivers, uint256[] amounts) external nonpayable onlyOwner whenNotPaused 

Arguments

Name Type Description
receivers address[]
amounts uint256[]
Source Code
function transferMany(address[] calldata receivers, uint256[] calldata amounts) external onlyOwner whenNotPaused {
    require(receivers.length > 0, "No receiver");
    require(receivers.length == amounts.length, "Invalid args");

    for (uint256 i = 0; i < receivers.length; i++) {
      super.transfer(receivers[i], amounts[i]);
    }
  }

_issue

function _issue(bytes32 key, address mintTo, uint256 amount) private nonpayable

Arguments

Name Type Description
key bytes32
mintTo address
amount uint256
Source Code
function _issue(
    bytes32 key,
    address mintTo,
    uint256 amount
  ) private {
    require(amount > 0, "Invalid amount");

    super._mint(mintTo, amount);
    emit Minted(key, mintTo, amount);
  }

_sumOf

function _sumOf(uint256[] amounts) private pure
returns(total uint256)

Arguments

Name Type Description
amounts uint256[]
Source Code
function _sumOf(uint256[] calldata amounts) private pure returns (uint256 total) {
    for (uint256 i = 0; i < amounts.length; i++) {
      total += amounts[i];
    }
  }

Contracts