ETH Price: $3,051.49 (+2.38%)
Gas: 1 Gwei

Contract

0x92736b3bFF1bBD72A72478D78f18A6ab9b68b791
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer142681182022-02-24 9:56:30863 days ago1645696590IN
0x92736b3b...b9b68b791
0 ETH0.008253974.29928191
Transfer137815502021-12-11 3:51:14939 days ago1639194674IN
0x92736b3b...b9b68b791
0 ETH0.0047773843
Transfer136455162021-11-19 12:15:17960 days ago1637324117IN
0x92736b3b...b9b68b791
0 ETH0.0168875152
Transfer134665152021-10-22 9:01:25988 days ago1634893285IN
0x92736b3b...b9b68b791
0 ETH0.0048995944.1
Transfer132878142021-09-24 9:54:131016 days ago1632477253IN
0x92736b3b...b9b68b791
0 ETH0.0094981985.5
Transfer132747012021-09-22 9:11:231018 days ago1632301883IN
0x92736b3b...b9b68b791
0 ETH0.0037992734.2
Transfer132362362021-09-16 10:28:211024 days ago1631788101IN
0x92736b3b...b9b68b791
0 ETH0.0054995449.5
Transfer132358682021-09-16 9:06:131024 days ago1631783173IN
0x92736b3b...b9b68b791
0 ETH0.0048879644
Transfer132357902021-09-16 8:50:381024 days ago1631782238IN
0x92736b3b...b9b68b791
0 ETH0.005888453
Transfer132356902021-09-16 8:28:251024 days ago1631780905IN
0x92736b3b...b9b68b791
0 ETH0.007743869.7
Transfer132353002021-09-16 7:02:491024 days ago1631775769IN
0x92736b3b...b9b68b791
0 ETH0.0063321357
Transfer132313382021-09-15 16:16:151025 days ago1631722575IN
0x92736b3b...b9b68b791
0 ETH0.0106657996
Transfer132279972021-09-15 3:55:211026 days ago1631678121IN
0x92736b3b...b9b68b791
0 ETH0.0047773843
Transfer132175022021-09-13 12:57:421027 days ago1631537862IN
0x92736b3b...b9b68b791
0 ETH0.0058995153.1
Transfer130629082021-08-20 15:29:301051 days ago1629473370IN
0x92736b3b...b9b68b791
0 ETH0.0074977667.5
Transfer121901552021-04-07 3:02:441187 days ago1617764564IN
0x92736b3b...b9b68b791
0 ETH0.01209492108
Transfer121898242021-04-07 1:55:141187 days ago1617760514IN
0x92736b3b...b9b68b791
0 ETH0.01279908114.3
Transfer121602182021-04-02 12:58:341191 days ago1617368314IN
0x92736b3b...b9b68b791
0 ETH0.01833273175.5
Transfer121333742021-03-29 9:36:051195 days ago1617010565IN
0x92736b3b...b9b68b791
0 ETH0.01176147105
Transfer121120412021-03-26 2:59:331199 days ago1616727573IN
0x92736b3b...b9b68b791
0 ETH0.01401145125.1
Transfer105871482020-08-03 13:48:061433 days ago1596462486IN
0x92736b3b...b9b68b791
0 ETH0.1041507930
Transfer102287562020-06-09 2:03:141489 days ago1591668194IN
0x92736b3b...b9b68b791
0 ETH0.0347169310
Transfer100124602020-05-06 11:34:051522 days ago1588764845IN
0x92736b3b...b9b68b791
0 ETH0.01512027135
Approve98860402020-04-16 21:47:221542 days ago1587073642IN
0x92736b3b...b9b68b791
0 ETH0.000044091
Transfer98305362020-04-08 8:48:141550 days ago1586335694IN
0x92736b3b...b9b68b791
0 ETH0.0011197810
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SatisfactionToken

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-05-15
*/

pragma solidity ^0.4.23;

library Math {
  function max64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a >= b ? a : b;
  }

  function min64(uint64 a, uint64 b) internal pure returns (uint64) {
    return a < b ? a : b;
  }

  function max256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a >= b ? a : b;
  }

  function min256(uint256 a, uint256 b) internal pure returns (uint256) {
    return a < b ? a : b;
  }
}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
    c = a + b;
    assert(c >= a);
    return c;
  }
}

contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

contract CanReclaimToken is Ownable {
  using SafeERC20 for ERC20Basic;

  /**
   * @dev Reclaim all ERC20Basic compatible tokens
   * @param token ERC20Basic The address of the token contract
   */
  function reclaimToken(ERC20Basic token) external onlyOwner {
    uint256 balance = token.balanceOf(this);
    token.safeTransfer(owner, balance);
  }

}

contract HasNoContracts is Ownable {

  /**
   * @dev Reclaim ownership of Ownable contracts
   * @param contractAddr The address of the Ownable to be reclaimed.
   */
  function reclaimContract(address contractAddr) external onlyOwner {
    Ownable contractInst = Ownable(contractAddr);
    contractInst.transferOwnership(owner);
  }
}

contract HasNoEther is Ownable {

  /**
  * @dev Constructor that rejects incoming Ether
  * @dev The `payable` flag is added so we can access `msg.value` without compiler warning. If we
  * leave out payable, then Solidity will allow inheriting contracts to implement a payable
  * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
  * we could use assembly to access msg.value.
  */
  function HasNoEther() public payable {
    require(msg.value == 0);
  }

  /**
   * @dev Disallows direct send by settings a default function without the `payable` flag.
   */
  function() external {
  }

  /**
   * @dev Transfer all Ether held by the contract to the owner.
   */
  function reclaimEther() external onlyOwner {
    // solium-disable-next-line security/no-send
    assert(owner.send(address(this).balance));
  }
}

