ETH Price: $2,511.00 (-0.02%)

Contract

0x22d63647cf1eC0690a04fb00b413374072E17801
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Create Account163531032023-01-07 6:25:35664 days ago1673072735IN
0x22d63647...072E17801
0 ETH0.0048457215.57025399
Create Account158365642022-10-27 2:56:23736 days ago1666839383IN
0x22d63647...072E17801
0 ETH0.0036543411.74210443
Transfer Ownersh...146720702022-04-28 9:23:18918 days ago1651137798IN
0x22d63647...072E17801
0 ETH0.0009647133.72299537
Create Account146075292022-04-18 6:17:06928 days ago1650262626IN
0x22d63647...072E17801
0 ETH0.0070513422.65732876
Create Account145302282022-04-06 4:30:33940 days ago1649219433IN
0x22d63647...072E17801
0 ETH0.0171403158.27719683
Create Account145255742022-04-05 11:17:08941 days ago1649157428IN
0x22d63647...072E17801
0 ETH0.0165479353.17168275
Create Account144974772022-04-01 1:38:04945 days ago1648777084IN
0x22d63647...072E17801
0 ETH0.0222123475.5221463
Create Account144794502022-03-29 6:25:31948 days ago1648535131IN
0x22d63647...072E17801
0 ETH0.0092142531.32853977
Create Account144789452022-03-29 4:26:32948 days ago1648527992IN
0x22d63647...072E17801
0 ETH0.0113978936.62361
Create Account144755362022-03-28 15:45:26949 days ago1648482326IN
0x22d63647...072E17801
0 ETH0.0220423174.94404897
Create Account144740372022-03-28 10:02:53949 days ago1648461773IN
0x22d63647...072E17801
0 ETH0.0091431131.08666253
Create Account144554902022-03-25 12:42:35952 days ago1648212155IN
0x22d63647...072E17801
0 ETH0.0119798838.49366541
Create Account144541052022-03-25 7:37:07952 days ago1648193827IN
0x22d63647...072E17801
0 ETH0.0069078523.48676757
Create Account144539302022-03-25 6:56:23952 days ago1648191383IN
0x22d63647...072E17801
0 ETH0.0070213223.87255623
Create Account144538282022-03-25 6:35:53952 days ago1648190153IN
0x22d63647...072E17801
0 ETH0.0086602829.44502131
Create Account144465952022-03-24 3:29:23953 days ago1648092563IN
0x22d63647...072E17801
0 ETH0.0110389237.53242083
Create Account144465272022-03-24 3:16:40953 days ago1648091800IN
0x22d63647...072E17801
0 ETH0.0133483545.38452116
Create Account144422682022-03-23 11:27:51954 days ago1648034871IN
0x22d63647...072E17801
0 ETH0.0062415620.05534467
Create Account144422312022-03-23 11:20:00954 days ago1648034400IN
0x22d63647...072E17801
0 ETH0.0084812525.83252795
Set Reward Cente...144414832022-03-23 8:32:36954 days ago1648024356IN
0x22d63647...072E17801
0 ETH0.0011525225
Add New Account ...144414582022-03-23 8:25:18954 days ago1648023918IN
0x22d63647...072E17801
0 ETH0.0013176525
Add New Account ...144413562022-03-23 8:00:32954 days ago1648022432IN
0x22d63647...072E17801
0 ETH0.0011949517.11820127
0x60806040144411712022-03-23 7:14:23954 days ago1648019663IN
 Create: AccountCenter
0 ETH0.0131721716.55301549

Latest 18 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
163531032023-01-07 6:25:35664 days ago1673072735
0x22d63647...072E17801
 Contract Creation0 ETH
158365642022-10-27 2:56:23736 days ago1666839383
0x22d63647...072E17801
 Contract Creation0 ETH
146075292022-04-18 6:17:06928 days ago1650262626
0x22d63647...072E17801
 Contract Creation0 ETH
145302282022-04-06 4:30:33940 days ago1649219433
0x22d63647...072E17801
 Contract Creation0 ETH
145255742022-04-05 11:17:08941 days ago1649157428
0x22d63647...072E17801
 Contract Creation0 ETH
