ETH Price: $1,972.55 (+1.17%)

Contract

0x8937fF68da18e97B58109b598a6f0EbbF82DA3E2

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Add Manager727569032023-03-23 8:17:051056 days ago1679559425IN
0x8937fF68...bF82DA3E2
0 ETH0.000026350.1
Add Admin727568972023-03-23 8:17:031056 days ago1679559423IN
0x8937fF68...bF82DA3E2
0 ETH0.00002240.1

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Manager

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
pragma solidity ^0.8.4;

import "./interfaces/ITokenManager.sol";

contract Manager is IManager {
  mapping(address => bool) public admins;
  mapping(address => mapping(uint256 => bool)) public managers;

  constructor() {
    admins[msg.sender] = true;
  }

  modifier onlyAdmins() {
    require(admins[msg.sender], "Must be Admin");
    _;
  }

  event AddedManager(address manager, uint256 _type);
  event RemovedManager(address manager, uint256 _type);
  event AddedAdmin(address admin);
  event RemovedAdmin(address admin);

  function isAdmin(address _addr) external view returns (bool) {
    return admins[_addr];
  }

  function isManager(address _addr, uint256 _type)
    external
    view
    returns (bool)
  {
    return managers[_addr][_type];
  }

  function addManager(address _addr, uint256 _type) external onlyAdmins {
    managers[_addr][_type] = true;

    emit AddedManager(_addr, _type);
  }

  function removeManager(address _addr, uint256 _type) external onlyAdmins {
    managers[_addr][_type] = false;

    emit RemovedManager(_addr, _type);
  }

  function addAdmin(address _addr) external onlyAdmins {
    admins[_addr] = true;

    emit AddedAdmin(_addr);
  }

  function removeAdmin(address _addr) external onlyAdmins {
    admins[_addr] = false;

    emit RemovedAdmin(_addr);
  }

  
}

pragma solidity ^0.8.17;

interface IManager {
  function isAdmin(address _addr) external view returns (bool);

  function isManager(address _addr, uint256 _type) external view returns (bool);

  function addManager(address _addr, uint256 _type) external;

  function removeManager(address _addr, uint256 _type) external;

  function addAdmin(address _addr) external;

  function removeAdmin(address _addr) external;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AddedAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"}],"name":"AddedManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"RemovedAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"manager","type":"address"},{"indexed":false,"internalType":"uint256","name":"_type","type":"uint256"}],"name":"RemovedManager","type":"event"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"addManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"isManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"managers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_type","type":"uint256"}],"name":"removeManager","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50336000908152602081905260409020805460ff1916600117905561049f8061003a6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063704802751161005b578063704802751461013357806375fb0d781461014657806377b1ade914610159578063cbcd49be1461016c57600080fd5b80631785f53c1461008d57806324d7806c146100a2578063429b62e5146100e257806362c855ac14610105575b600080fd5b6100a061009b3660046103f6565b6101a5565b005b6100ce6100b03660046103f6565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100ce6100f03660046103f6565b60006020819052908152604090205460ff1681565b6100ce610113366004610418565b600160209081526000928352604080842090915290825290205460ff1681565b6100a06101413660046103f6565b610233565b6100a0610154366004610418565b6102b4565b6100a0610167366004610418565b61034d565b6100ce61017a366004610418565b6001600160a01b03919091166000908152600160209081526040808320938352929052205460ff1690565b3360009081526020819052604090205460ff166101dd5760405162461bcd60e51b81526004016101d490610442565b60405180910390fd5b6001600160a01b03811660008181526020818152604091829020805460ff1916905590519182527f3137a7fedbfedb7895dfa5a6812a4566dae9ded68d00aeec13c6ed1fa84a1c8091015b60405180910390a150565b3360009081526020819052604090205460ff166102625760405162461bcd60e51b81526004016101d490610442565b6001600160a01b03811660008181526020818152604091829020805460ff1916600117905590519182527f7849194239ab1d31b991b5436d81370256505cf25eaafbcccbc66acd118969169101610228565b3360009081526020819052604090205460ff166102e35760405162461bcd60e51b81526004016101d490610442565b6001600160a01b0382166000818152600160208181526040808420868552825292839020805460ff1916909217909155815192835282018390527f5059fa85b5cc3c2a04f01936e91d60f12e1db3329de6f4a225a5fae3fb4747bd91015b60405180910390a15050565b3360009081526020819052604090205460ff1661037c5760405162461bcd60e51b81526004016101d490610442565b6001600160a01b0382166000818152600160209081526040808320858452825291829020805460ff19169055815192835282018390527f9fac70c9a64cac371b1e37a590727a44ea13b2a81f27e77acfa127ac907c10229101610341565b80356001600160a01b03811681146103f157600080fd5b919050565b60006020828403121561040857600080fd5b610411826103da565b9392505050565b6000806040838503121561042b57600080fd5b610434836103da565b946020939093013593505050565b6020808252600d908201526c26bab9ba1031329020b236b4b760991b60408201526060019056fea26469706673582212200e12005e99312a4b3b35d806c789ba09b887faea6052c7930a486b5195f0403164736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063704802751161005b578063704802751461013357806375fb0d781461014657806377b1ade914610159578063cbcd49be1461016c57600080fd5b80631785f53c1461008d57806324d7806c146100a2578063429b62e5146100e257806362c855ac14610105575b600080fd5b6100a061009b3660046103f6565b6101a5565b005b6100ce6100b03660046103f6565b6001600160a01b031660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100ce6100f03660046103f6565b60006020819052908152604090205460ff1681565b6100ce610113366004610418565b600160209081526000928352604080842090915290825290205460ff1681565b6100a06101413660046103f6565b610233565b6100a0610154366004610418565b6102b4565b6100a0610167366004610418565b61034d565b6100ce61017a366004610418565b6001600160a01b03919091166000908152600160209081526040808320938352929052205460ff1690565b3360009081526020819052604090205460ff166101dd5760405162461bcd60e51b81526004016101d490610442565b60405180910390fd5b6001600160a01b03811660008181526020818152604091829020805460ff1916905590519182527f3137a7fedbfedb7895dfa5a6812a4566dae9ded68d00aeec13c6ed1fa84a1c8091015b60405180910390a150565b3360009081526020819052604090205460ff166102625760405162461bcd60e51b81526004016101d490610442565b6001600160a01b03811660008181526020818152604091829020805460ff1916600117905590519182527f7849194239ab1d31b991b5436d81370256505cf25eaafbcccbc66acd118969169101610228565b3360009081526020819052604090205460ff166102e35760405162461bcd60e51b81526004016101d490610442565b6001600160a01b0382166000818152600160208181526040808420868552825292839020805460ff1916909217909155815192835282018390527f5059fa85b5cc3c2a04f01936e91d60f12e1db3329de6f4a225a5fae3fb4747bd91015b60405180910390a15050565b3360009081526020819052604090205460ff1661037c5760405162461bcd60e51b81526004016101d490610442565b6001600160a01b0382166000818152600160209081526040808320858452825291829020805460ff19169055815192835282018390527f9fac70c9a64cac371b1e37a590727a44ea13b2a81f27e77acfa127ac907c10229101610341565b80356001600160a01b03811681146103f157600080fd5b919050565b60006020828403121561040857600080fd5b610411826103da565b9392505050565b6000806040838503121561042b57600080fd5b610434836103da565b946020939093013593505050565b6020808252600d908201526c26bab9ba1031329020b236b4b760991b60408201526060019056fea26469706673582212200e12005e99312a4b3b35d806c789ba09b887faea6052c7930a486b5195f0403164736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.