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 | 2317 days ago | IN | 0 ETH | 0.00099568 | ||||
Transfer | 6186564 | 2317 days ago | IN | 0 ETH | 0.00099568 | ||||
Transfer | 6181777 | 2318 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 | 2538 days ago | IN | 0 ETH | 0.0021683 | ||||
Burn Tokens | 4896289 | 2538 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896286 | 2538 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896282 | 2538 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896267 | 2538 days ago | IN | 0 ETH | 0.00308385 | ||||
Burn Tokens | 4896262 | 2538 days ago | IN | 0 ETH | 0.00307745 | ||||
Burn Tokens | 4896253 | 2538 days ago | IN | 0 ETH | 0.00308065 | ||||
Burn Tokens | 4896154 | 2538 days ago | IN | 0 ETH | 0.0036584 | ||||
Unpause | 4896148 | 2538 days ago | IN | 0 ETH | 0.00072292 | ||||
Pause | 4891325 | 2539 days ago | IN | 0 ETH | 0.0043366 | ||||
Add Allocation P... | 4890598 | 2539 days ago | IN | 0 ETH | 0.00816197 | ||||
Transfer | 4795405 | 2556 days ago | IN | 0 ETH | 0.001869 | ||||
Mint Tokens | 4770835 | 2560 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 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
19567604 | 266 days ago | 0 ETH | |||||
19567603 | 266 days ago | 0 ETH | |||||
19280429 | 306 days ago | 0 ETH | |||||
19207292 | 316 days ago | 0 ETH | |||||
18221194 | 455 days ago | 0 ETH | |||||
17780045 | 516 days ago | 0 ETH | |||||
16722490 | 665 days ago | 0 ETH | |||||
16498945 | 697 days ago | 0 ETH | |||||
16334445 | 720 days ago | 0 ETH | |||||
16321166 | 722 days ago | 0 ETH | |||||
16308882 | 723 days ago | 0 ETH | |||||
16023961 | 763 days ago | 0 ETH | |||||
15969242 | 771 days ago | 0 ETH | |||||
15810028 | 793 days ago | 0 ETH | |||||
15483083 | 840 days ago | 0 ETH | |||||
15357606 | 860 days ago | 0 ETH | |||||
15328737 | 865 days ago | 0 ETH | |||||
15328730 | 865 days ago | 0 ETH | |||||
15307128 | 868 days ago | 0 ETH | |||||
15297814 | 869 days ago | 0 ETH | |||||
15278407 | 872 days ago | 0 ETH | |||||
14499784 | 998 days ago | 0 ETH | |||||
14294118 | 1030 days ago | 0 ETH | |||||
13930943 | 1086 days ago | 0 ETH | |||||
13930938 | 1086 days ago | 0 ETH |
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.