POPCHAIN CASH
ERC20
This contract is an ERC20 token.
Name
POPCHAIN CASH
Symbol
PCH
Decimals
18
Total Supply
2,000,000,000 PCH
About link
POPCHAIN (PCH) is a cryptocurrency and operates on the Ethereum platform. POPCHAIN has a current supply of 2,000,000,000 with 892,799,356.876322 in circulation. The last known price of POPCHAIN is 0.00008717 USD and is up 0.03 over the last 24 hours. It is currently trading on 1 active market(s) with $0.00 traded over the last 24 hours. More information can be found at https://popchain.co.
Stats
Public Functions
14
Event Types
3
Code Size
7,622 bytes
Library Use
Uses SafeMath for uint256.
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));
newOwner = _newOwner;
}
acceptOwnership keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyNewOwner checks for the following:
Source Code
function acceptOwnership() public onlyNewOwner returns (bool) {
uint256 ownerAmount = _balances[owner];
_balances[owner] = _balances[owner].sub(ownerAmount);
_balances[newOwner] = _balances[newOwner].add(ownerAmount);
emit Transfer(owner, newOwner, ownerAmount);
owner = newOwner;
newOwner = address(0);
emit OwnershipTransferred(owner, newOwner);
return true;
}
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
allowance keyboard_arrow_up
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_to != address(this));
require(msg.sender != address(0));
require(_value <= _balances[msg.sender]);
// SafeMath.sub will throw if there is not enough balance.
_balances[msg.sender] = _balances[msg.sender].sub(_value);
_balances[_to] = _balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) public returns (bool) {
require(_from != address(0));
require(_to != address(0));
require(_to != address(this));
require(_value <= _balances[_from]);
require(_value <= _allowed[_from][msg.sender]);
_balances[_from] = _balances[_from].sub(_value);
_balances[_to] = _balances[_to].add(_value);
_allowed[_from][msg.sender] = _allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
approve keyboard_arrow_up
Source Code
function approve(address _spender, uint256 _value) public returns (bool) {
require(_value > 0);
_allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
lockupBalanceOf keyboard_arrow_up
unlockTimeOf keyboard_arrow_up
constructor keyboard_arrow_up
burn keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function burn(uint256 _value) public onlyOwner returns (bool success) {
require(_value <= _balances[msg.sender]);
address burner = msg.sender;
_balances[burner] = _balances[burner].sub(_value);
_totalSupply = _totalSupply.sub(_value);
return true;
}
distribute keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
One or more of the following:
-
_lockupRate
must be equal to
100
- OR
_lockupRate
must be equal to
50
Source Code
function distribute(
address _to,
uint256 _value,
uint256 _lockupRate
) public onlyOwner returns (bool) {
require(_to != address(0));
require(_to != address(this));
//Do not allow multiple distributions of the same address. Avoid locking time reset.
require(_lockupBalances[_to] == 0);
require(_value <= _balances[owner]);
require(_lockupRate == 50 || _lockupRate == 100);
_balances[owner] = _balances[owner].sub(_value);
uint256 lockupValue = _value.mul(_lockupRate).div(100);
uint256 givenValue = _value.sub(lockupValue);
uint256 ExpireTime = now + LOCKUP_TERM; //six months
if (_lockupRate == 100) {
ExpireTime += LOCKUP_TERM; //one year.
}
_balances[_to] = _balances[_to].add(givenValue);
_lockupBalances[_to] = _lockupBalances[_to].add(lockupValue);
_lockupExpireTime[_to] = ExpireTime;
emit Transfer(owner, _to, _value);
return true;
}
unlock keyboard_arrow_up
Parameters help
This function has no parameters.
Requirements help
Source Code
function unlock() public returns (bool) {
address tokenHolder = msg.sender;
require(_lockupBalances[tokenHolder] > 0);
require(_lockupExpireTime[tokenHolder] <= now);
uint256 value = _lockupBalances[tokenHolder];
_balances[tokenHolder] = _balances[tokenHolder].add(value);
_lockupBalances[tokenHolder] = 0;
return true;
}
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.