Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x35fd00D4...1B068C256 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Crowdsale
Compiler Version
v0.4.20+commit.3155dd80
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-04 */ pragma solidity ^ 0.4.17; library SafeMath { function mul(uint a, uint b) internal pure returns(uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function sub(uint a, uint b) internal pure returns(uint) { assert(b <= a); return a - b; } function add(uint a, uint b) internal pure returns(uint) { uint c = a + b; assert(c >= a && c >= b); return c; } } contract ERC20 { uint public totalSupply; function balanceOf(address who) public view returns(uint); function allowance(address owner, address spender) public view returns(uint); function transfer(address to, uint value) public returns(bool ok); function transferFrom(address from, address to, uint value) public returns(bool ok); function approve(address spender, uint value) public returns(bool ok); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyOwner whenNotPaused { paused = true; Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyOwner whenPaused { paused = false; Unpause(); } } // Whitelist smart contract // This smart contract keeps list of addresses to whitelist contract WhiteList is Ownable { mapping(address => bool) public whiteList; uint public totalWhiteListed; //white listed users number event LogWhiteListed(address indexed user, uint whiteListedNum); event LogWhiteListedMultiple(uint whiteListedNum); event LogRemoveWhiteListed(address indexed user); // @notice it will return status of white listing // @return true if user is white listed and false if is not function isWhiteListed(address _user) external view returns (bool) { return whiteList[_user]; } // @notice it will remove whitelisted user // @param _contributor {address} of user to unwhitelist function removeFromWhiteList(address _user) external onlyOwner() returns (bool) { require(whiteList[_user] == true); whiteList[_user] = false; totalWhiteListed--; LogRemoveWhiteListed(_user); return true; } // @notice it will white list one member // @param _user {address} of user to whitelist // @return true if successful function addToWhiteList(address _user) external onlyOwner() returns (bool) { if (whiteList[_user] != true) { whiteList[_user] = true; totalWhiteListed++; LogWhiteListed(_user, totalWhiteListed); } return true; } // @notice it will white list multiple members // @param _user {address[]} of users to whitelist // @return true if successful function addToWhiteListMultiple(address[] _users) external onlyOwner() returns (bool) { for (uint i = 0; i < _users.length; ++i) { if (whiteList[_users[i]] != true) { whiteList[_users[i]] = true; totalWhiteListed++; } } LogWhiteListedMultiple(totalWhiteListed); return true; } } // @note this contract can be inherited by Crowdsale and TeamAllocation contracts and // control release of tokens through even time release based on the inputted duration time interval contract TokenVesting is Ownable { using SafeMath for uint; struct TokenHolder { uint weiReceived; // amount of ETH contributed uint tokensToSend; // amount of tokens sent bool refunded; // true if user has been refunded uint releasedAmount; // amount released through vesting schedule bool revoked; // true if right to continue vesting is revoked } event Released(uint256 amount, uint256 tokenDecimals); event ContractUpdated(bool done); uint256 public cliff; // time in when vesting should begin uint256 public startCountDown; // time when countdown starts uint256 public duration; // duration of period in which vesting takes place Token public token; // token contract containing tokens mapping(address => TokenHolder) public tokenHolders; //tokenHolder list WhiteList public whiteList; // whitelist contract uint256 public presaleBonus; // @note constructor /** function TokenVesting(uint256 _start, uint256 _cliff, uint256 _duration) public { require(_cliff <= _duration); duration = _duration; cliff = _start.add(_cliff); startCountDown = _start; ContractUpdated(true); } */ // @notice Specify address of token contract // @param _tokenAddress {address} address of token contract // @return res {bool} function initilizeVestingAndTokenAndWhiteList(Token _tokenAddress, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _presaleBonus, WhiteList _whiteList) external onlyOwner() returns(bool res) { require(_cliff <= _duration); require(_tokenAddress != address(0)); duration = _duration; cliff = _start.add(_cliff); startCountDown = _start; token = _tokenAddress; whiteList = _whiteList; presaleBonus = _presaleBonus; ContractUpdated(true); return true; } // @notice Specify address of token contract // @param _tokenAddress {address} address of token contract // @return res {bool} function initilizeVestingAndToken(Token _tokenAddress, uint256 _start, uint256 _cliff, uint256 _duration, uint256 _presaleBonus ) external onlyOwner() returns(bool res) { require(_cliff <= _duration); require(_tokenAddress != address(0)); duration = _duration; cliff = _start.add(_cliff); startCountDown = _start; token = _tokenAddress; presaleBonus = _presaleBonus; ContractUpdated(true); return true; } function returnVestingSchedule() external view returns (uint, uint, uint) { return (duration, cliff, startCountDown); } // @note owner can revoke access to continue vesting of tokens // @param _user {address} of user to revoke their right to vesting function revoke(address _user) public onlyOwner() { TokenHolder storage tokenHolder = tokenHolders[_user]; tokenHolder.revoked = true; } function vestedAmountAvailable() public view returns (uint amount, uint decimals) { TokenHolder storage tokenHolder = tokenHolders[msg.sender]; uint tokensToRelease = vestedAmount(tokenHolder.tokensToSend); // if (tokenHolder.releasedAmount + tokensToRelease > tokenHolder.tokensToSend) // return (tokenHolder.tokensToSend - tokenHolder.releasedAmount, token.decimals()); // else return (tokensToRelease - tokenHolder.releasedAmount, token.decimals()); } // @notice Transfers vested available tokens to beneficiary function release() public { TokenHolder storage tokenHolder = tokenHolders[msg.sender]; // check if right to vesting is not revoked require(!tokenHolder.revoked); uint tokensToRelease = vestedAmount(tokenHolder.tokensToSend); uint currentTokenToRelease = tokensToRelease - tokenHolder.releasedAmount; tokenHolder.releasedAmount += currentTokenToRelease; token.transfer(msg.sender, currentTokenToRelease); Released(currentTokenToRelease, token.decimals()); } // @notice this function will determine vested amount // @param _totalBalance {uint} total balance of tokens assigned to this user // @return {uint} amount of tokens available to transfer function vestedAmount(uint _totalBalance) public view returns (uint) { if (now < cliff) { return 0; } else if (now >= startCountDown.add(duration)) { return _totalBalance; } else { return _totalBalance.mul(now.sub(startCountDown)) / duration; } } } // Crowdsale Smart Contract // This smart contract collects ETH and in return sends tokens to the Backers contract Crowdsale is Pausable, TokenVesting { using SafeMath for uint; address public multisigETH; // Multisig contract that will receive the ETH address public commissionAddress; // address to deposit commissions uint public tokensForTeam; // tokens for the team uint public ethReceivedPresale; // Number of ETH received in presale uint public ethReceivedMain; // Number of ETH received in main sale uint public totalTokensSent; // Number of tokens sent to ETH contributors uint public tokensSentMain; uint public tokensSentPresale; uint public tokensSentDev; uint public startBlock; // Crowdsale start block uint public endBlock; // Crowdsale end block uint public maxCap; // Maximum number of token to sell uint public minCap; // Minimum number of ETH to raise uint public minContributionMainSale; // Minimum amount to contribute in main sale uint public minContributionPresale; // Minimum amount to contribut in presale uint public maxContribution; bool public crowdsaleClosed; // Is crowdsale still on going uint public tokenPriceWei; uint public refundCount; uint public totalRefunded; uint public campaignDurationDays; // campaign duration in days uint public firstPeriod; uint public secondPeriod; uint public thirdPeriod; uint public firstBonus; uint public secondBonus; uint public thirdBonus; uint public multiplier; uint public status; Step public currentStep; // To allow for controlled steps of the campaign // Looping through Backer //mapping(address => Backer) public backers; //backer list address[] public holdersIndex; // to be able to itarate through backers when distributing the tokens address[] public devIndex; // to be able to itarate through backers when distributing the tokens // @notice to set and determine steps of crowdsale enum Step { FundingPreSale, // presale mode FundingMainSale, // public mode Refunding // in case campaign failed during this step contributors will be able to receive refunds } // @notice to verify if action is not performed out of the campaing range modifier respectTimeFrame() { if ((block.number < startBlock) || (block.number > endBlock)) revert(); _; } modifier minCapNotReached() { if (totalTokensSent >= minCap) revert(); _; } // Events event LogReceivedETH(address indexed backer, uint amount, uint tokenAmount); event LogStarted(uint startBlockLog, uint endBlockLog); event LogFinalized(bool success); event LogRefundETH(address indexed backer, uint amount); event LogStepAdvanced(); event LogDevTokensAllocated(address indexed dev, uint amount); event LogNonVestedTokensSent(address indexed user, uint amount); // Crowdsale {constructor} // @notice fired when contract is crated. Initilizes all constnat variables. function Crowdsale(uint _decimalPoints, address _multisigETH, uint _toekensForTeam, uint _minContributionPresale, uint _minContributionMainSale, uint _maxContribution, uint _maxCap, uint _minCap, uint _tokenPriceWei, uint _campaignDurationDays, uint _firstPeriod, uint _secondPeriod, uint _thirdPeriod, uint _firstBonus, uint _secondBonus, uint _thirdBonus) public { multiplier = 10**_decimalPoints; multisigETH = _multisigETH; tokensForTeam = _toekensForTeam * multiplier; minContributionPresale = _minContributionPresale; minContributionMainSale = _minContributionMainSale; maxContribution = _maxContribution; maxCap = _maxCap * multiplier; minCap = _minCap * multiplier; tokenPriceWei = _tokenPriceWei; campaignDurationDays = _campaignDurationDays; firstPeriod = _firstPeriod; secondPeriod = _secondPeriod; thirdPeriod = _thirdPeriod; firstBonus = _firstBonus; secondBonus = _secondBonus; thirdBonus = _thirdBonus; //TODO replace this address below with correct address. commissionAddress = 0x326B5E9b8B2ebf415F9e91b42c7911279d296ea1; //commissionAddress = 0x853A3F142430658A32f75A0dc891b98BF4bDF5c1; currentStep = Step.FundingPreSale; } // @notice to populate website with status of the sale function returnWebsiteData() external view returns(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, bool, bool, uint, Step) { return (startBlock, endBlock, numberOfBackers(), ethReceivedPresale + ethReceivedMain, maxCap, minCap, totalTokensSent, tokenPriceWei, minContributionPresale, minContributionMainSale, paused, crowdsaleClosed, token.decimals(), currentStep); } // @notice this function will determine status of crowdsale function determineStatus() external view returns (uint) { if (crowdsaleClosed) // ICO finihsed return 1; if (block.number < endBlock && totalTokensSent < maxCap - 100) // ICO in progress return 2; if (totalTokensSent < minCap && block.number > endBlock) // ICO failed return 3; if (endBlock == 0) // ICO hasn't been started yet return 4; return 0; } // {fallback function} // @notice It will call internal function which handels allocation of Ether and calculates tokens. function () public payable { contribute(msg.sender); } // @notice to allow for contribution from interface function contributePublic() external payable { contribute(msg.sender); } // @notice set the step of the campaign from presale to public sale // contract is deployed in presale mode // WARNING: there is no way to go back function advanceStep() external onlyOwner() { currentStep = Step.FundingMainSale; LogStepAdvanced(); } // @notice It will be called by owner to start the sale function start() external onlyOwner() { startBlock = block.number; endBlock = startBlock + (4*60*24*campaignDurationDays); // assumption is that one block takes 15 sec. crowdsaleClosed = false; LogStarted(startBlock, endBlock); } // @notice This function will finalize the sale. // It will only execute if predetermined sale time passed or all tokens are sold. function finalize() external onlyOwner() { require(!crowdsaleClosed); require(block.number >= endBlock || totalTokensSent > maxCap - 1000); // - 1000 is used to allow closing of the campaing when contribution is near // finished as exact amount of maxCap might be not feasible e.g. you can't easily buy few tokens. // when min contribution is 0.1 Eth. require(totalTokensSent >= minCap); crowdsaleClosed = true; // transfer commission portion to the platform commissionAddress.transfer(determineCommissions()); // transfer remaning funds to the campaign wallet multisigETH.transfer(this.balance); /*if (!token.transfer(owner, token.balanceOf(this))) revert(); // transfer tokens to admin account if (!token.burn(this, token.balanceOf(this))) revert(); // burn all the tokens remaining in the contract */ token.unlock(); // release lock from transfering tokens. LogFinalized(true); } // @notice it will allow contributors to get refund in case campaign failed // @return {bool} true if successful function refund() external whenNotPaused returns (bool) { uint totalEtherReceived = ethReceivedPresale + ethReceivedMain; require(totalEtherReceived < minCap); // ensure that campaign failed require(this.balance > 0); // contract will hold 0 ether at the end of campaign. // contract needs to be funded through fundContract() TokenHolder storage backer = tokenHolders[msg.sender]; require(backer.weiReceived > 0); // ensure that user has sent contribution require(!backer.refunded); // ensure that user hasn't been refunded yet backer.refunded = true; // save refund status to true refundCount++; totalRefunded += backer.weiReceived; if (!token.burn(msg.sender, backer.tokensToSend)) // burn tokens revert(); msg.sender.transfer(backer.weiReceived); // send back the contribution LogRefundETH(msg.sender, backer.weiReceived); return true; } // @notice allocate tokens to dev/team/advisors // @param _dev {address} // @param _amount {uint} amount of tokens function devAllocation(address _dev, uint _amount) external onlyOwner() returns (bool) { require(_dev != address(0)); require(crowdsaleClosed); require(totalTokensSent.add(_amount) <= token.totalSupply()); devIndex.push(_dev); TokenHolder storage tokenHolder = tokenHolders[_dev]; tokenHolder.tokensToSend = _amount; tokensSentDev += _amount; totalTokensSent += _amount; LogDevTokensAllocated(_dev, _amount); // Register event return true; } // @notice Failsafe drain function drain(uint _amount) external onlyOwner() { owner.transfer(_amount); } // @notice transfer tokens which are not subject to vesting // @param _recipient {addres} // @param _amont {uint} amount to transfer function transferTokens(address _recipient, uint _amount) external onlyOwner() returns (bool) { require(_recipient != address(0)); if (!token.transfer(_recipient, _amount)) revert(); LogNonVestedTokensSent(_recipient, _amount); } // @notice determine amount of commissions for the platform function determineCommissions() public view returns (uint) { if (this.balance <= 500 ether) { return (this.balance * 10)/100; }else if (this.balance <= 1000 ether) { return (this.balance * 8)/100; }else if (this.balance < 10000 ether) { return (this.balance * 6)/100; }else { return (this.balance * 6)/100; } } // @notice return number of contributors // @return {uint} number of contributors function numberOfBackers() public view returns (uint) { return holdersIndex.length; } // @notice It will be called by fallback function whenever ether is sent to it // @param _backer {address} address of beneficiary // @return res {bool} true if transaction was successful function contribute(address _backer) internal whenNotPaused respectTimeFrame returns(bool res) { //require(msg.value <= maxContribution); if (whiteList != address(0)) // if whitelist initialized verify member whitelist status require(whiteList.isWhiteListed(_backer)); // ensure that user is whitelisted uint tokensToSend = calculateNoOfTokensToSend(); // calculate number of tokens // Ensure that max cap hasn't been reached require(totalTokensSent + tokensToSend <= maxCap); TokenHolder storage backer = tokenHolders[_backer]; if (backer.weiReceived == 0) holdersIndex.push(_backer); if (Step.FundingMainSale == currentStep) { // Update the total Ether received and tokens sent during public sale require(msg.value >= minContributionMainSale); // stop when required minimum is not met ethReceivedMain = ethReceivedMain.add(msg.value); tokensSentMain += tokensToSend; }else { require(msg.value >= minContributionPresale); // stop when required minimum is not met ethReceivedPresale = ethReceivedPresale.add(msg.value); tokensSentPresale += tokensToSend; } backer.tokensToSend += tokensToSend; backer.weiReceived = backer.weiReceived.add(msg.value); totalTokensSent += tokensToSend; // tokens are not transferrd to contributors during this phase // tokens will be transferred based on the vesting schedule, when contributor // calls release() function of this contract LogReceivedETH(_backer, msg.value, tokensToSend); // Register event return true; } // @notice This function will return number of tokens based on time intervals in the campaign function calculateNoOfTokensToSend() internal view returns (uint) { uint tokenAmount = msg.value.mul(multiplier) / tokenPriceWei; if (Step.FundingMainSale == currentStep) { if (block.number <= startBlock + firstPeriod) { return tokenAmount + tokenAmount.mul(firstBonus) / 100; }else if (block.number <= startBlock + secondPeriod) { return tokenAmount + tokenAmount.mul(secondBonus) / 100; }else if (block.number <= startBlock + thirdPeriod) { return tokenAmount + tokenAmount.mul(thirdBonus) / 100; }else { return tokenAmount; } }else return tokenAmount + tokenAmount.mul(presaleBonus) / 100; } } // The token contract Token is ERC20, Ownable { using SafeMath for uint; // Public variables of the token string public name; string public symbol; uint public decimals; // How many decimals to show. string public version = "v0.1"; uint public totalSupply; bool public locked; address public crowdSaleAddress; mapping(address => uint) public balances; mapping(address => mapping(address => uint)) public allowed; // Lock transfer during the ICO modifier onlyUnlocked() { if (msg.sender != crowdSaleAddress && locked && msg.sender != owner) revert(); _; } modifier onlyAuthorized() { if (msg.sender != crowdSaleAddress && msg.sender != owner) revert(); _; } // The Token constructor function Token(uint _initialSupply, string _tokenName, uint _decimalUnits, string _tokenSymbol, string _version, address _crowdSaleAddress) public { locked = true; // Lock the transfer of tokens during the crowdsale totalSupply = _initialSupply * (10**_decimalUnits); name = _tokenName; // Set the name for display purposes symbol = _tokenSymbol; // Set the symbol for display purposes decimals = _decimalUnits; // Amount of decimals for display purposes version = _version; crowdSaleAddress = _crowdSaleAddress; balances[crowdSaleAddress] = totalSupply; } function unlock() public onlyAuthorized { locked = false; } function lock() public onlyAuthorized { locked = true; } function burn(address _member, uint256 _value) public onlyAuthorized returns(bool) { require(balances[_member] >= _value); balances[_member] -= _value; totalSupply -= _value; Transfer(_member, 0x0, _value); return true; } // @notice transfer tokens to given address // @param _to {address} address or recipient // @param _value {uint} amount to transfer // @return {bool} true if successful function transfer(address _to, uint _value) public onlyUnlocked returns(bool) { require(_to != address(0)); require(balances[msg.sender] >= _value); balances[msg.sender] -= _value; balances[_to] += _value; Transfer(msg.sender, _to, _value); return true; } // @notice transfer tokens from given address to another address // @param _from {address} from whom tokens are transferred // @param _to {address} to whom tokens are transferred // @param _value {uint} amount of tokens to transfer // @return {bool} true if successful function transferFrom(address _from, address _to, uint256 _value) public onlyUnlocked returns(bool success) { require(_to != address(0)); require(balances[_from] >= _value); // Check if the sender has enough require(_value <= allowed[_from][msg.sender]); // Check if allowed is greater or equal balances[_from] -= _value; // Subtract from the sender balances[_to] += _value; // Add the same to the recipient allowed[_from][msg.sender] -= _value; // adjust allowed Transfer(_from, _to, _value); return true; } // @notice to query balance of account // @return _owner {address} address of user to query balance function balanceOf(address _owner) public view returns(uint balance) { return balances[_owner]; } /** * @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, uint _value) public returns(bool) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } // @notice to query of allowance of one user to the other // @param _owner {address} of the owner of the account // @param _spender {address} of the spender of the account // @return remaining {uint} amount of remaining allowance function allowance(address _owner, address _spender) public view returns(uint remaining) { return allowed[_owner][_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 */ function increaseApproval (address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) { 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 Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"tokenPriceWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refundCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numberOfBackers","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"firstBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnWebsiteData","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cliff","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"campaignDurationDays","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_totalBalance","type":"uint256"}],"name":"vestedAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startCountDown","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"returnVestingSchedule","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"determineStatus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"holdersIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"determineCommissions","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"whiteList","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestedAmountAvailable","outputs":[{"name":"amount","type":"uint256"},{"name":"decimals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"contributePublic","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"advanceStep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"currentStep","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionMainSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"secondBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenHolders","outputs":[{"name":"weiReceived","type":"uint256"},{"name":"tokensToSend","type":"uint256"},{"name":"refunded","type":"bool"},{"name":"releasedAmount","type":"uint256"},{"name":"revoked","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"multisigETH","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentDev","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxContribution","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":"ethReceivedMain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"commissionAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_presaleBonus","type":"uint256"},{"name":"_whiteList","type":"address"}],"name":"initilizeVestingAndTokenAndWhiteList","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presaleBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"thirdPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_start","type":"uint256"},{"name":"_cliff","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_presaleBonus","type":"uint256"}],"name":"initilizeVestingAndToken","outputs":[{"name":"res","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ethReceivedPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalTokensSent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"firstPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleClosed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_dev","type":"address"},{"name":"_amount","type":"uint256"}],"name":"devAllocation","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionPresale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"secondPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensSentMain","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"devIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"drain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensForTeam","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_decimalPoints","type":"uint256"},{"name":"_multisigETH","type":"address"},{"name":"_toekensForTeam","type":"uint256"},{"name":"_minContributionPresale","type":"uint256"},{"name":"_minContributionMainSale","type":"uint256"},{"name":"_maxContribution","type":"uint256"},{"name":"_maxCap","type":"uint256"},{"name":"_minCap","type":"uint256"},{"name":"_tokenPriceWei","type":"uint256"},{"name":"_campaignDurationDays","type":"uint256"},{"name":"_firstPeriod","type":"uint256"},{"name":"_secondPeriod","type":"uint256"},{"name":"_thirdPeriod","type":"uint256"},{"name":"_firstBonus","type":"uint256"},{"name":"_secondBonus","type":"uint256"},{"name":"_thirdBonus","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"}],"name":"LogReceivedETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startBlockLog","type":"uint256"},{"indexed":false,"name":"endBlockLog","type":"uint256"}],"name":"LogStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"success","type":"bool"}],"name":"LogFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"backer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogRefundETH","type":"event"},{"anonymous":false,"inputs":[],"name":"LogStepAdvanced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dev","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDevTokensAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogNonVestedTokensSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"tokenDecimals","type":"uint256"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"done","type":"bool"}],"name":"ContractUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Deployed Bytecode
0x6060604052600436106102d15763ffffffff60e060020a60003504166305d0f15b81146102dd578063083c6323146103025780630bda4dbf146103155780630dbd5270146103285780630fb5a6b41461033b578063127e499c1461034e57806313b5d4201461036157806313d033c0146103fb57806319711d671461040e5780631b3ed722146104215780631bfce85314610434578063200d2ed21461044a57806321d7bdff1461045d57806323548b8b1461047057806325d104d4146104835780632975659d146104ba5780632a14a9da146104cd5780632b0e64b3146104ff5780633544a8641461051257806335593bcf1461052557806336335e19146105505780633cac38e41461055a5780633f4ba83a1461056d5780633fa615b01461058057806348cd4cb1146105935780634bb278f3146105a6578063590e1ae3146105b95780635bc34f71146105e05780635c975abb146106175780635eec743b1461062a57806361bb246c1461063d578063638b5e531461065057806374a8f103146106a6578063823914d9146106c55780638456cb59146106d857806386d1a69f146106eb578063878a18ef146106fe5780638d3d6576146107115780638da5cb5b146107245780639263b55914610737578063931742d31461074a57806393928c911461075d578063965e08e81461077057806399cb0823146107a55780639e439ff8146107b8578063a20d426c146107cb578063a5cf56f2146107f6578063ac1559d214610809578063b630aa481461081c578063be9a65551461082f578063bec3fa1714610842578063c4e3a63b14610864578063ccb07cef14610877578063d4fbe1e01461088a578063d9082962146108ac578063e44a94d3146108bf578063e4818e4b146108d2578063ed810d02146108e5578063ee73cf66146108f8578063f2fde38b1461090e578063f6b19c741461092d578063fc0c546a14610943578063fde83a3414610956575b6102da33610969565b50005b34156102e857600080fd5b6102f0610ba2565b60405190815260200160405180910390f35b341561030d57600080fd5b6102f0610ba8565b341561032057600080fd5b6102f0610bae565b341561033357600080fd5b6102f0610bb4565b341561034657600080fd5b6102f0610bbb565b341561035957600080fd5b6102f0610bc1565b341561036c57600080fd5b610374610bc7565b604051808f81526020018e81526020018d81526020018c81526020018b81526020018a815260200189815260200188815260200187815260200186815260200185151515158152602001841515151581526020018381526020018260028111156103da57fe5b60ff1681526020019e50505050505050505050505050505060405180910390f35b341561040657600080fd5b6102f0610cd5565b341561041957600080fd5b6102f0610cdb565b341561042c57600080fd5b6102f0610ce1565b341561043f57600080fd5b6102f0600435610ce7565b341561045557600080fd5b6102f0610d57565b341561046857600080fd5b6102f0610d5d565b341561047b57600080fd5b6102f0610d63565b341561048e57600080fd5b610496610d69565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156104c557600080fd5b6102f0610d77565b34156104d857600080fd5b6104e3600435610de9565b604051600160a060020a03909116815260200160405180910390f35b341561050a57600080fd5b6102f0610e11565b341561051d57600080fd5b6104e3610ebb565b341561053057600080fd5b610538610eca565b60405191825260208201526040908101905180910390f35b610558610f6d565b005b341561056557600080fd5b610558610f79565b341561057857600080fd5b610558610fcf565b341561058b57600080fd5b6102f061104e565b341561059e57600080fd5b6102f0611054565b34156105b157600080fd5b61055861105a565b34156105c457600080fd5b6105cc6111c6565b604051901515815260200160405180910390f35b34156105eb57600080fd5b6105f361137b565b6040518082600281111561060357fe5b60ff16815260200191505060405180910390f35b341561062257600080fd5b6105cc611384565b341561063557600080fd5b6102f0611394565b341561064857600080fd5b6102f061139a565b341561065b57600080fd5b61066f600160a060020a03600435166113a0565b60405194855260208501939093529015156040808501919091526060840191909152901515608083015260a0909101905180910390f35b34156106b157600080fd5b610558600160a060020a03600435166113d4565b34156106d057600080fd5b6104e3611418565b34156106e357600080fd5b610558611427565b34156106f657600080fd5b6105586114ab565b341561070957600080fd5b6102f0611618565b341561071c57600080fd5b6102f061161e565b341561072f57600080fd5b6104e3611624565b341561074257600080fd5b6102f0611633565b341561075557600080fd5b6104e3611639565b341561076857600080fd5b6102f0611648565b341561077b57600080fd5b6105cc600160a060020a036004358116906024359060443590606435906084359060a4351661164e565b34156107b057600080fd5b6102f061172f565b34156107c357600080fd5b6102f0611735565b34156107d657600080fd5b6105cc600160a060020a036004351660243560443560643560843561173b565b341561080157600080fd5b6102f0611806565b341561081457600080fd5b6102f061180c565b341561082757600080fd5b6102f0611812565b341561083a57600080fd5b610558611818565b341561084d57600080fd5b6105cc600160a060020a036004351660243561188d565b341561086f57600080fd5b6102f0611986565b341561088257600080fd5b6105cc61198c565b341561089557600080fd5b6105cc600160a060020a0360043516602435611995565b34156108b757600080fd5b6102f0611b0a565b34156108ca57600080fd5b6102f0611b10565b34156108dd57600080fd5b6102f0611b16565b34156108f057600080fd5b6102f0611b1c565b341561090357600080fd5b6104e3600435611b22565b341561091957600080fd5b610558600160a060020a0360043516611b30565b341561093857600080fd5b610558600435611bcb565b341561094e57600080fd5b6104e3611c19565b341561096157600080fd5b6102f0611c28565b600080548190819060a060020a900460ff161561098557600080fd5b601154431080610996575060125443115b156109a057600080fd5b600654600160a060020a031615610a3057600654600160a060020a0316636f9170f68560006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0a57600080fd5b6102c65a03f11515610a1b57600080fd5b505050604051805190501515610a3057600080fd5b610a38611c2e565b915060135482600d540111151515610a4f57600080fd5b50600160a060020a038316600090815260056020526040902080541515610ab5576026805460018101610a828382611d69565b506000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790555b60255460ff166002811115610ac657fe5b60011415610b0057601554341015610add57600080fd5b600c54610af0903463ffffffff611d1216565b600c55600e805483019055610b2e565b601654341015610b0f57600080fd5b600b54610b22903463ffffffff611d1216565b600b55600f8054830190555b600181018054830190558054610b4a903463ffffffff611d1216565b8155600d805483019055600160a060020a0384167fe3539dcc17b38d337133cfce1f00f1e94765090378d48a1d73171a93e6a1ff78348460405191825260208201526040908101905180910390a25060019392505050565b60195481565b60125481565b601a5481565b6026545b90565b60035481565b60205481565b600080600080600080600080600080600080600080601154601254610bea610bb4565b600c54600b5401601354601454600d54601954601654601554600060149054906101000a900460ff16601860009054906101000a900460ff16600460009054906101000a9004600160a060020a0316600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610c7e57600080fd5b6102c65a03f11515610c8f57600080fd5b50505060405180519050602560009054906101000a900460ff169d509d509d509d509d509d509d509d509d509d509d509d509d509d50909192939495969798999a9b9c9d565b60015481565b601c5481565b60235481565b6000600154421015610cfb57506000610d52565b600354600254610d109163ffffffff611d1216565b4210610d1d575080610d52565b600354610d45610d3860025442611d3690919063ffffffff16565b849063ffffffff611d4816565b811515610d4e57fe5b0490505b919050565b60245481565b60025481565b60135481565b600354600154600254909192565b60185460009060ff1615610d8d57506001610bb8565b60125443108015610da45750606460135403600d54105b15610db157506002610bb8565b601454600d54108015610dc5575060125443115b15610dd257506003610bb8565b6012541515610de357506004610bb8565b50600090565b6026805482908110610df757fe5b600091825260209091200154600160a060020a0316905081565b6000681b1ae4d6e2ef500000600160a060020a0330163111610e46576064600a600160a060020a03301631025b049050610bb8565b683635c9adc5dea00000600160a060020a0330163111610e755760646008600160a060020a0330163102610e3e565b69021e19e0c9bab240000030600160a060020a0316311015610ea65760646006600160a060020a0330163102610e3e565b60646006600160a060020a0330163102610e3e565b600654600160a060020a031681565b600160a060020a033316600090815260056020526040812060018101548291908290610ef590610ce7565b6003830154600454919250820390600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f4857600080fd5b6102c65a03f11515610f5957600080fd5b505050604051805190509350935050509091565b610f7633610969565b50565b60005433600160a060020a03908116911614610f9457600080fd5b6025805460ff191660011790557f592c878e6add7d4d1ceb88871d699a1f9655424e4cd45f0ca7ad9f98526f286860405160405180910390a1565b60005433600160a060020a03908116911614610fea57600080fd5b60005460a060020a900460ff16151561100257600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60145481565b60115481565b60005433600160a060020a0390811691161461107557600080fd5b60185460ff161561108557600080fd5b6012544310158061109d57506103e860135403600d54115b15156110a857600080fd5b601454600d5410156110b957600080fd5b6018805460ff19166001179055600954600160a060020a03166108fc6110dd610e11565b9081150290604051600060405180830381858888f19350505050151561110257600080fd5b600854600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561113b57600080fd5b600454600160a060020a031663a69df4b56040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561117a57600080fd5b6102c65a03f1151561118b57600080fd5b5050507fe2b612f94c4cb9a16dd0d29db7c97a0e08091b23de2a812f782c2d8b760537706001604051901515815260200160405180910390a1565b600080548190819060a060020a900460ff16156111e257600080fd5b600c54600b546014549101925082106111fa57600080fd5b6000600160a060020a033016311161121157600080fd5b50600160a060020a033316600090815260056020526040812080549091901161123957600080fd5b600281015460ff161561124b57600080fd5b60028101805460ff19166001908117909155601a8054820190558154601b8054909101905560045490820154600160a060020a0390911690639dc29fac90339060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112d757600080fd5b6102c65a03f115156112e857600080fd5b5050506040518051905015156112fd57600080fd5b8054600160a060020a0333169080156108fc0290604051600060405180830381858888f19350505050151561133157600080fd5b33600160a060020a03167f991678bf7f45816a1ff5cf860f3dabd3e26c34d959aa479904bf9caec17af1c5826000015460405190815260200160405180910390a260019250505090565b60255460ff1681565b60005460a060020a900460ff1681565b60155481565b60215481565b600560205260009081526040902080546001820154600283015460038401546004909401549293919260ff91821692911685565b6000805433600160a060020a039081169116146113f057600080fd5b50600160a060020a03166000908152600560205260409020600401805460ff19166001179055565b600854600160a060020a031681565b60005433600160a060020a0390811691161461144257600080fd5b60005460a060020a900460ff161561145957600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600160a060020a03331660009081526005602052604081206004810154909190819060ff16156114da57600080fd5b6114e78360010154610ce7565b6003840180548083039081019091556004549193509150600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561155a57600080fd5b6102c65a03f1151561156b57600080fd5b505050604051805150506004547fd5840651550c173a8bf246eede440a59253bc61eadb2e8887168faad2fad631d908290600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156115e157600080fd5b6102c65a03f115156115f257600080fd5b5050506040518051905060405191825260208201526040908101905180910390a1505050565b60105481565b60175481565b600054600160a060020a031681565b600c5481565b600954600160a060020a031681565b60225481565b6000805433600160a060020a0390811691161461166a57600080fd5b8385111561167757600080fd5b600160a060020a038716151561168c57600080fd5b60038490556116a1868663ffffffff611d1216565b6001908155600287905560048054600160a060020a03808b1673ffffffffffffffffffffffffffffffffffffffff1992831617909255600680549286169290911691909117905560078490557f197d0e3bb2b41721838884620cf57f1ed98cc18d2f03a8f182b616bea64af84e90604051901515815260200160405180910390a15060019695505050505050565b60075481565b601f5481565b6000805433600160a060020a0390811691161461175757600080fd5b8284111561176457600080fd5b600160a060020a038616151561177957600080fd5b600383905561178e858563ffffffff611d1216565b600190815560028690556004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03891617905560078390557f197d0e3bb2b41721838884620cf57f1ed98cc18d2f03a8f182b616bea64af84e90604051901515815260200160405180910390a150600195945050505050565b600b5481565b600d5481565b600f5481565b60005433600160a060020a0390811691161461183357600080fd5b436011819055601c5461168002810160128190556018805460ff191690557fa88abb2da4d124e645a64f427adf44fa8111af1831a3f5437591925a2cf7a4e7919060405191825260208201526040908101905180910390a1565b6000805433600160a060020a039081169116146118a957600080fd5b600160a060020a03831615156118be57600080fd5b600454600160a060020a031663a9059cbb848460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561191d57600080fd5b6102c65a03f1151561192e57600080fd5b50505060405180519050151561194357600080fd5b82600160a060020a03167fc0e43987907a4f82c4722f79a2e833ae2fc53dca0daa8b8141726b810591126e8360405190815260200160405180910390a292915050565b601d5481565b60185460ff1681565b60008054819033600160a060020a039081169116146119b357600080fd5b600160a060020a03841615156119c857600080fd5b60185460ff1615156119d957600080fd5b600454600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2157600080fd5b6102c65a03f11515611a3257600080fd5b5050506040518051600d54909150611a50908563ffffffff611d1216565b1115611a5b57600080fd5b6027805460018101611a6d8382611d69565b506000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0388169081179091558083526005909152604091829020600181018690556010805487019055600d8054870190559250907f969830dc5773a5b34b166c8a34cd2600c8cb681dab9cc14b1a69b000731fe3aa9085905190815260200160405180910390a25060019392505050565b601b5481565b60165481565b601e5481565b600e5481565b6027805482908110610df757fe5b60005433600160a060020a03908116911614611b4b57600080fd5b600160a060020a0381161515611b6057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614611be657600080fd5b600054600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610f7657600080fd5b600454600160a060020a031681565b600a5481565b600080601954611c4960235434611d4890919063ffffffff16565b811515611c5257fe5b602554919004915060ff166002811115611c6857fe5b60011415611cf757601d54601154014311611ca7576064611c9460205483611d4890919063ffffffff16565b811515611c9d57fe5b0481019150611d0e565b601e54601154014311611ccb576064611c9460215483611d4890919063ffffffff16565b601f54601154014311611cef576064611c9460225483611d4890919063ffffffff16565b809150611d0e565b6064611c9460075483611d4890919063ffffffff16565b5090565b6000828201838110801590611d275750828110155b1515611d2f57fe5b9392505050565b600082821115611d4257fe5b50900390565b6000828202831580611d275750828482811515611d6157fe5b0414611d2f57fe5b815481835581811511611d8d57600083815260209020611d8d918101908301611d92565b505050565b610bb891905b80821115611d0e5760008155600101611d985600a165627a7a7230582069cf72ba79943bcfb648637d08cf076b6c3c1939f4ef4ea8a462b6f755958e920029
Swarm Source
bzzr://69cf72ba79943bcfb648637d08cf076b6c3c1939f4ef4ea8a462b6f755958e92
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.