ETH Price: $2,576.32 (-1.85%)

Contract

0x25FD39C407965724AdF515CA986dB62609E9a57D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Withdraw208583352024-09-29 19:17:3542 hrs ago1727637455IN
Yieldification: Yield Vester
0 ETH0.0015474913.33583373
Withdraw208480362024-09-28 8:48:113 days ago1727513291IN
Yieldification: Yield Vester
0 ETH0.000704897.60966635
Withdraw208479212024-09-28 8:25:113 days ago1727511911IN
Yieldification: Yield Vester
0 ETH0.00081098.75419212
Withdraw208479212024-09-28 8:25:113 days ago1727511911IN
Yieldification: Yield Vester
0 ETH0.00081098.75419212
Withdraw208478922024-09-28 8:19:113 days ago1727511551IN
Yieldification: Yield Vester
0 ETH0.000945898.62110862
Withdraw208196232024-09-24 9:41:237 days ago1727170883IN
Yieldification: Yield Vester
0 ETH0.0023918821.79774974
Withdraw208044632024-09-22 6:56:119 days ago1726988171IN
Yieldification: Yield Vester
0 ETH0.000971099.58525175
Withdraw208044602024-09-22 6:55:359 days ago1726988135IN
Yieldification: Yield Vester
0 ETH0.001193549.20155474
Withdraw207438752024-09-13 19:47:2317 days ago1726256843IN
Yieldification: Yield Vester
0 ETH0.00165315.06417757
Withdraw207438732024-09-13 19:46:5917 days ago1726256819IN
Yieldification: Yield Vester
0 ETH0.0016676715.19785371
Withdraw207438712024-09-13 19:46:3517 days ago1726256795IN
Yieldification: Yield Vester
0 ETH0.0020406116.08928187
Withdraw207290302024-09-11 18:02:2319 days ago1726077743IN
Yieldification: Yield Vester
0 ETH0.000347313.96298975
Withdraw207290262024-09-11 18:01:3519 days ago1726077695IN
Yieldification: Yield Vester
0 ETH0.000335313.62037854
Withdraw207289792024-09-11 17:52:1119 days ago1726077131IN
Yieldification: Yield Vester
0 ETH0.000331982.86286949
Withdraw207289742024-09-11 17:51:1119 days ago1726077071IN
Yieldification: Yield Vester
0 ETH0.000371353.20234334
Withdraw207272272024-09-11 12:00:1120 days ago1726056011IN
Yieldification: Yield Vester
0 ETH0.000266132.62669695
Withdraw207272232024-09-11 11:59:2320 days ago1726055963IN
Yieldification: Yield Vester
0 ETH0.000059762.52340588
Withdraw207272222024-09-11 11:59:1120 days ago1726055951IN
Yieldification: Yield Vester
0 ETH0.000301132.59513934
Withdraw207272192024-09-11 11:58:3520 days ago1726055915IN
Yieldification: Yield Vester
0 ETH0.00026712.63627351
Withdraw207272172024-09-11 11:58:1120 days ago1726055891IN
Yieldification: Yield Vester
0 ETH0.000310562.67636722
Withdraw207272162024-09-11 11:57:5920 days ago1726055879IN
Yieldification: Yield Vester
0 ETH0.000303982.6196239
Withdraw207272102024-09-11 11:56:4720 days ago1726055807IN
Yieldification: Yield Vester
0 ETH0.000335342.88992828
Withdraw207272082024-09-11 11:56:2320 days ago1726055783IN
Yieldification: Yield Vester
0 ETH0.00033082.85075548
Withdraw207271912024-09-11 11:52:5920 days ago1726055579IN
Yieldification: Yield Vester
0 ETH0.000238882.05860116
Withdraw206939922024-09-06 20:38:4724 days ago1725655127IN
Yieldification: Yield Vester
0 ETH0.000773727.63640992
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
152666382022-08-03 1:40:38790 days ago1659490838  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YDFVester

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : YDFVester.sol
/******************************************************************************************************
Yieldification Vesting Contract

Website: https://yieldification.com
Twitter: https://twitter.com/yieldification
Telegram: https://t.me/yieldification
******************************************************************************************************/

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

