Overview
ETH Balance
10.76763783 ETH
Eth Value
$28,348.94 (@ $2,632.79/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,256 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Refund | 9623069 | 1699 days ago | IN | 0 ETH | 0.00019557 | ||||
Refund | 8101882 | 1943 days ago | IN | 0 ETH | 0.00002285 | ||||
Refund | 7345328 | 2061 days ago | IN | 0 ETH | 0.00004571 | ||||
Refund | 7279067 | 2071 days ago | IN | 0 ETH | 0.00018284 | ||||
Refund | 6757804 | 2168 days ago | IN | 0 ETH | 0.00093705 | ||||
Refund | 6757793 | 2168 days ago | IN | 0 ETH | 0.00093705 | ||||
Refund | 6444299 | 2220 days ago | IN | 0 ETH | 0.00004571 | ||||
Refund | 6360844 | 2233 days ago | IN | 0 ETH | 0.00016399 | ||||
Refund | 6276476 | 2247 days ago | IN | 0 ETH | 0.00081996 | ||||
Refund | 6269992 | 2249 days ago | IN | 0 ETH | 0.00102495 | ||||
Refund | 6269971 | 2249 days ago | IN | 0 ETH | 0.00102495 | ||||
Transfer | 6269946 | 2249 days ago | IN | 0 ETH | 0.00006441 | ||||
Transfer | 6269861 | 2249 days ago | IN | 0 ETH | 0.00012883 | ||||
Transfer | 6269847 | 2249 days ago | IN | 0 ETH | 0.00018036 | ||||
Refund | 6267115 | 2249 days ago | IN | 0 ETH | 0.00004571 | ||||
Refund | 6200605 | 2260 days ago | IN | 0 ETH | 0.00084045 | ||||
Refund | 6179950 | 2264 days ago | IN | 0 ETH | 0.00084045 | ||||
Set Service Agen... | 6166909 | 2266 days ago | IN | 0 ETH | 0.0000466 | ||||
Refund | 6158250 | 2267 days ago | IN | 0 ETH | 0.00087215 | ||||
Refund | 6158245 | 2267 days ago | IN | 0 ETH | 0.00087215 | ||||
Refund | 6136105 | 2271 days ago | IN | 0 ETH | 0.00006856 | ||||
Refund | 6134764 | 2271 days ago | IN | 0 ETH | 0.00093705 | ||||
Refund | 6134762 | 2271 days ago | IN | 0 ETH | 0.00084045 | ||||
Refund | 6133573 | 2272 days ago | IN | 5.99 ETH | 0.00089363 | ||||
Refund | 6133569 | 2272 days ago | IN | 6 ETH | 0.00089363 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6360844 | 2233 days ago | 1 ETH | ||||
6276476 | 2247 days ago | 0.1 ETH | ||||
6269992 | 2249 days ago | 0.1 ETH | ||||
6269971 | 2249 days ago | 0.1 ETH | ||||
6200605 | 2260 days ago | 0.43 ETH | ||||
6179950 | 2264 days ago | 0.1 ETH | ||||
6134762 | 2271 days ago | 6 ETH | ||||
6125922 | 2273 days ago | 0.2 ETH | ||||
6111427 | 2275 days ago | 0.1 ETH | ||||
6099536 | 2277 days ago | 1 ETH | ||||
6092874 | 2278 days ago | 0.16 ETH | ||||
6052548 | 2285 days ago | 0.18 ETH | ||||
6039404 | 2287 days ago | 0.5 ETH | ||||
6036280 | 2288 days ago | 0.34858 ETH | ||||
6017016 | 2291 days ago | 0.1291 ETH | ||||
6011459 | 2292 days ago | 0.41 ETH | ||||
6010227 | 2292 days ago | 0.2 ETH | ||||
6009857 | 2292 days ago | 2 ETH | ||||
6006585 | 2293 days ago | 0.2 ETH | ||||
6005144 | 2293 days ago | 0.17 ETH | ||||
6004890 | 2293 days ago | 0.406 ETH | ||||
6004847 | 2293 days ago | 0.18 ETH | ||||
6004700 | 2293 days ago | 14.9 ETH | ||||
6004271 | 2293 days ago | 0.5 ETH | ||||
6003959 | 2293 days ago | 0.10079677 ETH |
Loading...
Loading
Contract Name:
LuckchemyCrowdsale
Compiler Version
v0.4.22+commit.4cb486ee
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-04-21 */ pragma solidity ^0.4.21; contract LuckchemyCrowdsale { using SafeMath for uint256; // Token for selling LuckchemyToken public token; /* * Start and End date of investment process */ // 2018-04-30 00:00:00 GMT - start time for public sale uint256 public constant START_TIME_SALE = 1525046400; // 2018-07-20 23:59:59 GMT - end time for public sale uint256 public constant END_TIME_SALE = 1532131199; // 2018-04-02 00:00:00 GMT - start time for private sale uint256 public constant START_TIME_PRESALE = 1522627200; // 2018-04-24 23:59:59 GMT - end time for private sale uint256 public constant END_TIME_PRESALE = 1524614399; // amount of already sold tokens uint256 public tokensSold = 0; //supply for crowdSale uint256 public totalSupply = 0; // hard cap uint256 public constant hardCap = 45360 ether; // soft cap uint256 public constant softCap = 2000 ether; // wei representation of collected fiat uint256 public fiatBalance = 0; // ether collected in wei uint256 public ethBalance = 0; //address of serviceAgent (it can calls payFiat function) address public serviceAgent; // owner of the contract address public owner; //default token rate uint256 public constant RATE = 12500; // Token price in ETH - 0.00008 ETH 1 ETHER = 12500 tokens // 2018/04/30 - 2018/07/22 uint256 public constant DISCOUNT_PRIVATE_PRESALE = 80; // 80 % discount // 2018/04/30 - 2018/07/20 uint256 public constant DISCOUNT_STAGE_ONE = 40; // 40% discount // 2018/04/02 - 2018/04/24 uint256 public constant DISCOUNT_STAGE_TWO = 20; // 20% discount // 2018/04/30 - 2018/07/22 uint256 public constant DISCOUNT_STAGE_THREE = 0; //White list of addresses that are allowed to by a token mapping(address => bool) public whitelist; /** * List of addresses for ICO fund with shares in % * */ uint256 public constant LOTTERY_FUND_SHARE = 40; uint256 public constant OPERATIONS_SHARE = 50; uint256 public constant PARTNERS_SHARE = 10; address public constant LOTTERY_FUND_ADDRESS = 0x84137CB59076a61F3f94B2C39Da8fbCb63B6f096; address public constant OPERATIONS_ADDRESS = 0xEBBeAA0699837De527B29A03ECC914159D939Eea; address public constant PARTNERS_ADDRESS = 0x820502e8c80352f6e11Ce036DF03ceeEBE002642; /** * event for token ETH purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenETHPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); /** * event for token FIAT purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param amount amount of tokens purchased */ event TokenFiatPurchase(address indexed purchaser, address indexed beneficiary, uint256 amount); /* * modifier which gives specific rights to owner */ modifier onlyOwner(){ require(msg.sender == owner); _; } /* * modifier which gives possibility to call payFiat function */ modifier onlyServiceAgent(){ require(msg.sender == serviceAgent); _; } /* * *modifier which gives possibility to purchase * */ modifier onlyWhiteList(address _address){ require(whitelist[_address] == true); _; } /* * Enum which defines stages of ICO */ enum Stage { Private, Discount40, Discount20, NoDiscount } //current stage Stage public currentStage; //pools of token for each stage mapping(uint256 => uint256) public tokenPools; //number of tokens per 1 ether for each stage mapping(uint256 => uint256) public stageRates; /* * deposit is amount in wei , which was sent to the contract * @ address - address of depositor * @ uint256 - amount */ mapping(address => uint256) public deposits; /* * constructor of contract * @ _service- address which has rights to call payFiat */ function LuckchemyCrowdsale(address _service) public { require(START_TIME_SALE >= now); require(START_TIME_SALE > END_TIME_PRESALE); require(END_TIME_SALE > START_TIME_SALE); require(_service != 0x0); owner = msg.sender; serviceAgent = _service; token = new LuckchemyToken(); totalSupply = token.CROWDSALE_SUPPLY(); currentStage = Stage.Private; uint256 decimals = uint256(token.decimals()); tokenPools[uint256(Stage.Private)] = 70000000 * (10 ** decimals); tokenPools[uint256(Stage.Discount40)] = 105000000 * (10 ** decimals); tokenPools[uint256(Stage.Discount20)] = 175000000 * (10 ** decimals); tokenPools[uint256(Stage.NoDiscount)] = 350000000 * (10 ** decimals); stageRates[uint256(Stage.Private)] = RATE.mul(10 ** decimals).mul(100).div(100 - DISCOUNT_PRIVATE_PRESALE); stageRates[uint256(Stage.Discount40)] = RATE.mul(10 ** decimals).mul(100).div(100 - DISCOUNT_STAGE_ONE); stageRates[uint256(Stage.Discount20)] = RATE.mul(10 ** decimals).mul(100).div(100 - DISCOUNT_STAGE_TWO); stageRates[uint256(Stage.NoDiscount)] = RATE.mul(10 ** decimals).mul(100).div(100 - DISCOUNT_STAGE_THREE); } /* * function to get amount ,which invested by depositor * @depositor - address ,which bought tokens */ function depositOf(address depositor) public constant returns (uint256) { return deposits[depositor]; } /* * fallback function can be used to buy tokens */ function() public payable { payETH(msg.sender); } /* * function for tracking ethereum purchases * @beneficiary - address ,which received tokens */ function payETH(address beneficiary) public onlyWhiteList(beneficiary) payable { require(msg.value >= 0.1 ether); require(beneficiary != 0x0); require(validPurchase()); if (isPrivateSale()) { processPrivatePurchase(msg.value, beneficiary); } else { processPublicPurchase(msg.value, beneficiary); } } /* * function for processing purchase in private sale * @weiAmount - amount of wei , which send to the contract * @beneficiary - address for receiving tokens */ function processPrivatePurchase(uint256 weiAmount, address beneficiary) private { uint256 stage = uint256(Stage.Private); require(currentStage == Stage.Private); require(tokenPools[stage] > 0); //calculate number tokens uint256 tokensToBuy = (weiAmount.mul(stageRates[stage])).div(1 ether); if (tokensToBuy <= tokenPools[stage]) { //pool has enough tokens payoutTokens(beneficiary, tokensToBuy, weiAmount); } else { //pool doesn't have enough tokens tokensToBuy = tokenPools[stage]; //left wei uint256 usedWei = (tokensToBuy.mul(1 ether)).div(stageRates[stage]); uint256 leftWei = weiAmount.sub(usedWei); payoutTokens(beneficiary, tokensToBuy, usedWei); //change stage to Public Sale currentStage = Stage.Discount40; //return left wei to beneficiary and change stage beneficiary.transfer(leftWei); } } /* * function for processing purchase in public sale * @weiAmount - amount of wei , which send to the contract * @beneficiary - address for receiving tokens */ function processPublicPurchase(uint256 weiAmount, address beneficiary) private { if (currentStage == Stage.Private) { currentStage = Stage.Discount40; tokenPools[uint256(Stage.Discount40)] = tokenPools[uint256(Stage.Discount40)].add(tokenPools[uint256(Stage.Private)]); tokenPools[uint256(Stage.Private)] = 0; } for (uint256 stage = uint256(currentStage); stage <= 3; stage++) { //calculate number tokens uint256 tokensToBuy = (weiAmount.mul(stageRates[stage])).div(1 ether); if (tokensToBuy <= tokenPools[stage]) { //pool has enough tokens payoutTokens(beneficiary, tokensToBuy, weiAmount); break; } else { //pool doesn't have enough tokens tokensToBuy = tokenPools[stage]; //left wei uint256 usedWei = (tokensToBuy.mul(1 ether)).div(stageRates[stage]); uint256 leftWei = weiAmount.sub(usedWei); payoutTokens(beneficiary, tokensToBuy, usedWei); if (stage == 3) { //return unused wei when all tokens sold beneficiary.transfer(leftWei); break; } else { weiAmount = leftWei; //change current stage currentStage = Stage(stage + 1); } } } } /* * function for actual payout in public sale * @beneficiary - address for receiving tokens * @tokenAmount - amount of tokens to payout * @weiAmount - amount of wei used */ function payoutTokens(address beneficiary, uint256 tokenAmount, uint256 weiAmount) private { uint256 stage = uint256(currentStage); tokensSold = tokensSold.add(tokenAmount); tokenPools[stage] = tokenPools[stage].sub(tokenAmount); deposits[beneficiary] = deposits[beneficiary].add(weiAmount); ethBalance = ethBalance.add(weiAmount); token.transfer(beneficiary, tokenAmount); TokenETHPurchase(msg.sender, beneficiary, weiAmount, tokenAmount); } /* * function for change btc agent * can be called only by owner of the contract * @_newServiceAgent - new serviceAgent address */ function setServiceAgent(address _newServiceAgent) public onlyOwner { serviceAgent = _newServiceAgent; } /* * function for tracking bitcoin purchases received by bitcoin wallet * each transaction and amount of tokens according to rate can be validated on public bitcoin wallet * public key - # * @beneficiary - address, which received tokens * @amount - amount tokens * @stage - number of the stage (80% 40% 20% 0% discount) * can be called only by serviceAgent address */ function payFiat(address beneficiary, uint256 amount, uint256 stage) public onlyServiceAgent onlyWhiteList(beneficiary) { require(beneficiary != 0x0); require(tokenPools[stage] >= amount); require(stage == uint256(currentStage)); //calculate fiat amount in wei uint256 fiatWei = amount.mul(1 ether).div(stageRates[stage]); fiatBalance = fiatBalance.add(fiatWei); require(validPurchase()); tokenPools[stage] = tokenPools[stage].sub(amount); tokensSold = tokensSold.add(amount); token.transfer(beneficiary, amount); TokenFiatPurchase(msg.sender, beneficiary, amount); } /* * function for checking if crowdsale is finished */ function hasEnded() public constant returns (bool) { return now > END_TIME_SALE || tokensSold >= totalSupply; } /* * function for checking if hardCapReached */ function hardCapReached() public constant returns (bool) { return tokensSold >= totalSupply || fiatBalance.add(ethBalance) >= hardCap; } /* * function for checking if crowdsale goal is reached */ function softCapReached() public constant returns (bool) { return fiatBalance.add(ethBalance) >= softCap; } function isPrivateSale() public constant returns (bool) { return now >= START_TIME_PRESALE && now <= END_TIME_PRESALE; } /* * function that call after crowdsale is ended * releaseTokenTransfer - enable token transfer between users. * burn tokens which are left on crowsale contract balance * transfer balance of contract to wallets according to shares. */ function forwardFunds() public onlyOwner { require(hasEnded()); require(softCapReached()); token.releaseTokenTransfer(); token.burn(token.balanceOf(this)); //transfer token ownership to this owner of crowdsale token.transferOwnership(msg.sender); //transfer funds here uint256 totalBalance = this.balance; LOTTERY_FUND_ADDRESS.transfer((totalBalance.mul(LOTTERY_FUND_SHARE)).div(100)); OPERATIONS_ADDRESS.transfer((totalBalance.mul(OPERATIONS_SHARE)).div(100)); PARTNERS_ADDRESS.transfer(this.balance); // send the rest to partners (PARTNERS_SHARE) } /* * function that call after crowdsale is ended * conditions : ico ended and goal isn't reached. amount of depositor > 0. * * refund eth deposit (fiat refunds will be done manually) */ function refund() public { require(hasEnded()); require(!softCapReached() || ((now > END_TIME_SALE + 30 days) && !token.released())); uint256 amount = deposits[msg.sender]; require(amount > 0); deposits[msg.sender] = 0; msg.sender.transfer(amount); } /* internal functions */ /* * function for checking period of investment and investment amount restriction for ETH purchases */ function validPurchase() internal constant returns (bool) { bool withinPeriod = (now >= START_TIME_PRESALE && now <= END_TIME_PRESALE) || (now >= START_TIME_SALE && now <= END_TIME_SALE); return withinPeriod && !hardCapReached(); } /* * function for adding address to whitelist * @_whitelistAddress - address to add */ function addToWhiteList(address _whitelistAddress) public onlyServiceAgent { whitelist[_whitelistAddress] = true; } /* * function for removing address from whitelist * @_whitelistAddress - address to remove */ function removeWhiteList(address _whitelistAddress) public onlyServiceAgent { delete whitelist[_whitelistAddress]; } } contract ERC20Basic { function totalSupply() public view returns (uint256); function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; uint256 totalSupply_; /** * @dev total number of tokens in existence */ function totalSupply() public view returns (uint256) { return totalSupply_; } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[msg.sender]); // SafeMath.sub will throw if there is not enough balance. balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } } contract BurnableToken is BasicToken { event Burn(address indexed burner, uint256 value); /** * @dev Burns a specific amount of tokens. * @param _value The amount of token to be burned. */ function burn(uint256 _value) public { require(_value <= balances[msg.sender]); // no need to require value <= totalSupply, since that would imply the // sender's balance is greater than the totalSupply, which *should* be an assertion failure address burner = msg.sender; balances[burner] = balances[burner].sub(_value); totalSupply_ = totalSupply_.sub(_value); Burn(burner, _value); Transfer(burner, address(0), _value); } } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) internal allowed; /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public returns (bool) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } contract Claimable is Ownable { address public pendingOwner; /** * @dev Modifier throws if called by any account other than the pendingOwner. */ modifier onlyPendingOwner() { require(msg.sender == pendingOwner); _; } /** * @dev Allows the current owner to set the pendingOwner address. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { pendingOwner = newOwner; } /** * @dev Allows the pendingOwner address to finalize the transfer. */ function claimOwnership() onlyPendingOwner public { OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; pendingOwner = address(0); } } contract LuckchemyToken is BurnableToken, StandardToken, Claimable { bool public released = false; string public constant name = "Luckchemy"; string public constant symbol = "LUK"; uint8 public constant decimals = 8; uint256 public CROWDSALE_SUPPLY; uint256 public OWNERS_AND_PARTNERS_SUPPLY; address public constant OWNERS_AND_PARTNERS_ADDRESS = 0x603a535a1D7C5050021F9f5a4ACB773C35a67602; // Index of unique addresses uint256 public addressCount = 0; // Map of unique addresses mapping(uint256 => address) public addressMap; mapping(address => bool) public addressAvailabilityMap; //blacklist of addresses (product/developers addresses) that are not included in the final Holder lottery mapping(address => bool) public blacklist; // service agent for managing blacklist address public serviceAgent; event Release(); event BlacklistAdd(address indexed addr); event BlacklistRemove(address indexed addr); /** * Do not transfer tokens until the crowdsale is over. * */ modifier canTransfer() { require(released || msg.sender == owner); _; } /* * modifier which gives specific rights to serviceAgent */ modifier onlyServiceAgent(){ require(msg.sender == serviceAgent); _; } function LuckchemyToken() public { totalSupply_ = 1000000000 * (10 ** uint256(decimals)); CROWDSALE_SUPPLY = 700000000 * (10 ** uint256(decimals)); OWNERS_AND_PARTNERS_SUPPLY = 300000000 * (10 ** uint256(decimals)); addAddressToUniqueMap(msg.sender); addAddressToUniqueMap(OWNERS_AND_PARTNERS_ADDRESS); balances[msg.sender] = CROWDSALE_SUPPLY; balances[OWNERS_AND_PARTNERS_ADDRESS] = OWNERS_AND_PARTNERS_SUPPLY; owner = msg.sender; Transfer(0x0, msg.sender, CROWDSALE_SUPPLY); Transfer(0x0, OWNERS_AND_PARTNERS_ADDRESS, OWNERS_AND_PARTNERS_SUPPLY); } function transfer(address _to, uint256 _value) public canTransfer returns (bool success) { //Add address to map of unique token owners addAddressToUniqueMap(_to); // Call StandardToken.transfer() return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint256 _value) public canTransfer returns (bool success) { //Add address to map of unique token owners addAddressToUniqueMap(_to); // Call StandardToken.transferForm() return super.transferFrom(_from, _to, _value); } /** * * Release the tokens to the public. * Can be called only by owner which should be the Crowdsale contract * Should be called if the crowdale is successfully finished * */ function releaseTokenTransfer() public onlyOwner { released = true; Release(); } /** * Add address to the black list. * Only service agent can do this */ function addBlacklistItem(address _blackAddr) public onlyServiceAgent { blacklist[_blackAddr] = true; BlacklistAdd(_blackAddr); } /** * Remove address from the black list. * Only service agent can do this */ function removeBlacklistItem(address _blackAddr) public onlyServiceAgent { delete blacklist[_blackAddr]; } /** * Add address to unique map if it is not added */ function addAddressToUniqueMap(address _addr) private returns (bool) { if (addressAvailabilityMap[_addr] == true) { return true; } addressAvailabilityMap[_addr] = true; addressMap[addressCount++] = _addr; return true; } /** * Get address by index from map of unique addresses */ function getUniqueAddressByIndex(uint256 _addressIndex) public view returns (address) { return addressMap[_addressIndex]; } /** * Change service agent */ function changeServiceAgent(address _addr) public onlyOwner { serviceAgent = _addr; } } library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenPools","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_TIME_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newServiceAgent","type":"address"}],"name":"setServiceAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"amount","type":"uint256"},{"name":"stage","type":"uint256"}],"name":"payFiat","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPrivateSale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PARTNERS_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_whitelistAddress","type":"address"}],"name":"removeWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"depositor","type":"address"}],"name":"depositOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"END_TIME_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"serviceAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_whitelistAddress","type":"address"}],"name":"addToWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PARTNERS_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LOTTERY_FUND_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fiatBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"RATE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"START_TIME_SALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OPERATIONS_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stageRates","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DISCOUNT_STAGE_THREE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"forwardFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DISCOUNT_STAGE_TWO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"END_TIME_SALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"LOTTERY_FUND_ADDRESS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DISCOUNT_STAGE_ONE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OPERATIONS_SHARE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DISCOUNT_PRIVATE_PRESALE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"payETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_service","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenETHPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenFiatPurchase","type":"event"}]
Contract Creation Code
608060405260006001556000600255600060035560006004553480156200002557600080fd5b5060405160208062002cb48339810160405251600042635ae65c8010156200004c57600080fd5b600160a060020a03821615156200006257600080fd5b60068054600160a060020a03338116600160a060020a03199283161790925560058054928516929091169190911790556200009c62000459565b604051809103906000f080158015620000b9573d6000803e3d6000fd5b5060008054600160a060020a031916600160a060020a0392831617808255604080517f56ad9f57000000000000000000000000000000000000000000000000000000008152905191909316926356ad9f579260048083019360209390929083900390910190829087803b1580156200013057600080fd5b505af115801562000145573d6000803e3d6000fd5b505050506040513d60208110156200015c57600080fd5b50516002556008805460ff1916905560008054604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600160a060020a039092169263313ce567926004808401936020939083900390910190829087803b158015620001cd57600080fd5b505af1158015620001e2573d6000803e3d6000fd5b505050506040513d6020811015620001f957600080fd5b5051600960205260ff16600a81900a63042c1d8081027fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b556306422c4081027f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3655630a6e49c081027f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c35560036000526314dc938081027fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e7559091506200030b90601490620002f690606490620002e1906130d4906401000000006200135b6200040782021704565b906401000000006200135b6200040782021704565b90640100000000620013916200044182021704565b600a60008081526020810191909152604001600020556200034d603c620002f66064620002e16130d4600a87900a6401000000006200135b6200040782021704565b600a600060018152602081019190915260400160002055620003906050620002f66064620002e16130d4600a87900a6401000000006200135b6200040782021704565b600a600060028152602081019190915260400160002055620003d26064620002f681620002e16130d4600a87900a6401000000006200135b6200040782021704565b6003600052600a6020527fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975955506200046a9050565b6000808315156200041c57600091506200043a565b508282028284828115156200042d57fe5b04146200043657fe5b8091505b5092915050565b60008082848115156200045057fe5b04949350505050565b60405161129f8062001a1583390190565b61159b806200047a6000396000f3006080604052600436106101de5763ffffffff60e060020a600035041662c0f91681146101e9578063045b9c721461021357806304f0aa4e14610228578063085ca94e1461024957806314be77931461027057806318160ddd146102995780631fe6189e146102ae5780632042e5c2146102df57806323e3fbd5146103005780632b9edee91461032157806336a26b991461033657806343a775301461034b57806347ee0394146103605780634e6630b014610381578063504c958214610396578063518ab2a8146103ab578063590e1ae3146103c05780635bf5d54c146103d55780635df6461d1461040e578063649f015314610423578063664e9704146104385780636de685f61461044d5780636f0f45d2146104625780638558c290146104775780638da5cb5b1461048f578063906a26e0146104a45780639762f802146104b95780639abec159146104ce5780639b19251a146104e35780639d73528614610504578063a58561ec14610519578063ae0358461461052e578063b58f4a2414610543578063ca63f0571461040e578063d191d7f414610558578063d55b9f4d1461056d578063ecb70fb714610582578063f8e6a8cf14610597578063fb86a404146105ab578063fc0c546a146105c0578063fc7e286d146105d5575b6101e7336105f6565b005b3480156101f557600080fd5b50610201600435610689565b60408051918252519081900360200190f35b34801561021f57600080fd5b5061020161069b565b34801561023457600080fd5b506101e7600160a060020a03600435166106a3565b34801561025557600080fd5b506101e7600160a060020a03600435166024356044356106ed565b34801561027c57600080fd5b50610285610913565b604080519115158252519081900360200190f35b3480156102a557600080fd5b50610201610932565b3480156102ba57600080fd5b506102c3610938565b60408051600160a060020a039092168252519081900360200190f35b3480156102eb57600080fd5b506101e7600160a060020a0360043516610950565b34801561030c57600080fd5b50610201600160a060020a036004351661098c565b34801561032d57600080fd5b506102856109a7565b34801561034257600080fd5b506102016109d1565b34801561035757600080fd5b506102c36109d9565b34801561036c57600080fd5b506101e7600160a060020a03600435166109e8565b34801561038d57600080fd5b50610201610a27565b3480156103a257600080fd5b50610201610a2d565b3480156103b757600080fd5b50610201610a32565b3480156103cc57600080fd5b506101e7610a38565b3480156103e157600080fd5b506103ea610b5f565b604051808260038111156103fa57fe5b60ff16815260200191505060405180910390f35b34801561041a57600080fd5b50610201610b68565b34801561042f57600080fd5b50610201610b6d565b34801561044457600080fd5b50610201610b73565b34801561045957600080fd5b50610201610b79565b34801561046e57600080fd5b506102c3610b81565b34801561048357600080fd5b50610201600435610b99565b34801561049b57600080fd5b506102c3610bab565b3480156104b057600080fd5b50610201610bba565b3480156104c557600080fd5b50610285610bc7565b3480156104da57600080fd5b50610201610bf9565b3480156104ef57600080fd5b50610285600160a060020a0360043516610bfe565b34801561051057600080fd5b506101e7610c13565b34801561052557600080fd5b50610201610f3e565b34801561053a57600080fd5b50610201610f43565b34801561054f57600080fd5b506102c3610f4b565b34801561056457600080fd5b50610201610f63565b34801561057957600080fd5b50610201610f68565b34801561058e57600080fd5b50610285610f6d565b6101e7600160a060020a03600435166105f6565b3480156105b757600080fd5b50610201610f88565b3480156105cc57600080fd5b506102c3610f96565b3480156105e157600080fd5b50610201600160a060020a0360043516610fa5565b600160a060020a038116600090815260076020526040902054819060ff16151560011461062257600080fd5b67016345785d8a000034101561063757600080fd5b600160a060020a038216151561064c57600080fd5b610654610fb7565b151561065f57600080fd5b610667610913565b1561067b57610676348361100a565b610685565b6106853483611144565b5050565b60096020526000908152604090205481565b635ac1728081565b60065433600160a060020a039081169116146106be57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055460009033600160a060020a0390811691161461070b57600080fd5b600160a060020a038416600090815260076020526040902054849060ff16151560011461073757600080fd5b600160a060020a038516151561074c57600080fd5b60008381526009602052604090205484111561076757600080fd5b60085460ff16600381111561077857fe5b831461078357600080fd5b6000838152600a60205260409020546107ba906107ae86670de0b6b3a764000063ffffffff61135b16565b9063ffffffff61139116565b6003549092506107d0908363ffffffff6113a816565b6003556107db610fb7565b15156107e657600080fd5b600083815260096020526040902054610805908563ffffffff6113b716565b600084815260096020526040902055600154610827908563ffffffff6113a816565b60015560008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152602482018990529151919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b505050506040513d60208110156108c657600080fd5b5050604080518581529051600160a060020a038088169233909116917f37318f3da062fafdc667698bc59756420e04b5a02ed980579aa3c2443d6664599181900360200190a35050505050565b6000635ac17280421015801561092d5750635adfc4ff4211155b905090565b60025481565b73820502e8c80352f6e11ce036df03ceeebe00264281565b60055433600160a060020a0390811691161461096b57600080fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b600160a060020a03166000908152600b602052604090205490565b6000686c6b935b8bbd4000006109ca6004546003546113a890919063ffffffff16565b1015905090565b635adfc4ff81565b600554600160a060020a031681565b60055433600160a060020a03908116911614610a0357600080fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b60045481565b600a81565b60015481565b6000610a42610f6d565b1515610a4d57600080fd5b610a556109a7565b1580610aea5750635b7a047f42118015610aea57506000809054906101000a9004600160a060020a0316600160a060020a031663961325216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610abc57600080fd5b505af1158015610ad0573d6000803e3d6000fd5b505050506040513d6020811015610ae657600080fd5b5051155b1515610af557600080fd5b50600160a060020a0333166000908152600b6020526040812054908111610b1b57600080fd5b600160a060020a0333166000818152600b60205260408082208290555183156108fc0291849190818181858888f19350505050158015610685573d6000803e3d6000fd5b60085460ff1681565b602881565b60035481565b6130d481565b635ae65c8081565b73ebbeaa0699837de527b29a03ecc914159d939eea81565b600a6020526000908152604090205481565b600654600160a060020a031681565b686c6b935b8bbd40000081565b600060025460015410158061092d575069099af874786b86c000006109ca6004546003546113a890919063ffffffff16565b600081565b60076020526000908152604090205460ff1681565b60065460009033600160a060020a03908116911614610c3157600080fd5b610c39610f6d565b1515610c4457600080fd5b610c4c6109a7565b1515610c5757600080fd5b60008054604080517f5f412d4f0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692635f412d4f9260048084019382900301818387803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505060008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03308116600483015291519190921694506342966c68935084926370a0823192602480820193602093909283900390910190829087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b505050506040513d6020811015610d6657600080fd5b50516040805160e060020a63ffffffff8516028152600481019290925251602480830192600092919082900301818387803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505060008054604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152915191909216945063f2fde38b93506024808301939282900301818387803b158015610e2057600080fd5b505af1158015610e34573d6000803e3d6000fd5b505050600160a060020a0330163191507384137cb59076a61f3f94b2c39da8fbcb63b6f09690506108fc610e7460646107ae85602863ffffffff61135b16565b6040518115909202916000818181858888f19350505050158015610e9c573d6000803e3d6000fd5b5073ebbeaa0699837de527b29a03ecc914159d939eea6108fc610ecb60646107ae85603263ffffffff61135b16565b6040518115909202916000818181858888f19350505050158015610ef3573d6000803e3d6000fd5b5060405173820502e8c80352f6e11ce036df03ceeebe0026429030600160a060020a03163180156108fc02916000818181858888f19350505050158015610685573d6000803e3d6000fd5b601481565b635b52777f81565b7384137cb59076a61f3f94b2c39da8fbcb63b6f09681565b603281565b605081565b6000635b52777f42118061092d575050600254600154101590565b69099af874786b86c0000081565b600054600160a060020a031681565b600b6020526000908152604090205481565b600080635ac172804210158015610fd25750635adfc4ff4211155b80610ff05750635ae65c804210158015610ff05750635b52777f4211155b90508080156110045750611002610bc7565b155b91505090565b6000808080809350600060085460ff16600381111561102557fe5b1461102f57600080fd5b6000848152600960205260408120541161104857600080fd5b6000848152600a602052604090205461107690670de0b6b3a7640000906107ae90899063ffffffff61135b16565b600085815260096020526040902054909350831161109e576110998584886113c9565b61113c565b600084815260096020908152604080832054600a909252909120549093506110d8906107ae85670de0b6b3a764000063ffffffff61135b16565b91506110ea868363ffffffff6113b716565b90506110f78584846113c9565b6008805460ff19166001179055604051600160a060020a038616906108fc8315029083906000818181858888f1935050505015801561113a573d6000803e3d6000fd5b505b505050505050565b60008080808060085460ff16600381111561115b57fe5b1415611218576008805460ff1916600190811790915560096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546000919091527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36546111c9916113a8565b60096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365560008080527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b555b60085460ff16600381111561122957fe5b93505b6003841161113c576000848152600a602052604090205461126290670de0b6b3a7640000906107ae90899063ffffffff61135b16565b6000858152600960205260409020549093508311611285576110998584886113c9565b600084815260096020908152604080832054600a909252909120549093506112bf906107ae85670de0b6b3a764000063ffffffff61135b16565b91506112d1868363ffffffff6113b716565b90506112de8584846113c9565b836003141561132357604051600160a060020a0386169082156108fc029083906000818181858888f1935050505015801561131d573d6000803e3d6000fd5b5061113c565b80955083600101600381111561133557fe5b6008805460ff1916600183600381111561134b57fe5b021790555060019093019261122c565b60008083151561136e576000915061138a565b5082820282848281151561137e57fe5b041461138657fe5b8091505b5092915050565b600080828481151561139f57fe5b04949350505050565b60008282018381101561138657fe5b6000828211156113c357fe5b50900390565b60085460009060ff1660038111156113dd57fe5b6001549091506113f3908463ffffffff6113a816565b600155600081815260096020526040902054611415908463ffffffff6113b716565b600082815260096020908152604080832093909355600160a060020a0387168252600b9052205461144c908363ffffffff6113a816565b600160a060020a0385166000908152600b6020526040902055600454611478908363ffffffff6113a816565b600490815560008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0389811695820195909552602481018890529051939091169263a9059cbb92604480840193602093929083900390910190829087803b1580156114f157600080fd5b505af1158015611505573d6000803e3d6000fd5b505050506040513d602081101561151b57600080fd5b505060408051838152602081018590528151600160a060020a038088169333909116927f884e0eeb4000625bd63745131e77fd3a4cc0956dfb2f69c1f07e06e21b0927e4929081900390910190a3505050505600a165627a7a72305820d56f5ddddfa8088d2803dac2b9e0cfa47daee976829d7a583e9dec4f6397dbe9002960806040526004805460a060020a60ff0219169055600060075534801561002557600080fd5b5060038054600160a060020a03191633600160a060020a0381169190911790915567016345785d8a000060015566f8b0a10e470000600555666a94d74f43000060065561007a90640100000000610172810204565b506100a173603a535a1d7c5050021f9f5a4acb773c35a67602640100000000610172810204565b50600554600160a060020a03331660008181526020818152604080832085905560065473603a535a1d7c5050021f9f5a4acb773c35a6760284527f073d6e6f497a40a379d876b56c3789fb028c20da9e81861c56d7a1cb2d2c6e015560038054600160a060020a031916851790558051948552519293919260008051602061127f8339815191529281900390910190a3600654604080519182525173603a535a1d7c5050021f9f5a4acb773c35a676029160009160008051602061127f8339815191529181900360200190a36101f6565b600160a060020a03811660009081526009602052604081205460ff161515600114156101a0575060016101f1565b50600160a060020a0381166000818152600960209081526040808320805460ff1916600190811790915560078054808301909155845260089092529091208054600160a060020a0319169092179091555b919050565b61107a806102056000396000f30060806040526004361061017f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610184578063095ea7b31461020e57806318160ddd146102465780631e899d671461026d57806323b872dd1461028e578063313ce567146102b857806342966c68146102e357806343a77530146102fd5780634e71e0c81461032e57806356ad9f57146103435780635f412d4f14610358578063620a6a8e1461036d57806366188463146103855780636d77e144146103a957806370a08231146103ca5780638da5cb5b146103eb57806395d89b411461040057806396132521146104155780639d80c8181461042a5780639dfaa2071461043f578063a9059cbb14610454578063bbf722a214610478578063c4bff12414610490578063cef5ed69146104b1578063d1c15acf146104d2578063d73dd623146104e7578063dd62ed3e1461050b578063e30c397814610532578063f2fde38b14610547578063f9f92be414610568575b600080fd5b34801561019057600080fd5b50610199610589565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d35781810151838201526020016101bb565b50505050905090810190601f1680156102005780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021a57600080fd5b50610232600160a060020a03600435166024356105c0565b604080519115158252519081900360200190f35b34801561025257600080fd5b5061025b61062a565b60408051918252519081900360200190f35b34801561027957600080fd5b50610232600160a060020a0360043516610630565b34801561029a57600080fd5b50610232600160a060020a0360043581169060243516604435610645565b3480156102c457600080fd5b506102cd6106a7565b6040805160ff9092168252519081900360200190f35b3480156102ef57600080fd5b506102fb6004356106ac565b005b34801561030957600080fd5b506103126107a9565b60408051600160a060020a039092168252519081900360200190f35b34801561033a57600080fd5b506102fb6107b8565b34801561034f57600080fd5b5061025b610846565b34801561036457600080fd5b506102fb61084c565b34801561037957600080fd5b506103126004356108c7565b34801561039157600080fd5b50610232600160a060020a03600435166024356108e5565b3480156103b557600080fd5b506102fb600160a060020a03600435166109de565b3480156103d657600080fd5b5061025b600160a060020a0360043516610a1a565b3480156103f757600080fd5b50610312610a35565b34801561040c57600080fd5b50610199610a44565b34801561042157600080fd5b50610232610a7b565b34801561043657600080fd5b5061025b610a9c565b34801561044b57600080fd5b50610312610aa2565b34801561046057600080fd5b50610232600160a060020a0360043516602435610aba565b34801561048457600080fd5b50610312600435610b1a565b34801561049c57600080fd5b506102fb600160a060020a0360043516610b35565b3480156104bd57600080fd5b506102fb600160a060020a0360043516610b9c565b3480156104de57600080fd5b5061025b610be6565b3480156104f357600080fd5b50610232600160a060020a0360043516602435610bec565b34801561051757600080fd5b5061025b600160a060020a0360043581169060243516610c8e565b34801561053e57600080fd5b50610312610cb9565b34801561055357600080fd5b506102fb600160a060020a0360043516610cc8565b34801561057457600080fd5b50610232600160a060020a0360043516610d12565b60408051808201909152600981527f4c75636b6368656d790000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60015490565b60096020526000908152604090205460ff1681565b60045460009074010000000000000000000000000000000000000000900460ff168061067f575060035433600160a060020a039081169116145b151561068a57600080fd5b61069383610d27565b5061069f848484610db4565b949350505050565b600881565b600160a060020a0333166000908152602081905260408120548211156106d157600080fd5b5033600160a060020a0381166000908152602081905260409020546106f69083610f34565b600160a060020a038216600090815260208190526040902055600154610722908363ffffffff610f3416565b600155604080518381529051600160a060020a038316917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518381529051600091600160a060020a038416917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600b54600160a060020a031681565b60045433600160a060020a039081169116146107d357600080fd5b600454600354604051600160a060020a0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546003805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60055481565b60035433600160a060020a0390811691161461086757600080fd5b6004805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fdf3164c6542982869e04c28f5083f269f2b72ca4bff9a7e792f5c0422788bbc590600090a1565b600081815260086020526040902054600160a060020a03165b919050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561094257600160a060020a033381166000908152600260209081526040808320938816835292905290812055610979565b610952818463ffffffff610f3416565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600b5433600160a060020a039081169116146109f957600080fd5b600160a060020a03166000908152600a60205260409020805460ff19169055565b600160a060020a031660009081526020819052604090205490565b600354600160a060020a031681565b60408051808201909152600381527f4c554b0000000000000000000000000000000000000000000000000000000000602082015281565b60045474010000000000000000000000000000000000000000900460ff1681565b60075481565b73603a535a1d7c5050021f9f5a4acb773c35a6760281565b60045460009074010000000000000000000000000000000000000000900460ff1680610af4575060035433600160a060020a039081169116145b1515610aff57600080fd5b610b0883610d27565b50610b138383610f46565b9392505050565b600860205260009081526040902054600160a060020a031681565b600b5433600160a060020a03908116911614610b5057600080fd5b600160a060020a0381166000818152600a6020526040808220805460ff19166001179055517f7a03ea7eb40e97cfdee89cf6f18808a27ebeccb5e8c028b07d650c205e9345389190a250565b60035433600160a060020a03908116911614610bb757600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60065481565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610c24908363ffffffff61103f16565b600160a060020a0333811660008181526002602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b600454600160a060020a031681565b60035433600160a060020a03908116911614610ce357600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a6020526000908152604090205460ff1681565b600160a060020a03811660009081526009602052604081205460ff16151560011415610d55575060016108e0565b50600160a060020a03166000818152600960209081526040808320805460ff191660019081179091556007805480830190915584526008909252909120805473ffffffffffffffffffffffffffffffffffffffff191690921790915590565b6000600160a060020a0383161515610dcb57600080fd5b600160a060020a038416600090815260208190526040902054821115610df057600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610e2357600080fd5b600160a060020a038416600090815260208190526040902054610e4c908363ffffffff610f3416565b600160a060020a038086166000908152602081905260408082209390935590851681522054610e81908363ffffffff61103f16565b600160a060020a0380851660009081526020818152604080832094909455878316825260028152838220339093168252919091522054610ec7908363ffffffff610f3416565b600160a060020a038086166000818152600260209081526040808320338616845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b600082821115610f4057fe5b50900390565b6000600160a060020a0383161515610f5d57600080fd5b600160a060020a033316600090815260208190526040902054821115610f8257600080fd5b600160a060020a033316600090815260208190526040902054610fab908363ffffffff610f3416565b600160a060020a033381166000908152602081905260408082209390935590851681522054610fe0908363ffffffff61103f16565b600160a060020a03808516600081815260208181526040918290209490945580518681529051919333909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350600192915050565b600082820183811015610b1357fe00a165627a7a723058205e6e3f27ed86edac2c9308e66f4cc8c5647e3226243fc2c7bb6668daabf982410029ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef0000000000000000000000003bf319e9fdab14a3178e252749c56df8acf109ed
Deployed Bytecode
0x6080604052600436106101de5763ffffffff60e060020a600035041662c0f91681146101e9578063045b9c721461021357806304f0aa4e14610228578063085ca94e1461024957806314be77931461027057806318160ddd146102995780631fe6189e146102ae5780632042e5c2146102df57806323e3fbd5146103005780632b9edee91461032157806336a26b991461033657806343a775301461034b57806347ee0394146103605780634e6630b014610381578063504c958214610396578063518ab2a8146103ab578063590e1ae3146103c05780635bf5d54c146103d55780635df6461d1461040e578063649f015314610423578063664e9704146104385780636de685f61461044d5780636f0f45d2146104625780638558c290146104775780638da5cb5b1461048f578063906a26e0146104a45780639762f802146104b95780639abec159146104ce5780639b19251a146104e35780639d73528614610504578063a58561ec14610519578063ae0358461461052e578063b58f4a2414610543578063ca63f0571461040e578063d191d7f414610558578063d55b9f4d1461056d578063ecb70fb714610582578063f8e6a8cf14610597578063fb86a404146105ab578063fc0c546a146105c0578063fc7e286d146105d5575b6101e7336105f6565b005b3480156101f557600080fd5b50610201600435610689565b60408051918252519081900360200190f35b34801561021f57600080fd5b5061020161069b565b34801561023457600080fd5b506101e7600160a060020a03600435166106a3565b34801561025557600080fd5b506101e7600160a060020a03600435166024356044356106ed565b34801561027c57600080fd5b50610285610913565b604080519115158252519081900360200190f35b3480156102a557600080fd5b50610201610932565b3480156102ba57600080fd5b506102c3610938565b60408051600160a060020a039092168252519081900360200190f35b3480156102eb57600080fd5b506101e7600160a060020a0360043516610950565b34801561030c57600080fd5b50610201600160a060020a036004351661098c565b34801561032d57600080fd5b506102856109a7565b34801561034257600080fd5b506102016109d1565b34801561035757600080fd5b506102c36109d9565b34801561036c57600080fd5b506101e7600160a060020a03600435166109e8565b34801561038d57600080fd5b50610201610a27565b3480156103a257600080fd5b50610201610a2d565b3480156103b757600080fd5b50610201610a32565b3480156103cc57600080fd5b506101e7610a38565b3480156103e157600080fd5b506103ea610b5f565b604051808260038111156103fa57fe5b60ff16815260200191505060405180910390f35b34801561041a57600080fd5b50610201610b68565b34801561042f57600080fd5b50610201610b6d565b34801561044457600080fd5b50610201610b73565b34801561045957600080fd5b50610201610b79565b34801561046e57600080fd5b506102c3610b81565b34801561048357600080fd5b50610201600435610b99565b34801561049b57600080fd5b506102c3610bab565b3480156104b057600080fd5b50610201610bba565b3480156104c557600080fd5b50610285610bc7565b3480156104da57600080fd5b50610201610bf9565b3480156104ef57600080fd5b50610285600160a060020a0360043516610bfe565b34801561051057600080fd5b506101e7610c13565b34801561052557600080fd5b50610201610f3e565b34801561053a57600080fd5b50610201610f43565b34801561054f57600080fd5b506102c3610f4b565b34801561056457600080fd5b50610201610f63565b34801561057957600080fd5b50610201610f68565b34801561058e57600080fd5b50610285610f6d565b6101e7600160a060020a03600435166105f6565b3480156105b757600080fd5b50610201610f88565b3480156105cc57600080fd5b506102c3610f96565b3480156105e157600080fd5b50610201600160a060020a0360043516610fa5565b600160a060020a038116600090815260076020526040902054819060ff16151560011461062257600080fd5b67016345785d8a000034101561063757600080fd5b600160a060020a038216151561064c57600080fd5b610654610fb7565b151561065f57600080fd5b610667610913565b1561067b57610676348361100a565b610685565b6106853483611144565b5050565b60096020526000908152604090205481565b635ac1728081565b60065433600160a060020a039081169116146106be57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055460009033600160a060020a0390811691161461070b57600080fd5b600160a060020a038416600090815260076020526040902054849060ff16151560011461073757600080fd5b600160a060020a038516151561074c57600080fd5b60008381526009602052604090205484111561076757600080fd5b60085460ff16600381111561077857fe5b831461078357600080fd5b6000838152600a60205260409020546107ba906107ae86670de0b6b3a764000063ffffffff61135b16565b9063ffffffff61139116565b6003549092506107d0908363ffffffff6113a816565b6003556107db610fb7565b15156107e657600080fd5b600083815260096020526040902054610805908563ffffffff6113b716565b600084815260096020526040902055600154610827908563ffffffff6113a816565b60015560008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038981166004830152602482018990529151919092169263a9059cbb92604480820193602093909283900390910190829087803b15801561089c57600080fd5b505af11580156108b0573d6000803e3d6000fd5b505050506040513d60208110156108c657600080fd5b5050604080518581529051600160a060020a038088169233909116917f37318f3da062fafdc667698bc59756420e04b5a02ed980579aa3c2443d6664599181900360200190a35050505050565b6000635ac17280421015801561092d5750635adfc4ff4211155b905090565b60025481565b73820502e8c80352f6e11ce036df03ceeebe00264281565b60055433600160a060020a0390811691161461096b57600080fd5b600160a060020a03166000908152600760205260409020805460ff19169055565b600160a060020a03166000908152600b602052604090205490565b6000686c6b935b8bbd4000006109ca6004546003546113a890919063ffffffff16565b1015905090565b635adfc4ff81565b600554600160a060020a031681565b60055433600160a060020a03908116911614610a0357600080fd5b600160a060020a03166000908152600760205260409020805460ff19166001179055565b60045481565b600a81565b60015481565b6000610a42610f6d565b1515610a4d57600080fd5b610a556109a7565b1580610aea5750635b7a047f42118015610aea57506000809054906101000a9004600160a060020a0316600160a060020a031663961325216040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610abc57600080fd5b505af1158015610ad0573d6000803e3d6000fd5b505050506040513d6020811015610ae657600080fd5b5051155b1515610af557600080fd5b50600160a060020a0333166000908152600b6020526040812054908111610b1b57600080fd5b600160a060020a0333166000818152600b60205260408082208290555183156108fc0291849190818181858888f19350505050158015610685573d6000803e3d6000fd5b60085460ff1681565b602881565b60035481565b6130d481565b635ae65c8081565b73ebbeaa0699837de527b29a03ecc914159d939eea81565b600a6020526000908152604090205481565b600654600160a060020a031681565b686c6b935b8bbd40000081565b600060025460015410158061092d575069099af874786b86c000006109ca6004546003546113a890919063ffffffff16565b600081565b60076020526000908152604090205460ff1681565b60065460009033600160a060020a03908116911614610c3157600080fd5b610c39610f6d565b1515610c4457600080fd5b610c4c6109a7565b1515610c5757600080fd5b60008054604080517f5f412d4f0000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921692635f412d4f9260048084019382900301818387803b158015610cb157600080fd5b505af1158015610cc5573d6000803e3d6000fd5b505060008054604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03308116600483015291519190921694506342966c68935084926370a0823192602480820193602093909283900390910190829087803b158015610d3c57600080fd5b505af1158015610d50573d6000803e3d6000fd5b505050506040513d6020811015610d6657600080fd5b50516040805160e060020a63ffffffff8516028152600481019290925251602480830192600092919082900301818387803b158015610da457600080fd5b505af1158015610db8573d6000803e3d6000fd5b505060008054604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152915191909216945063f2fde38b93506024808301939282900301818387803b158015610e2057600080fd5b505af1158015610e34573d6000803e3d6000fd5b505050600160a060020a0330163191507384137cb59076a61f3f94b2c39da8fbcb63b6f09690506108fc610e7460646107ae85602863ffffffff61135b16565b6040518115909202916000818181858888f19350505050158015610e9c573d6000803e3d6000fd5b5073ebbeaa0699837de527b29a03ecc914159d939eea6108fc610ecb60646107ae85603263ffffffff61135b16565b6040518115909202916000818181858888f19350505050158015610ef3573d6000803e3d6000fd5b5060405173820502e8c80352f6e11ce036df03ceeebe0026429030600160a060020a03163180156108fc02916000818181858888f19350505050158015610685573d6000803e3d6000fd5b601481565b635b52777f81565b7384137cb59076a61f3f94b2c39da8fbcb63b6f09681565b603281565b605081565b6000635b52777f42118061092d575050600254600154101590565b69099af874786b86c0000081565b600054600160a060020a031681565b600b6020526000908152604090205481565b600080635ac172804210158015610fd25750635adfc4ff4211155b80610ff05750635ae65c804210158015610ff05750635b52777f4211155b90508080156110045750611002610bc7565b155b91505090565b6000808080809350600060085460ff16600381111561102557fe5b1461102f57600080fd5b6000848152600960205260408120541161104857600080fd5b6000848152600a602052604090205461107690670de0b6b3a7640000906107ae90899063ffffffff61135b16565b600085815260096020526040902054909350831161109e576110998584886113c9565b61113c565b600084815260096020908152604080832054600a909252909120549093506110d8906107ae85670de0b6b3a764000063ffffffff61135b16565b91506110ea868363ffffffff6113b716565b90506110f78584846113c9565b6008805460ff19166001179055604051600160a060020a038616906108fc8315029083906000818181858888f1935050505015801561113a573d6000803e3d6000fd5b505b505050505050565b60008080808060085460ff16600381111561115b57fe5b1415611218576008805460ff1916600190811790915560096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b546000919091527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36546111c9916113a8565b60096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365560008080527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b555b60085460ff16600381111561122957fe5b93505b6003841161113c576000848152600a602052604090205461126290670de0b6b3a7640000906107ae90899063ffffffff61135b16565b6000858152600960205260409020549093508311611285576110998584886113c9565b600084815260096020908152604080832054600a909252909120549093506112bf906107ae85670de0b6b3a764000063ffffffff61135b16565b91506112d1868363ffffffff6113b716565b90506112de8584846113c9565b836003141561132357604051600160a060020a0386169082156108fc029083906000818181858888f1935050505015801561131d573d6000803e3d6000fd5b5061113c565b80955083600101600381111561133557fe5b6008805460ff1916600183600381111561134b57fe5b021790555060019093019261122c565b60008083151561136e576000915061138a565b5082820282848281151561137e57fe5b041461138657fe5b8091505b5092915050565b600080828481151561139f57fe5b04949350505050565b60008282018381101561138657fe5b6000828211156113c357fe5b50900390565b60085460009060ff1660038111156113dd57fe5b6001549091506113f3908463ffffffff6113a816565b600155600081815260096020526040902054611415908463ffffffff6113b716565b600082815260096020908152604080832093909355600160a060020a0387168252600b9052205461144c908363ffffffff6113a816565b600160a060020a0385166000908152600b6020526040902055600454611478908363ffffffff6113a816565b600490815560008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0389811695820195909552602481018890529051939091169263a9059cbb92604480840193602093929083900390910190829087803b1580156114f157600080fd5b505af1158015611505573d6000803e3d6000fd5b505050506040513d602081101561151b57600080fd5b505060408051838152602081018590528151600160a060020a038088169333909116927f884e0eeb4000625bd63745131e77fd3a4cc0956dfb2f69c1f07e06e21b0927e4929081900390910190a3505050505600a165627a7a72305820d56f5ddddfa8088d2803dac2b9e0cfa47daee976829d7a583e9dec4f6397dbe90029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003bf319e9fdab14a3178e252749c56df8acf109ed
-----Decoded View---------------
Arg [0] : _service (address): 0x3BF319E9FdAb14A3178e252749c56dF8ACf109eD
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003bf319e9fdab14a3178e252749c56df8acf109ed
Swarm Source
bzzr://5e6e3f27ed86edac2c9308e66f4cc8c5647e3226243fc2c7bb6668daabf98241
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,632.79 | 10.7676 | $28,348.94 |
Loading...
Loading
[ Download: CSV Export ]
[ 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.