S Price: $0.068625 (-1.99%)
Gas: 55 Gwei

Contract

0xFa5b3E35F961229b25Caa108C3D42cEEb20d0122

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer Ownersh...24547782025-01-04 9:35:20387 days ago1735983320IN
0xFa5b3E35...Eb20d0122
0 S0.000035881.11
Set User Role24538432025-01-04 9:18:58387 days ago1735982338IN
0xFa5b3E35...Eb20d0122
0 S0.000036961
Set User Role24538412025-01-04 9:18:56387 days ago1735982336IN
0xFa5b3E35...Eb20d0122
0 S0.000036961
Set User Role24520722025-01-04 8:57:38387 days ago1735981058IN
0xFa5b3E35...Eb20d0122
0 S0.000036961
Set User Role24520702025-01-04 8:57:37387 days ago1735981057IN
0xFa5b3E35...Eb20d0122
0 S0.000036961
Set User Role24520642025-01-04 8:57:35387 days ago1735981055IN
0xFa5b3E35...Eb20d0122
0 S0.000036981
Set User Role24520622025-01-04 8:57:33387 days ago1735981053IN
0xFa5b3E35...Eb20d0122
0 S0.000036981
Set User Role24519942025-01-04 8:56:46387 days ago1735981006IN
0xFa5b3E35...Eb20d0122
0 S0.000039881.07857142
Set User Role24519912025-01-04 8:56:45387 days ago1735981005IN
0xFa5b3E35...Eb20d0122
0 S0.000036981
Set Public Capab...23866512025-01-03 18:24:24387 days ago1735928664IN
0xFa5b3E35...Eb20d0122
0 S0.00005591
Set Public Capab...23866472025-01-03 18:24:22387 days ago1735928662IN
0xFa5b3E35...Eb20d0122
0 S0.00005591
Set Role Capabil...23866412025-01-03 18:24:18387 days ago1735928658IN
0xFa5b3E35...Eb20d0122
0 S0.000065641.1575
Set Role Capabil...23866382025-01-03 18:24:17387 days ago1735928657IN
0xFa5b3E35...Eb20d0122
0 S0.000075581.33285714
Set User Role23866342025-01-03 18:24:14387 days ago1735928654IN
0xFa5b3E35...Eb20d0122
0 S0.000048611.31533333
Set User Role23866292025-01-03 18:24:13387 days ago1735928653IN
0xFa5b3E35...Eb20d0122
0 S0.000045361.22733333
Set User Role23866242025-01-03 18:24:11387 days ago1735928651IN
0xFa5b3E35...Eb20d0122
0 S0.000031891
Set User Role23866202025-01-03 18:24:10387 days ago1735928650IN
0xFa5b3E35...Eb20d0122
0 S0.000036691
Set User Role23866192025-01-03 18:24:09387 days ago1735928649IN
0xFa5b3E35...Eb20d0122
0 S0.000036691
Set User Role23866162025-01-03 18:24:07387 days ago1735928647IN
0xFa5b3E35...Eb20d0122
0 S0.000036691
Set User Role23866122025-01-03 18:24:06387 days ago1735928646IN
0xFa5b3E35...Eb20d0122
0 S0.000063971.14666666
Set User Role23866082025-01-03 18:24:04387 days ago1735928644IN
0xFa5b3E35...Eb20d0122
0 S0.000045111.22
Set User Role23866042025-01-03 18:24:02387 days ago1735928642IN
0xFa5b3E35...Eb20d0122
0 S0.000045111.22
Set User Role23865992025-01-03 18:24:01387 days ago1735928641IN
0xFa5b3E35...Eb20d0122
0 S0.000036981
Set User Role23865962025-01-03 18:23:59387 days ago1735928639IN
0xFa5b3E35...Eb20d0122
0 S0.000036981
Set User Role23865922025-01-03 18:23:58387 days ago1735928638IN
0xFa5b3E35...Eb20d0122
0 S0.000055791
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
5978042024-12-18 17:56:17403 days ago1734544577  Contract Creation0 S
Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xc62d74F8...d2B888c7a
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.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai 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.0;

/// @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": [
    "@solmate/=lib/solmate/src/",
    "@forge-std/=lib/forge-std/src/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@ccip/=lib/ccip/",
    "@oapp-auth/=lib/OAppAuth/src/",
    "@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/",
    "@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/",
    "LayerZero-V2/=lib/OAppAuth/lib/",
    "OAppAuth/=lib/OAppAuth/",
    "ccip/=lib/ccip/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "shanghai",
  "viaIR": false,
  "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"}]

0x608060405234801561000f575f80fd5b50604051610b58380380610b5883398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f80fd5b50565b5f80604083850312156100ee575f80fd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a36806101225f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea26469706673582212205ede0b8ca20ed9c4caee3e57e94a4a30a2276e76333919d46aab818d9b6d095464736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea26469706673582212205ede0b8ca20ed9c4caee3e57e94a4a30a2276e76333919d46aab818d9b6d095464736f6c63430008150033

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
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.