ERC20
This contract is an ERC20 token.
Name
HOMEROS
Symbol
HMR
Decimals
18
Total Supply
10,000,000,000 HMR
About link description
Homeros (HMR) is a cryptocurrency launched in 2019and operates on the Ethereum platform. Homeros has a current supply of 10,000,000,000 with 514,542,615.34 in circulation. The last known price of Homeros is 0.04486922 USD and is up 1.46 over the last 24 hours. It is currently trading on 34 active market(s) with $4,561,369.11 traded over the last 24 hours. More information can be found at https://homerosnet.com/.
Stats
Public Functions
15
Event Types
7
Code Size
12,821 bytes
Events (7) keyboard_arrow_up
State Variables (11) keyboard_arrow_up
Functions
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address _to, uint256 _value) public returns (bool) {
_transfer(msg.sender, _to, _value);
return true;
}
burn keyboard_arrow_up
Requirements help
Source Code
function burn(uint256 _value) public returns (bool) {
require(LockList[msg.sender] == false, "ERC20: User Locked !");
uint256 stage;
stage = balanceOf[msg.sender].sub(
_value,
"ERC20: transfer amount exceeds balance"
);
require(
stage >= LockedTokens[msg.sender],
"ERC20: transfer amount exceeds Senders Locked Amount"
);
balanceOf[msg.sender] = balanceOf[msg.sender].sub(
_value,
"ERC20: Burn amount exceeds balance."
);
totalSupply = totalSupply.sub(
_value,
"ERC20: Burn amount exceeds total supply"
);
emit Burn(msg.sender, _value);
emit Transfer(msg.sender, address(0), _value);
return true;
}
burnFrom keyboard_arrow_up
Requirements help
Source Code
function burnFrom(address Account, uint256 _value)
public
returns (bool success)
{
require(LockList[msg.sender] == false, "ERC20: User Locked !");
require(LockList[Account] == false, "ERC20: Owner Locked !");
uint256 stage;
require(Account != address(0), "ERC20: Burn from the zero address");
_approve(
Account,
msg.sender,
_allowance[Account][msg.sender].sub(
_value,
"ERC20: burn amount exceeds allowance"
)
);
//Do not allow burn if Accounts tokens are locked.
stage = balanceOf[Account].sub(
_value,
"ERC20: Transfer amount exceeds allowance"
);
require(
stage >= LockedTokens[Account],
"ERC20: Burn amount exceeds accounts locked amount"
);
balanceOf[Account] = stage; // Subtract from the sender
//Deduct burn amount from totalSupply
totalSupply = totalSupply.sub(
_value,
"ERC20: Burn Amount exceeds totalSupply"
);
emit Burn(Account, _value);
emit Transfer(Account, address(0), _value);
return true;
}
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(
address _from,
address _to,
uint256 _value
) public returns (bool success) {
_transfer(_from, _to, _value);
_approve(
_from,
msg.sender,
_allowance[_from][msg.sender].sub(
_value,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
approve keyboard_arrow_up
Requirements help
Source Code
function approve(address _spender, uint256 _value)
public
returns (bool success)
{
uint256 unapprovbal;
// Do not allow approval if amount exceeds locked amount
unapprovbal = balanceOf[msg.sender].sub(
_value,
"ERC20: Allowance exceeds balance of approver"
);
require(
unapprovbal >= LockedTokens[msg.sender],
"ERC20: Approval amount exceeds locked amount "
);
_allowance[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
approveAndCall keyboard_arrow_up
Source Code
function approveAndCall(
address _spender,
uint256 _value,
bytes memory _extraData
) public returns (bool success) {
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, address(this), _extraData);
return true;
}
}
allowance keyboard_arrow_up
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0), "ERC20 New Owner cannot be zero address");
owner = newOwner;
}
UserLock keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function UserLock(address Account, bool mode) public onlyOwner {
LockList[Account] = mode;
}
LockTokens keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function LockTokens(address Account, uint256 amount) public onlyOwner {
LockedTokens[Account] = amount;
}
UnLockTokens keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function UnLockTokens(address Account) public onlyOwner {
LockedTokens[Account] = 0;
}
mint keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function mint(uint256 _value) public onlyOwner returns (bool success) {
require(balanceOf[msg.sender] >= _value);
require(balanceOf[msg.sender] != 0x0); // Check if the sender has enough
balanceOf[msg.sender] = balanceOf[msg.sender].add(
_value,
"ERC20: Addition overflow"
); // Subtract from the sender
totalSupply = totalSupply.add(_value, "ERC20: totalSupply increased ");
emit Mint(msg.sender, _value);
return true;
}
dropToken keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function dropToken(address[] memory receivers, uint256[] memory values)
public
onlyOwner
{
require(receivers.length != 0);
require(receivers.length == values.length);
for (uint256 i = 0; i < receivers.length; i++) {
address receiver = receivers[i];
uint256 amount = values[i];
transfer(receiver, amount);
airDropHistory[receiver] += amount;
emit AirDrop(receiver, amount);
}
}
enableTokenTransfer keyboard_arrow_up
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 TOKENERC20._transfer keyboard_arrow_up
Requirements help
Source Code
function _transfer(
address _from,
address _to,
uint256 _value
) internal {
uint256 stage;
require(_from != address(0), "ERC20: transfer from the zero address");
require(_to != address(0), "ERC20: transfer to the zero address"); // Prevent transfer to 0x0 address. Use burn() instead
require(LockList[msg.sender] == false, "ERC20: Caller Locked !"); // Check if msg.sender is locked or not
require(LockList[_from] == false, "ERC20: Sender Locked !");
require(LockList[_to] == false, "ERC20: Receipient Locked !");
require(TransferAllowed == true, "ERC20: Transfer enabled false !");
// Check if sender balance is locked
stage = balanceOf[_from].sub(
_value,
"ERC20: transfer amount exceeds balance"
);
require(
stage >= LockedTokens[_from],
"ERC20: transfer amount exceeds Senders Locked Amount"
);
//Deduct and add balance
balanceOf[_from] = stage;
balanceOf[_to] = balanceOf[_to].add(_value, "ERC20: Addition overflow");
//emit Transfer event
emit Transfer(_from, _to, _value);
}
internal TOKENERC20._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");
_allowance[owner][_spender] = amount;
emit Approval(owner, _spender, amount);
}