ETH Price: $3,414.22 (-1.22%)
Gas: 6 Gwei

Contract

0x699128aC8026E91402200a977eb749116A837797
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Unlock Token192345092024-02-15 16:25:47138 days ago1708014347IN
0x699128aC...16A837797
0 ETH0.0028674134.57221584
Unlock Token189905022024-01-12 11:25:11172 days ago1705058711IN
0x699128aC...16A837797
0 ETH0.0016080826.93380074
Unlock Token188406622023-12-22 10:02:47193 days ago1703239367IN
0x699128aC...16A837797
0 ETH0.004908838.78395193
Add Address Info...188406452023-12-22 9:59:23193 days ago1703239163IN
0x699128aC...16A837797
0 ETH0.002073838.08287956
Unlock Token188402482023-12-22 8:38:59193 days ago1703234339IN
0x699128aC...16A837797
0 ETH0.0035466732.39918777
Unlock Token188383752023-12-22 2:20:23193 days ago1703211623IN
0x699128aC...16A837797
0 ETH0.0023282125.20591196
Unlock Token188383672023-12-22 2:18:47193 days ago1703211527IN
0x699128aC...16A837797
0 ETH0.0031949325.24279638
Unlock Token188373702023-12-21 22:58:11193 days ago1703199491IN
0x699128aC...16A837797
0 ETH0.0039557231.25375025
Unlock Token188373452023-12-21 22:53:11193 days ago1703199191IN
0x699128aC...16A837797
0 ETH0.0031197728.4993976
Unlock Token188373192023-12-21 22:47:59193 days ago1703198879IN
0x699128aC...16A837797
0 ETH0.0041882233.09067561
Unlock Token188370892023-12-21 22:01:47193 days ago1703196107IN
0x699128aC...16A837797
0 ETH0.003468237.54773101
Unlock Token188369392023-12-21 21:31:47193 days ago1703194307IN
0x699128aC...16A837797
0 ETH0.0031197733.77553483
Unlock Token188368482023-12-21 21:13:11194 days ago1703193191IN
0x699128aC...16A837797
0 ETH0.0038380735.0611174
Unlock Token188368362023-12-21 21:10:47194 days ago1703193047IN
0x699128aC...16A837797
0 ETH0.0032665335.36438209
Unlock Token188367832023-12-21 21:00:11194 days ago1703192411IN
0x699128aC...16A837797
0 ETH0.0044861635.44469921
Unlock Token188367642023-12-21 20:56:23194 days ago1703192183IN
0x699128aC...16A837797
0 ETH0.0039458636.04584043
Unlock Token188367422023-12-21 20:51:59194 days ago1703191919IN
0x699128aC...16A837797
0 ETH0.0032854830.01316564
Unlock Token188367032023-12-21 20:44:11194 days ago1703191451IN
0x699128aC...16A837797
0 ETH0.0046956637.09993549
Unlock Token188366292023-12-21 20:29:11194 days ago1703190551IN
0x699128aC...16A837797
0 ETH0.0035062132.02955004
Unlock Token188364422023-12-21 19:51:47194 days ago1703188307IN
0x699128aC...16A837797
0 ETH0.0049531639.13440198
Unlock Token188364292023-12-21 19:49:11194 days ago1703188151IN
0x699128aC...16A837797
0 ETH0.0036798533.61578866
Unlock Token188363132023-12-21 19:25:59194 days ago1703186759IN
0x699128aC...16A837797
0 ETH0.0057669645.5641837
Unlock Token188362102023-12-21 19:05:23194 days ago1703185523IN
0x699128aC...16A837797
0 ETH0.0049592939.1828378
Unlock Token188361602023-12-21 18:55:23194 days ago1703184923IN
0x699128aC...16A837797
0 ETH0.0050867540.18993095
Unlock Token188360742023-12-21 18:37:47194 days ago1703183867IN
0x699128aC...16A837797
0 ETH0.005012639.60407933
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VictoriaVRVesting

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Vesting.sol
/**
 *Submitted for verification at Etherscan.io on 2022-06-02
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.14;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract VictoriaVRVesting {

    using SafeMath for uint256;

    IERC20 public token = IERC20(0x7d5121505149065b562C789A0145eD750e6E8cdD);

    address public owner;

    uint256[] public unlockTimestamps = [1669989600, 1672668000, 1675346400, 1677765600, 1680444000, 1683036000, 1685714400, 1688306400, 1690984800, 1693663200, 1696255200, 1698933600];

    struct UnlockInfo {
        uint256 amount;
        uint256 unlockTotal;
    }

    mapping(address => UnlockInfo) public userUnlockInfos;

    event EventUnlockToken(address indexed _address, uint256 _amount);

    modifier onlyOwner() {
        require(
            msg.sender == owner,
            "You don't have permission."
        );
        _;
    }

    constructor() public {
        owner = msg.sender;
    }

    function addAddressInfos(address[] calldata _addresses, uint256[] calldata _amounts) public onlyOwner {
        for (uint i; i < _addresses.length; i++) {
            addAddressInfo(_addresses[i], _amounts[i]);
        }
    }

    function addAddressInfosNoDecimals(address[] calldata _addresses, uint256[] calldata _amounts) public onlyOwner {
        for (uint i; i < _addresses.length; i++) {
            addAddressInfoNoDecimals(_addresses[i], _amounts[i]);
        }
    }

    function tokenDecimals(uint256 _amount) public view returns(uint256) {
        return _amount * (10 ** uint256(token.decimals()));
    }

    function tokenBalanceOf() public view returns(uint256) {
        return token.balanceOf(address(this));
    }
    
    function addAddressInfoNoDecimals(address _address, uint256 _amount) public onlyOwner {
        addAddressInfo(_address, tokenDecimals(_amount));
    }

    function addAddressInfo(address _address, uint256 _amount) public onlyOwner {
        UnlockInfo storage ui = userUnlockInfos[_address];
        require(
            ui.amount == 0,
            "This wallet has been added to the unlock contract."
        );
        ui.amount = _amount;
    }

    function deleteAddressInfo(address _address) public onlyOwner {
        UnlockInfo storage ui = userUnlockInfos[_address];
        require(
            ui.amount > 0,
            "This wallet is not in the current unlocking plan."
        );
        delete userUnlockInfos[_address];
    }

    function blockTimestamp() public virtual view returns(uint256) {
        return block.timestamp;
    }

    function getAvailableMonth() public virtual view returns(uint256) {
        uint i = 0;
        while (i < unlockTimestamps.length && blockTimestamp() >= unlockTimestamps[i]) i++;
        return i;
    }

    function unlockToken() public {
        uint256 availableMonth = getAvailableMonth();
        require(
            availableMonth > 0,
            "Unlocking time has not started yet."
        );
        UnlockInfo storage ui = userUnlockInfos[msg.sender];
        require(
            ui.amount > 0,
            "This wallet is not in the current unlocking plan."
        );
        require(
            ui.amount > ui.unlockTotal,
            "The user has no available unlocking limit."
        );
        uint256 availableAmount = availableMonth.mul(ui.amount.div(unlockTimestamps.length));
        if(availableAmount > ui.amount) {
            availableAmount = ui.amount;
        }
        availableAmount = availableAmount.sub(ui.unlockTotal);
        require(
            availableAmount > 0,
            "The user has no available unlocking limit."
        );
        ui.unlockTotal = ui.unlockTotal.add(availableAmount);
        _safeTransfer(msg.sender, availableAmount);
    }

    function _safeTransfer(address _address, uint256 _amount) private {
        token.transfer(_address, _amount);
        emit EventUnlockToken(_address, _amount);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"EventUnlockToken","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addAddressInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addAddressInfoNoDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"addAddressInfos","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"addAddressInfosNoDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"deleteAddressInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAvailableMonth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"tokenDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"unlockTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userUnlockInfos","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"unlockTotal","type":"uint256"}],"stateMutability":"view","type":"function"}]

600080546001600160a01b031916737d5121505149065b562c789a0145ed750e6e8cdd17905561020060405263638a04e060809081526363b2e36060a0526363dbc1e060c052636400abe060e0526364298a6061010052636451176061012052636479f5e0610140526364a182e0610160526364ca6160610180526364f33fe06101a05263651acce06101c052636543ab606101e0526100a390600290600c6100c8565b503480156100b057600080fd5b50600180546001600160a01b03191633179055610130565b82805482825590600052602060002090810192821561010b579160200282015b8281111561010b578251829063ffffffff169055916020019190600101906100e8565b5061011792915061011b565b5090565b5b80821115610117576000815560010161011c565b610e8e8061013f6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adb618321161008c578063e58a386b11610066578063e58a386b146101e0578063e5fb067d146101e8578063ed28a92e146101fb578063fc0c546a1461020e57600080fd5b8063adb61832146101bf578063d6bdbf78146101c5578063dd14ad41146101cd57600080fd5b80638da5cb5b116100c85780638da5cb5b146101325780639224747d1461015d5780639d1aaa0c14610170578063a0a129ea1461018357600080fd5b806318a24b5b146100ef57806385af4c4e146100f95780638609f4581461010c575b600080fd5b6100f7610221565b005b6100f7610107366004610a18565b610360565b61011f61011a366004610a42565b61039b565b6040519081526020015b60405180910390f35b600154610145906001600160a01b031681565b6040516001600160a01b039091168152602001610129565b61011f61016b366004610a42565b610431565b6100f761017e366004610a18565b610452565b6101aa610191366004610a5b565b6003602052600090815260409020805460019091015482565b60408051928352602083019190915201610129565b4261011f565b61011f610502565b6100f76101db366004610a5b565b610574565b61011f6105f5565b6100f76101f6366004610ac2565b610649565b6100f7610209366004610ac2565b6106df565b600054610145906001600160a01b031681565b600061022b6105f5565b90506000811161028e5760405162461bcd60e51b815260206004820152602360248201527f556e6c6f636b696e672074696d6520686173206e6f742073746172746564207960448201526232ba1760e91b60648201526084015b60405180910390fd5b33600090815260036020526040902080546102bb5760405162461bcd60e51b815260040161028590610b2e565b60018101548154116102df5760405162461bcd60e51b815260040161028590610b7f565b60025481546000916102fb916102f49161076e565b84906107b7565b825490915081111561030b575080545b600182015461031b908290610839565b90506000811161033d5760405162461bcd60e51b815260040161028590610b7f565b600182015461034c908261087b565b600183015561035b33826108da565b505050565b6001546001600160a01b0316331461038a5760405162461bcd60e51b815260040161028590610bc9565b6103978261017e8361039b565b5050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104139190610c00565b6104219060ff16600a610d1d565b61042b9083610d29565b92915050565b6002818154811061044157600080fd5b600091825260209091200154905081565b6001546001600160a01b0316331461047c5760405162461bcd60e51b815260040161028590610bc9565b6001600160a01b03821660009081526003602052604090208054156104fe5760405162461bcd60e51b815260206004820152603260248201527f546869732077616c6c657420686173206265656e20616464656420746f20746860448201527132903ab73637b1b59031b7b73a3930b1ba1760711b6064820152608401610285565b5550565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190610d48565b905090565b6001546001600160a01b0316331461059e5760405162461bcd60e51b815260040161028590610bc9565b6001600160a01b038116600090815260036020526040902080546105d45760405162461bcd60e51b815260040161028590610b2e565b506001600160a01b0316600090815260036020526040812081815560010155565b6000805b6002548110801561062d57506002818154811061061857610618610d61565b906000526020600020015461062a4290565b10155b15610644578061063c81610d77565b9150506105f9565b919050565b6001546001600160a01b031633146106735760405162461bcd60e51b815260040161028590610bc9565b60005b838110156106d8576106c685858381811061069357610693610d61565b90506020020160208101906106a89190610a5b565b8484848181106106ba576106ba610d61565b90506020020135610452565b806106d081610d77565b915050610676565b5050505050565b6001546001600160a01b031633146107095760405162461bcd60e51b815260040161028590610bc9565b60005b838110156106d85761075c85858381811061072957610729610d61565b905060200201602081019061073e9190610a5b565b84848481811061075057610750610d61565b90506020020135610360565b8061076681610d77565b91505061070c565b60006107b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610999565b9392505050565b6000826000036107c95750600061042b565b60006107d58385610d29565b9050826107e28583610d90565b146107b05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610285565b60006107b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109d0565b6000806108888385610db2565b9050838110156107b05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610285565b60005460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190610dca565b50816001600160a01b03167f4b79452661fdab199677c3f8f7f9381f1744f449fe2af79c630ba582946d845b8260405161098d91815260200190565b60405180910390a25050565b600081836109ba5760405162461bcd60e51b81526004016102859190610dec565b5060006109c78486610d90565b95945050505050565b600081848411156109f45760405162461bcd60e51b81526004016102859190610dec565b5060006109c78486610e41565b80356001600160a01b038116811461064457600080fd5b60008060408385031215610a2b57600080fd5b610a3483610a01565b946020939093013593505050565b600060208284031215610a5457600080fd5b5035919050565b600060208284031215610a6d57600080fd5b6107b082610a01565b60008083601f840112610a8857600080fd5b50813567ffffffffffffffff811115610aa057600080fd5b6020830191508360208260051b8501011115610abb57600080fd5b9250929050565b60008060008060408587031215610ad857600080fd5b843567ffffffffffffffff80821115610af057600080fd5b610afc88838901610a76565b90965094506020870135915080821115610b1557600080fd5b50610b2287828801610a76565b95989497509550505050565b60208082526031908201527f546869732077616c6c6574206973206e6f7420696e207468652063757272656e6040820152703a103ab73637b1b5b4b73390383630b71760791b606082015260800190565b6020808252602a908201527f546865207573657220686173206e6f20617661696c61626c6520756e6c6f636b60408201526934b733903634b6b4ba1760b11b606082015260800190565b6020808252601a908201527f596f7520646f6e27742068617665207065726d697373696f6e2e000000000000604082015260600190565b600060208284031215610c1257600080fd5b815160ff811681146107b057600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610c74578160001904821115610c5a57610c5a610c23565b80851615610c6757918102915b93841c9390800290610c3e565b509250929050565b600082610c8b5750600161042b565b81610c985750600061042b565b8160018114610cae5760028114610cb857610cd4565b600191505061042b565b60ff841115610cc957610cc9610c23565b50506001821b61042b565b5060208310610133831016604e8410600b8410161715610cf7575081810a61042b565b610d018383610c39565b8060001904821115610d1557610d15610c23565b029392505050565b60006107b08383610c7c565b6000816000190483118215151615610d4357610d43610c23565b500290565b600060208284031215610d5a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d8957610d89610c23565b5060010190565b600082610dad57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610dc557610dc5610c23565b500190565b600060208284031215610ddc57600080fd5b815180151581146107b057600080fd5b600060208083528351808285015260005b81811015610e1957858101830151858201604001528201610dfd565b81811115610e2b576000604083870101525b50601f01601f1916929092016040019392505050565b600082821015610e5357610e53610c23565b50039056fea2646970667358221220727e7bd44dd319d2b4c4343ab8e02667463fa502782a731e44b97eb4736bbd8d64736f6c634300080e0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063adb618321161008c578063e58a386b11610066578063e58a386b146101e0578063e5fb067d146101e8578063ed28a92e146101fb578063fc0c546a1461020e57600080fd5b8063adb61832146101bf578063d6bdbf78146101c5578063dd14ad41146101cd57600080fd5b80638da5cb5b116100c85780638da5cb5b146101325780639224747d1461015d5780639d1aaa0c14610170578063a0a129ea1461018357600080fd5b806318a24b5b146100ef57806385af4c4e146100f95780638609f4581461010c575b600080fd5b6100f7610221565b005b6100f7610107366004610a18565b610360565b61011f61011a366004610a42565b61039b565b6040519081526020015b60405180910390f35b600154610145906001600160a01b031681565b6040516001600160a01b039091168152602001610129565b61011f61016b366004610a42565b610431565b6100f761017e366004610a18565b610452565b6101aa610191366004610a5b565b6003602052600090815260409020805460019091015482565b60408051928352602083019190915201610129565b4261011f565b61011f610502565b6100f76101db366004610a5b565b610574565b61011f6105f5565b6100f76101f6366004610ac2565b610649565b6100f7610209366004610ac2565b6106df565b600054610145906001600160a01b031681565b600061022b6105f5565b90506000811161028e5760405162461bcd60e51b815260206004820152602360248201527f556e6c6f636b696e672074696d6520686173206e6f742073746172746564207960448201526232ba1760e91b60648201526084015b60405180910390fd5b33600090815260036020526040902080546102bb5760405162461bcd60e51b815260040161028590610b2e565b60018101548154116102df5760405162461bcd60e51b815260040161028590610b7f565b60025481546000916102fb916102f49161076e565b84906107b7565b825490915081111561030b575080545b600182015461031b908290610839565b90506000811161033d5760405162461bcd60e51b815260040161028590610b7f565b600182015461034c908261087b565b600183015561035b33826108da565b505050565b6001546001600160a01b0316331461038a5760405162461bcd60e51b815260040161028590610bc9565b6103978261017e8361039b565b5050565b60008060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104139190610c00565b6104219060ff16600a610d1d565b61042b9083610d29565b92915050565b6002818154811061044157600080fd5b600091825260209091200154905081565b6001546001600160a01b0316331461047c5760405162461bcd60e51b815260040161028590610bc9565b6001600160a01b03821660009081526003602052604090208054156104fe5760405162461bcd60e51b815260206004820152603260248201527f546869732077616c6c657420686173206265656e20616464656420746f20746860448201527132903ab73637b1b59031b7b73a3930b1ba1760711b6064820152608401610285565b5550565b600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561054b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056f9190610d48565b905090565b6001546001600160a01b0316331461059e5760405162461bcd60e51b815260040161028590610bc9565b6001600160a01b038116600090815260036020526040902080546105d45760405162461bcd60e51b815260040161028590610b2e565b506001600160a01b0316600090815260036020526040812081815560010155565b6000805b6002548110801561062d57506002818154811061061857610618610d61565b906000526020600020015461062a4290565b10155b15610644578061063c81610d77565b9150506105f9565b919050565b6001546001600160a01b031633146106735760405162461bcd60e51b815260040161028590610bc9565b60005b838110156106d8576106c685858381811061069357610693610d61565b90506020020160208101906106a89190610a5b565b8484848181106106ba576106ba610d61565b90506020020135610452565b806106d081610d77565b915050610676565b5050505050565b6001546001600160a01b031633146107095760405162461bcd60e51b815260040161028590610bc9565b60005b838110156106d85761075c85858381811061072957610729610d61565b905060200201602081019061073e9190610a5b565b84848481811061075057610750610d61565b90506020020135610360565b8061076681610d77565b91505061070c565b60006107b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610999565b9392505050565b6000826000036107c95750600061042b565b60006107d58385610d29565b9050826107e28583610d90565b146107b05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610285565b60006107b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109d0565b6000806108888385610db2565b9050838110156107b05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610285565b60005460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190610dca565b50816001600160a01b03167f4b79452661fdab199677c3f8f7f9381f1744f449fe2af79c630ba582946d845b8260405161098d91815260200190565b60405180910390a25050565b600081836109ba5760405162461bcd60e51b81526004016102859190610dec565b5060006109c78486610d90565b95945050505050565b600081848411156109f45760405162461bcd60e51b81526004016102859190610dec565b5060006109c78486610e41565b80356001600160a01b038116811461064457600080fd5b60008060408385031215610a2b57600080fd5b610a3483610a01565b946020939093013593505050565b600060208284031215610a5457600080fd5b5035919050565b600060208284031215610a6d57600080fd5b6107b082610a01565b60008083601f840112610a8857600080fd5b50813567ffffffffffffffff811115610aa057600080fd5b6020830191508360208260051b8501011115610abb57600080fd5b9250929050565b60008060008060408587031215610ad857600080fd5b843567ffffffffffffffff80821115610af057600080fd5b610afc88838901610a76565b90965094506020870135915080821115610b1557600080fd5b50610b2287828801610a76565b95989497509550505050565b60208082526031908201527f546869732077616c6c6574206973206e6f7420696e207468652063757272656e6040820152703a103ab73637b1b5b4b73390383630b71760791b606082015260800190565b6020808252602a908201527f546865207573657220686173206e6f20617661696c61626c6520756e6c6f636b60408201526934b733903634b6b4ba1760b11b606082015260800190565b6020808252601a908201527f596f7520646f6e27742068617665207065726d697373696f6e2e000000000000604082015260600190565b600060208284031215610c1257600080fd5b815160ff811681146107b057600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610c74578160001904821115610c5a57610c5a610c23565b80851615610c6757918102915b93841c9390800290610c3e565b509250929050565b600082610c8b5750600161042b565b81610c985750600061042b565b8160018114610cae5760028114610cb857610cd4565b600191505061042b565b60ff841115610cc957610cc9610c23565b50506001821b61042b565b5060208310610133831016604e8410600b8410161715610cf7575081810a61042b565b610d018383610c39565b8060001904821115610d1557610d15610c23565b029392505050565b60006107b08383610c7c565b6000816000190483118215151615610d4357610d43610c23565b500290565b600060208284031215610d5a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060018201610d8957610d89610c23565b5060010190565b600082610dad57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115610dc557610dc5610c23565b500190565b600060208284031215610ddc57600080fd5b815180151581146107b057600080fd5b600060208083528351808285015260005b81811015610e1957858101830151858201604001528201610dfd565b81811115610e2b576000604083870101525b50601f01601f1916929092016040019392505050565b600082821015610e5357610e53610c23565b50039056fea2646970667358221220727e7bd44dd319d2b4c4343ab8e02667463fa502782a731e44b97eb4736bbd8d64736f6c634300080e0033

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  ]

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.