Blockwell

CNN Token

ERC20

This contract is an ERC20 token.

Name CNN Token
Symbol CNN
Decimals 18
Total Supply 100,000,000,000 CNN

About link

Content Neutrality Network (CNN) is a cryptocurrency and operates on the Ethereum platform. Content Neutrality Network has a current supply of 100,000,000,000 with 39,035,223,816 in circulation. The last known price of Content Neutrality Network is 0.00004731 USD and is up 1.93 over the last 24 hours. It is currently trading on 5 active market(s) with $86,360.66 traded over the last 24 hours. More information can be found at https://cnntoken.io/.

Stats

Public Functions 10
Event Types 3
Code Size 8,520 bytes

Events (3) keyboard_arrow_up

Approval Event

Parameters help
_owner
address help
_spender
address help
_value
uint256 help

Burn Event

Parameters help
from
address help
value
uint256 help

Transfer Event

Parameters help
_from
address help
_to
address help
_value
uint256 help

name Variable

string help

symbol Variable

string help

decimals Variable

uint8 help

totalSupply Variable

uint256 help

balances Variable

mapping(address => uint256) help
Internal Variable

allowances Variable

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

Functions Expand All Collapse All

Parameters help

Name Type
_owner
address help

Properties

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

Parameters help

Name Type
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
  return _transfer(msg.sender, _to, _value);
}

Parameters help

Name Type
_from
address help
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function transferFrom(
  address _from,
  address _to,
  uint256 _value
) public returns (bool) {
  require(_value <= allowances[_from][msg.sender]); // Check allowance
  allowances[_from][msg.sender] -= _value;
  return _transfer(_from, _to, _value);
}

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) public returns (bool) {
  allowances[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 view
Source Code
function allowance(address _owner, address _spender)
  public
  view
  returns (uint256)
{
  return allowances[_owner][_spender];
}

approveAndCall keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_value
uint256 help
_extraData
bytes help

Properties

Visibility help public
Mutability help transaction
Source Code
function approveAndCall(
  address _spender,
  uint256 _value,
  bytes _extraData
) public returns (bool) {
  if (approve(_spender, _value)) {
    TokenRecipient spender = TokenRecipient(_spender);
    spender.receiveApproval(msg.sender, _value, this, _extraData);
    return true;
  }
  return false;
}

burn keyboard_arrow_up

Parameters help

Name Type
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function burn(uint256 _value) public returns (bool) {
  require(balances[msg.sender] >= _value); // Check if the sender has enough
  balances[msg.sender] -= _value; // Subtract from the sender
  totalSupply -= _value; // Updates totalSupply
  Burn(msg.sender, _value);
  return true;
}

burnFrom keyboard_arrow_up

Parameters help

Name Type
_from
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function burnFrom(address _from, uint256 _value) public returns (bool) {
  require(balances[_from] >= _value); // Check if the targeted balance is enough
  require(_value <= allowances[_from][msg.sender]); // Check allowance
  balances[_from] -= _value; // Subtract from the targeted balance
  allowances[_from][msg.sender] -= _value; // Subtract from the sender's allowance
  totalSupply -= _value; // Update totalSupply
  Burn(_from, _value);
  return true;
}

increaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_addedValue
uint help

Properties

Visibility help public
Mutability help transaction
Source Code
function increaseApproval(address _spender, uint256 _addedValue)
  public
  returns (bool)
{
  // Check for overflows
  require(
    allowances[msg.sender][_spender] + _addedValue >
      allowances[msg.sender][_spender]
  );

  allowances[msg.sender][_spender] += _addedValue;
  Approval(msg.sender, _spender, allowances[msg.sender][_spender]);
  return true;
}

decreaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_subtractedValue
uint help

Properties

Visibility help public
Mutability help transaction
Source Code
function decreaseApproval(address _spender, uint256 _subtractedValue)
  public
  returns (bool)
{
  uint256 oldValue = allowances[msg.sender][_spender];
  if (_subtractedValue > oldValue) {
    allowances[msg.sender][_spender] = 0;
  } else {
    allowances[msg.sender][_spender] = oldValue - _subtractedValue;
  }
  Approval(msg.sender, _spender, allowances[msg.sender][_spender]);
  return true;
}

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 CNNTokenBase._transfer keyboard_arrow_up

Parameters help

Name Type
_from
address help
_to
address help
_value
uint help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _transfer(
  address _from,
  address _to,
  uint256 _value
) internal returns (bool) {
  // Prevent transfer to 0x0 address. Use burn() instead
  require(_to != 0x0);
  // Check if the sender has enough
  require(balances[_from] >= _value);
  // Check for overflows
  require(balances[_to] + _value > balances[_to]);
  // Save this for an assertion in the future
  uint256 previousBalances = balances[_from] + balances[_to];
  // Subtract from the sender
  balances[_from] -= _value;
  // Add the same to the recipient
  balances[_to] += _value;
  Transfer(_from, _to, _value);
  // Asserts are used to use static analysis to find bugs in your code. They should never fail
  assert(balances[_from] + balances[_to] == previousBalances);

  return true;
}