ETH Price: $3,386.86 (-1.59%)
Gas: 2 Gwei

Contract

0x8c1927427eaAcA6A64E238544ADfb95451cc05A1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Set Multiple Use...167270472023-02-28 13:47:11486 days ago1677592031IN
0x8c192742...451cc05A1
0 ETH0.0012799325.37591987
Set Multiple Use...167270452023-02-28 13:46:47486 days ago1677592007IN
0x8c192742...451cc05A1
0 ETH0.0013440525.13715884
Set Multiple Use...167270432023-02-28 13:46:23486 days ago1677591983IN
0x8c192742...451cc05A1
0 ETH0.0012726525.23148377
Set Multiple Use...167270412023-02-28 13:45:59486 days ago1677591959IN
0x8c192742...451cc05A1
0 ETH0.0017201823.87129705
Set Multiple Use...167270402023-02-28 13:45:47486 days ago1677591947IN
0x8c192742...451cc05A1
0 ETH0.00127423.92989065
Set Multiple Use...167270392023-02-28 13:45:35486 days ago1677591935IN
0x8c192742...451cc05A1
0 ETH0.0015458624.14504271
Set Multiple Use...167270382023-02-28 13:45:23486 days ago1677591923IN
0x8c192742...451cc05A1
0 ETH0.0012811524.06428195
Set Multiple Use...167270372023-02-28 13:45:11486 days ago1677591911IN
0x8c192742...451cc05A1
0 ETH0.0016482324.66083876
Set Multiple Use...167270362023-02-28 13:44:59486 days ago1677591899IN
0x8c192742...451cc05A1
0 ETH0.0017134124.36355708
Set Multiple Use...167270352023-02-28 13:44:47486 days ago1677591887IN
0x8c192742...451cc05A1
0 ETH0.0016814525.16244785
Set Multiple Use...148722552022-05-30 11:14:58761 days ago1653909298IN
0x8c192742...451cc05A1
0 ETH0.0013341321.05282922
Set Role With Mu...148722542022-05-30 11:14:50761 days ago1653909290IN
0x8c192742...451cc05A1
0 ETH0.0071985721.66175897
Set Multiple Use...148722522022-05-30 11:14:30761 days ago1653909270IN
0x8c192742...451cc05A1
0 ETH0.0010840418.64956579
Set Role With Mu...148722492022-05-30 11:12:50761 days ago1653909170IN
0x8c192742...451cc05A1
0 ETH0.0016754916.19380425
Set Multiple Use...148297212022-05-23 12:59:53768 days ago1653310793IN
0x8c192742...451cc05A1
0 ETH0.0017025125.728997
Set Role With Mu...148297202022-05-23 12:59:16768 days ago1653310756IN
0x8c192742...451cc05A1
0 ETH0.0026127723.03689053
Set Multiple Use...148297182022-05-23 12:59:00768 days ago1653310740IN
0x8c192742...451cc05A1
0 ETH0.0014191224.41422446
Set Role With Mu...148297162022-05-23 12:58:35768 days ago1653310715IN
0x8c192742...451cc05A1
0 ETH0.0010331623.60718884
Set Multiple Use...148297132022-05-23 12:57:36768 days ago1653310656IN
0x8c192742...451cc05A1
0 ETH0.0014451521.83973779
Set Role With Mu...148297112022-05-23 12:57:20768 days ago1653310640IN
0x8c192742...451cc05A1
0 ETH0.0008840623.12059822
Set Multiple Use...148296992022-05-23 12:55:10768 days ago1653310510IN
0x8c192742...451cc05A1
0 ETH0.0015117124.81198376
Set Role With Mu...148296972022-05-23 12:54:45768 days ago1653310485IN
0x8c192742...451cc05A1
0 ETH0.0008453225.84382481
Set Multiple Use...148296962022-05-23 12:54:16768 days ago1653310456IN
0x8c192742...451cc05A1
0 ETH0.0018245923.38770888
Set Role With Mu...148296952022-05-23 12:54:04768 days ago1653310444IN
0x8c192742...451cc05A1
0 ETH0.0012393722.61256044
Set Multiple Use...147871322022-05-16 15:50:15774 days ago1652716215IN
0x8c192742...451cc05A1
0 ETH0.0018403527.81206725
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
QuantumAuthority

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 3 : QuantumAuthority.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
import "@rari-capital/solmate/src/auth/authorities/RolesAuthority.sol";