import '@openzeppelin/contracts/access/Ownable.sol';
import './interfaces/IYDF.sol';

contract YDFVester is Ownable {
  IYDF private _ydf;

  uint256 public fullyVestedPeriod = 90 days;
  uint256 public withdrawsPerPeriod = 10;

  struct TokenVest {
    uint256 start;
    uint256 end;
    uint256 totalWithdraws;
    uint256 withdrawsCompleted;
    uint256 amount;
  }
  mapping(address => TokenVest[]) public vests;
  address[] public stakeContracts;

  event CreateVest(address indexed user, uint256 amount);
  event Withdraw(address indexed user, uint256 index, uint256 amountWithdrawn);

  modifier onlyStake() {
    bool isStake;
    for (uint256 i = 0; i < stakeContracts.length; i++) {
      if (msg.sender == stakeContracts[i]) {
        isStake = true;
        break;
      }
    }
    require(isStake, 'not a staking contract');
    _;
  }

  constructor(address _token) {
    _ydf = IYDF(_token);
  }

  // we expect the staking contract (re: the owner) to transfer tokens to
  // this contract, so no need to transferFrom anywhere
  function createVest(address _user, uint256 _amount) external onlyStake {
    vests[_user].push(
      TokenVest({
        start: block.timestamp,
        end: block.timestamp + fullyVestedPeriod,
        totalWithdraws: withdrawsPerPeriod,
        withdrawsCompleted: 0,
        amount: _amount
      })
    );
    emit CreateVest(_user, _amount);
  }

  function withdraw(uint256 _index) external {
    address _user = msg.sender;
    TokenVest storage _vest = vests[_user][_index];
    require(_vest.amount > 0, 'vest does not exist');
    require(
      _vest.withdrawsCompleted < _vest.totalWithdraws,
      'already withdrew all tokens'
    );

    uint256 _tokensPerWithdrawPeriod = _vest.amount / _vest.totalWithdraws;
    uint256 _withdrawsAllowed = getWithdrawsAllowed(_user, _index);

    // make sure the calculated allowed amount doesn't exceed total amount for vest
    _withdrawsAllowed = _withdrawsAllowed > _vest.totalWithdraws
      ? _vest.totalWithdraws
      : _withdrawsAllowed;

    require(
      _vest.withdrawsCompleted < _withdrawsAllowed,
      'currently vesting, please wait for next withdrawable time period'
    );

    uint256 _withdrawsToComplete = _withdrawsAllowed - _vest.withdrawsCompleted;

    _vest.withdrawsCompleted = _withdrawsAllowed;
    _ydf.transfer(_user, _tokensPerWithdrawPeriod * _withdrawsToComplete);
    _ydf.addToBuyTracker(
      _user,
      _tokensPerWithdrawPeriod * _withdrawsToComplete
    );

    // clean up/remove vest entry if it's completed
    if (_vest.withdrawsCompleted == _vest.totalWithdraws) {
      vests[_user][_index] = vests[_user][vests[_user].length - 1];
      vests[_user].pop();
    }

    emit Withdraw(
      _user,
      _index,
      _tokensPerWithdrawPeriod * _withdrawsToComplete
    );
  }

  function getWithdrawsAllowed(address _user, uint256 _index)
    public
    view
    returns (uint256)
  {
    TokenVest memory _vest = vests[_user][_index];
    uint256 _secondsPerWithdrawPeriod = (_vest.end - _vest.start) /
      _vest.totalWithdraws;
    return (block.timestamp - _vest.start) / _secondsPerWithdrawPeriod;
  }

  function getUserVests(address _user)
    external
    view
    returns (TokenVest[] memory)
  {
    return vests[_user];
  }

  function getYDF() external view returns (address) {
    return address(_ydf);
  }

  function addStakingContract(address _contract) external onlyOwner {
    stakeContracts.push(_contract);
  }
}

File 2 of 6 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions 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 6 : IYDF.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import '@openzeppelin/contracts/interfaces/IERC20.sol';

/**
 * @dev YDF token interface
 */

