ETH Price: $2,142.00 (-2.01%)

Contract

0xbF9A71B01eD8B2CDa4880Bc54DC179Ee5C6Bf4D7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...226205702025-06-03 0:31:11289 days ago1748910671IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000039811.2931335
Set Role Capabil...226205692025-06-03 0:30:59289 days ago1748910659IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000067661.32146245
Set Role Capabil...226205682025-06-03 0:30:47289 days ago1748910647IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000070361.37430121
Set User Role226205672025-06-03 0:30:35289 days ago1748910635IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000041211.23579276
Set Role Capabil...226205662025-06-03 0:30:23289 days ago1748910623IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000060741.1863179
Set Role Capabil...226205642025-06-03 0:29:59289 days ago1748910599IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000067351.31556838
Set User Role226205632025-06-03 0:29:47289 days ago1748910587IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000043911.3165587
Set Role Capabil...226205622025-06-03 0:29:35289 days ago1748910575IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000069131.35174161
Set User Role226205612025-06-03 0:29:23289 days ago1748910563IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000069061.36845272
Set Role Capabil...226205602025-06-03 0:29:11289 days ago1748910551IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000070291.3744426
Set User Role226205592025-06-03 0:28:59289 days ago1748910539IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000070011.38777606
Set Role Capabil...226205582025-06-03 0:28:47289 days ago1748910527IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000069461.35825467
Set User Role226205572025-06-03 0:28:35289 days ago1748910515IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000044371.33052953
Set Role Capabil...226205562025-06-03 0:28:23289 days ago1748910503IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000068711.34368219
Set User Role226205552025-06-03 0:28:11289 days ago1748910491IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000070861.40460861
Set Role Capabil...226205542025-06-03 0:27:59289 days ago1748910479IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.0000731.42744022
Set User Role226205532025-06-03 0:27:47289 days ago1748910467IN
0xbF9A71B0...e5C6Bf4D7
0 ETH0.000066931.32642377

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60803460226205412025-06-03 0:25:23289 days ago1748910323  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xA83C037D...1FF1B2f40
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
RolesAuthority

Compiler Version
v0.8.29+commit.ab55807c

Optimization Enabled:
Yes with 100000 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// 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/transmissions11/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);
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity 0.8.29;

