ETH Price: $3,434.09 (-1.44%)

Token

GOLDX (GOLDX)
 

Overview

Max Total Supply

680.061970940655474327 GOLDX

Holders

4,274 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.014899503149665492 GOLDX

Value
$0.00
0x6f9f3bc055C5f86972E45588a610349824f69eE1
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GoldBackedToken

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-01-12
*/

pragma solidity ^0.4.17;


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  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 c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  //uint256 public totalSupply;
  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);
}



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20 
 */
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);
}

contract GoldFees is Ownable {
    using SafeMath for uint256;
    
    // e.g. if rate = 0.0054
    //uint rateN = 9999452055;
    uint rateN = 9999452054794520548;
    uint rateD = 19;
    uint public maxDays;
    uint public maxRate;

    
    function GoldFees() public {
        calcMax();
    }

    function calcMax() internal {
        maxDays = 1;
        maxRate = rateN;
        
        
        uint pow = 2;
        do {
            uint newN = rateN ** pow;
            if (newN / maxRate != maxRate) {
                maxDays = pow / 2;
                break;
            }
            maxRate = newN;
            pow *= 2;
        } while (pow < 2000);
        
    }

    function updateRate(uint256 _n, uint256 _d) public onlyOwner {
        rateN = _n;
        rateD = _d;
        calcMax();
    }
    
    function rateForDays(uint256 numDays) public view returns (uint256 rate) {
        if (numDays <= maxDays) {
            uint r = rateN ** numDays;
            uint d = rateD * numDays;
            if (d > 18) {
                uint div = 10 ** (d-18);
                rate = r / div;
            } else {
                div = 10 ** (18 - d);
                rate = r * div;
            }
        } else {
            uint256 md1 = numDays / 2;
            uint256 md2 = numDays - md1;
             uint256 r2;

            uint256 r1 = rateForDays(md1);
            if (md1 == md2) {
                r2 = r1;
            } else {
                r2 = rateForDays(md2);
            }
           

            //uint256 r1 = rateForDays(maxDays);
            //uint256 r2 = rateForDays(numDays-maxDays);
            rate = r1.mul(r2)/(10**18);
        }
        return; 
        
    }

    uint256 constant public UTC2MYT = 1483200000;

    function wotDay(uint256 time) public pure returns (uint256) {
        return (time - UTC2MYT) / (1 days);
    }

    // minimum fee is 1 unless same day
    function calcFees(uint256 start, uint256 end, uint256 startAmount) public view returns (uint256 amount, uint256 fee) {
        if (startAmount == 0) 
            return;
        uint256 numberOfDays = wotDay(end) - wotDay(start);
        if (numberOfDays == 0) {
            amount = startAmount;
            return;
        }
        amount = (rateForDays(numberOfDays) * startAmount) / (1 ether);
        if ((fee == 0) && (amount != 0)) 
            amount--;
        fee = startAmount.sub(amount);
    }
}


contract Reclaimable is Ownable {
	ERC20Basic constant internal RECLAIM_ETHER = ERC20Basic(0x0);

	function reclaim(ERC20Basic token)
        public
        onlyOwner
    {
        address reclaimer = msg.sender;
        if (token == RECLAIM_ETHER) {
            reclaimer.transfer(this.balance);
        } else {
            uint256 balance = token.balanceOf(this);
            require(token.transfer(reclaimer, balance));
        }
    }
}


// This is primarity used for the migration. Use in the GBT contract is for convenience
contract GBTBasic {

    struct Balance {
        uint256 amount;                 // amount through update or transfer
        uint256 lastUpdated;            // DATE last updated
        uint256 nextAllocationIndex;    // which allocationsOverTime record contains next update
        uint256 allocationShare;        // the share of allocationPool that this holder gets (means they hold HGT)
	}

	/*Creates an array with all balances*/
	mapping (address => Balance) public balances;
	
    struct Allocation { 
        uint256     amount;
        uint256     date;
    }
	
	Allocation[]   public allocationsOverTime;
	Allocation[]   public currentAllocations;

	function currentAllocationLength() view public returns (uint256) {
		return currentAllocations.length;
	}

	function aotLength() view public returns (uint256) {
		return allocationsOverTime.length;
	}
}