interface IYDF is IERC20 {
  function addToBuyTracker(address _user, uint256 _amount) external;

  function burn(uint256 _amount) external;

  function stakeMintToVester(uint256 _amount) external;
}

File 4 of 6 : 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;
    }
}

File 5 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol)

pragma solidity ^0.8.0;

import "../token/ERC20/IERC20.sol";

File 6 of 6 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CreateVest","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountWithdrawn","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"addStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fullyVestedPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserVests","outputs":[{"components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"totalWithdraws","type":"uint256"},{"internalType":"uint256","name":"withdrawsCompleted","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct YDFVester.TokenVest[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getWithdrawsAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getYDF","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint256","name":"","type":"uint256"}],"name":"stakeContracts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"vests","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"totalWithdraws","type":"uint256"},{"internalType":"uint256","name":"withdrawsCompleted","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawsPerPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526276a700600255600a60035534801561001c57600080fd5b50604051610e10380380610e1083398101604081905261003b916100b9565b61004433610069565b600180546001600160a01b0319166001600160a01b03929092169190911790556100e9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100cb57600080fd5b81516001600160a01b03811681146100e257600080fd5b9392505050565b610d18806100f86000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c5780638da5cb5b116100665780638da5cb5b146101bc578063f0dc2c20146101cd578063f2fde38b146101e0578063f8f21e5d146101f357600080fd5b8063715018a61461016657806384a86e6d1461016e57806385b9a653146101a957600080fd5b80630cf516e1146100d45780632e1a7d4d146100fa578063466bac721461010f5780635351120f1461012f57806363fc60ec146101385780637108aabb1461015d575b600080fd5b6100e76100e2366004610b49565b610206565b6040519081526020015b60405180910390f35b61010d610108366004610b73565b6102ba565b005b61012261011d366004610b8c565b6106f3565b6040516100f19190610bae565b6100e760035481565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016100f1565b6100e760025481565b61010d61079a565b61018161017c366004610b49565b6107ae565b604080519586526020860194909452928401919091526060830152608082015260a0016100f1565b6101456101b7366004610b73565b6107fc565b6000546001600160a01b0316610145565b61010d6101db366004610b8c565b610826565b61010d6101ee366004610b8c565b610880565b61010d610201366004610b49565b6108f9565b6001600160a01b038216600090815260046020526040812080548291908490811061023357610233610c1c565b600091825260208083206040805160a08101825260059094029091018054808552600182015493850184905260028201549285018390526003820154606086015260049091015460808501529294509161028c91610c48565b6102969190610c5f565b825190915081906102a79042610c48565b6102b19190610c5f565b95945050505050565b3360008181526004602052604081208054849081106102db576102db610c1c565b90600052602060002090600502019050600081600401541161033a5760405162461bcd60e51b81526020600482015260136024820152721d995cdd08191bd95cc81b9bdd08195e1a5cdd606a1b60448201526064015b60405180910390fd5b80600201548160030154106103915760405162461bcd60e51b815260206004820152601b60248201527f616c726561647920776974686472657720616c6c20746f6b656e7300000000006044820152606401610331565b6000816002015482600401546103a79190610c5f565b905060006103b58486610206565b9050826002015481116103c857806103ce565b82600201545b90508083600301541061044b576040805162461bcd60e51b81526020600482015260248101919091527f63757272656e746c792076657374696e672c20706c656173652077616974206660448201527f6f72206e65787420776974686472617761626c652074696d6520706572696f646064820152608401610331565b600083600301548261045d9190610c48565b600385018390556001549091506001600160a01b031663a9059cbb866104838487610c81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156104c957600080fd5b505af11580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105019190610ca0565b506001546001600160a01b031663d547deed8661051e8487610c81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561056457600080fd5b505af1158015610578573d6000803e3d6000fd5b5050505083600201548460030154141561069d576001600160a01b038516600090815260046020526040902080546105b290600190610c48565b815481106105c2576105c2610c1c565b906000526020600020906005020160046000876001600160a01b03166001600160a01b03168152602001908152602001600020878154811061060657610606610c1c565b600091825260208083208454600590930201918255600180850154908301556002808501549083015560038085015490830155600493840154918401919091556001600160a01b0388168252919091526040902080548061066957610669610cc2565b6000828152602081206005600019909301928302018181556001810182905560028101829055600381018290556004015590555b6001600160a01b0385167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568876106d38487610c81565b6040805192835260208301919091520160405180910390a2505050505050565b6001600160a01b0381166000908152600460209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561078f57838290600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508152602001906001019061072b565b505050509050919050565b6107a2610a83565b6107ac6000610add565b565b600460205281600052604060002081815481106107ca57600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b6005818154811061080c57600080fd5b6000918252602090912001546001600160a01b0316905081565b61082e610a83565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0392909216919091179055565b610888610a83565b6001600160a01b0381166108ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b6108f681610add565b50565b6000805b600554811015610951576005818154811061091a5761091a610c1c565b6000918252602090912001546001600160a01b031633141561093f5760019150610951565b8061094981610cd8565b9150506108fd565b50806109985760405162461bcd60e51b81526020600482015260166024820152751b9bdd0818481cdd185ada5b99c818dbdb9d1c9858dd60521b6044820152606401610331565b60046000846001600160a01b03166001600160a01b031681526020019081526020016000206040518060a00160405280428152602001600254426109dc9190610cf3565b8152600380546020808401919091526000604080850182905260609485018990528654600180820189559783529183902086516005909302019182558583015196820196909655848601516002820155928401519183019190915560809092015160049091015590518381526001600160a01b038516917f3264e4ec12d4ef5355907238cfb33a16442d78ae7c1909d87bb40b07cc7e97db910160405180910390a2505050565b6000546001600160a01b031633146107ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610331565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610b4457600080fd5b919050565b60008060408385031215610b5c57600080fd5b610b6583610b2d565b946020939093013593505050565b600060208284031215610b8557600080fd5b5035919050565b600060208284031215610b9e57600080fd5b610ba782610b2d565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610c0f5781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101610bcb565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610c5a57610c5a610c32565b500390565b600082610c7c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c9b57610c9b610c32565b500290565b600060208284031215610cb257600080fd5b81518015158114610ba757600080fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415610cec57610cec610c32565b5060010190565b60008219821115610d0657610d06610c32565b50019056fea164736f6c6343000809000a00000000000000000000000030dcba0405004cf124045793e1933c798af9e66a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c5780638da5cb5b116100665780638da5cb5b146101bc578063f0dc2c20146101cd578063f2fde38b146101e0578063f8f21e5d146101f357600080fd5b8063715018a61461016657806384a86e6d1461016e57806385b9a653146101a957600080fd5b80630cf516e1146100d45780632e1a7d4d146100fa578063466bac721461010f5780635351120f1461012f57806363fc60ec146101385780637108aabb1461015d575b600080fd5b6100e76100e2366004610b49565b610206565b6040519081526020015b60405180910390f35b61010d610108366004610b73565b6102ba565b005b61012261011d366004610b8c565b6106f3565b6040516100f19190610bae565b6100e760035481565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016100f1565b6100e760025481565b61010d61079a565b61018161017c366004610b49565b6107ae565b604080519586526020860194909452928401919091526060830152608082015260a0016100f1565b6101456101b7366004610b73565b6107fc565b6000546001600160a01b0316610145565b61010d6101db366004610b8c565b610826565b61010d6101ee366004610b8c565b610880565b61010d610201366004610b49565b6108f9565b6001600160a01b038216600090815260046020526040812080548291908490811061023357610233610c1c565b600091825260208083206040805160a08101825260059094029091018054808552600182015493850184905260028201549285018390526003820154606086015260049091015460808501529294509161028c91610c48565b6102969190610c5f565b825190915081906102a79042610c48565b6102b19190610c5f565b95945050505050565b3360008181526004602052604081208054849081106102db576102db610c1c565b90600052602060002090600502019050600081600401541161033a5760405162461bcd60e51b81526020600482015260136024820152721d995cdd08191bd95cc81b9bdd08195e1a5cdd606a1b60448201526064015b60405180910390fd5b80600201548160030154106103915760405162461bcd60e51b815260206004820152601b60248201527f616c726561647920776974686472657720616c6c20746f6b656e7300000000006044820152606401610331565b6000816002015482600401546103a79190610c5f565b905060006103b58486610206565b9050826002015481116103c857806103ce565b82600201545b90508083600301541061044b576040805162461bcd60e51b81526020600482015260248101919091527f63757272656e746c792076657374696e672c20706c656173652077616974206660448201527f6f72206e65787420776974686472617761626c652074696d6520706572696f646064820152608401610331565b600083600301548261045d9190610c48565b600385018390556001549091506001600160a01b031663a9059cbb866104838487610c81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156104c957600080fd5b505af11580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105019190610ca0565b506001546001600160a01b031663d547deed8661051e8487610c81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561056457600080fd5b505af1158015610578573d6000803e3d6000fd5b5050505083600201548460030154141561069d576001600160a01b038516600090815260046020526040902080546105b290600190610c48565b815481106105c2576105c2610c1c565b906000526020600020906005020160046000876001600160a01b03166001600160a01b03168152602001908152602001600020878154811061060657610606610c1c565b600091825260208083208454600590930201918255600180850154908301556002808501549083015560038085015490830155600493840154918401919091556001600160a01b0388168252919091526040902080548061066957610669610cc2565b6000828152602081206005600019909301928302018181556001810182905560028101829055600381018290556004015590555b6001600160a01b0385167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568876106d38487610c81565b6040805192835260208301919091520160405180910390a2505050505050565b6001600160a01b0381166000908152600460209081526040808320805482518185028101850190935280835260609492939192909184015b8282101561078f57838290600052602060002090600502016040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250508152602001906001019061072b565b505050509050919050565b6107a2610a83565b6107ac6000610add565b565b600460205281600052604060002081815481106107ca57600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b6005818154811061080c57600080fd5b6000918252602090912001546001600160a01b0316905081565b61082e610a83565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0392909216919091179055565b610888610a83565b6001600160a01b0381166108ed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b6108f681610add565b50565b6000805b600554811015610951576005818154811061091a5761091a610c1c565b6000918252602090912001546001600160a01b031633141561093f5760019150610951565b8061094981610cd8565b9150506108fd565b50806109985760405162461bcd60e51b81526020600482015260166024820152751b9bdd0818481cdd185ada5b99c818dbdb9d1c9858dd60521b6044820152606401610331565b60046000846001600160a01b03166001600160a01b031681526020019081526020016000206040518060a00160405280428152602001600254426109dc9190610cf3565b8152600380546020808401919091526000604080850182905260609485018990528654600180820189559783529183902086516005909302019182558583015196820196909655848601516002820155928401519183019190915560809092015160049091015590518381526001600160a01b038516917f3264e4ec12d4ef5355907238cfb33a16442d78ae7c1909d87bb40b07cc7e97db910160405180910390a2505050565b6000546001600160a01b031633146107ac5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610331565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b0381168114610b4457600080fd5b919050565b60008060408385031215610b5c57600080fd5b610b6583610b2d565b946020939093013593505050565b600060208284031215610b8557600080fd5b5035919050565b600060208284031215610b9e57600080fd5b610ba782610b2d565b9392505050565b602080825282518282018190526000919060409081850190868401855b82811015610c0f5781518051855286810151878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101610bcb565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015610c5a57610c5a610c32565b500390565b600082610c7c57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c9b57610c9b610c32565b500290565b600060208284031215610cb257600080fd5b81518015158114610ba757600080fd5b634e487b7160e01b600052603160045260246000fd5b6000600019821415610cec57610cec610c32565b5060010190565b60008219821115610d0657610d06610c32565b50019056fea164736f6c6343000809000a

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

00000000000000000000000030dcba0405004cf124045793e1933c798af9e66a

-----Decoded View---------------
Arg [0] : _token (address): 0x30dcBa0405004cF124045793E1933C798Af9E66a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000030dcba0405004cf124045793e1933c798af9e66a


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.