Blockwell

Po.et

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

Approval Event

Parameters help
owner
address help
spender
address help
value
uint256 help

Issuance Event

Parameters help
to
address help
value
uint256 help

NewOwner Event

Parameters help
old
address help
current
address help

NewPotentialOwner Event

Parameters help
old
address help
potential
address help

Transfer Event

Parameters help
from
address help
to
address help
value
uint256 help

name Constant

string help
Po.et

symbol Constant

string help
POE

decimals Constant

uint8 help
8

icoAllocation Constant

address help

foundationReserve Constant

address help

creationTime Variable

uint help

totalSupply Variable

uint256 help

owner Variable

address help

potentialOwner Variable

address help

foundationTokens Variable

uint help
Internal Variable

daysInMonth Variable

mapping(uint8 => uint8) help
Internal Variable

Sept1_2017 Variable

uint help
Internal Variable

reserveDelta Variable

uint help
Internal Variable

balances Variable

mapping(address => uint256) help
Internal Variable

allowed Variable

mapping(address => mapping(address => uint256)) help
Internal Variable

Functions Expand All Collapse All

setOwner keyboard_arrow_up

Parameters help

Name Type
_new
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function setOwner(address _new) public onlyOwner {
  NewPotentialOwner(owner, _new);
  potentialOwner = _new;
}

confirmOwnership keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help transaction
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();
}

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help constant
Source Code
function totalSupply() constant returns (uint256) {}

Parameters help

Name Type
_owner
address help

Properties

Visibility help public
Mutability help constant
Source Code
function balanceOf(address _owner) constant returns (uint256 balance) {
  return balances[_owner];
}

Parameters help

Name Type
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
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;
  }
}

Parameters help

Name Type
_from
address help
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
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;
  }
}

Parameters help

Name Type
_spender
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function approve(address _spender, uint256 _value) returns (bool success) {
  allowed[msg.sender][_spender] = _value;
  Approval(msg.sender, _spender, _value);
  return true;
}

Parameters help

Name Type
_owner
address help
_spender
address help

Properties

Visibility help public
Mutability help constant
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

Parameters help

Name Type
tokenAddress
address help

Properties

Visibility help public
Mutability help transaction
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

Parameters help

Name Type
investor
address help
amount
uint help

Properties

Visibility help public
Mutability help transaction
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.

Properties

Visibility help public
Mutability help constant
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

Parameters help

Name Type
amount
uint help

Properties

Visibility help public
Mutability help transaction

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 Expand All Collapse All

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

Parameters help

Name Type
number
uint help
decimals
uint help

Properties

Visibility help internal
Mutability help transaction
Source Code
function withDecimals(uint256 number, uint256 decimals)
  internal
  returns (uint256)
{
  return mul(number, pow(10, decimals));
}

internal SafeMath.mul keyboard_arrow_up

Parameters help

Name Type
a
uint help
b
uint help

Properties

Visibility help internal
Mutability help transaction
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

Parameters help

Name Type
a
uint help
b
uint help

Properties

Visibility help internal
Mutability help transaction
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;
}

internal SafeMath.sub keyboard_arrow_up

Parameters help

Name Type
a
uint help
b
uint help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function sub(uint256 a, uint256 b) internal returns (uint256) {
  assert(b <= a);
  return a - b;
}

internal SafeMath.add keyboard_arrow_up

Parameters help

Name Type
a
uint help
b
uint help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function add(uint256 a, uint256 b) internal returns (uint256) {
  uint256 c = a + b;
  assert(c >= a);
  return c;
}

internal SafeMath.pow keyboard_arrow_up

Parameters help

Name Type
a
uint help
b
uint help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function pow(uint256 a, uint256 b) internal returns (uint256) {
  uint256 c = a**b;
  assert(c >= a);
  return c;
}