contract GoldBackedToken is Ownable, ERC20, Pausable, GBTBasic, Reclaimable {
	using SafeMath for uint;

	function GoldBackedToken(GoldFees feeCalc, GBTBasic _oldToken) public {
		uint delta = 3799997201200178500814753;
		feeCalculator = feeCalc;
        oldToken = _oldToken;
		// now migrate the non balance stuff
		uint x;
		for (x = 0; x < oldToken.aotLength(); x++) {
			Allocation memory al;
			(al.amount, al.date) = oldToken.allocationsOverTime(x);
			allocationsOverTime.push(al);
		}
		allocationsOverTime[3].amount = allocationsOverTime[3].amount.sub(delta);
		for (x = 0; x < oldToken.currentAllocationLength(); x++) {
			(al.amount, al.date) = oldToken.currentAllocations(x);
			al.amount = al.amount.sub(delta);
			currentAllocations.push(al);
		}

		// 1st Minting : TxHash 0x8ba9175d77ed5d3bbf0ddb3666df496d3789da5aa41e46228df91357d9eae8bd
		// amount = 528359800000000000000;
		// date = 1512646845;
		
		// 2nd Minting : TxHash 0xb3ec483dc8cf7dbbe29f4b86bd371702dd0fdaccd91d1b2d57d5e9a18b23d022
		// date = 1513855345;
		// amount = 1003203581831868623088;

		// Get values of first minting at second minting date
		// feeCalc(1512646845,1513855345,528359800000000000000) => (527954627221032516031,405172778967483969)

		mintedGBT.date = 1515700247;
		mintedGBT.amount = 1529313490861692541644;
	}

  function totalSupply() view public returns (uint256) {
	  uint256 minted;
	  uint256 mFees;
	  uint256 uminted;
	  uint256 umFees;
	  uint256 allocated;
	  uint256 aFees;
	  (minted,mFees) = calcFees(mintedGBT.date,now,mintedGBT.amount);
	  (uminted,umFees) = calcFees(unmintedGBT.date,now,unmintedGBT.amount);
	  (allocated,aFees) = calcFees(currentAllocations[0].date,now,currentAllocations[0].amount);
	  if (minted+allocated>uminted) {
	  	return minted.add(allocated).sub(uminted);
	  } else {
		return 0;
	  }
  }

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

  event TokenMinted(address destination, uint256 amount);
  event TokenBurned(address source, uint256 amount);
  
	string public name = "GOLDX";
	string public symbol = "GOLDX";
	uint256 constant public  decimals = 18;  // same as ETH
	uint256 constant public  hgtDecimals = 8;
		
	uint256 constant public allocationPool = 1 * 10**9 * 10**hgtDecimals;      // total HGT holdings
	uint256	         public	maxAllocation  = 38 * 10**5 * 10**decimals;			// max GBT that can ever ever be given out
	uint256	         public	totAllocation;			// amount of GBT so far
	
	GoldFees		 public feeCalculator;
	address		     public HGT;					// HGT contract address

	function updateMaxAllocation(uint256 newMax) public onlyOwner {
		require(newMax > 38 * 10**5 * 10**decimals);
		maxAllocation = newMax;
	}

	function setFeeCalculator(GoldFees newFC) public onlyOwner {
		feeCalculator = newFC;
	}

	
	// GoldFees needs to take care of Domain Offset - do not do here

	function calcFees(uint256 from, uint256 to, uint256 amount) view public returns (uint256 val, uint256 fee) {
		return feeCalculator.calcFees(from,to,amount);
	}

	
	mapping (address => mapping (address => uint)) public allowance;
    mapping (address => bool) updated;

    GBTBasic oldToken;

	function migrateBalance(address where) public {
		if (!updated[where]) {
            uint256 am;
            uint256 lu;
            uint256 ne;
            uint256 al;
            (am,lu,ne,al) = oldToken.balances(where);
            balances[where] = Balance(am,lu,ne,al);
            updated[where] = true;
        }

	}
	
	function update(address where) internal {
        uint256 pos;
		uint256 fees;
		uint256 val;
		migrateBalance(where);
        (val,fees,pos) = updatedBalance(where);
	    balances[where].nextAllocationIndex = pos;
	    balances[where].amount = val;
        balances[where].lastUpdated = now;
	}
	
	function updatedBalance(address where) view public returns (uint val, uint fees, uint pos) {
		uint256 cVal;
		uint256 cFees;
		uint256 cAmount;

        uint256 am;
        uint256 lu;
        uint256 ne;
        uint256 al;
		Balance memory bb;

		// calculate update of balance in account
        if (updated[where]) {
            bb = balances[where];
            am = bb.amount;
            lu = bb.lastUpdated;
            ne = bb.nextAllocationIndex;
            al = bb.allocationShare;
        } else {
            (am,lu,ne,al) = oldToken.balances(where);
        }
		(val,fees) = calcFees(lu,now,am);
		// calculate update based on accrued disbursals
	    pos = ne;
		if ((pos < currentAllocations.length) && (al != 0)) {
			cAmount = currentAllocations[ne].amount.mul(al).div( allocationPool);
			(cVal,cFees) = calcFees(currentAllocations[ne].date,now,cAmount);
		} 
	    val = val.add(cVal);
		fees = fees.add(cFees);
		pos = currentAllocations.length;
	}

    function balanceOf(address where) view public returns (uint256 val) {
        uint256 fees;
		uint256 pos;
        (val,fees,pos) = updatedBalance(where);
        return ;
    }

	event GoldAllocation(uint256 amount, uint256 date);
	event FeeOnAllocation(uint256 fees, uint256 date);

	event PartComplete();
	event StillToGo(uint numLeft);
	uint256 public partPos;
	uint256 public partFees;
	uint256 partL;
	Allocation[]   public partAllocations;

	function partAllocationLength() view public returns (uint) {
		return partAllocations.length;
	}

	function addAllocationPartOne(uint newAllocation,uint numSteps) 
		public 
		onlyMinter 
	{
		require(partPos == 0);
		uint256 thisAllocation = newAllocation;

		require(totAllocation < maxAllocation);		// cannot allocate more than this;

		if (currentAllocations.length > partAllocations.length) {
			partAllocations = currentAllocations;
		}

		if (totAllocation + thisAllocation > maxAllocation) {
			thisAllocation = maxAllocation.sub(totAllocation);
			log0("max alloc reached");
		}
		totAllocation = totAllocation.add(thisAllocation);

		GoldAllocation(thisAllocation,now);

        Allocation memory newDiv;
        newDiv.amount = thisAllocation;
        newDiv.date = now;
		// store into history
	    allocationsOverTime.push(newDiv);
		// add this record to the end of currentAllocations
		partL = partAllocations.push(newDiv);
		// update all other records with calcs from last record
		if (partAllocations.length < 2) { // no fees to consider
			PartComplete();
			currentAllocations = partAllocations;
			FeeOnAllocation(0,now);
			return;
		}
		//
		// The only fees that need to be collected are the fees on location zero.
		// Since they are the last calculated = they come out with the break
		//
		for (partPos = partAllocations.length - 2; partPos >= 0; partPos-- ) {
			(partAllocations[partPos].amount,partFees) = calcFees(partAllocations[partPos].date,now,partAllocations[partPos].amount);

			partAllocations[partPos].amount = partAllocations[partPos].amount.add(partAllocations[partL - 1].amount);
			partAllocations[partPos].date = now;
			if ((partPos == 0) || (partPos == partAllocations.length-numSteps)) {
				break; 
			}
		}
		if (partPos != 0) {
			StillToGo(partPos);
			return; // not done yet
		}
		PartComplete();
		FeeOnAllocation(partFees,now);
		currentAllocations = partAllocations;
	}

	function addAllocationPartTwo(uint numSteps) 
		public 
		onlyMinter 
	{
		require(numSteps > 0);
		require(partPos > 0);
		for (uint i = 0; i < numSteps; i++ ) {
			partPos--;
			(partAllocations[partPos].amount,partFees) = calcFees(partAllocations[partPos].date,now,partAllocations[partPos].amount);
			partAllocations[partPos].amount = partAllocations[partPos].amount.add(partAllocations[partL - 1].amount);
			partAllocations[partPos].date = now;
			if (partPos == 0) {
				break; 
			}
		}
		if (partPos != 0) {
			StillToGo(partPos);
			return; // not done yet
		}
		PartComplete();
		FeeOnAllocation(partFees,now);
		currentAllocations = partAllocations;
	}

	function setHGT(address _hgt) public onlyOwner {
		HGT = _hgt;
	}

	function parentFees(address where) public whenNotPaused {
		require(msg.sender == HGT);
	    update(where);		
	}
	
	function parentChange(address where, uint newValue) public whenNotPaused { // called when HGT balance changes
		require(msg.sender == HGT);
	    balances[where].allocationShare = newValue;
	}
	
	/* send GBT */
	function transfer(address _to, uint256 _value) public whenNotPaused returns (bool ok) {
		require(_to != address(0));
	    update(msg.sender);              // Do this to ensure sender has enough funds.
		update(_to); 

        balances[msg.sender].amount = balances[msg.sender].amount.sub(_value);
        balances[_to].amount = balances[_to].amount.add(_value);
		Transfer(msg.sender, _to, _value); //Notify anyone listening that this transfer took place
        return true;
	}

	function transferFrom(address _from, address _to, uint _value) public whenNotPaused returns (bool success) {
		require(_to != address(0));
		var _allowance = allowance[_from][msg.sender];

	    update(_from);              // Do this to ensure sender has enough funds.
		update(_to); 

		balances[_to].amount = balances[_to].amount.add(_value);
		balances[_from].amount = balances[_from].amount.sub(_value);
		allowance[_from][msg.sender] = _allowance.sub(_value);
		Transfer(_from, _to, _value);
		return true;
	}

  	function approve(address _spender, uint _value) public whenNotPaused returns (bool success) {
		require((_value == 0) || (allowance[msg.sender][_spender] == 0));
    	allowance[msg.sender][_spender] = _value;
    	Approval(msg.sender, _spender, _value);
    	return true;
  	}

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowance[msg.sender][_spender] = allowance[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowance[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowance[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowance[msg.sender][_spender] = 0;
    } else {
      allowance[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowance[msg.sender][_spender]);
    return true;
  }

  	function allowance(address _owner, address _spender) public view returns (uint remaining) {
    	return allowance[_owner][_spender];
  	}

	// Minting Functions 
	address public authorisedMinter;

	function setMinter(address minter) public onlyOwner {
		authorisedMinter = minter;
	}

	modifier onlyMinter() {
		require(msg.sender == authorisedMinter);
		_;
	}

	Allocation public mintedGBT;		// minting adds to this one
	Allocation public unmintedGBT;		// allocating adds here, burning takes from here if minted is empty
	
	function mintTokens(address destination, uint256 amount) 
		onlyMinter
		public 
	{
		require(msg.sender == authorisedMinter);
		update(destination);
		balances[destination].amount = balances[destination].amount.add(amount);
		TokenMinted(destination,amount);
		Transfer(0x0,destination,amount); // ERC20 compliance
		//
		// TotalAllocation stuff
		//
		uint256 fees;
		(mintedGBT.amount,fees) = calcFees(mintedGBT.date,now,mintedGBT.amount);
		mintedGBT.amount = mintedGBT.amount.add(amount);
		mintedGBT.date = now;
	}

	function burnTokens(address source, uint256 amount) 
		onlyMinter
		public 
	{
		update(source);
		balances[source].amount = balances[source].amount.sub(amount);
		TokenBurned(source,amount);
		Transfer(source,0x0,amount); // ERC20 compliance
		//
		// TotalAllocation stuff
		//
		uint256 fees;
		(unmintedGBT.amount,fees) = calcFees(unmintedGBT.date,now,unmintedGBT.amount);
		unmintedGBT.date = now;
		unmintedGBT.amount = unmintedGBT.amount.add(amount);
	}

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"currentAllocations","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"source","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnTokens","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMax","type":"uint256"}],"name":"updateMaxAllocation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"amount","type":"uint256"},{"name":"lastUpdated","type":"uint256"},{"name":"nextAllocationIndex","type":"uint256"},{"name":"allocationShare","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"where","type":"address"}],"name":"migrateBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"where","type":"address"}],"name":"parentFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentAllocationLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintedGBT","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"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":"where","type":"address"}],"name":"balanceOf","outputs":[{"name":"val","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"where","type":"address"}],"name":"updatedBalance","outputs":[{"name":"val","type":"uint256"},{"name":"fees","type":"uint256"},{"name":"pos","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allocationsOverTime","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authorisedMinter","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"partAllocationLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFC","type":"address"}],"name":"setFeeCalculator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allocationPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeCalculator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"numSteps","type":"uint256"}],"name":"addAllocationPartTwo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"partAllocations","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_hgt","type":"address"}],"name":"setHGT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"aotLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"amount","type":"uint256"}],"name":"calcFees","outputs":[{"name":"val","type":"uint256"},{"name":"fee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAllocation","type":"uint256"},{"name":"numSteps","type":"uint256"}],"name":"addAllocationPartOne","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"partFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unmintedGBT","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"where","type":"address"},{"name":"newValue","type":"uint256"}],"name":"parentChange","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"HGT","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"partPos","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hgtDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"feeCalc","type":"address"},{"name":"_oldToken","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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":"owner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DeductFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"destination","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"source","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"date","type":"uint256"}],"name":"GoldAllocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"fees","type":"uint256"},{"indexed":false,"name":"date","type":"uint256"}],"name":"FeeOnAllocation","type":"event"},{"anonymous":false,"inputs":[],"name":"PartComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"numLeft","type":"uint256"}],"name":"StillToGo","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

606060409081526000805460a060020a60ff02191690558051908101604052600581527f474f4c4458000000000000000000000000000000000000000000000000000000602082015260049080516200005d9291602001906200049d565b506040805190810160405260058082527f474f4c44580000000000000000000000000000000000000000000000000000006020830152908051620000a69291602001906200049d565b506a0324ae69ab7120970000006006553415620000c257600080fd5b6040516040806200280d833981016040528080519190602001805191506000905080620000ee62000522565b60008054600160a060020a03338116600160a060020a031992831617835560088054898316908416179055600c8054918816919092161790556a0324ae42d41b84b11d47a1935091505b600c54600160a060020a031663cb1a32a46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200019a57600080fd5b6102c65a03f11515620001ac57600080fd5b505050604051805190508210156200029157600c54600160a060020a03166378388eb6836000604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff841602815260048101919091526024016040805180830381600087803b15156200022857600080fd5b6102c65a03f115156200023a57600080fd5b50505060405180519060200180516020840152508152600280546001810162000264838262000539565b60009283526020909220839160020201815181556020820151600191820155939093019250620001389050565b620002cd8360026003815481101515620002a757fe5b600091825260209091206002909102015490640100000000620020af6200048a82021704565b600280546003908110620002dd57fe5b6000918252602082206002909102019190915591505b600c54600160a060020a0316633e7d1acc6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200035557600080fd5b6102c65a03f115156200036757600080fd5b505050604051805190508210156200046a57600c54600160a060020a0316630901a3f1836000604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff841602815260048101919091526024016040805180830381600087803b1515620003e357600080fd5b6102c65a03f11515620003f557600080fd5b505050604051805190602001805160208401525081526200042783825190640100000000620020af6200048a82021704565b815260038054600181016200043d838262000539565b60009283526020909220839160020201815181556020820151600191820155939093019250620002f39050565b5050635a57c01760135550506852e77cf549dfc7dacc60125550620005b0565b6000828211156200049757fe5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004e057805160ff191683800117855562000510565b8280016001018555821562000510579182015b8281111562000510578251825591602001919060010190620004f3565b506200051e9291506200056d565b5090565b604080519081016040526000808252602082015290565b81548183558181151162000568576002028160020283600052602060002091820191016200056891906200058d565b505050565b6200058a91905b808211156200051e576000815560010162000574565b90565b6200058a91905b808211156200051e576000808255600182015560020162000594565b61224d80620005c06000396000f30060606040526004361061022c5763ffffffff60e060020a60003504166306fdde0381146102315780630901a3f1146102bb578063095ea7b3146102e95780630d1118ce1461031f57806318160ddd1461034357806323b872dd1461036857806324da48a31461039057806327e235e3146103a65780632988e36b146103f05780632a774c271461040f578063313ce5671461042257806336b69367146104355780633e7d1acc146104545780633f4ba83a146104675780635bbfd0d71461047a5780635c975abb1461048d57806366188463146104a057806370a08231146104c2578063735d3e81146104e157806378388eb6146105245780637fc29fc91461053a5780638456cb591461056957806385a735dd1461057c5780638c66d04f1461058f5780638da5cb5b146105ae57806395d89b41146105c15780639b3ba79f146105d45780639b9073e4146105e7578063a9059cbb146105fa578063b00eb9fe1461061c578063b64e8ad81461062f578063c074304414610645578063c74a96eb1461065b578063cb1a32a41461067a578063d0699c981461068d578063d6edb047146106a9578063d73dd623146106c2578063d8aba1c6146106e4578063dd62ed3e146106f7578063e267761f1461071c578063e5a7b51f1461072f578063ed39eab314610751578063f0dda65c14610764578063f2fde38b14610786578063f764e8a0146107a5578063fc772c8b146107b8578063fca3b5aa146107d7578063ffc0d035146107f6575b600080fd5b341561023c57600080fd5b610244610809565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610280578082015183820152602001610268565b50505050905090810190601f1680156102ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102c657600080fd5b6102d16004356108a7565b60405191825260208201526040908101905180910390f35b34156102f457600080fd5b61030b600160a060020a03600435166024356108d3565b604051901515815260200160405180910390f35b341561032a57600080fd5b610341600160a060020a036004351660243561098f565b005b341561034e57600080fd5b610356610aa4565b60405190815260200160405180910390f35b341561037357600080fd5b61030b600160a060020a0360043581169060243516604435610b73565b341561039b57600080fd5b610341600435610cbf565b34156103b157600080fd5b6103c5600160a060020a0360043516610cf6565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156103fb57600080fd5b610341600160a060020a0360043516610d1e565b341561041a57600080fd5b610356610e60565b341561042d57600080fd5b610356610e66565b341561044057600080fd5b610341600160a060020a0360043516610e6b565b341561045f57600080fd5b610356610ea9565b341561047257600080fd5b610341610eb0565b341561048557600080fd5b6102d1610f2f565b341561049857600080fd5b61030b610f38565b34156104ab57600080fd5b61030b600160a060020a0360043516602435610f48565b34156104cd57600080fd5b610356600160a060020a0360043516611044565b34156104ec57600080fd5b610500600160a060020a036004351661105d565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561052f57600080fd5b6102d160043561126e565b341561054557600080fd5b61054d61127c565b604051600160a060020a03909116815260200160405180910390f35b341561057457600080fd5b61034161128b565b341561058757600080fd5b61035661130f565b341561059a57600080fd5b610341600160a060020a0360043516611315565b34156105b957600080fd5b61054d61135f565b34156105cc57600080fd5b61024461136e565b34156105df57600080fd5b6103566113d9565b34156105f257600080fd5b6103566113df565b341561060557600080fd5b61030b600160a060020a03600435166024356113eb565b341561062757600080fd5b61054d6114d7565b341561063a57600080fd5b6103416004356114e6565b341561065057600080fd5b6102d160043561170a565b341561066657600080fd5b610341600160a060020a0360043516611718565b341561068557600080fd5b610356611762565b341561069857600080fd5b6102d1600435602435604435611768565b34156106b457600080fd5b6103416004356024356117f8565b34156106cd57600080fd5b61030b600160a060020a0360043516602435611b9d565b34156106ef57600080fd5b610356611c41565b341561070257600080fd5b610356600160a060020a0360043581169060243516611c47565b341561072757600080fd5b6102d1611c72565b341561073a57600080fd5b610341600160a060020a0360043516602435611c7b565b341561075c57600080fd5b61054d611ccc565b341561076f57600080fd5b610341600160a060020a0360043516602435611cdb565b341561079157600080fd5b610341600160a060020a0360043516611e0b565b34156107b057600080fd5b610356611ea6565b34156107c357600080fd5b610341600160a060020a0360043516611eac565b34156107e257600080fd5b610341600160a060020a0360043516612015565b341561080157600080fd5b61035661205f565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561089f5780601f106108745761010080835404028352916020019161089f565b820191906000526020600020905b81548152906001019060200180831161088257829003601f168201915b505050505081565b60038054829081106108b557fe5b60009182526020909120600290910201805460019091015490915082565b6000805460a060020a900460ff16156108eb57600080fd5b81158061091b5750600160a060020a033381166000908152600a6020908152604080832093871683529290522054155b151561092657600080fd5b600160a060020a033381166000818152600a6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60115460009033600160a060020a039081169116146109ad57600080fd5b6109b683612064565b600160a060020a0383166000908152600160205260409020546109df908363ffffffff6120af16565b600160a060020a03841660009081526001602052604090819020919091557f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2908490849051600160a060020a03909216825260208201526040908101905180910390a1600083600160a060020a03166000805160206122028339815191528460405190815260200160405180910390a3601554601454610a8191904290611768565b6014829055426015559150610a9c908363ffffffff6120c116565b601455505050565b6000806000806000806000610ac460126001015442601260000154611768565b601554601454929850909650610adb914290611768565b60038054929650909450610b2e916000908110610af457fe5b9060005260206000209060020201600101544260036000815481101515610b1757fe5b906000526020600020906002020160000154611768565b909250905085820184901115610b6557610b5e84610b52888563ffffffff6120c116565b9063ffffffff6120af16565b9650610b6a565b600096505b50505050505090565b60008054819060a060020a900460ff1615610b8d57600080fd5b600160a060020a0384161515610ba257600080fd5b50600160a060020a038085166000908152600a602090815260408083203390941683529290522054610bd385612064565b610bdc84612064565b600160a060020a038416600090815260016020526040902054610c05908463ffffffff6120c116565b600160a060020a038086166000908152600160205260408082209390935590871681522054610c3a908463ffffffff6120af16565b600160a060020a038616600090815260016020526040902055610c63818463ffffffff6120af16565b600160a060020a038087166000818152600a6020908152604080832033861684529091529081902093909355908616916000805160206122028339815191529086905190815260200160405180910390a3506001949350505050565b60005433600160a060020a03908116911614610cda57600080fd5b6a0324ae69ab7120970000008111610cf157600080fd5b600655565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b600160a060020a0381166000908152600b602052604081205481908190819060ff161515610e5957600c54600160a060020a03166327e235e38660006040516080015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401608060405180830381600087803b1515610d9f57600080fd5b6102c65a03f11515610db057600080fd5b50505060405180519060200180519060200180519060200180519397509195509350909150608090506040519081016040908152858252602080830186905281830185905260608301849052600160a060020a0388166000908152600190915220815181556020820151816001015560408201518160020155606082015160039091015550600160a060020a0385166000908152600b60205260409020805460ff191660011790555b5050505050565b60075481565b601281565b60005460a060020a900460ff1615610e8257600080fd5b60095433600160a060020a03908116911614610e9d57600080fd5b610ea681612064565b50565b6003545b90565b60005433600160a060020a03908116911614610ecb57600080fd5b60005460a060020a900460ff161515610ee357600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60125460135482565b60005460a060020a900460ff1681565b600160a060020a033381166000908152600a6020908152604080832093861683529290529081205480831115610fa557600160a060020a033381166000908152600a60209081526040808320938816835292905290812055610fdc565b610fb5818463ffffffff6120af16565b600160a060020a033381166000908152600a60209081526040808320938916835292905220555b600160a060020a033381166000818152600a602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b60008060006110528461105d565b509095945050505050565b600080600080600080600080600080611074612119565b600160a060020a038c166000908152600b602052604090205460ff16156110fe57600160a060020a038c1660009081526001602052604090819020906080905190810160409081528254825260018301546020830152600283015490820152600390910154606082015290508051945080602001519350806040015192508060600151915061118f565b600c54600160a060020a03166327e235e38d60006040516080015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401608060405180830381600087803b151561115757600080fd5b6102c65a03f1151561116857600080fd5b50505060405180519060200180519060200180519060200180519398509196509450909250505b61119a844287611768565b600354919c509a509298508892831080156111b457508115155b1561123757600380546112049167016345785d8a0000916111f8918691889081106111db57fe5b60009182526020909120600290910201549063ffffffff6120d716565b9063ffffffff61210216565b955061123160038481548110151561121857fe5b9060005260206000209060020201600101544288611768565b90985096505b6112478b8963ffffffff6120c116565b9a506112598a8863ffffffff6120c116565b6003549b9d909c509950505050505050505050565b60028054829081106108b557fe5b601154600160a060020a031681565b60005433600160a060020a039081169116146112a657600080fd5b60005460a060020a900460ff16156112bd57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60105490565b60005433600160a060020a0390811691161461133057600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561089f5780601f106108745761010080835404028352916020019161089f565b60065481565b67016345785d8a000081565b6000805460a060020a900460ff161561140357600080fd5b600160a060020a038316151561141857600080fd5b61142133612064565b61142a83612064565b600160a060020a033316600090815260016020526040902054611453908363ffffffff6120af16565b600160a060020a033381166000908152600160205260408082209390935590851681522054611488908363ffffffff6120c116565b600160a060020a0380851660008181526001602052604090819020939093559133909116906000805160206122028339815191529085905190815260200160405180910390a350600192915050565b600854600160a060020a031681565b60115460009033600160a060020a0390811691161461150457600080fd5b6000821161151157600080fd5b600d546000901161152157600080fd5b5060005b8181101561164a57600d805460001901908190556010805461156e9290811061154a57fe5b906000526020600020906002020160010154426010600d54815481101515610b1757fe5b6010600d5481548110151561157f57fe5b60009182526020909120600e929092556002020155600f54601080546115ec92600019019081106115ac57fe5b9060005260206000209060020201600001546010600d548154811015156115cf57fe5b60009182526020909120600290910201549063ffffffff6120c116565b6010600d548154811015156115fd57fe5b6000918252602090912060029091020155600d5460108054429290811061162057fe5b6000918252602090912060016002909202010155600d5415156116425761164a565b600101611525565b600d541561168c577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600d5460405190815260200160405180910390a1611706565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600e544260405191825260208201526040908101905180910390a16010805461170491600391612142565b505b5050565b60108054829081106108b557fe5b60005433600160a060020a0390811691161461173357600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025490565b6008546000908190600160a060020a031663d0699c98868686856040516040015260405160e060020a63ffffffff86160281526004810193909352602483019190915260448201526064016040805180830381600087803b15156117cb57600080fd5b6102c65a03f115156117dc57600080fd5b5050506040518051906020018051905091509150935093915050565b60006118026121a2565b60115433600160a060020a0390811691161461181d57600080fd5b600d541561182a57600080fd5b6006546007548593501061183d57600080fd5b601054600354111561185b576003805461185991601091612142565b505b600654826007540111156118b25760075460065461187e9163ffffffff6120af16565b91506040517f6d617820616c6c6f632072656163686564000000000000000000000000000000815260110160405180910390a05b6007546118c5908363ffffffff6120c116565b6007557fde11823ad4c1d9d7ef9f5a42932881fa9a2b92c55d0fa17bf38aa270d915f815824260405191825260208201526040908101905180910390a1818152426020820152600280546001810161191d83826121b9565b6000928352602090922083916002020181518155602082015181600101555050506010805480600101828161195291906121b9565b6000928352602090922083916002020181518155602082015160019091015550600f5560105460029010156119fe577fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a1601080546119bd91600391612142565b507f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db28268060004260405191825260208201526040908101905180910390a1611b97565b60105460011901600d555b600d5460009010611add57611a286010600d5481548110151561154a57fe5b6010600d54815481101515611a3957fe5b60009182526020909120600e929092556002020155600f5460108054611a6692600019019081106115ac57fe5b6010600d54815481101515611a7757fe5b6000918252602090912060029091020155600d54601080544292908110611a9a57fe5b6000918252602090912060016002909202010155600d541580611ac45750601054600d5490849003145b15611ace57611add565b600d8054600019019055611a09565b600d5415611b1f577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600d5460405190815260200160405180910390a1611b97565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600e544260405191825260208201526040908101905180910390a160108054610e5991600391612142565b50505050565b600160a060020a033381166000908152600a60209081526040808320938616835292905290812054611bd5908363ffffffff6120c116565b600160a060020a033381166000818152600a602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600e5481565b600160a060020a039182166000908152600a6020908152604080832093909416825291909152205490565b60145460155482565b60005460a060020a900460ff1615611c9257600080fd5b60095433600160a060020a03908116911614611cad57600080fd5b600160a060020a03909116600090815260016020526040902060030155565b600954600160a060020a031681565b60115460009033600160a060020a03908116911614611cf957600080fd5b60115433600160a060020a03908116911614611d1457600080fd5b611d1d83612064565b600160a060020a038316600090815260016020526040902054611d46908363ffffffff6120c116565b600160a060020a03841660009081526001602052604090819020919091557fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8908490849051600160a060020a03909216825260208201526040908101905180910390a182600160a060020a031660006000805160206122028339815191528460405190815260200160405180910390a3601354601254611de891904290611768565b60128290559150611dff908363ffffffff6120c116565b60125550504260135550565b60005433600160a060020a03908116911614611e2657600080fd5b600160a060020a0381161515611e3b57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5481565b60008054819033600160a060020a03908116911614611eca57600080fd5b339150600160a060020a0383161515611f1f5781600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515611f1a57600080fd5b611704565b82600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611f7657600080fd5b6102c65a03f11515611f8757600080fd5b5050506040518051915050600160a060020a03831663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611fef57600080fd5b6102c65a03f1151561200057600080fd5b50505060405180519050151561170457600080fd5b60005433600160a060020a0390811691161461203057600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600881565b600080600061207284610d1e565b61207b8461105d565b600160a060020a03909616600090815260016020819052604090912060028101979097559186555042940193909355505050565b6000828211156120bb57fe5b50900390565b6000828201838110156120d057fe5b9392505050565b6000808315156120ea576000915061103d565b508282028284828115156120fa57fe5b04146120d057fe5b600080828481151561211057fe5b04949350505050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209060020281019282156121925760005260206000209160020282015b828111156121925782548255600180840154908301556002928301929091019061216d565b5061219e9291506121e1565b5090565b604080519081016040526000808252602082015290565b8154818355818115116117045760020281600202836000526020600020918201910161170491905b610ead91905b8082111561219e57600080825560018201556002016121e75600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820e73ca8a5b339e27414e8f0263555347fb1c452f32550226b36f547e4d2635cba0029000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab0000000000000000000000007585f835ae2d522722d2684323a0ba83401f32f5

Deployed Bytecode

0x60606040526004361061022c5763ffffffff60e060020a60003504166306fdde0381146102315780630901a3f1146102bb578063095ea7b3146102e95780630d1118ce1461031f57806318160ddd1461034357806323b872dd1461036857806324da48a31461039057806327e235e3146103a65780632988e36b146103f05780632a774c271461040f578063313ce5671461042257806336b69367146104355780633e7d1acc146104545780633f4ba83a146104675780635bbfd0d71461047a5780635c975abb1461048d57806366188463146104a057806370a08231146104c2578063735d3e81146104e157806378388eb6146105245780637fc29fc91461053a5780638456cb591461056957806385a735dd1461057c5780638c66d04f1461058f5780638da5cb5b146105ae57806395d89b41146105c15780639b3ba79f146105d45780639b9073e4146105e7578063a9059cbb146105fa578063b00eb9fe1461061c578063b64e8ad81461062f578063c074304414610645578063c74a96eb1461065b578063cb1a32a41461067a578063d0699c981461068d578063d6edb047146106a9578063d73dd623146106c2578063d8aba1c6146106e4578063dd62ed3e146106f7578063e267761f1461071c578063e5a7b51f1461072f578063ed39eab314610751578063f0dda65c14610764578063f2fde38b14610786578063f764e8a0146107a5578063fc772c8b146107b8578063fca3b5aa146107d7578063ffc0d035146107f6575b600080fd5b341561023c57600080fd5b610244610809565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610280578082015183820152602001610268565b50505050905090810190601f1680156102ad5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102c657600080fd5b6102d16004356108a7565b60405191825260208201526040908101905180910390f35b34156102f457600080fd5b61030b600160a060020a03600435166024356108d3565b604051901515815260200160405180910390f35b341561032a57600080fd5b610341600160a060020a036004351660243561098f565b005b341561034e57600080fd5b610356610aa4565b60405190815260200160405180910390f35b341561037357600080fd5b61030b600160a060020a0360043581169060243516604435610b73565b341561039b57600080fd5b610341600435610cbf565b34156103b157600080fd5b6103c5600160a060020a0360043516610cf6565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156103fb57600080fd5b610341600160a060020a0360043516610d1e565b341561041a57600080fd5b610356610e60565b341561042d57600080fd5b610356610e66565b341561044057600080fd5b610341600160a060020a0360043516610e6b565b341561045f57600080fd5b610356610ea9565b341561047257600080fd5b610341610eb0565b341561048557600080fd5b6102d1610f2f565b341561049857600080fd5b61030b610f38565b34156104ab57600080fd5b61030b600160a060020a0360043516602435610f48565b34156104cd57600080fd5b610356600160a060020a0360043516611044565b34156104ec57600080fd5b610500600160a060020a036004351661105d565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561052f57600080fd5b6102d160043561126e565b341561054557600080fd5b61054d61127c565b604051600160a060020a03909116815260200160405180910390f35b341561057457600080fd5b61034161128b565b341561058757600080fd5b61035661130f565b341561059a57600080fd5b610341600160a060020a0360043516611315565b34156105b957600080fd5b61054d61135f565b34156105cc57600080fd5b61024461136e565b34156105df57600080fd5b6103566113d9565b34156105f257600080fd5b6103566113df565b341561060557600080fd5b61030b600160a060020a03600435166024356113eb565b341561062757600080fd5b61054d6114d7565b341561063a57600080fd5b6103416004356114e6565b341561065057600080fd5b6102d160043561170a565b341561066657600080fd5b610341600160a060020a0360043516611718565b341561068557600080fd5b610356611762565b341561069857600080fd5b6102d1600435602435604435611768565b34156106b457600080fd5b6103416004356024356117f8565b34156106cd57600080fd5b61030b600160a060020a0360043516602435611b9d565b34156106ef57600080fd5b610356611c41565b341561070257600080fd5b610356600160a060020a0360043581169060243516611c47565b341561072757600080fd5b6102d1611c72565b341561073a57600080fd5b610341600160a060020a0360043516602435611c7b565b341561075c57600080fd5b61054d611ccc565b341561076f57600080fd5b610341600160a060020a0360043516602435611cdb565b341561079157600080fd5b610341600160a060020a0360043516611e0b565b34156107b057600080fd5b610356611ea6565b34156107c357600080fd5b610341600160a060020a0360043516611eac565b34156107e257600080fd5b610341600160a060020a0360043516612015565b341561080157600080fd5b61035661205f565b60048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561089f5780601f106108745761010080835404028352916020019161089f565b820191906000526020600020905b81548152906001019060200180831161088257829003601f168201915b505050505081565b60038054829081106108b557fe5b60009182526020909120600290910201805460019091015490915082565b6000805460a060020a900460ff16156108eb57600080fd5b81158061091b5750600160a060020a033381166000908152600a6020908152604080832093871683529290522054155b151561092657600080fd5b600160a060020a033381166000818152600a6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60115460009033600160a060020a039081169116146109ad57600080fd5b6109b683612064565b600160a060020a0383166000908152600160205260409020546109df908363ffffffff6120af16565b600160a060020a03841660009081526001602052604090819020919091557f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2908490849051600160a060020a03909216825260208201526040908101905180910390a1600083600160a060020a03166000805160206122028339815191528460405190815260200160405180910390a3601554601454610a8191904290611768565b6014829055426015559150610a9c908363ffffffff6120c116565b601455505050565b6000806000806000806000610ac460126001015442601260000154611768565b601554601454929850909650610adb914290611768565b60038054929650909450610b2e916000908110610af457fe5b9060005260206000209060020201600101544260036000815481101515610b1757fe5b906000526020600020906002020160000154611768565b909250905085820184901115610b6557610b5e84610b52888563ffffffff6120c116565b9063ffffffff6120af16565b9650610b6a565b600096505b50505050505090565b60008054819060a060020a900460ff1615610b8d57600080fd5b600160a060020a0384161515610ba257600080fd5b50600160a060020a038085166000908152600a602090815260408083203390941683529290522054610bd385612064565b610bdc84612064565b600160a060020a038416600090815260016020526040902054610c05908463ffffffff6120c116565b600160a060020a038086166000908152600160205260408082209390935590871681522054610c3a908463ffffffff6120af16565b600160a060020a038616600090815260016020526040902055610c63818463ffffffff6120af16565b600160a060020a038087166000818152600a6020908152604080832033861684529091529081902093909355908616916000805160206122028339815191529086905190815260200160405180910390a3506001949350505050565b60005433600160a060020a03908116911614610cda57600080fd5b6a0324ae69ab7120970000008111610cf157600080fd5b600655565b6001602081905260009182526040909120805491810154600282015460039092015490919084565b600160a060020a0381166000908152600b602052604081205481908190819060ff161515610e5957600c54600160a060020a03166327e235e38660006040516080015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401608060405180830381600087803b1515610d9f57600080fd5b6102c65a03f11515610db057600080fd5b50505060405180519060200180519060200180519060200180519397509195509350909150608090506040519081016040908152858252602080830186905281830185905260608301849052600160a060020a0388166000908152600190915220815181556020820151816001015560408201518160020155606082015160039091015550600160a060020a0385166000908152600b60205260409020805460ff191660011790555b5050505050565b60075481565b601281565b60005460a060020a900460ff1615610e8257600080fd5b60095433600160a060020a03908116911614610e9d57600080fd5b610ea681612064565b50565b6003545b90565b60005433600160a060020a03908116911614610ecb57600080fd5b60005460a060020a900460ff161515610ee357600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60125460135482565b60005460a060020a900460ff1681565b600160a060020a033381166000908152600a6020908152604080832093861683529290529081205480831115610fa557600160a060020a033381166000908152600a60209081526040808320938816835292905290812055610fdc565b610fb5818463ffffffff6120af16565b600160a060020a033381166000908152600a60209081526040808320938916835292905220555b600160a060020a033381166000818152600a602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b60008060006110528461105d565b509095945050505050565b600080600080600080600080600080611074612119565b600160a060020a038c166000908152600b602052604090205460ff16156110fe57600160a060020a038c1660009081526001602052604090819020906080905190810160409081528254825260018301546020830152600283015490820152600390910154606082015290508051945080602001519350806040015192508060600151915061118f565b600c54600160a060020a03166327e235e38d60006040516080015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401608060405180830381600087803b151561115757600080fd5b6102c65a03f1151561116857600080fd5b50505060405180519060200180519060200180519060200180519398509196509450909250505b61119a844287611768565b600354919c509a509298508892831080156111b457508115155b1561123757600380546112049167016345785d8a0000916111f8918691889081106111db57fe5b60009182526020909120600290910201549063ffffffff6120d716565b9063ffffffff61210216565b955061123160038481548110151561121857fe5b9060005260206000209060020201600101544288611768565b90985096505b6112478b8963ffffffff6120c116565b9a506112598a8863ffffffff6120c116565b6003549b9d909c509950505050505050505050565b60028054829081106108b557fe5b601154600160a060020a031681565b60005433600160a060020a039081169116146112a657600080fd5b60005460a060020a900460ff16156112bd57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60105490565b60005433600160a060020a0390811691161461133057600080fd5b6008805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a031681565b60058054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561089f5780601f106108745761010080835404028352916020019161089f565b60065481565b67016345785d8a000081565b6000805460a060020a900460ff161561140357600080fd5b600160a060020a038316151561141857600080fd5b61142133612064565b61142a83612064565b600160a060020a033316600090815260016020526040902054611453908363ffffffff6120af16565b600160a060020a033381166000908152600160205260408082209390935590851681522054611488908363ffffffff6120c116565b600160a060020a0380851660008181526001602052604090819020939093559133909116906000805160206122028339815191529085905190815260200160405180910390a350600192915050565b600854600160a060020a031681565b60115460009033600160a060020a0390811691161461150457600080fd5b6000821161151157600080fd5b600d546000901161152157600080fd5b5060005b8181101561164a57600d805460001901908190556010805461156e9290811061154a57fe5b906000526020600020906002020160010154426010600d54815481101515610b1757fe5b6010600d5481548110151561157f57fe5b60009182526020909120600e929092556002020155600f54601080546115ec92600019019081106115ac57fe5b9060005260206000209060020201600001546010600d548154811015156115cf57fe5b60009182526020909120600290910201549063ffffffff6120c116565b6010600d548154811015156115fd57fe5b6000918252602090912060029091020155600d5460108054429290811061162057fe5b6000918252602090912060016002909202010155600d5415156116425761164a565b600101611525565b600d541561168c577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600d5460405190815260200160405180910390a1611706565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600e544260405191825260208201526040908101905180910390a16010805461170491600391612142565b505b5050565b60108054829081106108b557fe5b60005433600160a060020a0390811691161461173357600080fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60025490565b6008546000908190600160a060020a031663d0699c98868686856040516040015260405160e060020a63ffffffff86160281526004810193909352602483019190915260448201526064016040805180830381600087803b15156117cb57600080fd5b6102c65a03f115156117dc57600080fd5b5050506040518051906020018051905091509150935093915050565b60006118026121a2565b60115433600160a060020a0390811691161461181d57600080fd5b600d541561182a57600080fd5b6006546007548593501061183d57600080fd5b601054600354111561185b576003805461185991601091612142565b505b600654826007540111156118b25760075460065461187e9163ffffffff6120af16565b91506040517f6d617820616c6c6f632072656163686564000000000000000000000000000000815260110160405180910390a05b6007546118c5908363ffffffff6120c116565b6007557fde11823ad4c1d9d7ef9f5a42932881fa9a2b92c55d0fa17bf38aa270d915f815824260405191825260208201526040908101905180910390a1818152426020820152600280546001810161191d83826121b9565b6000928352602090922083916002020181518155602082015181600101555050506010805480600101828161195291906121b9565b6000928352602090922083916002020181518155602082015160019091015550600f5560105460029010156119fe577fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a1601080546119bd91600391612142565b507f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db28268060004260405191825260208201526040908101905180910390a1611b97565b60105460011901600d555b600d5460009010611add57611a286010600d5481548110151561154a57fe5b6010600d54815481101515611a3957fe5b60009182526020909120600e929092556002020155600f5460108054611a6692600019019081106115ac57fe5b6010600d54815481101515611a7757fe5b6000918252602090912060029091020155600d54601080544292908110611a9a57fe5b6000918252602090912060016002909202010155600d541580611ac45750601054600d5490849003145b15611ace57611add565b600d8054600019019055611a09565b600d5415611b1f577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600d5460405190815260200160405180910390a1611b97565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600e544260405191825260208201526040908101905180910390a160108054610e5991600391612142565b50505050565b600160a060020a033381166000908152600a60209081526040808320938616835292905290812054611bd5908363ffffffff6120c116565b600160a060020a033381166000818152600a602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600e5481565b600160a060020a039182166000908152600a6020908152604080832093909416825291909152205490565b60145460155482565b60005460a060020a900460ff1615611c9257600080fd5b60095433600160a060020a03908116911614611cad57600080fd5b600160a060020a03909116600090815260016020526040902060030155565b600954600160a060020a031681565b60115460009033600160a060020a03908116911614611cf957600080fd5b60115433600160a060020a03908116911614611d1457600080fd5b611d1d83612064565b600160a060020a038316600090815260016020526040902054611d46908363ffffffff6120c116565b600160a060020a03841660009081526001602052604090819020919091557fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8908490849051600160a060020a03909216825260208201526040908101905180910390a182600160a060020a031660006000805160206122028339815191528460405190815260200160405180910390a3601354601254611de891904290611768565b60128290559150611dff908363ffffffff6120c116565b60125550504260135550565b60005433600160a060020a03908116911614611e2657600080fd5b600160a060020a0381161515611e3b57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5481565b60008054819033600160a060020a03908116911614611eca57600080fd5b339150600160a060020a0383161515611f1f5781600160a060020a03166108fc30600160a060020a0316319081150290604051600060405180830381858888f193505050501515611f1a57600080fd5b611704565b82600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611f7657600080fd5b6102c65a03f11515611f8757600080fd5b5050506040518051915050600160a060020a03831663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611fef57600080fd5b6102c65a03f1151561200057600080fd5b50505060405180519050151561170457600080fd5b60005433600160a060020a0390811691161461203057600080fd5b6011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600881565b600080600061207284610d1e565b61207b8461105d565b600160a060020a03909616600090815260016020819052604090912060028101979097559186555042940193909355505050565b6000828211156120bb57fe5b50900390565b6000828201838110156120d057fe5b9392505050565b6000808315156120ea576000915061103d565b508282028284828115156120fa57fe5b04146120d057fe5b600080828481151561211057fe5b04949350505050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b8280548282559060005260206000209060020281019282156121925760005260206000209160020282015b828111156121925782548255600180840154908301556002928301929091019061216d565b5061219e9291506121e1565b5090565b604080519081016040526000808252602082015290565b8154818355818115116117045760020281600202836000526020600020918201910161170491905b610ead91905b8082111561219e57600080825560018201556002016121e75600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820e73ca8a5b339e27414e8f0263555347fb1c452f32550226b36f547e4d2635cba0029

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

000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab0000000000000000000000007585f835ae2d522722d2684323a0ba83401f32f5

-----Decoded View---------------
Arg [0] : feeCalc (address): 0xd56ed0DAE33A546D063e60a214Dd76538a1ba5AB
Arg [1] : _oldToken (address): 0x7585F835ae2d522722d2684323a0ba83401f32f5

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab
Arg [1] : 0000000000000000000000007585f835ae2d522722d2684323a0ba83401f32f5


Swarm Source

bzzr://e73ca8a5b339e27414e8f0263555347fb1c452f32550226b36f547e4d2635cba
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.