Blockwell

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

AddCallSpenderWhitelist Event

Parameters help
enabler
address help
spender
address help

AllowedTransactorAdded Event

Parameters help
sender
address help

AllowedTransactorRemoved Event

Parameters help
sender
address help

Approval Event

Parameters help
owner
address help
spender
address help
value
uint256 help

Burn Event

Parameters help
burner
address help
value
uint256 help

Mint Event

Parameters help
to
address help
amount
uint256 help

MintFinished Event

Parameters help

OwnershipRenounced Event

Parameters help
previousOwner
address help

OwnershipTransferred Event

Parameters help
previousOwner
address help
newOwner
address help

Pause Event

Parameters help

RemoveCallSpenderWhitelist Event

Parameters help
disabler
address help
spender
address help

SetWhitelistExpiration Event

Parameters help
expiration
uint256 help

Transfer Event

Parameters help
from
address help
to
address help
value
uint256 help

Unpause Event

Parameters help

mintingFinished Variable

bool help

owner Variable

address help

whitelistExpiration Variable

uint256 help

paused Variable

bool help

name Variable

string help

symbol Variable

string help

decimals Variable

uint8 help

callSpenderWhitelist Variable

mapping(address => bool) help

allowedTransactors Variable

mapping(address => bool) help

balances Variable

mapping(address => uint256) help
Internal Variable

totalSupply_ Variable

uint256 help
Internal Variable

allowed Variable

mapping(address => mapping(address => uint256)) help
Internal Variable

Functions Expand All Collapse All

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function totalSupply() public view returns (uint256) {
  return totalSupply_;
}

Parameters help

Name Type
_owner
address help

Properties

Visibility help public
Mutability help view
Source Code
function balanceOf(address _owner) public view returns (uint256) {
  return balances[_owner];
}

Parameters help

Name Type
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction

Modifiers help

allowedTransfer checks for the following:
Source Code
function transfer(address _to, uint256 _value)
  public
  allowedTransfer(msg.sender, _to)
  returns (bool)
{
  return super.transfer(_to, _value);
}

Parameters help

Name Type
_owner
address help
_spender
address help

Properties

Visibility help public
Mutability help view
Source Code
function allowance(address _owner, address _spender)
  public
  view
  returns (uint256)
{
  return allowed[_owner][_spender];
}

Parameters help

Name Type
_from
address help
_to
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction

Modifiers help

allowedTransfer checks for the following:
Source Code
function transferFrom(
  address _from,
  address _to,
  uint256 _value
) public allowedTransfer(_from, _to) returns (bool) {
  return super.transferFrom(_from, _to, _value);
}

Parameters help

Name Type
_spender
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction

Modifiers help

Source Code
function approve(address _spender, uint256 _value)
  public
  whenNotPaused
  returns (bool)
{
  return super.approve(_spender, _value);
}

renounceOwnership keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help transaction
Source Code
function renounceOwnership() public onlyOwner {
  emit OwnershipRenounced(owner);
  owner = address(0);
}

transferOwnership keyboard_arrow_up

Parameters help

Name Type
_newOwner
address help

Properties

Visibility help public
Mutability help transaction

Requirements help

Source Code
function transferOwnership(address _newOwner) public onlyOwner {
  _transferOwnership(_newOwner);
}

pause keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help transaction
Source Code
function pause() public onlyOwner whenNotPaused {
  paused = true;
  emit Pause();
}

unpause keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help transaction
Source Code
function unpause() public onlyOwner whenPaused {
  paused = false;
  emit Unpause();
}

increaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_addedValue
uint help

Properties

Visibility help public
Mutability help transaction

Modifiers help

Source Code
function increaseApproval(address _spender, uint256 _addedValue)
  public
  whenNotPaused
  returns (bool success)
{
  return super.increaseApproval(_spender, _addedValue);
}

decreaseApproval keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_subtractedValue
uint help

Properties

Visibility help public
Mutability help transaction

Modifiers help

Source Code
function decreaseApproval(address _spender, uint256 _subtractedValue)
  public
  whenNotPaused
  returns (bool success)
{
  return super.decreaseApproval(_spender, _subtractedValue);
}

whitelistActive keyboard_arrow_up

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help view
Source Code
function whitelistActive() public view returns (bool) {
  return block.timestamp < whitelistExpiration;
}

addAllowedTransactor keyboard_arrow_up

Parameters help

Name Type
_transactor
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function addAllowedTransactor(address _transactor) public onlyOwner {
  emit AllowedTransactorAdded(_transactor);
  allowedTransactors[_transactor] = true;
}

removeAllowedTransactor keyboard_arrow_up

Parameters help

Name Type
_transactor
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function removeAllowedTransactor(address _transactor) public onlyOwner {
  emit AllowedTransactorRemoved(_transactor);
  delete allowedTransactors[_transactor];
}

setWhitelistExpiration keyboard_arrow_up

Parameters help

Name Type
_expiration
uint256 help

Properties

Visibility help public
Mutability help transaction
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

Parameters help

Name Type
_to
address help
_amount
uint256 help

Properties

Visibility help public
Mutability help transaction
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

Parameters help

This function has no parameters.

Properties

Visibility help public
Mutability help transaction
Source Code
function finishMinting() public onlyOwner canMint returns (bool) {
  mintingFinished = true;
  emit MintFinished();
  return true;
}

burn keyboard_arrow_up

Parameters help

Name Type
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function burn(uint256 _value) public onlyOwner {
  // TODO: add a function & modifier to enable for all accounts without doing
  // a contract migration?
  super.burn(_value);
}

burn keyboard_arrow_up

Parameters help

Name Type
_who
address help
_value
uint256 help

Properties

Visibility help public
Mutability help transaction
Source Code
function burn(address _who, uint256 _value) public onlyOwner {
  _burn(_who, _value);
}

addCallSpenderWhitelist keyboard_arrow_up

Parameters help

Name Type
_spender
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function addCallSpenderWhitelist(address _spender) public onlyOwner {
  callSpenderWhitelist[_spender] = true;
  emit AddCallSpenderWhitelist(msg.sender, _spender);
}

removeCallSpenderWhitelist keyboard_arrow_up

Parameters help

Name Type
_spender
address help

Properties

Visibility help public
Mutability help transaction
Source Code
function removeCallSpenderWhitelist(address _spender) public onlyOwner {
  delete callSpenderWhitelist[_spender];
  emit RemoveCallSpenderWhitelist(msg.sender, _spender);
}

approveAndCallWithSender keyboard_arrow_up

Parameters help

Name Type
_spender
address help
_value
uint256 help
_selector
bytes4 help
_callParams
bytes help

Properties

Visibility help public
Mutability help payable

Requirements 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 Expand All Collapse All

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

Parameters help

Name Type
_who
address help
_value
uint256 help

Properties

Visibility help internal
Mutability help transaction
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

Parameters help

Name Type
_newOwner
address help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _transferOwnership(address _newOwner) internal {
  require(_newOwner != address(0));
  emit OwnershipTransferred(owner, _newOwner);
  owner = _newOwner;
}

internal Ownable._transferOwnership keyboard_arrow_up

Parameters help

Name Type
_newOwner
address help

Properties

Visibility help internal
Mutability help transaction

Requirements help

Source Code
function _transferOwnership(address _newOwner) internal {
  require(_newOwner != address(0));
  emit OwnershipTransferred(owner, _newOwner);
  owner = _newOwner;
}