/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/transmissions11/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 OwnershipTransferred(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 OwnershipTransferred(msg.sender, _owner);
        emit AuthorityUpdated(msg.sender, _authority);
    }

    modifier requiresAuth() virtual {
        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 transferOwnership(address newOwner) public virtual requiresAuth {
        owner = newOwner;

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

/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/transmissions11/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
{
  "remappings": [
    "@oz/=lib/openzeppelin-contracts/contracts/",
    "@solmate/=src/dependencies/solmate/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 100000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "none",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_authority","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":"OwnershipTransferred","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":"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":"user","type":"address"},{"internalType":"uint8","name":"role","type":"uint8"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setUserRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

0x60803460dd57601f610e7a38819003918201601f19168301916001600160401b0383118484101760e157808492604094855283398101031260dd5780516001600160a01b038116919082900360dd57602001516001600160a01b0381169081900360dd575f80546001600160a01b0319908116841782556001805490911683179055604051929033907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3337fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b763899801985f80a3610d8490816100f68239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f35908160e01c90816306a36aee14610a51575080632f47571f146109b457806367aff484146108b65780637917b7941461081e5780637a9e5e4b146106805780637d40583d1461055a5780638da5cb5b1461050a578063b4bad06a14610462578063b70096131461036b578063bf7e214f1461031a578063c6b0263e146101f7578063ea7ca276146101825763f2fde38b146100ad575f80fd5b3461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5773ffffffffffffffffffffffffffffffffffffffff9061012e6101297fffffffff00000000000000000000000000000000000000000000000000000000610121610ab0565b931633610c6e565b610b83565b16807fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b5f80fd5b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602060016101bd610ab0565b73ffffffffffffffffffffffffffffffffffffffff6101da610b54565b91165f526002835260ff60405f205491161c161515604051908152f35b503461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5761022f610ab0565b907f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e602073ffffffffffffffffffffffffffffffffffffffff610270610af6565b946102a86101297fffffffff000000000000000000000000000000000000000000000000000000006102a0610b74565b971633610c6e565b1692835f52600382527fffffffff0000000000000000000000000000000000000000000000000000000060405f20951694855f52825260405f20901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b3461017e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5760206103a4610ab0565b6103ac610ad3565b73ffffffffffffffffffffffffffffffffffffffff6103c9610b25565b911690815f52600384527fffffffff0000000000000000000000000000000000000000000000000000000060405f20911690815f52845260ff60405f20541692831561041d575b5050506040519015158152f35b73ffffffffffffffffffffffffffffffffffffffff91929350165f526002835260405f2054915f526004835260405f20905f52825260405f2054161515828080610410565b3461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576020600161049d610b64565b6104a5610ad3565b73ffffffffffffffffffffffffffffffffffffffff6104c2610b25565b91165f52600484527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52835260ff60405f205491161c161515604051908152f35b3461017e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b503461017e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57610592610b64565b61059a610ad3565b916105a3610b25565b90606435908115159283830361017e5773ffffffffffffffffffffffffffffffffffffffff7fffffffff0000000000000000000000000000000000000000000000000000000060ff927fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e9561061f610129846020981633610c6e565b15610657578289165f526004855260405f208282165f52855260405f206001858a161b81541790555b604051968752169616941692a4005b8289165f526004855260405f208282165f52855260405f206001858a161b198154169055610648565b503461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576004359073ffffffffffffffffffffffffffffffffffffffff821680920361017e5773ffffffffffffffffffffffffffffffffffffffff5f5416331490811561074b575b501561017e57807fffffffffffffffffffffffff00000000000000000000000000000000000000006001541617600155337fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b763899801985f80a3005b6001546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201527fffffffff000000000000000000000000000000000000000000000000000000009290921660448301529091506020908290606490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610813575f916107e4575b505f6106f4565b610806915060203d60201161080c575b6107fe8183610be8565b810190610c56565b5f6107dd565b503d6107f4565b6040513d5f823e3d90fd5b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57610855610ab0565b73ffffffffffffffffffffffffffffffffffffffff610872610af6565b91165f5260046020527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52602052602060405f2054604051908152f35b503461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576108ee610ab0565b907f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf2602073ffffffffffffffffffffffffffffffffffffffff60ff610931610b54565b6109686101297fffffffff00000000000000000000000000000000000000000000000000000000610960610b74565b981633610c6e565b8515610996578287165f526002845260405f2060018383161b81541790555b604051951515865216941692a3005b8287165f526002845260405f2060018383161b198154169055610987565b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576109eb610ab0565b73ffffffffffffffffffffffffffffffffffffffff610a08610af6565b91165f5260036020527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52602052602060ff60405f2054166040519015158152f35b3461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5760209073ffffffffffffffffffffffffffffffffffffffff610aa0610ab0565b165f526002825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361017e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361017e57565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361017e57565b604435907fffffffff000000000000000000000000000000000000000000000000000000008216820361017e57565b6024359060ff8216820361017e57565b6004359060ff8216820361017e57565b60443590811515820361017e57565b15610b8a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c2957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9081602091031261017e5751801515810361017e5790565b73ffffffffffffffffffffffffffffffffffffffff60015416918215159283610cbf575b50508115610c9e575090565b905073ffffffffffffffffffffffffffffffffffffffff805f541691161490565b6040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523060248201527fffffffff0000000000000000000000000000000000000000000000000000000092909216604483015291925090602090829060649082905afa908115610813575f91610d58575b50905f80610c92565b610d71915060203d60201161080c576107fe8183610be8565b5f610d4f56fea164736f6c634300081d000a000000000000000000000000d441a7d58e33976c4ff34736576ab3d0971d2c170000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080806040526004361015610012575f80fd5b5f35908160e01c90816306a36aee14610a51575080632f47571f146109b457806367aff484146108b65780637917b7941461081e5780637a9e5e4b146106805780637d40583d1461055a5780638da5cb5b1461050a578063b4bad06a14610462578063b70096131461036b578063bf7e214f1461031a578063c6b0263e146101f7578063ea7ca276146101825763f2fde38b146100ad575f80fd5b3461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5773ffffffffffffffffffffffffffffffffffffffff9061012e6101297fffffffff00000000000000000000000000000000000000000000000000000000610121610ab0565b931633610c6e565b610b83565b16807fffffffffffffffffffffffff00000000000000000000000000000000000000005f5416175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b5f80fd5b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602060016101bd610ab0565b73ffffffffffffffffffffffffffffffffffffffff6101da610b54565b91165f526002835260ff60405f205491161c161515604051908152f35b503461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5761022f610ab0565b907f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e602073ffffffffffffffffffffffffffffffffffffffff610270610af6565b946102a86101297fffffffff000000000000000000000000000000000000000000000000000000006102a0610b74565b971633610c6e565b1692835f52600382527fffffffff0000000000000000000000000000000000000000000000000000000060405f20951694855f52825260405f20901515907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b3461017e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b3461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5760206103a4610ab0565b6103ac610ad3565b73ffffffffffffffffffffffffffffffffffffffff6103c9610b25565b911690815f52600384527fffffffff0000000000000000000000000000000000000000000000000000000060405f20911690815f52845260ff60405f20541692831561041d575b5050506040519015158152f35b73ffffffffffffffffffffffffffffffffffffffff91929350165f526002835260405f2054915f526004835260405f20905f52825260405f2054161515828080610410565b3461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576020600161049d610b64565b6104a5610ad3565b73ffffffffffffffffffffffffffffffffffffffff6104c2610b25565b91165f52600484527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52835260ff60405f205491161c161515604051908152f35b3461017e575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b503461017e5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57610592610b64565b61059a610ad3565b916105a3610b25565b90606435908115159283830361017e5773ffffffffffffffffffffffffffffffffffffffff7fffffffff0000000000000000000000000000000000000000000000000000000060ff927fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e9561061f610129846020981633610c6e565b15610657578289165f526004855260405f208282165f52855260405f206001858a161b81541790555b604051968752169616941692a4005b8289165f526004855260405f208282165f52855260405f206001858a161b198154169055610648565b503461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576004359073ffffffffffffffffffffffffffffffffffffffff821680920361017e5773ffffffffffffffffffffffffffffffffffffffff5f5416331490811561074b575b501561017e57807fffffffffffffffffffffffff00000000000000000000000000000000000000006001541617600155337fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b763899801985f80a3005b6001546040517fb70096130000000000000000000000000000000000000000000000000000000081523360048201523060248201527fffffffff000000000000000000000000000000000000000000000000000000009290921660448301529091506020908290606490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610813575f916107e4575b505f6106f4565b610806915060203d60201161080c575b6107fe8183610be8565b810190610c56565b5f6107dd565b503d6107f4565b6040513d5f823e3d90fd5b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e57610855610ab0565b73ffffffffffffffffffffffffffffffffffffffff610872610af6565b91165f5260046020527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52602052602060405f2054604051908152f35b503461017e5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576108ee610ab0565b907f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf2602073ffffffffffffffffffffffffffffffffffffffff60ff610931610b54565b6109686101297fffffffff00000000000000000000000000000000000000000000000000000000610960610b74565b981633610c6e565b8515610996578287165f526002845260405f2060018383161b81541790555b604051951515865216941692a3005b8287165f526002845260405f2060018383161b198154169055610987565b3461017e5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e576109eb610ab0565b73ffffffffffffffffffffffffffffffffffffffff610a08610af6565b91165f5260036020527fffffffff0000000000000000000000000000000000000000000000000000000060405f2091165f52602052602060ff60405f2054166040519015158152f35b3461017e5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017e5760209073ffffffffffffffffffffffffffffffffffffffff610aa0610ab0565b165f526002825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361017e57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361017e57565b602435907fffffffff000000000000000000000000000000000000000000000000000000008216820361017e57565b604435907fffffffff000000000000000000000000000000000000000000000000000000008216820361017e57565b6024359060ff8216820361017e57565b6004359060ff8216820361017e57565b60443590811515820361017e57565b15610b8a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c2957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b9081602091031261017e5751801515810361017e5790565b73ffffffffffffffffffffffffffffffffffffffff60015416918215159283610cbf575b50508115610c9e575090565b905073ffffffffffffffffffffffffffffffffffffffff805f541691161490565b6040517fb700961300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523060248201527fffffffff0000000000000000000000000000000000000000000000000000000092909216604483015291925090602090829060649082905afa908115610813575f91610d58575b50905f80610c92565b610d71915060203d60201161080c576107fe8183610be8565b5f610d4f56fea164736f6c634300081d000a

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