Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x9506d37f70eB4C3d79C398d326C871aBBf10521d
Balance 0 ETH
Nonce 1
Code Size 8970 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

8970 bytes
0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063a9059cbb11610071578063a9059cbb14610309578063ad2bb1b314610339578063dd62ed3e14610355578063f2fde38b14610385578063fbac3951146103a157610116565b80638da5cb5b1461026d578063942d468b1461028b57806395d89b41146102bb578063a457c2d7146102d957610116565b806323b872dd116100e957806323b872dd146101a3578063313ce567146101d357806339509351146101f157806342966c681461022157806370a082311461023d57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd14610169578063186d9d8814610187575b600080fd5b6101236103d1565b6040516101309190611ab5565b60405180910390f35b610153600480360381019061014e9190611746565b610463565b6040516101609190611a9a565b60405180910390f35b610171610481565b60405161017e9190611c97565b60405180910390f35b6101a1600480360381019061019c9190611692565b61048b565b005b6101bd60048036038101906101b891906116f7565b610515565b6040516101ca9190611a9a565b60405180910390f35b6101db610616565b6040516101e89190611cb2565b60405180910390f35b61020b60048036038101906102069190611746565b61061f565b6040516102189190611a9a565b60405180910390f35b61023b600480360381019061023691906117f7565b6106cb565b005b61025760048036038101906102529190611692565b61075b565b6040516102649190611c97565b60405180910390f35b6102756107a4565b6040516102829190611a7f565b60405180910390f35b6102a560048036038101906102a09190611782565b6107cd565b6040516102b29190611a9a565b60405180910390f35b6102c36108a7565b6040516102d09190611ab5565b60405180910390f35b6102f360048036038101906102ee9190611746565b610939565b6040516103009190611a9a565b60405180910390f35b610323600480360381019061031e9190611746565b610a2d565b6040516103309190611a9a565b60405180910390f35b610353600480360381019061034e9190611692565b610a4b565b005b61036f600480360381019061036a91906116bb565b610ad5565b60405161037c9190611c97565b60405180910390f35b61039f600480360381019061039a9190611692565b610b5c565b005b6103bb60048036038101906103b69190611692565b610d05565b6040516103c89190611a9a565b60405180910390f35b6060600580546103e090611dfb565b80601f016020809104026020016040519081016040528092919081815260200182805461040c90611dfb565b80156104595780601f1061042e57610100808354040283529160200191610459565b820191906000526020600020905b81548152906001019060200180831161043c57829003601f168201915b5050505050905090565b6000610477610470610d5b565b8484610d63565b6001905092915050565b6000600454905090565b610493610d5b565b73ffffffffffffffffffffffffffffffffffffffff166104b16107a4565b73ffffffffffffffffffffffffffffffffffffffff1614610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe90611bb7565b60405180910390fd5b610512816000610f2e565b50565b6000610522848484611045565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061056d610d5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105e490611b97565b60405180910390fd5b61060a856105f9610d5b565b85846106059190611d3f565b610d63565b60019150509392505050565b60006012905090565b60006106c161062c610d5b565b84846002600061063a610d5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106bc9190611ce9565b610d63565b6001905092915050565b6106d3610d5b565b73ffffffffffffffffffffffffffffffffffffffff166106f16107a4565b73ffffffffffffffffffffffffffffffffffffffff1614610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90611bb7565b60405180910390fd5b610758610752610d5b565b826112c7565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600090505b858590508160ff16101561089a576108876107ee610d5b565b87878460ff1681811061082a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061083f9190611692565b86868560ff1681811061087b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611045565b808061089290611e2d565b9150506107d5565b5060019050949350505050565b6060600680546108b690611dfb565b80601f01602080910402602001604051908101604052809291908181526020018280546108e290611dfb565b801561092f5780601f106109045761010080835404028352916020019161092f565b820191906000526020600020905b81548152906001019060200180831161091257829003601f168201915b5050505050905090565b60008060026000610948610d5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90611c57565b60405180910390fd5b610a22610a10610d5b565b858584610a1d9190611d3f565b610d63565b600191505092915050565b6000610a41610a3a610d5b565b8484611045565b6001905092915050565b610a53610d5b565b73ffffffffffffffffffffffffffffffffffffffff16610a716107a4565b73ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe90611bb7565b60405180910390fd5b610ad2816001610f2e565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b64610d5b565b73ffffffffffffffffffffffffffffffffffffffff16610b826107a4565b73ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90611bb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f90611b17565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca90611c37565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a90611b37565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f219190611c97565b60405180910390a3505050565b610f36610d5b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90611bd7565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f8b013b23a88536ac388362502bb7e856a071b191d4d460cad41b54c88c5d0aaa60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90611c17565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90611ad7565b60405180910390fd5b61113083838361149d565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90611b57565b60405180910390fd5b81816111c39190611d3f565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112559190611ce9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112b99190611c97565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90611bf7565b60405180910390fd5b6113438260008361149d565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190611af7565b60405180910390fd5b81816113d69190611d3f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816004600082825461142b9190611d3f565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114909190611c97565b60405180910390a3505050565b60001515600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561154d575060001515600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390611c77565b60405180910390fd5b600081116115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690611b77565b60405180910390fd5b505050565b6000813590506115e3816122a6565b92915050565b60008083601f8401126115fb57600080fd5b8235905067ffffffffffffffff81111561161457600080fd5b60208301915083602082028301111561162c57600080fd5b9250929050565b60008083601f84011261164557600080fd5b8235905067ffffffffffffffff81111561165e57600080fd5b60208301915083602082028301111561167657600080fd5b9250929050565b60008135905061168c816122bd565b92915050565b6000602082840312156116a457600080fd5b60006116b2848285016115d4565b91505092915050565b600080604083850312156116ce57600080fd5b60006116dc858286016115d4565b92505060206116ed858286016115d4565b9150509250929050565b60008060006060848603121561170c57600080fd5b600061171a868287016115d4565b935050602061172b868287016115d4565b925050604061173c8682870161167d565b9150509250925092565b6000806040838503121561175957600080fd5b6000611767858286016115d4565b92505060206117788582860161167d565b9150509250929050565b6000806000806040858703121561179857600080fd5b600085013567ffffffffffffffff8111156117b257600080fd5b6117be878288016115e9565b9450945050602085013567ffffffffffffffff8111156117dd57600080fd5b6117e987828801611633565b925092505092959194509250565b60006020828403121561180957600080fd5b60006118178482850161167d565b91505092915050565b61182981611d73565b82525050565b61183881611d85565b82525050565b600061184982611ccd565b6118538185611cd8565b9350611863818560208601611dc8565b61186c81611eb5565b840191505092915050565b6000611884602383611cd8565b915061188f82611ec6565b604082019050919050565b60006118a7602283611cd8565b91506118b282611f15565b604082019050919050565b60006118ca602683611cd8565b91506118d582611f64565b604082019050919050565b60006118ed602283611cd8565b91506118f882611fb3565b604082019050919050565b6000611910602683611cd8565b915061191b82612002565b604082019050919050565b6000611933602083611cd8565b915061193e82612051565b602082019050919050565b6000611956602883611cd8565b91506119618261207a565b604082019050919050565b6000611979602083611cd8565b9150611984826120c9565b602082019050919050565b600061199c603683611cd8565b91506119a7826120f2565b604082019050919050565b60006119bf602183611cd8565b91506119ca82612141565b604082019050919050565b60006119e2602583611cd8565b91506119ed82612190565b604082019050919050565b6000611a05602483611cd8565b9150611a10826121df565b604082019050919050565b6000611a28602583611cd8565b9150611a338261222e565b604082019050919050565b6000611a4b601e83611cd8565b9150611a568261227d565b602082019050919050565b611a6a81611db1565b82525050565b611a7981611dbb565b82525050565b6000602082019050611a946000830184611820565b92915050565b6000602082019050611aaf600083018461182f565b92915050565b60006020820190508181036000830152611acf818461183e565b905092915050565b60006020820190508181036000830152611af081611877565b9050919050565b60006020820190508181036000830152611b108161189a565b9050919050565b60006020820190508181036000830152611b30816118bd565b9050919050565b60006020820190508181036000830152611b50816118e0565b9050919050565b60006020820190508181036000830152611b7081611903565b9050919050565b60006020820190508181036000830152611b9081611926565b9050919050565b60006020820190508181036000830152611bb081611949565b9050919050565b60006020820190508181036000830152611bd08161196c565b9050919050565b60006020820190508181036000830152611bf08161198f565b9050919050565b60006020820190508181036000830152611c10816119b2565b9050919050565b60006020820190508181036000830152611c30816119d5565b9050919050565b60006020820190508181036000830152611c50816119f8565b9050919050565b60006020820190508181036000830152611c7081611a1b565b9050919050565b60006020820190508181036000830152611c9081611a3e565b9050919050565b6000602082019050611cac6000830184611a61565b92915050565b6000602082019050611cc76000830184611a70565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611cf482611db1565b9150611cff83611db1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d3457611d33611e57565b5b828201905092915050565b6000611d4a82611db1565b9150611d5583611db1565b925082821015611d6857611d67611e57565b5b828203905092915050565b6000611d7e82611d91565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611de6578082015181840152602081019050611dcb565b83811115611df5576000848401525b50505050565b60006002820490506001821680611e1357607f821691505b60208210811415611e2757611e26611e86565b5b50919050565b6000611e3882611dbb565b915060ff821415611e4c57611e4b611e57565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20616d6f756e74206d7573742062652061626f7665207a65726f600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d6573736167652073656e6465722063616e206e6f7420626c60008201527f6f636b206f7220756e626c6f636b2068696d73656c6600000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f4d4c5445524332303a207472616e73666572206e6f7420616c6c6f7765640000600082015250565b6122af81611d73565b81146122ba57600080fd5b50565b6122c681611db1565b81146122d157600080fd5b5056fea2646970667358221220b192b093613bb7e4e7eefaea29106726054901615339be358c70c7394ae765c164736f6c63430008040033

