Contract 0x922ac473a3cc241fd3a0049ed14536452d58d73c

 

TxHash Block Age From To Value [TxFee]
0x74b8304e58a12f2017a43a89df898c4a2cc16e05ce8cc91c545ac0e25496705473948933 days 14 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
0x656b12ccf3729491a4c1a8199174d5f085c780714ab9a365b7668c10ab95712673936653 days 18 hrs ago0x622f9e1ffe6c9de4692dd28dee8dcae4a6731421 IN  VETRI0 Ether0.00022955
0x2988c8947632cf0ef35bcf57e11a8ccede836e0cb2c74d8c631aba991e35e80b73936353 days 19 hrs ago0x58f41b41ab4884520769c382d45188f9d5c31b27 IN  VETRI0 Ether0.00042771375
0xf35f25cb2aa337d84cb425f5a8694c808d5314881ee9ab24dc88369b32fb48f773930763 days 21 hrs agoBitfinex 4 IN  VETRI0 Ether0.00053019
0xc2d74ac7df9d8478d66bd281731f9473ef7c3b7f04e8cbc24e02bad0e55b928e73862924 days 22 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
0x8cb943ad0e65e72214080c8839681ed012195ba048f7cec0b316e5d3fa028ca173728697 days 31 mins ago0x5c27c5af28e39b8ee7a8acaa495f662faac0a0f9 IN  VETRI0 Ether0.00023019
0x8db423204d9089792c5efa3d3784b4a167e1d8dae44df1f83c6b8af9b12c0de973728077 days 44 mins ago0x81180342ff382f5e94b30c0e4953c93e62fdf845 IN  VETRI0 Ether0.001561403
0xd883dc9ca893aec91d5df33b815b7c7c7a2a4ef64b8247ffe7cd0c3a16ff8f5f73719287 days 4 hrs ago0x0e7ee58cb7b19c484383cc6a8f5c4206005b63a3 IN  VETRI0 Ether0.00023019
0x9ae8f1eb9005671b6b0d267063e97c211b666edb5f10093dd36b47c6b3a60be973718957 days 4 hrs ago0xad66ece9bf8c71870aecdaf01b06dcf4b3c2f579 IN  VETRI0 Ether0.0002385855
0xf1b10869996726caa600f352765080a8697a375dc1b8c784de5f0253be3283d473700797 days 10 hrs agoBitfinex 4 IN  VETRI0 Ether0.00053083
0x242974570371f5b8e05d1c8773def90674c82009359ca41eb972fc3d1a51798b73696647 days 12 hrs ago0x5f77911c11b5c131cb81fa546b89d5d83ecc6b00 IN  VETRI0 Ether0.001561403
0xa4a32bac21e0a1026895ac7daa0ecb52038d0562dd62986af68e9a29188a60c073686447 days 16 hrs ago0xbb1c67d1e6fa31d1843923641b4a73c471761ec6 IN  VETRI0 Ether0.000091478
0x6a81ff6653ba083e0dd70dcf3ad7918c920126032bfc0bb65675889c92b7f9eb73665937 days 23 hrs ago0xad66ece9bf8c71870aecdaf01b06dcf4b3c2f579 IN  VETRI0 Ether0.0001710855
0x35ad7ea1924096e12607bab62469859f080b156f8b059c4755fddf44b06a6a4d73665178 days 10 mins ago0x435cd79fdfd71fbd470746a4ce3af01ebb198fcc IN  VETRI0 Ether0.00053019
0xcd0755795907e1ea0a275eab0e6b65f783654be906707b4dcb39238263b70d8073630868 days 12 hrs agoBitfinex 4 IN  VETRI0 Ether0.00053019
0x471f8bf05ccdb9e336573ce7b041b5187597bf95240ae3f0ed8a12645e976eba73622948 days 15 hrs agoBitfinex 4 IN  VETRI0 Ether0.00053019
0x8c88f089a8166b9c528eb07b3c1e495c6679a6f0dc1d13a83287d41815be1cd473601778 days 23 hrs ago0x06ae0c1870193c569da0b0cb00c03401f5ed7f24 IN  VETRI0 Ether0.000228498
0xfe5c6c89a27029091931279ab1e867d5070ab5787da0b8d39c925f68e95d172273569009 days 12 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
0xc7957d3a6e3db687293d60eada04045c3377f4c87ba05b22ddf40ba66082040d73543759 days 21 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
0x54b4d4b911a15300fcfa514eed8e9eb2a53054b77ad525ca58c43330be290c24735277810 days 3 hrs ago0xb88c324dc1c8ee77f28cf62c1e4fd0bbb9c92bd4 IN  VETRI0 Ether0.0001827
0xccd88273b379ff632339bf45d12a7da0feac98c97c4d9341a88b6bf2c082f698735267110 days 3 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
0xd3b25c960d0b0197a1268f5b55565a4e5010458118f62524a59b5c460629d3d1733734612 days 13 hrs agoBitfinex 4 IN  VETRI0 Ether0.00053019
0x355228922c695ab7e9999ecb28140f243fbd813d5677d60c7d292e9892f78d07732441914 days 13 hrs ago0xe627ca406d3c2ca872b8f4cd46fffef086536da4 IN  VETRI0 Ether0.000503833
0xc93f617970babf4c41d5d7eaa8fc739102e90e3ff4de8e99f680baf5767db674732230514 days 21 hrs ago0x9a051f9ae3995891f4346b194d434a00c5847f8e IN  VETRI0 Ether0.0001370988
0x5ac06dbd3060ec514000db83ed060666ff2f467315b4033ba291d18de0b02719732173914 days 23 hrs agoBitfinex 4 IN  VETRI0 Ether0.00038019
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value