144974772022-04-01 1:38:04945 days ago1648777084
0x22d63647...072E17801
 Contract Creation0 ETH
144794502022-03-29 6:25:31948 days ago1648535131
0x22d63647...072E17801
 Contract Creation0 ETH
144789452022-03-29 4:26:32948 days ago1648527992
0x22d63647...072E17801
 Contract Creation0 ETH
144755362022-03-28 15:45:26949 days ago1648482326
0x22d63647...072E17801
 Contract Creation0 ETH
144740372022-03-28 10:02:53949 days ago1648461773
0x22d63647...072E17801
 Contract Creation0 ETH
144554902022-03-25 12:42:35952 days ago1648212155
0x22d63647...072E17801
 Contract Creation0 ETH
144541052022-03-25 7:37:07952 days ago1648193827
0x22d63647...072E17801
 Contract Creation0 ETH
144539302022-03-25 6:56:23952 days ago1648191383
0x22d63647...072E17801
 Contract Creation0 ETH
144538282022-03-25 6:35:53952 days ago1648190153
0x22d63647...072E17801
 Contract Creation0 ETH
144465952022-03-24 3:29:23953 days ago1648092563
0x22d63647...072E17801
 Contract Creation0 ETH
144465272022-03-24 3:16:40953 days ago1648091800
0x22d63647...072E17801
 Contract Creation0 ETH
144422682022-03-23 11:27:51954 days ago1648034871
0x22d63647...072E17801
 Contract Creation0 ETH
144422312022-03-23 11:20:00954 days ago1648034400
0x22d63647...072E17801
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AccountCenter

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : AccountCenter.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/access/Ownable.sol";

interface OpDefaultInterface {
    function enable(address user) external;

    function setAccountCenter(address _accountCenter) external;
}

interface IRewardCenter {
    function claimOpenAccountReward(address EOA, address dsa) external;
}

