Contract 0x18dfd8c468ed83397C0E1caDAe01E1e65E86d275

 

TxHash Block Age From To Value [TxFee]
0xed39e25cf5c6d14c5be862b10bdca56fa0bef07d81c3665d2015b5e0b9055339692751961 days 23 hrs ago0x9ff3aed9524d14774325d91be2b62deb4a1f6596 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.006427025
0xb527f8457ecd73f5a424d7832bef11bf8e940d6463624c6e06d57191291fb353686860871 days 20 hrs ago0xa6b69acce0e8393b5fd0b223954c62aa12bc8728 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.000093228
0xee0b3ed784dd1dba5a0e420eab5b2a9c288bd9251a47706c4caf56cadecb81dd6141787191 days 19 hrs ago0x95ff52084fe5b9a9a28c322af847546092fba3d1 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.001570587
0x299ead6f0aec89ce068aea93eec0421338ab170a1e271bdd8bc9c25e10d8c3aa6141776191 days 19 hrs ago0x95ff52084fe5b9a9a28c322af847546092fba3d1 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.001025
0xb0430abf115c05967dc3a2144a0673382d701c05b01faa5129114097432ed2ea6141680191 days 20 hrs ago0x216826afc12463571f0be89a406e843123f9fa2b IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.00053307
0x180e8b3a657cf9dbb656f173f3fd53ac2c343fed5a07e6096f2818b60c2ad1146105561197 days 23 hrs ago0x95ff52084fe5b9a9a28c322af847546092fba3d1 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.0009594
0xb6b1720e27476b8d0ac3c924255b62de4cc4cba00e37e84105de28d6f56d0cf26069207204 days 2 hrs ago0xca3e4e1050b6fd3aac46d1c446915819c68d0a57 IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.0000586377
0xbe4afacac90f7065a0fa787aab2cc8da5d7a08314574d9816940d777eacd55fb6034459209 days 22 hrs ago0xb612126318cf820b5220bd287567fd2dea8d604b IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.000049642
0x664651c37f5787db5f2039fca739143ace4995b6c27717ce5a4ca1c261ed5f566033352210 days 3 hrs ago0xd06d8b74baa90e0af1c5d752e4d47dd426aa162a IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.000267701
0xe7036c074585829f011734587c00e4e55166191dfa9904d28d323d470ecbaad34412709486 days 9 hrs ago0xb612126318cf820b5220bd287567fd2dea8d604b IN  0x18dfd8c468ed83397c0e1cadae01e1e65e86d2750 Ether0.0133808
0x2b0100a8d4bbb5769ba4f32e033e6287960d925f8ae5d3aeaf5c1553f53e3aed4412488486 days 10 hrs ago0xb612126318cf820b5220bd287567fd2dea8d604b IN  Contract Creation0 Ether0.1629755
[ Download CSV Export 

Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: PacioToken
Compiler Version: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
/* Owned.sol

Pacio Core Ltd https://www.pacio.io

2017.03.04 djh Originally created
2017.08.16 Brought into use for Pacio token sale use
2017.08.22 Logging revised

Owned is a Base Contract for contracts that are:
• "owned"
• can have their owner changed by a call to ChangeOwner() by the owner
• can be paused  from an active state by a call to Pause() by the owner
• can be resumed from a paused state by a call to Resume() by the owner

Modifier functions available for use here and in child contracts are:
• IsOwner()  which throws if called by other than the current owner
• IsActive() which throws if called when the contract is paused

Changes of owner are logged via event LogOwnerChange(address indexed previousOwner, address newOwner)

*/

pragma solidity ^0.4.15;

contract Owned {
  address public ownerA; // Contract owner
  bool    public pausedB;

  // Constructor NOT payable
  // -----------
  function Owned() {
    ownerA = msg.sender;
  }

  // Modifier functions
  // ------------------
  modifier IsOwner {
    require(msg.sender == ownerA);
    _;
  }

  modifier IsActive {
    require(!pausedB);
    _;
  }

  // Events
  // ------
  event LogOwnerChange(address indexed PreviousOwner, address NewOwner);
  event LogPaused();
  event LogResumed();

  // State changing public methods
  // -----------------------------
  // Change owner
  function ChangeOwner(address vNewOwnerA) IsOwner {
    require(vNewOwnerA != address(0)
         && vNewOwnerA != ownerA);
    LogOwnerChange(ownerA, vNewOwnerA);
    ownerA = vNewOwnerA;
  }

  // Pause
  function Pause() IsOwner {
    pausedB = true; // contract has been paused
    LogPaused();
  }

  // Resume
  function Resume() IsOwner {
    pausedB = false; // contract has been resumed
    LogResumed();
  }
} // End Owned contract


// DSMath.sol
// From https://dappsys.readthedocs.io/en/latest/ds_math.html

// Reduced version - just the fns used by Pacio

// Copyright (C) 2015, 2016, 2017  DappHub, LLC

// Licensed under the Apache License, Version 2.0 (the "License").
// You may not use this file except in compliance with the License.

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND (express or implied).

contract DSMath {
  /*
  standard uint256 functions
  */

  function add(uint256 x, uint256 y) constant internal returns (uint256 z) {
    assert((z = x + y) >= x);
  }

  function sub(uint256 x, uint256 y) constant internal returns (uint256 z) {
    assert((z = x - y) <= x);
  }

  function mul(uint256 x, uint256 y) constant internal returns (uint256 z) {
    z = x * y;
    assert(x == 0 || z / x == y);
  }

  // div isn't needed. Only error case is div by zero and Solidity throws on that
  // function div(uint256 x, uint256 y) constant internal returns (uint256 z) {
  //   z = x / y;
  // }

  // subMaxZero(x, y)
  // Pacio addition to avoid throwing if a subtraction goes below zero and return 0 in that case.
  function subMaxZero(uint256 x, uint256 y) constant internal returns (uint256 z) {
    if (y > x)
      z = 0;
    else
      z = x - y;
  }
}

// ERC20Token.sol 2017.08.16 started

// 2017.10.07 isERC20Token changed to isEIP20Token

/*
ERC Token Standard #20 Interface
https://github.com/ethereum/EIPs/issues/20
https://github.com/frozeman/EIPs/blob/94bc4311e889c2c58c561c074be1483f48ac9374/EIPS/eip-20-token-standard.md
Using Dappsys naming style of 3 letter names: src, dst, guy, wad
*/

contract ERC20Token is Owned, DSMath {
  // Data
  bool public constant isEIP20Token = true; // Interface declaration
  uint public totalSupply;     // Total tokens minted
  bool public saleInProgressB; // when true stops transfers

  mapping(address => uint) internal iTokensOwnedM;                 // Tokens owned by an account
  mapping(address => mapping (address => uint)) private pAllowedM; // Owner of account approves the transfer of an amount to another account

  // ERC20 Events
  // ============
  // Transfer
  // Triggered when tokens are transferred.
  event Transfer(address indexed src, address indexed dst, uint wad);

  // Approval
  // Triggered whenever approve(address spender, uint wad) is called.
  event Approval(address indexed Sender, address indexed Spender, uint Wad);

  // ERC20 Methods
  // =============
  // Public Constant Methods
  // -----------------------
  // balanceOf()
  // Returns the token balance of account with address guy
  function balanceOf(address guy) public constant returns (uint) {
    return iTokensOwnedM[guy];
  }

  // allowance()
  // Returns the number of tokens approved by guy that can be transferred ("spent") by spender
  function allowance(address guy, address spender) public constant returns (uint) {
    return pAllowedM[guy][spender];
  }

  // Modifier functions
  // ------------------
  modifier IsTransferOK(address src, address dst, uint wad) {
    require(!saleInProgressB          // Sale not in progress
         && !pausedB                  // IsActive
         && iTokensOwnedM[src] >= wad // Source has the tokens available
      // && wad > 0                   // Non-zero transfer No! The std says: Note Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event
         && dst != src                // Destination is different from source
         && dst != address(this)      // Not transferring to this token contract
         && dst != ownerA);           // Not transferring to the owner of this contract - the token sale contract
    _;
  }

  // State changing public methods made pause-able and with call logging
  // -----------------------------
  // transfer()
  // Transfers wad of sender's tokens to another account, address dst
  // No need for overflow check given that totalSupply is always far smaller than max uint
  function transfer(address dst, uint wad) IsTransferOK(msg.sender, dst, wad) returns (bool) {
    iTokensOwnedM[msg.sender] -= wad; // There is no need to check this for underflow via a sub() call given the IsTransferOK iTokensOwnedM[src] >= wad check
    iTokensOwnedM[dst] = add(iTokensOwnedM[dst], wad);
    Transfer(msg.sender, dst, wad);
    return true;
  }

  // transferFrom()
  // Sender transfers wad tokens from src account src to dst account, if
  // sender had been approved by src for a transfer of >= wad tokens from src's account
  // by a prior call to approve() with that call's sender being this calls src,
  //  and its spender being this call's sender.
  function transferFrom(address src, address dst, uint wad) IsTransferOK(src, dst, wad) returns (bool) {
    require(pAllowedM[src][msg.sender] >= wad); // Transfer is approved
    iTokensOwnedM[src]         -= wad; // There is no need to check this for underflow given the require above
    pAllowedM[src][msg.sender] -= wad; // There is no need to check this for underflow given the require above
    iTokensOwnedM[dst] = add(iTokensOwnedM[dst], wad);
    Transfer(src, dst, wad);
    return true;
  }

  // approve()
  // Approves the passed address (of spender) to spend up to wad tokens on behalf of msg.sender,
  //  in one or more transferFrom() calls
  // If this function is called again it overwrites the current allowance with wad.
  function approve(address spender, uint wad) IsActive returns (bool) {
    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    // djh: This appears to be of doubtful value, and is not used in the Dappsys library though it is in the Zeppelin one. Removed.
    // require((wad == 0) || (pAllowedM[msg.sender][spender] == 0));
    pAllowedM[msg.sender][spender] = wad;
    Approval(msg.sender, spender, wad);
    return true;
  }
} // End ERC20Token contracts

// PacioToken.sol 2017.08.22 started

/* The Pacio Token named PIOE for the Ethereum version

Follows the EIP20 standard: https://github.com/frozeman/EIPs/blob/94bc4311e889c2c58c561c074be1483f48ac9374/EIPS/eip-20-token-standard.md

2017.10.08 Changed to suit direct deployment rather than being created via the PacioICO constructor, so that Etherscan can recognise it.

*/

contract PacioToken is ERC20Token {
  // enum NFF {  // Founders/Foundation enum
  //   Founders, // 0 Pacio Founders
  //   Foundatn} // 1 Pacio Foundation
  string public constant name   = "Pacio Token";
  string public constant symbol = "PIOE";
  uint8  public constant decimals = 12;
  uint   public tokensIssued;           // Tokens issued - tokens in circulation
  uint   public tokensAvailable;        // Tokens available = total supply less allocated and issued tokens
  uint   public contributors;           // Number of contributors
  uint   public founderTokensAllocated; // Founder tokens allocated
  uint   public founderTokensVested;    // Founder tokens vested. Same as iTokensOwnedM[pFounderToksA] until tokens transferred. Unvested tokens = founderTokensAllocated - founderTokensVested
  uint   public foundationTokensAllocated; // Foundation tokens allocated
  uint   public foundationTokensVested;    // Foundation tokens vested. Same as iTokensOwnedM[pFoundationToksA] until tokens transferred. Unvested tokens = foundationTokensAllocated - foundationTokensVested
  bool   public icoCompleteB;           // Is set to true when both presale and full ICO are complete. Required for vesting of founder and foundation tokens and transfers of PIOEs to PIOs
  address private pFounderToksA;        // Address for Founder tokens issued
  address private pFoundationToksA;     // Address for Foundation tokens issued

  // Events
  // ------
  event LogIssue(address indexed Dst, uint Picos);
  event LogSaleCapReached(uint TokensIssued); // not tokensIssued just to avoid compiler Warning: This declaration shadows an existing declaration
  event LogIcoCompleted();
  event LogBurn(address Src, uint Picos);
  event LogDestroy(uint Picos);

  // No Constructor
  // --------------

  // Initialisation/Settings Methods IsOwner but not IsActive
  // -------------------------------

  // Initialise()
  // To be called by deployment owner to change ownership to the sale contract, and do the initial allocations and minting.
  // Can only be called once. If the sale contract changes but the token contract stays the same then ChangeOwner() can be called via PacioICO.ChangeTokenContractOwner() to change the owner to the new contract
  function Initialise(address vNewOwnerA) { // IsOwner c/o the super.ChangeOwner() call
    require(totalSupply == 0);          // can only be called once
    super.ChangeOwner(vNewOwnerA);      // includes an IsOwner check so don't need to repeat it here
    founderTokensAllocated    = 10**20; // 10% or 100 million = 1e20 Picos
    foundationTokensAllocated = 10**20; // 10% or 100 million = 1e20 Picos This call sets tokensAvailable
    // Equivalent of Mint(10**21) which can't be used here as msg.sender is the old (deployment) owner // 1 Billion PIOEs    = 1e21 Picos, all minted)
    totalSupply           = 10**21; // 1 Billion PIOEs    = 1e21 Picos, all minted)
    iTokensOwnedM[ownerA] = 10**21;
    tokensAvailable       = 8*(10**20); // 800 million [String: '800000000000000000000'] s: 1, e: 20, c: [ 8000000 ] }
    // From the EIP20 Standard: A token contract which creates new tokens SHOULD trigger a Transfer event with the _from address set to 0x0 when tokens are created.
    Transfer(0x0, ownerA, 10**21); // log event 0x0 from == minting
  }

  // Mint()
  // PacioICO() includes a Mint() fn to allow manual calling of this if necessary e.g. re full ICO going over the cap
  function Mint(uint picos) IsOwner {
    totalSupply           = add(totalSupply,           picos);
    iTokensOwnedM[ownerA] = add(iTokensOwnedM[ownerA], picos);
    tokensAvailable = subMaxZero(totalSupply, tokensIssued + founderTokensAllocated + foundationTokensAllocated);
    // From the EIP20 Standard: A token contract which creates new tokens SHOULD trigger a Transfer event with the _from address set to 0x0 when tokens are created.
    Transfer(0x0, ownerA, picos); // log event 0x0 from == minting
  }

  // PrepareForSale()
  // stops transfers and allows purchases
  function PrepareForSale() IsOwner {
    require(!icoCompleteB); // Cannot start selling again once ICO has been set to completed
    saleInProgressB = true; // stops transfers
  }

  // ChangeOwner()
  // To be called by owner to change the token contract owner, expected to be to a sale contract
  // Transfers any minted tokens from old to new sale contract
  function ChangeOwner(address vNewOwnerA) { // IsOwner c/o the super.ChangeOwner() call
    transfer(vNewOwnerA, iTokensOwnedM[ownerA]); // includes checks
    super.ChangeOwner(vNewOwnerA); // includes an IsOwner check so don't need to repeat it here
  }

  // Public Constant Methods
  // -----------------------
  // None. Used public variables instead which result in getter functions

  // State changing public methods made pause-able and with call logging
  // -----------------------------
  // Issue()
  // Transfers picos tokens to dst to issue them. IsOwner because this is expected to be called from the token sale contract
  function Issue(address dst, uint picos) IsOwner IsActive returns (bool) {
    require(saleInProgressB      // Sale is in progress
         && iTokensOwnedM[ownerA] >= picos // Owner has the tokens available
      // && picos > 0            // Non-zero issue No need to check for this
         && dst != address(this) // Not issuing to this token contract
         && dst != ownerA);      // Not issuing to the owner of this contract - the token sale contract
    if (iTokensOwnedM[dst] == 0)
      contributors++;
    iTokensOwnedM[ownerA] -= picos; // There is no need to check this for underflow via a sub() call given the iTokensOwnedM[ownerA] >= picos check
    iTokensOwnedM[dst]     = add(iTokensOwnedM[dst], picos);
    tokensIssued           = add(tokensIssued,       picos);
    tokensAvailable    = subMaxZero(tokensAvailable, picos); // subMaxZero() in case a sale goes over, only possible for full ICO, when cap is for all available tokens.
    LogIssue(dst, picos);                                    // If that should happen,may need to mint some more PIOEs to allow founder and foundation vesting to complete.
    return true;
  }

  // SaleCapReached()
  // To be be called from the token sale contract when a cap (pre or full) is reached
  // Allows transfers
  function SaleCapReached() IsOwner IsActive {
    saleInProgressB = false; // allows transfers
    LogSaleCapReached(tokensIssued);
  }

  // Functions for manual calling via same name function in PacioICO()
  // =================================================================
  // IcoCompleted()
  // To be be called manually via PacioICO after full ICO ends. Could be called before cap is reached if ....
  function IcoCompleted() IsOwner IsActive {
    require(!icoCompleteB);
    saleInProgressB = false; // allows transfers
    icoCompleteB    = true;
    LogIcoCompleted();
  }

  // SetFFSettings(address vFounderTokensA, address vFoundationTokensA, uint vFounderTokensAllocation, uint vFoundationTokensAllocation)
  // Allows setting Founder and Foundation addresses (or changing them if an appropriate transfer has been done)
  //  plus optionally changing the allocations which are set by the constructor, so that they can be varied post deployment if required re a change of plan
  // All values are optional - zeros can be passed
  // Must have been called with non-zero Founder and Foundation addresses before Founder and Foundation vesting can be done
  function SetFFSettings(address vFounderTokensA, address vFoundationTokensA, uint vFounderTokensAllocation, uint vFoundationTokensAllocation) IsOwner {
    if (vFounderTokensA    != address(0)) pFounderToksA    = vFounderTokensA;
    if (vFoundationTokensA != address(0)) pFoundationToksA = vFoundationTokensA;
    if (vFounderTokensAllocation > 0)    assert((founderTokensAllocated    = vFounderTokensAllocation)    >= founderTokensVested);
    if (vFoundationTokensAllocation > 0) assert((foundationTokensAllocated = vFoundationTokensAllocation) >= foundationTokensVested);
    tokensAvailable = totalSupply - founderTokensAllocated - foundationTokensAllocated - tokensIssued;
  }

  // VestFFTokens()
  // To vest Founder and/or Foundation tokens
  // 0 can be passed meaning skip that one
  // No separate event as the LogIssue event can be used to trace vesting transfers
  // To be be called manually via PacioICO
  function VestFFTokens(uint vFounderTokensVesting, uint vFoundationTokensVesting) IsOwner IsActive {
    require(icoCompleteB); // ICO must be completed before vesting can occur. djh?? Add other time restriction?
    if (vFounderTokensVesting > 0) {
      assert(pFounderToksA != address(0)); // Founders token address must have been set
      assert((founderTokensVested  = add(founderTokensVested,          vFounderTokensVesting)) <= founderTokensAllocated);
      iTokensOwnedM[ownerA]        = sub(iTokensOwnedM[ownerA],        vFounderTokensVesting);
      iTokensOwnedM[pFounderToksA] = add(iTokensOwnedM[pFounderToksA], vFounderTokensVesting);
      LogIssue(pFounderToksA,          vFounderTokensVesting);
      tokensIssued = add(tokensIssued, vFounderTokensVesting);
    }
    if (vFoundationTokensVesting > 0) {
      assert(pFoundationToksA != address(0)); // Foundation token address must have been set
      assert((foundationTokensVested  = add(foundationTokensVested,          vFoundationTokensVesting)) <= foundationTokensAllocated);
      iTokensOwnedM[ownerA]           = sub(iTokensOwnedM[ownerA],           vFoundationTokensVesting);
      iTokensOwnedM[pFoundationToksA] = add(iTokensOwnedM[pFoundationToksA], vFoundationTokensVesting);
      LogIssue(pFoundationToksA,       vFoundationTokensVesting);
      tokensIssued = add(tokensIssued, vFoundationTokensVesting);
    }
    // Does not affect tokensAvailable as these tokens had already been allowed for in tokensAvailable when allocated
  }

  // Burn()
  // For use when transferring issued PIOEs to PIOs
  // To be be called manually via PacioICO or from a new transfer contract to be written which is set to own this one
  function Burn(address src, uint picos) IsOwner IsActive {
    require(icoCompleteB);
    iTokensOwnedM[src] = subMaxZero(iTokensOwnedM[src], picos);
    tokensIssued       = subMaxZero(tokensIssued, picos);
    totalSupply        = subMaxZero(totalSupply,  picos);
    LogBurn(src, picos);
    // Does not affect tokensAvailable as these are issued tokens that are being burnt
  }

  // Destroy()
  // For use when transferring unissued PIOEs to PIOs
  // To be be called manually via PacioICO or from a new transfer contract to be written which is set to own this one
  function Destroy(uint picos) IsOwner IsActive {
    require(icoCompleteB);
    totalSupply     = subMaxZero(totalSupply,     picos);
    tokensAvailable = subMaxZero(tokensAvailable, picos);
    LogDestroy(picos);
  }

  // Fallback function
  // =================
  // No sending ether to this contract!
  // Not payable so trying to send ether will throw
  function() {
    revert(); // reject any attempt to access the token contract other than via the defined methods with their testing for valid access
  }
} // End PacioToken contract

Contract ABI
[{"constant":true,"inputs":[],"name":"saleInProgressB","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"PrepareForSale","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"picos","type":"uint256"}],"name":"Mint","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"SaleCapReached","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"icoCompleteB","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"Resume","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensAvailable","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isEIP20Token","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"Pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contributors","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"guy","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vFounderTokensA","type":"address"},{"name":"vFoundationTokensA","type":"address"},{"name":"vFounderTokensAllocation","type":"uint256"},{"name":"vFoundationTokensAllocation","type":"uint256"}],"name":"SetFFSettings","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensIssued","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"founderTokensVested","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vNewOwnerA","type":"address"}],"name":"Initialise","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"foundationTokensVested","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"picos","type":"uint256"}],"name":"Issue","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"picos","type":"uint256"}],"name":"Burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"IcoCompleted","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"picos","type":"uint256"}],"name":"Destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"foundationTokensAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"guy","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ownerA","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vFounderTokensVesting","type":"uint256"},{"name":"vFoundationTokensVesting","type":"uint256"}],"name":"VestFFTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"vNewOwnerA","type":"address"}],"name":"ChangeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"founderTokensAllocated","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pausedB","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"Dst","type":"address"},{"indexed":false,"name":"Picos","type":"uint256"}],"name":"LogIssue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"TokensIssued","type":"uint256"}],"name":"LogSaleCapReached","type":"event"},{"anonymous":false,"inputs":[],"name":"LogIcoCompleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"Src","type":"address"},{"indexed":false,"name":"Picos","type":"uint256"}],"name":"LogBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"Picos","type":"uint256"}],"name":"LogDestroy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"dst","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"Sender","type":"address"},{"indexed":true,"name":"Spender","type":"address"},{"indexed":false,"name":"Wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"PreviousOwner","type":"address"},{"indexed":false,"name":"NewOwner","type":"address"}],"name":"LogOwnerChange","type":"event"},{"anonymous":false,"inputs":[],"name":"LogPaused","type":"event"},{"anonymous":false,"inputs":[],"name":"LogResumed","type":"event"}]

