ETH Price: $2,071.75 (-2.71%)

Contract

0x71aBe7B49C12e511dfA3cfDed7e9e8Bc44d1f105
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...231789892025-08-20 1:25:11197 days ago1755653111IN
0x71aBe7B4...c44d1f105
0 ETH0.000005420.17646324
Set User Role231789792025-08-20 1:23:11197 days ago1755652991IN
0x71aBe7B4...c44d1f105
0 ETH0.00000780.15384891
Set User Role231789782025-08-20 1:22:59197 days ago1755652979IN
0x71aBe7B4...c44d1f105
0 ETH0.000005490.16387128
Set User Role231789772025-08-20 1:22:47197 days ago1755652967IN
0x71aBe7B4...c44d1f105
0 ETH0.000008040.15867218
Set User Role231789742025-08-20 1:22:11197 days ago1755652931IN
0x71aBe7B4...c44d1f105
0 ETH0.000008990.17729972
Set User Role231789732025-08-20 1:21:59197 days ago1755652919IN
0x71aBe7B4...c44d1f105
0 ETH0.000007990.15776324
Set User Role231789692025-08-20 1:21:11197 days ago1755652871IN
0x71aBe7B4...c44d1f105
0 ETH0.0000090.17750753
Set User Role231789682025-08-20 1:20:59197 days ago1755652859IN
0x71aBe7B4...c44d1f105
0 ETH0.000008550.16859108
Set User Role231789662025-08-20 1:20:35197 days ago1755652835IN
0x71aBe7B4...c44d1f105
0 ETH0.000008850.17471412
Set Public Capab...231789652025-08-20 1:20:23197 days ago1755652823IN
0x71aBe7B4...c44d1f105
0 ETH0.000008320.16374558
Set Public Capab...231789622025-08-20 1:19:47197 days ago1755652787IN
0x71aBe7B4...c44d1f105
0 ETH0.000008460.16652257
Set Public Capab...231789612025-08-20 1:19:35197 days ago1755652775IN
0x71aBe7B4...c44d1f105
0 ETH0.000008520.16777021
Set Role Capabil...231789602025-08-20 1:19:23197 days ago1755652763IN
0x71aBe7B4...c44d1f105
0 ETH0.00000890.172742
Set Role Capabil...231789592025-08-20 1:19:11197 days ago1755652751IN
0x71aBe7B4...c44d1f105
0 ETH0.000008810.17104685
Set Role Capabil...231789582025-08-20 1:18:59197 days ago1755652739IN
0x71aBe7B4...c44d1f105
0 ETH0.000008840.17161356
Set Role Capabil...231789572025-08-20 1:18:47197 days ago1755652727IN
0x71aBe7B4...c44d1f105
0 ETH0.000007860.15258284
Set Role Capabil...231789562025-08-20 1:18:35197 days ago1755652715IN
0x71aBe7B4...c44d1f105
0 ETH0.000008230.15973485
Set Role Capabil...231789552025-08-20 1:18:23197 days ago1755652703IN
0x71aBe7B4...c44d1f105
0 ETH0.000008540.16581139
Set Role Capabil...231789542025-08-20 1:18:11197 days ago1755652691IN
0x71aBe7B4...c44d1f105
0 ETH0.000008350.1621219
Set Role Capabil...231789532025-08-20 1:17:59197 days ago1755652679IN
0x71aBe7B4...c44d1f105
0 ETH0.00000850.16506273
Set Role Capabil...231789522025-08-20 1:17:47197 days ago1755652667IN
0x71aBe7B4...c44d1f105
0 ETH0.000008150.15810953
Set Role Capabil...231789512025-08-20 1:17:35197 days ago1755652655IN
0x71aBe7B4...c44d1f105
0 ETH0.000008540.16578439

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60806040231789502025-08-20 1:17:23197 days ago1755652643  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 0x139143d2...703645027
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, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-08-19
*/

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