contract AccountCenter is Ownable {
    // totally account count
    uint256 public accountCount;

    // Account Type ID count
    uint256 public accountTypeCount;

    // open account reward center
    address rewardCenter;

    // Account Type ID -> accountProxyTemplateAddress
    mapping(uint256 => address) accountProxyTemplate;

    // EOA -> AccountType -> SmartAccount
    mapping(address => mapping(uint256 => address)) accountBook;

    // Account Type ID -> account count in this type
    mapping(uint256 => uint256) accountOfTypeCount;

    // SmartAccount -> EOA
    mapping(address => address) eoaBook;

    // SmartAccount -> TypeID
    mapping(address => uint256) SmartAccountType;

    mapping(uint256 => address) accountIDtoAddress;

    event AddNewAccountType(uint256 accountTypeID, address acountProxyAddress);
    event UpdateAccountType(uint256 accountTypeID, address acountProxyAddress);
    event CreateAccount(address EOA, address account, uint256 accountTypeID);

    function addNewAccountType(address acountProxyAddress) external onlyOwner {
        require(
            acountProxyAddress != address(0),
            "CHFRY: acountProxyAddress should not be 0"
        );
        accountTypeCount = accountTypeCount + 1;
        accountProxyTemplate[accountTypeCount] = acountProxyAddress;
        emit AddNewAccountType(accountTypeCount, acountProxyAddress);
    }

    function setRewardCenter(address _rewardCenter) external onlyOwner {
        require(
            _rewardCenter != address(0),
            "CHFRY: rewardCenter should not be 0"
        );
        rewardCenter = _rewardCenter;
    }

    function updateAccountType(
        address acountProxyAddress,
        uint256 accountTypeID
    ) external onlyOwner {
        require(
            acountProxyAddress != address(0),
            "CHFRY: acountProxyAddress should not be 0"
        );
        require(
            accountProxyTemplate[accountTypeID] != address(0),
            "CHFRY: account Type not exist"
        );
        accountProxyTemplate[accountTypeID] = acountProxyAddress;
        emit UpdateAccountType(accountTypeID, acountProxyAddress);
    }

    function createAccount(uint256 accountTypeID)
        external
        returns (address _account)
    {
        require(
            accountTypeID <= accountTypeCount,
            "CHFRY: Invalid account Type ID"
        );
        require(
            accountBook[msg.sender][accountTypeID] == address(0),
            "CHFRY: account exist"
        );
        _account = cloneAccountProxy(accountTypeID);
        accountBook[msg.sender][accountTypeID] = _account;
        accountCount = accountCount + 1;
        accountIDtoAddress[accountCount] = _account;
        accountOfTypeCount[accountTypeID] =
            accountOfTypeCount[accountTypeID] +
            1;
        eoaBook[_account] = msg.sender;
        SmartAccountType[_account] = accountTypeID;
        OpDefaultInterface(_account).setAccountCenter(address(this));
        OpDefaultInterface(_account).enable(msg.sender);
        if (rewardCenter != address(0)) {
            IRewardCenter(rewardCenter).claimOpenAccountReward(
                msg.sender,
                _account
            );
        }

        emit CreateAccount(msg.sender, _account, accountTypeID);
    }

    function getAccount(uint256 accountTypeID)
        external
        view
        returns (address _account)
    {
        _account = accountBook[msg.sender][accountTypeID];
        require(
            accountBook[msg.sender][accountTypeID] != address(0),
            "account not exist"
        );
    }

    function getAccountByTypeID(address EOA, uint256 accountTypeID)
        external
        view
        returns (address _account)
    {
        _account = accountBook[EOA][accountTypeID];
    }

    function getAccountTypeCount()
        external
        view
        returns (uint256 _accountTypeCount)
    {
        _accountTypeCount = accountTypeCount;
    }

    function getEOA(address account) external view returns (address _eoa) {
        require(account != address(0), "CHFRY: address should not be 0");
        _eoa = eoaBook[account];
    }

    function isSmartAccount(address _address)
        external
        view
        returns (bool _isAccount)
    {
        require(_address != address(0), "CHFRY: address should not be 0");
        if (eoaBook[_address] == address(0)) {
            _isAccount = false;
        } else {
            _isAccount = true;
        }
    }

    function isSmartAccountofTypeN(address _address, uint256 accountTypeID)
        external
        view
        returns (bool _isAccount)
    {
        require(_address != address(0), "CHFRY: address should not be 0");
        if (SmartAccountType[_address] == accountTypeID) {
            _isAccount = true;
        } else {
            _isAccount = false;
        }
    }

    function getAccountCountOfTypeN(uint256 accountTypeID)
        external
        view
        returns (uint256 count)
    {
        count = accountOfTypeCount[accountTypeID];
    }

    function cloneAccountProxy(uint256 accountTypeID)
        internal
        returns (address accountAddress)
    {
        address accountProxyTemplateAddress = accountProxyTemplate[
            accountTypeID
        ];
        
        require(
            accountProxyTemplateAddress != address(0),
            "CHFRY: accountProxyTemplateAddress not found"
        );

        bytes20 targetBytes = bytes20(accountProxyTemplateAddress);

        assembly {
            let clone := mload(0x40)
            mstore(
                clone,
                0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000
            )
            mstore(add(clone, 0x14), targetBytes)
            mstore(
                add(clone, 0x28),
                0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000
            )
            accountAddress := create(0, clone, 0x37)
        }
    }
}

File 2 of 3 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing 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);
    }
}