Verified Source Code Full Match

Compiler: v0.8.4+commit.c7e474f2 EVM: istanbul Optimization: No
MediaLicensingToken.sol 274 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
  function _msgSender() internal view virtual returns (address) {
    return msg.sender;
  }

  function _msgData() internal view virtual returns (bytes calldata) {
    this;
    return msg.data;
  }
}

interface IERC20 {

  function totalSupply() external view returns (uint256);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

  function name() external view returns (string memory);
  function symbol() external view returns (string memory);
  function decimals() external view returns (uint8);
}

abstract contract Ownable is Context {

  // Holds the owner address
  address private _owner;

  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  constructor () {
    address msgSender = _msgSender();
    _owner = msgSender;
    emit OwnershipTransferred(address(0), msgSender);
  }

  function owner() public view virtual returns (address) {
    return _owner;
  }

  modifier onlyOwner() {
    require(owner() == _msgSender(), "Ownable: caller is not the owner");
    _;
  }

  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

// Our main contract which implements all ERC20 standard methods
contract MediaLicensingToken is Context, IERC20, IERC20Metadata, Ownable {

  // Holds all the balances
  mapping (address => uint256) private _balances;

  // Holds all allowances
  mapping (address => mapping (address => uint256)) private _allowances;

  // Holds all blacklisted addresses
  mapping (address => bool) private _blocklist;

  // They can only be decreased
  uint256 private _totalSupply;

  // Immutable they can only be set once during construction
  string private _name;
  string private _symbol;
  uint256 private _maxTokens;

  // Events
  event Blocklist(address indexed account, bool indexed status);

  // The initializer of our contract
  constructor () {
    _name = "Media Licensing Token";
    _symbol = "MLT";

    // Holds max mintable limit, 200 million tokens
    _maxTokens = 200000000000000000000000000;
    _mint(_msgSender(), _maxTokens);
  }

  /*
   * PUBLIC RETURNS
   */

  // Returns the name of the token.
  function name() public view virtual override returns (string memory) {
    return _name;
  }

  // Returns the symbol of the token
  function symbol() public view virtual override returns (string memory) {
    return _symbol;
  }

  // Returns the number of decimals used
  function decimals() public view virtual override returns (uint8) {
    return 18;
  }

  // Returns the total supply
  function totalSupply() public view virtual override returns (uint256) {
    return _totalSupply;
  }

  // Returns the balance of a given address
  function balanceOf(address account) public view virtual override returns (uint256) {
    return _balances[account];
  }

  // Returns the allowances of the given addresses
  function allowance(address owner, address spender) public view virtual override returns (uint256) {
    return _allowances[owner][spender];
  }

  // Returns a blocked address of a given address
  function isBlocked(address account) public view virtual returns (bool) {
    return _blocklist[account];
  }

  /*
   * PUBLIC FUNCTIONS
   */

  // Calls the _transfer function for a given recipient and amount
  function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

  // Calls the _transfer function for a given array of recipients and amounts
  function transferArray(address[] calldata recipients, uint256[] calldata amounts) public virtual returns (bool) {
    for (uint8 count = 0; count < recipients.length; count++) {
      _transfer(_msgSender(), recipients[count], amounts[count]);
    }
    return true;
  }

  // Calls the _approve function for a given spender and amount
  function approve(address spender, uint256 amount) public virtual override returns (bool) {
    _approve(_msgSender(), spender, amount);
    return true;
  }

  // Calls the _transfer and _approve function for a given sender, recipient and amount
  function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
    _transfer(sender, recipient, amount);

    uint256 currentAllowance = _allowances[sender][_msgSender()];
    require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    _approve(sender, _msgSender(), currentAllowance - amount);

    return true;
  }

  // Calls the _approve function for a given spender and added value (amount)
  function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
    return true;
  }

  // Calls the _approve function for a given spender and substracted value (amount)
  function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
    uint256 currentAllowance = _allowances[_msgSender()][spender];
    require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    _approve(_msgSender(), spender, currentAllowance - subtractedValue);

    return true;
  }

  /*
   * PUBLIC (Only Owner)
   */

  // Calls the _burn internal function for a given amount
  function burn(uint256 amount) public virtual onlyOwner {
    _burn(_msgSender(), amount);
  }

  function blockAddress (address account) public virtual onlyOwner {
    _block(account, true);
  }

  function unblockAddress (address account) public virtual onlyOwner {
    _block(account, false);
  }

  /*
   * INTERNAL (PRIVATE)
   */

  function _block (address account, bool status) internal virtual {
    require(account != _msgSender(), "ERC20: message sender can not block or unblock himself");
    _blocklist[account] = status;

    emit Blocklist(account, status);
  }

  // Implements the transfer function for a given sender, recipient and amount
  function _transfer(address sender, address recipient, uint256 amount) internal virtual {
    require(sender != address(0), "ERC20: transfer from the zero address");
    require(recipient != address(0), "ERC20: transfer to the zero address");

    _beforeTokenTransfer(sender, recipient, amount);

    uint256 senderBalance = _balances[sender];
    require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    _balances[sender] = senderBalance - amount;
    _balances[recipient] += amount;

    emit Transfer(sender, recipient, amount);
  }

  // Implements the mint function for a given account and amount
  function _mint(address account, uint256 amount) internal virtual {
    require(account != address(0), "ERC20: mint to the zero address");

    _beforeTokenTransfer(address(0), account, amount);

    _totalSupply += amount;
    // Paranoid security
    require(_totalSupply <= _maxTokens, "ERC20: mint exceeds total supply limit");

    _balances[account] += amount;
    emit Transfer(address(0), account, amount);
  }

  // Implements the burn function for a given account and amount
  function _burn(address account, uint256 amount) internal virtual {
    require(account != address(0), "ERC20: burn from the zero address");

    _beforeTokenTransfer(account, address(0), amount);

    uint256 accountBalance = _balances[account];
    require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    _balances[account] = accountBalance - amount;
    _totalSupply -= amount;

    emit Transfer(account, address(0), amount);
  }

  // Implements the approve function for a given owner, spender and amount
  function _approve(address owner, address spender, uint256 amount) internal virtual {
    require(owner != address(0), "ERC20: approve from the zero address");
    require(spender != address(0), "ERC20: approve to the zero address");

    _allowances[owner][spender] = amount;
    emit Approval(owner, spender, amount);
  }

  /*
   * INTERNAL (PRIVATE) HELPERS
   */

  function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {
    require(_blocklist[from] == false && _blocklist[to] == false, "MLTERC20: transfer not allowed");
    require(amount > 0, "ERC20: amount must be above zero");
  }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
isBlocked 0xfbac3951 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 10 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
blockAddress 0xad2bb1b3
address account
burn 0x42966c68
uint256 amount
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferArray 0x942d468b
address[] recipients
uint256[] amounts
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
unblockAddress 0x186d9d88
address account

Recent Transactions

No transactions found for this address