Contract Source Code Verified (Exact Match)

Contract Name:
ValidToken

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity ^0.4.18;


/**
 * @title ERC20 Token Interface
 */
contract ERC20 {
    uint256 public totalSupply;
    function balanceOf(address _owner) public view returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _owner, address _spender) public view returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


/**
 * @title ERC677 transferAndCall token interface
 * @dev See https://github.com/ethereum/EIPs/issues/677 for specification and
 *      discussion.
 */
contract ERC677 {
    event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data);

    function transferAndCall(address _to, uint _value, bytes _data) public returns (bool success);
}

/**
 * @title Receiver interface for ERC677 transferAndCall
 * @dev See https://github.com/ethereum/EIPs/issues/677 for specification and
 *      discussion.
 */
contract ERC677Receiver {
    function tokenFallback(address _from, uint _value, bytes _data) public;
}


/**
 * @title VALID Token
 * @dev ERC20 compatible smart contract for the VALID token. Closely follows
 *      ConsenSys StandardToken.
 */
contract ValidToken is ERC677, ERC20 {
    // token metadata
    string public constant name = "VALID";
    string public constant symbol = "VLD";
    uint8 public constant decimals = 18;

    // total supply and maximum amount of tokens
    uint256 public constant maxSupply = 10**9 * 10**uint256(decimals);
    // note: this equals 10**27, which is smaller than uint256 max value (~10**77)

    // token accounting
    mapping(address => uint256) balances;
    mapping(address => mapping(address => uint256)) internal allowed;

    // token lockups
    mapping(address => uint256) lockups;
    event TokensLocked(address indexed _holder, uint256 _timeout);

    // ownership
    address public owner;
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    // minting
    bool public mintingDone = false;
    modifier mintingFinished() {
        require(mintingDone == true);
        _;
    }
    modifier mintingInProgress() {
        require(mintingDone == false);
        _;
    }

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

    /**
     * @dev Allows the current owner to transfer the ownership.
     * @param _newOwner The address to transfer ownership to.
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        owner = _newOwner;
    }

    // minting functionality

    function mint(address[] _recipients, uint256[] _amounts) public mintingInProgress onlyOwner {
        require(_recipients.length == _amounts.length);
        require(_recipients.length < 255);

        for (uint8 i = 0; i < _recipients.length; i++) {
            address recipient = _recipients[i];
            uint256 amount = _amounts[i];

            // enforce maximum token supply
            require(totalSupply + amount >= totalSupply);
            require(totalSupply + amount <= maxSupply);

            balances[recipient] += amount;
            totalSupply += amount;

            Transfer(0, recipient, amount);
        }
    }

    function lockTokens(address[] _holders, uint256[] _timeouts) public mintingInProgress onlyOwner {
        require(_holders.length == _timeouts.length);
        require(_holders.length < 255);

        for (uint8 i = 0; i < _holders.length; i++) {
            address holder = _holders[i];
            uint256 timeout = _timeouts[i];

            // make sure lockup period can not be overwritten
            require(lockups[holder] == 0);

            lockups[holder] = timeout;
            TokensLocked(holder, timeout);
        }
    }

    function finishMinting() public mintingInProgress onlyOwner {
        // check hard cap again
        assert(totalSupply <= maxSupply);

        mintingDone = true;
    }

    // ERC20 functionality

    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

    function transfer(address _to, uint256 _value) public mintingFinished returns (bool) {
        // prevent some common errors
        require(_to != address(0x0));
        require(_to != address(this));

        // check lockups
        if (lockups[msg.sender] != 0) {
            require(now >= lockups[msg.sender]);
        }

        // check balance
        require(balances[msg.sender] >= _value);
        assert(balances[_to] + _value >= balances[_to]); // receiver balance overflow check

        balances[msg.sender] -= _value;
        balances[_to] += _value;

        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public mintingFinished returns (bool) {
        // prevent some common errors
        require(_to != address(0x0));
        require(_to != address(this));

        // check lockups
        if (lockups[_from] != 0) {
            require(now >= lockups[_from]);
        }

        // check balance and allowance
        uint256 allowance = allowed[_from][msg.sender];
        require(balances[_from] >= _value);
        require(allowance >= _value);
        assert(balances[_to] + _value >= balances[_to]); // receiver balance overflow check

        allowed[_from][msg.sender] -= _value;
        balances[_from] -= _value;
        balances[_to] += _value;

        Transfer(_from, _to, _value);
        return true;
    }

    function approve(address _spender, uint256 _value) public returns (bool) {
        // no check for zero allowance, see NOTES.md

        allowed[msg.sender][_spender] = _value;

        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    // ERC677 functionality

    function transferAndCall(address _to, uint _value, bytes _data) public mintingFinished returns (bool) {
        require(transfer(_to, _value));

        Transfer(msg.sender, _to, _value, _data);

        // call receiver
        if (isContract(_to)) {
            ERC677Receiver receiver = ERC677Receiver(_to);
            receiver.tokenFallback(msg.sender, _value, _data);
        }
        return true;
    }

    function isContract(address _addr) private view returns (bool) {
        uint len;
        assembly {
            len := extcodesize(_addr)
        }
        return len > 0;
    }
}

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holders","type":"address[]"},{"name":"_timeouts","type":"uint256[]"}],"name":"lockTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingDone","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_amounts","type":"uint256[]"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_holder","type":"address"},{"indexed":false,"name":"_timeout","type":"uint256"}],"name":"TokensLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"},{"indexed":false,"name":"_data","type":"bytes"}],"name":"Transfer","type":"event"}]

Contract Creation Code

60606040526004805460a060020a60ff0219169055341561001f57600080fd5b60048054600160a060020a03191633600160a060020a0316179055610e2e806100496000396000f3006060604052600436106100f05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f5578063095ea7b31461017f57806318160ddd146101b557806323b872dd146101da578063313ce567146102025780633547800a1461022b5780634000aea0146102bc57806370a08231146103215780637d64bcb4146103405780638da5cb5b146103535780638e2ae5641461038257806395d89b4114610395578063a9059cbb146103a8578063d5abeb01146103ca578063dd62ed3e146103dd578063e467f7e014610402578063f2fde38b14610491575b600080fd5b341561010057600080fd5b6101086104b0565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561014457808201518382015260200161012c565b50505050905090810190601f1680156101715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018a57600080fd5b6101a1600160a060020a03600435166024356104e7565b604051901515815260200160405180910390f35b34156101c057600080fd5b6101c8610553565b60405190815260200160405180910390f35b34156101e557600080fd5b6101a1600160a060020a0360043581169060243516604435610559565b341561020d57600080fd5b6102156106f4565b60405160ff909116815260200160405180910390f35b341561023657600080fd5b6102ba6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506106f995505050505050565b005b34156102c757600080fd5b6101a160048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061081b95505050505050565b341561032c57600080fd5b6101c8600160a060020a0360043516610a15565b341561034b57600080fd5b6102ba610a30565b341561035e57600080fd5b610366610aa1565b604051600160a060020a03909116815260200160405180910390f35b341561038d57600080fd5b6101a1610ab0565b34156103a057600080fd5b610108610ac0565b34156103b357600080fd5b6101a1600160a060020a0360043516602435610af7565b34156103d557600080fd5b6101c8610c46565b34156103e857600080fd5b6101c8600160a060020a0360043581169060243516610c56565b341561040d57600080fd5b6102ba600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c8195505050505050565b341561049c57600080fd5b6102ba600160a060020a0360043516610db0565b60408051908101604052600581527f56414c4944000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600454600090819060a060020a900460ff16151560011461057957600080fd5b600160a060020a038416151561058e57600080fd5b30600160a060020a031684600160a060020a0316141515156105af57600080fd5b600160a060020a038516600090815260036020526040902054156105f257600160a060020a0385166000908152600360205260409020544210156105f257600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120548390101561063557600080fd5b8281101561064257600080fd5b600160a060020a038416600090815260016020526040902054838101101561066657fe5b600160a060020a038086166000818152600260209081526040808320338616845282528083208054899003905583835260019091528082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3506001949350505050565b601281565b6004546000908190819060a060020a900460ff161561071757600080fd5b60045433600160a060020a0390811691161461073257600080fd5b835185511461074057600080fd5b60ff85511061074e57600080fd5b600092505b84518360ff16101561081457848360ff168151811061076e57fe5b906020019060200201519150838360ff168151811061078957fe5b90602001906020020151600160a060020a038316600090815260036020526040902054909150156107b957600080fd5b600160a060020a038216600081815260036020526040908190208390557fac87f20a77d28ee8bbb58ec87ea8fa968b3393efae1a368fd50b767c2847391c9083905190815260200160405180910390a2600190920191610753565b5050505050565b600454600090819060a060020a900460ff16151560011461083b57600080fd5b6108458585610af7565b151561085057600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156108c95780820151838201526020016108b1565b50505050905090810190601f1680156108f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a361090d85610dfa565b15610a0a575083600160a060020a03811663c0ee0b8a3386866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ac578082015183820152602001610994565b50505050905090810190601f1680156109d95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156109f957600080fd5b5af11515610a0657600080fd5b5050505b506001949350505050565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1615610a4757600080fd5b60045433600160a060020a03908116911614610a6257600080fd5b6000546b033b2e3c9fd0803ce8000000901115610a7b57fe5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055565b600454600160a060020a031681565b60045460a060020a900460ff1681565b60408051908101604052600381527f564c440000000000000000000000000000000000000000000000000000000000602082015281565b60045460009060a060020a900460ff161515600114610b1557600080fd5b600160a060020a0383161515610b2a57600080fd5b30600160a060020a031683600160a060020a031614151515610b4b57600080fd5b600160a060020a03331660009081526003602052604090205415610b8e57600160a060020a033316600090815260036020526040902054421015610b8e57600080fd5b600160a060020a03331660009081526001602052604090205482901015610bb457600080fd5b600160a060020a0383166000908152600160205260409020548281011015610bd857fe5b600160a060020a033381166000818152600160205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b6b033b2e3c9fd0803ce800000081565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6004546000908190819060a060020a900460ff1615610c9f57600080fd5b60045433600160a060020a03908116911614610cba57600080fd5b8351855114610cc857600080fd5b60ff855110610cd657600080fd5b600092505b84518360ff16101561081457848360ff1681518110610cf657fe5b906020019060200201519150838360ff1681518110610d1157fe5b906020019060200201516000549091508082011015610d2f57600080fd5b6000546b033b2e3c9fd0803ce80000009082011115610d4d57600080fd5b600160a060020a0382166000818152600160205260408082208054850190558154840182557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3600190920191610cdb565b60045433600160a060020a03908116911614610dcb57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a72305820b11ec1e97e5367d19bc132813f0d459ff8c05fbac52d69a1a2bd457f33704f280029

Swarm Source

bzzr://b11ec1e97e5367d19bc132813f0d459ff8c05fbac52d69a1a2bd457f33704f28
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.