// lib/solmate/src/auth/Auth.sol

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

// lib/solmate/src/auth/authorities/RolesAuthority.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);
    }
}

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

0x608060405234801561000f575f80fd5b50604051610b58380380610b5883398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f80fd5b50565b5f80604083850312156100ee575f80fd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a36806101225f395ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea2646970667358221220dd8045bd0aeb61ffcff12481e379ffa8c25b99fef4eea897d19220276f0eca6664736f6c6343000815003300000000000000000000000004354e44ed31022716e77ec6320c04eda153010c0000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461022c578063c6b0263e1461023f578063ea7ca27614610252578063f2fde38b14610288575f80fd5b80638da5cb5b146101a3578063b4bad06a146101cd578063b700961314610219575f80fd5b806306a36aee146100cf5780632f47571f1461010157806367aff4841461013e5780637917b794146101535780637a9e5e4b1461017d5780637d40583d14610190575b5f80fd5b6100ee6100dd3660046107b5565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61012e61010f3660046107f3565b600360209081525f928352604080842090915290825290205460ff1681565b60405190151581526020016100f8565b61015161014c366004610843565b61029b565b005b6100ee6101613660046107f3565b600460209081525f928352604080842090915290825290205481565b61015161018b3660046107b5565b610376565b61015161019e366004610889565b61045a565b5f546101b5906001600160a01b031681565b6040516001600160a01b0390911681526020016100f8565b61012e6101db3660046108de565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61012e610227366004610920565b610562565b6001546101b5906001600160a01b031681565b61015161024d36600461093d565b6105df565b61012e610260366004610968565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101516102963660046107b5565b61067e565b6102b0335f356001600160e01b0319166106f9565b6102d55760405162461bcd60e51b81526004016102cc90610992565b60405180910390fd5b8015610303576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610328565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610369911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610407575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906103c890339030906001600160e01b03195f3516906004016109b8565b602060405180830381865afa1580156103e3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040791906109e5565b61040f575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b61046f335f356001600160e01b0319166106f9565b61048b5760405162461bcd60e51b81526004016102cc90610992565b80156104ce576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610508565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b816001600160e01b031916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e84604051610554911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff16806105d757506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b6105f4335f356001600160e01b0319166106f9565b6106105760405162461bcd60e51b81526004016102cc90610992565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610369565b610693335f356001600160e01b0319166106f9565b6106af5760405162461bcd60e51b81526004016102cc90610992565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610780575060405163b700961360e01b81526001600160a01b0382169063b700961390610741908790309088906004016109b8565b602060405180830381865afa15801561075c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061078091906109e5565b806105d757505f546001600160a01b03858116911614949350505050565b6001600160a01b03811681146107b2575f80fd5b50565b5f602082840312156107c5575f80fd5b81356107d08161079e565b9392505050565b80356001600160e01b0319811681146107ee575f80fd5b919050565b5f8060408385031215610804575f80fd5b823561080f8161079e565b915061081d602084016107d7565b90509250929050565b803560ff811681146107ee575f80fd5b80151581146107b2575f80fd5b5f805f60608486031215610855575f80fd5b83356108608161079e565b925061086e60208501610826565b9150604084013561087e81610836565b809150509250925092565b5f805f806080858703121561089c575f80fd5b6108a585610826565b935060208501356108b58161079e565b92506108c3604086016107d7565b915060608501356108d381610836565b939692955090935050565b5f805f606084860312156108f0575f80fd5b6108f984610826565b925060208401356109098161079e565b9150610917604085016107d7565b90509250925092565b5f805f60608486031215610932575f80fd5b83356108f98161079e565b5f805f6060848603121561094f575f80fd5b833561095a8161079e565b925061086e602085016107d7565b5f8060408385031215610979575f80fd5b82356109848161079e565b915061081d60208401610826565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f602082840312156109f5575f80fd5b81516107d08161083656fea2646970667358221220dd8045bd0aeb61ffcff12481e379ffa8c25b99fef4eea897d19220276f0eca6664736f6c63430008150033