contract QuantumAuthority is RolesAuthority {

    constructor(address owner) RolesAuthority(owner, Authority(address(0))) {}

	/// @notice For multiples users, set the status of a role
    /// @dev the role has to belong to the Roles enum
    /// @param users users
    /// @param role role
    /// @param enabled to enable or not
    function setMultipleUsers(address[] calldata users, uint8 role, bool enabled) public requiresAuth {
        for(uint i = 0; i < users.length; i++) {
            setUserRole(users[i], role, enabled);
        }
    }

	/// @notice For one role, define an array of capabilities (functions it can call)
    /// @dev the role has to belong to the Roles enum
    /// @param target address of contract whose functions will be used
    /// @param role role
    /// @param functionSigs signatures of functions (4 bytes)
    /// @param enabled to enable or not
    function setRoleWithMultipleCapability(address target, uint8 role, bytes4[] calldata functionSigs, bool enabled) public requiresAuth {
        for(uint i = 0; i < functionSigs.length; i++) {
            setRoleCapability(role, target, functionSigs[i], enabled);
        }
    }
}

File 2 of 3 : RolesAuthority.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

import {Auth, Authority} from "../Auth.sol";

/// @notice Role based Authority that supports up to 256 roles.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/authorities/RolesAuthority.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-roles/blob/master/src/roles.sol)
contract RolesAuthority is Auth, Authority {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event UserRoleUpdated(address indexed user, uint8 indexed role, bool enabled);

    event PublicCapabilityUpdated(address indexed target, bytes4 indexed functionSig, bool enabled);

    event RoleCapabilityUpdated(uint8 indexed role, address indexed target, bytes4 indexed functionSig, bool enabled);

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner, Authority _authority) Auth(_owner, _authority) {}

    /*///////////////////////////////////////////////////////////////
                            ROLE/USER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(address => bytes32) public getUserRoles;

    mapping(address => mapping(bytes4 => bool)) public isCapabilityPublic;

    mapping(address => mapping(bytes4 => bytes32)) public getRolesWithCapability;

    function doesUserHaveRole(address user, uint8 role) public view virtual returns (bool) {
        return (uint256(getUserRoles[user]) >> role) & 1 != 0;
    }

    function doesRoleHaveCapability(
        uint8 role,
        address target,
        bytes4 functionSig
    ) public view virtual returns (bool) {
        return (uint256(getRolesWithCapability[target][functionSig]) >> role) & 1 != 0;
    }

    /*///////////////////////////////////////////////////////////////
                          AUTHORIZATION LOGIC
    //////////////////////////////////////////////////////////////*/

    function canCall(
        address user,
        address target,
        bytes4 functionSig
    ) public view virtual override returns (bool) {
        return
            isCapabilityPublic[target][functionSig] ||
            bytes32(0) != getUserRoles[user] & getRolesWithCapability[target][functionSig];
    }

    /*///////////////////////////////////////////////////////////////
                  ROLE CAPABILITY CONFIGURATION LOGIC
    //////////////////////////////////////////////////////////////*/

    function setPublicCapability(
        address target,
        bytes4 functionSig,
        bool enabled
    ) public virtual requiresAuth {
        isCapabilityPublic[target][functionSig] = enabled;

        emit PublicCapabilityUpdated(target, functionSig, enabled);
    }

    function setRoleCapability(
        uint8 role,
        address target,
        bytes4 functionSig,
        bool enabled
    ) public virtual requiresAuth {
        if (enabled) {
            getRolesWithCapability[target][functionSig] |= bytes32(1 << role);
        } else {
            getRolesWithCapability[target][functionSig] &= ~bytes32(1 << role);
        }

        emit RoleCapabilityUpdated(role, target, functionSig, enabled);
    }

    /*///////////////////////////////////////////////////////////////
                      USER ROLE ASSIGNMENT LOGIC
    //////////////////////////////////////////////////////////////*/

    function setUserRole(
        address user,
        uint8 role,
        bool enabled
    ) public virtual requiresAuth {
        if (enabled) {
            getUserRoles[user] |= bytes32(1 << role);
        } else {
            getUserRoles[user] &= ~bytes32(1 << role);
        }

        emit UserRoleUpdated(user, role, enabled);
    }
}