contract HasNoTokens is CanReclaimToken {

 /**
  * @dev Reject all ERC223 compatible tokens
  * @param from_ address The address that is transferring the tokens
  * @param value_ uint256 the amount of the specified token
  * @param data_ Bytes The data passed from the caller.
  */
  function tokenFallback(address from_, uint256 value_, bytes data_) external {
    from_;
    value_;
    data_;
    revert();
  }

}

contract NoOwner is HasNoEther, HasNoTokens, HasNoContracts {
}

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeERC20 {
  function safeTransfer(ERC20Basic token, address to, uint256 value) internal {
    assert(token.transfer(to, value));
  }

  function safeTransferFrom(
    ERC20 token,
    address from,
    address to,
    uint256 value
  )
    internal
  {
    assert(token.transferFrom(from, to, value));
  }

  function safeApprove(ERC20 token, address spender, uint256 value) internal {
    assert(token.approve(spender, value));
  }
}

contract CheckpointStorage {

  /**
   * @dev `Checkpoint` is the structure that attaches a block number to a
   * @dev given value, the block number attached is the one that last changed the
   * @dev value
   */
  struct Checkpoint {
    // `fromBlock` is the block number that the value was generated from
    uint128 fromBlock;

    // `value` is the amount of tokens at a specific block number
    uint128 value;
  }

  // Tracks the history of the `totalSupply` of the token
  Checkpoint[] public totalSupplyHistory;

  /**
   * @dev `getValueAt` retrieves the number of tokens at a given block number
   *
   * @param checkpoints The history of values being queried
   * @param _block The block number to retrieve the value at
   * @return The number of tokens being queried
   */
  function getValueAt(Checkpoint[] storage checkpoints, uint _block) internal view returns (uint) {
    if (checkpoints.length == 0)
      return 0;

    // Shortcut for the actual value
    if (_block >= checkpoints[checkpoints.length - 1].fromBlock)
      return checkpoints[checkpoints.length - 1].value;
    if (_block < checkpoints[0].fromBlock)
      return 0;

    // Binary search of the value in the array
    uint min = 0;
    uint max = checkpoints.length - 1;
    while (max > min) {
      uint mid = (max + min + 1) / 2;
      if (checkpoints[mid].fromBlock <= _block) {
        min = mid;
      } else {
        max = mid - 1;
      }
    }
    return checkpoints[min].value;
  }

  /**
   * @dev `updateValueAtNow` used to update the `balances` map and the
   * @dev `totalSupplyHistory`
   *
   * @param checkpoints The history of data being updated
   * @param _value The new number of tokens
   */
  function updateValueAtNow(Checkpoint[] storage checkpoints, uint _value) internal {
    if ((checkpoints.length == 0) || (checkpoints[checkpoints.length - 1].fromBlock < block.number)) {
      Checkpoint storage newCheckPoint = checkpoints[checkpoints.length++];
      newCheckPoint.fromBlock = uint128(block.number);
      newCheckPoint.value = uint128(_value);
    } else {
      Checkpoint storage oldCheckPoint = checkpoints[checkpoints.length - 1];
      oldCheckPoint.value = uint128(_value);
    }
  }
}

