FTM Price: $1.17 (-6.52%)
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Operator821951302024-06-03 22:26:20189 days ago1717453580IN
Mummy Finance : Operators
0 FTM0.0208233450
Set Operator821951252024-06-03 22:26:13189 days ago1717453573IN
Mummy Finance : Operators
0 FTM0.0208233450
Set Operator821951192024-06-03 22:26:05189 days ago1717453565IN
Mummy Finance : Operators
0 FTM0.0208233450
Set Operator699569542023-10-30 3:57:58407 days ago1698638278IN
Mummy Finance : Operators
0 FTM0.0161959350
Set Operator697096862023-10-24 6:05:10413 days ago1698127510IN
Mummy Finance : Operators
0 FTM0.0029244763.19913425
Set Operator697096792023-10-24 6:04:44413 days ago1698127484IN
Mummy Finance : Operators
0 FTM0.0023243750.23076116
Set Operator697096762023-10-24 6:04:32413 days ago1698127472IN
Mummy Finance : Operators
0 FTM0.0026237356.7
Set Operator697096692023-10-24 6:04:20413 days ago1698127460IN
Mummy Finance : Operators
0 FTM0.0023217450.17384994
Set Operator697096652023-10-24 6:04:05413 days ago1698127445IN
Mummy Finance : Operators
0 FTM0.0035982477.75946655
Set Operator697096602023-10-24 6:03:47413 days ago1698127427IN
Mummy Finance : Operators
0 FTM0.00517389111.80995712

Latest 1 internal transaction

Parent Transaction Hash Block From To
697090742023-10-24 5:40:44413 days ago1698126044  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Operators

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 2 : Operators.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "@openzeppelin/contracts/utils/Context.sol";

contract Operators is Context {
    // level 1: normal operator
    // level 2: rewards and feed manager
    // level 3: admin
    // level 4: owner
    mapping(address => uint256) operatorLevel;

    address public oldOwner;
    address public pendingOwner;

    modifier onlyOperator(uint256 level) {
        require(operatorLevel[_msgSender()] >= level, "invalid operator");
        _;
    }

    constructor() {
        operatorLevel[_msgSender()] = 4;
    }

    function setOperator(address op, uint256 level) external onlyOperator(4) {
        operatorLevel[op] = level;
    }

    function getOperatorLevel(address op) public view returns (uint256) {
        return operatorLevel[op];
    }

    function transferOwnership(address newOwner) external onlyOperator(4) {
        require(newOwner != address(0), "zero address");

        oldOwner = _msgSender();
        pendingOwner = newOwner;
    }

    function acceptOwnership() external {
        require(_msgSender() == pendingOwner, "not pendingOwner");

        operatorLevel[_msgSender()] = 4;
        operatorLevel[oldOwner] = 0;

        pendingOwner = address(0);
        oldOwner = address(0);
    }
}

File 2 of 2 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"op","type":"address"}],"name":"getOperatorLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oldOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"op","type":"address"},{"internalType":"uint256","name":"level","type":"uint256"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b503360009081526020819052604081206004905561038b90819061003490396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063777541361461006757806379ba50971461007c578063df07560514610084578063e30c3978146100c0578063f2fde38b146100eb578063f487404f146100fe575b600080fd5b61007a610075366004610309565b610111565b005b61007a610188565b6100ad610092366004610333565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6002546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020016100b7565b61007a6100f9366004610333565b610222565b6001546100d3906001600160a01b031681565b3360009081526020819052604090205460049081111561016b5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b21037b832b930ba37b960811b60448201526064015b60405180910390fd5b506001600160a01b03909116600090815260208190526040902055565b6002546001600160a01b0316336001600160a01b0316146101de5760405162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a7bbb732b960811b6044820152606401610162565b3360009081526020819052604080822060049055600180546001600160a01b0316835290822091909155600280546001600160a01b03199081169091558154169055565b336000908152602081905260409020546004908111156102775760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b21037b832b930ba37b960811b6044820152606401610162565b6001600160a01b0382166102bc5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610162565b50600180546001600160a01b03199081163317909155600280549091166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030457600080fd5b919050565b6000806040838503121561031c57600080fd5b610325836102ed565b946020939093013593505050565b60006020828403121561034557600080fd5b61034e826102ed565b939250505056fea26469706673582212201313cbfce2511b9ef6088e3641e3d77b6a6c0f5b512fee7f927b1cf1b543e52c64736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100625760003560e01c8063777541361461006757806379ba50971461007c578063df07560514610084578063e30c3978146100c0578063f2fde38b146100eb578063f487404f146100fe575b600080fd5b61007a610075366004610309565b610111565b005b61007a610188565b6100ad610092366004610333565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b6002546100d3906001600160a01b031681565b6040516001600160a01b0390911681526020016100b7565b61007a6100f9366004610333565b610222565b6001546100d3906001600160a01b031681565b3360009081526020819052604090205460049081111561016b5760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b21037b832b930ba37b960811b60448201526064015b60405180910390fd5b506001600160a01b03909116600090815260208190526040902055565b6002546001600160a01b0316336001600160a01b0316146101de5760405162461bcd60e51b815260206004820152601060248201526f3737ba103832b73234b733a7bbb732b960811b6044820152606401610162565b3360009081526020819052604080822060049055600180546001600160a01b0316835290822091909155600280546001600160a01b03199081169091558154169055565b336000908152602081905260409020546004908111156102775760405162461bcd60e51b815260206004820152601060248201526f34b73b30b634b21037b832b930ba37b960811b6044820152606401610162565b6001600160a01b0382166102bc5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b6044820152606401610162565b50600180546001600160a01b03199081163317909155600280549091166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030457600080fd5b919050565b6000806040838503121561031c57600080fd5b610325836102ed565b946020939093013593505050565b60006020828403121561034557600080fd5b61034e826102ed565b939250505056fea26469706673582212201313cbfce2511b9ef6088e3641e3d77b6a6c0f5b512fee7f927b1cf1b543e52c64736f6c63430008090033

Block Transaction 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
[ Download: CSV Export  ]
[ 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.