Contract Creation Code
60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6116e4806100316000396000f300606060405236156101a95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630123347481146101bc57806306fdde03146101e3578063076609781461026e5780630788370314610283578063095ea7b31461029b57806318160ddd146102d157806323b872dd146102f657806326e56c0514610332578063313ce567146103475780633455603514610370578063490d6d111461039757806360659a92146103ac57806367043001146103d15780636985a022146103f85780636e7e3b2b1461040d57806370a082311461043257806377725b88146104635780637c48bbda146104905780637c99922d146104b5578063867022d1146104da57806395d89b41146104fb578063a05d068d14610586578063a9059cbb146105ab578063c65a3f76146105e1578063cc16f5db14610617578063cf15b87d1461063b578063d3f5559c14610650578063d7b1b9c414610668578063dd62ed3e1461068d578063e06f3d38146106c4578063e6e2e1cd146106f3578063f28532921461070e578063f33dc1fa1461072f578063f371ec4914610754575b34156101b457600080fd5b5b600080fd5b005b34156101c757600080fd5b6101cf61077b565b604051901515815260200160405180910390f35b34156101ee57600080fd5b6101f6610784565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102335780820151818401525b60200161021a565b50505050905090810190601f1680156102605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561027957600080fd5b6101ba6107bb565b005b341561028e57600080fd5b6101ba6004356107f7565b005b34156102a657600080fd5b6101cf600160a060020a03600435166024356108ad565b604051901515815260200160405180910390f35b34156102dc57600080fd5b6102e4610930565b60405190815260200160405180910390f35b341561030157600080fd5b6101cf600160a060020a0360043581169060243516604435610936565b604051901515815260200160405180910390f35b341561033d57600080fd5b6101ba610ab8565b005b341561035257600080fd5b61035a610b2f565b60405160ff909116815260200160405180910390f35b341561037b57600080fd5b6101cf610b34565b604051901515815260200160405180910390f35b34156103a257600080fd5b6101ba610b3d565b005b34156103b757600080fd5b6102e4610ba6565b60405190815260200160405180910390f35b34156103dc57600080fd5b6101cf610bac565b604051901515815260200160405180910390f35b341561040357600080fd5b6101ba610bb1565b005b341561041857600080fd5b6102e4610c20565b60405190815260200160405180910390f35b341561043d57600080fd5b6102e4600160a060020a0360043516610c26565b60405190815260200160405180910390f35b341561046e57600080fd5b6101ba600160a060020a0360043581169060243516604435606435610c45565b005b341561049b57600080fd5b6102e4610d25565b60405190815260200160405180910390f35b34156104c057600080fd5b6102e4610d2b565b60405190815260200160405180910390f35b34156104e557600080fd5b6101ba600160a060020a0360043516610d31565b005b341561050657600080fd5b6101f6610dbc565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102335780820151818401525b60200161021a565b50505050905090810190601f1680156102605780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561059157600080fd5b6102e4610df3565b60405190815260200160405180910390f35b34156105b657600080fd5b6101cf600160a060020a0360043516602435610df9565b604051901515815260200160405180910390f35b34156105ec57600080fd5b6101cf600160a060020a0360043516602435610f2c565b604051901515815260200160405180910390f35b341561062257600080fd5b6101ba600160a060020a03600435166024356110ac565b005b341561064657600080fd5b6101ba611196565b005b341561065b57600080fd5b6101ba600435611222565b005b341561067357600080fd5b6102e46112bd565b60405190815260200160405180910390f35b341561069857600080fd5b6102e4600160a060020a03600435811690602435166112c3565b60405190815260200160405180910390f35b34156106cf57600080fd5b6106d76112f0565b604051600160a060020a03909116815260200160405180910390f35b34156106fe57600080fd5b6101ba6004356024356112ff565b005b341561071957600080fd5b6101ba600160a060020a0360043516611548565b005b341561073a57600080fd5b6102e461157a565b60405190815260200160405180910390f35b341561075f57600080fd5b6101cf611580565b604051901515815260200160405180910390f35b60025460ff1681565b60408051908101604052600b81527f506163696f20546f6b656e000000000000000000000000000000000000000000602082015281565b60005433600160a060020a039081169116146107d657600080fd5b600c5460ff16156107e657600080fd5b6002805460ff191660011790555b5b565b60005433600160a060020a0390811691161461081257600080fd5b61081e60015482611590565b60015560008054600160a060020a03168152600360205260409020546108449082611590565b60008054600160a060020a0316815260036020526040902055600154600a5460085460055461087693929101016115a4565b60065560008054600160a060020a0316906000805160206116998339815191528360405190815260200160405180910390a35b5b50565b6000805460a060020a900460ff16156108c557600080fd5b600160a060020a03338116600081815260046020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b92915050565b60015481565b60025460009084908490849060ff1615801561095c575060005460a060020a900460ff16155b80156109815750600160a060020a038316600090815260036020526040902054819010155b801561099f575082600160a060020a031682600160a060020a031614155b80156109bd575030600160a060020a031682600160a060020a031614155b80156109d75750600054600160a060020a03838116911614155b15156109e257600080fd5b600160a060020a038088166000908152600460209081526040808320339094168352929052205485901015610a1657600080fd5b600160a060020a03808816600090815260036020818152604080842080548b90039055600482528084203386168552825280842080548b90039055938a168352522054610a639086611590565b600160a060020a03808816600081815260036020526040908190209390935591908916906000805160206116998339815191529088905190815260200160405180910390a3600193505b5b5050509392505050565b60005433600160a060020a03908116911614610ad357600080fd5b60005460a060020a900460ff1615610aea57600080fd5b6002805460ff191690556005547fea9053089eb0a566d14b6fa613f9cd756308616ec1220fcaa2811c4753bd26a39060405190815260200160405180910390a15b5b5b565b600c81565b600c5460ff1681565b60005433600160a060020a03908116911614610b5857600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7f4d6aa4949e2b9a4b6f2e8d032e8e289b4ce5fe924db2d9e18e92d2edb955c560405160405180910390a15b5b565b60065481565b600181565b60005433600160a060020a03908116911614610bcc57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f777ecb744cfc69794c3985ebff0496449aafc907c556f1d4003201beb364e80f60405160405180910390a15b5b565b60075481565b600160a060020a0381166000908152600360205260409020545b919050565b60005433600160a060020a03908116911614610c6057600080fd5b600160a060020a03841615610c9d57600c805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a038716021790555b600160a060020a03831615610cd557600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b6000821115610cef576009546008839055821015610cef57fe5b5b6000811115610d0a57600b54600a829055811015610d0a57fe5b5b600554600a546008546001540303036006555b5b50505050565b60055481565b60095481565b60015415610d3e57600080fd5b610d47816115c2565b68056bc75e2d631000006008819055600a55683635c9adc5dea00000600181905560008054600160a060020a03908116825260036020526040808320849055682b5e3af16b18800000600655825490911692600080516020611699833981519152915190815260200160405180910390a35b50565b60408051908101604052600481527f50494f4500000000000000000000000000000000000000000000000000000000602082015281565b600b5481565b60025460009033908490849060ff16158015610e1f575060005460a060020a900460ff16155b8015610e445750600160a060020a038316600090815260036020526040902054819010155b8015610e62575082600160a060020a031682600160a060020a031614155b8015610e80575030600160a060020a031682600160a060020a031614155b8015610e9a5750600054600160a060020a03838116911614155b1515610ea557600080fd5b600160a060020a033381166000908152600360205260408082208054899003905591881681522054610ed79086611590565b600160a060020a0380881660008181526003602052604090819020939093559133909116906000805160206116998339815191529088905190815260200160405180910390a3600193505b5b50505092915050565b6000805433600160a060020a03908116911614610f4857600080fd5b60005460a060020a900460ff1615610f5f57600080fd5b60025460ff168015610f8a575060008054600160a060020a0316815260036020526040902054829010155b8015610fa8575030600160a060020a031683600160a060020a031614155b8015610fc25750600054600160a060020a03848116911614155b1515610fcd57600080fd5b600160a060020a0383166000908152600360205260409020541515610ff6576007805460010190555b60008054600160a060020a0390811682526003602052604080832080548690039055908516825290205461102a9083611590565b600160a060020a0384166000908152600360205260409020556005546110509083611590565b60055560065461106090836115a4565b600655600160a060020a0383167f600c523bbab56f21f37d382a0935adbae55e98c4bda5c1f3f11d60d60ddf36338360405190815260200160405180910390a25060015b5b5b92915050565b60005433600160a060020a039081169116146110c757600080fd5b60005460a060020a900460ff16156110de57600080fd5b600c5460ff1615156110ef57600080fd5b600160a060020a03821660009081526003602052604090205461111290826115a4565b600160a060020a03831660009081526003602052604090205560055461113890826115a4565b60055560015461114890826115a4565b6001557f38d762ef507761291a578e921acfe29c1af31a7331ea03e391cf16cfc4d4f5818282604051600160a060020a03909216825260208201526040908101905180910390a15b5b5b5050565b60005433600160a060020a039081169116146111b157600080fd5b60005460a060020a900460ff16156111c857600080fd5b600c5460ff16156111d857600080fd5b6002805460ff19908116909155600c805490911660011790557fd39e4607bf77a7536c03b411bcdfc5291d87772400a12cb753a2c286b3ec937b60405160405180910390a15b5b5b565b60005433600160a060020a0390811691161461123d57600080fd5b60005460a060020a900460ff161561125457600080fd5b600c5460ff16151561126557600080fd5b611271600154826115a4565b60015560065461128190826115a4565b6006557f386161059715b23c3cb4306eb909f39cab2dbf8ddc1a65a88cb2b119fc065fb28160405190815260200160405180910390a15b5b5b50565b600a5481565b600160a060020a038083166000908152600460209081526040808320938516835292905220545b92915050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461131a57600080fd5b60005460a060020a900460ff161561133157600080fd5b600c5460ff16151561134257600080fd5b600082111561144a57600c546101009004600160a060020a0316151561136457fe5b60085461137360095484611590565b6009819055111561138057fe5b60008054600160a060020a03168152600360205260409020546113a39083611684565b60008054600160a060020a0390811682526003602052604080832093909355600c54610100900416815220546113d99083611590565b600c8054600160a060020a03610100918290048116600090815260036020526040908190209490945591540416907f600c523bbab56f21f37d382a0935adbae55e98c4bda5c1f3f11d60d60ddf36339084905190815260200160405180910390a261144660055483611590565b6005555b600081111561119057600d54600160a060020a0316151561146757fe5b600a54611476600b5483611590565b600b819055111561148357fe5b60008054600160a060020a03168152600360205260409020546114a69082611684565b60008054600160a060020a0390811682526003602052604080832093909355600d5416815220546114d79082611590565b600d8054600160a060020a039081166000908152600360205260409081902093909355905416907f600c523bbab56f21f37d382a0935adbae55e98c4bda5c1f3f11d60d60ddf36339083905190815260200160405180910390a261153d60055482611590565b6005555b5b5b5b5050565b60008054600160a060020a031681526003602052604090205461156c908290610df9565b506108a9816115c2565b5b50565b60085481565b60005460a060020a900460ff1681565b8082018281101561092957fe5b5b92915050565b6000828211156115b657506000610929565b508082035b5b92915050565b60005433600160a060020a039081169116146115dd57600080fd5b600160a060020a038116158015906116035750600054600160a060020a03828116911614155b151561160e57600080fd5b600054600160a060020a03167fe516f4dd5cedc9fa569ffc0fe731ed5801fb5ff4a1860847fe1c7db3c590c55182604051600160a060020a03909116815260200160405180910390a26000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b8082038281111561092957fe5b5b929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820366e6a424e6e3a1835d343f3bda9b5102505dbdf85609c62bd93bc1fa63811640029


   Swarm Source:
bzzr://366e6a424e6e3a1835d343f3bda9b5102505dbdf85609c62bd93bc1fa6381164
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.