Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VestingContractWTTEST
Compiler Version
v0.4.23+commit.124ca40d
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.