Arbitrum Sepolia Testnet

Contract

0xb6aB6Cf2E2Bb109212Cc1919992EE0E10E8e08AF
Source Code Source Code

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Grant Kyc In Bul...1431816502025-04-16 7:33:47303 days ago1744788827IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000678540.1
Grant Kyc In Bul...1313122322025-03-11 8:15:20339 days ago1741680920IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000007430.1
Grant Kyc In Bul...1139134202025-01-10 3:53:27399 days ago1736481207IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.00000310.1
Grant Kyc In Bul...1139134142025-01-10 3:53:26399 days ago1736481206IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000003110.1
Grant Kyc In Bul...1139134122025-01-10 3:53:24399 days ago1736481204IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.00000310.1
Grant Kyc In Bul...1139134082025-01-10 3:53:23399 days ago1736481203IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.00000310.1
Grant Kyc In Bul...1139133092025-01-10 3:52:47399 days ago1736481167IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005090.1
Grant Kyc In Bul...1067946212024-12-14 8:46:39426 days ago1734165999IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005760.1
Un Banned In Bul...890954712024-10-16 8:52:24485 days ago1729068744IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000004510.1
Banned In Bulk888222572024-10-15 8:09:03486 days ago1728979743IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000008910.1
Un Banned In Bul...888211192024-10-15 8:03:23486 days ago1728979403IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000007390.1
Banned In Bulk888186842024-10-15 7:51:30486 days ago1728978690IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005580.1
Grant Kyc In Bul...742440102024-08-26 4:14:55536 days ago1724645695IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000004940.1
Grant Kyc In Bul...462404392024-05-21 3:21:07633 days ago1716261667IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000013280.25562
Grant Kyc In Bul...337888402024-04-15 3:32:06669 days ago1713151926IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000028680.96987
Grant Kyc In Bul...314011932024-04-07 23:55:54676 days ago1712534154IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000057920.23695
Grant Kyc In Bul...305078942024-04-05 8:35:22679 days ago1712306122IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000037450.10476
Grant Kyc In Bul...256151652024-03-22 1:08:49693 days ago1711069729IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000022590.1
Grant Kyc In Bul...226172312024-03-13 2:26:09702 days ago1710296769IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000004980.10059
Grant Kyc In Bul...223522452024-03-12 8:02:34703 days ago1710230554IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.00000880.1
Un Banned In Bul...203303052024-03-06 4:24:46709 days ago1709699086IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005710.1
Banned In Bulk203233432024-03-06 3:50:01709 days ago1709697001IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005950.1
Grant Kyc In Bul...202997492024-03-06 1:54:32709 days ago1709690072IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000007180.1
Un Banned In Bul...202917542024-03-06 1:10:18709 days ago1709687418IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005660.1
Banned In Bulk202917152024-03-06 1:10:05709 days ago1709687405IN
0xb6aB6Cf2...10E8e08AF
0 ETH0.000005660.1
View all transactions

Parent Transaction Hash Block From To Amount
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KycManager

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity =0.8.9;
import "@openzeppelin/contracts/access/Ownable.sol";
import "./interfaces/IKycManager.sol";

