OriginToken
ERC20
This contract is an ERC20 token.
Name
OriginToken
Symbol
OGN
Decimals
18
Total Supply
1,000,000,000 OGN
About
link
description
Origin Protocol (OGN) is a cryptocurrency and operates on the Ethereum platform. Origin Protocol has a current supply of 1,000,000,000 with 316,728,501.54 in circulation. The last known price of Origin Protocol is 0.78876975 USD and is down -5.78 over the last 24 hours. It is currently trading on 69 active market(s) with $109,564,006.36 traded over the last 24 hours. More information can be found at https://www.originprotocol.com.
Stats
Public Functions
23
Event Types
14
Code Size
18,877 bytes
Events (14) keyboard_arrow_up
State Variables (12) keyboard_arrow_up
Functions
totalSupply keyboard_arrow_up
balanceOf keyboard_arrow_up
transfer keyboard_arrow_up
allowance keyboard_arrow_up
transferFrom keyboard_arrow_up
approve keyboard_arrow_up
Source Code
function approve(address _spender, uint256 _value)
public
whenNotPaused
returns (bool)
{
return super.approve(_spender, _value);
}
renounceOwnership keyboard_arrow_up
transferOwnership keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function transferOwnership(address _newOwner) public onlyOwner {
_transferOwnership(_newOwner);
}
pause keyboard_arrow_up
unpause keyboard_arrow_up
increaseApproval keyboard_arrow_up
Source Code
function increaseApproval(address _spender, uint256 _addedValue)
public
whenNotPaused
returns (bool success)
{
return super.increaseApproval(_spender, _addedValue);
}
decreaseApproval keyboard_arrow_up
Source Code
function decreaseApproval(address _spender, uint256 _subtractedValue)
public
whenNotPaused
returns (bool success)
{
return super.decreaseApproval(_spender, _subtractedValue);
}
whitelistActive keyboard_arrow_up
addAllowedTransactor keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function addAllowedTransactor(address _transactor) public onlyOwner {
emit AllowedTransactorAdded(_transactor);
allowedTransactors[_transactor] = true;
}
removeAllowedTransactor keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function removeAllowedTransactor(address _transactor) public onlyOwner {
emit AllowedTransactorRemoved(_transactor);
delete allowedTransactors[_transactor];
}
setWhitelistExpiration keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Requirements help
Source Code
function setWhitelistExpiration(uint256 _expiration) public onlyOwner {
// allow only if whitelist expiration hasn't yet been set, or if the
// whitelist expiration hasn't passed yet
require(
whitelistExpiration == 0 || whitelistActive(),
"an expired whitelist cannot be extended"
);
// prevent possible mistakes in calling this function
require(
_expiration >= block.timestamp + 1 days,
"whitelist expiration not far enough into the future"
);
emit SetWhitelistExpiration(_expiration);
whitelistExpiration = _expiration;
}
mint keyboard_arrow_up
Modifiers help
hasMintPermission checks for the following:
canMint checks for the following:
Source Code
function mint(address _to, uint256 _amount)
public
hasMintPermission
canMint
returns (bool)
{
totalSupply_ = totalSupply_.add(_amount);
balances[_to] = balances[_to].add(_amount);
emit Mint(_to, _amount);
emit Transfer(address(0), _to, _amount);
return true;
}
finishMinting keyboard_arrow_up
burn keyboard_arrow_up
burn keyboard_arrow_up
addCallSpenderWhitelist keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function addCallSpenderWhitelist(address _spender) public onlyOwner {
callSpenderWhitelist[_spender] = true;
emit AddCallSpenderWhitelist(msg.sender, _spender);
}
removeCallSpenderWhitelist keyboard_arrow_up
Modifiers help
onlyOwner checks for the following:
Source Code
function removeCallSpenderWhitelist(address _spender) public onlyOwner {
delete callSpenderWhitelist[_spender];
emit RemoveCallSpenderWhitelist(msg.sender, _spender);
}
approveAndCallWithSender keyboard_arrow_up
Parameters help
Source Code
function approveAndCallWithSender(
address _spender,
uint256 _value,
bytes4 _selector,
bytes _callParams
) public payable returns (bool) {
require(_spender != address(this), "token contract can't be approved");
require(callSpenderWhitelist[_spender], "spender not in whitelist");
require(super.approve(_spender, _value), "approve failed");
bytes memory callData = abi.encodePacked(
_selector,
uint256(msg.sender),
_callParams
);
// solium-disable-next-line security/no-call-value
require(_spender.call.value(msg.value)(callData), "proxied call failed");
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 BurnableToken._burn keyboard_arrow_up
Requirements help
Source Code
function _burn(address _who, uint256 _value) internal {
require(_value <= balances[_who]);
// no need to require value <= totalSupply, since that would imply the
// sender's balance is greater than the totalSupply, which *should* be an assertion failure
balances[_who] = balances[_who].sub(_value);
totalSupply_ = totalSupply_.sub(_value);
emit Burn(_who, _value);
emit Transfer(_who, address(0), _value);
}
internal Ownable._transferOwnership keyboard_arrow_up
Source Code
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
internal Ownable._transferOwnership keyboard_arrow_up
Source Code
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}