ERC20
This contract is an ERC20 token.
Name
Po.et
Symbol
POE
Decimals
8
Total Supply
3,141,592,653 POE
About link description
Po.et (POE) is a cryptocurrency and operates on the Ethereum platform. Po.et has a current supply of 3,141,592,653. The last known price of Po.et is 0.00012453 USD and is down -5.60 over the last 24 hours. It is currently trading on 2 active market(s) with $0.24 traded over the last 24 hours. More information can be found at https://po.et/.
Stats
Public Functions
12
Event Types
5
Code Size
11,213 bytes
Events (5) keyboard_arrow_up
Constants (5) keyboard_arrow_up
State Variables (10) keyboard_arrow_up
Functions
setOwner keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function setOwner(address _new) public onlyOwner {
NewPotentialOwner(owner, _new);
potentialOwner = _new;
}
confirmOwnership keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyPotentialOwner checks for the following:
Source Code
function confirmOwnership() public onlyPotentialOwner {
// Allow new owner to distribute tokens allocated on the icoAllocation address
allowed[icoAllocation][potentialOwner] = balanceOf(icoAllocation);
// Forbid old owner to distribute tokens
allowed[icoAllocation][owner] = 0;
// Forbid old owner to withdraw tokens from foundation reserve
allowed[foundationReserve][owner] = 0;
// Change owner
super.confirmOwnership();
}
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Source Code
function transfer(address _to, uint256 _value) returns (bool success) {
if (
balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]
) {
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 &&
balances[_to] + _value > balances[_to]
) {
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
Source Code
function allowance(address _owner, address _spender)
public
constant
returns (uint256 remaining)
{
if (_owner == foundationReserve && _spender == owner) {
return availableReserve();
}
return allowed[_owner][_spender];
}
transferERC20Token keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferERC20Token(address tokenAddress)
public
onlyOwner
returns (bool)
{
uint256 balance = AbstractToken(tokenAddress).balanceOf(this);
return AbstractToken(tokenAddress).transfer(owner, balance);
}
distribute keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function distribute(address investor, uint256 amount) public onlyOwner {
transferFrom(icoAllocation, investor, amount);
}
availableReserve keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function availableReserve() public constant returns (uint256) {
// No tokens should be available for withdrawal before September 1, 2017
if (now < Sept1_2017) {
return 0;
}
// Number of days passed since September 1, 2017
uint256 daysPassed = div(sub(now, Sept1_2017), 1 days);
// All tokens should be unlocked if reserveDelta days passed
if (daysPassed >= reserveDelta) {
return balanceOf(foundationReserve);
}
// Percentage of unlocked tokens by the current date
uint256 unlockedPercentage = 0;
uint16 _days = 0;
uint8 month = 9;
while (_days <= daysPassed) {
unlockedPercentage += 2;
_days += daysInMonth[month];
month = (month % 12) + 1;
}
// Number of unlocked tokens by the current date
uint256 unlockedTokens = div(mul(totalSupply, unlockedPercentage), 100);
// Number of tokens that should remain locked
uint256 lockedTokens = foundationTokens - unlockedTokens;
return balanceOf(foundationReserve) - lockedTokens;
}
withdrawFromReserve keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
null
Source Code
function withdrawFromReserve(uint256 amount) public onlyOwner {
// Allow owner to withdraw no more than this amount of tokens
allowed[foundationReserve][owner] = availableReserve();
// Withdraw tokens from foundation reserve to owner address
require(transferFrom(foundationReserve, owner, amount));
}
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 Token.withDecimals keyboard_arrow_up
Requirements help
Source Code
function withDecimals(uint256 number, uint256 decimals)
internal
returns (uint256)
{
return mul(number, pow(10, decimals));
}
internal SafeMath.mul keyboard_arrow_up
Requirements help
Source Code
function mul(uint256 a, uint256 b) internal returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
internal SafeMath.div keyboard_arrow_up
Source Code
function div(uint256 a, uint256 b) internal returns (uint256) {
assert(b > 0);
uint256 c = a / b;
assert(a == b * c + (a % b));
return c;
}