contract KycManager is IKycManager, Ownable {
    event GrantKyc(address _investor, KycType _kycType);
    event RevokeKyc(address _investor, KycType _kycType);
    event Banned(address _investor, bool _status);
    event SetStrict(bool _status);

    mapping(address => User) userList;
    bool strictOn;

    modifier onlyNonZeroAddress(address _investor) {
        require(_investor != address(0), "invalid address");
        _;
    }

    /*//////////////////////////////////////////////////////////////
                          GRANT KYC
    //////////////////////////////////////////////////////////////*/
    function grantKycInBulk(
        address[] calldata _investors,
        KycType[] calldata _kycTypes
    ) external onlyOwner {
        require(_investors.length == _kycTypes.length, "invalid input");
        for (uint256 i = 0; i < _investors.length; i++) {
            _grantKyc(_investors[i], _kycTypes[i]);
        }
    }

    function _grantKyc(
        address _investor,
        KycType _kycType
    ) internal onlyNonZeroAddress(_investor) {
        require(
            KycType.US_KYC == _kycType || KycType.GENERAL_KYC == _kycType,
            "invalid kyc type"
        );

        User storage user = userList[_investor];
        user.kycType = _kycType;
        emit GrantKyc(_investor, _kycType);
    }

    /*//////////////////////////////////////////////////////////////
                          REVOKE KYC
    //////////////////////////////////////////////////////////////*/
    function revokeKycInBulk(address[] calldata _investors) external onlyOwner {
        for (uint256 i = 0; i < _investors.length; i++) {
            _revokeKyc(_investors[i]);
        }
    }

    function _revokeKyc(
        address _investor
    ) internal onlyNonZeroAddress(_investor) {
        User storage user = userList[_investor];
        emit RevokeKyc(_investor, user.kycType);
        user.kycType = KycType.NON_KYC;
    }

    /*//////////////////////////////////////////////////////////////
                          BAN KYC
    //////////////////////////////////////////////////////////////*/
    function bannedInBulk(address[] calldata _investors) external onlyOwner {
        for (uint256 i = 0; i < _investors.length; i++) {
            _bannedInternal(_investors[i], true);
        }
    }

    /*//////////////////////////////////////////////////////////////
                          UNBAN KYC
    //////////////////////////////////////////////////////////////*/
    function unBannedInBulk(address[] calldata _investors) external onlyOwner {
        for (uint256 i = 0; i < _investors.length; i++) {
            _bannedInternal(_investors[i], false);
        }
    }

    function _bannedInternal(
        address _investor,
        bool _status
    ) internal onlyNonZeroAddress(_investor) {
        User storage user = userList[_investor];
        user.isBanned = _status;
        emit Banned(_investor, _status);
    }

    function setStrict(bool _status) external onlyOwner {
        strictOn = _status;
        emit SetStrict(_status);
    }

    /*//////////////////////////////////////////////////////////////
                            USED BY INTERFACE
    //////////////////////////////////////////////////////////////*/
    function getUserInfo(
        address _investor
    ) external view returns (User memory user) {
        user = userList[_investor];
    }

    function onlyNotBanned(address _investor) external view {
        require(!userList[_investor].isBanned, "user is banned");
    }

    function onlyKyc(address _investor) external view {
        require(
            KycType.NON_KYC != userList[_investor].kycType,
            "not a kyc user"
        );
    }

    function isBanned(address _investor) external view returns (bool) {
        return userList[_investor].isBanned;
    }

    function isKyc(address _investor) external view returns (bool) {
        return KycType.NON_KYC != userList[_investor].kycType;
    }

    function isUSKyc(address _investor) external view returns (bool) {
        return KycType.US_KYC == userList[_investor].kycType;
    }

    function isNonUSKyc(address _investor) external view returns (bool) {
        return KycType.GENERAL_KYC == userList[_investor].kycType;
    }

    function isStrict() external view returns (bool) {
        return strictOn;
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// SPDX-License-Identifier: MIT
pragma solidity =0.8.9;

interface IKycManager {
    enum KycType {
        NON_KYC,
        US_KYC,
        GENERAL_KYC
    }

    struct User {
        KycType kycType;
        bool isBanned;
    }

    function onlyNotBanned(address investor) external view;

    function onlyKyc(address investor) external view;

    function isBanned(address investor) external view returns (bool);

    function isKyc(address investor) external view returns (bool);

    function isUSKyc(address investor) external view returns (bool);

    function isNonUSKyc(address investor) external view returns (bool);

    function isStrict() external view returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_investor","type":"address"},{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"Banned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_investor","type":"address"},{"indexed":false,"internalType":"enum IKycManager.KycType","name":"_kycType","type":"uint8"}],"name":"GrantKyc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_investor","type":"address"},{"indexed":false,"internalType":"enum IKycManager.KycType","name":"_kycType","type":"uint8"}],"name":"RevokeKyc","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_status","type":"bool"}],"name":"SetStrict","type":"event"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"bannedInBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"getUserInfo","outputs":[{"components":[{"internalType":"enum IKycManager.KycType","name":"kycType","type":"uint8"},{"internalType":"bool","name":"isBanned","type":"bool"}],"internalType":"struct IKycManager.User","name":"user","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"},{"internalType":"enum IKycManager.KycType[]","name":"_kycTypes","type":"uint8[]"}],"name":"grantKycInBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"isBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"isKyc","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"isNonUSKyc","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isStrict","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"isUSKyc","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"onlyKyc","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"onlyNotBanned","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"revokeKycInBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setStrict","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"unBannedInBulk","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c558061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063de287fd511610066578063de287fd514610220578063f2fde38b14610233578063fa8485ce14610246578063fc9080691461025957600080fd5b80638da5cb5b146101ae57806397f735d5146101c9578063b6599326146101fa578063d713cc4a1461020d57600080fd5b8063236e9630116100d3578063236e9630146101605780633e295b9d146101735780636386c1c714610186578063715018a6146101a657600080fd5b8063033b0ee714610105578063103257011461012d57806318b57b0f146101385780631d5b99d21461014b575b600080fd5b6101186101133660046109d2565b61026c565b60405190151581526020015b60405180910390f35b60025460ff16610118565b6101186101463660046109d2565b6102a3565b61015e610159366004610a02565b6102d7565b005b61015e61016e366004610a70565b610326565b6101186101813660046109d2565b61037f565b6101996101943660046109d2565b6103b4565b6040516101249190610aea565b61015e61042d565b6000546040516001600160a01b039091168152602001610124565b6101186101d73660046109d2565b6001600160a01b0316600090815260016020526040902054610100900460ff1690565b61015e610208366004610b0d565b610441565b61015e61021b3660046109d2565b610507565b61015e61022e3660046109d2565b610569565b61015e6102413660046109d2565b6105d3565b61015e610254366004610a70565b610649565b61015e610267366004610a70565b61069f565b6001600160a01b03811660009081526001602052604081205460ff16600281111561029957610299610ab2565b60025b1492915050565b6001600160a01b03811660009081526001602052604081205460ff1660028111156102d0576102d0610ab2565b600161029c565b6102df6106f5565b6002805460ff19168215159081179091556040519081527f516f952268fa23f170b118a7abf6ceca79d5cf0c69c442ff2b8584ab42d42ae79060200160405180910390a150565b61032e6106f5565b60005b8181101561037a5761036883838381811061034e5761034e610b79565b905060200201602081019061036391906109d2565b61074f565b8061037281610b8f565b915050610331565b505050565b6001600160a01b03811660009081526001602052604081205460ff1660028111156103ac576103ac610ab2565b151592915050565b60408051808201909152600080825260208201526001600160a01b0382166000908152600160205260409081902081518083019092528054829060ff16600281111561040257610402610ab2565b600281111561041357610413610ab2565b81529054610100900460ff16151560209091015292915050565b6104356106f5565b61043f60006107dd565b565b6104496106f5565b82811461048d5760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b60448201526064015b60405180910390fd5b60005b83811015610500576104ee8585838181106104ad576104ad610b79565b90506020020160208101906104c291906109d2565b8484848181106104d4576104d4610b79565b90506020020160208101906104e99190610bb8565b61082d565b806104f881610b8f565b915050610490565b5050505050565b6001600160a01b038116600090815260016020526040902054610100900460ff16156105665760405162461bcd60e51b815260206004820152600e60248201526d1d5cd95c881a5cc818985b9b995960921b6044820152606401610484565b50565b6001600160a01b03811660009081526001602052604090205460ff16600281111561059657610596610ab2565b6105665760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309035bcb1903ab9b2b960911b6044820152606401610484565b6105db6106f5565b6001600160a01b0381166106405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610484565b610566816107dd565b6106516106f5565b60005b8181101561037a5761068d83838381811061067157610671610b79565b905060200201602081019061068691906109d2565b6001610944565b8061069781610b8f565b915050610654565b6106a76106f5565b60005b8181101561037a576106e38383838181106106c7576106c7610b79565b90506020020160208101906106dc91906109d2565b6000610944565b806106ed81610b8f565b9150506106aa565b6000546001600160a01b0316331461043f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610484565b806001600160a01b0381166107765760405162461bcd60e51b815260040161048490610bd9565b6001600160a01b038216600090815260016020526040908190208054915190917f3db15d8e93a3846a7a0873a1e280b9b5dfa7c2b333a42e84adf67059c99dd73c916107c991869160ff90911690610c02565b60405180910390a1805460ff191690555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0381166108545760405162461bcd60e51b815260040161048490610bd9565b81600281111561086657610866610ab2565b60011480610885575081600281111561088157610881610ab2565b6002145b6108c45760405162461bcd60e51b815260206004820152601060248201526f696e76616c6964206b7963207479706560801b6044820152606401610484565b6001600160a01b0383166000908152600160208190526040909120805490918491839160ff199091169083600281111561090057610900610ab2565b02179055507fa5df25b8e0fb4ff979329737a7066fddadd5a880505313bf317e838470a52bf28484604051610936929190610c02565b60405180910390a150505050565b816001600160a01b03811661096b5760405162461bcd60e51b815260040161048490610bd9565b6001600160a01b038316600081815260016020908152604091829020805461ff001916610100871515908102919091178255835194855291840191909152917fbe490a041de95d684835a21f3975102b719d9ede8cf410d4b6b06440bf8395099101610936565b6000602082840312156109e457600080fd5b81356001600160a01b03811681146109fb57600080fd5b9392505050565b600060208284031215610a1457600080fd5b813580151581146109fb57600080fd5b60008083601f840112610a3657600080fd5b50813567ffffffffffffffff811115610a4e57600080fd5b6020830191508360208260051b8501011115610a6957600080fd5b9250929050565b60008060208385031215610a8357600080fd5b823567ffffffffffffffff811115610a9a57600080fd5b610aa685828601610a24565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610ae657634e487b7160e01b600052602160045260246000fd5b9052565b6000604082019050610afd828451610ac8565b6020928301511515919092015290565b60008060008060408587031215610b2357600080fd5b843567ffffffffffffffff80821115610b3b57600080fd5b610b4788838901610a24565b90965094506020870135915080821115610b6057600080fd5b50610b6d87828801610a24565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bb157634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610bca57600080fd5b8135600381106109fb57600080fd5b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6001600160a01b0383168152604081016109fb6020830184610ac856fea264697066735822122039df65c278facf8e3dc7ad843eba38a0f5906fa079e3aa12a8104445558dcc1664736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063de287fd511610066578063de287fd514610220578063f2fde38b14610233578063fa8485ce14610246578063fc9080691461025957600080fd5b80638da5cb5b146101ae57806397f735d5146101c9578063b6599326146101fa578063d713cc4a1461020d57600080fd5b8063236e9630116100d3578063236e9630146101605780633e295b9d146101735780636386c1c714610186578063715018a6146101a657600080fd5b8063033b0ee714610105578063103257011461012d57806318b57b0f146101385780631d5b99d21461014b575b600080fd5b6101186101133660046109d2565b61026c565b60405190151581526020015b60405180910390f35b60025460ff16610118565b6101186101463660046109d2565b6102a3565b61015e610159366004610a02565b6102d7565b005b61015e61016e366004610a70565b610326565b6101186101813660046109d2565b61037f565b6101996101943660046109d2565b6103b4565b6040516101249190610aea565b61015e61042d565b6000546040516001600160a01b039091168152602001610124565b6101186101d73660046109d2565b6001600160a01b0316600090815260016020526040902054610100900460ff1690565b61015e610208366004610b0d565b610441565b61015e61021b3660046109d2565b610507565b61015e61022e3660046109d2565b610569565b61015e6102413660046109d2565b6105d3565b61015e610254366004610a70565b610649565b61015e610267366004610a70565b61069f565b6001600160a01b03811660009081526001602052604081205460ff16600281111561029957610299610ab2565b60025b1492915050565b6001600160a01b03811660009081526001602052604081205460ff1660028111156102d0576102d0610ab2565b600161029c565b6102df6106f5565b6002805460ff19168215159081179091556040519081527f516f952268fa23f170b118a7abf6ceca79d5cf0c69c442ff2b8584ab42d42ae79060200160405180910390a150565b61032e6106f5565b60005b8181101561037a5761036883838381811061034e5761034e610b79565b905060200201602081019061036391906109d2565b61074f565b8061037281610b8f565b915050610331565b505050565b6001600160a01b03811660009081526001602052604081205460ff1660028111156103ac576103ac610ab2565b151592915050565b60408051808201909152600080825260208201526001600160a01b0382166000908152600160205260409081902081518083019092528054829060ff16600281111561040257610402610ab2565b600281111561041357610413610ab2565b81529054610100900460ff16151560209091015292915050565b6104356106f5565b61043f60006107dd565b565b6104496106f5565b82811461048d5760405162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081a5b9c1d5d609a1b60448201526064015b60405180910390fd5b60005b83811015610500576104ee8585838181106104ad576104ad610b79565b90506020020160208101906104c291906109d2565b8484848181106104d4576104d4610b79565b90506020020160208101906104e99190610bb8565b61082d565b806104f881610b8f565b915050610490565b5050505050565b6001600160a01b038116600090815260016020526040902054610100900460ff16156105665760405162461bcd60e51b815260206004820152600e60248201526d1d5cd95c881a5cc818985b9b995960921b6044820152606401610484565b50565b6001600160a01b03811660009081526001602052604090205460ff16600281111561059657610596610ab2565b6105665760405162461bcd60e51b815260206004820152600e60248201526d3737ba10309035bcb1903ab9b2b960911b6044820152606401610484565b6105db6106f5565b6001600160a01b0381166106405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610484565b610566816107dd565b6106516106f5565b60005b8181101561037a5761068d83838381811061067157610671610b79565b905060200201602081019061068691906109d2565b6001610944565b8061069781610b8f565b915050610654565b6106a76106f5565b60005b8181101561037a576106e38383838181106106c7576106c7610b79565b90506020020160208101906106dc91906109d2565b6000610944565b806106ed81610b8f565b9150506106aa565b6000546001600160a01b0316331461043f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610484565b806001600160a01b0381166107765760405162461bcd60e51b815260040161048490610bd9565b6001600160a01b038216600090815260016020526040908190208054915190917f3db15d8e93a3846a7a0873a1e280b9b5dfa7c2b333a42e84adf67059c99dd73c916107c991869160ff90911690610c02565b60405180910390a1805460ff191690555050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816001600160a01b0381166108545760405162461bcd60e51b815260040161048490610bd9565b81600281111561086657610866610ab2565b60011480610885575081600281111561088157610881610ab2565b6002145b6108c45760405162461bcd60e51b815260206004820152601060248201526f696e76616c6964206b7963207479706560801b6044820152606401610484565b6001600160a01b0383166000908152600160208190526040909120805490918491839160ff199091169083600281111561090057610900610ab2565b02179055507fa5df25b8e0fb4ff979329737a7066fddadd5a880505313bf317e838470a52bf28484604051610936929190610c02565b60405180910390a150505050565b816001600160a01b03811661096b5760405162461bcd60e51b815260040161048490610bd9565b6001600160a01b038316600081815260016020908152604091829020805461ff001916610100871515908102919091178255835194855291840191909152917fbe490a041de95d684835a21f3975102b719d9ede8cf410d4b6b06440bf8395099101610936565b6000602082840312156109e457600080fd5b81356001600160a01b03811681146109fb57600080fd5b9392505050565b600060208284031215610a1457600080fd5b813580151581146109fb57600080fd5b60008083601f840112610a3657600080fd5b50813567ffffffffffffffff811115610a4e57600080fd5b6020830191508360208260051b8501011115610a6957600080fd5b9250929050565b60008060208385031215610a8357600080fd5b823567ffffffffffffffff811115610a9a57600080fd5b610aa685828601610a24565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110610ae657634e487b7160e01b600052602160045260246000fd5b9052565b6000604082019050610afd828451610ac8565b6020928301511515919092015290565b60008060008060408587031215610b2357600080fd5b843567ffffffffffffffff80821115610b3b57600080fd5b610b4788838901610a24565b90965094506020870135915080821115610b6057600080fd5b50610b6d87828801610a24565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bb157634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610bca57600080fd5b8135600381106109fb57600080fd5b6020808252600f908201526e696e76616c6964206164647265737360881b604082015260600190565b6001600160a01b0383168152604081016109fb6020830184610ac856fea264697066735822122039df65c278facf8e3dc7ad843eba38a0f5906fa079e3aa12a8104445558dcc1664736f6c63430008090033

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
0xb6aB6Cf2E2Bb109212Cc1919992EE0E10E8e08AF
Loading...
Loading
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.