File 3 of 3 : Auth.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
abstract contract Auth {
    event OwnerUpdated(address indexed user, address indexed newOwner);

    event AuthorityUpdated(address indexed user, Authority indexed newAuthority);

    address public owner;

    Authority public authority;

    constructor(address _owner, Authority _authority) {
        owner = _owner;
        authority = _authority;

        emit OwnerUpdated(msg.sender, _owner);
        emit AuthorityUpdated(msg.sender, _authority);
    }

    modifier requiresAuth() {
        require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");

        _;
    }

    function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
        Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.

        // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
        // aware that this makes protected functions uncallable even to the owner if the authority is out of order.
        return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
    }

    function setAuthority(Authority newAuthority) public virtual {
        // We check if the caller is the owner first because we want to ensure they can
        // always swap out the authority even if it's reverting or using up a lot of gas.
        require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));

        authority = newAuthority;

        emit AuthorityUpdated(msg.sender, newAuthority);
    }

    function setOwner(address newOwner) public virtual requiresAuth {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
interface Authority {
    function canCall(
        address user,
        address target,
        bytes4 functionSig
    ) external view returns (bool);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PublicCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RoleCapabilityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint8","name":"role","type":"uint8"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"UserRoleUpdated","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"canCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"}],"name":"doesRoleHaveCapability","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"}],"name":"doesUserHaveRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"getRolesWithCapability","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUserRoles","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"isCapabilityPublic","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setMultipleUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPublicCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"functionSig","type":"bytes4"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRoleCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bytes4[]","name":"functionSigs","type":"bytes4[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setRoleWithMultipleCapability","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405161133538038061133583398101604081905261002f916100c9565b600080546001600160a01b0383166001600160a01b03199182168117835560018054909216909155604051839291839183919033907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908490a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350505050506100f9565b6000602082840312156100db57600080fd5b81516001600160a01b03811681146100f257600080fd5b9392505050565b61122d806101086000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638693dfdb11610097578063bf7e214f11610066578063bf7e214f146102c1578063c6b0263e146102e1578063ea7ca276146102f4578063f31b2ff61461033857600080fd5b80638693dfdb146101e45780638da5cb5b146101f7578063b4bad06a1461023c578063b7009613146102ae57600080fd5b806367aff484116100d357806367aff484146101805780637917b794146101935780637a9e5e4b146101be5780637d40583d146101d157600080fd5b806306a36aee146100fa57806313af40351461012d5780632f47571f14610142575b600080fd5b61011a610108366004610e00565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b61014061013b366004610e00565b61034b565b005b610170610150366004610e59565b600360209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610124565b61014061018e366004610ead565b610454565b61011a6101a1366004610e59565b600460209081526000928352604080842090915290825290205481565b6101406101cc366004610e00565b6105b2565b6101406101df366004610ef6565b61070f565b6101406101f2366004610f9a565b6108e8565b6000546102179073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61017061024a366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526004602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522054600160ff929092161c16151590565b6101706102bc36600461103b565b6109d1565b6001546102179073ffffffffffffffffffffffffffffffffffffffff1681565b6101406102ef36600461105b565b610a9a565b610170610302366004611089565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260026020526040902054600160ff9092161c16151590565b6101406103463660046110b5565b610be0565b610379336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6103e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b610482336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6104e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b80156105245773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090208054600160ff85161b179055610557565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090208054600160ff85161b191690555b8160ff168373ffffffffffffffffffffffffffffffffffffffff167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf2836040516105a5911515815260200190565b60405180910390a3505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061069557506001546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190611130565b61069e57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b61073d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b801561080c5773ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290208054600160ff87161b17905561086c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516108da911515815260200190565b60405180910390a450505050565b610916336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b61097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b60005b838110156109ca576109b885858381811061099c5761099c61114d565b90506020020160208101906109b19190610e00565b8484610454565b806109c28161117c565b91505061097f565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205460ff1680610a92575073ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832054938816835260029091529020541615155b949350505050565b610ac8336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b610b2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e91016105a5565b610c0e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b610c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b60005b82811015610cc357610cb18587868685818110610c9657610c9661114d565b9050602002016020810190610cab91906111dc565b8561070f565b80610cbb8161117c565b915050610c77565b505050505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff168015801590610daf57506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190611130565b80610a92575060005473ffffffffffffffffffffffffffffffffffffffff858116911614949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610dfd57600080fd5b50565b600060208284031215610e1257600080fd5b8135610e1d81610ddb565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5457600080fd5b919050565b60008060408385031215610e6c57600080fd5b8235610e7781610ddb565b9150610e8560208401610e24565b90509250929050565b803560ff81168114610e5457600080fd5b8015158114610dfd57600080fd5b600080600060608486031215610ec257600080fd5b8335610ecd81610ddb565b9250610edb60208501610e8e565b91506040840135610eeb81610e9f565b809150509250925092565b60008060008060808587031215610f0c57600080fd5b610f1585610e8e565b93506020850135610f2581610ddb565b9250610f3360408601610e24565b91506060850135610f4381610e9f565b939692955090935050565b60008083601f840112610f6057600080fd5b50813567ffffffffffffffff811115610f7857600080fd5b6020830191508360208260051b8501011115610f9357600080fd5b9250929050565b60008060008060608587031215610fb057600080fd5b843567ffffffffffffffff811115610fc757600080fd5b610fd387828801610f4e565b9095509350610fe6905060208601610e8e565b91506040850135610f4381610e9f565b60008060006060848603121561100b57600080fd5b61101484610e8e565b9250602084013561102481610ddb565b915061103260408501610e24565b90509250925092565b60008060006060848603121561105057600080fd5b833561101481610ddb565b60008060006060848603121561107057600080fd5b833561107b81610ddb565b9250610edb60208501610e24565b6000806040838503121561109c57600080fd5b82356110a781610ddb565b9150610e8560208401610e8e565b6000806000806000608086880312156110cd57600080fd5b85356110d881610ddb565b94506110e660208701610e8e565b9350604086013567ffffffffffffffff81111561110257600080fd5b61110e88828901610f4e565b909450925050606086013561112281610e9f565b809150509295509295909350565b60006020828403121561114257600080fd5b8151610e1d81610e9f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000602082840312156111ee57600080fd5b610e1d82610e2456fea2646970667358221220306a3f3fcf4605f6e17c4d980a0804ff5dd1c068553eb75fac2d74c1715786fb64736f6c634300080b00330000000000000000000000009fef8de6fb60f43079565ece74f235aed225face

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638693dfdb11610097578063bf7e214f11610066578063bf7e214f146102c1578063c6b0263e146102e1578063ea7ca276146102f4578063f31b2ff61461033857600080fd5b80638693dfdb146101e45780638da5cb5b146101f7578063b4bad06a1461023c578063b7009613146102ae57600080fd5b806367aff484116100d357806367aff484146101805780637917b794146101935780637a9e5e4b146101be5780637d40583d146101d157600080fd5b806306a36aee146100fa57806313af40351461012d5780632f47571f14610142575b600080fd5b61011a610108366004610e00565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b61014061013b366004610e00565b61034b565b005b610170610150366004610e59565b600360209081526000928352604080842090915290825290205460ff1681565b6040519015158152602001610124565b61014061018e366004610ead565b610454565b61011a6101a1366004610e59565b600460209081526000928352604080842090915290825290205481565b6101406101cc366004610e00565b6105b2565b6101406101df366004610ef6565b61070f565b6101406101f2366004610f9a565b6108e8565b6000546102179073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61017061024a366004610ff6565b73ffffffffffffffffffffffffffffffffffffffff9190911660009081526004602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522054600160ff929092161c16151590565b6101706102bc36600461103b565b6109d1565b6001546102179073ffffffffffffffffffffffffffffffffffffffff1681565b6101406102ef36600461105b565b610a9a565b610170610302366004611089565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260026020526040902054600160ff9092161c16151590565b6101406103463660046110b5565b610be0565b610379336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6103e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b610482336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6104e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b80156105245773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090208054600160ff85161b179055610557565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604090208054600160ff85161b191690555b8160ff168373ffffffffffffffffffffffffffffffffffffffff167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf2836040516105a5911515815260200190565b60405180910390a3505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061069557506001546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201526000357fffffffff0000000000000000000000000000000000000000000000000000000016604482015273ffffffffffffffffffffffffffffffffffffffff9091169063b700961390606401602060405180830381865afa158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190611130565b61069e57600080fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019890600090a350565b61073d336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b6107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b801561080c5773ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290208054600160ff87161b17905561086c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168373ffffffffffffffffffffffffffffffffffffffff168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516108da911515815260200190565b60405180910390a450505050565b610916336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b61097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b60005b838110156109ca576109b885858381811061099c5761099c61114d565b90506020020160208101906109b19190610e00565b8484610454565b806109c28161117c565b91505061097f565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205460ff1680610a92575073ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168452825280832054938816835260029091529020541615155b949350505050565b610ac8336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b610b2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b73ffffffffffffffffffffffffffffffffffffffff831660008181526003602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000087168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e91016105a5565b610c0e336000357fffffffff0000000000000000000000000000000000000000000000000000000016610ccb565b610c74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064016103db565b60005b82811015610cc357610cb18587868685818110610c9657610c9661114d565b9050602002016020810190610cab91906111dc565b8561070f565b80610cbb8161117c565b915050610c77565b505050505050565b60015460009073ffffffffffffffffffffffffffffffffffffffff168015801590610daf57506040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301527fffffffff000000000000000000000000000000000000000000000000000000008516604483015282169063b700961390606401602060405180830381865afa158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190611130565b80610a92575060005473ffffffffffffffffffffffffffffffffffffffff858116911614949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610dfd57600080fd5b50565b600060208284031215610e1257600080fd5b8135610e1d81610ddb565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e5457600080fd5b919050565b60008060408385031215610e6c57600080fd5b8235610e7781610ddb565b9150610e8560208401610e24565b90509250929050565b803560ff81168114610e5457600080fd5b8015158114610dfd57600080fd5b600080600060608486031215610ec257600080fd5b8335610ecd81610ddb565b9250610edb60208501610e8e565b91506040840135610eeb81610e9f565b809150509250925092565b60008060008060808587031215610f0c57600080fd5b610f1585610e8e565b93506020850135610f2581610ddb565b9250610f3360408601610e24565b91506060850135610f4381610e9f565b939692955090935050565b60008083601f840112610f6057600080fd5b50813567ffffffffffffffff811115610f7857600080fd5b6020830191508360208260051b8501011115610f9357600080fd5b9250929050565b60008060008060608587031215610fb057600080fd5b843567ffffffffffffffff811115610fc757600080fd5b610fd387828801610f4e565b9095509350610fe6905060208601610e8e565b91506040850135610f4381610e9f565b60008060006060848603121561100b57600080fd5b61101484610e8e565b9250602084013561102481610ddb565b915061103260408501610e24565b90509250925092565b60008060006060848603121561105057600080fd5b833561101481610ddb565b60008060006060848603121561107057600080fd5b833561107b81610ddb565b9250610edb60208501610e24565b6000806040838503121561109c57600080fd5b82356110a781610ddb565b9150610e8560208401610e8e565b6000806000806000608086880312156110cd57600080fd5b85356110d881610ddb565b94506110e660208701610e8e565b9350604086013567ffffffffffffffff81111561110257600080fd5b61110e88828901610f4e565b909450925050606086013561112281610e9f565b809150509295509295909350565b60006020828403121561114257600080fd5b8151610e1d81610e9f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111d5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000602082840312156111ee57600080fd5b610e1d82610e2456fea2646970667358221220306a3f3fcf4605f6e17c4d980a0804ff5dd1c068553eb75fac2d74c1715786fb64736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000009fef8de6fb60f43079565ece74f235aed225face

-----Decoded View---------------
Arg [0] : owner (address): 0x9fef8dE6FB60f43079565ECE74f235AED225face

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009fef8de6fb60f43079565ece74f235aed225face


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.