ETH Price: $3,264.35 (-0.33%)
Gas: 2 Gwei

Contract

0xd6aB735E3E2A1dd7deae5959D868057C284CecBc
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy Vesting119962082021-03-08 6:18:431238 days ago1615184323IN
0xd6aB735E...C284CecBc
0 ETH0.07341796110
Deploy Vesting119960102021-03-08 5:34:321238 days ago1615181672IN
0xd6aB735E...C284CecBc
0 ETH0.07341796110
Deploy Vesting119959322021-03-08 5:15:451238 days ago1615180545IN
0xd6aB735E...C284CecBc
0 ETH0.0667424100
Deploy Vesting119958282021-03-08 4:57:071238 days ago1615179427IN
0xd6aB735E...C284CecBc
0 ETH0.07341796110
Deploy Vesting119957782021-03-08 4:47:381238 days ago1615178858IN
0xd6aB735E...C284CecBc
0 ETH0.00343123110
Deploy Vesting119957632021-03-08 4:45:231238 days ago1615178723IN
0xd6aB735E...C284CecBc
0 ETH0.0733876110
Deploy Vesting119957582021-03-08 4:43:551238 days ago1615178635IN
0xd6aB735E...C284CecBc
0 ETH0.07341796110
Deploy Vesting119957512021-03-08 4:42:021238 days ago1615178522IN
0xd6aB735E...C284CecBc
0 ETH0.07340212110
Deploy Vesting119957352021-03-08 4:37:381238 days ago1615178258IN
0xd6aB735E...C284CecBc
0 ETH0.07341664110
Deploy Vesting119957252021-03-08 4:35:571238 days ago1615178157IN
0xd6aB735E...C284CecBc
0 ETH0.0667424100
Deploy Vesting119955202021-03-08 3:51:451238 days ago1615175505IN
0xd6aB735E...C284CecBc
0 ETH0.08009232120
Deploy Vesting119955072021-03-08 3:48:461238 days ago1615175326IN
0xd6aB735E...C284CecBc
0 ETH0.08009232120
Deploy Vesting119954952021-03-08 3:45:511238 days ago1615175151IN
0xd6aB735E...C284CecBc
0 ETH0.08009232120
Deploy Vesting119954792021-03-08 3:42:041238 days ago1615174924IN
0xd6aB735E...C284CecBc
0 ETH0.08009232120
Deploy Vesting119954572021-03-08 3:35:151238 days ago1615174515IN
0xd6aB735E...C284CecBc
0 ETH0.08009088120
Deploy Vesting119954332021-03-08 3:29:501238 days ago1615174190IN
0xd6aB735E...C284CecBc
0 ETH0.08009088120
Deploy Vesting119954132021-03-08 3:27:281238 days ago1615174048IN
0xd6aB735E...C284CecBc
0 ETH0.08009088120
Deploy Vesting119953972021-03-08 3:23:561238 days ago1615173836IN
0xd6aB735E...C284CecBc
0 ETH0.08009088120
Deploy Vesting119942122021-03-07 23:02:131238 days ago1615158133IN
0xd6aB735E...C284CecBc
0 ETH0.0834115125
Deploy Vesting119942072021-03-07 23:00:101238 days ago1615158010IN
0xd6aB735E...C284CecBc
0 ETH0.083413125
Deploy Vesting119941082021-03-07 22:35:411238 days ago1615156541IN
0xd6aB735E...C284CecBc
0 ETH0.0667436100
Deploy Vesting119937752021-03-07 21:27:111239 days ago1615152431IN
0xd6aB735E...C284CecBc
0 ETH0.0667304100
Deploy Vesting119937622021-03-07 21:23:561239 days ago1615152236IN
0xd6aB735E...C284CecBc
0 ETH0.066716100
Deploy Vesting119937512021-03-07 21:21:111239 days ago1615152071IN
0xd6aB735E...C284CecBc
0 ETH0.0533843280
Deploy Vesting119937322021-03-07 21:18:171239 days ago1615151897IN
0xd6aB735E...C284CecBc
0 ETH0.0634064295
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
119962082021-03-08 6:18:431238 days ago1615184323
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119960102021-03-08 5:34:321238 days ago1615181672
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119959322021-03-08 5:15:451238 days ago1615180545
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119958282021-03-08 4:57:071238 days ago1615179427
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119957632021-03-08 4:45:231238 days ago1615178723
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119957582021-03-08 4:43:551238 days ago1615178635
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119957512021-03-08 4:42:021238 days ago1615178522
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119957352021-03-08 4:37:381238 days ago1615178258
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119957252021-03-08 4:35:571238 days ago1615178157
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119955202021-03-08 3:51:451238 days ago1615175505
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119955072021-03-08 3:48:461238 days ago1615175326
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119954952021-03-08 3:45:511238 days ago1615175151
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119954792021-03-08 3:42:041238 days ago1615174924
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119954572021-03-08 3:35:151238 days ago1615174515
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119954332021-03-08 3:29:501238 days ago1615174190
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119954132021-03-08 3:27:281238 days ago1615174048
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119953972021-03-08 3:23:561238 days ago1615173836
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119942122021-03-07 23:02:131238 days ago1615158133
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119942072021-03-07 23:00:101238 days ago1615158010
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119941082021-03-07 22:35:411238 days ago1615156541
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119937752021-03-07 21:27:111239 days ago1615152431
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119937622021-03-07 21:23:561239 days ago1615152236
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119937512021-03-07 21:21:111239 days ago1615152071
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119937322021-03-07 21:18:171239 days ago1615151897
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
119937112021-03-07 21:14:041239 days ago1615151644
0xd6aB735E...C284CecBc
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VestingFactory

