Basic Attention Token
ERC20
This contract is an ERC20 token.
Name
Basic Attention Token
Symbol
BAT
Decimals
18
Total Supply
1,500,000,000 BAT
About link description
Basic Attention Token (BAT) is a cryptocurrency and operates on the Ethereum platform. Basic Attention Token has a current supply of 1,500,000,000 with 1,488,387,172.9673505 in circulation. The last known price of Basic Attention Token is 0.55297698 USD and is up 9.11 over the last 24 hours. It is currently trading on 247 active market(s) with $229,894,841.08 traded over the last 24 hours. More information can be found at https://basicattentiontoken.org/.
Stats
Public Functions
8
Event Types
4
Code Size
6,902 bytes
Events (4) keyboard_arrow_up
Constants (7) keyboard_arrow_up
State Variables (9) keyboard_arrow_up
Functions
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Source Code
function transfer(address _to, uint256 _value) returns (bool success) {
if (balances[msg.sender] >= _value && _value > 0) {
balances[msg.sender] -= _value;
balances[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
} else {
return false;
}
}
transferFrom keyboard_arrow_up
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) returns (bool success) {
if (
balances[_from] >= _value &&
allowed[_from][msg.sender] >= _value &&
_value > 0
) {
balances[_to] += _value;
balances[_from] -= _value;
allowed[_from][msg.sender] -= _value;
Transfer(_from, _to, _value);
return true;
} else {
return false;
}
}
approve keyboard_arrow_up
Source Code
function approve(address _spender, uint256 _value) returns (bool success) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
allowance keyboard_arrow_up
createTokens keyboard_arrow_up
Parameters help
This function has no parameters.
Requirements help
Source Code
function createTokens() external payable {
if (isFinalized) throw;
if (block.number < fundingStartBlock) throw;
if (block.number > fundingEndBlock) throw;
if (msg.value == 0) throw;
uint256 tokens = safeMult(msg.value, tokenExchangeRate); // check that we're not over totals
uint256 checkedSupply = safeAdd(totalSupply, tokens);
// return money if something goes wrong
if (tokenCreationCap < checkedSupply) throw; // odd fractions won't be found
totalSupply = checkedSupply;
balances[msg.sender] += tokens; // safeAdd not needed; bad semantics to use here
CreateBAT(msg.sender, tokens); // logs token creation
}
finalize keyboard_arrow_up
Parameters help
This function has no parameters.
Requirements help
One or more of the following:
-
totalSupply
must be equal to
tokenCreationCap
- OR
fundingEndBlock
must be less than
block.number
Source Code
function finalize() external {
if (isFinalized) throw;
if (msg.sender != ethFundDeposit) throw; // locks finalize to the ultimate ETH owner
if (totalSupply < tokenCreationMin) throw; // have to sell minimum to move to operational
if (block.number <= fundingEndBlock && totalSupply != tokenCreationCap) throw;
// move to operational
isFinalized = true;
if (!ethFundDeposit.send(this.balance)) throw; // send the eth to Brave International
}
refund keyboard_arrow_up
Parameters help
This function has no parameters.
Requirements help
Source Code
function refund() external {
if (isFinalized) throw; // prevents refund if operational
if (block.number <= fundingEndBlock) throw; // prevents refund until sale period is over
if (totalSupply >= tokenCreationMin) throw; // no refunds if we sold enough
if (msg.sender == batFundDeposit) throw; // Brave Intl not entitled to a refund
uint256 batVal = balances[msg.sender];
if (batVal == 0) throw;
balances[msg.sender] = 0;
totalSupply = safeSubtract(totalSupply, batVal); // extra safe
uint256 ethVal = batVal / tokenExchangeRate; // should be safe; previous throws covers edges
LogRefund(msg.sender, ethVal); // log it
if (!msg.sender.send(ethVal)) throw; // if you're using a contract; make sure it works with .send gas limits
}
Internal Functions
Internal functions are parts of the contract that can't be used directly, but instead are used by the public functions listed above.
internal SafeMath.safeAdd keyboard_arrow_up
internal SafeMath.safeSubtract keyboard_arrow_up
Source Code
function safeSubtract(uint256 x, uint256 y) internal returns (uint256) {
assert(x >= y);
uint256 z = x - y;
return z;
}
internal SafeMath.safeMult keyboard_arrow_up
Requirements help
One or more of the following:
Source Code
function safeMult(uint256 x, uint256 y) internal returns (uint256) {
uint256 z = x * y;
assert((x == 0) || (z / x == y));
return z;
}