ETH Price: $3,433.87 (-3.96%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...294096512025-04-25 19:17:29200 days ago1745608649IN
0x9524e250...A0202d44D
0 ETH0.000000210.00137532
Set User Role294076792025-04-25 18:11:45200 days ago1745604705IN
0x9524e250...A0202d44D
0 ETH0.000002510.00176896
Set Role Capabil...294071862025-04-25 17:55:19200 days ago1745603719IN
0x9524e250...A0202d44D
0 ETH0.00000180.00232997
Set Role Capabil...294071862025-04-25 17:55:19200 days ago1745603719IN
0x9524e250...A0202d44D
0 ETH0.00000180.00232997
Set User Role294067422025-04-25 17:40:31200 days ago1745602831IN
0x9524e250...A0202d44D
0 ETH0.000001360.00200993
Set Role Capabil...294067142025-04-25 17:39:35200 days ago1745602775IN
0x9524e250...A0202d44D
0 ETH0.000001080.00161129
Set Role Capabil...294067142025-04-25 17:39:35200 days ago1745602775IN
0x9524e250...A0202d44D
0 ETH0.000001080.00161129
Set Role Capabil...294066892025-04-25 17:38:45200 days ago1745602725IN
0x9524e250...A0202d44D
0 ETH0.000001290.00146947
Set Role Capabil...294066892025-04-25 17:38:45200 days ago1745602725IN
0x9524e250...A0202d44D
0 ETH0.000001290.00146947
Set Role Capabil...294066712025-04-25 17:38:09200 days ago1745602689IN
0x9524e250...A0202d44D
0 ETH0.000001040.00133285
Set Role Capabil...294066712025-04-25 17:38:09200 days ago1745602689IN
0x9524e250...A0202d44D
0 ETH0.000001040.00133285
Set Role Capabil...294066712025-04-25 17:38:09200 days ago1745602689IN
0x9524e250...A0202d44D
0 ETH0.000001040.00133285
Set Role Capabil...294065982025-04-25 17:35:43200 days ago1745602543IN
0x9524e250...A0202d44D
0 ETH0.000000720.00145786
Set Role Capabil...294065982025-04-25 17:35:43200 days ago1745602543IN
0x9524e250...A0202d44D
0 ETH0.000000720.00145786
Set Role Capabil...294065982025-04-25 17:35:43200 days ago1745602543IN
0x9524e250...A0202d44D
0 ETH0.000000720.00145786
Set Role Capabil...294064872025-04-25 17:32:01200 days ago1745602321IN
0x9524e250...A0202d44D
0 ETH0.000000840.00156771
Set Role Capabil...294064872025-04-25 17:32:01200 days ago1745602321IN
0x9524e250...A0202d44D
0 ETH0.000000870.00156771
Set Role Capabil...294064392025-04-25 17:30:25200 days ago1745602225IN
0x9524e250...A0202d44D
0 ETH0.000000960.00125152
Set Role Capabil...294064392025-04-25 17:30:25200 days ago1745602225IN
0x9524e250...A0202d44D
0 ETH0.000000960.00125152
Set Role Capabil...294064392025-04-25 17:30:25200 days ago1745602225IN
0x9524e250...A0202d44D
0 ETH0.000000970.00125152
Set Role Capabil...294064382025-04-25 17:30:23200 days ago1745602223IN
0x9524e250...A0202d44D
0 ETH0.000000990.00125151
Set Role Capabil...293843542025-04-25 5:14:15200 days ago1745558055IN
0x9524e250...A0202d44D
0 ETH0.000000150.00100309
Set Role Capabil...293843542025-04-25 5:14:15200 days ago1745558055IN
0x9524e250...A0202d44D
0 ETH0.000000170.00100309
Set Role Capabil...293842982025-04-25 5:12:23200 days ago1745557943IN
0x9524e250...A0202d44D
0 ETH0.000000150.00099474
Set Role Capabil...293842982025-04-25 5:12:23200 days ago1745557943IN
0x9524e250...A0202d44D
0 ETH0.000000150.00099474
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RolesAuthority

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
shanghai EvmVersion
// 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": [
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
    "@solmate/=node_modules/solmate/src/",
    "forge-std/=node_modules/forge-std/",
    "solmate/=node_modules/solmate/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "none",
    "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"}]

