Trace Token
ERC20
This contract is an ERC20 token.
Name
Trace Token
Symbol
TRAC
Decimals
18
Total Supply
500,000,000 TRAC
About link description
OriginTrail (TRAC) is a cryptocurrency and operates on the Ethereum platform. OriginTrail has a current supply of 500,000,000 with 357,950,421.93654466 in circulation. The last known price of OriginTrail is 0.23775172 USD and is down -2.69 over the last 24 hours. It is currently trading on 11 active market(s) with $1,041,335.45 traded over the last 24 hours. More information can be found at https://origintrail.io/.
Stats
Public Functions
15
Event Types
6
Code Size
13,785 bytes
Events (6) keyboard_arrow_up
Constants (9) keyboard_arrow_up
State Variables (12) keyboard_arrow_up
Functions
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
canTransfer checks for the following:
mintingFinished must be true
Requirements help
Source Code
function transfer(address to, uint256 value) public canTransfer returns (bool) {
return super.transfer(to, value);
}
allowance keyboard_arrow_up
transferFrom keyboard_arrow_up
Modifiers help
canTransfer checks for the following:
mintingFinished must be true
Requirements help
Source Code
function transferFrom(
address from,
address to,
uint256 value
) public canTransfer returns (bool) {
return super.transferFrom(from, to, value);
}
approve keyboard_arrow_up
Requirements help
One or more of the following:
-
_value
must be equal to
0
- OR
allowed for the sender's address for _spender
must be equal to
0
Source Code
function approve(address _spender, uint256 _value) public returns (bool) {
// mitigating the race condition
assert(allowed[msg.sender][_spender] == 0 || _value == 0);
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
increaseApproval keyboard_arrow_up
Source Code
function increaseApproval(address _spender, uint256 _addedValue)
public
returns (bool success)
{
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(
_addedValue
);
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
decreaseApproval keyboard_arrow_up
Source Code
function decreaseApproval(address _spender, uint256 _subtractedValue)
public
returns (bool success)
{
uint256 oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
mint keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function mint(address contributor, uint256 amount)
public
onlyOwner
returns (bool)
{
return super.mint(contributor, amount);
}
finishMinting keyboard_arrow_up
mintMany keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function mintMany(address[] contributors, uint256[] amounts)
public
onlyOwner
returns (bool)
{
address contributor;
uint256 amount;
require(contributors.length == amounts.length);
for (uint256 i = 0; i < contributors.length; i++) {
contributor = contributors[i];
amount = amounts[i];
require(mint(contributor, amount));
}
return true;
}
endMinting keyboard_arrow_up
withdrawTokenToFounders keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function withdrawTokenToFounders() public {
if (now > startTime + 720 days && founderAmounts[7] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[7]);
founderAmounts[7] = 0;
}
if (now > startTime + 630 days && founderAmounts[6] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[6]);
founderAmounts[6] = 0;
}
if (now > startTime + 540 days && founderAmounts[5] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[5]);
founderAmounts[5] = 0;
}
if (now > startTime + 450 days && founderAmounts[4] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[4]);
founderAmounts[4] = 0;
}
if (now > startTime + 360 days && founderAmounts[3] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[3]);
founderAmounts[3] = 0;
}
if (now > startTime + 270 days && founderAmounts[2] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[2]);
founderAmounts[2] = 0;
}
if (now > startTime + 180 days && founderAmounts[1] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[1]);
founderAmounts[1] = 0;
}
if (now > startTime + 90 days && founderAmounts[0] > 0) {
this.transfer(teamAndFoundersWallet, founderAmounts[0]);
founderAmounts[0] = 0;
}
}
withdrawTokensToAdvisors keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function withdrawTokensToAdvisors() public {
if (now > startTime + 180 days && preicoAndAdvisorsAmounts[1] > 0) {
this.transfer(advisorsAndPreICO, preicoAndAdvisorsAmounts[1]);
preicoAndAdvisorsAmounts[1] = 0;
}
if (now > startTime + 90 days && preicoAndAdvisorsAmounts[0] > 0) {
this.transfer(advisorsAndPreICO, preicoAndAdvisorsAmounts[0]);
preicoAndAdvisorsAmounts[0] = 0;
}
}
allocateRestOfTokens keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function allocateRestOfTokens() public onlyOwner {
require(totalSupply > TOTAL_NUM_TOKENS.div(2));
require(totalSupply < TOTAL_NUM_TOKENS);
require(!mintingFinished);
mint(wallet, bountyReward);
mint(advisorsAndPreICO, preicoAndAdvisors.div(5));
mint(wallet, liquidityPool);
mint(wallet, futureDevelopment);
mint(this, teamAndFounders.sub(CORRECTION));
mint(this, preicoAndAdvisors.mul(4).div(5));
}
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.