ETH Price: $2,141.11 (+2.37%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer56581992018-05-22 15:35:002871 days ago1527003300IN
0x71AAf9dC...3D9CfD0c2
0 ETH0.0013168313.00625
Transfer56581902018-05-22 15:32:142871 days ago1527003134IN
0x71AAf9dC...3D9CfD0c2
0 ETH0.0009850113

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VestingContractWTTEST

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-05-22
*/

pragma solidity ^0.4.21;

contract WeTestToken 
{
  mapping(address => uint256) public balanceOf;
  function transfer(address newTokensHolder, uint256 tokensNumber) 
    public 
    returns(bool);
}

contract VestingContractWTTEST
{
  //structures
  struct AccountData
  {
    uint original_balance;
    uint limit_per_period;
    uint current_balance;
    uint current_limit;
    uint current_transferred;
  }

  //storage
  address public owner;
  WeTestToken public we_test_token;
  mapping (address => AccountData) public account_data;
  uint public current_period;
  uint[] public periods;
  address[] public accounts;

  //modifiers
  modifier onlyOwner
  {
    require(owner == msg.sender);
    _;
  }
  
  //Events
  event Transfer(address indexed to, uint indexed value);
  event OwnerTransfer(address indexed to, uint indexed value);
  event OwnerChanged(address indexed owner);
  event CurrentPeriodChanged(uint indexed current_period);

  //functions

  //debug functions
  function setPeriod(uint i, uint v)
    public
  {
    periods[i] = v;
  }

  //constructor
  function VestingContractWTTEST(WeTestToken _we_test_token)
    public
  {
    owner = msg.sender;
    we_test_token = _we_test_token;
    
    periods.push(1527003300);  //Tuesday, 22 May 2018 г., 14:00:00
    periods.push(2**256 - 1);  //very far future
    current_period = 0;

    initData(0x0e0da823836499790ecbe17ba075a2a7cbe970e2, 1806343 * 10**18);
  }
  
  /// @dev Fallback function: don't accept ETH
  function()
    public
    payable
  {
    revert();
  }

  /// @dev Get current balance of the contract
  function getBalance()
    constant
    public
    returns(uint)
  {
    return we_test_token.balanceOf(this);
  }

  function initData(address a, uint v) 
    private
  {
    accounts.push(a);
    account_data[a].original_balance = v;
    account_data[a].current_balance = account_data[a].original_balance;
    account_data[a].limit_per_period = account_data[a].original_balance / 2;
    account_data[a].current_limit = account_data[a].limit_per_period;
    account_data[a].current_transferred = 0;
  }

  function setOwner(address _owner) 
    public 
    onlyOwner 
  {
    require(_owner != 0);
    
    owner = _owner;
    emit OwnerChanged(owner);
  }
  
  //allow owner to transfer surplus
  function ownerTransfer(address to, uint value)
    public
    onlyOwner
  {
    uint current_balance_all = 0;
    for (uint i = 0; i < accounts.length; i++)
      current_balance_all += account_data[accounts[i]].current_balance;
    require(getBalance() > current_balance_all && value <= getBalance() - current_balance_all);
    if (we_test_token.transfer(to, value))
      emit OwnerTransfer(to, value);
  }
  
  function updateCurrentPeriod()
    public
  {
    require(account_data[msg.sender].original_balance > 0 || msg.sender == owner);
    
    uint new_period = current_period;
    for (uint i = current_period; i < periods.length; i++)
      if (periods[i] > now)
      {
        new_period = i;
        break;
      }
    if (new_period != current_period)
    {
      current_period = new_period;
      for (i = 0; i < accounts.length; i++)
      {
        account_data[accounts[i]].current_transferred = 0;
        account_data[accounts[i]].current_limit = account_data[accounts[i]].limit_per_period;
        if (current_period == periods.length - 1)
          account_data[accounts[i]].current_limit = 2**256 - 1;  //unlimited
      }
      emit CurrentPeriodChanged(current_period);
    }
  }

  function transfer(address to, uint value) 
    public
  {
    updateCurrentPeriod();
    require(value <= we_test_token.balanceOf(this) 
      && value <= account_data[msg.sender].current_balance 
      && account_data[msg.sender].current_transferred + value <= account_data[msg.sender].current_limit);

    if (we_test_token.transfer(to, value)) 
    {
      account_data[msg.sender].current_transferred += value;
      account_data[msg.sender].current_balance -= value;
      emit Transfer(to, value);
    }
  }

  // ERC223
  // function in contract 'ContractReceiver'
  function tokenFallback(address from, uint value, bytes data) {
    // dummy function
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"i","type":"uint256"},{"name":"v","type":"uint256"}],"name":"setPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"current_period","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"account_data","outputs":[{"name":"original_balance","type":"uint256"},{"name":"limit_per_period","type":"uint256"},{"name":"current_balance","type":"uint256"},{"name":"current_limit","type":"uint256"},{"name":"current_transferred","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"we_test_token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"updateCurrentPeriod","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"ownerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"periods","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"accounts","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_we_test_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"value","type":"uint256"}],"name":"OwnerTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"current_period","type":"uint256"}],"name":"CurrentPeriodChanged","type":"event"}]

608060405234801561001057600080fd5b50604051602080610b90833981016040525160008054600160a060020a03338116600160a060020a03199283161783556001805491851691909216178155600480548083018255818452635b0438a47f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9182015581549283019091556000199101556003556100c7730e0da823836499790ecbe17ba075a2a7cbe970e26a017e820cdcb49dd3bc00006401000000006100cd810204565b50610144565b6005805460018082019092557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054600160a060020a031916600160a060020a03949094169384179055600092835260026020819052604084208381558082018490559204908201819055600382015560040155565b610a3d806101536000396000f3006080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303c5b1dc81146100c957806312065fe0146100e657806313af40351461010d578063431dc4b61461012e5780635400674b14610143578063691e99611461018f5780638da5cb5b146101c0578063a9059cbb146101d5578063acfabbe4146101f9578063c0ee0b8a1461020e578063d85c896614610277578063ea4a11041461029b578063f2a40db8146102b3575b600080fd5b3480156100d557600080fd5b506100e46004356024356102cb565b005b3480156100f257600080fd5b506100fb6102eb565b60408051918252519081900360200190f35b34801561011957600080fd5b506100e4600160a060020a0360043516610387565b34801561013a57600080fd5b506100fb610410565b34801561014f57600080fd5b50610164600160a060020a0360043516610416565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561019b57600080fd5b506101a4610445565b60408051600160a060020a039092168252519081900360200190f35b3480156101cc57600080fd5b506101a4610454565b3480156101e157600080fd5b506100e4600160a060020a0360043516602435610463565b34801561020557600080fd5b506100e4610662565b34801561021a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526100e4948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506108479650505050505050565b34801561028357600080fd5b506100e4600160a060020a036004351660243561084c565b3480156102a757600080fd5b506100fb6004356109ca565b3480156102bf57600080fd5b506101a46004356109e9565b806004838154811015156102db57fe5b6000918252602090912001555050565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a033081166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b15801561035657600080fd5b505af115801561036a573d6000803e3d6000fd5b505050506040513d602081101561038057600080fd5b5051905090565b60005433600160a060020a039081169116146103a257600080fd5b600160a060020a03811615156103b757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3691a250565b60035481565b600260208190526000918252604090912080546001820154928201546003830154600490930154919392909185565b600154600160a060020a031681565b600054600160a060020a031681565b61046b610662565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a033081166004830152915191909216916370a082319160248083019260209291908290030181600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050506040513d60208110156104fd57600080fd5b5051811180159061052a5750600160a060020a033316600090815260026020819052604090912001548111155b80156105595750600160a060020a03331660009081526002602052604090206003810154600490910154820111155b151561056457600080fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d60208110156105fd57600080fd5b50511561065e57600160a060020a03338116600090815260026020819052604080832060048101805487019055909101805485900390555183928516917f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de291a35b5050565b600160a060020a0333166000908152600260205260408120548190811080610698575060005433600160a060020a039081169116145b15156106a357600080fd5b5050600354805b6004548110156106e557426004828154811015156106c457fe5b906000526020600020015411156106dd578091506106e5565b6001016106aa565b600354821461065e5750600381905560005b6005548110156108175760006002600060058481548110151561071657fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600401919091556005805460029291908490811061075457fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600101546005805491926002929091908590811061079257fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190206003908101919091556004549054600019909101141561080f57600019600260006005848154811015156107e657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020600301555b6001016106f7565b6003546040517fbe5b23522bf3654faaf52a3756310a2ac1af495ef41e02252aeb6d886838a5c790600090a25050565b505050565b60008054819033600160a060020a0390811691161461086a57600080fd5b5060009050805b6005548110156108c3576002600060058381548110151561088e57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020600201549190910190600101610871565b816108cc6102eb565b1180156108e25750816108dd6102eb565b038311155b15156108ed57600080fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050506040513d602081101561098657600080fd5b5051156109c4576040518390600160a060020a038616907f602fb1294c3255ce6fc5c3da37023fe63d154e55ec9abe00845832703831cc0190600090a35b50505050565b60048054829081106109d857fe5b600091825260209091200154905081565b60058054829081106109f757fe5b600091825260209091200154600160a060020a03169050815600a165627a7a72305820013ed88c000d371f3889020e54fdb11f0887d136423ba9cdd2379903c89f80f400290000000000000000000000004b95ecf2a6ebf1371158b3f1a9ca32ce18d7c751

Deployed Bytecode

0x6080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303c5b1dc81146100c957806312065fe0146100e657806313af40351461010d578063431dc4b61461012e5780635400674b14610143578063691e99611461018f5780638da5cb5b146101c0578063a9059cbb146101d5578063acfabbe4146101f9578063c0ee0b8a1461020e578063d85c896614610277578063ea4a11041461029b578063f2a40db8146102b3575b600080fd5b3480156100d557600080fd5b506100e46004356024356102cb565b005b3480156100f257600080fd5b506100fb6102eb565b60408051918252519081900360200190f35b34801561011957600080fd5b506100e4600160a060020a0360043516610387565b34801561013a57600080fd5b506100fb610410565b34801561014f57600080fd5b50610164600160a060020a0360043516610416565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561019b57600080fd5b506101a4610445565b60408051600160a060020a039092168252519081900360200190f35b3480156101cc57600080fd5b506101a4610454565b3480156101e157600080fd5b506100e4600160a060020a0360043516602435610463565b34801561020557600080fd5b506100e4610662565b34801561021a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526100e4948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506108479650505050505050565b34801561028357600080fd5b506100e4600160a060020a036004351660243561084c565b3480156102a757600080fd5b506100fb6004356109ca565b3480156102bf57600080fd5b506101a46004356109e9565b806004838154811015156102db57fe5b6000918252602090912001555050565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a033081166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b15801561035657600080fd5b505af115801561036a573d6000803e3d6000fd5b505050506040513d602081101561038057600080fd5b5051905090565b60005433600160a060020a039081169116146103a257600080fd5b600160a060020a03811615156103b757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf3691a250565b60035481565b600260208190526000918252604090912080546001820154928201546003830154600490930154919392909185565b600154600160a060020a031681565b600054600160a060020a031681565b61046b610662565b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a033081166004830152915191909216916370a082319160248083019260209291908290030181600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050506040513d60208110156104fd57600080fd5b5051811180159061052a5750600160a060020a033316600090815260026020819052604090912001548111155b80156105595750600160a060020a03331660009081526002602052604090206003810154600490910154820111155b151561056457600080fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156105d357600080fd5b505af11580156105e7573d6000803e3d6000fd5b505050506040513d60208110156105fd57600080fd5b50511561065e57600160a060020a03338116600090815260026020819052604080832060048101805487019055909101805485900390555183928516917f69ca02dd4edd7bf0a4abb9ed3b7af3f14778db5d61921c7dc7cd545266326de291a35b5050565b600160a060020a0333166000908152600260205260408120548190811080610698575060005433600160a060020a039081169116145b15156106a357600080fd5b5050600354805b6004548110156106e557426004828154811015156106c457fe5b906000526020600020015411156106dd578091506106e5565b6001016106aa565b600354821461065e5750600381905560005b6005548110156108175760006002600060058481548110151561071657fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600401919091556005805460029291908490811061075457fe5b6000918252602080832090910154600160a060020a031683528201929092526040018120600101546005805491926002929091908590811061079257fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190206003908101919091556004549054600019909101141561080f57600019600260006005848154811015156107e657fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020600301555b6001016106f7565b6003546040517fbe5b23522bf3654faaf52a3756310a2ac1af495ef41e02252aeb6d886838a5c790600090a25050565b505050565b60008054819033600160a060020a0390811691161461086a57600080fd5b5060009050805b6005548110156108c3576002600060058381548110151561088e57fe5b6000918252602080832090910154600160a060020a031683528201929092526040019020600201549190910190600101610871565b816108cc6102eb565b1180156108e25750816108dd6102eb565b038311155b15156108ed57600080fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050506040513d602081101561098657600080fd5b5051156109c4576040518390600160a060020a038616907f602fb1294c3255ce6fc5c3da37023fe63d154e55ec9abe00845832703831cc0190600090a35b50505050565b60048054829081106109d857fe5b600091825260209091200154905081565b60058054829081106109f757fe5b600091825260209091200154600160a060020a03169050815600a165627a7a72305820013ed88c000d371f3889020e54fdb11f0887d136423ba9cdd2379903c89f80f40029

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

0000000000000000000000004b95ecf2a6ebf1371158b3f1a9ca32ce18d7c751

-----Decoded View---------------
Arg [0] : _we_test_token (address): 0x4B95ECf2a6EBf1371158b3f1A9cA32cE18D7c751

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004b95ecf2a6ebf1371158b3f1a9ca32ce18d7c751


Swarm Source

bzzr://013ed88c000d371f3889020e54fdb11f0887d136423ba9cdd2379903c89f80f4

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.