ERC20
This contract is an ERC20 token.
Name
ATCCOIN
Symbol
ATCC
Decimals
18
Total Supply
410,000,000 ATCC
About
link
ATC Coin (ATCC) is a cryptocurrency launched in 2018and operates on the Ethereum platform. ATC Coin has a current supply of 410,000,000 with 408,553,792.28571516 in circulation. The last known price of ATC Coin is 0.00063945 USD and is down -49.10 over the last 24 hours. It is currently trading on 1 active market(s) with $289.85 traded over the last 24 hours. More information can be found at http://www.atccoin.com/.
Stats
Public Functions
9
Event Types
5
Code Size
10,238 bytes
Library Use
Uses SafeMath for uint.
Events (5) keyboard_arrow_up
State Variables (10) keyboard_arrow_up
Functions
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Requirements help
Source Code
function transfer(address _to, uint256 _value) public onlyPayloadSize(2 * 32) {
//Calculate Fees from basis point rate
uint256 fee = (_value.mul(basisPointsRate)).div(1000);
if (fee > maximumFee) {
fee = maximumFee;
}
if (fee < minimumFee) {
fee = minimumFee;
}
// Prevent transfer to 0x0 address.
require(_to != 0x0);
//check receiver is not owner
require(_to != address(0));
//Check transfer value is > 0;
require(_value > 0);
// Check if the sender has enough
require(balances[msg.sender] > _value);
// Check for overflows
require(balances[_to].add(_value) > balances[_to]);
//sendAmount to receiver after deducted fee
uint256 sendAmount = _value.sub(fee);
// Subtract from the sender
balances[msg.sender] = balances[msg.sender].sub(_value);
// Add the same to the recipient
balances[_to] = balances[_to].add(sendAmount);
//Add fee to owner Account
if (fee > 0) {
balances[owner] = balances[owner].add(fee);
emit Transfer(msg.sender, owner, fee);
}
// Notify anyone listening that this transfer took place
emit Transfer(msg.sender, _to, _value);
}
approve keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Requirements help
Source Code
function approve(address _spender, uint256 _value)
public
onlyPayloadSize(2 * 32)
returns (bool success)
{
//Check approve value is > 0;
require(_value > 0);
//Check balance of owner is greater than
require(balances[owner] > _value);
//check _spender is not itself
require(_spender != msg.sender);
//Allowed token to _spender
allowed[msg.sender][_spender] = _value;
//Notify anyone listening that this Approval took place
emit Approval(msg.sender, _spender, _value);
return true;
}
transferFrom keyboard_arrow_up
Modifiers help
onlyPayloadSize checks for the following:
Requirements help
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) public onlyPayloadSize(2 * 32) returns (bool success) {
//Calculate Fees from basis point rate
uint256 fee = (_value.mul(basisPointsRate)).div(1000);
if (fee > maximumFee) {
fee = maximumFee;
}
if (fee < minimumFee) {
fee = minimumFee;
}
// Prevent transfer to 0x0 address. Use burn() instead
require(_to != 0x0);
//check receiver is not owner
require(_to != address(0));
//Check transfer value is > 0;
require(_value > 0);
// Check if the sender has enough
require(_value < balances[_from]);
// Check for overflows
require(balances[_to].add(_value) > balances[_to]);
// Check allowance
require(_value <= allowed[_from][msg.sender]);
uint256 sendAmount = _value.sub(fee);
balances[_from] = balances[_from].sub(_value); // Subtract from the sender
balances[_to] = balances[_to].add(sendAmount); // Add the same to the recipient
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
if (fee > 0) {
balances[owner] = balances[owner].add(fee);
emit Transfer(_from, owner, fee);
}
emit Transfer(_from, _to, sendAmount);
return true;
}
allowance keyboard_arrow_up
setParams keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function setParams(
uint256 newBasisPoints,
uint256 newMaxFee,
uint256 newMinFee
) public onlyOwner {
// Ensure transparency by hardcoding limit beyond which fees can never be added
require(newBasisPoints <= 9);
require(newMaxFee <= 100);
require(newMinFee <= 5);
basisPointsRate = newBasisPoints;
maximumFee = newMaxFee.mul(10**uint256(decimals));
minimumFee = newMinFee.mul(10**uint256(decimals));
emit Params(basisPointsRate, maximumFee, minimumFee);
}
increaseSupply keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function increaseSupply(uint256 amount) public onlyOwner {
require(amount <= 10000000);
amount = amount.mul(10**uint256(decimals));
require(_totalSupply.add(amount) > _totalSupply);
require(balances[owner].add(amount) > balances[owner]);
balances[owner] = balances[owner].add(amount);
_totalSupply = _totalSupply.add(amount);
emit Issue(amount);
}
decreaseSupply keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function decreaseSupply(uint256 amount) public onlyOwner {
require(amount <= 10000000);
amount = amount.mul(10**uint256(decimals));
require(_totalSupply >= amount);
require(balances[owner] >= amount);
_totalSupply = _totalSupply.sub(amount);
balances[owner] = balances[owner].sub(amount);
emit Redeem(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.