608060405234801561000f575f5ffd5b50604051610ba4380380610ba483398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f5ffd5b50565b5f5f604083850312156100ee575f5ffd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610a82806101225f395ff3fe608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461023b578063c6b0263e1461024e578063ea7ca27614610261578063f2fde38b14610297575f5ffd5b80638da5cb5b146101b2578063b4bad06a146101dc578063b700961314610228575f5ffd5b80637917b794116100b85780637917b794146101625780637a9e5e4b1461018c5780637d40583d1461019f575f5ffd5b806306a36aee146100de5780632f47571f1461011057806367aff4841461014d575b5f5ffd5b6100fd6100ec36600461087d565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61013d61011e3660046108bb565b600360209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610107565b61016061015b36600461090b565b6102aa565b005b6100fd6101703660046108bb565b600460209081525f928352604080842090915290825290205481565b61016061019a36600461087d565b6103a0565b6101606101ad366004610951565b610494565b5f546101c4906001600160a01b031681565b6040516001600160a01b039091168152602001610107565b61013d6101ea3660046109a6565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61013d6102363660046109e8565b6105d0565b6001546101c4906001600160a01b031681565b61016061025c366004610a05565b61064d565b61013d61026f366004610a30565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101606102a536600461087d565b61070b565b6102bf335f356001600160e01b0319166107b2565b6102ff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b801561032d576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610352565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610393911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610434575060015460405163b700961360e01b81523360048201523060248201525f356001600160e01b03191660448201526001600160a01b039091169063b700961390606401602060405180830381865afa158015610410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104349190610a5a565b61043c575f5ffd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b6104a9335f356001600160e01b0319166107b2565b6104e45760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b8015610527576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610561565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516105c2911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff168061064557506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b610662335f356001600160e01b0319166107b2565b61069d5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610393565b610720335f356001600160e01b0319166107b2565b61075b5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610848575060405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b03198516604483015282169063b700961390606401602060405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190610a5a565b8061064557505f546001600160a01b03858116911614949350505050565b6001600160a01b038116811461087a575f5ffd5b50565b5f6020828403121561088d575f5ffd5b813561089881610866565b9392505050565b80356001600160e01b0319811681146108b6575f5ffd5b919050565b5f5f604083850312156108cc575f5ffd5b82356108d781610866565b91506108e56020840161089f565b90509250929050565b803560ff811681146108b6575f5ffd5b801515811461087a575f5ffd5b5f5f5f6060848603121561091d575f5ffd5b833561092881610866565b9250610936602085016108ee565b91506040840135610946816108fe565b809150509250925092565b5f5f5f5f60808587031215610964575f5ffd5b61096d856108ee565b9350602085013561097d81610866565b925061098b6040860161089f565b9150606085013561099b816108fe565b939692955090935050565b5f5f5f606084860312156109b8575f5ffd5b6109c1846108ee565b925060208401356109d181610866565b91506109df6040850161089f565b90509250925092565b5f5f5f606084860312156109fa575f5ffd5b83356109c181610866565b5f5f5f60608486031215610a17575f5ffd5b8335610a2281610866565b92506109366020850161089f565b5f5f60408385031215610a41575f5ffd5b8235610a4c81610866565b91506108e5602084016108ee565b5f60208284031215610a6a575f5ffd5b8151610898816108fe56fea164736f6c634300081c000a0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc00000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106100da575f3560e01c80638da5cb5b11610088578063bf7e214f11610063578063bf7e214f1461023b578063c6b0263e1461024e578063ea7ca27614610261578063f2fde38b14610297575f5ffd5b80638da5cb5b146101b2578063b4bad06a146101dc578063b700961314610228575f5ffd5b80637917b794116100b85780637917b794146101625780637a9e5e4b1461018c5780637d40583d1461019f575f5ffd5b806306a36aee146100de5780632f47571f1461011057806367aff4841461014d575b5f5ffd5b6100fd6100ec36600461087d565b60026020525f908152604090205481565b6040519081526020015b60405180910390f35b61013d61011e3660046108bb565b600360209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610107565b61016061015b36600461090b565b6102aa565b005b6100fd6101703660046108bb565b600460209081525f928352604080842090915290825290205481565b61016061019a36600461087d565b6103a0565b6101606101ad366004610951565b610494565b5f546101c4906001600160a01b031681565b6040516001600160a01b039091168152602001610107565b61013d6101ea3660046109a6565b6001600160a01b03919091165f9081526004602090815260408083206001600160e01b031990941683529290522054600160ff929092161c16151590565b61013d6102363660046109e8565b6105d0565b6001546101c4906001600160a01b031681565b61016061025c366004610a05565b61064d565b61013d61026f366004610a30565b6001600160a01b03919091165f90815260026020526040902054600160ff9092161c16151590565b6101606102a536600461087d565b61070b565b6102bf335f356001600160e01b0319166107b2565b6102ff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b801561032d576001600160a01b0383165f9081526002602052604090208054600160ff85161b179055610352565b6001600160a01b0383165f9081526002602052604090208054600160ff85161b191690555b8160ff16836001600160a01b03167f4c9bdd0c8e073eb5eda2250b18d8e5121ff27b62064fbeeeed4869bb99bc5bf283604051610393911515815260200190565b60405180910390a3505050565b5f546001600160a01b0316331480610434575060015460405163b700961360e01b81523360048201523060248201525f356001600160e01b03191660448201526001600160a01b039091169063b700961390606401602060405180830381865afa158015610410573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104349190610a5a565b61043c575f5ffd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b6104a9335f356001600160e01b0319166107b2565b6104e45760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b8015610527576001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b179055610561565b6001600160a01b0383165f9081526004602090815260408083206001600160e01b03198616845290915290208054600160ff87161b191690555b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916836001600160a01b03168560ff167fa52ea92e6e955aa8ac66420b86350f7139959adfcc7e6a14eee1bd116d09860e846040516105c2911515815260200190565b60405180910390a450505050565b6001600160a01b0382165f9081526003602090815260408083206001600160e01b03198516845290915281205460ff168061064557506001600160a01b038084165f9081526004602090815260408083206001600160e01b031987168452825280832054938816835260029091529020541615155b949350505050565b610662335f356001600160e01b0319166107b2565b61069d5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b6001600160a01b0383165f8181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f950a343f5d10445e82a71036d3f4fb3016180a25805141932543b83e2078a93e9101610393565b610720335f356001600160e01b0319166107b2565b61075b5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064016102f6565b5f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001545f906001600160a01b03168015801590610848575060405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b03198516604483015282169063b700961390606401602060405180830381865afa158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190610a5a565b8061064557505f546001600160a01b03858116911614949350505050565b6001600160a01b038116811461087a575f5ffd5b50565b5f6020828403121561088d575f5ffd5b813561089881610866565b9392505050565b80356001600160e01b0319811681146108b6575f5ffd5b919050565b5f5f604083850312156108cc575f5ffd5b82356108d781610866565b91506108e56020840161089f565b90509250929050565b803560ff811681146108b6575f5ffd5b801515811461087a575f5ffd5b5f5f5f6060848603121561091d575f5ffd5b833561092881610866565b9250610936602085016108ee565b91506040840135610946816108fe565b809150509250925092565b5f5f5f5f60808587031215610964575f5ffd5b61096d856108ee565b9350602085013561097d81610866565b925061098b6040860161089f565b9150606085013561099b816108fe565b939692955090935050565b5f5f5f606084860312156109b8575f5ffd5b6109c1846108ee565b925060208401356109d181610866565b91506109df6040850161089f565b90509250925092565b5f5f5f606084860312156109fa575f5ffd5b83356109c181610866565b5f5f5f60608486031215610a17575f5ffd5b8335610a2281610866565b92506109366020850161089f565b5f5f60408385031215610a41575f5ffd5b8235610a4c81610866565b91506108e5602084016108ee565b5f60208284031215610a6a575f5ffd5b8151610898816108fe56fea164736f6c634300081c000a

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

0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc00000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _owner (address): 0x7Af7e4964818dec8723cb77263bAe297ab73adC0
Arg [1] : _authority (address): 0x0000000000000000000000000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007af7e4964818dec8723cb77263bae297ab73adc0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty 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  ]

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.