ERC20
This contract is an ERC20 token.
Name
KickToken
Symbol
KICK
Decimals
8
Total Supply
1,248,944,861,722 KICK
About
Stats
Public Functions
49
Event Types
12
Code Size
18,722 bytes
Library Use
Uses SafeMath for uint256.
Events (12) keyboard_arrow_up
State Variables (24) keyboard_arrow_up
Functions
melteradmin keyboard_arrow_up
addToMelters keyboard_arrow_up
Modifiers help
onlyMelterAdmin checks for the following:
Source Code
function addToMelters(address account) public onlyMelterAdmin {
_melters[account] = true;
}
removeFromMelters keyboard_arrow_up
Modifiers help
onlyMelterAdmin checks for the following:
Source Code
function removeFromMelters(address account) public onlyMelterAdmin {
_melters[account] = false;
}
transferMelterAdmin keyboard_arrow_up
Modifiers help
onlyMelterAdmin checks for the following:
Source Code
function transferMelterAdmin(address newMelter) public onlyMelterAdmin {
pendingMelterAdmin = newMelter;
}
claimMelterAdmin keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyPendingMelterAdmin checks for the following:
Source Code
function claimMelterAdmin() public onlyPendingMelterAdmin {
emit MelterTransferred(_melteradmin, pendingMelterAdmin);
_melteradmin = pendingMelterAdmin;
pendingMelterAdmin = address(0);
}
minteradmin keyboard_arrow_up
addToMinters keyboard_arrow_up
Modifiers help
onlyMinterAdmin checks for the following:
Source Code
function addToMinters(address account) public onlyMinterAdmin {
_minters[account] = true;
}
removeFromMinters keyboard_arrow_up
Modifiers help
onlyMinterAdmin checks for the following:
Source Code
function removeFromMinters(address account) public onlyMinterAdmin {
_minters[account] = false;
}
transferMinterAdmin keyboard_arrow_up
Modifiers help
onlyMinterAdmin checks for the following:
Source Code
function transferMinterAdmin(address newMinter) public onlyMinterAdmin {
pendingMinterAdmin = newMinter;
}
claimMinterAdmin keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyPendingMinterAdmin checks for the following:
Source Code
function claimMinterAdmin() public onlyPendingMinterAdmin {
emit MinterTransferred(_minteradmin, pendingMinterAdmin);
_minteradmin = pendingMinterAdmin;
pendingMinterAdmin = address(0);
}
paused keyboard_arrow_up
pauser keyboard_arrow_up
pauseTrigger keyboard_arrow_up
transferPauser keyboard_arrow_up
Modifiers help
onlyPauser checks for the following:
Source Code
function transferPauser(address newPauser) public onlyPauser {
pendingPauser = newPauser;
}
claimPauser keyboard_arrow_up
burnallow keyboard_arrow_up
burner keyboard_arrow_up
burnTrigger keyboard_arrow_up
transferWhitelistAdmin keyboard_arrow_up
Modifiers help
onlyWhitelistAdmin checks for the following:
Source Code
function transferWhitelistAdmin(address newAdmin) public onlyWhitelistAdmin {
pendingWhiteListAdmin = newAdmin;
}
claimBurner keyboard_arrow_up
whitelistadmin keyboard_arrow_up
addWhitelisted keyboard_arrow_up
Modifiers help
onlyWhitelistAdmin checks for the following:
Source Code
function addWhitelisted(address account) public onlyWhitelistAdmin {
_whitelisted[account] = true;
}
removeWhitelisted keyboard_arrow_up
Modifiers help
onlyWhitelistAdmin checks for the following:
Source Code
function removeWhitelisted(address account) public onlyWhitelistAdmin {
_whitelisted[account] = false;
}
isWhitelisted keyboard_arrow_up
claimWhitelistAdmin keyboard_arrow_up
Parameters help
This function has no parameters.
Modifiers help
onlyPendingWhitelistAdmin checks for the following:
Source Code
function claimWhitelistAdmin() public onlyPendingWhitelistAdmin {
emit WhitelistAdminTransferred(_whitelistadmin, pendingWhiteListAdmin);
_whitelistadmin = pendingWhiteListAdmin;
pendingWhiteListAdmin = address(0);
}
owner keyboard_arrow_up
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferOwnership(address newOwner) public onlyOwner {
pendingOwner = newOwner;
}
claimOwnership keyboard_arrow_up
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Modifiers help
canTransfer checks for the following:
Requirements help
Source Code
function transfer(address recipient, uint256 amount)
public
canTransfer
returns (bool)
{
require(
recipient != address(this),
"can't transfer tokens to the contract address"
);
_transfer(msg.sender, recipient, amount);
return true;
}
allowance keyboard_arrow_up
approve keyboard_arrow_up
Requirements help
Source Code
function approve(address spender, uint256 value) public returns (bool) {
_approve(msg.sender, spender, value);
return true;
}
approveAndCall keyboard_arrow_up
Source Code
function approveAndCall(
address _spender,
uint256 _value,
bytes memory _extraData
) public returns (bool) {
TokenRecipient spender = TokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, address(this), _extraData);
return true;
} else {
return false;
}
}
transferFrom keyboard_arrow_up
Modifiers help
canTransfer checks for the following:
Requirements help
Source Code
function transferFrom(
address sender,
address recipient,
uint256 amount
) public canTransfer returns (bool) {
require(
recipient != address(this),
"can't transfer tokens to the contract address"
);
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
return true;
}
increaseAllowance keyboard_arrow_up
Requirements help
Source Code
function increaseAllowance(address spender, uint256 addedValue)
public
returns (bool)
{
_approve(
msg.sender,
spender,
_allowances[msg.sender][spender].add(addedValue)
);
return true;
}
decreaseAllowance keyboard_arrow_up
Requirements help
Source Code
function decreaseAllowance(address spender, uint256 subtractedValue)
public
returns (bool)
{
_approve(
msg.sender,
spender,
_allowances[msg.sender][spender].sub(subtractedValue)
);
return true;
}
mint keyboard_arrow_up
burn keyboard_arrow_up
Modifiers help
whenBurn checks for the following:
_burnallow must be true
Requirements help
Source Code
function burn(uint256 amount) public whenBurn {
_burn(msg.sender, amount);
}
burnFrom keyboard_arrow_up
Modifiers help
whenBurn checks for the following:
_burnallow must be true
Requirements help
Source Code
function burnFrom(address account, uint256 amount) public whenBurn {
_burnFrom(account, amount);
}
destroy keyboard_arrow_up
destroyFrozen keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function destroyFrozen(address account, uint256 amount) public onlyOwner {
_burnFrozen(account, amount);
}
mintBatchToken keyboard_arrow_up
Modifiers help
onlyMinter checks for the following:
Requirements help
Source Code
function mintBatchToken(address[] calldata accounts, uint256[] calldata amounts)
external
onlyMinter
returns (bool)
{
require(
accounts.length > 0,
"mintBatchToken: transfer should be to at least one address"
);
require(
accounts.length == amounts.length,
"mintBatchToken: recipients.length != amounts.length"
);
for (uint256 i = 0; i < accounts.length; i++) {
_mint(accounts[i], amounts[i]);
}
return true;
}
transferFrozenToken keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferFrozenToken(
address from,
address to,
uint256 amount
) public onlyOwner returns (bool) {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_frozen_sub(from, amount);
_frozen_add(to, amount);
emit FrozenTransfer(from, to, amount);
emit Transfer(from, to, amount);
return true;
}
freezeTokens keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function freezeTokens(address account, uint256 amount)
public
onlyOwner
returns (bool)
{
_freeze(account, amount);
emit Transfer(account, address(this), amount);
return true;
}
meltTokens keyboard_arrow_up
mintFrozenTokens keyboard_arrow_up
mintBatchFrozenTokens keyboard_arrow_up
Modifiers help
onlyMinter checks for the following:
Requirements help
Source Code
function mintBatchFrozenTokens(
address[] calldata accounts,
uint256[] calldata amounts
) external onlyMinter returns (bool) {
require(
accounts.length > 0,
"mintBatchFrozenTokens: transfer should be to at least one address"
);
require(
accounts.length == amounts.length,
"mintBatchFrozenTokens: recipients.length != amounts.length"
);
for (uint256 i = 0; i < accounts.length; i++) {
_mintfrozen(accounts[i], amounts[i]);
}
return true;
}
meltBatchTokens keyboard_arrow_up
Modifiers help
onlyMelter checks for the following:
Requirements help
Source Code
function meltBatchTokens(
address[] calldata accounts,
uint256[] calldata amounts
) external onlyMelter returns (bool) {
require(
accounts.length > 0,
"mintBatchFrozenTokens: transfer should be to at least one address"
);
require(
accounts.length == amounts.length,
"mintBatchFrozenTokens: recipients.length != amounts.length"
);
for (uint256 i = 0; i < accounts.length; i++) {
_melt(accounts[i], amounts[i]);
emit Transfer(address(this), accounts[i], amounts[i]);
}
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.
internal KickToken._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);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
internal KickToken._mint keyboard_arrow_up
Requirements help
Source Code
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
require(account != address(this), "ERC20: mint to the contract address");
require(amount > 0, "ERC20: mint amount should be > 0");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(this), account, amount);
}
internal KickToken._burn keyboard_arrow_up
Requirements help
Source Code
function _burn(address account, uint256 value) internal {
require(account != address(0), "ERC20: burn from the zero address");
_totalSupply = _totalSupply.sub(value);
_balances[account] = _balances[account].sub(value);
emit Transfer(account, address(this), value);
}
internal KickToken._approve keyboard_arrow_up
Requirements help
Source Code
function _approve(
address _owner,
address spender,
uint256 value
) internal {
require(_owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[_owner][spender] = value;
emit Approval(_owner, spender, value);
}
internal KickToken._burnFrom keyboard_arrow_up
Requirements help
Source Code
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
}
internal KickToken._freeze keyboard_arrow_up
Source Code
function _freeze(address account, uint256 amount) internal {
require(account != address(0), "ERC20: freeze from the zero address");
require(amount > 0, "ERC20: freeze from the address: amount should be > 0");
_balances[account] = _balances[account].sub(amount);
_frozen_add(account, amount);
emit Freeze(account, amount);
}
internal KickToken._mintfrozen keyboard_arrow_up
Requirements help
Source Code
function _mintfrozen(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint frozen to the zero address");
require(
account != address(this),
"ERC20: mint frozen to the contract address"
);
require(amount > 0, "ERC20: mint frozen amount should be > 0");
_totalSupply = _totalSupply.add(amount);
emit Transfer(address(this), account, amount);
_frozen_add(account, amount);
emit MintFrozen(account, amount);
}
internal KickToken._melt keyboard_arrow_up
Requirements help
Source Code
function _melt(address account, uint256 amount) internal {
require(account != address(0), "ERC20: melt from the zero address");
require(amount > 0, "ERC20: melt from the address: value should be > 0");
require(
_frozen_balanceOf(account) >= amount,
"ERC20: melt from the address: balance < amount"
);
_frozen_sub(account, amount);
_balances[account] = _balances[account].add(amount);
emit Melt(account, amount);
}
internal KickToken._burnFrozen keyboard_arrow_up
Source Code
function _burnFrozen(address account, uint256 amount) internal {
require(account != address(0), "ERC20: frozen burn from the zero address");
_totalSupply = _totalSupply.sub(amount);
_frozen_sub(account, amount);
emit Transfer(account, address(this), amount);
}
internal AccountFrozenBalances._frozen_add keyboard_arrow_up
Source Code
function _frozen_add(address _account, uint256 _amount)
internal
returns (bool)
{
frozen_balances[_account] = frozen_balances[_account].add(_amount);
return true;
}
internal AccountFrozenBalances._frozen_sub keyboard_arrow_up
Source Code
function _frozen_sub(address _account, uint256 _amount)
internal
returns (bool)
{
frozen_balances[_account] = frozen_balances[_account].sub(_amount);
return true;
}