Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 248 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Refund | 5924151 | 2369 days ago | IN | 0 ETH | 0.00052934 | ||||
Claim Refund | 5636953 | 2419 days ago | IN | 0 ETH | 0.00069207 | ||||
Claim Refund | 5636921 | 2419 days ago | IN | 0 ETH | 0.00182125 | ||||
Claim Refund | 5636812 | 2419 days ago | IN | 0 ETH | 0.00182125 | ||||
Claim Refund | 5636793 | 2419 days ago | IN | 0 ETH | 0.00094705 | ||||
Claim Refund | 5636778 | 2419 days ago | IN | 0 ETH | 0.00094705 | ||||
Claim Refund | 5067111 | 2516 days ago | IN | 0 ETH | 0.00052934 | ||||
Claim Refund | 5065116 | 2516 days ago | IN | 0 ETH | 0.00091062 | ||||
Claim Refund | 5055103 | 2518 days ago | IN | 0 ETH | 0.00052934 | ||||
Claim Refund | 5054959 | 2518 days ago | IN | 0 ETH | 0.00150662 | ||||
Claim Refund | 5054936 | 2518 days ago | IN | 0 ETH | 0.00150662 | ||||
Claim Refund | 5045836 | 2520 days ago | IN | 0 ETH | 0.00100828 | ||||
Claim Refund | 5038563 | 2521 days ago | IN | 0 ETH | 0.00149703 | ||||
Claim Refund | 5035523 | 2521 days ago | IN | 0 ETH | 0.00075621 | ||||
Claim Refund | 5029657 | 2522 days ago | IN | 0 ETH | 0.00149342 | ||||
Claim Refund | 4943368 | 2537 days ago | IN | 0 ETH | 0.00076492 | ||||
Claim Refund | 4895415 | 2545 days ago | IN | 0 ETH | 0.00103348 | ||||
Claim Refund | 4739249 | 2573 days ago | IN | 0 ETH | 0.00078141 | ||||
Claim Refund | 4727279 | 2575 days ago | IN | 0 ETH | 0.001457 | ||||
Claim Refund | 4726432 | 2575 days ago | IN | 0 ETH | 0.001457 | ||||
Claim Refund | 4725407 | 2575 days ago | IN | 0 ETH | 0.001457 | ||||
Claim Refund | 4725013 | 2575 days ago | IN | 0 ETH | 0.00012603 | ||||
Transfer | 4694947 | 2581 days ago | IN | 0.02 ETH | 0.0011388 | ||||
Claim Refund | 4644810 | 2589 days ago | IN | 0.2 ETH | 0.00050485 | ||||
Claim Refund | 4644799 | 2589 days ago | IN | 0.2 ETH | 0.00041705 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
4544512 | 2605 days ago | 3 ETH | ||||
4544488 | 2605 days ago | 750 ETH | ||||
4544420 | 2605 days ago | 3 ETH | ||||
4544341 | 2605 days ago | 0.8 ETH | ||||
4544139 | 2605 days ago | 7 ETH | ||||
4544104 | 2605 days ago | 0.1 ETH | ||||
4541490 | 2606 days ago | 11.89748612 ETH | ||||
4540183 | 2606 days ago | 0.5 ETH | ||||
4539313 | 2606 days ago | 0.14222143 ETH | ||||
4538850 | 2606 days ago | 2.00506222 ETH | ||||
4530527 | 2608 days ago | 2 ETH | ||||
4530392 | 2608 days ago | 0.1 ETH | ||||
4521745 | 2609 days ago | 0.1 ETH | ||||
4512793 | 2610 days ago | 0.1 ETH | ||||
4511252 | 2611 days ago | 0.1 ETH | ||||
4509755 | 2611 days ago | 1.03 ETH | ||||
4509226 | 2611 days ago | 1.43368559 ETH | ||||
4503552 | 2612 days ago | 0.8 ETH | ||||
4500685 | 2612 days ago | 0.1 ETH | ||||
4500423 | 2612 days ago | 7.305 ETH | ||||
4498003 | 2613 days ago | 0.1 ETH | ||||
4495812 | 2613 days ago | 0.17835678 ETH | ||||
4472710 | 2617 days ago | 0.1 ETH | ||||
4463011 | 2618 days ago | 0.2 ETH | ||||
4461070 | 2619 days ago | 150 ETH |
Loading...
Loading
Contract Name:
Crowdsale
Compiler Version
v0.4.15+commit.bbb8e64f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-10-14 */ pragma solidity 0.4.15; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal constant returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal constant returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal constant returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @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; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ function Ownable() { 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 { require(newOwner != address(0)); 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 allow actions only when the contract IS paused */ modifier whenNotPaused() { require(!paused); _; } /** * @dev modifier to allow actions only when the contract IS NOT paused */ modifier whenPaused { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused returns (bool) { paused = true; Pause(); return true; } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused returns (bool) { paused = false; Unpause(); return true; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) constant returns (uint256); function transfer(address to, uint256 value) returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract BasicToken is ERC20Basic { using SafeMath for uint256; mapping(address => uint256) balances; /** * @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) returns (bool) { 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) constant returns (uint256 balance) { return balances[_owner]; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 is ERC20Basic { function allowance(address owner, address spender) constant returns (uint256); function transferFrom(address from, address to, uint256 value) returns (bool); function approve(address spender, uint256 value) returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * @dev https://github.com/ethereum/EIPs/issues/20 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol */ contract StandardToken is ERC20, BasicToken { mapping (address => mapping (address => uint256)) 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 amout of tokens to be transfered */ function transferFrom(address _from, address _to, uint256 _value) returns (bool) { uint256 _allowance = allowed[_from][msg.sender]; // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met // require (_value <= _allowance); balances[_from] = balances[_from].sub(_value); allowed[_from][msg.sender] = _allowance.sub(_value); balances[_to] = balances[_to].add(_value); Transfer(_from, _to, _value); return true; } /** * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) returns (bool) { // To change the approve amount you first have to reduce the addresses` // allowance to zero by calling `approve(_spender, 0)` if it is not // already 0 to mitigate the race condition described here: // https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 require((_value == 0) || (allowed[msg.sender][_spender] == 0)); 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 specifing the amount of tokens still avaible for the spender. */ function allowance(address _owner, address _spender) constant returns (uint256 remaining) { return allowed[_owner][_spender]; } } /** * Pausable token * * Simple ERC20 Token example, with pausable token creation **/ contract PausableToken is StandardToken, Pausable { function transfer(address _to, uint _value) whenNotPaused returns (bool) { return super.transfer(_to, _value); } function transferFrom(address _from, address _to, uint _value) whenNotPaused returns (bool) { return super.transferFrom(_from, _to, _value); } } /** * @title RefundVault * @dev This contract is used for storing funds while a crowdsale * is in progress. Supports refunding the money if crowdsale fails, * and forwarding it if crowdsale is successful. */ contract RefundVault is Ownable { using SafeMath for uint256; enum State { Active, Refunding, Closed } mapping (address => uint256) public deposited; address public wallet; State public state; event Closed(); event RefundsEnabled(); event Refunded(address indexed beneficiary, uint256 weiAmount); function RefundVault(address _wallet) { require(_wallet != 0x0); wallet = _wallet; state = State.Active; } function deposit(address investor) onlyOwner payable { require(state == State.Active); deposited[investor] = deposited[investor].add(msg.value); } function close() onlyOwner { require(state == State.Active); state = State.Closed; Closed(); wallet.transfer(this.balance); } function enableRefunds() onlyOwner { require(state == State.Active); state = State.Refunding; RefundsEnabled(); } function refund(address investor) { require(state == State.Refunding); uint256 depositedValue = deposited[investor]; deposited[investor] = 0; investor.transfer(depositedValue); Refunded(investor, depositedValue); } } /// @author Merunas Grincalaitis contract PallyCoin is PausableToken { using SafeMath for uint256; string public constant name = 'PallyCoin'; string public constant symbol = 'PAL'; uint8 public constant decimals = 18; uint256 public constant totalSupply = 100e24; // 100M tokens with 18 decimals // The tokens already used for the presale buyers uint256 public tokensDistributedPresale = 0; // The tokens already used for the ICO buyers uint256 public tokensDistributedCrowdsale = 0; address public crowdsale; /// @notice Only allows the execution of the function if it's comming from crowdsale modifier onlyCrowdsale() { require(msg.sender == crowdsale); _; } // When someone refunds tokens event RefundedTokens(address indexed user, uint256 tokens); /// @notice Constructor used to set the platform & development tokens. This is /// The 20% + 20% of the 100 M tokens used for platform and development team. /// The owner, msg.sender, is able to do allowance for other contracts. Remember /// to use `transferFrom()` if you're allowed function PallyCoin() { balances[msg.sender] = 40e24; // 40M tokens wei } /// @notice Function to set the crowdsale smart contract's address only by the owner of this token /// @param _crowdsale The address that will be used function setCrowdsaleAddress(address _crowdsale) external onlyOwner whenNotPaused { require(_crowdsale != address(0)); crowdsale = _crowdsale; } /// @notice Distributes the presale tokens. Only the owner can do this /// @param _buyer The address of the buyer /// @param tokens The amount of tokens corresponding to that buyer function distributePresaleTokens(address _buyer, uint tokens) external onlyOwner whenNotPaused { require(_buyer != address(0)); require(tokens > 0 && tokens <= 10e24); // Check that the limit of 10M presale tokens hasn't been met yet require(tokensDistributedPresale < 10e24); tokensDistributedPresale = tokensDistributedPresale.add(tokens); balances[_buyer] = balances[_buyer].add(tokens); } /// @notice Distributes the ICO tokens. Only the crowdsale address can execute this /// @param _buyer The buyer address /// @param tokens The amount of tokens to send to that address function distributeICOTokens(address _buyer, uint tokens) external onlyCrowdsale whenNotPaused { require(_buyer != address(0)); require(tokens > 0); // Check that the limit of 50M ICO tokens hasn't been met yet require(tokensDistributedCrowdsale < 50e24); tokensDistributedCrowdsale = tokensDistributedCrowdsale.add(tokens); balances[_buyer] = balances[_buyer].add(tokens); } /// @notice Deletes the amount of tokens refunded from that buyer balance /// @param _buyer The buyer that wants the refund /// @param tokens The tokens to return function refundTokens(address _buyer, uint256 tokens) external onlyCrowdsale whenNotPaused { require(_buyer != address(0)); require(tokens > 0); require(balances[_buyer] >= tokens); balances[_buyer] = balances[_buyer].sub(tokens); RefundedTokens(_buyer, tokens); } } /// @title Crowdsale contract to carry out an ICO with the PallyCoin /// Crowdsales have a start and end timestamps, where investors can make /// token purchases and the crowdsale will assign them tokens based /// on a token per ETH rate. Funds collected are forwarded to a wallet /// as they arrive. /// @author Merunas Grincalaitis <[email protected]> contract Crowdsale is Pausable { using SafeMath for uint256; // The token being sold PallyCoin public token; // The vault that will store the ether until the goal is reached RefundVault public vault; // The block number of when the crowdsale starts // 10/15/2017 @ 11:00am (UTC) // 10/15/2017 @ 12:00pm (GMT + 1) uint256 public startTime = 1508065200; // The block number of when the crowdsale ends // 11/13/2017 @ 11:00am (UTC) // 11/13/2017 @ 12:00pm (GMT + 1) uint256 public endTime = 1510570800; // The wallet that holds the Wei raised on the crowdsale address public wallet; // The rate of tokens per ether. Only applied for the first tier, the first // 12.5 million tokens sold uint256 public rate; // The rate of tokens per ether. Only applied for the second tier, at between // 12.5 million tokens sold and 25 million tokens sold uint256 public rateTier2; // The rate of tokens per ether. Only applied for the third tier, at between // 25 million tokens sold and 37.5 million tokens sold uint256 public rateTier3; // The rate of tokens per ether. Only applied for the fourth tier, at between // 37.5 million tokens sold and 50 million tokens sold uint256 public rateTier4; // The maximum amount of wei for each tier uint256 public limitTier1 = 12.5e24; uint256 public limitTier2 = 25e24; uint256 public limitTier3 = 37.5e24; // The amount of wei raised uint256 public weiRaised = 0; // The amount of tokens raised uint256 public tokensRaised = 0; // You can only buy up to 50 M tokens during the ICO uint256 public constant maxTokensRaised = 50e24; // The minimum amount of Wei you must pay to participate in the crowdsale uint256 public constant minPurchase = 100 finney; // 0.1 ether // The max amount of Wei that you can pay to participate in the crowdsale uint256 public constant maxPurchase = 1000 ether; // Minimum amount of tokens to be raised. 7.5 million tokens which is the 15% // of the total of 50 million tokens sold in the crowdsale // 7.5e6 + 1e18 uint256 public constant minimumGoal = 7.5e24; // If the crowdsale wasn't successful, this will be true and users will be able // to claim the refund of their ether bool public isRefunding = false; // If the crowdsale has ended or not bool public isEnded = false; // The number of transactions uint256 public numberOfTransactions; // The gas price to buy tokens must be 50 gwei or below uint256 public limitGasPrice = 50000000000 wei; // How much each user paid for the crowdsale mapping(address => uint256) public crowdsaleBalances; // How many tokens each user got for the crowdsale mapping(address => uint256) public tokensBought; // To indicate who purchased what amount of tokens and who received what amount of wei event TokenPurchase(address indexed buyer, uint256 value, uint256 amountOfTokens); // Indicates if the crowdsale has ended event Finalized(); // Only allow the execution of the function before the crowdsale starts modifier beforeStarting() { require(now < startTime); _; } /// @notice Constructor of the crowsale to set up the main variables and create a token /// @param _wallet The wallet address that stores the Wei raised /// @param _tokenAddress The token used for the ICO function Crowdsale( address _wallet, address _tokenAddress, uint256 _startTime, uint256 _endTime ) public { require(_wallet != address(0)); require(_tokenAddress != address(0)); // If you send the start and end time on the constructor, the end must be larger if(_startTime > 0 && _endTime > 0) require(_startTime < _endTime); wallet = _wallet; token = PallyCoin(_tokenAddress); vault = new RefundVault(_wallet); if(_startTime > 0) startTime = _startTime; if(_endTime > 0) endTime = _endTime; } /// @notice Fallback function to buy tokens function () payable { buyTokens(); } /// @notice To buy tokens given an address function buyTokens() public payable whenNotPaused { require(validPurchase()); uint256 tokens = 0; uint256 amountPaid = calculateExcessBalance(); if(tokensRaised < limitTier1) { // Tier 1 tokens = amountPaid.mul(rate); // If the amount of tokens that you want to buy gets out of this tier if(tokensRaised.add(tokens) > limitTier1) tokens = calculateExcessTokens(amountPaid, limitTier1, 1, rate); } else if(tokensRaised >= limitTier1 && tokensRaised < limitTier2) { // Tier 2 tokens = amountPaid.mul(rateTier2); // If the amount of tokens that you want to buy gets out of this tier if(tokensRaised.add(tokens) > limitTier2) tokens = calculateExcessTokens(amountPaid, limitTier2, 2, rateTier2); } else if(tokensRaised >= limitTier2 && tokensRaised < limitTier3) { // Tier 3 tokens = amountPaid.mul(rateTier3); // If the amount of tokens that you want to buy gets out of this tier if(tokensRaised.add(tokens) > limitTier3) tokens = calculateExcessTokens(amountPaid, limitTier3, 3, rateTier3); } else if(tokensRaised >= limitTier3) { // Tier 4 tokens = amountPaid.mul(rateTier4); } weiRaised = weiRaised.add(amountPaid); tokensRaised = tokensRaised.add(tokens); token.distributeICOTokens(msg.sender, tokens); // Keep a record of how many tokens everybody gets in case we need to do refunds tokensBought[msg.sender] = tokensBought[msg.sender].add(tokens); TokenPurchase(msg.sender, amountPaid, tokens); numberOfTransactions = numberOfTransactions.add(1); forwardFunds(amountPaid); } /// @notice Sends the funds to the wallet or to the refund vault smart contract /// if the minimum goal of tokens hasn't been reached yet /// @param amountPaid The amount of ether paid function forwardFunds(uint256 amountPaid) internal whenNotPaused { if(goalReached()) { wallet.transfer(amountPaid); } else { vault.deposit.value(amountPaid)(msg.sender); } // If the minimum goal of the ICO has been reach, close the vault to send // the ether to the wallet of the crowdsale checkCompletedCrowdsale(); } /// @notice Calculates how many ether will be used to generate the tokens in /// case the buyer sends more than the maximum balance but has some balance left /// and updates the balance of that buyer. /// For instance if he's 500 balance and he sends 1000, it will return 500 /// and refund the other 500 ether function calculateExcessBalance() internal whenNotPaused returns(uint256) { uint256 amountPaid = msg.value; uint256 differenceWei = 0; uint256 exceedingBalance = 0; // If we're in the last tier, check that the limit hasn't been reached // and if so, refund the difference and return what will be used to // buy the remaining tokens if(tokensRaised >= limitTier3) { uint256 addedTokens = tokensRaised.add(amountPaid.mul(rateTier4)); // If tokensRaised + what you paid converted to tokens is bigger than the max if(addedTokens > maxTokensRaised) { // Refund the difference uint256 difference = addedTokens.sub(maxTokensRaised); differenceWei = difference.div(rateTier4); amountPaid = amountPaid.sub(differenceWei); } } uint256 addedBalance = crowdsaleBalances[msg.sender].add(amountPaid); // Checking that the individual limit of 1000 ETH per user is not reached if(addedBalance <= maxPurchase) { crowdsaleBalances[msg.sender] = crowdsaleBalances[msg.sender].add(amountPaid); } else { // Substracting 1000 ether in wei exceedingBalance = addedBalance.sub(maxPurchase); amountPaid = amountPaid.sub(exceedingBalance); // Add that balance to the balances crowdsaleBalances[msg.sender] = crowdsaleBalances[msg.sender].add(amountPaid); } // Make the transfers at the end of the function for security purposes if(differenceWei > 0) msg.sender.transfer(differenceWei); if(exceedingBalance > 0) { // Return the exceeding balance to the buyer msg.sender.transfer(exceedingBalance); } return amountPaid; } /// @notice Set's the rate of tokens per ether for each tier. Use it after the /// smart contract is deployed to set the price according to the ether price /// at the start of the ICO /// @param tier1 The amount of tokens you get in the tier one /// @param tier2 The amount of tokens you get in the tier two /// @param tier3 The amount of tokens you get in the tier three /// @param tier4 The amount of tokens you get in the tier four function setTierRates(uint256 tier1, uint256 tier2, uint256 tier3, uint256 tier4) external onlyOwner whenNotPaused beforeStarting { require(tier1 > 0 && tier2 > 0 && tier3 > 0 && tier4 > 0); require(tier1 > tier2 && tier2 > tier3 && tier3 > tier4); rate = tier1; rateTier2 = tier2; rateTier3 = tier3; rateTier4 = tier4; } /// @notice Check if the crowdsale has ended and enables refunds only in case the /// goal hasn't been reached function checkCompletedCrowdsale() public whenNotPaused { if(!isEnded) { if(hasEnded() && !goalReached()){ vault.enableRefunds(); isRefunding = true; isEnded = true; Finalized(); } else if(hasEnded() && goalReached()) { vault.close(); isEnded = true; Finalized(); } } } /// @notice If crowdsale is unsuccessful, investors can claim refunds here function claimRefund() public whenNotPaused { require(hasEnded() && !goalReached() && isRefunding); vault.refund(msg.sender); token.refundTokens(msg.sender, tokensBought[msg.sender]); } /// @notice Buys the tokens for the specified tier and for the next one /// @param amount The amount of ether paid to buy the tokens /// @param tokensThisTier The limit of tokens of that tier /// @param tierSelected The tier selected /// @param _rate The rate used for that `tierSelected` /// @return uint The total amount of tokens bought combining the tier prices function calculateExcessTokens( uint256 amount, uint256 tokensThisTier, uint256 tierSelected, uint256 _rate ) public returns(uint256 totalTokens) { require(amount > 0 && tokensThisTier > 0 && _rate > 0); require(tierSelected >= 1 && tierSelected <= 4); uint weiThisTier = tokensThisTier.sub(tokensRaised).div(_rate); uint weiNextTier = amount.sub(weiThisTier); uint tokensNextTier = 0; bool returnTokens = false; // If there's excessive wei for the last tier, refund those if(tierSelected != 4) tokensNextTier = calculateTokensTier(weiNextTier, tierSelected.add(1)); else returnTokens = true; totalTokens = tokensThisTier.sub(tokensRaised).add(tokensNextTier); // Do the transfer at the end if(returnTokens) msg.sender.transfer(weiNextTier); } /// @notice Buys the tokens given the price of the tier one and the wei paid /// @param weiPaid The amount of wei paid that will be used to buy tokens /// @param tierSelected The tier that you'll use for thir purchase /// @return calculatedTokens Returns how many tokens you've bought for that wei paid function calculateTokensTier(uint256 weiPaid, uint256 tierSelected) internal constant returns(uint256 calculatedTokens) { require(weiPaid > 0); require(tierSelected >= 1 && tierSelected <= 4); if(tierSelected == 1) calculatedTokens = weiPaid.mul(rate); else if(tierSelected == 2) calculatedTokens = weiPaid.mul(rateTier2); else if(tierSelected == 3) calculatedTokens = weiPaid.mul(rateTier3); else calculatedTokens = weiPaid.mul(rateTier4); } /// @notice Checks if a purchase is considered valid /// @return bool If the purchase is valid or not function validPurchase() internal constant returns(bool) { bool withinPeriod = now >= startTime && now <= endTime; bool nonZeroPurchase = msg.value > 0; bool withinTokenLimit = tokensRaised < maxTokensRaised; bool minimumPurchase = msg.value >= minPurchase; bool hasBalanceAvailable = crowdsaleBalances[msg.sender] < maxPurchase; // We want to limit the gas to avoid giving priority to the biggest paying contributors bool limitGas = tx.gasprice <= limitGasPrice; return withinPeriod && nonZeroPurchase && withinTokenLimit && minimumPurchase && hasBalanceAvailable && limitGas; } /// @notice To see if the minimum goal of tokens of the ICO has been reached /// @return bool True if the tokens raised are bigger than the goal or false otherwise function goalReached() public constant returns(bool) { return tokensRaised >= minimumGoal; } /// @notice Public function to check if the crowdsale has ended or not function hasEnded() public constant returns(bool) { return now > endTime || tokensRaised >= maxTokensRaised; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"limitGasPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxTokensRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"crowdsaleBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokensBought","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rateTier4","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"limitTier2","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minPurchase","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rateTier2","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"checkCompletedCrowdsale","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"tokensRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"tokensThisTier","type":"uint256"},{"name":"tierSelected","type":"uint256"},{"name":"_rate","type":"uint256"}],"name":"calculateExcessTokens","outputs":[{"name":"totalTokens","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tier1","type":"uint256"},{"name":"tier2","type":"uint256"},{"name":"tier3","type":"uint256"},{"name":"tier4","type":"uint256"}],"name":"setTierRates","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxPurchase","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isRefunding","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"limitTier3","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"rateTier3","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minimumGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"limitTier1","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfTransactions","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_wallet","type":"address"},{"name":"_tokenAddress","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amountOfTokens","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]
Contract Creation Code
606060405260008060146101000a81548160ff0219169083151502179055506359e33fb0600355635a097b306004556a0a56fa5b99019a5c800000600a556a14adf4b7320334b9000000600b556a1f04ef12cb04cf15800000600c556000600d556000600e556000600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550640ba43b74006011553415620000b057600080fd5b60405160808062002b87833981016040528080519060200190919080519060200190919080519060200190919080519060200190919050505b5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156200016857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515620001a557600080fd5b600082118015620001b65750600081115b15620001cc578082101515620001cb57600080fd5b5b83600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836200025962000315565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f0801515620002a657600080fd5b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000821115620002f857816003819055505b60008111156200030a57806004819055505b5b5050505062000326565b6040516109f3806200219483390190565b611e5e80620003366000396000f300606060405236156101c0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806307259d06146101cc57806309838bd9146101f55780630e11624b1461021e578063264d77971461026b57806326b45b09146102b85780632c4e722e146102e15780633197cbb61461030a578063338f4dd91461033357806333b5b62e1461035c5780633f4ba83a146103855780634042b66f146103b2578063521eb273146103db57806357902a751461043057806357a27a76146104595780635c975abb1461046e5780636ea6b71b1461049b57806375b3ea8e146104c457806378e97925146105165780637d3d65221461053f5780638456cb591461056c5780638da5cb5b1461059957806395c93f8b146105ee578063977b055b1461062c5780639d6fb02014610655578063a4fd6f5614610682578063aef08617146106af578063b5545a3c146106d8578063b950f0a0146106ed578063bc69731914610716578063d0febe4c1461073f578063e1db206c14610749578063ecb70fb714610772578063f2fde38b1461079f578063f8d3afa4146107d8578063fbfa77cf14610801578063fc0c546a14610856575b5b6101c96108ab565b5b005b34156101d757600080fd5b6101df610c65565b6040518082815260200191505060405180910390f35b341561020057600080fd5b610208610c6b565b6040518082815260200191505060405180910390f35b341561022957600080fd5b610255600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c7a565b6040518082815260200191505060405180910390f35b341561027657600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c92565b6040518082815260200191505060405180910390f35b34156102c357600080fd5b6102cb610caa565b6040518082815260200191505060405180910390f35b34156102ec57600080fd5b6102f4610cb0565b6040518082815260200191505060405180910390f35b341561031557600080fd5b61031d610cb6565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610cbc565b6040518082815260200191505060405180910390f35b341561036757600080fd5b61036f610cc2565b6040518082815260200191505060405180910390f35b341561039057600080fd5b610398610cce565b604051808215151515815260200191505060405180910390f35b34156103bd57600080fd5b6103c5610d96565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610d9c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043b57600080fd5b610443610dc2565b6040518082815260200191505060405180910390f35b341561046457600080fd5b61046c610dc8565b005b341561047957600080fd5b61048161101c565b604051808215151515815260200191505060405180910390f35b34156104a657600080fd5b6104ae61102f565b6040518082815260200191505060405180910390f35b34156104cf57600080fd5b6105006004808035906020019091908035906020019091908035906020019091908035906020019091905050611035565b6040518082815260200191505060405180910390f35b341561052157600080fd5b610529611176565b6040518082815260200191505060405180910390f35b341561054a57600080fd5b61055261117c565b604051808215151515815260200191505060405180910390f35b341561057757600080fd5b61057f611195565b604051808215151515815260200191505060405180910390f35b34156105a457600080fd5b6105ac61125f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105f957600080fd5b61062a6004808035906020019091908035906020019091908035906020019091908035906020019091905050611284565b005b341561063757600080fd5b61063f611388565b6040518082815260200191505060405180910390f35b341561066057600080fd5b610668611395565b604051808215151515815260200191505060405180910390f35b341561068d57600080fd5b6106956113a8565b604051808215151515815260200191505060405180910390f35b34156106ba57600080fd5b6106c26113bb565b6040518082815260200191505060405180910390f35b34156106e357600080fd5b6106eb6113c1565b005b34156106f857600080fd5b610700611604565b6040518082815260200191505060405180910390f35b341561072157600080fd5b61072961160a565b6040518082815260200191505060405180910390f35b6107476108ab565b005b341561075457600080fd5b61075c611619565b6040518082815260200191505060405180910390f35b341561077d57600080fd5b61078561161f565b604051808215151515815260200191505060405180910390f35b34156107aa57600080fd5b6107d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611644565b005b34156107e357600080fd5b6107eb611720565b6040518082815260200191505060405180910390f35b341561080c57600080fd5b610814611726565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561086157600080fd5b61086961174c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600060149054906101000a900460ff161515156108ca57600080fd5b6108d2611772565b15156108dd57600080fd5b600091506108e9611848565b9050600a54600e5410156109455761090c60065482611b7d90919063ffffffff16565b9150600a5461092683600e54611bb190919063ffffffff16565b11156109405761093d81600a546001600654611035565b91505b610a41565b600a54600e541015801561095c5750600b54600e54105b156109af5761097660075482611b7d90919063ffffffff16565b9150600b5461099083600e54611bb190919063ffffffff16565b11156109aa576109a781600b546002600754611035565b91505b610a40565b600b54600e54101580156109c65750600c54600e54105b15610a19576109e060085482611b7d90919063ffffffff16565b9150600c546109fa83600e54611bb190919063ffffffff16565b1115610a1457610a1181600c546003600854611035565b91505b610a3f565b600c54600e54101515610a3e57610a3b60095482611b7d90919063ffffffff16565b91505b5b5b5b610a5681600d54611bb190919063ffffffff16565b600d81905550610a7182600e54611bb190919063ffffffff16565b600e81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663135859c033846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610b3b57600080fd5b6102c65a03f11515610b4c57600080fd5b505050610ba182601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8284604051808381526020018281526020019250505060405180910390a2610c506001601054611bb190919063ffffffff16565b601081905550610c5f81611bd0565b5b5b5050565b60115481565b6a295be96e6406697200000081565b60126020528060005260406000206000915090505481565b60136020528060005260406000206000915090505481565b60095481565b60065481565b60045481565b600b5481565b67016345785d8a000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2b57600080fd5b600060149054906101000a900460ff161515610d4657600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1600190505b5b5b90565b600d5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600060149054906101000a900460ff16151515610de457600080fd5b600f60019054906101000a900460ff16151561101857610e0261161f565b8015610e135750610e1161117c565b155b15610f1857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e9d57600080fd5b6102c65a03f11515610eae57600080fd5b5050506001600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1611017565b610f2061161f565b8015610f305750610f2f61117c565b5b1561101657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610fba57600080fd5b6102c65a03f11515610fcb57600080fd5b5050506001600f60016101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a15b5b5b5b5b565b600060149054906101000a900460ff1681565b600e5481565b6000806000806000808911801561104c5750600088115b80156110585750600086115b151561106357600080fd5b60018710158015611075575060048711155b151561108057600080fd5b6110a786611099600e548b611d3f90919063ffffffff16565b611d5990919063ffffffff16565b93506110bc848a611d3f90919063ffffffff16565b925060009150600090506004871415156110f4576110ed836110e860018a611bb190919063ffffffff16565b611d75565b91506110f9565b600190505b61112082611112600e548b611d3f90919063ffffffff16565b611bb190919063ffffffff16565b94508015611169573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561116857600080fd5b5b5b50505050949350505050565b60035481565b60006a06342fd08f00f637800000600e54101590505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f257600080fd5b600060149054906101000a900460ff1615151561120e57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1600190505b5b5b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112df57600080fd5b600060149054906101000a900460ff161515156112fb57600080fd5b6003544210151561130b57600080fd5b60008411801561131b5750600083115b80156113275750600082115b80156113335750600081115b151561133e57600080fd5b828411801561134c57508183115b801561135757508082115b151561136257600080fd5b836006819055508260078190555081600881905550806009819055505b5b5b5b50505050565b683635c9adc5dea0000081565b600f60009054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b600c5481565b600060149054906101000a900460ff161515156113dd57600080fd5b6113e561161f565b80156113f657506113f461117c565b155b801561140e5750600f60009054906101000a900460ff165b151561141957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156114d557600080fd5b6102c65a03f115156114e657600080fd5b505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663549c6bbb33601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15156115ec57600080fd5b6102c65a03f115156115fd57600080fd5b5050505b5b565b60085481565b6a06342fd08f00f63780000081565b600a5481565b600060045442118061163e57506a295be96e64066972000000600e5410155b90505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116db57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60105481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000600354421015801561179157506004544211155b95506000341194506a295be96e64066972000000600e5410935067016345785d8a00003410159250683635c9adc5dea00000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541091506011543a111590508580156118185750845b80156118215750835b801561182a5750825b80156118335750815b801561183c5750805b96505b50505050505090565b60008060008060008060008060149054906101000a900460ff1615151561186e57600080fd5b3495506000945060009350600c54600e54101515611912576118af61189e60095488611b7d90919063ffffffff16565b600e54611bb190919063ffffffff16565b92506a295be96e64066972000000831115611911576118e26a295be96e6406697200000084611d3f90919063ffffffff16565b91506118f960095483611d5990919063ffffffff16565b945061190e8587611d3f90919063ffffffff16565b95505b5b61196486601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b9050683635c9adc5dea0000081111515611a12576119ca86601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611adb565b611a2e683635c9adc5dea0000082611d3f90919063ffffffff16565b9350611a438487611d3f90919063ffffffff16565b9550611a9786601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000851115611b25573373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501515611b2457600080fd5b5b6000841115611b6f573373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515611b6e57600080fd5b5b8596505b5b50505050505090565b60008082840290506000841480611b9e5750828482811515611b9b57fe5b04145b1515611ba657fe5b8091505b5092915050565b6000808284019050838110151515611bc557fe5b8091505b5092915050565b600060149054906101000a900460ff16151515611bec57600080fd5b611bf461117c565b15611c6057600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c5b57600080fd5b611d32565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515611d1c57600080fd5b6125ee5a03f11515611d2d57600080fd5b505050505b611d3a610dc8565b5b5b50565b6000828211151515611d4d57fe5b81830390505b92915050565b6000808284811515611d6757fe5b0490508091505b5092915050565b60008083111515611d8557600080fd5b60018210158015611d97575060048211155b1515611da257600080fd5b6001821415611dc757611dc060065484611b7d90919063ffffffff16565b9050611e2b565b6002821415611dec57611de560075484611b7d90919063ffffffff16565b9050611e2a565b6003821415611e1157611e0a60085484611b7d90919063ffffffff16565b9050611e29565b611e2660095484611b7d90919063ffffffff16565b90505b5b5b5b929150505600a165627a7a7230582084f9fb6d0017651233e18f91197c67b9b954c04d864d344a23e5428a4d990abe00296060604052341561000f57600080fd5b6040516020806109f3833981016040528080519060200190919050505b5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008173ffffffffffffffffffffffffffffffffffffffff161415151561009457600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260146101000a81548160ff021916908360028111156100f457fe5b02179055505b505b6108e88061010b6000396000f30060606040523615610097576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806343d726d61461009c578063521eb273146100b15780638c52dc41146101065780638da5cb5b1461011b578063c19d93fb14610170578063cb13cddb146101a7578063f2fde38b146101f4578063f340fa011461022d578063fa89401a1461025b575b600080fd5b34156100a757600080fd5b6100af610294565b005b34156100bc57600080fd5b6100c46103ef565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561011157600080fd5b610119610415565b005b341561012657600080fd5b61012e6104f8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561017b57600080fd5b61018361051d565b6040518082600281111561019357fe5b60ff16815260200191505060405180910390f35b34156101b257600080fd5b6101de600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610530565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b61022b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610548565b005b610259600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b341561026657600080fd5b610292600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061074d565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156102ef57600080fd5b600060028111156102fc57fe5b600260149054906101000a900460ff16600281111561031757fe5b14151561032357600080fd5b60028060146101000a81548160ff0219169083600281111561034157fe5b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015156103eb57600080fd5b5b5b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047057600080fd5b6000600281111561047d57fe5b600260149054906101000a900460ff16600281111561049857fe5b1415156104a457600080fd5b6001600260146101000a81548160ff021916908360028111156104c357fe5b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a15b5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1681565b60016020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105a357600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156105df57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561067f57600080fd5b6000600281111561068c57fe5b600260149054906101000a900460ff1660028111156106a757fe5b1415156106b357600080fd5b61070534600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089d90919063ffffffff16565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b50565b60006001600281111561075c57fe5b600260149054906101000a900460ff16600281111561077757fe5b14151561078357600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561084a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651826040518082815260200191505060405180910390a25b5050565b60008082840190508381101515156108b157fe5b8091505b50929150505600a165627a7a72305820a45086f3cebd0cbafddbe523ed3ba70358b2e71bed0d43f9ad1395afc6b22db200290000000000000000000000000900d7ecfacdec21aca271b0133b9e387ece1321000000000000000000000000f923ba61b43161a83afe2cab7d77ea1e41f2791800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x606060405236156101c0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806307259d06146101cc57806309838bd9146101f55780630e11624b1461021e578063264d77971461026b57806326b45b09146102b85780632c4e722e146102e15780633197cbb61461030a578063338f4dd91461033357806333b5b62e1461035c5780633f4ba83a146103855780634042b66f146103b2578063521eb273146103db57806357902a751461043057806357a27a76146104595780635c975abb1461046e5780636ea6b71b1461049b57806375b3ea8e146104c457806378e97925146105165780637d3d65221461053f5780638456cb591461056c5780638da5cb5b1461059957806395c93f8b146105ee578063977b055b1461062c5780639d6fb02014610655578063a4fd6f5614610682578063aef08617146106af578063b5545a3c146106d8578063b950f0a0146106ed578063bc69731914610716578063d0febe4c1461073f578063e1db206c14610749578063ecb70fb714610772578063f2fde38b1461079f578063f8d3afa4146107d8578063fbfa77cf14610801578063fc0c546a14610856575b5b6101c96108ab565b5b005b34156101d757600080fd5b6101df610c65565b6040518082815260200191505060405180910390f35b341561020057600080fd5b610208610c6b565b6040518082815260200191505060405180910390f35b341561022957600080fd5b610255600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c7a565b6040518082815260200191505060405180910390f35b341561027657600080fd5b6102a2600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c92565b6040518082815260200191505060405180910390f35b34156102c357600080fd5b6102cb610caa565b6040518082815260200191505060405180910390f35b34156102ec57600080fd5b6102f4610cb0565b6040518082815260200191505060405180910390f35b341561031557600080fd5b61031d610cb6565b6040518082815260200191505060405180910390f35b341561033e57600080fd5b610346610cbc565b6040518082815260200191505060405180910390f35b341561036757600080fd5b61036f610cc2565b6040518082815260200191505060405180910390f35b341561039057600080fd5b610398610cce565b604051808215151515815260200191505060405180910390f35b34156103bd57600080fd5b6103c5610d96565b6040518082815260200191505060405180910390f35b34156103e657600080fd5b6103ee610d9c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043b57600080fd5b610443610dc2565b6040518082815260200191505060405180910390f35b341561046457600080fd5b61046c610dc8565b005b341561047957600080fd5b61048161101c565b604051808215151515815260200191505060405180910390f35b34156104a657600080fd5b6104ae61102f565b6040518082815260200191505060405180910390f35b34156104cf57600080fd5b6105006004808035906020019091908035906020019091908035906020019091908035906020019091905050611035565b6040518082815260200191505060405180910390f35b341561052157600080fd5b610529611176565b6040518082815260200191505060405180910390f35b341561054a57600080fd5b61055261117c565b604051808215151515815260200191505060405180910390f35b341561057757600080fd5b61057f611195565b604051808215151515815260200191505060405180910390f35b34156105a457600080fd5b6105ac61125f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105f957600080fd5b61062a6004808035906020019091908035906020019091908035906020019091908035906020019091905050611284565b005b341561063757600080fd5b61063f611388565b6040518082815260200191505060405180910390f35b341561066057600080fd5b610668611395565b604051808215151515815260200191505060405180910390f35b341561068d57600080fd5b6106956113a8565b604051808215151515815260200191505060405180910390f35b34156106ba57600080fd5b6106c26113bb565b6040518082815260200191505060405180910390f35b34156106e357600080fd5b6106eb6113c1565b005b34156106f857600080fd5b610700611604565b6040518082815260200191505060405180910390f35b341561072157600080fd5b61072961160a565b6040518082815260200191505060405180910390f35b6107476108ab565b005b341561075457600080fd5b61075c611619565b6040518082815260200191505060405180910390f35b341561077d57600080fd5b61078561161f565b604051808215151515815260200191505060405180910390f35b34156107aa57600080fd5b6107d6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611644565b005b34156107e357600080fd5b6107eb611720565b6040518082815260200191505060405180910390f35b341561080c57600080fd5b610814611726565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561086157600080fd5b61086961174c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600060149054906101000a900460ff161515156108ca57600080fd5b6108d2611772565b15156108dd57600080fd5b600091506108e9611848565b9050600a54600e5410156109455761090c60065482611b7d90919063ffffffff16565b9150600a5461092683600e54611bb190919063ffffffff16565b11156109405761093d81600a546001600654611035565b91505b610a41565b600a54600e541015801561095c5750600b54600e54105b156109af5761097660075482611b7d90919063ffffffff16565b9150600b5461099083600e54611bb190919063ffffffff16565b11156109aa576109a781600b546002600754611035565b91505b610a40565b600b54600e54101580156109c65750600c54600e54105b15610a19576109e060085482611b7d90919063ffffffff16565b9150600c546109fa83600e54611bb190919063ffffffff16565b1115610a1457610a1181600c546003600854611035565b91505b610a3f565b600c54600e54101515610a3e57610a3b60095482611b7d90919063ffffffff16565b91505b5b5b5b610a5681600d54611bb190919063ffffffff16565b600d81905550610a7182600e54611bb190919063ffffffff16565b600e81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663135859c033846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1515610b3b57600080fd5b6102c65a03f11515610b4c57600080fd5b505050610ba182601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f8284604051808381526020018281526020019250505060405180910390a2610c506001601054611bb190919063ffffffff16565b601081905550610c5f81611bd0565b5b5b5050565b60115481565b6a295be96e6406697200000081565b60126020528060005260406000206000915090505481565b60136020528060005260406000206000915090505481565b60095481565b60065481565b60045481565b600b5481565b67016345785d8a000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2b57600080fd5b600060149054906101000a900460ff161515610d4657600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1600190505b5b5b90565b600d5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600060149054906101000a900460ff16151515610de457600080fd5b600f60019054906101000a900460ff16151561101857610e0261161f565b8015610e135750610e1161117c565b155b15610f1857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c52dc416040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610e9d57600080fd5b6102c65a03f11515610eae57600080fd5b5050506001600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a1611017565b610f2061161f565b8015610f305750610f2f61117c565b5b1561101657600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166343d726d66040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b1515610fba57600080fd5b6102c65a03f11515610fcb57600080fd5b5050506001600f60016101000a81548160ff0219169083151502179055507f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a15b5b5b5b5b565b600060149054906101000a900460ff1681565b600e5481565b6000806000806000808911801561104c5750600088115b80156110585750600086115b151561106357600080fd5b60018710158015611075575060048711155b151561108057600080fd5b6110a786611099600e548b611d3f90919063ffffffff16565b611d5990919063ffffffff16565b93506110bc848a611d3f90919063ffffffff16565b925060009150600090506004871415156110f4576110ed836110e860018a611bb190919063ffffffff16565b611d75565b91506110f9565b600190505b61112082611112600e548b611d3f90919063ffffffff16565b611bb190919063ffffffff16565b94508015611169573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050151561116857600080fd5b5b5b50505050949350505050565b60035481565b60006a06342fd08f00f637800000600e54101590505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111f257600080fd5b600060149054906101000a900460ff1615151561120e57600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1600190505b5b5b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112df57600080fd5b600060149054906101000a900460ff161515156112fb57600080fd5b6003544210151561130b57600080fd5b60008411801561131b5750600083115b80156113275750600082115b80156113335750600081115b151561133e57600080fd5b828411801561134c57508183115b801561135757508082115b151561136257600080fd5b836006819055508260078190555081600881905550806009819055505b5b5b5b50505050565b683635c9adc5dea0000081565b600f60009054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b600c5481565b600060149054906101000a900460ff161515156113dd57600080fd5b6113e561161f565b80156113f657506113f461117c565b155b801561140e5750600f60009054906101000a900460ff165b151561141957600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fa89401a336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156114d557600080fd5b6102c65a03f115156114e657600080fd5b505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663549c6bbb33601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15156115ec57600080fd5b6102c65a03f115156115fd57600080fd5b5050505b5b565b60085481565b6a06342fd08f00f63780000081565b600a5481565b600060045442118061163e57506a295be96e64066972000000600e5410155b90505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156116db57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b50565b60105481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000806000806000600354421015801561179157506004544211155b95506000341194506a295be96e64066972000000600e5410935067016345785d8a00003410159250683635c9adc5dea00000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541091506011543a111590508580156118185750845b80156118215750835b801561182a5750825b80156118335750815b801561183c5750805b96505b50505050505090565b60008060008060008060008060149054906101000a900460ff1615151561186e57600080fd5b3495506000945060009350600c54600e54101515611912576118af61189e60095488611b7d90919063ffffffff16565b600e54611bb190919063ffffffff16565b92506a295be96e64066972000000831115611911576118e26a295be96e6406697200000084611d3f90919063ffffffff16565b91506118f960095483611d5990919063ffffffff16565b945061190e8587611d3f90919063ffffffff16565b95505b5b61196486601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b9050683635c9adc5dea0000081111515611a12576119ca86601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611adb565b611a2e683635c9adc5dea0000082611d3f90919063ffffffff16565b9350611a438487611d3f90919063ffffffff16565b9550611a9786601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bb190919063ffffffff16565b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000851115611b25573373ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501515611b2457600080fd5b5b6000841115611b6f573373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501515611b6e57600080fd5b5b8596505b5b50505050505090565b60008082840290506000841480611b9e5750828482811515611b9b57fe5b04145b1515611ba657fe5b8091505b5092915050565b6000808284019050838110151515611bc557fe5b8091505b5092915050565b600060149054906101000a900460ff16151515611bec57600080fd5b611bf461117c565b15611c6057600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c5b57600080fd5b611d32565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f340fa0182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506000604051808303818588803b1515611d1c57600080fd5b6125ee5a03f11515611d2d57600080fd5b505050505b611d3a610dc8565b5b5b50565b6000828211151515611d4d57fe5b81830390505b92915050565b6000808284811515611d6757fe5b0490508091505b5092915050565b60008083111515611d8557600080fd5b60018210158015611d97575060048211155b1515611da257600080fd5b6001821415611dc757611dc060065484611b7d90919063ffffffff16565b9050611e2b565b6002821415611dec57611de560075484611b7d90919063ffffffff16565b9050611e2a565b6003821415611e1157611e0a60085484611b7d90919063ffffffff16565b9050611e29565b611e2660095484611b7d90919063ffffffff16565b90505b5b5b5b929150505600a165627a7a7230582084f9fb6d0017651233e18f91197c67b9b954c04d864d344a23e5428a4d990abe0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000900d7ecfacdec21aca271b0133b9e387ece1321000000000000000000000000f923ba61b43161a83afe2cab7d77ea1e41f2791800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _wallet (address): 0x0900D7ECFacdec21ACA271b0133b9E387ecE1321
Arg [1] : _tokenAddress (address): 0xf923Ba61B43161A83afe2cAb7d77Ea1e41F27918
Arg [2] : _startTime (uint256): 0
Arg [3] : _endTime (uint256): 0
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000900d7ecfacdec21aca271b0133b9e387ece1321
Arg [1] : 000000000000000000000000f923ba61b43161a83afe2cab7d77ea1e41f27918
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Swarm Source
bzzr://a45086f3cebd0cbafddbe523ed3ba70358b2e71bed0d43f9ad1395afc6b22db2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.