ETH Price: $1,847.44 (+0.68%)
Gas: 19 Gwei
 
Transaction Hash
Method
Block
From
To
Value
Transfer172290692023-05-10 9:18:5917 days 17 hrs ago1683710339IN
VETRI Token
0 ETH0.0019493649.28244688
Transfer170203072023-04-10 21:02:1147 days 6 hrs ago1681160531IN
VETRI Token
0 ETH0.0011794622.73487513
Approve169652862023-04-03 1:35:2355 days 1 hr ago1680485723IN
VETRI Token
0 ETH0.000439518.22538919
Approve168410212023-03-16 14:32:5972 days 12 hrs ago1678977179IN
VETRI Token
0 ETH0.0015714633.91239935
Approve167826532023-03-08 9:28:5980 days 17 hrs ago1678267739IN
VETRI Token
0 ETH0.00054518.78614729
Approve167826502023-03-08 9:28:2380 days 17 hrs ago1678267703IN
VETRI Token
0 ETH0.0009200719.95863936
Approve167765272023-03-07 12:48:5981 days 14 hrs ago1678193339IN
VETRI Token
0 ETH0.0010453822.53028433
Transfer166427902023-02-16 17:29:59100 days 9 hrs ago1676568599IN
VETRI Token
0 ETH0.0013286138.21488853
Transfer166418462023-02-16 14:20:11100 days 12 hrs ago1676557211IN
VETRI Token
0 ETH0.0022886544.12541612
Transfer165724882023-02-06 21:39:23110 days 5 hrs ago1675719563IN
VETRI Token
0 ETH0.0014263941.02715355
Transfer165723372023-02-06 21:08:59110 days 6 hrs ago1675717739IN
VETRI Token
0 ETH0.0011820734
Transfer165721132023-02-06 20:24:11110 days 6 hrs ago1675715051IN
VETRI Token
0 ETH0.001982535
Approve164343452023-01-18 14:39:35129 days 12 hrs ago1674052775IN
VETRI Token
0 ETH0.0009922921.38607724
Transfer164286352023-01-17 19:32:59130 days 7 hrs ago1673983979IN
VETRI Token
0 ETH0.0010433730
Transfer164284842023-01-17 19:02:35130 days 8 hrs ago1673982155IN
VETRI Token
0 ETH0.0013499726.02164285
Transfer163690762023-01-09 11:54:23138 days 15 hrs ago1673265263IN
VETRI Token
0 ETH0.0010430130
Transfer163689252023-01-09 11:24:11138 days 15 hrs ago1673263451IN
VETRI Token
0 ETH0.00077815
Transfer163147742023-01-01 22:02:23146 days 5 hrs ago1672610543IN
VETRI Token
0 ETH0.0011835322.82387653
Transfer162048692022-12-17 13:59:11161 days 13 hrs ago1671285551IN
VETRI Token
0 ETH0.0007354112.98061467
Transfer161696312022-12-12 15:50:59166 days 11 hrs ago1670860259IN
VETRI Token
0 ETH0.0009245917.82633649
Transfer161538952022-12-10 11:06:23168 days 16 hrs ago1670670383IN
VETRI Token
0 ETH0.0007510814.48106893
Approve160921332022-12-01 19:46:35177 days 7 hrs ago1669923995IN
VETRI Token
0 ETH0.000627113.51543596
Transfer160567192022-11-26 21:03:23182 days 6 hrs ago1669496603IN
VETRI Token
0 ETH0.0010426530
Transfer160565672022-11-26 20:32:59182 days 6 hrs ago1669494779IN
VETRI Token
0 ETH0.0005790510.2207059
Transfer159746872022-11-15 9:57:35193 days 17 hrs ago1668506255IN
VETRI Token
0 ETH0.0007327514.12753849
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ValidToken

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

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

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 Security Audit

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"}]

