CocosTokenV2
ERC20
This contract is an ERC20 token.
Name
CocosTokenV2
Symbol
COCOS
Decimals
18
Total Supply
100,000,000 COCOS
About link description
Cocos-BCX (COCOS) is a cryptocurrency and operates on the Ethereum platform. Cocos-BCX has a current supply of 100,000,000 with 42,015,868 in circulation. The last known price of Cocos-BCX is 0.57252135 USD and is down -14.89 over the last 24 hours. It is currently trading on 8 active market(s) with $9,410,352.59 traded over the last 24 hours. More information can be found at https://www.cocosbcx.io/.
Stats
Public Functions
27
Event Types
12
Code Size
31,962 bytes
Library Use
Uses SafeMath for uint.
Events (12) keyboard_arrow_up
State Variables (13) keyboard_arrow_up
Functions
owner keyboard_arrow_up
isOwner keyboard_arrow_up
renounceOwnership keyboard_arrow_up
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
null
Source Code
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
isPauser keyboard_arrow_up
addPauser keyboard_arrow_up
renouncePauser keyboard_arrow_up
paused keyboard_arrow_up
pause keyboard_arrow_up
unpause keyboard_arrow_up
name keyboard_arrow_up
symbol keyboard_arrow_up
decimals keyboard_arrow_up
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
if (paused() == true) {
// , only white list pass
require(
whiteAccountMap[msg.sender] != 0,
"contract is in paused, only in white list can transfer"
);
} else {
// check black list
require(
blackAccountMap[msg.sender] == 0,
"address in black list, can't transfer"
);
}
return super.transfer(_to, _value);
}
allowance keyboard_arrow_up
approve keyboard_arrow_up
Requirements help
Source Code
function approve(address spender, uint256 amount) public returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) public returns (bool) {
if (paused() == true) {
// frozen contract , only white list pass
require(
whiteAccountMap[msg.sender] != 0,
"contract is in paused, can't transfer"
);
if (msg.sender != _from) {
require(
whiteAccountMap[_from] != 0,
"contract is in paused, can't transfer"
);
}
} else {
// check black list
require(
blackAccountMap[msg.sender] == 0,
"address in black list, can't transfer"
);
if (msg.sender != _from) {
require(
blackAccountMap[_from] == 0,
"address in black list, can't transfer"
);
}
}
return super.transferFrom(_from, _to, _value);
}
increaseAllowance keyboard_arrow_up
Requirements help
Source Code
function increaseAllowance(address spender, uint256 addedValue)
public
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
decreaseAllowance keyboard_arrow_up
Requirements help
Source Code
function decreaseAllowance(address spender, uint256 subtractedValue)
public
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
constructor keyboard_arrow_up
withdrawFromContract keyboard_arrow_up
Modifiers help
Requirements help
Source Code
function withdrawFromContract(address _to)
public
onlyOwner
validAddress(_to)
returns (bool)
{
uint256 contractBalance = balanceOf(address(this));
require(contractBalance > 0, "not enough balance");
_transfer(address(this), _to, contractBalance);
return true;
}
addWhiteAccount keyboard_arrow_up
Modifiers help
Requirements help
Source Code
function addWhiteAccount(address _whiteAccount)
public
onlyOwner
validAddress(_whiteAccount)
{
require(whiteAccountMap[_whiteAccount] == 0, "has in white list");
uint256 index = whiteAccounts.length;
require(index < 4294967296, "white list is too long");
whiteAccounts.length += 1;
whiteAccounts[index] = _whiteAccount;
whiteAccountMap[_whiteAccount] = index + 1;
emit AddWhiteAccount(msg.sender, _whiteAccount);
}
delWhiteAccount keyboard_arrow_up
Modifiers help
Requirements help
Source Code
function delWhiteAccount(address _whiteAccount)
public
onlyOwner
validAddress(_whiteAccount)
{
require(whiteAccountMap[_whiteAccount] != 0, "not in white list");
uint256 index = whiteAccountMap[_whiteAccount];
if (index == whiteAccounts.length) {
whiteAccounts.length -= 1;
} else {
address lastaddress = whiteAccounts[whiteAccounts.length - 1];
whiteAccounts[index - 1] = lastaddress;
whiteAccounts.length -= 1;
whiteAccountMap[lastaddress] = index;
}
delete whiteAccountMap[_whiteAccount];
emit DelWhiteAccount(msg.sender, _whiteAccount);
}
addBlackAccount keyboard_arrow_up
Modifiers help
Requirements help
Source Code
function addBlackAccount(address _blackAccount)
public
onlyOwner
validAddress(_blackAccount)
{
require(blackAccountMap[_blackAccount] == 0, "has in black list");
uint256 index = blackAccounts.length;
require(index < 4294967296, "black list is too long");
blackAccounts.length += 1;
blackAccounts[index] = _blackAccount;
blackAccountMap[_blackAccount] = index + 1;
emit AddBlackAccount(msg.sender, _blackAccount);
}
delBlackAccount keyboard_arrow_up
Modifiers help
Requirements help
Source Code
function delBlackAccount(address _blackAccount)
public
onlyOwner
validAddress(_blackAccount)
{
require(blackAccountMap[_blackAccount] != 0, "not in black list");
uint256 index = blackAccountMap[_blackAccount];
if (index == blackAccounts.length) {
blackAccounts.length -= 1;
} else {
address lastaddress = blackAccounts[blackAccounts.length - 1];
blackAccounts[index - 1] = lastaddress;
blackAccounts.length -= 1;
blackAccountMap[lastaddress] = index;
}
delete blackAccountMap[_blackAccount];
emit DelBlackAccount(msg.sender, _blackAccount);
}
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 ERC20._transfer keyboard_arrow_up
Requirements help
Source Code
function _transfer(
address sender,
address recipient,
uint256 amount
) internal {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(
amount,
"ERC20: transfer amount exceeds balance"
);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
internal ERC20._mint keyboard_arrow_up
Source Code
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
internal ERC20._burn keyboard_arrow_up
Source Code
function _burn(address account, uint256 amount) internal {
require(account != address(0), "ERC20: burn from the zero address");
_balances[account] = _balances[account].sub(
amount,
"ERC20: burn amount exceeds balance"
);
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
internal ERC20._approve keyboard_arrow_up
Requirements help
Source Code
function _approve(
address owner,
address spender,
uint256 amount
) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
internal ERC20._burnFrom keyboard_arrow_up
Requirements help
Source Code
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(
account,
_msgSender(),
_allowances[account][_msgSender()].sub(
amount,
"ERC20: burn amount exceeds allowance"
)
);
}
internal Context.constructor keyboard_arrow_up
internal Context._msgSender keyboard_arrow_up
internal Context._msgData keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
internal Pausable.constructor keyboard_arrow_up
internal Context.constructor keyboard_arrow_up
internal Context._msgSender keyboard_arrow_up
internal Context._msgData keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
internal PauserRole.constructor keyboard_arrow_up
internal PauserRole._addPauser keyboard_arrow_up
internal PauserRole._removePauser keyboard_arrow_up
internal Context.constructor keyboard_arrow_up
internal Context._msgSender keyboard_arrow_up
internal Context._msgData keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
internal Ownable.constructor keyboard_arrow_up
internal Ownable._transferOwnership keyboard_arrow_up
Source Code
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
internal Context.constructor keyboard_arrow_up
internal Context._msgSender keyboard_arrow_up
internal Context._msgData keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}