File 3 of 3 : Context.sol
// 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;
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"accountTypeID","type":"uint256"},{"indexed":false,"internalType":"address","name":"acountProxyAddress","type":"address"}],"name":"AddNewAccountType","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"EOA","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"CreateAccount","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":"uint256","name":"accountTypeID","type":"uint256"},{"indexed":false,"internalType":"address","name":"acountProxyAddress","type":"address"}],"name":"UpdateAccountType","type":"event"},{"inputs":[],"name":"accountCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accountTypeCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"acountProxyAddress","type":"address"}],"name":"addNewAccountType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"getAccount","outputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"EOA","type":"address"},{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"getAccountByTypeID","outputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"getAccountCountOfTypeN","outputs":[{"internalType":"uint256","name":"count","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccountTypeCount","outputs":[{"internalType":"uint256","name":"_accountTypeCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getEOA","outputs":[{"internalType":"address","name":"_eoa","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isSmartAccount","outputs":[{"internalType":"bool","name":"_isAccount","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"isSmartAccountofTypeN","outputs":[{"internalType":"bool","name":"_isAccount","type":"bool"}],"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":"_rewardCenter","type":"address"}],"name":"setRewardCenter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"acountProxyAddress","type":"address"},{"internalType":"uint256","name":"accountTypeID","type":"uint256"}],"name":"updateAccountType","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610cf98061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806394b80dc611610097578063ce88b14511610066578063ce88b14514610234578063e4af29fc14610247578063f2fde38b14610250578063fa94924c1461026357600080fd5b806394b80dc6146101fd5780639eb0f4e914610210578063a44f9fd314610219578063cab139151461022157600080fd5b806370338719116100d357806370338719146101be578063715018a6146101d1578063869e3b03146101d95780638da5cb5b146101ec57600080fd5b80631f1be9b0146101055780633575a3ee146101585780635e07a6e614610186578063692162b0146101a9575b600080fd5b61013b610113366004610ba5565b6001600160a01b03918216600090815260056020908152604080832093835292905220541690565b6040516001600160a01b0390911681526020015b60405180910390f35b610178610166366004610bcf565b60009081526006602052604090205490565b60405190815260200161014f565b610199610194366004610b83565b610276565b604051901515815260200161014f565b6101bc6101b7366004610ba5565b6102d7565b005b6101bc6101cc366004610b83565b6103f1565b6101bc61049f565b6101996101e7366004610ba5565b6104d5565b6000546001600160a01b031661013b565b6101bc61020b366004610b83565b61052f565b61017860025481565b600254610178565b61013b61022f366004610bcf565b61060a565b61013b610242366004610bcf565b610909565b61017860015481565b6101bc61025e366004610b83565b61096e565b61013b610271366004610b83565b610a09565b60006001600160a01b0382166102a75760405162461bcd60e51b815260040161029e90610c66565b60405180910390fd5b6001600160a01b03828116600090815260076020526040902054166102ce57506000919050565b5060015b919050565b6000546001600160a01b031633146103015760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b0382166103275760405162461bcd60e51b815260040161029e90610be8565b6000818152600460205260409020546001600160a01b031661038b5760405162461bcd60e51b815260206004820152601d60248201527f43484652593a206163636f756e742054797065206e6f74206578697374000000604482015260640161029e565b60008181526004602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251848152918201527f348693349115eb2dbed77e2002a38e839f30d911b636cec1bbd23ed476e63c65910160405180910390a15050565b6000546001600160a01b0316331461041b5760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b03811661047d5760405162461bcd60e51b815260206004820152602360248201527f43484652593a2072657761726443656e7465722073686f756c64206e6f74206260448201526206520360ec1b606482015260840161029e565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104c95760405162461bcd60e51b815260040161029e90610c31565b6104d36000610a50565b565b60006001600160a01b0383166104fd5760405162461bcd60e51b815260040161029e90610c66565b6001600160a01b03831660009081526008602052604090205482141561052557506001610529565b5060005b92915050565b6000546001600160a01b031633146105595760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b03811661057f5760405162461bcd60e51b815260040161029e90610be8565b60025461058d906001610c9d565b60028181556000918252600460205260409182902080546001600160a01b0385166001600160a01b03199091161790555490517f745840e57a234b11a3dd00a3316debe5e55f698a8fbe48496f2616d9b746c685916105ff9184909182526001600160a01b0316602082015260400190565b60405180910390a150565b600060025482111561065e5760405162461bcd60e51b815260206004820152601e60248201527f43484652593a20496e76616c6964206163636f756e7420547970652049440000604482015260640161029e565b3360009081526005602090815260408083208584529091529020546001600160a01b0316156106c65760405162461bcd60e51b815260206004820152601460248201527310d21194964e881858d8dbdd5b9d08195e1a5cdd60621b604482015260640161029e565b6106cf82610aa0565b336000908152600560209081526040808320868452909152902080546001600160a01b0319166001600160a01b038316179055600180549192506107139190610c9d565b6001818155600091825260096020908152604080842080546001600160a01b0319166001600160a01b03871617905585845260069091529091205461075791610c9d565b6000838152600660209081526040808320939093556001600160a01b0384168083526007825283832080546001600160a01b0319163317905560089091529082902084905590516312749fab60e21b81523060048201526349d27eac90602401600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b5050604051630b7f436d60e31b81523360048201526001600160a01b0384169250635bfa1b689150602401600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b50506003546001600160a01b03161591506108bb905057600354604051632896db0360e11b81523360048201526001600160a01b0383811660248301529091169063512db60690604401600060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050505b604080513381526001600160a01b03831660208201529081018390527f898fa01cb61a3fd82b16d9f5e2c21854abbc52ab9fa7cbc754c55691ecbeb3db9060600160405180910390a1919050565b3360009081526005602090815260408083208484529091529020546001600160a01b0316806102d25760405162461bcd60e51b81526020600482015260116024820152701858d8dbdd5b9d081b9bdd08195e1a5cdd607a1b604482015260640161029e565b6000546001600160a01b031633146109985760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161029e565b610a0681610a50565b50565b60006001600160a01b038216610a315760405162461bcd60e51b815260040161029e90610c66565b506001600160a01b039081166000908152600760205260409020541690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600460205260408120546001600160a01b031680610b1a5760405162461bcd60e51b815260206004820152602c60248201527f43484652593a206163636f756e7450726f787954656d706c617465416464726560448201526b1cdcc81b9bdd08199bdd5b9960a21b606482015260840161029e565b60008160601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f095945050505050565b80356001600160a01b03811681146102d257600080fd5b600060208284031215610b9557600080fd5b610b9e82610b6c565b9392505050565b60008060408385031215610bb857600080fd5b610bc183610b6c565b946020939093013593505050565b600060208284031215610be157600080fd5b5035919050565b60208082526029908201527f43484652593a2061636f756e7450726f7879416464726573732073686f756c646040820152680206e6f7420626520360bc1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f43484652593a20616464726573732073686f756c64206e6f7420626520300000604082015260600190565b60008219821115610cbe57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d00d44acf4f09df374040b6203804687efa57a72d3ad74a3e0272c281a4fe2e064736f6c63430008060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806394b80dc611610097578063ce88b14511610066578063ce88b14514610234578063e4af29fc14610247578063f2fde38b14610250578063fa94924c1461026357600080fd5b806394b80dc6146101fd5780639eb0f4e914610210578063a44f9fd314610219578063cab139151461022157600080fd5b806370338719116100d357806370338719146101be578063715018a6146101d1578063869e3b03146101d95780638da5cb5b146101ec57600080fd5b80631f1be9b0146101055780633575a3ee146101585780635e07a6e614610186578063692162b0146101a9575b600080fd5b61013b610113366004610ba5565b6001600160a01b03918216600090815260056020908152604080832093835292905220541690565b6040516001600160a01b0390911681526020015b60405180910390f35b610178610166366004610bcf565b60009081526006602052604090205490565b60405190815260200161014f565b610199610194366004610b83565b610276565b604051901515815260200161014f565b6101bc6101b7366004610ba5565b6102d7565b005b6101bc6101cc366004610b83565b6103f1565b6101bc61049f565b6101996101e7366004610ba5565b6104d5565b6000546001600160a01b031661013b565b6101bc61020b366004610b83565b61052f565b61017860025481565b600254610178565b61013b61022f366004610bcf565b61060a565b61013b610242366004610bcf565b610909565b61017860015481565b6101bc61025e366004610b83565b61096e565b61013b610271366004610b83565b610a09565b60006001600160a01b0382166102a75760405162461bcd60e51b815260040161029e90610c66565b60405180910390fd5b6001600160a01b03828116600090815260076020526040902054166102ce57506000919050565b5060015b919050565b6000546001600160a01b031633146103015760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b0382166103275760405162461bcd60e51b815260040161029e90610be8565b6000818152600460205260409020546001600160a01b031661038b5760405162461bcd60e51b815260206004820152601d60248201527f43484652593a206163636f756e742054797065206e6f74206578697374000000604482015260640161029e565b60008181526004602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251848152918201527f348693349115eb2dbed77e2002a38e839f30d911b636cec1bbd23ed476e63c65910160405180910390a15050565b6000546001600160a01b0316331461041b5760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b03811661047d5760405162461bcd60e51b815260206004820152602360248201527f43484652593a2072657761726443656e7465722073686f756c64206e6f74206260448201526206520360ec1b606482015260840161029e565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146104c95760405162461bcd60e51b815260040161029e90610c31565b6104d36000610a50565b565b60006001600160a01b0383166104fd5760405162461bcd60e51b815260040161029e90610c66565b6001600160a01b03831660009081526008602052604090205482141561052557506001610529565b5060005b92915050565b6000546001600160a01b031633146105595760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b03811661057f5760405162461bcd60e51b815260040161029e90610be8565b60025461058d906001610c9d565b60028181556000918252600460205260409182902080546001600160a01b0385166001600160a01b03199091161790555490517f745840e57a234b11a3dd00a3316debe5e55f698a8fbe48496f2616d9b746c685916105ff9184909182526001600160a01b0316602082015260400190565b60405180910390a150565b600060025482111561065e5760405162461bcd60e51b815260206004820152601e60248201527f43484652593a20496e76616c6964206163636f756e7420547970652049440000604482015260640161029e565b3360009081526005602090815260408083208584529091529020546001600160a01b0316156106c65760405162461bcd60e51b815260206004820152601460248201527310d21194964e881858d8dbdd5b9d08195e1a5cdd60621b604482015260640161029e565b6106cf82610aa0565b336000908152600560209081526040808320868452909152902080546001600160a01b0319166001600160a01b038316179055600180549192506107139190610c9d565b6001818155600091825260096020908152604080842080546001600160a01b0319166001600160a01b03871617905585845260069091529091205461075791610c9d565b6000838152600660209081526040808320939093556001600160a01b0384168083526007825283832080546001600160a01b0319163317905560089091529082902084905590516312749fab60e21b81523060048201526349d27eac90602401600060405180830381600087803b1580156107d157600080fd5b505af11580156107e5573d6000803e3d6000fd5b5050604051630b7f436d60e31b81523360048201526001600160a01b0384169250635bfa1b689150602401600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b50506003546001600160a01b03161591506108bb905057600354604051632896db0360e11b81523360048201526001600160a01b0383811660248301529091169063512db60690604401600060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050505b604080513381526001600160a01b03831660208201529081018390527f898fa01cb61a3fd82b16d9f5e2c21854abbc52ab9fa7cbc754c55691ecbeb3db9060600160405180910390a1919050565b3360009081526005602090815260408083208484529091529020546001600160a01b0316806102d25760405162461bcd60e51b81526020600482015260116024820152701858d8dbdd5b9d081b9bdd08195e1a5cdd607a1b604482015260640161029e565b6000546001600160a01b031633146109985760405162461bcd60e51b815260040161029e90610c31565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161029e565b610a0681610a50565b50565b60006001600160a01b038216610a315760405162461bcd60e51b815260040161029e90610c66565b506001600160a01b039081166000908152600760205260409020541690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600460205260408120546001600160a01b031680610b1a5760405162461bcd60e51b815260206004820152602c60248201527f43484652593a206163636f756e7450726f787954656d706c617465416464726560448201526b1cdcc81b9bdd08199bdd5b9960a21b606482015260840161029e565b60008160601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f095945050505050565b80356001600160a01b03811681146102d257600080fd5b600060208284031215610b9557600080fd5b610b9e82610b6c565b9392505050565b60008060408385031215610bb857600080fd5b610bc183610b6c565b946020939093013593505050565b600060208284031215610be157600080fd5b5035919050565b60208082526029908201527f43484652593a2061636f756e7450726f7879416464726573732073686f756c646040820152680206e6f7420626520360bc1b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601e908201527f43484652593a20616464726573732073686f756c64206e6f7420626520300000604082015260600190565b60008219821115610cbe57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220d00d44acf4f09df374040b6203804687efa57a72d3ad74a3e0272c281a4fe2e064736f6c63430008060033

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