Compiler Version
v0.7.3+commit.9bfce1f6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : VestingFactory.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.7.3;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
import "../utils/CloneFactory.sol";
import "../interfaces/IVesting.sol";

/**
 * @dev Deploys new vesting contracts
 */
contract VestingFactory is CloneFactory, Ownable {

    using SafeMath for uint256;

    event Created(address beneficiary, address vestingContract);

    /// @dev implementation address of Token Vesting
    address private implementation;

    /// @dev Address to Token Vesting map
    mapping(address => address) vestings;

    /// @dev Deploys a new contract instance and sets custom vesting details
    /// Throws if the owner already have a Token Vesting contract
    function deployVesting(
        uint256[] memory periods,
        uint256[] memory tokenAmounts,
        address beneficiary,
        address token
    ) external onlyOwner {
        require(implementation != address(0));
        require(
            vestings[beneficiary] == address(0),
            "beneficiary exists"
        );
        require(periods.length == tokenAmounts.length, "Length mismatch");

        address _vesting = address(uint160(createClone(implementation)));
        require(IVesting(_vesting).initialize(periods, tokenAmounts, beneficiary, token), "!Initialized");

        vestings[beneficiary] = _vesting;

        emit Created(beneficiary, _vesting);
    }

    /// @dev Change the address implementation of the Token Vesting
    /// @param _impl new implementation address of Token Vesting
    function setImplementation(address _impl) external onlyOwner {
        implementation = _impl;
    }

    /// @dev get token vesting implementation address
    function getImplementation() external view returns(address) {
        return implementation;
    }

    /// @dev get vesting contract address for a given beneficiary
    function getVestingContract(address beneficiary) external view returns(address) {
        return address(vestings[beneficiary]);
    }

    /// @notice Fetch amount that can be currently released by a certain address
    function releaseableAmount(address beneficiary) external view returns(uint) {
        IVesting _vesting = IVesting(vestings[beneficiary]);

        (uint releasedPeriods, uint totalPeriods,,,) = _vesting.getGlobalData();

        uint256 amount = 0;
        for (uint256 i = releasedPeriods; i < totalPeriods; i++) {
            (uint vestingAmount, uint timestamp) = _vesting.getPeriodData(i);
            if (timestamp <= block.timestamp) {
                amount = amount.add(vestingAmount);
            }
            else {
                break;
            }
        }
        return amount;
    }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../GSN/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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 6 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
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) {
        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;
    }
}

File 4 of 6 : CloneFactory.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

