ERC20
This contract is an ERC20 token.
Name
REVV
Symbol
REVV
Decimals
18
Total Supply
3,000,000,000 REVV
About link description
REVV (REVV) is a cryptocurrency and operates on the Ethereum platform. REVV has a current supply of 3,000,000,000 with 278,270,642.27439255 in circulation. The last known price of REVV is 0.1215789 USD and is down -15.55 over the last 24 hours. It is currently trading on 32 active market(s) with $2,367,641.48 traded over the last 24 hours. More information can be found at https://www.revvmotorsport.com/.
Stats
Public Functions
14
Event Types
4
Code Size
40,700 bytes
Events (4) keyboard_arrow_up
State Variables (6) keyboard_arrow_up
Functions
owner keyboard_arrow_up
renounceOwnership keyboard_arrow_up
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
whitelistOperator keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function whitelistOperator(address operator, bool enabled) external onlyOwner {
_whitelistedOperators[operator] = enabled;
emit WhitelistedOperator(operator, enabled);
}
isOperator keyboard_arrow_up
supportsInterface keyboard_arrow_up
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
Requirements help
Source Code
function transfer(address recipient, uint256 amount)
public
virtual
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
allowance keyboard_arrow_up
Source Code
function allowance(address owner, address spender)
public
view
override
returns (uint256)
{
if (isOperator(spender)) {
// allow the front-end to determine whether or not an approval is
// necessary, given that the whitelisted operator status of the
// spender is unknown. A call to WhitelistedOperators::isOperator()
// is more direct, but we want to expose a mechanism by which to
// check through the ERC20 interface.
return type(uint256).max;
} else {
return super.allowance(owner, spender);
}
}
approve keyboard_arrow_up
Requirements help
Source Code
function approve(address spender, uint256 amount)
public
virtual
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
transferFrom keyboard_arrow_up
Requirements help
Source Code
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
address msgSender = _msgSender();
// bypass the internal allowance manipulation and checks for the
// whitelisted operator (i.e. _msgSender()). as a side-effect, the
// 'Approval' event will not be emitted since the allowance was not
// updated.
if (!isOperator(msgSender)) {
_approve(sender, msgSender, allowance(sender, msgSender).sub(amount));
}
_transfer(sender, recipient, amount);
return true;
}
increaseAllowance keyboard_arrow_up
Source Code
function increaseAllowance(address spender, uint256 addedValue)
public
override
returns (bool)
{
if (isOperator(spender)) {
// bypass the internal allowance manipulation and checks for the
// whitelisted operator (i.e. spender). as a side-effect, the
// 'Approval' event will not be emitted since the allowance was not
// updated.
return true;
} else {
return super.increaseAllowance(spender, addedValue);
}
}
decreaseAllowance keyboard_arrow_up
Source Code
function decreaseAllowance(address spender, uint256 subtractedValue)
public
override
returns (bool)
{
if (isOperator(spender)) {
// bypass the internal allowance manipulation and checks for the
// whitelisted operator (i.e. spender). as a side-effect, the
// 'Approval' event will not be emitted since the allowance was not
// updated.
return true;
} else {
return super.decreaseAllowance(spender, subtractedValue);
}
}
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 ERC20WithOperators._approve keyboard_arrow_up
Source Code
function _approve(
address owner,
address spender,
uint256 value
) internal override {
if (isOperator(spender)) {
// bypass the internal allowance manipulation and checks for the
// whitelisted operator (i.e. spender). as a side-effect, the
// 'Approval' event will not be emitted since the allowance was not
// updated.
return;
} else {
super._approve(owner, spender, value);
}
}
internal ERC20.constructor keyboard_arrow_up
Parameters help
This function has no parameters.
Requirements help
Source Code
constructor() internal {
_registerInterface(type(IERC20).interfaceId);
_registerInterface(type(IERC20Detailed).interfaceId);
_registerInterface(type(IERC20Allowance).interfaceId);
// ERC20Name interfaceId: bytes4(keccak256("name()"))
_registerInterface(0x06fdde03);
// ERC20Symbol interfaceId: bytes4(keccak256("symbol()"))
_registerInterface(0x95d89b41);
// ERC20Decimals interfaceId: bytes4(keccak256("decimals()"))
_registerInterface(0x313ce567);
}
internal ERC20._transfer keyboard_arrow_up
Requirements help
Source Code
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_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 virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_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 virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_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 virtual {
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._beforeTokenTransfer keyboard_arrow_up
internal ERC165.constructor keyboard_arrow_up
internal ERC165._registerInterface keyboard_arrow_up
Requirements help
Source Code
function _registerInterface(bytes4 interfaceId) internal virtual {
require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
_supportedInterfaces[interfaceId] = true;
}
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 virtual 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 Context._msgSender keyboard_arrow_up
internal Context._msgData keyboard_arrow_up
Parameters help
This function has no parameters.
Source Code
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}