Overview
Max Total Supply
23,178,000 WTT
Holders
649 (0.00%)
Transfers
-
0
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 0 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
GigaWattToken
Compiler Version
v0.4.6+commit.2dabbdf0
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2017-08-10
*/
/*
* Giga Watt Token Smart Contract. Copyright © 2016 by ABDK Consulting.
* Author: Mikhail Vladimirov <mikhail.vladimirov@gmail.com>
*/
pragma solidity ^0.4.1;
/**
* ERC-20 standard token interface, as defined
* <a href="http://github.com/ethereum/EIPs/issues/20">here</a>.
*/
contract Token {
/**
* Get total number of tokens in circulation.
*
* @return total number of tokens in circulation
*/
function totalSupply () constant returns (uint256 supply);
/**
* Get number of tokens currently belonging to given owner.
*
* @param _owner address to get number of tokens currently belonging to the
owner of
* @return number of tokens currently belonging to the owner of given address
*/
function balanceOf (address _owner) constant returns (uint256 balance);
/**
* Transfer given number of tokens from message sender to given recipient.
*
* @param _to address to transfer tokens from the owner of
* @param _value number of tokens to transfer to the owner of given address
* @return true if tokens were transferred successfully, false otherwise
*/
function transfer (address _to, uint256 _value) returns (bool success);
/**
* Transfer given number of tokens from given owner to given recipient.
*
* @param _from address to transfer tokens from the owner of
* @param _to address to transfer tokens to the owner of
* @param _value number of tokens to transfer from given owner to given
recipient
* @return true if tokens were transferred successfully, false otherwise
*/
function transferFrom (address _from, address _to, uint256 _value)
returns (bool success);
/**
* Allow given spender to transfer given number of tokens from message sender.
*
* @param _spender address to allow the owner of to transfer tokens from
message sender
* @param _value number of tokens to allow to transfer
* @return true if token transfer was successfully approved, false otherwise
*/
function approve (address _spender, uint256 _value) returns (bool success);
/**
* Tell how many tokens given spender is currently allowed to transfer from
* given owner.
*
* @param _owner address to get number of tokens allowed to be transferred
* from the owner of
* @param _spender address to get number of tokens allowed to be transferred
* by the owner of
* @return number of tokens given spender is currently allowed to transfer
* from given owner
*/
function allowance (address _owner, address _spender)
constant returns (uint256 remaining);
/**
* Logged when tokens were transferred from one owner to another.
*
* @param _from address of the owner, tokens were transferred from
* @param _to address of the owner, tokens were transferred to
* @param _value number of tokens transferred
*/
event Transfer (address indexed _from, address indexed _to, uint256 _value);
/**
* Logged when owner approved his tokens to be transferred by some spender.
*
* @param _owner owner who approved his tokens to be transferred
* @param _spender spender who were allowed to transfer the tokens belonging
* to the owner
* @param _value number of tokens belonging to the owner, approved to be
* transferred by the spender
*/
event Approval (
address indexed _owner, address indexed _spender, uint256 _value);
}
/**
* Provides methods to safely add, subtract and multiply uint256 numbers.
*/
contract SafeMath {
uint256 constant private MAX_UINT256 =
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
/**
* Add two uint256 values, throw in case of overflow.
*
* @param x first value to add
* @param y second value to add
* @return x + y
*/
function safeAdd (uint256 x, uint256 y)
constant internal
returns (uint256 z) {
if (x > MAX_UINT256 - y) throw;
return x + y;
}
/**
* Subtract one uint256 value from another, throw in case of underflow.
*
* @param x value to subtract from
* @param y value to subtract
* @return x - y
*/
function safeSub (uint256 x, uint256 y)
constant internal
returns (uint256 z) {
if (x < y) throw;
return x - y;
}
/**
* Multiply two uint256 values, throw in case of overflow.
*
* @param x first value to multiply
* @param y second value to multiply
* @return x * y
*/
function safeMul (uint256 x, uint256 y)
constant internal
returns (uint256 z) {
if (y == 0) return 0; // Prevent division by zero at the next line
if (x > MAX_UINT256 / y) throw;
return x * y;
}
}
/**
* Abstract base contract for contracts implementing Token interface.
*/
contract AbstractToken is Token, SafeMath {
/**
* Get total number of tokens in circulation.
*
* @return total number of tokens in circulation
*/
function totalSupply () constant returns (uint256 supply) {
return tokensCount;
}
/**
* Get number of tokens currently belonging to given owner.
*
* @param _owner address to get number of tokens currently belonging to the
owner of
* @return number of tokens currently belonging to the owner of given address
*/
function balanceOf (address _owner) constant returns (uint256 balance) {
return accounts [_owner];
}
/**
* Transfer given number of tokens from message sender to given recipient.
*
* @param _to address to transfer tokens from the owner of
* @param _value number of tokens to transfer to the owner of given address
* @return true if tokens were transferred successfully, false otherwise
*/
function transfer (address _to, uint256 _value) returns (bool success) {
return doTransfer (msg.sender, _to, _value);
}
/**
* Transfer given number of tokens from given owner to given recipient.
*
* @param _from address to transfer tokens from the owner of
* @param _to address to transfer tokens to the owner of
* @param _value number of tokens to transfer from given owner to given
recipient
* @return true if tokens were transferred successfully, false otherwise
*/
function transferFrom (address _from, address _to, uint256 _value)
returns (bool success)
{
if (_value > approved [_from][msg.sender]) return false;
if (doTransfer (_from, _to, _value)) {
approved [_from][msg.sender] =
safeSub (approved[_from][msg.sender], _value);
return true;
} else return false;
}
/**
* Allow given spender to transfer given number of tokens from message sender.
*
* @param _spender address to allow the owner of to transfer tokens from
message sender
* @param _value number of tokens to allow to transfer
* @return true if token transfer was successfully approved, false otherwise
*/
function approve (address _spender, uint256 _value) returns (bool success) {
approved [msg.sender][_spender] = _value;
Approval (msg.sender, _spender, _value);
return true;
}
/**
* Tell how many tokens given spender is currently allowed to transfer from
* given owner.
*
* @param _owner address to get number of tokens allowed to be transferred
* from the owner of
* @param _spender address to get number of tokens allowed to be transferred
* by the owner of
* @return number of tokens given spender is currently allowed to transfer
* from given owner
*/
function allowance (address _owner, address _spender)
constant returns (uint256 remaining) {
return approved [_owner][_spender];
}
/**
* Create given number of new tokens and give them to given owner.
*
* @param _owner address to given new created tokens to the owner of
* @param _value number of new tokens to create
*/
function createTokens (address _owner, uint256 _value) internal {
if (_value > 0) {
accounts [_owner] = safeAdd (accounts [_owner], _value);
tokensCount = safeAdd (tokensCount, _value);
}
}
/**
* Perform token transfer.
*
* @param _from address to transfer tokens from the owner of
* @param _to address to transfer tokens to to the owner of
* @param _value number of tokens to transfer
* @return true if tokens were transferred successfully, false otherwise
*/
function doTransfer (address _from, address _to, uint256 _value)
private returns (bool success) {
if (_value > accounts [_from]) return false;
if (_value > 0 && _from != _to) {
accounts [_from] = safeSub (accounts [_from], _value);
accounts [_to] = safeAdd (accounts [_to], _value);
Transfer (_from, _to, _value);
}
return true;
}
/**
* Total number of tokens in circulation.
*/
uint256 tokensCount;
/**
* Maps addresses of token owners to states of their accounts.
*/
mapping (address => uint256) accounts;
/**
* Maps addresses of token owners to mappings from addresses of spenders to
* how many tokens belonging to the owner, the spender is currently allowed to
* transfer.
*/
mapping (address => mapping (address => uint256)) approved;
}
/**
* Standard Token smart contract that provides the following features:
* <ol>
* <li>Centralized creation of new tokens</li>
* <li>Freeze/unfreeze token transfers</li>
* <li>Change owner</li>
* </ol>
*/
contract StandardToken is AbstractToken {
/**
* Maximum allowed tokens in circulation (2^64 - 1).
*/
uint256 constant private MAX_TOKENS = 0xFFFFFFFFFFFFFFFF;
/**
* Address of the owner of the contract.
*/
address owner;
/**
* Whether transfers are currently frozen.
*/
bool frozen;
/**
* Instantiate the contract and make the message sender to be the owner.
*/
function StandardToken () {
owner = msg.sender;
}
/**
* Transfer given number of tokens from message sender to given recipient.
*
* @param _to address to transfer tokens from the owner of
* @param _value number of tokens to transfer to the owner of given address
* @return true if tokens were transferred successfully, false otherwise
*/
function transfer (address _to, uint256 _value)
returns (bool success) {
if (frozen) return false;
else return AbstractToken.transfer (_to, _value);
}
/**
* Transfer given number of tokens from given owner to given recipient.
*
* @param _from address to transfer tokens from the owner of
* @param _to address to transfer tokens to the owner of
* @param _value number of tokens to transfer from given owner to given
recipient
* @return true if tokens were transferred successfully, false otherwise
*/
function transferFrom (address _from, address _to, uint256 _value)
returns (bool success) {
if (frozen) return false;
else return AbstractToken.transferFrom (_from, _to, _value);
}
/**
* Create certain number of new tokens and give them to the owner of the
* contract.
*
* @param _value number of new tokens to create
* @return true if tokens were created successfully, false otherwise
*/
function createTokens (uint256 _value)
returns (bool success) {
if (msg.sender != owner) throw;
if (_value > MAX_TOKENS - totalSupply ()) return false;
AbstractToken.createTokens (owner, _value);
return true;
}
/**
* Freeze token transfers.
*/
function freezeTransfers () {
if (msg.sender != owner) throw;
if (!frozen)
{
frozen = true;
Freeze ();
}
}
/**
* Unfreeze token transfers.
*/
function unfreezeTransfers () {
if (msg.sender != owner) throw;
if (frozen) {
frozen = false;
Unfreeze ();
}
}
/**
* Set new owner address.
*
* @param _newOwner new owner address
*/
function setOwner (address _newOwner) {
if (msg.sender != owner) throw;
owner = _newOwner;
}
/**
* Logged when token transfers were freezed.
*/
event Freeze ();
/**
* Logged when token transfers were unfreezed.
*/
event Unfreeze ();
}
/**
* Giga Watt Token Smart Contract.
*/
contract GigaWattToken is StandardToken {
/**
* Constructor just calls constructor of parent contract.
*/
function GigaWattToken () StandardToken () {
// Do nothing
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"freezeTransfers","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"supply","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unfreezeTransfers","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"createTokens","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[],"name":"Unfreeze","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"}]Contract Creation Code
606060405234610000575b5b60038054600160a060020a0319166c01000000000000000000000000338102041790555b5b5b6106f58061003f6000396000f3606060405236156100825760e060020a6000350463015024608114610087578063095ea7b31461009657806313af4035146100bd57806318160ddd146100cf57806323b872dd146100ee57806331c420d41461011857806370a08231146101275780637e1f2bb814610149578063a9059cbb1461016d578063dd62ed3e14610194575b610000565b34610000576100946101b9565b005b34610000576100a9600435602435610238565b604080519115158252519081900360200190f35b34610000576100946004356102a3565b005b34610000576100dc6102f2565b60408051918252519081900360200190f35b34610000576100a96004356024356044356102f9565b604080519115158252519081900360200190f35b3461000057610094610330565b005b34610000576100dc6004356103a8565b60408051918252519081900360200190f35b34610000576100a96004356103c7565b604080519115158252519081900360200190f35b34610000576100a9600435602435610425565b604080519115158252519081900360200190f35b34610000576100dc60043560243561045e565b60408051918252519081900360200190f35b60035433600160a060020a039081169116146101d457610000565b60035460a060020a900460ff161515610235576003805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a15b5b565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035433600160a060020a039081169116146102be57610000565b6003805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b50565b6000545b90565b60035460009060a060020a900460ff161561031a5750600061032856610328565b61032584848461048b565b90505b5b9392505050565b60035433600160a060020a0390811691161461034b57610000565b60035460a060020a900460ff1615610235576003805474ff0000000000000000000000000000000000000000191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a15b5b565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146103e557610000565b6103ed6102f2565b67ffffffffffffffff03821115610406575060006103c2565b60035461041c90600160a060020a031683610547565b5060015b919050565b60035460009060a060020a900460ff16156104465750600061029d5661029d565b61045083836105a3565b905061029d565b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600160a060020a038084166000908152600260209081526040808320339094168352929052908120548211156104c357506000610328565b6104ce8484846105b9565b1561053757600160a060020a038085166000908152600260209081526040808320339094168352929052205461050490836106bd565b600160a060020a038086166000908152600260209081526040808320339094168352929052205550600161032856610328565b506000610328565b5b9392505050565b600081111561059e57600160a060020a03821660009081526001602052604090205461057390826106d7565b600160a060020a0383166000908152600160205260408120919091555461059a90826106d7565b6000555b5b5050565b60006105b03384846105b9565b90505b92915050565b600160a060020a0383166000908152600160205260408120548211156105e157506000610328565b600082118015610603575082600160a060020a031684600160a060020a031614155b156106b257600160a060020a03841660009081526001602052604090205461062b90836106bd565b600160a060020a03808616600090815260016020526040808220939093559085168152205461065a90836106d7565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5060015b9392505050565b6000818310156106cc57610000565b508082035b92915050565b600081600019038311156106ea57610000565b508181015b9291505056
Deployed Bytecode
0x606060405236156100825760e060020a6000350463015024608114610087578063095ea7b31461009657806313af4035146100bd57806318160ddd146100cf57806323b872dd146100ee57806331c420d41461011857806370a08231146101275780637e1f2bb814610149578063a9059cbb1461016d578063dd62ed3e14610194575b610000565b34610000576100946101b9565b005b34610000576100a9600435602435610238565b604080519115158252519081900360200190f35b34610000576100946004356102a3565b005b34610000576100dc6102f2565b60408051918252519081900360200190f35b34610000576100a96004356024356044356102f9565b604080519115158252519081900360200190f35b3461000057610094610330565b005b34610000576100dc6004356103a8565b60408051918252519081900360200190f35b34610000576100a96004356103c7565b604080519115158252519081900360200190f35b34610000576100a9600435602435610425565b604080519115158252519081900360200190f35b34610000576100dc60043560243561045e565b60408051918252519081900360200190f35b60035433600160a060020a039081169116146101d457610000565b60035460a060020a900460ff161515610235576003805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f615acbaede366d76a8b8cb2a9ada6a71495f0786513d71aa97aaf0c3910b78de90600090a15b5b565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60035433600160a060020a039081169116146102be57610000565b6003805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b50565b6000545b90565b60035460009060a060020a900460ff161561031a5750600061032856610328565b61032584848461048b565b90505b5b9392505050565b60035433600160a060020a0390811691161461034b57610000565b60035460a060020a900460ff1615610235576003805474ff0000000000000000000000000000000000000000191690556040517f2f05ba71d0df11bf5fa562a6569d70c4f80da84284badbe015ce1456063d0ded90600090a15b5b565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146103e557610000565b6103ed6102f2565b67ffffffffffffffff03821115610406575060006103c2565b60035461041c90600160a060020a031683610547565b5060015b919050565b60035460009060a060020a900460ff16156104465750600061029d5661029d565b61045083836105a3565b905061029d565b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600160a060020a038084166000908152600260209081526040808320339094168352929052908120548211156104c357506000610328565b6104ce8484846105b9565b1561053757600160a060020a038085166000908152600260209081526040808320339094168352929052205461050490836106bd565b600160a060020a038086166000908152600260209081526040808320339094168352929052205550600161032856610328565b506000610328565b5b9392505050565b600081111561059e57600160a060020a03821660009081526001602052604090205461057390826106d7565b600160a060020a0383166000908152600160205260408120919091555461059a90826106d7565b6000555b5b5050565b60006105b03384846105b9565b90505b92915050565b600160a060020a0383166000908152600160205260408120548211156105e157506000610328565b600082118015610603575082600160a060020a031684600160a060020a031614155b156106b257600160a060020a03841660009081526001602052604090205461062b90836106bd565b600160a060020a03808616600090815260016020526040808220939093559085168152205461065a90836106d7565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35b5060015b9392505050565b6000818310156106cc57610000565b508082035b92915050565b600081600019038311156106ea57610000565b508181015b9291505056
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)