60606040526004805460a060020a60ff0219169055341561001f57600080fd5b60048054600160a060020a03191633600160a060020a0316179055610e2e806100496000396000f3006060604052600436106100f05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f5578063095ea7b31461017f57806318160ddd146101b557806323b872dd146101da578063313ce567146102025780633547800a1461022b5780634000aea0146102bc57806370a08231146103215780637d64bcb4146103405780638da5cb5b146103535780638e2ae5641461038257806395d89b4114610395578063a9059cbb146103a8578063d5abeb01146103ca578063dd62ed3e146103dd578063e467f7e014610402578063f2fde38b14610491575b600080fd5b341561010057600080fd5b6101086104b0565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561014457808201518382015260200161012c565b50505050905090810190601f1680156101715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018a57600080fd5b6101a1600160a060020a03600435166024356104e7565b604051901515815260200160405180910390f35b34156101c057600080fd5b6101c8610553565b60405190815260200160405180910390f35b34156101e557600080fd5b6101a1600160a060020a0360043581169060243516604435610559565b341561020d57600080fd5b6102156106f4565b60405160ff909116815260200160405180910390f35b341561023657600080fd5b6102ba6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506106f995505050505050565b005b34156102c757600080fd5b6101a160048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061081b95505050505050565b341561032c57600080fd5b6101c8600160a060020a0360043516610a15565b341561034b57600080fd5b6102ba610a30565b341561035e57600080fd5b610366610aa1565b604051600160a060020a03909116815260200160405180910390f35b341561038d57600080fd5b6101a1610ab0565b34156103a057600080fd5b610108610ac0565b34156103b357600080fd5b6101a1600160a060020a0360043516602435610af7565b34156103d557600080fd5b6101c8610c46565b34156103e857600080fd5b6101c8600160a060020a0360043581169060243516610c56565b341561040d57600080fd5b6102ba600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c8195505050505050565b341561049c57600080fd5b6102ba600160a060020a0360043516610db0565b60408051908101604052600581527f56414c4944000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600454600090819060a060020a900460ff16151560011461057957600080fd5b600160a060020a038416151561058e57600080fd5b30600160a060020a031684600160a060020a0316141515156105af57600080fd5b600160a060020a038516600090815260036020526040902054156105f257600160a060020a0385166000908152600360205260409020544210156105f257600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120548390101561063557600080fd5b8281101561064257600080fd5b600160a060020a038416600090815260016020526040902054838101101561066657fe5b600160a060020a038086166000818152600260209081526040808320338616845282528083208054899003905583835260019091528082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3506001949350505050565b601281565b6004546000908190819060a060020a900460ff161561071757600080fd5b60045433600160a060020a0390811691161461073257600080fd5b835185511461074057600080fd5b60ff85511061074e57600080fd5b600092505b84518360ff16101561081457848360ff168151811061076e57fe5b906020019060200201519150838360ff168151811061078957fe5b90602001906020020151600160a060020a038316600090815260036020526040902054909150156107b957600080fd5b600160a060020a038216600081815260036020526040908190208390557fac87f20a77d28ee8bbb58ec87ea8fa968b3393efae1a368fd50b767c2847391c9083905190815260200160405180910390a2600190920191610753565b5050505050565b600454600090819060a060020a900460ff16151560011461083b57600080fd5b6108458585610af7565b151561085057600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156108c95780820151838201526020016108b1565b50505050905090810190601f1680156108f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a361090d85610dfa565b15610a0a575083600160a060020a03811663c0ee0b8a3386866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ac578082015183820152602001610994565b50505050905090810190601f1680156109d95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156109f957600080fd5b5af11515610a0657600080fd5b5050505b506001949350505050565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1615610a4757600080fd5b60045433600160a060020a03908116911614610a6257600080fd5b6000546b033b2e3c9fd0803ce8000000901115610a7b57fe5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055565b600454600160a060020a031681565b60045460a060020a900460ff1681565b60408051908101604052600381527f564c440000000000000000000000000000000000000000000000000000000000602082015281565b60045460009060a060020a900460ff161515600114610b1557600080fd5b600160a060020a0383161515610b2a57600080fd5b30600160a060020a031683600160a060020a031614151515610b4b57600080fd5b600160a060020a03331660009081526003602052604090205415610b8e57600160a060020a033316600090815260036020526040902054421015610b8e57600080fd5b600160a060020a03331660009081526001602052604090205482901015610bb457600080fd5b600160a060020a0383166000908152600160205260409020548281011015610bd857fe5b600160a060020a033381166000818152600160205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b6b033b2e3c9fd0803ce800000081565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6004546000908190819060a060020a900460ff1615610c9f57600080fd5b60045433600160a060020a03908116911614610cba57600080fd5b8351855114610cc857600080fd5b60ff855110610cd657600080fd5b600092505b84518360ff16101561081457848360ff1681518110610cf657fe5b906020019060200201519150838360ff1681518110610d1157fe5b906020019060200201516000549091508082011015610d2f57600080fd5b6000546b033b2e3c9fd0803ce80000009082011115610d4d57600080fd5b600160a060020a0382166000818152600160205260408082208054850190558154840182557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3600190920191610cdb565b60045433600160a060020a03908116911614610dcb57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a72305820b11ec1e97e5367d19bc132813f0d459ff8c05fbac52d69a1a2bd457f33704f280029

Swarm Source

bzzr://b11ec1e97e5367d19bc132813f0d459ff8c05fbac52d69a1a2bd457f33704f28

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.