ETH Price: $4,346.05 (-1.37%)

Contract

0x9778D78495cBbfce0B1F6194526a8c3D4b9C3AAF

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

ContractCreator

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Transfer Ownersh...101997582025-09-03 23:36:0936 days ago1756942569IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.0012
Set User Role101994532025-09-03 23:31:0436 days ago1756942264IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101994492025-09-03 23:31:0036 days ago1756942260IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101173392025-09-03 0:42:3037 days ago1756860150IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101173352025-09-03 0:42:2637 days ago1756860146IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167832025-09-03 0:33:1437 days ago1756859594IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set Role Capabil...101167792025-09-03 0:33:1037 days ago1756859590IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set Role Capabil...101167732025-09-03 0:33:0437 days ago1756859584IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set Role Capabil...101167692025-09-03 0:33:0037 days ago1756859580IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set Role Capabil...101167642025-09-03 0:32:5537 days ago1756859575IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167602025-09-03 0:32:5137 days ago1756859571IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167562025-09-03 0:32:4737 days ago1756859567IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167522025-09-03 0:32:4337 days ago1756859563IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167452025-09-03 0:32:3637 days ago1756859556IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set Role Capabil...101167412025-09-03 0:32:3237 days ago1756859552IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set User Role101167362025-09-03 0:32:2737 days ago1756859547IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167322025-09-03 0:32:2337 days ago1756859543IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167282025-09-03 0:32:1937 days ago1756859539IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167242025-09-03 0:32:1537 days ago1756859535IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167202025-09-03 0:32:1137 days ago1756859531IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167162025-09-03 0:32:0737 days ago1756859527IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167122025-09-03 0:32:0337 days ago1756859523IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167082025-09-03 0:31:5937 days ago1756859519IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
Set User Role101167042025-09-03 0:31:5537 days ago1756859515IN
0x9778D784...D4b9C3AAF
0 ETH0.000001380.00100026
Set User Role101167002025-09-03 0:31:5137 days ago1756859511IN
0x9778D784...D4b9C3AAF
0 ETH0.00000140.00100026
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
91505362025-08-22 20:09:0748 days ago1755893347  Contract Creation0 ETH

Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x11BF7551...04a743606
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, GNU AGPLv3 license

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
{
  "evmVersion": "shanghai",
  "metadata": {
    "appendCBOR": true,
    "bytecodeHash": "ipfs",
    "useLiteralContent": false
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "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/",
    "@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/"
  ],
  "viaIR": false
}

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"}]

0x608060405234801561000f575f80fd5b50604051610b58380380610b5883398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f80fd5b50565b5f80604083850312156100ee575f80fd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a36806101225f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea2646970667358221220a5d282a90b79f5aa939e48b2b8b418b685ec429cf4a704703696c53633056e9764736f6c634300081500330000000000000000000000005f2f11ad8656439d5c14d9b351f8b09cdac2a02d0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea2646970667358221220a5d282a90b79f5aa939e48b2b8b418b685ec429cf4a704703696c53633056e9764736f6c63430008150033

Deployed Bytecode Sourcemap