contract SatisfactionToken is ERC20, CheckpointStorage, NoOwner {

  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);

  event Mint(address indexed to, uint256 amount);
  event MintFinished();
  event Burn(address indexed burner, uint256 value);

  using SafeMath for uint256;

  string public name = "Satisfaction Token";
  uint8 public decimals = 18;
  string public symbol = "SAT";
  string public version;

  /**
   * `parentToken` is the Token address that was cloned to produce this token;
   *  it will be 0x0 for a token that was not cloned
   */
  SatisfactionToken public parentToken;

  /**
   * `parentSnapShotBlock` is the block number from the Parent Token that was
   *  used to determine the initial distribution of the Clone Token
   */
  uint256 public parentSnapShotBlock;

  // `creationBlock` is the block number that the Clone Token was created
  uint256 public creationBlock;

  /**
   * `balances` is the map that tracks the balance of each address, in this
   *  contract when the balance changes the block number that the change
   *  occurred is also included in the map
   */
  mapping(address => Checkpoint[]) internal balances;

  // `allowed` tracks any extra transfer rights as in all ERC20 tokens
  mapping(address => mapping(address => uint256)) internal allowed;

  // Flag that determines if the token is transferable or not.
  bool public transfersEnabled;

  bool public mintingFinished = false;

  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  constructor(
    address _parentToken,
    uint256 _parentSnapShotBlock,
    string _tokenVersion,
    bool _transfersEnabled) public
  {
    version = _tokenVersion;
    parentToken = SatisfactionToken(_parentToken);
    parentSnapShotBlock = _parentSnapShotBlock;
    transfersEnabled = _transfersEnabled;
    creationBlock = block.number;
  }

  /**
   * @dev Transfer token for a specified address
   *
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(transfersEnabled);
    require(parentSnapShotBlock < block.number);
    require(_to != address(0));

    uint256 lastBalance = balanceOfAt(msg.sender, block.number);
    require(_value <= lastBalance);

    return doTransfer(msg.sender, _to, _value, lastBalance);
  }

  /**
   * @dev Addition to ERC20 token methods. Transfer tokens to a specified
   * @dev address and execute a call with the sent data on the same transaction
   *
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amout of tokens to be transfered
   * @param _data ABI-encoded contract call to call `_to` address.
   *
   * @return true if the call function was executed successfully
   */
  function transferAndCall(address _to, uint256 _value, bytes _data) public payable returns (bool) {
    require(_to != address(this));

    transfer(_to, _value);

    // solium-disable-next-line security/no-call-value
    require(_to.call.value(msg.value)(_data));
    return true;
  }

  /**
   * @dev Transfer tokens from one address to another
   *
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(transfersEnabled);
    require(parentSnapShotBlock < block.number);
    require(_to != address(0));
    require(_value <= allowed[_from][msg.sender]);

    uint256 lastBalance = balanceOfAt(_from, block.number);
    require(_value <= lastBalance);

    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

    return doTransfer(_from, _to, _value, lastBalance);
  }

  /**
   * @dev Addition to ERC20 token methods. Transfer tokens from one address to
   * @dev another and make a contract call on the same transaction
   *
   * @param _from The address which you want to send tokens from
   * @param _to The address which you want to transfer to
   * @param _value The amout of tokens to be transferred
   * @param _data ABI-encoded contract call to call `_to` address.
   *
   * @return true if the call function was executed successfully
   */
  function transferFromAndCall(
    address _from,
    address _to,
    uint256 _value,
    bytes _data
  )
    public payable returns (bool)
  {
    require(_to != address(this));

    transferFrom(_from, _to, _value);

    // solium-disable-next-line security/no-call-value
    require(_to.call.value(msg.value)(_data));
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   *
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * @dev approve should be called when allowed[_spender] == 0. To increment
   * @dev allowed value is better to use this function to avoid 2 calls (and wait until
   * t@dev he first transaction is mined)
   * @dev From MonolithDAO Token.sol
   *
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Addition to StandardToken methods. Increase the amount of tokens that
   * @dev an owner allowed to a spender and execute a call with the sent data.
   *
   * @dev approve should be called when allowed[_spender] == 0. To increment
   * @dev allowed value is better to use this function to avoid 2 calls (and wait until
   * @dev the first transaction is mined)
   * @dev From MonolithDAO Token.sol
   *
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   * @param _data ABI-encoded contract call to call `_spender` address.
   */
  function increaseApprovalAndCall(address _spender, uint _addedValue, bytes _data) public payable returns (bool) {
    require(_spender != address(this));

    increaseApproval(_spender, _addedValue);

    // solium-disable-next-line security/no-call-value
    require(_spender.call.value(msg.value)(_data));

    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * @dev approve should be called when allowed[_spender] == 0. To decrement
   * @dev allowed value is better to use this function to avoid 2 calls (and wait until
   * @dev the first transaction is mined)
   * @dev From MonolithDAO Token.sol
   *
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Addition to StandardToken methods. Decrease the amount of tokens that
   * @dev an owner allowed to a spender and execute a call with the sent data.
   *
   * @dev approve should be called when allowed[_spender] == 0. To decrement
   * @dev allowed value is better to use this function to avoid 2 calls (and wait until
   * @dev the first transaction is mined)
   * @dev From MonolithDAO Token.sol
   *
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   * @param _data ABI-encoded contract call to call `_spender` address.
   */
  function decreaseApprovalAndCall(address _spender, uint _subtractedValue, bytes _data) public payable returns (bool) {
    require(_spender != address(this));

    decreaseApproval(_spender, _subtractedValue);

    // solium-disable-next-line security/no-call-value
    require(_spender.call.value(msg.value)(_data));

    return true;
  }

  /**
   * @param _owner The address that's balance is being requested
   * @return The balance of `_owner` at the current block
   */
  function balanceOf(address _owner) public view returns (uint256) {
    return balanceOfAt(_owner, block.number);
  }

  /**
   * @dev Queries the balance of `_owner` at a specific `_blockNumber`
   *
   * @param _owner The address from which the balance will be retrieved
   * @param _blockNumber The block number when the balance is queried
   * @return The balance at `_blockNumber`
   */
  function balanceOfAt(address _owner, uint256 _blockNumber) public view returns (uint256) {
    // These next few lines are used when the balance of the token is
    //  requested before a check point was ever created for this token, it
    //  requires that the `parentToken.balanceOfAt` be queried at the
    //  genesis block for that token as this contains initial balance of
    //  this token
    if ((balances[_owner].length == 0) || (balances[_owner][0].fromBlock > _blockNumber)) {
      if (address(parentToken) != address(0)) {
        return parentToken.balanceOfAt(_owner, Math.min256(_blockNumber, parentSnapShotBlock));
      } else {
        // Has no parent
        return 0;
      }
    // This will return the expected balance during normal situations
    } else {
      return getValueAt(balances[_owner], _blockNumber);
    }
  }

  /**
   * @dev This function makes it easy to get the total number of tokens
   *
   * @return The total number of tokens
   */
  function totalSupply() public view returns (uint256) {
    return totalSupplyAt(block.number);
  }

  /**
   * @dev Total amount of tokens at a specific `_blockNumber`.
   *
   * @param _blockNumber The block number when the totalSupply is queried
   * @return The total amount of tokens at `_blockNumber`
   */
  function totalSupplyAt(uint256 _blockNumber) public view returns(uint256) {

    // These next few lines are used when the totalSupply of the token is
    //  requested before a check point was ever created for this token, it
    //  requires that the `parentToken.totalSupplyAt` be queried at the
    //  genesis block for this token as that contains totalSupply of this
    //  token at this block number.
    if ((totalSupplyHistory.length == 0) || (totalSupplyHistory[0].fromBlock > _blockNumber)) {
      if (address(parentToken) != 0) {
        return parentToken.totalSupplyAt(Math.min256(_blockNumber, parentSnapShotBlock));
      } else {
        return 0;
      }
    // This will return the expected totalSupply during normal situations
    } else {
      return getValueAt(totalSupplyHistory, _blockNumber);
    }
  }

  /**
   * @dev Function to mint tokens
   *
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) public onlyOwner canMint returns (bool) {
    uint256 curTotalSupply = totalSupply();
    uint256 lastBalance = balanceOf(_to);

    updateValueAtNow(totalSupplyHistory, curTotalSupply.add(_amount));
    updateValueAtNow(balances[_to], lastBalance.add(_amount));

    emit Mint(_to, _amount);
    emit Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   *
   * @return True if the operation was successful.
   */
  function finishMinting() public onlyOwner canMint returns (bool) {
    mintingFinished = true;
    emit MintFinished();
    return true;
  }

  /**
   * @dev Burns a specific amount of tokens.
   *
   * @param _value uint256 The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    uint256 lastBalance = balanceOf(msg.sender);
    require(_value <= lastBalance);

    address burner = msg.sender;
    uint256 curTotalSupply = totalSupply();

    updateValueAtNow(totalSupplyHistory, curTotalSupply.sub(_value));
    updateValueAtNow(balances[burner], lastBalance.sub(_value));

    emit Burn(burner, _value);
  }

  /**
   * @dev Burns a specific amount of tokens from an address
   *
   * @param _from address The address which you want to send tokens from
   * @param _value uint256 The amount of token to be burned.
   */
  function burnFrom(address _from, uint256 _value) public {
    require(_value <= allowed[_from][msg.sender]);

    uint256 lastBalance = balanceOfAt(_from, block.number);
    require(_value <= lastBalance);

    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);

    address burner = _from;
    uint256 curTotalSupply = totalSupply();

    updateValueAtNow(totalSupplyHistory, curTotalSupply.sub(_value));
    updateValueAtNow(balances[burner], lastBalance.sub(_value));

    emit Burn(burner, _value);
  }

  /**
   * @dev Enables token holders to transfer their tokens freely if true
   *
   * @param _transfersEnabled True if transfers are allowed in the clone
   */
  function enableTransfers(bool _transfersEnabled) public onlyOwner canMint {
    transfersEnabled = _transfersEnabled;
  }

  /**
   * @dev This is the actual transfer function in the token contract, it can
   * @dev only be called by other functions in this contract.
   *
   * @param _from The address holding the tokens being transferred
   * @param _to The address of the recipient
   * @param _value The amount of tokens to be transferred
   * @param _lastBalance The last balance of from
   * @return True if the transfer was successful
   */
  function doTransfer(address _from, address _to, uint256 _value, uint256 _lastBalance) internal returns (bool) {
    if (_value == 0) {
      return true;
    }

    updateValueAtNow(balances[_from], _lastBalance.sub(_value));

    uint256 previousBalance = balanceOfAt(_to, block.number);
    updateValueAtNow(balances[_to], previousBalance.add(_value));

    emit Transfer(_from, _to, _value);
    return true;
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"creationBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_blockNumber","type":"uint256"}],"name":"balanceOfAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"totalSupplyHistory","outputs":[{"name":"fromBlock","type":"uint128"},{"name":"value","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parentToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"increaseApprovalAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_blockNumber","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"parentSnapShotBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"decreaseApprovalAndCall","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_transfersEnabled","type":"bool"}],"name":"enableTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_parentToken","type":"address"},{"name":"_parentSnapShotBlock","type":"uint256"},{"name":"_tokenVersion","type":"string"},{"name":"_transfersEnabled","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60c0604052601260808190527f536174697366616374696f6e20546f6b656e000000000000000000000000000060a090815262000040916002919062000155565b506003805460ff19166012178155604080518082019091528181527f5341540000000000000000000000000000000000000000000000000000000000602090910190815262000093916004919062000155565b50600b805461ff0019169055348015620000ac57600080fd5b5060405162001da738038062001da78339810160409081528151602083015191830151606084015160018054600160a060020a03191633600160a060020a0316179055919301903415620000ff57600080fd5b81516200011490600590602085019062000155565b5060068054600160a060020a031916600160a060020a03959095169490941790935550600755600b805460ff191691151591909117905543600855620001fa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019857805160ff1916838001178555620001c8565b82800160010185558215620001c8579182015b82811115620001c8578251825591602001919060010190620001ab565b50620001d6929150620001da565b5090565b620001f791905b80821115620001d65760008155600101620001e1565b90565b611b9d806200020a6000396000f30060806040526004361061019d5763ffffffff60e060020a60003504166305d2035b81146101ac57806306fdde03146101d5578063095ea7b31461025f578063176345141461028357806317ffc320146102aa57806318160ddd146102cd57806323b872dd146102e25780632aed7f3f1461030c578063313ce5671461032d5780634000aea01461035857806340c10f19146103b457806342966c68146103d85780634ee2cd7e146103f057806354fd4d501461041457806366188463146104295780636641d9a01461044d57806370a082311461048b57806379cc6790146104ac5780637d64bcb4146104d057806380a54001146104e55780638da5cb5b1461051657806390db623f1461052b57806395d89b4114610587578063981b24d01461059c5780639f727c27146105b4578063a9059cbb146105c9578063bef97c87146105ed578063c0ee0b8a14610602578063c1d34b8914610633578063c5bcc4f114610695578063cb3993be146106aa578063d73dd62314610706578063dd62ed3e1461072a578063f2fde38b14610751578063f41e60c514610772575b3480156101a957600080fd5b50005b3480156101b857600080fd5b506101c161078c565b604080519115158252519081900360200190f35b3480156101e157600080fd5b506101ea61079a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506101c1600160a060020a0360043516602435610825565b34801561028f57600080fd5b50610298610890565b60408051918252519081900360200190f35b3480156102b657600080fd5b506102cb600160a060020a0360043516610896565b005b3480156102d957600080fd5b50610298610962565b3480156102ee57600080fd5b506101c1600160a060020a0360043581169060243516604435610973565b34801561031857600080fd5b506102cb600160a060020a0360043516610a6b565b34801561033957600080fd5b50610342610b0d565b6040805160ff9092168252519081900360200190f35b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610b169650505050505050565b3480156103c057600080fd5b506101c1600160a060020a0360043516602435610bd1565b3480156103e457600080fd5b506102cb600435610cee565b3480156103fc57600080fd5b50610298600160a060020a0360043516602435610d9e565b34801561042057600080fd5b506101ea610eeb565b34801561043557600080fd5b506101c1600160a060020a0360043516602435610f46565b34801561045957600080fd5b5061046560043561103f565b604080516001608060020a03938416815291909216602082015281519081900390910190f35b34801561049757600080fd5b50610298600160a060020a036004351661107f565b3480156104b857600080fd5b506102cb600160a060020a0360043516602435611093565b3480156104dc57600080fd5b506101c16111d7565b3480156104f157600080fd5b506104fa611248565b60408051600160a060020a039092168252519081900360200190f35b34801561052257600080fd5b506104fa611257565b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506112669650505050505050565b34801561059357600080fd5b506101ea611293565b3480156105a857600080fd5b506102986004356112ee565b3480156105c057600080fd5b506102cb6113df565b3480156105d557600080fd5b506101c1600160a060020a036004351660243561142e565b3480156105f957600080fd5b506101c1611494565b34801561060e57600080fd5b506102cb60048035600160a060020a031690602480359160443591820191013561149d565b604080516020601f6064356004818101359283018490048402850184019095528184526101c194600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506114a29650505050505050565b3480156106a157600080fd5b5061029861155f565b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115659650505050505050565b34801561071257600080fd5b506101c1600160a060020a0360043516602435611592565b34801561073657600080fd5b50610298600160a060020a0360043581169060243516611634565b34801561075d57600080fd5b506102cb600160a060020a036004351661165f565b34801561077e57600080fd5b506102cb60043515156116f8565b600b54610100900460ff1681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b820191906000526020600020905b81548152906001019060200180831161080057829003601f168201915b505050505081565b600160a060020a033381166000818152600a6020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60085481565b60015460009033600160a060020a039081169116146108b457600080fd5b81600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050506040513d602081101561093957600080fd5b505160015490915061095e90600160a060020a0384811691168363ffffffff61173b16565b5050565b600061096d436112ee565b90505b90565b600b54600090819060ff16151561098957600080fd5b600754431161099757600080fd5b600160a060020a03841615156109ac57600080fd5b600160a060020a038086166000908152600a6020908152604080832033909416835292905220548311156109df57600080fd5b6109e98543610d9e565b9050808311156109f857600080fd5b600160a060020a038086166000908152600a602090815260408083203390941683529290522054610a2f908463ffffffff6117d716565b600160a060020a038087166000908152600a602090815260408083203390941683529290522055610a62858585846117e9565b95945050505050565b60015460009033600160a060020a03908116911614610a8957600080fd5b50600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051839283169163f2fde38b91602480830192600092919082900301818387803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b505050505050565b60035460ff1681565b600030600160a060020a031684600160a060020a031614151515610b3957600080fd5b610b43848461142e565b5083600160a060020a0316348360405180828051906020019080838360005b83811015610b7a578181015183820152602001610b62565b50505050905090810190601f168015610ba75780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610bc757600080fd5b5060019392505050565b6001546000908190819033600160a060020a03908116911614610bf357600080fd5b600b54610100900460ff1615610c0857600080fd5b610c10610962565b9150610c1b8561107f565b9050610c376000610c32848763ffffffff6118ba16565b6118c7565b600160a060020a0385166000908152600960205260409020610c6390610c32838763ffffffff6118ba16565b604080518581529051600160a060020a038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2604080518581529051600160a060020a038716916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b6000806000610cfc3361107f565b925082841115610d0b57600080fd5b339150610d16610962565b9050610d2d6000610c32838763ffffffff6117d716565b600160a060020a0382166000908152600960205260409020610d5990610c32858763ffffffff6117d716565b604080518581529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b600160a060020a0382166000908152600960205260408120541580610dfa5750600160a060020a038316600090815260096020526040812080548492908110610de357fe5b6000918252602090912001546001608060020a0316115b15610ec257600654600160a060020a031615610eba57600654600754600160a060020a0390911690634ee2cd7e908590610e359086906119bd565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d6020811015610eb157600080fd5b5051905061088a565b50600061088a565b600160a060020a0383166000908152600960205260409020610ee490836119d5565b905061088a565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b600160a060020a033381166000908152600a6020908152604080832093861683529290529081205480831115610fa357600160a060020a033381166000908152600a60209081526040808320938816835292905290812055610fda565b610fb3818463ffffffff6117d716565b600160a060020a033381166000908152600a60209081526040808320938916835292905220555b600160a060020a033381166000818152600a602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600080548290811061104d57fe5b6000918252602090912001546001608060020a0380821692507001000000000000000000000000000000009091041682565b600061108b8243610d9e565b90505b919050565b600160a060020a038083166000908152600a6020908152604080832033909416835292905290812054819081908411156110cc57600080fd5b6110d68543610d9e565b9250828411156110e557600080fd5b600160a060020a038086166000908152600a60209081526040808320339094168352929052205461111c908563ffffffff6117d716565b600160a060020a038087166000908152600a60209081526040808320339094168352929052205584915061114e610962565b90506111656000610c32838763ffffffff6117d716565b600160a060020a038216600090815260096020526040902061119190610c32858763ffffffff6117d716565b604080518581529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050505050565b60015460009033600160a060020a039081169116146111f557600080fd5b600b54610100900460ff161561120a57600080fd5b600b805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600654600160a060020a031681565b600154600160a060020a031681565b600030600160a060020a031684600160a060020a03161415151561128957600080fd5b610b438484611592565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b60008054158061132057508160008081548110151561130957fe5b6000918252602090912001546001608060020a0316115b156113cd57600654600160a060020a0316156113c557600654600754600160a060020a039091169063981b24d0906113599085906119bd565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050506040513d60208110156113bc57600080fd5b5051905061108e565b50600061108e565b6113d86000836119d5565b905061108e565b60015433600160a060020a039081169116146113fa57600080fd5b600154604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050151561142c57fe5b565b600b54600090819060ff16151561144457600080fd5b600754431161145257600080fd5b600160a060020a038416151561146757600080fd5b6114713343610d9e565b90508083111561148057600080fd5b61148c338585846117e9565b949350505050565b600b5460ff1681565b600080fd5b600030600160a060020a031684600160a060020a0316141515156114c557600080fd5b6114d0858585610973565b5083600160a060020a0316348360405180828051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561155457600080fd5b506001949350505050565b60075481565b600030600160a060020a031684600160a060020a03161415151561158857600080fd5b610b438484610f46565b600160a060020a033381166000908152600a602090815260408083209386168352929052908120546115ca908363ffffffff6118ba16565b600160a060020a033381166000818152600a602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600160a060020a039182166000908152600a6020908152604080832093909416825291909152205490565b60015433600160a060020a0390811691161461167a57600080fd5b600160a060020a038116151561168f57600080fd5b600154604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461171357600080fd5b600b54610100900460ff161561172857600080fd5b600b805460ff1916911515919091179055565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d60208110156117c857600080fd5b505115156117d257fe5b505050565b6000828211156117e357fe5b50900390565b6000808315156117fc57600191506118b1565b600160a060020a038616600090815260096020526040902061182890610c32858763ffffffff6117d716565b6118328543610d9e565b600160a060020a038616600090815260096020526040902090915061186190610c32838763ffffffff6118ba16565b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600191505b50949350505050565b8181018281101561088a57fe5b815460009081901580611900575083544390859060001981019081106118e957fe5b6000918252602090912001546001608060020a0316105b1561197257835484906119168260018301611b34565b8154811061192057fe5b600091825260209091200180546001608060020a03858116700100000000000000000000000000000000024382166fffffffffffffffffffffffffffffffff19909316929092171617815591506119b7565b83548490600019810190811061198457fe5b600091825260209091200180546001608060020a0380861670010000000000000000000000000000000002911617815590505b50505050565b60008183106119cc57816119ce565b825b9392505050565b6000806000808580549050600014156119f15760009350611b2b565b855486906000198101908110611a0357fe5b6000918252602090912001546001608060020a03168510611a6057855486906000198101908110611a3057fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a03169350611b2b565b856000815481101515611a6f57fe5b6000918252602090912001546001608060020a0316851015611a945760009350611b2b565b8554600093506000190191505b82821115611af1576002600183850101049050848682815481101515611ac357fe5b6000918252602090912001546001608060020a031611611ae557809250611aec565b6001810391505b611aa1565b8583815481101515611aff57fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a031693505b50505092915050565b8154818355818111156117d2576000838152602090206117d291810190830161097091905b80821115611b6d5760008155600101611b59565b50905600a165627a7a723058209138210f7289043d28b25f453f7d1d05d20eafc759ba87cb4943b1331bce49de002900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005302e302e31000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061019d5763ffffffff60e060020a60003504166305d2035b81146101ac57806306fdde03146101d5578063095ea7b31461025f578063176345141461028357806317ffc320146102aa57806318160ddd146102cd57806323b872dd146102e25780632aed7f3f1461030c578063313ce5671461032d5780634000aea01461035857806340c10f19146103b457806342966c68146103d85780634ee2cd7e146103f057806354fd4d501461041457806366188463146104295780636641d9a01461044d57806370a082311461048b57806379cc6790146104ac5780637d64bcb4146104d057806380a54001146104e55780638da5cb5b1461051657806390db623f1461052b57806395d89b4114610587578063981b24d01461059c5780639f727c27146105b4578063a9059cbb146105c9578063bef97c87146105ed578063c0ee0b8a14610602578063c1d34b8914610633578063c5bcc4f114610695578063cb3993be146106aa578063d73dd62314610706578063dd62ed3e1461072a578063f2fde38b14610751578063f41e60c514610772575b3480156101a957600080fd5b50005b3480156101b857600080fd5b506101c161078c565b604080519115158252519081900360200190f35b3480156101e157600080fd5b506101ea61079a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506101c1600160a060020a0360043516602435610825565b34801561028f57600080fd5b50610298610890565b60408051918252519081900360200190f35b3480156102b657600080fd5b506102cb600160a060020a0360043516610896565b005b3480156102d957600080fd5b50610298610962565b3480156102ee57600080fd5b506101c1600160a060020a0360043581169060243516604435610973565b34801561031857600080fd5b506102cb600160a060020a0360043516610a6b565b34801561033957600080fd5b50610342610b0d565b6040805160ff9092168252519081900360200190f35b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610b169650505050505050565b3480156103c057600080fd5b506101c1600160a060020a0360043516602435610bd1565b3480156103e457600080fd5b506102cb600435610cee565b3480156103fc57600080fd5b50610298600160a060020a0360043516602435610d9e565b34801561042057600080fd5b506101ea610eeb565b34801561043557600080fd5b506101c1600160a060020a0360043516602435610f46565b34801561045957600080fd5b5061046560043561103f565b604080516001608060020a03938416815291909216602082015281519081900390910190f35b34801561049757600080fd5b50610298600160a060020a036004351661107f565b3480156104b857600080fd5b506102cb600160a060020a0360043516602435611093565b3480156104dc57600080fd5b506101c16111d7565b3480156104f157600080fd5b506104fa611248565b60408051600160a060020a039092168252519081900360200190f35b34801561052257600080fd5b506104fa611257565b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506112669650505050505050565b34801561059357600080fd5b506101ea611293565b3480156105a857600080fd5b506102986004356112ee565b3480156105c057600080fd5b506102cb6113df565b3480156105d557600080fd5b506101c1600160a060020a036004351660243561142e565b3480156105f957600080fd5b506101c1611494565b34801561060e57600080fd5b506102cb60048035600160a060020a031690602480359160443591820191013561149d565b604080516020601f6064356004818101359283018490048402850184019095528184526101c194600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506114a29650505050505050565b3480156106a157600080fd5b5061029861155f565b604080516020600460443581810135601f81018490048402850184019095528484526101c1948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506115659650505050505050565b34801561071257600080fd5b506101c1600160a060020a0360043516602435611592565b34801561073657600080fd5b50610298600160a060020a0360043581169060243516611634565b34801561075d57600080fd5b506102cb600160a060020a036004351661165f565b34801561077e57600080fd5b506102cb60043515156116f8565b600b54610100900460ff1681565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b820191906000526020600020905b81548152906001019060200180831161080057829003601f168201915b505050505081565b600160a060020a033381166000818152600a6020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60085481565b60015460009033600160a060020a039081169116146108b457600080fd5b81600160a060020a03166370a08231306040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561090f57600080fd5b505af1158015610923573d6000803e3d6000fd5b505050506040513d602081101561093957600080fd5b505160015490915061095e90600160a060020a0384811691168363ffffffff61173b16565b5050565b600061096d436112ee565b90505b90565b600b54600090819060ff16151561098957600080fd5b600754431161099757600080fd5b600160a060020a03841615156109ac57600080fd5b600160a060020a038086166000908152600a6020908152604080832033909416835292905220548311156109df57600080fd5b6109e98543610d9e565b9050808311156109f857600080fd5b600160a060020a038086166000908152600a602090815260408083203390941683529290522054610a2f908463ffffffff6117d716565b600160a060020a038087166000908152600a602090815260408083203390941683529290522055610a62858585846117e9565b95945050505050565b60015460009033600160a060020a03908116911614610a8957600080fd5b50600154604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201529051839283169163f2fde38b91602480830192600092919082900301818387803b158015610af157600080fd5b505af1158015610b05573d6000803e3d6000fd5b505050505050565b60035460ff1681565b600030600160a060020a031684600160a060020a031614151515610b3957600080fd5b610b43848461142e565b5083600160a060020a0316348360405180828051906020019080838360005b83811015610b7a578181015183820152602001610b62565b50505050905090810190601f168015610ba75780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610bc757600080fd5b5060019392505050565b6001546000908190819033600160a060020a03908116911614610bf357600080fd5b600b54610100900460ff1615610c0857600080fd5b610c10610962565b9150610c1b8561107f565b9050610c376000610c32848763ffffffff6118ba16565b6118c7565b600160a060020a0385166000908152600960205260409020610c6390610c32838763ffffffff6118ba16565b604080518581529051600160a060020a038716917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a2604080518581529051600160a060020a038716916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b6000806000610cfc3361107f565b925082841115610d0b57600080fd5b339150610d16610962565b9050610d2d6000610c32838763ffffffff6117d716565b600160a060020a0382166000908152600960205260409020610d5990610c32858763ffffffff6117d716565b604080518581529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b600160a060020a0382166000908152600960205260408120541580610dfa5750600160a060020a038316600090815260096020526040812080548492908110610de357fe5b6000918252602090912001546001608060020a0316115b15610ec257600654600160a060020a031615610eba57600654600754600160a060020a0390911690634ee2cd7e908590610e359086906119bd565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610e8757600080fd5b505af1158015610e9b573d6000803e3d6000fd5b505050506040513d6020811015610eb157600080fd5b5051905061088a565b50600061088a565b600160a060020a0383166000908152600960205260409020610ee490836119d5565b905061088a565b6005805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b600160a060020a033381166000908152600a6020908152604080832093861683529290529081205480831115610fa357600160a060020a033381166000908152600a60209081526040808320938816835292905290812055610fda565b610fb3818463ffffffff6117d716565b600160a060020a033381166000908152600a60209081526040808320938916835292905220555b600160a060020a033381166000818152600a602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600080548290811061104d57fe5b6000918252602090912001546001608060020a0380821692507001000000000000000000000000000000009091041682565b600061108b8243610d9e565b90505b919050565b600160a060020a038083166000908152600a6020908152604080832033909416835292905290812054819081908411156110cc57600080fd5b6110d68543610d9e565b9250828411156110e557600080fd5b600160a060020a038086166000908152600a60209081526040808320339094168352929052205461111c908563ffffffff6117d716565b600160a060020a038087166000908152600a60209081526040808320339094168352929052205584915061114e610962565b90506111656000610c32838763ffffffff6117d716565b600160a060020a038216600090815260096020526040902061119190610c32858763ffffffff6117d716565b604080518581529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050505050565b60015460009033600160a060020a039081169116146111f557600080fd5b600b54610100900460ff161561120a57600080fd5b600b805461ff0019166101001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b600654600160a060020a031681565b600154600160a060020a031681565b600030600160a060020a031684600160a060020a03161415151561128957600080fd5b610b438484611592565b6004805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561081d5780601f106107f25761010080835404028352916020019161081d565b60008054158061132057508160008081548110151561130957fe5b6000918252602090912001546001608060020a0316115b156113cd57600654600160a060020a0316156113c557600654600754600160a060020a039091169063981b24d0906113599085906119bd565b6040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050506040513d60208110156113bc57600080fd5b5051905061108e565b50600061108e565b6113d86000836119d5565b905061108e565b60015433600160a060020a039081169116146113fa57600080fd5b600154604051600160a060020a039182169130163180156108fc02916000818181858888f19350505050151561142c57fe5b565b600b54600090819060ff16151561144457600080fd5b600754431161145257600080fd5b600160a060020a038416151561146757600080fd5b6114713343610d9e565b90508083111561148057600080fd5b61148c338585846117e9565b949350505050565b600b5460ff1681565b600080fd5b600030600160a060020a031684600160a060020a0316141515156114c557600080fd5b6114d0858585610973565b5083600160a060020a0316348360405180828051906020019080838360005b838110156115075781810151838201526020016114ef565b50505050905090810190601f1680156115345780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561155457600080fd5b506001949350505050565b60075481565b600030600160a060020a031684600160a060020a03161415151561158857600080fd5b610b438484610f46565b600160a060020a033381166000908152600a602090815260408083209386168352929052908120546115ca908363ffffffff6118ba16565b600160a060020a033381166000818152600a602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600160a060020a039182166000908152600a6020908152604080832093909416825291909152205490565b60015433600160a060020a0390811691161461167a57600080fd5b600160a060020a038116151561168f57600080fd5b600154604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461171357600080fd5b600b54610100900460ff161561172857600080fd5b600b805460ff1916911515919091179055565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561179e57600080fd5b505af11580156117b2573d6000803e3d6000fd5b505050506040513d60208110156117c857600080fd5b505115156117d257fe5b505050565b6000828211156117e357fe5b50900390565b6000808315156117fc57600191506118b1565b600160a060020a038616600090815260096020526040902061182890610c32858763ffffffff6117d716565b6118328543610d9e565b600160a060020a038616600090815260096020526040902090915061186190610c32838763ffffffff6118ba16565b84600160a060020a031686600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3600191505b50949350505050565b8181018281101561088a57fe5b815460009081901580611900575083544390859060001981019081106118e957fe5b6000918252602090912001546001608060020a0316105b1561197257835484906119168260018301611b34565b8154811061192057fe5b600091825260209091200180546001608060020a03858116700100000000000000000000000000000000024382166fffffffffffffffffffffffffffffffff19909316929092171617815591506119b7565b83548490600019810190811061198457fe5b600091825260209091200180546001608060020a0380861670010000000000000000000000000000000002911617815590505b50505050565b60008183106119cc57816119ce565b825b9392505050565b6000806000808580549050600014156119f15760009350611b2b565b855486906000198101908110611a0357fe5b6000918252602090912001546001608060020a03168510611a6057855486906000198101908110611a3057fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a03169350611b2b565b856000815481101515611a6f57fe5b6000918252602090912001546001608060020a0316851015611a945760009350611b2b565b8554600093506000190191505b82821115611af1576002600183850101049050848682815481101515611ac357fe5b6000918252602090912001546001608060020a031611611ae557809250611aec565b6001810391505b611aa1565b8583815481101515611aff57fe5b60009182526020909120015470010000000000000000000000000000000090046001608060020a031693505b50505092915050565b8154818355818111156117d2576000838152602090206117d291810190830161097091905b80821115611b6d5760008155600101611b59565b50905600a165627a7a723058209138210f7289043d28b25f453f7d1d05d20eafc759ba87cb4943b1331bce49de0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005302e302e31000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _parentToken (address): 0x0000000000000000000000000000000000000000
Arg [1] : _parentSnapShotBlock (uint256): 0
Arg [2] : _tokenVersion (string): 0.0.1
Arg [3] : _transfersEnabled (bool): False

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 302e302e31000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://9138210f7289043d28b25f453f7d1d05d20eafc759ba87cb4943b1331bce49de

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.