Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 52 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 9944433 | 1703 days ago | IN | 0 ETH | 0.00006969 | ||||
Transfer | 6573045 | 2253 days ago | IN | 0 ETH | 0.00124179 | ||||
Transfer | 6186646 | 2316 days ago | IN | 0 ETH | 0.00099568 | ||||
Transfer | 6186564 | 2316 days ago | IN | 0 ETH | 0.00099568 | ||||
Transfer | 6181777 | 2317 days ago | IN | 0 ETH | 0.0009983 | ||||
Transfer | 5493974 | 2436 days ago | IN | 0 ETH | 0.0009983 | ||||
Transfer | 5493959 | 2436 days ago | IN | 0 ETH | 0.0009983 | ||||
Approve | 5055180 | 2510 days ago | IN | 0 ETH | 0.00002533 | ||||
Approve | 5055167 | 2510 days ago | IN | 0 ETH | 0.00002533 | ||||
Pause | 4896293 | 2537 days ago | IN | 0 ETH | 0.0021683 | ||||
Burn Tokens | 4896289 | 2537 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896286 | 2537 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896282 | 2537 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896267 | 2537 days ago | IN | 0 ETH | 0.00308385 | ||||
Burn Tokens | 4896262 | 2537 days ago | IN | 0 ETH | 0.00307745 | ||||
Burn Tokens | 4896253 | 2537 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896154 | 2537 days ago | IN | 0 ETH | 0.0036584 | ||||
Unpause | 4896148 | 2537 days ago | IN | 0 ETH | 0.00072292 | ||||
Pause | 4891325 | 2538 days ago | IN | 0 ETH | 0.0043366 | ||||
Add Allocation P... | 4890598 | 2538 days ago | IN | 0 ETH | 0.00816197 | ||||
Transfer | 4795405 | 2555 days ago | IN | 0 ETH | 0.001869 | ||||
Mint Tokens | 4770835 | 2559 days ago | IN | 0 ETH | 0.00539859 | ||||
Transfer | 4744941 | 2564 days ago | IN | 0 ETH | 0.00075601 | ||||
Transfer | 4744919 | 2564 days ago | IN | 0 ETH | 0.00090601 | ||||
Transfer | 4739617 | 2565 days ago | IN | 0 ETH | 0.00344805 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
GoldBackedToken
Compiler Version
v0.4.15+commit.bbb8e64f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-08-25 */ pragma solidity ^0.4.11; contract DoNotDeployThisGetTheRightOneCosParityPutsThisOnTop { uint256 nothing; function DoNotDeployThisGetTheRightOneCosParityPutsThisOnTop() { nothing = 27; } } //*************** Ownable contract Ownable { address public owner; function Ownable() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function transferOwnership(address newOwner) onlyOwner { if (newOwner != address(0)) { owner = newOwner; } } } //***********Pausible contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev modifier to allow actions only when the contract IS paused */ modifier whenNotPaused() { require (!paused); _; } /** * @dev modifier to allow actions only when the contract IS NOT paused */ modifier whenPaused { require (paused) ; _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused returns (bool) { paused = true; Pause(); return true; } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused returns (bool) { paused = false; Unpause(); return true; } } //*************ERC20 contract ERC20 { uint public totalSupply; function balanceOf(address who) constant returns (uint); function allowance(address owner, address spender) constant returns (uint); function transfer(address to, uint value) returns (bool ok); function transferFrom(address from, address to, uint value) returns (bool ok); function approve(address spender, uint value) returns (bool ok); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } //*************** SafeMath contract SafeMath { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint a, uint b) internal returns (uint) { assert(b > 0); uint c = a / b; assert(a == b * c + a % b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } function max64(uint64 a, uint64 b) internal constant returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal constant returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal constant returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal constant returns (uint256) { return a < b ? a : b; } } //**************** StandardToken contract StandardToken is ERC20, SafeMath { /** * @dev Fix for the ERC20 short address attack. */ modifier onlyPayloadSize(uint size) { require(msg.data.length >= size + 4); _; } mapping(address => uint) balances; mapping (address => mapping (address => uint)) allowed; function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) returns (bool success){ balances[msg.sender] = safeSub(balances[msg.sender], _value); balances[_to] = safeAdd(balances[_to], _value); Transfer(msg.sender, _to, _value); return true; } function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) returns (bool success) { var _allowance = allowed[_from][msg.sender]; // Check is not needed because safeSub(_allowance, _value) will already throw if this condition is not met // if (_value > _allowance) throw; balances[_to] = safeAdd(balances[_to], _value); balances[_from] = safeSub(balances[_from], _value); allowed[_from][msg.sender] = safeSub(_allowance, _value); Transfer(_from, _to, _value); return true; } function balanceOf(address _owner) constant returns (uint balance) { return balances[_owner]; } function approve(address _spender, uint _value) returns (bool success) { require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) constant returns (uint remaining) { return allowed[_owner][_spender]; } } contract GBT { function parentChange(address,uint); function parentFees(address); function setHGT(address _hgt); } //************ HELLOGOLDTOKEN contract HelloGoldToken is ERC20, SafeMath, Pausable, StandardToken { string public name; string public symbol; uint8 public decimals; GBT goldtoken; function setGBT(address gbt_) onlyOwner { goldtoken = GBT(gbt_); } function GBTAddress() constant returns (address) { return address(goldtoken); } function HelloGoldToken(address _reserve) { name = "HelloGold Token"; symbol = "HGT"; decimals = 8; totalSupply = 1 * 10 ** 9 * 10 ** uint256(decimals); balances[_reserve] = totalSupply; } function parentChange(address _to) internal { require(address(goldtoken) != 0x0); goldtoken.parentChange(_to,balances[_to]); } function parentFees(address _to) internal { require(address(goldtoken) != 0x0); goldtoken.parentFees(_to); } function transferFrom(address _from, address _to, uint256 _value) returns (bool success){ parentFees(_from); parentFees(_to); success = super.transferFrom(_from,_to,_value); parentChange(_from); parentChange(_to); return; } function transfer(address _to, uint _value) whenNotPaused returns (bool success) { parentFees(msg.sender); parentFees(_to); success = super.transfer(_to,_value); parentChange(msg.sender); parentChange(_to); return; } function approve(address _spender, uint _value) whenNotPaused returns (bool success) { return super.approve(_spender,_value); } } //********* GOLDFEES ************************ contract GoldFees is SafeMath,Ownable { // e.g. if rate = 0.0054 //uint rateN = 9999452055; uint rateN = 9999452054794520548; uint rateD = 19; uint public maxDays; uint public maxRate; function GoldFees() { calcMax(); } function calcMax() { 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) onlyOwner{ rateN = _n; rateD = _d; calcMax(); } function rateForDays(uint256 numDays) constant 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 = safeMul( r1 , r2) / 10 ** 18; } return; } uint256 constant public UTC2MYT = 1483200000; function wotDay(uint256 time) returns (uint256) { return (time - UTC2MYT) / (1 days); } // minimum fee is 1 unless same day function calcFees(uint256 start, uint256 end, uint256 startAmount) constant 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 = safeSub(startAmount,amount); } } //******************** GoldBackedToken contract GoldBackedToken is Ownable, SafeMath, ERC20, Pausable { 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 = "HelloGold Gold Backed Token"; string public symbol = "GBT"; 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 constant public maxAllocation = 38 * 10**5 * 10**decimals; // max GBT that can ever ever be given out uint256 public totAllocation; // amount of GBT so far address public feeCalculator; address public HGT; // HGT contract address function setFeeCalculator(address newFC) onlyOwner { feeCalculator = newFC; } function calcFees(uint256 from, uint256 to, uint256 amount) returns (uint256 val, uint256 fee) { return GoldFees(feeCalculator).calcFees(from,to,amount); } function GoldBackedToken(address feeCalc) { feeCalculator = feeCalc; } struct allocation { uint256 amount; uint256 date; } allocation[] public allocationsOverTime; allocation[] public currentAllocations; function currentAllocationLength() constant returns (uint256) { return currentAllocations.length; } function aotLength() constant returns (uint256) { return allocationsOverTime.length; } 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; mapping (address => mapping (address => uint)) allowed; function update(address where) internal { uint256 pos; uint256 fees; uint256 val; (val,fees,pos) = updatedBalance(where); balances[where].nextAllocationIndex = pos; balances[where].amount = val; balances[where].lastUpdated = now; } function updatedBalance(address where) constant public returns (uint val, uint fees, uint pos) { uint256 c_val; uint256 c_fees; uint256 c_amount; (val, fees) = calcFees(balances[where].lastUpdated,now,balances[where].amount); pos = balances[where].nextAllocationIndex; if ((pos < currentAllocations.length) && (balances[where].allocationShare != 0)) { c_amount = currentAllocations[balances[where].nextAllocationIndex].amount * balances[where].allocationShare / allocationPool; (c_val,c_fees) = calcFees(currentAllocations[balances[where].nextAllocationIndex].date,now,c_amount); } val += c_val; fees += c_fees; pos = currentAllocations.length; } function balanceOf(address where) constant returns (uint256 val) { uint256 fees; uint256 pos; (val,fees,pos) = updatedBalance(where); return ; } event Allocation(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() constant returns (uint) { return partAllocations.length; } function addAllocationPartOne(uint newAllocation,uint numSteps) onlyOwner{ uint256 thisAllocation = newAllocation; require(totAllocation < maxAllocation); // cannot allocate more than this; if (currentAllocations.length > partAllocations.length) { partAllocations = currentAllocations; } if (totAllocation + thisAllocation > maxAllocation) { thisAllocation = maxAllocation - totAllocation; log0("max alloc reached"); } totAllocation += thisAllocation; Allocation(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[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) onlyOwner { 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[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) onlyOwner { HGT = _hgt; } function parentFees(address where) whenNotPaused { require(msg.sender == HGT); update(where); } function parentChange(address where, uint newValue) whenNotPaused { // called when HGT balance changes require(msg.sender == HGT); balances[where].allocationShare = newValue; } /* send GBT */ function transfer(address _to, uint256 _value) whenNotPaused returns (bool ok) { update(msg.sender); // Do this to ensure sender has enough funds. update(_to); balances[msg.sender].amount = safeSub(balances[msg.sender].amount, _value); balances[_to].amount = safeAdd(balances[_to].amount, _value); Transfer(msg.sender, _to, _value); //Notify anyone listening that this transfer took place return true; } function transferFrom(address _from, address _to, uint _value) whenNotPaused returns (bool success) { var _allowance = allowed[_from][msg.sender]; update(_from); // Do this to ensure sender has enough funds. update(_to); balances[_to].amount = safeAdd(balances[_to].amount, _value); balances[_from].amount = safeSub(balances[_from].amount, _value); allowed[_from][msg.sender] = safeSub(_allowance, _value); Transfer(_from, _to, _value); return true; } function approve(address _spender, uint _value) whenNotPaused returns (bool success) { require((_value == 0) || (allowed[msg.sender][_spender] == 0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } function allowance(address _owner, address _spender) constant returns (uint remaining) { return allowed[_owner][_spender]; } // Minting Functions address public authorisedMinter; function setMinter(address minter) onlyOwner { authorisedMinter = minter; } function mintTokens(address destination, uint256 amount) { require(msg.sender == authorisedMinter); update(destination); balances[destination].amount = safeAdd(balances[destination].amount, amount); balances[destination].lastUpdated = now; balances[destination].nextAllocationIndex = currentAllocations.length; TokenMinted(destination,amount); } function burnTokens(address source, uint256 amount) { require(msg.sender == authorisedMinter); update(source); balances[source].amount = safeSub(balances[source].amount,amount); balances[source].lastUpdated = now; balances[source].nextAllocationIndex = currentAllocations.length; TokenBurned(source,amount); } } //**************** HelloGoldSale contract HelloGoldSale is Pausable, SafeMath { uint256 public decimals = 8; uint256 public startDate = 1503892800; // Monday, August 28, 2017 12:00:00 PM GMT+08:00 uint256 public endDate = 1504497600; // Monday, September 4, 2017 12:00:00 PM GMT+08:00 uint256 tranchePeriod = 1 weeks; // address of HGT Token. HGT must Approve this contract to disburse 300M tokens HelloGoldToken token; uint256 constant MaxCoinsR1 = 180 * 10**6 * 10**8; // 180M HGT uint256 public coinsRemaining = 180 * 10**6 * 10**8; uint256 coinsPerTier = 20 * 10**6 * 10**8; // 20M HGT uint256 public coinsLeftInTier = 20 * 10**6 * 10**8; uint256 public minimumCap = 0; // 40M HGT uint256 numTiers = 5; uint16 public tierNo; uint256 public preallocCoins; // used for testing against cap (inc placement) uint256 public purchasedCoins; // used for testing against tier pricing uint256 public ethRaised; uint256 public personalMax = 10 * 1 ether; // max ether per person during public sale uint256 public contributors; address public cs; address public multiSig; address public HGT_Reserve; struct csAction { bool passedKYC; bool blocked; } /* This creates an array with all balances */ mapping (address => csAction) public permissions; mapping (address => uint256) public deposits; modifier MustBeEnabled(address x) { require (!permissions[x].blocked) ; require (permissions[x].passedKYC) ; _; } function HelloGoldSale(address _cs, address _hgt, address _multiSig, address _reserve) { cs = _cs; token = HelloGoldToken(_hgt); multiSig = _multiSig; HGT_Reserve = _reserve; } // We only expect to use this to set/reset the start of the contract under exceptional circumstances function setStart(uint256 when_) onlyOwner { startDate = when_; endDate = when_ + tranchePeriod; } modifier MustBeCs() { require (msg.sender == cs) ; _; } // 1 ether = N HGT tokens uint256[5] public hgtRates = [1248900000000,1196900000000,1144800000000,1092800000000,1040700000000]; /* Approve the account for operation */ function approve(address user) MustBeCs { permissions[user].passedKYC = true; } function block(address user) MustBeCs { permissions[user].blocked = true; } function unblock(address user) MustBeCs { permissions[user].blocked = false; } function newCs(address newCs) onlyOwner { cs = newCs; } function setPeriod(uint256 period_) onlyOwner { require (!funding()) ; tranchePeriod = period_; endDate = startDate + tranchePeriod; if (endDate < now + tranchePeriod) { endDate = now + tranchePeriod; } } function when() constant returns (uint256) { return now; } function funding() constant returns (bool) { if (paused) return false; // frozen if (now < startDate) return false; // too early if (now > endDate) return false; // too late if (coinsRemaining == 0) return false; // no more coins if (tierNo >= numTiers ) return false; // passed end of top tier. Tiers start at zero return true; } function success() constant returns (bool succeeded) { if (coinsRemaining == 0) return true; bool complete = (now > endDate) ; bool didOK = (coinsRemaining <= (MaxCoinsR1 - minimumCap)); // not even 40M Gone?? Aargh. succeeded = (complete && didOK) ; // (out of steam but enough sold) return ; } function failed() constant returns (bool didNotSucceed) { bool complete = (now > endDate ); bool didBad = (coinsRemaining > (MaxCoinsR1 - minimumCap)); didNotSucceed = (complete && didBad); return; } function () payable MustBeEnabled(msg.sender) whenNotPaused { createTokens(msg.sender,msg.value); } function linkCoin(address coin) onlyOwner { token = HelloGoldToken(coin); } function coinAddress() constant returns (address) { return address(token); } // hgtRates in whole tokens per ETH // max individual contribution in whole ETH function setHgtRates(uint256 p0,uint256 p1,uint256 p2,uint256 p3,uint256 p4, uint256 _max ) onlyOwner { require (now < startDate) ; hgtRates[0] = p0 * 10**8; hgtRates[1] = p1 * 10**8; hgtRates[2] = p2 * 10**8; hgtRates[3] = p3 * 10**8; hgtRates[4] = p4 * 10**8; personalMax = _max * 1 ether; // max ETH per person } event Purchase(address indexed buyer, uint256 level,uint256 value, uint256 tokens); event Reduction(string msg, address indexed buyer, uint256 wanted, uint256 allocated); function createTokens(address recipient, uint256 value) private { uint256 totalTokens; uint256 hgtRate; require (funding()) ; require (value > 1 finney) ; require (deposits[recipient] < personalMax); uint256 maxRefund = 0; if ((deposits[msg.sender] + value) > personalMax) { maxRefund = deposits[msg.sender] + value - personalMax; value -= maxRefund; log0("maximum funds exceeded"); } uint256 val = value; ethRaised = safeAdd(ethRaised,value); if (deposits[recipient] == 0) contributors++; do { hgtRate = hgtRates[tierNo]; // hgtRate must include the 10^8 uint tokens = safeMul(val, hgtRate); // (val in eth * 10^18) * #tokens per eth tokens = safeDiv(tokens, 1 ether); // val is in ether, msg.value is in wei if (tokens <= coinsLeftInTier) { uint256 actualTokens = tokens; uint refund = 0; if (tokens > coinsRemaining) { //can't sell desired # tokens Reduction("in tier",recipient,tokens,coinsRemaining); actualTokens = coinsRemaining; refund = safeSub(tokens, coinsRemaining ); // refund amount in tokens refund = safeDiv(refund*1 ether,hgtRate ); // refund amount in ETH // need a refund mechanism here too coinsRemaining = 0; val = safeSub( val,refund); } else { coinsRemaining = safeSub(coinsRemaining, actualTokens); } purchasedCoins = safeAdd(purchasedCoins, actualTokens); totalTokens = safeAdd(totalTokens,actualTokens); require (token.transferFrom(HGT_Reserve, recipient,totalTokens)) ; Purchase(recipient,tierNo,val,actualTokens); // event deposits[recipient] = safeAdd(deposits[recipient],val); // in case of refund - could pull off etherscan refund += maxRefund; if (refund > 0) { ethRaised = safeSub(ethRaised,refund); recipient.transfer(refund); } if (coinsRemaining <= (MaxCoinsR1 - minimumCap)){ // has passed success criteria if (!multiSig.send(this.balance)) { // send funds to HGF log0("cannot forward funds to owner"); } } coinsLeftInTier = safeSub(coinsLeftInTier,actualTokens); if ((coinsLeftInTier == 0) && (coinsRemaining != 0)) { // exact sell out of non final tier coinsLeftInTier = coinsPerTier; tierNo++; endDate = now + tranchePeriod; } return; } // check that coinsLeftInTier >= coinsRemaining uint256 coins2buy = min256(coinsLeftInTier , coinsRemaining); endDate = safeAdd( now, tranchePeriod); // Have bumped levels - need to modify end date here purchasedCoins = safeAdd(purchasedCoins, coins2buy); // give all coins remaining in this tier totalTokens = safeAdd(totalTokens,coins2buy); coinsRemaining = safeSub(coinsRemaining,coins2buy); uint weiCoinsLeftInThisTier = safeMul(coins2buy,1 ether); uint costOfTheseCoins = safeDiv(weiCoinsLeftInThisTier, hgtRate); // how much did that cost? Purchase(recipient, tierNo,costOfTheseCoins,coins2buy); // event deposits[recipient] = safeAdd(deposits[recipient],costOfTheseCoins); val = safeSub(val,costOfTheseCoins); tierNo = tierNo + 1; coinsLeftInTier = coinsPerTier; } while ((val > 0) && funding()); // escaped because we passed the end of the universe..... // so give them their tokens require (token.transferFrom(HGT_Reserve, recipient,totalTokens)) ; if ((val > 0) || (maxRefund > 0)){ Reduction("finished crowdsale, returning ",recipient,value,totalTokens); // return the remainder ! recipient.transfer(val+maxRefund); // if you can't return the balance, abort whole process } if (!multiSig.send(this.balance)) { ethRaised = safeSub(ethRaised,this.balance); log0("cannot send at tier jump"); } } function allocatedTokens(address grantee, uint256 numTokens) onlyOwner { require (now < startDate) ; if (numTokens < coinsRemaining) { coinsRemaining = safeSub(coinsRemaining, numTokens); } else { numTokens = coinsRemaining; coinsRemaining = 0; } preallocCoins = safeAdd(preallocCoins,numTokens); require (token.transferFrom(HGT_Reserve,grantee,numTokens)); } function withdraw() { // it failed. Come and get your ether. if (failed()) { if (deposits[msg.sender] > 0) { uint256 val = deposits[msg.sender]; deposits[msg.sender] = 0; msg.sender.transfer(val); } } } function complete() onlyOwner { // this should not have to be called. Extreme measures. if (success()) { uint256 val = this.balance; if (val > 0) { if (!multiSig.send(val)) { log0("cannot withdraw"); } else { log0("funds withdrawn"); } } else { log0("nothing to withdraw"); } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"currentAllocations","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"source","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"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,"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,"type":"function"},{"constant":true,"inputs":[],"name":"totAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"where","type":"address"}],"name":"parentFees","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"currentAllocationLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"where","type":"address"}],"name":"balanceOf","outputs":[{"name":"val","type":"uint256"}],"payable":false,"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,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allocationsOverTime","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"authorisedMinter","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"partAllocationLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newFC","type":"address"}],"name":"setFeeCalculator","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"allocationPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"feeCalculator","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"numSteps","type":"uint256"}],"name":"addAllocationPartTwo","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"partAllocations","outputs":[{"name":"amount","type":"uint256"},{"name":"date","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_hgt","type":"address"}],"name":"setHGT","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"aotLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"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,"type":"function"},{"constant":false,"inputs":[{"name":"newAllocation","type":"uint256"},{"name":"numSteps","type":"uint256"}],"name":"addAllocationPartOne","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"partFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"where","type":"address"},{"name":"newValue","type":"uint256"}],"name":"parentChange","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"HGT","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"partPos","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"minter","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"hgtDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"feeCalc","type":"address"}],"payable":false,"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":"Allocation","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"}]
Contract Creation Code
606060409081526002805460ff191690558051908101604052601b81527f48656c6c6f476f6c6420476f6c64204261636b656420546f6b656e0000000000602082015260039080516200005792916020019062000106565b5060408051908101604052600381527f474254000000000000000000000000000000000000000000000000000000000060208201526004908051620000a192916020019062000106565b503415620000ae57600080fd5b60405160208062001e7c833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b60068054600160a060020a031916600160a060020a0383161790555b50620001b0565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014957805160ff191683800117855562000179565b8280016001018555821562000179579182015b82811115620001795782518255916020019190600101906200015c565b5b50620001889291506200018c565b5090565b620001ad91905b8082111562000188576000815560010162000193565b5090565b90565b611cbc80620001c06000396000f300606060405236156101f65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fb5780630901a3f114610286578063095ea7b3146102b45780630d1118ce146102ea57806318160ddd1461030e57806323b872dd1461033357806327e235e31461036f5780632a774c27146103b9578063313ce567146103de57806336b69367146104035780633e7d1acc146104245780633f4ba83a146104495780635c975abb1461047057806370a0823114610497578063735d3e81146104c857806378388eb61461050b5780637fc29fc9146105395780638456cb591461056857806385a735dd1461058f5780638c66d04f146105b45780638da5cb5b146105d557806395d89b41146106045780639b3ba79f1461068f5780639b9073e4146106b4578063a9059cbb146106d9578063b00eb9fe1461070f578063b64e8ad81461073e578063c074304414610756578063c74a96eb14610784578063cb1a32a4146107a5578063d0699c98146107ca578063d6edb047146107fe578063d8aba1c614610819578063dd62ed3e1461083e578063e5a7b51f14610875578063ed39eab314610899578063f0dda65c146108c8578063f2fde38b146108ec578063f764e8a01461090d578063fca3b5aa14610932578063ffc0d03514610953575b600080fd5b341561020657600080fd5b61020e610978565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024b5780820151818401525b602001610232565b50505050905090810190601f1680156102785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029157600080fd5b61029c600435610a16565b60405191825260208201526040908101905180910390f35b34156102bf57600080fd5b6102d6600160a060020a0360043516602435610a44565b604051901515815260200160405180910390f35b34156102f557600080fd5b61030c600160a060020a0360043516602435610afd565b005b341561031957600080fd5b610321610bbd565b60405190815260200160405180910390f35b341561033e57600080fd5b6102d6600160a060020a0360043581169060243516604435610bc3565b604051901515815260200160405180910390f35b341561037a57600080fd5b61038e600160a060020a0360043516610cf8565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156103c457600080fd5b610321610d1f565b60405190815260200160405180910390f35b34156103e957600080fd5b610321610d25565b60405190815260200160405180910390f35b341561040e57600080fd5b61030c600160a060020a0360043516610d2a565b005b341561042f57600080fd5b610321610d63565b60405190815260200160405180910390f35b341561045457600080fd5b6102d6610d6a565b604051901515815260200160405180910390f35b341561047b57600080fd5b6102d6610dd6565b604051901515815260200160405180910390f35b34156104a257600080fd5b610321600160a060020a0360043516610ddf565b60405190815260200160405180910390f35b34156104d357600080fd5b6104e7600160a060020a0360043516610dfc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561051657600080fd5b61029c600435610f49565b60405191825260208201526040908101905180910390f35b341561054457600080fd5b61054c610f77565b604051600160a060020a03909116815260200160405180910390f35b341561057357600080fd5b6102d6610f86565b604051901515815260200160405180910390f35b341561059a57600080fd5b610321610ff4565b60405190815260200160405180910390f35b34156105bf57600080fd5b61030c600160a060020a0360043516610ffb565b005b34156105e057600080fd5b61054c611043565b604051600160a060020a03909116815260200160405180910390f35b341561060f57600080fd5b61020e611052565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024b5780820151818401525b602001610232565b50505050905090810190601f1680156102785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561069a57600080fd5b6103216110f0565b60405190815260200160405180910390f35b34156106bf57600080fd5b6103216110ff565b60405190815260200160405180910390f35b34156106e457600080fd5b6102d6600160a060020a036004351660243561110b565b604051901515815260200160405180910390f35b341561071a57600080fd5b61054c6111e5565b604051600160a060020a03909116815260200160405180910390f35b341561074957600080fd5b61030c6004356111f4565b005b341561076157600080fd5b61029c600435611414565b60405191825260208201526040908101905180910390f35b341561078f57600080fd5b61030c600160a060020a0360043516611442565b005b34156107b057600080fd5b61032161148a565b60405190815260200160405180910390f35b34156107d557600080fd5b61029c600435602435604435611491565b60405191825260208201526040908101905180910390f35b341561080957600080fd5b61030c60043560243561153b565b005b341561082457600080fd5b610321611940565b60405190815260200160405180910390f35b341561084957600080fd5b610321600160a060020a0360043581169060243516611946565b60405190815260200160405180910390f35b341561088057600080fd5b61030c600160a060020a0360043516602435611973565b005b34156108a457600080fd5b61054c6119c2565b604051600160a060020a03909116815260200160405180910390f35b34156108d357600080fd5b61030c600160a060020a03600435166024356119d1565b005b34156108f757600080fd5b61030c600160a060020a0360043516611a91565b005b341561091857600080fd5b610321611ae9565b60405190815260200160405180910390f35b341561093d57600080fd5b61030c600160a060020a0360043516611aef565b005b341561095e57600080fd5b610321611b37565b60405190815260200160405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b505050505081565b6009805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b60025460009060ff1615610a5757600080fd5b811580610a875750600160a060020a033381166000908152600b6020908152604080832093871683529290522054155b1515610a9257600080fd5b600160a060020a033381166000818152600b6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b92915050565b60105433600160a060020a03908116911614610b1857600080fd5b610b2182611b3c565b600160a060020a0382166000908152600a6020526040902054610b449082611b80565b600160a060020a0383166000908152600a6020526040908190209182554260018301556009546002909201919091557f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2908390839051600160a060020a03909216825260208201526040908101905180910390a15b5050565b60015481565b600254600090819060ff1615610bd857600080fd5b50600160a060020a038085166000908152600b602090815260408083203390941683529290522054610c0985611b3c565b610c1284611b3c565b600160a060020a0384166000908152600a6020526040902054610c359084611b97565b600160a060020a038086166000908152600a60205260408082209390935590871681522054610c649084611b80565b600160a060020a0386166000908152600a6020526040902055610c878184611b80565b600160a060020a038087166000818152600b6020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b5b509392505050565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60055481565b601281565b60025460ff1615610d3a57600080fd5b60075433600160a060020a03908116911614610d5557600080fd5b610d5e81611b3c565b5b5b50565b6009545b90565b6000805433600160a060020a03908116911614610d8657600080fd5b60025460ff161515610d9757600080fd5b6002805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15060015b5b5b90565b60025460ff1681565b6000806000610ded84610dfc565b919450925090505b5050919050565b600160a060020a0381166000908152600a602052604081206001810154905482918291829182918291610e30914290611491565b600160a060020a0389166000908152600a6020526040902060020154600954929850909650945084108015610e7f5750600160a060020a0387166000908152600a602052604090206003015415155b15610f3157600160a060020a0387166000908152600a6020526040902060038101546002909101546009805467016345785d8a00009392908110610ebf57fe5b906000526020600020906002020160005b505402811515610edc57fe5b600160a060020a0389166000908152600a602052604090206002015460098054939092049350610f2b928110610f0e57fe5b906000526020600020906002020160005b50600101544283611491565b90935091505b600954958301959482019493505b5050509193909250565b6008805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b601054600160a060020a031681565b6000805433600160a060020a03908116911614610fa257600080fd5b60025460ff1615610fb257600080fd5b6002805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15060015b5b5b90565b600f545b90565b60005433600160a060020a0390811691161461101657600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600054600160a060020a031681565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b505050505081565b6a0324ae69ab71209700000081565b67016345785d8a000081565b60025460009060ff161561111e57600080fd5b61112733611b3c565b61113083611b3c565b600160a060020a0333166000908152600a60205260409020546111539083611b80565b600160a060020a033381166000908152600a602052604080822093909355908516815220546111829083611b97565b600160a060020a038085166000818152600a602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b5b92915050565b600654600160a060020a031681565b6000805433600160a060020a0390811691161461121057600080fd5b6000821161121d57600080fd5b600c546000901161122d57600080fd5b5060005b8181101561135357600c80546000190190819055600f80546112969290811061125657fe5b906000526020600020906002020160005b506001015442600f600c5481548110151561127e57fe5b906000526020600020906002020160005b5054611491565b600f600c548154811015156112a757fe5b906000526020600020906002020160005b50600d9190915555600e54600f80549091600019019081106112d657fe5b906000526020600020906002020160005b5054600c54600f805490919081106112fb57fe5b906000526020600020906002020160005b5080549091019055600c54600f8054429290811061132657fe5b906000526020600020906002020160005b5060010155600c54151561134a57611353565b5b600101611231565b600c5415611395577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600c5460405190815260200160405180910390a1610bb9565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600d544260405191825260208201526040908101905180910390a1600f805461140d91600991611bbf565b505b5b5050565b600f805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b60005433600160a060020a0390811691161461145d57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6008545b90565b6006546000908190600160a060020a031663d0699c9886868685604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff86160281526004810193909352602483019190915260448201526064016040805180830381600087803b151561150d57600080fd5b6102c65a03f1151561151e57600080fd5b50505060405180519060200180519050915091505b935093915050565b6000611545611c20565b60005433600160a060020a0390811691161461156057600080fd5b6005548492506a0324ae69ab712097000000901061157d57600080fd5b600f54600954111561159b576009805461159991600f91611bbf565b505b6005546a0324ae69ab71209700000090830111156115f7576005546a0324ae69ab7120970000000391506040517f6d617820616c6c6f632072656163686564000000000000000000000000000000815260110160405180910390a05b60058054830190557f2ccf21bc8a43b499670fe41c33ca0f7b56c83863aca7c1494f0ede9068d2731a824260405191825260208201526040908101905180910390a181815242602082015260088054600181016116548382611c37565b916000526020600020906002020160005b5082908151815560208201518160010155505050600f805480600101828161168d9190611c37565b916000526020600020906002020160005b50829081518155602082015160019091015550600e55600f54600290101561173d577fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a1600f80546116fc91600991611bbf565b507f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db28268060004260405191825260208201526040908101905180910390a1611939565b600f5460011901600c555b600c546000901061187d576117a7600f600c5481548110151561125657fe5b906000526020600020906002020160005b506001015442600f600c5481548110151561127e57fe5b906000526020600020906002020160005b5054611491565b600f600c548154811015156117b857fe5b906000526020600020906002020160005b50600d9190915555600e54600f80549091600019019081106117e757fe5b906000526020600020906002020160005b5054600c54600f8054909190811061180c57fe5b906000526020600020906002020160005b5080549091019055600c54600f8054429290811061183757fe5b906000526020600020906002020160005b5060010155600c5415806118635750600f54600c5490849003145b1561186d5761187d565b5b600c8054600019019055611748565b600c54156118bf577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600c5460405190815260200160405180910390a1611939565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600d544260405191825260208201526040908101905180910390a1600f805461193791600991611bbf565b505b5b50505050565b600d5481565b600160a060020a038083166000908152600b60209081526040808320938516835292905220545b92915050565b60025460ff161561198357600080fd5b60075433600160a060020a0390811691161461199e57600080fd5b600160a060020a0382166000908152600a602052604090206003018190555b5b5050565b600754600160a060020a031681565b60105433600160a060020a039081169116146119ec57600080fd5b6119f582611b3c565b600160a060020a0382166000908152600a6020526040902054611a189082611b97565b600160a060020a0383166000908152600a6020526040908190209182554260018301556009546002909201919091557fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8908390839051600160a060020a03909216825260208201526040908101905180910390a15b5050565b60005433600160a060020a03908116911614611aac57600080fd5b600160a060020a03811615610d5e576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600c5481565b60005433600160a060020a03908116911614611b0a57600080fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600881565b6000806000611b4a84610dfc565b600160a060020a0387166000908152600a6020526040902060028101829055838155426001909101559450925090505b50505050565b600082821115611b8c57fe5b508082035b92915050565b6000828201838110801590611bac5750828110155b1515611bb457fe5b8091505b5092915050565b828054828255906000526020600020906002028101928215611c0f5760005260206000209160020282015b82811115611c0f57825482556001808401549083015560029283019290910190611bea565b5b50611c1c929150611c69565b5090565b604080519081016040526000808252602082015290565b81548183558181151161140d5760020281600202836000526020600020918201910161140d9190611c69565b5b505050565b610d6791905b80821115611c1c5760008082556001820155600201611c6f565b5090565b905600a165627a7a72305820d1d7ef691afa1b02b902bc3e09a7b0a814a25f1bb2083bf2d5917ecbf6abf3d10029000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab
Deployed Bytecode
0x606060405236156101f65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101fb5780630901a3f114610286578063095ea7b3146102b45780630d1118ce146102ea57806318160ddd1461030e57806323b872dd1461033357806327e235e31461036f5780632a774c27146103b9578063313ce567146103de57806336b69367146104035780633e7d1acc146104245780633f4ba83a146104495780635c975abb1461047057806370a0823114610497578063735d3e81146104c857806378388eb61461050b5780637fc29fc9146105395780638456cb591461056857806385a735dd1461058f5780638c66d04f146105b45780638da5cb5b146105d557806395d89b41146106045780639b3ba79f1461068f5780639b9073e4146106b4578063a9059cbb146106d9578063b00eb9fe1461070f578063b64e8ad81461073e578063c074304414610756578063c74a96eb14610784578063cb1a32a4146107a5578063d0699c98146107ca578063d6edb047146107fe578063d8aba1c614610819578063dd62ed3e1461083e578063e5a7b51f14610875578063ed39eab314610899578063f0dda65c146108c8578063f2fde38b146108ec578063f764e8a01461090d578063fca3b5aa14610932578063ffc0d03514610953575b600080fd5b341561020657600080fd5b61020e610978565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024b5780820151818401525b602001610232565b50505050905090810190601f1680156102785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029157600080fd5b61029c600435610a16565b60405191825260208201526040908101905180910390f35b34156102bf57600080fd5b6102d6600160a060020a0360043516602435610a44565b604051901515815260200160405180910390f35b34156102f557600080fd5b61030c600160a060020a0360043516602435610afd565b005b341561031957600080fd5b610321610bbd565b60405190815260200160405180910390f35b341561033e57600080fd5b6102d6600160a060020a0360043581169060243516604435610bc3565b604051901515815260200160405180910390f35b341561037a57600080fd5b61038e600160a060020a0360043516610cf8565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34156103c457600080fd5b610321610d1f565b60405190815260200160405180910390f35b34156103e957600080fd5b610321610d25565b60405190815260200160405180910390f35b341561040e57600080fd5b61030c600160a060020a0360043516610d2a565b005b341561042f57600080fd5b610321610d63565b60405190815260200160405180910390f35b341561045457600080fd5b6102d6610d6a565b604051901515815260200160405180910390f35b341561047b57600080fd5b6102d6610dd6565b604051901515815260200160405180910390f35b34156104a257600080fd5b610321600160a060020a0360043516610ddf565b60405190815260200160405180910390f35b34156104d357600080fd5b6104e7600160a060020a0360043516610dfc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561051657600080fd5b61029c600435610f49565b60405191825260208201526040908101905180910390f35b341561054457600080fd5b61054c610f77565b604051600160a060020a03909116815260200160405180910390f35b341561057357600080fd5b6102d6610f86565b604051901515815260200160405180910390f35b341561059a57600080fd5b610321610ff4565b60405190815260200160405180910390f35b34156105bf57600080fd5b61030c600160a060020a0360043516610ffb565b005b34156105e057600080fd5b61054c611043565b604051600160a060020a03909116815260200160405180910390f35b341561060f57600080fd5b61020e611052565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024b5780820151818401525b602001610232565b50505050905090810190601f1680156102785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561069a57600080fd5b6103216110f0565b60405190815260200160405180910390f35b34156106bf57600080fd5b6103216110ff565b60405190815260200160405180910390f35b34156106e457600080fd5b6102d6600160a060020a036004351660243561110b565b604051901515815260200160405180910390f35b341561071a57600080fd5b61054c6111e5565b604051600160a060020a03909116815260200160405180910390f35b341561074957600080fd5b61030c6004356111f4565b005b341561076157600080fd5b61029c600435611414565b60405191825260208201526040908101905180910390f35b341561078f57600080fd5b61030c600160a060020a0360043516611442565b005b34156107b057600080fd5b61032161148a565b60405190815260200160405180910390f35b34156107d557600080fd5b61029c600435602435604435611491565b60405191825260208201526040908101905180910390f35b341561080957600080fd5b61030c60043560243561153b565b005b341561082457600080fd5b610321611940565b60405190815260200160405180910390f35b341561084957600080fd5b610321600160a060020a0360043581169060243516611946565b60405190815260200160405180910390f35b341561088057600080fd5b61030c600160a060020a0360043516602435611973565b005b34156108a457600080fd5b61054c6119c2565b604051600160a060020a03909116815260200160405180910390f35b34156108d357600080fd5b61030c600160a060020a03600435166024356119d1565b005b34156108f757600080fd5b61030c600160a060020a0360043516611a91565b005b341561091857600080fd5b610321611ae9565b60405190815260200160405180910390f35b341561093d57600080fd5b61030c600160a060020a0360043516611aef565b005b341561095e57600080fd5b610321611b37565b60405190815260200160405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b505050505081565b6009805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b60025460009060ff1615610a5757600080fd5b811580610a875750600160a060020a033381166000908152600b6020908152604080832093871683529290522054155b1515610a9257600080fd5b600160a060020a033381166000818152600b6020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b5b92915050565b60105433600160a060020a03908116911614610b1857600080fd5b610b2182611b3c565b600160a060020a0382166000908152600a6020526040902054610b449082611b80565b600160a060020a0383166000908152600a6020526040908190209182554260018301556009546002909201919091557f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa2908390839051600160a060020a03909216825260208201526040908101905180910390a15b5050565b60015481565b600254600090819060ff1615610bd857600080fd5b50600160a060020a038085166000908152600b602090815260408083203390941683529290522054610c0985611b3c565b610c1284611b3c565b600160a060020a0384166000908152600a6020526040902054610c359084611b97565b600160a060020a038086166000908152600a60205260408082209390935590871681522054610c649084611b80565b600160a060020a0386166000908152600a6020526040902055610c878184611b80565b600160a060020a038087166000818152600b6020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b5b509392505050565b600a6020526000908152604090208054600182015460028301546003909301549192909184565b60055481565b601281565b60025460ff1615610d3a57600080fd5b60075433600160a060020a03908116911614610d5557600080fd5b610d5e81611b3c565b5b5b50565b6009545b90565b6000805433600160a060020a03908116911614610d8657600080fd5b60025460ff161515610d9757600080fd5b6002805460ff191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15060015b5b5b90565b60025460ff1681565b6000806000610ded84610dfc565b919450925090505b5050919050565b600160a060020a0381166000908152600a602052604081206001810154905482918291829182918291610e30914290611491565b600160a060020a0389166000908152600a6020526040902060020154600954929850909650945084108015610e7f5750600160a060020a0387166000908152600a602052604090206003015415155b15610f3157600160a060020a0387166000908152600a6020526040902060038101546002909101546009805467016345785d8a00009392908110610ebf57fe5b906000526020600020906002020160005b505402811515610edc57fe5b600160a060020a0389166000908152600a602052604090206002015460098054939092049350610f2b928110610f0e57fe5b906000526020600020906002020160005b50600101544283611491565b90935091505b600954958301959482019493505b5050509193909250565b6008805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b601054600160a060020a031681565b6000805433600160a060020a03908116911614610fa257600080fd5b60025460ff1615610fb257600080fd5b6002805460ff191660011790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15060015b5b5b90565b600f545b90565b60005433600160a060020a0390811691161461101657600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600054600160a060020a031681565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b505050505081565b6a0324ae69ab71209700000081565b67016345785d8a000081565b60025460009060ff161561111e57600080fd5b61112733611b3c565b61113083611b3c565b600160a060020a0333166000908152600a60205260409020546111539083611b80565b600160a060020a033381166000908152600a602052604080822093909355908516815220546111829083611b97565b600160a060020a038085166000818152600a602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b5b92915050565b600654600160a060020a031681565b6000805433600160a060020a0390811691161461121057600080fd5b6000821161121d57600080fd5b600c546000901161122d57600080fd5b5060005b8181101561135357600c80546000190190819055600f80546112969290811061125657fe5b906000526020600020906002020160005b506001015442600f600c5481548110151561127e57fe5b906000526020600020906002020160005b5054611491565b600f600c548154811015156112a757fe5b906000526020600020906002020160005b50600d9190915555600e54600f80549091600019019081106112d657fe5b906000526020600020906002020160005b5054600c54600f805490919081106112fb57fe5b906000526020600020906002020160005b5080549091019055600c54600f8054429290811061132657fe5b906000526020600020906002020160005b5060010155600c54151561134a57611353565b5b600101611231565b600c5415611395577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600c5460405190815260200160405180910390a1610bb9565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600d544260405191825260208201526040908101905180910390a1600f805461140d91600991611bbf565b505b5b5050565b600f805482908110610a2457fe5b906000526020600020906002020160005b50805460019091015490915082565b60005433600160a060020a0390811691161461145d57600080fd5b6007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6008545b90565b6006546000908190600160a060020a031663d0699c9886868685604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff86160281526004810193909352602483019190915260448201526064016040805180830381600087803b151561150d57600080fd5b6102c65a03f1151561151e57600080fd5b50505060405180519060200180519050915091505b935093915050565b6000611545611c20565b60005433600160a060020a0390811691161461156057600080fd5b6005548492506a0324ae69ab712097000000901061157d57600080fd5b600f54600954111561159b576009805461159991600f91611bbf565b505b6005546a0324ae69ab71209700000090830111156115f7576005546a0324ae69ab7120970000000391506040517f6d617820616c6c6f632072656163686564000000000000000000000000000000815260110160405180910390a05b60058054830190557f2ccf21bc8a43b499670fe41c33ca0f7b56c83863aca7c1494f0ede9068d2731a824260405191825260208201526040908101905180910390a181815242602082015260088054600181016116548382611c37565b916000526020600020906002020160005b5082908151815560208201518160010155505050600f805480600101828161168d9190611c37565b916000526020600020906002020160005b50829081518155602082015160019091015550600e55600f54600290101561173d577fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a1600f80546116fc91600991611bbf565b507f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db28268060004260405191825260208201526040908101905180910390a1611939565b600f5460011901600c555b600c546000901061187d576117a7600f600c5481548110151561125657fe5b906000526020600020906002020160005b506001015442600f600c5481548110151561127e57fe5b906000526020600020906002020160005b5054611491565b600f600c548154811015156117b857fe5b906000526020600020906002020160005b50600d9190915555600e54600f80549091600019019081106117e757fe5b906000526020600020906002020160005b5054600c54600f8054909190811061180c57fe5b906000526020600020906002020160005b5080549091019055600c54600f8054429290811061183757fe5b906000526020600020906002020160005b5060010155600c5415806118635750600f54600c5490849003145b1561186d5761187d565b5b600c8054600019019055611748565b600c54156118bf577fc94f798321235fa17dd9603fb88bb2634abbb740fede709d211ad44ba8c63870600c5460405190815260200160405180910390a1611939565b7fcadcbce497c428a85330c77795a87b336eeb93bc01259e2fea1cd998196f935060405160405180910390a17f2a0213f6a9134dfad8fe565f70d7764a32fe66ccfa431bd1f981d6a4db282680600d544260405191825260208201526040908101905180910390a1600f805461193791600991611bbf565b505b5b50505050565b600d5481565b600160a060020a038083166000908152600b60209081526040808320938516835292905220545b92915050565b60025460ff161561198357600080fd5b60075433600160a060020a0390811691161461199e57600080fd5b600160a060020a0382166000908152600a602052604090206003018190555b5b5050565b600754600160a060020a031681565b60105433600160a060020a039081169116146119ec57600080fd5b6119f582611b3c565b600160a060020a0382166000908152600a6020526040902054611a189082611b97565b600160a060020a0383166000908152600a6020526040908190209182554260018301556009546002909201919091557fb9144c96c86541f6fa89c9f2f02495cccf4b08cd6643e26d34ee00aa586558a8908390839051600160a060020a03909216825260208201526040908101905180910390a15b5050565b60005433600160a060020a03908116911614611aac57600080fd5b600160a060020a03811615610d5e576000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b600c5481565b60005433600160a060020a03908116911614611b0a57600080fd5b6010805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600881565b6000806000611b4a84610dfc565b600160a060020a0387166000908152600a6020526040902060028101829055838155426001909101559450925090505b50505050565b600082821115611b8c57fe5b508082035b92915050565b6000828201838110801590611bac5750828110155b1515611bb457fe5b8091505b5092915050565b828054828255906000526020600020906002028101928215611c0f5760005260206000209160020282015b82811115611c0f57825482556001808401549083015560029283019290910190611bea565b5b50611c1c929150611c69565b5090565b604080519081016040526000808252602082015290565b81548183558181151161140d5760020281600202836000526020600020918201910161140d9190611c69565b5b505050565b610d6791905b80821115611c1c5760008082556001820155600201611c6f565b5090565b905600a165627a7a72305820d1d7ef691afa1b02b902bc3e09a7b0a814a25f1bb2083bf2d5917ecbf6abf3d10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab
-----Decoded View---------------
Arg [0] : feeCalc (address): 0xd56ed0DAE33A546D063e60a214Dd76538a1ba5AB
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d56ed0dae33a546d063e60a214dd76538a1ba5ab
Swarm Source
bzzr://d1d7ef691afa1b02b902bc3e09a7b0a814a25f1bb2083bf2d5917ecbf6abf3d1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.