/*
The MIT License (MIT)

Copyright (c) 2018 Murray Software, LLC.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
//solhint-disable max-line-length
//solhint-disable no-inline-assembly

contract CloneFactory {

  function createClone(address target) internal returns (address result) {
    bytes20 targetBytes = bytes20(target);
    assembly {
      let clone := mload(0x40)
      mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)
      mstore(add(clone, 0x14), targetBytes)
      mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)
      result := create(0, clone, 0x37)
    }
  }

  function isClone(address target, address query) internal view returns (bool result) {
    bytes20 targetBytes = bytes20(target);
    assembly {
      let clone := mload(0x40)
      mstore(clone, 0x363d3d373d3d3d363d7300000000000000000000000000000000000000000000)
      mstore(add(clone, 0xa), targetBytes)
      mstore(add(clone, 0x1e), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)

      let other := add(clone, 0x40)
      extcodecopy(query, other, 0, 0x2d)
      result := and(
        eq(mload(clone), mload(other)),
        eq(mload(add(clone, 0xd)), mload(add(other, 0xd)))
      )
    }
  }
}

File 5 of 6 : IVesting.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;

interface IVesting {
    function initialize(
        uint256[] memory periods,
        uint256[] memory tokenAmounts,
        address beneficiary,
        address token
    ) external returns(bool);

    function release() external;

    function getPeriodData(uint index) external view returns(uint amount, uint timestamp);
    function getGlobalData() 
        external 
        view 
        returns(uint releasedPeriods, uint totalPeriods, uint totalReleased, address beneficiary, address token);

}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"address","name":"vestingContract","type":"address"}],"name":"Created","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"},{"inputs":[{"internalType":"uint256[]","name":"periods","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"deployVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"getVestingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"releaseableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_impl","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610a738061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaf10f421161005b578063aaf10f4214610119578063bcf6e3ac14610121578063d784d4261461025e578063f2fde38b1461028457610088565b8063327aede71461008d57806342e16161146100cf578063715018a6146101075780638da5cb5b14610111575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b03166102aa565b604080516001600160a01b039092168252519081900360200190f35b6100f5600480360360208110156100e557600080fd5b50356001600160a01b03166102c8565b60408051918252519081900360200190f35b61010f610415565b005b6100b36104b7565b6100b36104c6565b61010f6004803603608081101561013757600080fd5b81019060208101813564010000000081111561015257600080fd5b82018360208201111561016457600080fd5b8035906020019184602083028401116401000000008311171561018657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101d657600080fd5b8201836020820111156101e857600080fd5b8035906020019184602083028401116401000000008311171561020a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506104d59050565b61010f6004803603602081101561027457600080fd5b50356001600160a01b03166107ce565b61010f6004803603602081101561029a57600080fd5b50356001600160a01b0316610848565b6001600160a01b039081166000908152600260205260409020541690565b6001600160a01b03808216600090815260026020526040808220548151636a03402160e01b8152915192931691839182918491636a0340219160048083019260a0929190829003018186803b15801561032057600080fd5b505afa158015610334573d6000803e3d6000fd5b505050506040513d60a081101561034a57600080fd5b50805160209091015190925090506000825b8281101561040b57600080866001600160a01b031663fc875ece846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156103aa57600080fd5b505afa1580156103be573d6000803e3d6000fd5b505050506040513d60408110156103d457600080fd5b50805160209091015190925090504281116103fa576103f38483610940565b9350610401565b505061040b565b505060010161035c565b5095945050505050565b61041d6109a1565b6000546001600160a01b0390811691161461046d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001546001600160a01b031690565b6104dd6109a1565b6000546001600160a01b0390811691161461052d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b6001546001600160a01b031661054257600080fd5b6001600160a01b0382811660009081526002602052604090205416156105a4576040805162461bcd60e51b815260206004820152601260248201527162656e65666963696172792065786973747360701b604482015290519081900360640190fd5b82518451146105ec576040805162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b600154600090610604906001600160a01b03166109a5565b9050806001600160a01b031663966ee9a3868686866040518563ffffffff1660e01b8152600401808060200180602001856001600160a01b03168152602001846001600160a01b03168152602001838103835287818151815260200191508051906020019060200280838360005b8381101561068a578181015183820152602001610672565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106c95781810151838201526020016106b1565b505050509050019650505050505050602060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d602081101561071c57600080fd5b505161075e576040805162461bcd60e51b815260206004820152600c60248201526b08525b9a5d1a585b1a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0383811660008181526002602090815260409182902080546001600160a01b0319169486169485179055815192835282019290925281517f587ece4cd19692c5be1a4184503d607d45542d2aca0698c0068f52e09ccb541c929181900390910190a15050505050565b6107d66109a1565b6000546001600160a01b03908116911614610826576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6108506109a1565b6000546001600160a01b039081169116146108a0576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e55760405162461bcd60e51b81526004018080602001828103825260268152602001806109f86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008282018381101561099a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f094935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212208ff17622f41c9d511bcea71a927d6fbf0282f7b007450804bbe90580360c44f264736f6c63430007030033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063aaf10f421161005b578063aaf10f4214610119578063bcf6e3ac14610121578063d784d4261461025e578063f2fde38b1461028457610088565b8063327aede71461008d57806342e16161146100cf578063715018a6146101075780638da5cb5b14610111575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b03166102aa565b604080516001600160a01b039092168252519081900360200190f35b6100f5600480360360208110156100e557600080fd5b50356001600160a01b03166102c8565b60408051918252519081900360200190f35b61010f610415565b005b6100b36104b7565b6100b36104c6565b61010f6004803603608081101561013757600080fd5b81019060208101813564010000000081111561015257600080fd5b82018360208201111561016457600080fd5b8035906020019184602083028401116401000000008311171561018657600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101d657600080fd5b8201836020820111156101e857600080fd5b8035906020019184602083028401116401000000008311171561020a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506104d59050565b61010f6004803603602081101561027457600080fd5b50356001600160a01b03166107ce565b61010f6004803603602081101561029a57600080fd5b50356001600160a01b0316610848565b6001600160a01b039081166000908152600260205260409020541690565b6001600160a01b03808216600090815260026020526040808220548151636a03402160e01b8152915192931691839182918491636a0340219160048083019260a0929190829003018186803b15801561032057600080fd5b505afa158015610334573d6000803e3d6000fd5b505050506040513d60a081101561034a57600080fd5b50805160209091015190925090506000825b8281101561040b57600080866001600160a01b031663fc875ece846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156103aa57600080fd5b505afa1580156103be573d6000803e3d6000fd5b505050506040513d60408110156103d457600080fd5b50805160209091015190925090504281116103fa576103f38483610940565b9350610401565b505061040b565b505060010161035c565b5095945050505050565b61041d6109a1565b6000546001600160a01b0390811691161461046d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001546001600160a01b031690565b6104dd6109a1565b6000546001600160a01b0390811691161461052d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b6001546001600160a01b031661054257600080fd5b6001600160a01b0382811660009081526002602052604090205416156105a4576040805162461bcd60e51b815260206004820152601260248201527162656e65666963696172792065786973747360701b604482015290519081900360640190fd5b82518451146105ec576040805162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b600154600090610604906001600160a01b03166109a5565b9050806001600160a01b031663966ee9a3868686866040518563ffffffff1660e01b8152600401808060200180602001856001600160a01b03168152602001846001600160a01b03168152602001838103835287818151815260200191508051906020019060200280838360005b8381101561068a578181015183820152602001610672565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156106c95781810151838201526020016106b1565b505050509050019650505050505050602060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d602081101561071c57600080fd5b505161075e576040805162461bcd60e51b815260206004820152600c60248201526b08525b9a5d1a585b1a5e995960a21b604482015290519081900360640190fd5b6001600160a01b0383811660008181526002602090815260409182902080546001600160a01b0319169486169485179055815192835282019290925281517f587ece4cd19692c5be1a4184503d607d45542d2aca0698c0068f52e09ccb541c929181900390910190a15050505050565b6107d66109a1565b6000546001600160a01b03908116911614610826576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6108506109a1565b6000546001600160a01b039081169116146108a0576040805162461bcd60e51b81526020600482018190526024820152600080516020610a1e833981519152604482015290519081900360640190fd5b6001600160a01b0381166108e55760405162461bcd60e51b81526004018080602001828103825260268152602001806109f86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008282018381101561099a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6000808260601b9050604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528160148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f094935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212208ff17622f41c9d511bcea71a927d6fbf0282f7b007450804bbe90580360c44f264736f6c63430007030033

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.