Deployed Bytecode Sourcemap

3017:3657:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:47;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;548:25:1;;;536:2;521:18;4022:47:0;;;;;;;;4078:69;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:14:1;;1244:22;1226:41;;1214:2;1199:18;4078:69:0;1086:187:1;6322:349:0;;;;;;:::i;:::-;;:::i;:::-;;4156:76;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1596:442;;;;;;:::i;:::-;;:::i;5664:457::-;;;;;;:::i;:::-;;:::i;609:20::-;;;;;-1:-1:-1;;;;;609:20:0;;;;;;-1:-1:-1;;;;;2982:32:1;;;2964:51;;2952:2;2937:18;609:20:0;2818:203:1;4408:246:0;;;;;;:::i;:::-;-1:-1:-1;;;;;4584:30:0;;;;4551:4;4584:30;;;:22;:30;;;;;;;;-1:-1:-1;;;;;;4584:43:0;;;;;;;;;;4640:1;4576:60;;;;;;4575:66;:71;;;4408:246;4852:318;;;;;;:::i;:::-;;:::i;638:26::-;;;;;-1:-1:-1;;;;;638:26:0;;;5376:280;;;;;;:::i;:::-;;:::i;4241:159::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4355:18:0;;;;4322:4;4355:18;;;:12;:18;;;;;;4386:1;4347:35;;;;;4346:41;:46;;;4241:159;2046:168;;;;;;:::i;:::-;;:::i;6322:349::-;962:33;975:10;987:7;;-1:-1:-1;;;;;;987:7:0;962:12;:33::i;:::-;954:58;;;;-1:-1:-1;;;954:58:0;;;;;;;:::i;:::-;;;;;;;;;6460:7:::1;6456:154;;;-1:-1:-1::0;;;;;6484:18:0;::::1;6506;6484::::0;;;:12:::1;:18;::::0;;;;:40;;6514:1:::1;:9;::::0;::::1;;6484:40;::::0;;6456:154:::1;;;-1:-1:-1::0;;;;;6557:18:0;::::1;6580;6557::::0;;;:12:::1;:18;::::0;;;;:41;;6588:1:::1;:9;::::0;::::1;;6579:19;6557:41;::::0;;6456:154:::1;6649:4;6627:36;;6643:4;-1:-1:-1::0;;;;;6627:36:0::1;;6655:7;6627:36;;;;1251:14:1::0;1244:22;1226:41;;1214:2;1199:18;;1086:187;6627:36:0::1;;;;;;;;6322:349:::0;;;:::o;1596:442::-;1870:5;;-1:-1:-1;;;;;1870:5:0;1856:10;:19;;:76;;-1:-1:-1;1879:9:0;;:53;;-1:-1:-1;;;1879:53:0;;-1:-1:-1;;;;;1879:9:0;;;;:17;;:53;;1897:10;;1917:4;;-1:-1:-1;;;;;;1879:9:0;1924:7;;;1879:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1848:85;;;;;;1946:9;:24;;-1:-1:-1;;;;;;1946:24:0;-1:-1:-1;;;;;1946:24:0;;;;;;;;1988:42;;2005:10;;1988:42;;-1:-1:-1;;1988:42:0;1596:442;:::o;5664:457::-;962:33;975:10;987:7;;-1:-1:-1;;;;;;987:7:0;962:12;:33::i;:::-;954:58;;;;-1:-1:-1;;;954:58:0;;;;;;;:::i;:::-;5839:7:::1;5835:204;;;-1:-1:-1::0;;;;;5863:30:0;::::1;5910:18;5863:30:::0;;;:22:::1;:30;::::0;;;;;;;-1:-1:-1;;;;;;5863:43:0;::::1;::::0;;;;;;;:65;;5918:1:::1;:9;::::0;::::1;;5863:65;::::0;;5835:204:::1;;;-1:-1:-1::0;;;;;5961:30:0;::::1;6009:18;5961:30:::0;;;:22:::1;:30;::::0;;;;;;;-1:-1:-1;;;;;;5961:43:0;::::1;::::0;;;;;;;:66;;6017:1:::1;:9;::::0;::::1;;6008:19;5961:66;::::0;;5835:204:::1;6092:11;-1:-1:-1::0;;;;;6056:57:0::1;;6084:6;-1:-1:-1::0;;;;;6056:57:0::1;6078:4;6056:57;;;6105:7;6056:57;;;;1251:14:1::0;1244:22;1226:41;;1214:2;1199:18;;1086:187;6056:57:0::1;;;;;;;;5664:457:::0;;;;:::o;4852:318::-;-1:-1:-1;;;;;5028:26:0;;4991:4;5028:26;;;:18;:26;;;;;;;;-1:-1:-1;;;;;;5028:39:0;;;;;;;;;;;;;:134;;-1:-1:-1;;;;;;5119:30:0;;;;;;;:22;:30;;;;;;;;-1:-1:-1;;;;;;5119:43:0;;;;;;;;;;5098:18;;;;;:12;:18;;;;;;:64;5084:78;;5028:134;5008:154;4852:318;-1:-1:-1;;;;4852:318:0:o;5376:280::-;962:33;975:10;987:7;;-1:-1:-1;;;;;;987:7:0;962:12;:33::i;:::-;954:58;;;;-1:-1:-1;;;954:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5528:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;;-1:-1:-1;;;;;;5528:39:0;::::1;::::0;;;;;;;;;;:49;;-1:-1:-1;;5528:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;5595:53;;1226:41:1;;;5528:39:0;;:26;5595:53:::1;::::0;1199:18:1;5595:53:0::1;1086:187:1::0;2046:168:0;962:33;975:10;987:7;;-1:-1:-1;;;;;;987:7:0;962:12;:33::i;:::-;954:58;;;;-1:-1:-1;;;954:58:0;;;;;;;:::i;:::-;2130:5:::1;:16:::0;;-1:-1:-1;;;;;;2130:16:0::1;-1:-1:-1::0;;;;;2130:16:0;::::1;::::0;;::::1;::::0;;2164:42:::1;::::0;2130:16;;2185:10:::1;::::0;2164:42:::1;::::0;2130:5;2164:42:::1;2046:168:::0;:::o;1042:546::-;1163:9;;1129:4;;-1:-1:-1;;;;;1163:9:0;1485:27;;;;;:77;;-1:-1:-1;1516:46:0;;-1:-1:-1;;;1516:46:0;;-1:-1:-1;;;;;1516:12:0;;;;;:46;;1529:4;;1543;;1550:11;;1516:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1484:96;;;-1:-1:-1;1575:5:0;;-1:-1:-1;;;;;1567:13:0;;;1575:5;;1567:13;1477:103;1042:546;-1:-1:-1;;;;1042:546:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;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:1:o;584:173::-;651:20;;-1:-1:-1;;;;;;700:32:1;;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:1;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:1;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:1;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:1;;-1:-1:-1;;2288:525:1: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:1;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:1;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:1;4876:2;4861:18;;4844:36;:::i;4891:336::-;5093:2;5075:21;;;5132:2;5112:18;;;5105:30;-1:-1:-1;;;5166:2:1;5151:18;;5144:42;5218:2;5203:18;;4891:336::o;5232:400::-;-1:-1:-1;;;;;5488:15:1;;;5470:34;;5540:15;;;;5535:2;5520:18;;5513:43;-1:-1:-1;;;;;;5592:33:1;;;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://dd8045bd0aeb61ffcff12481e379ffa8c25b99fef4eea897d19220276f0eca66

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.