391:3558:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1375:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;548:25:2;;;536:2;521:18;1375:47:1;;;;;;;;1429:69;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:14:2;;1244:22;1226:41;;1214:2;1199:18;1429:69:1;1086:187:2;3610:337:1;;;;;;:::i;:::-;;:::i;:::-;;1505:76;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1523:434:0;;;;;;:::i;:::-;;:::i;2971:444:1:-;;;;;;:::i;:::-;;:::i;562:20:0:-;;;;;-1:-1:-1;;;;;562:20:0;;;;;;-1:-1:-1;;;;;2982:32:2;;;2964:51;;2952:2;2937:18;562:20:0;2818:203:2;1751:240:1;;;;;;:::i;:::-;-1:-1:-1;;;;;1922:30:1;;;;1890:4;1922:30;;;:22;:30;;;;;;;;-1:-1:-1;;;;;;1922:43:1;;;;;;;;;;1978:1;1914:60;;;;;;1913:66;:71;;;1751:240;2183:310;;;;;;:::i;:::-;;:::i;589:26:0:-;;;;;-1:-1:-1;;;;;589:26:0;;;2693:272:1;;;;;;:::i;:::-;;:::i;1588:157::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1701:18:1;;;;1669:4;1701:18;;;:12;:18;;;;;;1732:1;1693:35;;;;;1692:41;:46;;;1588:157;1963:164:0;;;;;;:::i;:::-;;:::i;3610:337:1:-;902:33:0;915:10;927:7;;-1:-1:-1;;;;;;927:7:0;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:0;;;;;;;:::i;:::-;;;;;;;;;3743:7:1::1;3739:150;;;-1:-1:-1::0;;;;;3766:18:1;::::1;3788;3766::::0;;;:12:::1;:18;::::0;;;;:40;;3796:1:::1;:9;::::0;::::1;;3766:40;::::0;;3739:150:::1;;;-1:-1:-1::0;;;;;3837:18:1;::::1;3860;3837::::0;;;:12:::1;:18;::::0;;;;:41;;3868:1:::1;:9;::::0;::::1;;3859:19;3837:41;::::0;;3739:150:::1;3926:4;3904:36;;3920:4;-1:-1:-1::0;;;;;3904:36:1::1;;3932:7;3904:36;;;;1251:14:2::0;1244:22;1226:41;;1214:2;1199:18;;1086:187;3904:36:1::1;;;;;;;;3610:337:::0;;;:::o;1523:434:0:-;1794:5;;-1:-1:-1;;;;;1794:5:0;1780:10;:19;;:76;;-1:-1:-1;1803:9:0;;:53;;-1:-1:-1;;;1803:53:0;;-1:-1:-1;;;;;1803:9:0;;;;:17;;:53;;1821:10;;1841:4;;-1:-1:-1;;;;;;1803:9:0;1848:7;;;1803:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1772:85;;;;;;1868:9;:24;;-1:-1:-1;;;;;;1868:24:0;-1:-1:-1;;;;;1868:24:0;;;;;;;;1908:42;;1925:10;;1908:42;;-1:-1:-1;;1908:42:0;1523:434;:::o;2971:444:1:-;902:33:0;915:10;927:7;;-1:-1:-1;;;;;;927:7:0;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:0;;;;;;;:::i;:::-;3140:7:1::1;3136:200;;;-1:-1:-1::0;;;;;3163:30:1;::::1;3210:18;3163:30:::0;;;:22:::1;:30;::::0;;;;;;;-1:-1:-1;;;;;;3163:43:1;::::1;::::0;;;;;;;:65;;3218:1:::1;:9;::::0;::::1;;3163:65;::::0;;3136:200:::1;;;-1:-1:-1::0;;;;;3259:30:1;::::1;3307:18;3259:30:::0;;;:22:::1;:30;::::0;;;;;;;-1:-1:-1;;;;;;3259:43:1;::::1;::::0;;;;;;;:66;;3315:1:::1;:9;::::0;::::1;;3306:19;3259:66;::::0;;3136:200:::1;3387:11;-1:-1:-1::0;;;;;3351:57:1::1;;3379:6;-1:-1:-1::0;;;;;3351:57:1::1;3373:4;3351:57;;;3400:7;3351:57;;;;1251:14:2::0;1244:22;1226:41;;1214:2;1199:18;;1086:187;3351:57:1::1;;;;;;;;2971:444:::0;;;;:::o;2183:310::-;-1:-1:-1;;;;;2353:26:1;;2318:4;2353:26;;;:18;:26;;;;;;;;-1:-1:-1;;;;;;2353:39:1;;;;;;;;;;;;;:133;;-1:-1:-1;;;;;;2443:30:1;;;;;;;:22;:30;;;;;;;;-1:-1:-1;;;;;;2443:43:1;;;;;;;;;;2422:18;;;;;:12;:18;;;;;;:64;2408:78;;2353:133;2334:152;2183:310;-1:-1:-1;;;;2183:310:1:o;2693:272::-;902:33:0;915:10;927:7;;-1:-1:-1;;;;;;927:7:0;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2840:26:1;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;;2840:39:1;::::1;::::0;;;;;;;;;;:49;;-1:-1:-1;;2840:49:1::1;::::0;::::1;;::::0;;::::1;::::0;;;2905:53;;1226:41:2;;;2840:39:1;;:26;2905:53:::1;::::0;1199:18:2;2905:53:1::1;1086:187:2::0;1963:164:0;902:33;915:10;927:7;;-1:-1:-1;;;;;;927:7:0;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:0;;;;;;;:::i;:::-;2046:5:::1;:16:::0;;-1:-1:-1;;;;;;2046:16:0::1;-1:-1:-1::0;;;;;2046:16:0;::::1;::::0;;::::1;::::0;;2078:42:::1;::::0;2046:16;;2099:10:::1;::::0;2078:42:::1;::::0;2046:5;2078:42:::1;1963:164:::0;:::o;977:540::-;1097:9;;1064:4;;-1:-1:-1;;;;;1097:9:0;1415:27;;;;;:77;;-1:-1:-1;1446:46:0;;-1:-1:-1;;;1446:46:0;;-1:-1:-1;;;;;1446:12:0;;;;;:46;;1459:4;;1473;;1480:11;;1446:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1414:96;;;-1:-1:-1;1505:5:0;;-1:-1:-1;;;;;1497:13:0;;;1505:5;;1497:13;1407:103;977:540;-1:-1:-1;;;;977:540:0:o;14:131:2:-;-1:-1:-1;;;;;89:31:2;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;:::-;386:5;150:247;-1:-1:-1;;;150:247:2:o;584:173::-;651:20;;-1:-1:-1;;;;;;700:32:2;;690:43;;680:71;;747:1;744;737:12;680:71;584:173;;;:::o;762:319::-;829:6;837;890:2;878:9;869:7;865:23;861:32;858:52;;;906:1;903;896:12;858:52;945:9;932:23;964:31;989:5;964:31;:::i;:::-;1014:5;-1:-1:-1;1038:37:2;1071:2;1056:18;;1038:37;:::i;:::-;1028:47;;762:319;;;;;:::o;1278:156::-;1344:20;;1404:4;1393:16;;1383:27;;1373:55;;1424:1;1421;1414:12;1439:118;1525:5;1518:13;1511:21;1504:5;1501:32;1491:60;;1547:1;1544;1537:12;1562:452;1634:6;1642;1650;1703:2;1691:9;1682:7;1678:23;1674:32;1671:52;;;1719:1;1716;1709:12;1671:52;1758:9;1745:23;1777:31;1802:5;1777:31;:::i;:::-;1827:5;-1:-1:-1;1851:36:2;1883:2;1868:18;;1851:36;:::i;:::-;1841:46;;1939:2;1928:9;1924:18;1911:32;1952:30;1974:7;1952:30;:::i;:::-;2001:7;1991:17;;;1562:452;;;;;:::o;2288:525::-;2368:6;2376;2384;2392;2445:3;2433:9;2424:7;2420:23;2416:33;2413:53;;;2462:1;2459;2452:12;2413:53;2485:27;2502:9;2485:27;:::i;:::-;2475:37;;2562:2;2551:9;2547:18;2534:32;2575:31;2600:5;2575:31;:::i;:::-;2625:5;-1:-1:-1;2649:37:2;2682:2;2667:18;;2649:37;:::i;:::-;2639:47;;2738:2;2727:9;2723:18;2710:32;2751:30;2773:7;2751:30;:::i;:::-;2288:525;;;;-1:-1:-1;2288:525:2;;-1:-1:-1;;2288:525:2:o;3026:389::-;3100:6;3108;3116;3169:2;3157:9;3148:7;3144:23;3140:32;3137:52;;;3185:1;3182;3175:12;3137:52;3208:27;3225:9;3208:27;:::i;:::-;3198:37;;3285:2;3274:9;3270:18;3257:32;3298:31;3323:5;3298:31;:::i;:::-;3348:5;-1:-1:-1;3372:37:2;3405:2;3390:18;;3372:37;:::i;:::-;3362:47;;3026:389;;;;;:::o;3420:460::-;3496:6;3504;3512;3565:2;3553:9;3544:7;3540:23;3536:32;3533:52;;;3581:1;3578;3571:12;3533:52;3620:9;3607:23;3639:31;3664:5;3639:31;:::i;4110:454::-;4183:6;4191;4199;4252:2;4240:9;4231:7;4227:23;4223:32;4220:52;;;4268:1;4265;4258:12;4220:52;4307:9;4294:23;4326:31;4351:5;4326:31;:::i;:::-;4376:5;-1:-1:-1;4400:37:2;4433:2;4418:18;;4400:37;:::i;4569:317::-;4635:6;4643;4696:2;4684:9;4675:7;4671:23;4667:32;4664:52;;;4712:1;4709;4702:12;4664:52;4751:9;4738:23;4770:31;4795:5;4770:31;:::i;:::-;4820:5;-1:-1:-1;4844:36:2;4876:2;4861:18;;4844:36;:::i;4891:336::-;5093:2;5075:21;;;5132:2;5112:18;;;5105:30;-1:-1:-1;;;5166:2:2;5151:18;;5144:42;5218:2;5203:18;;4891:336::o;5232:400::-;-1:-1:-1;;;;;5488:15:2;;;5470:34;;5540:15;;;;5535:2;5520:18;;5513:43;-1:-1:-1;;;;;;5592:33:2;;;5587:2;5572:18;;5565:61;5420:2;5405:18;;5232:400::o;5637:245::-;5704:6;5757:2;5745:9;5736:7;5732:23;5728:32;5725:52;;;5773:1;5770;5763:12;5725:52;5805:9;5799:16;5824:28;5846:5;5824:28;:::i

Swarm Source

ipfs://a5d282a90b79f5aa939e48b2b8b418b685ec429cf4a704703696c53633056e97

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