ETH Price: $2,142.68 (-2.32%)

Contract

0xEC41CDb6cA4910486d875A2CF1faC1159d1b2bDF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer49154892018-01-16 1:37:412985 days ago1516066661IN
0xEC41CDb6...59d1b2bDF
0.015 ETH0.0004473621
Proxy Withdraw48270682017-12-31 1:03:303001 days ago1514682210IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0002214110
Proxy Withdraw48270652017-12-31 1:03:123001 days ago1514682192IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0002214110
Proxy Withdraw48270572017-12-31 1:01:053001 days ago1514682065IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0004428220
Proxy Withdraw48270492017-12-31 0:59:413001 days ago1514681981IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0002214110
Proxy Withdraw48270392017-12-31 0:57:593001 days ago1514681879IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0002214110
Proxy Withdraw48270282017-12-31 0:55:093001 days ago1514681709IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0002214110
Cancel Auction48270052017-12-31 0:51:133001 days ago1514681473IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0004493515
Transfer48069102017-12-27 14:11:193004 days ago1514383879IN
0xEC41CDb6...59d1b2bDF
0.5 ETH0.0010396220
Transfer47169842017-12-12 0:41:163020 days ago1513039276IN
0xEC41CDb6...59d1b2bDF
0.2 ETH0.001091621
Transfer47143822017-12-11 13:52:453020 days ago1513000365IN
0xEC41CDb6...59d1b2bDF
0.5 ETH0.0021448958
Transfer47073712017-12-10 8:52:253021 days ago1512895945IN
0xEC41CDb6...59d1b2bDF
0.04 ETH0.0004220
Transfer46824802017-12-06 0:21:363026 days ago1512519696IN
0xEC41CDb6...59d1b2bDF
0.25054657 ETH0.0015594330
Transfer46819832017-12-05 22:18:503026 days ago1512512330IN
0xEC41CDb6...59d1b2bDF
0.02126257 ETH0.000776621
Transfer46813612017-12-05 19:46:213026 days ago1512503181IN
0xEC41CDb6...59d1b2bDF
0.02127659 ETH0.001091621
Transfer46805142017-12-05 16:09:143026 days ago1512490154IN
0xEC41CDb6...59d1b2bDF
1 ETH0.0005198110
Transfer46793782017-12-05 11:09:223026 days ago1512472162IN
0xEC41CDb6...59d1b2bDF
0.5 ETH0.0022103733
Start Auction46793582017-12-05 11:03:343026 days ago1512471814IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0020720730
Transfer46793362017-12-05 10:57:493026 days ago1512471469IN
0xEC41CDb6...59d1b2bDF
1 ETH0.0012781860
Transfer46792422017-12-05 10:37:003026 days ago1512470220IN
0xEC41CDb6...59d1b2bDF
1.06139654 ETH0.00033616
Setup46787542017-12-05 8:28:033026 days ago1512462483IN
0xEC41CDb6...59d1b2bDF
0 ETH0.0032955930

Latest 6 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer48270682017-12-31 1:03:303001 days ago1514682210
0xEC41CDb6...59d1b2bDF
0.5 ETH
Transfer48270652017-12-31 1:03:123001 days ago1514682192
0xEC41CDb6...59d1b2bDF
0.2 ETH
Transfer48270572017-12-31 1:01:053001 days ago1514682065
0xEC41CDb6...59d1b2bDF
0.25054657 ETH
Transfer48270492017-12-31 0:59:413001 days ago1514681981
0xEC41CDb6...59d1b2bDF
0.04253916 ETH
Transfer48270392017-12-31 0:57:593001 days ago1514681879
0xEC41CDb6...59d1b2bDF
1 ETH
Transfer48270282017-12-31 0:55:093001 days ago1514681709
0xEC41CDb6...59d1b2bDF
1 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DutchAuction

Compiler Version
v0.4.19-nightly.2017.11.11+commit.284c3839

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-12-05
*/

pragma solidity ^0.4.17;

 /*
 * Contract that is working with ERC223 tokens
 * https://github.com/ethereum/EIPs/issues/223
 */

/// @title ERC223ReceivingContract - Standard contract implementation for compatibility with ERC223 tokens.
contract ERC223ReceivingContract {

    /// @dev Function that is called when a user or another contract wants to transfer funds.
    /// @param _from Transaction initiator, analogue of msg.sender
    /// @param _value Number of tokens to transfer.
    /// @param _data Data containig a function signature and/or parameters
    function tokenFallback(address _from, uint256 _value, bytes _data) public;
}

/// @title Base Token contract - Functions to be implemented by token contracts.
contract Token {
    /*
     * Implements ERC 20 standard.
     * https://github.com/ethereum/EIPs/blob/f90864a3d2b2b45c4decf95efd26b3f0c276051a/EIPS/eip-20-token-standard.md
     * https://github.com/ethereum/EIPs/issues/20
     *
     *  Added support for the ERC 223 "tokenFallback" method in a "transfer" function with a payload.
     *  https://github.com/ethereum/EIPs/issues/223
     */

    /*
     * This is a slight change to the ERC20 base standard.
     * function totalSupply() constant returns (uint256 supply);
     * is replaced with:
     * uint256 public totalSupply;
     * This automatically creates a getter function for the totalSupply.
     * This is moved to the base contract since public getter functions are not
     * currently recognised as an implementation of the matching abstract
     * function by the compiler.
     */
    uint256 public totalSupply;

    /*
     * ERC 20
     */
    function balanceOf(address _owner) public constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);

    /*
     * ERC 223
     */
    function transfer(address _to, uint256 _value, bytes _data) public returns (bool success);

    /*
     * Events
     */
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

    // There is no ERC223 compatible Transfer event, with `_data` included.
}

/// @title Standard token contract - Standard token implementation.
contract StandardToken is Token {

    /*
     * Data structures
     */
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;

    /*
     * Public functions
     */
    /// @notice Send `_value` tokens to `_to` from `msg.sender`.
    /// @dev Transfers sender's tokens to a given address. Returns success.
    /// @param _to Address of token receiver.
    /// @param _value Number of tokens to transfer.
    /// @return Returns success of function call.
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != 0x0);
        require(_to != address(this));
        require(balances[msg.sender] >= _value);
        require(balances[_to] + _value >= balances[_to]);

        balances[msg.sender] -= _value;
        balances[_to] += _value;

        Transfer(msg.sender, _to, _value);

        return true;
    }

    /// @notice Send `_value` tokens to `_to` from `msg.sender` and trigger
    /// tokenFallback if sender is a contract.
    /// @dev Function that is called when a user or another contract wants to transfer funds.
    /// @param _to Address of token receiver.
    /// @param _value Number of tokens to transfer.
    /// @param _data Data to be sent to tokenFallback
    /// @return Returns success of function call.
    function transfer(
        address _to,
        uint256 _value,
        bytes _data)
        public
        returns (bool)
    {
        require(transfer(_to, _value));

        uint codeLength;

        assembly {
            // Retrieve the size of the code on target address, this needs assembly.
            codeLength := extcodesize(_to)
        }

        if (codeLength > 0) {
            ERC223ReceivingContract receiver = ERC223ReceivingContract(_to);
            receiver.tokenFallback(msg.sender, _value, _data);
        }

        return true;
    }

    /// @notice Transfer `_value` tokens from `_from` to `_to` if `msg.sender` is allowed.
    /// @dev Allows for an approved third party to transfer tokens from one
    /// address to another. Returns success.
    /// @param _from Address from where tokens are withdrawn.
    /// @param _to Address to where tokens are sent.
    /// @param _value Number of tokens to transfer.
    /// @return Returns success of function call.
    function transferFrom(address _from, address _to, uint256 _value)
        public
        returns (bool)
    {
        require(_from != 0x0);
        require(_to != 0x0);
        require(_to != address(this));
        require(balances[_from] >= _value);
        require(allowed[_from][msg.sender] >= _value);
        require(balances[_to] + _value >= balances[_to]);

        balances[_to] += _value;
        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;

        Transfer(_from, _to, _value);

        return true;
    }

    /// @notice Allows `_spender` to transfer `_value` tokens from `msg.sender` to any address.
    /// @dev Sets approved amount of tokens for spender. Returns success.
    /// @param _spender Address of allowed account.
    /// @param _value Number of approved tokens.
    /// @return Returns success of function call.
    function approve(address _spender, uint256 _value) public returns (bool) {
        require(_spender != 0x0);

        // 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;
    }

    /*
     * Read functions
     */
    /// @dev Returns number of allowed tokens that a spender can transfer on
    /// behalf of a token owner.
    /// @param _owner Address of token owner.
    /// @param _spender Address of token spender.
    /// @return Returns remaining allowance for spender.
    function allowance(address _owner, address _spender)
        constant
        public
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }

    /// @dev Returns number of tokens owned by the given address.
    /// @param _owner Address of token owner.
    /// @return Returns balance of owner.
    function balanceOf(address _owner) constant public returns (uint256) {
        return balances[_owner];
    }
}

/// @title xChainge Token
contract xChaingeToken is StandardToken {

    /*
     *  Terminology:
     *  1 token unit = Xei
     *  1 token = XCH = Xei * multiplier
     *  multiplier set from token's number of decimals (i.e. 10 ** decimals)
     */

    /*
     *  Token metadata
     */
    string constant public name = "xChainge Token";
    string constant public symbol = "XCH";
    uint8 constant public decimals = 18;
    uint constant multiplier = 10 ** uint(decimals);

    event Deployed(uint indexed _totalSupply);
    event Burnt(address indexed _receiver, uint indexed _num, uint indexed _totalSupply);

    /*
     *  Public functions
     */
    /// @dev Contract constructor function sets dutch auction contract address
    /// and assigns all tokens to dutch auction.
    /// @param auctionAddress Address of dutch auction contract.
    /// @param walletAddress Address of wallet.
    function xChaingeToken(address auctionAddress, address walletAddress) public
    {
        // Auction address should not be null.
        require(auctionAddress != 0x0);
        require(walletAddress != 0x0);

        // Total supply of Xei at deployment
        totalSupply = 23529412000000000000000000;

        balances[auctionAddress] = 20000000000000000000000000;
        balances[walletAddress] = 3529412000000000000000000;

        Transfer(0x0, auctionAddress, balances[auctionAddress]);
        Transfer(0x0, walletAddress, balances[walletAddress]);

        Deployed(totalSupply);

        assert(totalSupply == balances[auctionAddress] + balances[walletAddress]);
    }

    /// @notice Allows `msg.sender` to simply destroy `num` token units (Xei). This means the total
    /// token supply will decrease.
    /// @dev Allows to destroy token units (Xei).
    /// @param num Number of token units (Xei) to burn.
    function burn(uint num) public {
        require(num > 0);
        require(balances[msg.sender] >= num);
        require(totalSupply >= num);

        uint preBalance = balances[msg.sender];

        balances[msg.sender] -= num;
        totalSupply -= num;
        Burnt(msg.sender, num, totalSupply);
        Transfer(msg.sender, 0x0, num);

        assert(balances[msg.sender] == preBalance - num);
    }
}

/// @title Dutch auction contract - distribution of a fixed number of tokens using an auction.
/// The contract code is inspired by the Gnosis and Raiden auction contract. 
/// Auction ends if a fixed number of tokens was sold.
contract DutchAuction {
    /*
     * Auction for the XCH Token.
     *
     * Terminology:
     * 1 token unit = Xei
     * 1 token = XCH = Xei * multiplier
     * multiplier set from token's number of decimals (i.e. 10 ** decimals)
     */

    // Wait 10 days after the end of the auction, before anyone can claim tokens
    uint constant public tokenClaimWaitingPeriod = 10 days;

    /*
     * Storage
     */

    xChaingeToken public token;
    address public ownerAddress;
    address public walletAddress;

    // Price decay function parameters to be changed depending on the desired outcome

    // Starting price in WEI;
    uint constant public priceStart = 50000000000000000;    
    uint constant public minPrice = 5000000000000000;
    uint constant public softCap = 10000000000000000000000;

    // For calculating elapsed time for price
    uint public startTime;
    uint public endTime;
    uint public startBlock;

    // Keep track of all ETH received in the bids
    uint public receivedWei;

    // Keep track of cumulative ETH funds for which the tokens have been claimed
    uint public fundsClaimed;

    uint public tokenMultiplier;

    // Total number of Xei (XCH * multiplier) that will be auctioned
    uint public numTokensAuctioned;

    // Wei per XCH (Xei * multiplier)
    uint public finalPrice;

    // Bidder address => bid value
    mapping (address => uint) public bids;

    Stages public stage;

    /*
     * Enums
     */
    enum Stages {
        AuctionDeployed,
        AuctionSetUp,
        AuctionStarted,
        AuctionEnded,
        AuctionCanceled,
        TokensDistributed
    }

    /*
     * Modifiers
     */
    modifier atStage(Stages _stage) {
        require(stage == _stage);
        _;
    }

    modifier isOwner() {
        require(msg.sender == ownerAddress);
        _;
    }

    /*
     * Events
     */

    event Deployed();
    event Setup();
    event AuctionStarted(uint indexed _startTime, uint indexed _blockNumber);
    event BidSubmission(address indexed _sender, uint _amount, uint _missingFunds);
    event ClaimedTokens(address indexed _recipient, uint _sentAmount);
    event AuctionEnded(uint _finalPrice);
    event TokensDistributed();
    event AuctionCanceled();

    /*
     * Public functions
     */

    /// @dev Contract constructor function sets the starting price, divisor constant and
    /// divisor exponent for calculating the Dutch Auction price.
    /// @param _walletAddress Wallet address
    function DutchAuction(address _walletAddress) public
    {
        require(_walletAddress != 0x0);
        walletAddress = _walletAddress;

        ownerAddress = msg.sender;
        stage = Stages.AuctionDeployed;
        Deployed();
    }

    /// @dev Fallback function for the contract, which calls bid() if the auction has started.
    function () public payable atStage(Stages.AuctionStarted) {
        bid();
    }

    /// @notice Set `_tokenAddress` as the token address to be used in the auction.
    /// @dev Setup function sets external contracts addresses.
    /// @param _tokenAddress Token address.
    function setup(address _tokenAddress) public isOwner atStage(Stages.AuctionDeployed) {
        require(_tokenAddress != 0x0);
        token = xChaingeToken(_tokenAddress);

        // Get number of Xei (XCH * multiplier) to be auctioned from token auction balance
        numTokensAuctioned = token.balanceOf(address(this));

        // Set the number of the token multiplier for its decimals
        tokenMultiplier = 10 ** uint(token.decimals());

        stage = Stages.AuctionSetUp;
        Setup();
    }

    /// @notice Start the auction.
    /// @dev Starts auction and sets startTime.
    function startAuction() public isOwner atStage(Stages.AuctionSetUp) {
        stage = Stages.AuctionStarted;
        startTime = now;
        startBlock = block.number;
        AuctionStarted(startTime, startBlock);
    }

    /// @notice Finalize the auction - sets the final XCH token price and changes the auction
    /// stage after no bids are allowed anymore.
    /// @dev Finalize auction and set the final XCH token price.
    function finalizeAuction() public atStage(Stages.AuctionStarted)
    {
        require(price() == minPrice);

        endTime = now;

        if (receivedWei < softCap)
        {
            token.transfer(walletAddress, numTokensAuctioned);
            stage = Stages.AuctionCanceled;
            AuctionCanceled();
            return;
        }

        // Send ETH to wallet
        walletAddress.transfer(receivedWei);

        uint missingFunds = missingFundsToEndAuction();
        if (missingFunds > 0){
            uint soldTokens = tokenMultiplier * receivedWei / price();
            uint burnTokens = numTokensAuctioned - soldTokens;
            token.burn(burnTokens);
            numTokensAuctioned -= burnTokens;
        }

        // Calculate the final price = WEI / XCH = WEI / (Xei / multiplier)
        // Reminder: numTokensAuctioned is the number of Xei (XCH * multiplier) that are auctioned
        finalPrice = tokenMultiplier * receivedWei / numTokensAuctioned;

        stage = Stages.AuctionEnded;
        AuctionEnded(finalPrice);

        assert(finalPrice > 0);
    }

    /// @notice Canceled the auction
    function CancelAuction() public isOwner atStage(Stages.AuctionStarted)
    {
        token.transfer(walletAddress, numTokensAuctioned);
        stage = Stages.AuctionCanceled;
        AuctionCanceled();
    }

    /// --------------------------------- Auction Functions ------------------


    /// @notice Send `msg.value` WEI to the auction from the `msg.sender` account.
    /// @dev Allows to send a bid to the auction.
    function bid() public payable atStage(Stages.AuctionStarted)
    {
        require(msg.value > 0);
        assert(bids[msg.sender] + msg.value >= msg.value);

        // Missing funds without the current bid value
        uint missingFunds = missingFundsToEndAuction();

        // We require bid values to be less than the funds missing to end the auction
        // at the current price.
        require(msg.value <= missingFunds);

        bids[msg.sender] += msg.value;
        receivedWei += msg.value;

        BidSubmission(msg.sender, msg.value, missingFunds);

        assert(receivedWei >= msg.value);
    }

    /// @notice Claim auction tokens for `msg.sender` after the auction has ended.
    /// @dev Claims tokens for `msg.sender` after auction. To be used if tokens can
    /// be claimed by beneficiaries, individually.
    function claimTokens() public atStage(Stages.AuctionEnded) returns (bool) {
        return proxyClaimTokens(msg.sender);
    }

    /// @notice Claim auction tokens for `receiverAddress` after the auction has ended.
    /// @dev Claims tokens for `receiverAddress` after auction has ended.
    /// @param receiverAddress Tokens will be assigned to this address if eligible.
    function proxyClaimTokens(address receiverAddress) public atStage(Stages.AuctionEnded) returns (bool)
    {
        // Waiting period after the end of the auction, before anyone can claim tokens
        // Ensures enough time to check if auction was finalized correctly
        // before users start transacting tokens
        require(now > endTime + tokenClaimWaitingPeriod);
        require(receiverAddress != 0x0);

        if (bids[receiverAddress] == 0) {
            return false;
        }

        // Number of Xei = bid wei / Xei = bid wei / (wei per XCH * multiplier)
        uint num = (tokenMultiplier * bids[receiverAddress]) / finalPrice;

        // Due to finalPrice floor rounding, the number of assigned tokens may be higher
        // than expected. Therefore, the number of remaining unassigned auction tokens
        // may be smaller than the number of tokens needed for the last claimTokens call
        uint auctionTokensBalance = token.balanceOf(address(this));
        if (num > auctionTokensBalance) {
            num = auctionTokensBalance;
        }

        // Update the total amount of funds for which tokens have been claimed
        fundsClaimed += bids[receiverAddress];

        // Set receiver bid to 0 before assigning tokens
        bids[receiverAddress] = 0;

        require(token.transfer(receiverAddress, num));

        ClaimedTokens(receiverAddress, num);

        // After the last tokens are claimed, we change the auction stage
        // Due to the above logic, rounding errors will not be an issue
        if (fundsClaimed == receivedWei) {
            stage = Stages.TokensDistributed;
            TokensDistributed();
        }

        assert(token.balanceOf(receiverAddress) >= num);
        assert(bids[receiverAddress] == 0);
        return true;
    }

    /// @notice Withdraw ETH for `msg.sender` after the auction has canceled.
    function withdraw() public atStage(Stages.AuctionCanceled) returns (bool) {
        return proxyWithdraw(msg.sender);
    }

    /// @notice Withdraw ETH for `receiverAddress` after the auction has canceled.
    /// @param receiverAddress ETH will be assigned to this address if eligible.
    function proxyWithdraw(address receiverAddress) public atStage(Stages.AuctionCanceled) returns (bool) {
        require(receiverAddress != 0x0);
        
        if (bids[receiverAddress] == 0) {
            return false;
        }

        uint amount = bids[receiverAddress];
        bids[receiverAddress] = 0;
        
        receiverAddress.transfer(amount);

        assert(bids[receiverAddress] == 0);
        return true;
    }

    /// @notice Get the XCH price in WEI during the auction, at the time of
    /// calling this function. Returns `0` if auction has ended.
    /// Returns `priceStart` before auction has started.
    /// @dev Calculates the current XCH token price in WEI.
    /// @return Returns WEI per XCH (Xei * multiplier).
    function price() public constant returns (uint) {
        if (stage == Stages.AuctionEnded ||
            stage == Stages.AuctionCanceled ||
            stage == Stages.TokensDistributed) {
            return 0;
        }
        return calcTokenPrice();
    }

    /// @notice Get the missing funds needed to end the auction,
    /// calculated at the current XCH price in WEI.
    /// @dev The missing funds amount necessary to end the auction at the current XCH price in WEI.
    /// @return Returns the missing funds amount in WEI.
    function missingFundsToEndAuction() constant public returns (uint) {

        // numTokensAuctioned = total number of Xei (XCH * multiplier) that is auctioned
        uint requiredWeiAtPrice = numTokensAuctioned * price() / tokenMultiplier;
        if (requiredWeiAtPrice <= receivedWei) {
            return 0;
        }

        // assert(requiredWeiAtPrice - receivedWei > 0);
        return requiredWeiAtPrice - receivedWei;
    }

    /*
     *  Private functions
     */

    /// @dev Calculates the token price (WEI / XCH) at the current timestamp
    /// during the auction; elapsed time = 0 before auction starts.
    /// Based on the provided parameters, the price does not change in the first
    /// `priceConstant^(1/priceExponent)` seconds due to rounding.
    /// Rounding in `decayRate` also produces values that increase instead of decrease
    /// in the beginning; these spikes decrease over time and are noticeable
    /// only in first hours. This should be calculated before usage.
    /// @return Returns the token price - Wei per XCH.
    function calcTokenPrice() constant private returns (uint) {
        uint elapsed;
        if (stage == Stages.AuctionStarted) {
            elapsed = now - startTime;
        }

        uint decayRate = elapsed ** 3 / 541000000000;
        uint currentPrice = priceStart * (1 + elapsed) / (1 + elapsed + decayRate);
        return minPrice > currentPrice ? minPrice : currentPrice;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"receivedWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceStart","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"bid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundsClaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiverAddress","type":"address"}],"name":"proxyWithdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bids","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"walletAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"softCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiverAddress","type":"address"}],"name":"proxyClaimTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numTokensAuctioned","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"missingFundsToEndAuction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenClaimWaitingPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"CancelAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finalizeAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_walletAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Deployed","type":"event"},{"anonymous":false,"inputs":[],"name":"Setup","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_startTime","type":"uint256"},{"indexed":true,"name":"_blockNumber","type":"uint256"}],"name":"AuctionStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_sender","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_missingFunds","type":"uint256"}],"name":"BidSubmission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_recipient","type":"address"},{"indexed":false,"name":"_sentAmount","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_finalPrice","type":"uint256"}],"name":"AuctionEnded","type":"event"},{"anonymous":false,"inputs":[],"name":"TokensDistributed","type":"event"},{"anonymous":false,"inputs":[],"name":"AuctionCanceled","type":"event"}]

6060604052341561000f57600080fd5b60405160208061112783398101604052808051915050600160a060020a038116151561003a57600080fd5b60028054600160a060020a03838116600160a060020a031992831617909255600180543390931692909116919091179055600c805460ff191690557f3fad920548ed9f22deb8333b4cc1e4f9bc36666a1c2aa30ad59a0a3bb9dcbb9260405160405180910390a150611076806100b16000396000f3006060604052600436106101505763ffffffff60e060020a60003504166310e22d418114610179578063173067a31461019e5780631998aeef146101b15780633197cbb6146101bb5780633ccfd60b146101ce57806348c54b9d146101f557806348cd4cb1146102085780635c6a02461461021b57806360528e7b1461022e57806362ea82db1461024d57806366d382031461026c5780636ad5b3ea1461028b5780636b64c769146102ba57806378e97925146102cd5780638f84aa09146102e0578063906a26e0146102f3578063a035b1fe14610306578063a6b513ee14610319578063aeaaaa081461032c578063ba3f5a121461034b578063ba5595d31461035e578063c040e6b814610371578063c5cd88db146103a8578063d871e94b146103bb578063e45be8eb146103ce578063f510ccd3146103e1578063f77282ab146103f4578063fc0c546a14610407575b600280600c5460ff16600581111561016457fe5b1461016e57600080fd5b61017661041a565b50005b341561018457600080fd5b61018c6104f9565b60405190815260200160405180910390f35b34156101a957600080fd5b61018c6104ff565b6101b961041a565b005b34156101c657600080fd5b61018c61050a565b34156101d957600080fd5b6101e1610510565b604051901515815260200160405180910390f35b341561020057600080fd5b6101e1610540565b341561021357600080fd5b61018c610569565b341561022657600080fd5b61018c61056f565b341561023957600080fd5b6101e1600160a060020a0360043516610575565b341561025857600080fd5b61018c600160a060020a0360043516610647565b341561027757600080fd5b6101b9600160a060020a0360043516610659565b341561029657600080fd5b61029e6107e9565b604051600160a060020a03909116815260200160405180910390f35b34156102c557600080fd5b6101b96107f8565b34156102d857600080fd5b61018c61087a565b34156102eb57600080fd5b61029e610880565b34156102fe57600080fd5b61018c61088f565b341561031157600080fd5b61018c61089d565b341561032457600080fd5b61018c610904565b341561033757600080fd5b6101e1600160a060020a036004351661090a565b341561035657600080fd5b61018c610c0b565b341561036957600080fd5b61018c610c11565b341561037c57600080fd5b610384610c17565b6040518082600581111561039457fe5b60ff16815260200191505060405180910390f35b34156103b357600080fd5b61018c610c20565b34156103c657600080fd5b61018c610c5c565b34156103d957600080fd5b61018c610c63565b34156103ec57600080fd5b6101b9610c6e565b34156103ff57600080fd5b6101b9610d68565b341561041257600080fd5b61029e610fc4565b6000600280600c5460ff16600581111561043057fe5b1461043a57600080fd5b6000341161044757600080fd5b600160a060020a0333166000908152600b602052604090205434908101101561046c57fe5b610474610c20565b9150348290111561048457600080fd5b600160a060020a0333166000818152600b60205260409081902080543490810190915560068054820190557fc9c6176cbf7c0a8c29655fe8ccbe5e28382ca11459d145223308723bfc6975459185905191825260208201526040908101905180910390a2600654349010156104f557fe5b5050565b60065481565b66b1a2bc2ec5000081565b60045481565b6000600480600c5460ff16600581111561052657fe5b1461053057600080fd5b61053933610575565b91505b5090565b6000600380600c5460ff16600581111561055657fe5b1461056057600080fd5b6105393361090a565b60055481565b60075481565b600080600480600c5460ff16600581111561058c57fe5b1461059657600080fd5b600160a060020a03841615156105ab57600080fd5b600160a060020a0384166000908152600b602052604090205415156105d35760009250610640565b600160a060020a0384166000818152600b6020526040808220805492905590935083156108fc0290849051600060405180830381858888f19350505050151561061b57600080fd5b600160a060020a0384166000908152600b60205260409020541561063b57fe5b600192505b5050919050565b600b6020526000908152604090205481565b60015433600160a060020a0390811691161461067457600080fd5b600080600c5460ff16600581111561068857fe5b1461069257600080fd5b600160a060020a03821615156106a757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038481169190911780835516906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561072357600080fd5b6102c65a03f1151561073457600080fd5b50505060405180516009555060008054600160a060020a03169063313ce56790604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561078957600080fd5b6102c65a03f1151561079a57600080fd5b505050604051805160ff16600a0a60085550600c805460ff191660011790557f587930504fa5b1062f394d90f9dac9ecadd354ed23a97af9ea4e44dff4870a8460405160405180910390a15050565b600254600160a060020a031681565b60015433600160a060020a0390811691161461081357600080fd5b600180600c5460ff16600581111561082757fe5b1461083157600080fd5b600c805460ff19166002179055426003819055436005819055907ff8910119ddbef5440c54532457dfe8250a10ed39e583292818f44724b9e1344c60405160405180910390a350565b60035481565b600154600160a060020a031681565b69021e19e0c9bab240000081565b60006003600c5460ff1660058111156108b257fe5b14806108ce57506004600c5460ff1660058111156108cc57fe5b145b806108e957506005600c5460ff1660058111156108e757fe5b145b156108f657506000610901565b6108fe610fd3565b90505b90565b600a5481565b60008080600380600c5460ff16600581111561092257fe5b1461092c57600080fd5b600454620d2f0001421161093f57600080fd5b600160a060020a038516151561095457600080fd5b600160a060020a0385166000908152600b6020526040902054151561097c5760009350610c03565b600a54600160a060020a0386166000908152600b6020526040902054600854028115156109a557fe5b60008054929091049450600160a060020a03909116906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0857600080fd5b6102c65a03f11515610a1957600080fd5b505050604051805192505081831115610a30578192505b600160a060020a038086166000908152600b6020526040808220805460078054909101905582905581549092169163a9059cbb918891879190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ab157600080fd5b6102c65a03f11515610ac257600080fd5b505050604051805190501515610ad757600080fd5b84600160a060020a03167fe9aa550fd75d0d28e07fa9dd67d3ae705678776f6c4a75abd09534f93e7d79078460405190815260200160405180910390a26006546007541415610b5a57600c805460ff191660051790557fcea85459abe456c560868e61c476933dcee35a72aba5f546e93715929a69618660405160405180910390a15b600080548491600160a060020a03909116906370a082319088906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bb957600080fd5b6102c65a03f11515610bca57600080fd5b5050506040518051905010151515610bde57fe5b600160a060020a0385166000908152600b602052604090205415610bfe57fe5b600193505b505050919050565b60085481565b60095481565b600c5460ff1681565b600080600854610c2e61089d565b60095402811515610c3b57fe5b04905060065481111515610c52576000915061053c565b6006549003919050565b620d2f0081565b6611c37937e0800081565b60015433600160a060020a03908116911614610c8957600080fd5b600280600c5460ff166005811115610c9d57fe5b14610ca757600080fd5b60008054600254600954600160a060020a039283169363a9059cbb93909216916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d1157600080fd5b6102c65a03f11515610d2257600080fd5b50505060405180515050600c805460ff191660041790557f3edab9d02702b82c68bc3a966d302af41abe4f3d8e2408b27b94e5f9bf2d722c60405160405180910390a150565b60008080600280600c5460ff166005811115610d8057fe5b14610d8a57600080fd5b6611c37937e08000610d9a61089d565b14610da457600080fd5b4260045560065469021e19e0c9bab2400000901015610e805760008054600254600954600160a060020a039283169363a9059cbb93909216916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e2757600080fd5b6102c65a03f11515610e3857600080fd5b50505060405180515050600c805460ff191660041790557f3edab9d02702b82c68bc3a966d302af41abe4f3d8e2408b27b94e5f9bf2d722c60405160405180910390a1610fbe565b600254600654600160a060020a039091169080156108fc0290604051600060405180830381858888f193505050501515610eb957600080fd5b610ec1610c20565b93506000841115610f5857610ed461089d565b60065460085402811515610ee457fe5b6009546000549290910494508490039250600160a060020a03166342966c688360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610f3a57600080fd5b6102c65a03f11515610f4b57600080fd5b5050600980548490039055505b60095460065460085402811515610f6b57fe5b04600a819055600c805460ff191660031790557f45806e512b1f4f10e33e8b3cb64d1d11d998d8c554a95e0841fc1c701278bd5d9060405190815260200160405180910390a1600a5460009011610fbe57fe5b50505050565b600054600160a060020a031681565b60008080806002600c5460ff166005811115610feb57fe5b1415610ff957600354420392505b647df61ce2006003840a0491508183600101018360010166b1a2bc2ec500000281151561102257fe5b049050806611c37937e08000116110395780611042565b6611c37937e080005b9350505050905600a165627a7a72305820482f32eddff176297a48b8a3f41fd56ac0678f8d76b2c207231a7a5aa6f2dd16002900000000000000000000000099bab71019d224aafb18b41c1a6045e481a7a51d

Deployed Bytecode

0x6060604052600436106101505763ffffffff60e060020a60003504166310e22d418114610179578063173067a31461019e5780631998aeef146101b15780633197cbb6146101bb5780633ccfd60b146101ce57806348c54b9d146101f557806348cd4cb1146102085780635c6a02461461021b57806360528e7b1461022e57806362ea82db1461024d57806366d382031461026c5780636ad5b3ea1461028b5780636b64c769146102ba57806378e97925146102cd5780638f84aa09146102e0578063906a26e0146102f3578063a035b1fe14610306578063a6b513ee14610319578063aeaaaa081461032c578063ba3f5a121461034b578063ba5595d31461035e578063c040e6b814610371578063c5cd88db146103a8578063d871e94b146103bb578063e45be8eb146103ce578063f510ccd3146103e1578063f77282ab146103f4578063fc0c546a14610407575b600280600c5460ff16600581111561016457fe5b1461016e57600080fd5b61017661041a565b50005b341561018457600080fd5b61018c6104f9565b60405190815260200160405180910390f35b34156101a957600080fd5b61018c6104ff565b6101b961041a565b005b34156101c657600080fd5b61018c61050a565b34156101d957600080fd5b6101e1610510565b604051901515815260200160405180910390f35b341561020057600080fd5b6101e1610540565b341561021357600080fd5b61018c610569565b341561022657600080fd5b61018c61056f565b341561023957600080fd5b6101e1600160a060020a0360043516610575565b341561025857600080fd5b61018c600160a060020a0360043516610647565b341561027757600080fd5b6101b9600160a060020a0360043516610659565b341561029657600080fd5b61029e6107e9565b604051600160a060020a03909116815260200160405180910390f35b34156102c557600080fd5b6101b96107f8565b34156102d857600080fd5b61018c61087a565b34156102eb57600080fd5b61029e610880565b34156102fe57600080fd5b61018c61088f565b341561031157600080fd5b61018c61089d565b341561032457600080fd5b61018c610904565b341561033757600080fd5b6101e1600160a060020a036004351661090a565b341561035657600080fd5b61018c610c0b565b341561036957600080fd5b61018c610c11565b341561037c57600080fd5b610384610c17565b6040518082600581111561039457fe5b60ff16815260200191505060405180910390f35b34156103b357600080fd5b61018c610c20565b34156103c657600080fd5b61018c610c5c565b34156103d957600080fd5b61018c610c63565b34156103ec57600080fd5b6101b9610c6e565b34156103ff57600080fd5b6101b9610d68565b341561041257600080fd5b61029e610fc4565b6000600280600c5460ff16600581111561043057fe5b1461043a57600080fd5b6000341161044757600080fd5b600160a060020a0333166000908152600b602052604090205434908101101561046c57fe5b610474610c20565b9150348290111561048457600080fd5b600160a060020a0333166000818152600b60205260409081902080543490810190915560068054820190557fc9c6176cbf7c0a8c29655fe8ccbe5e28382ca11459d145223308723bfc6975459185905191825260208201526040908101905180910390a2600654349010156104f557fe5b5050565b60065481565b66b1a2bc2ec5000081565b60045481565b6000600480600c5460ff16600581111561052657fe5b1461053057600080fd5b61053933610575565b91505b5090565b6000600380600c5460ff16600581111561055657fe5b1461056057600080fd5b6105393361090a565b60055481565b60075481565b600080600480600c5460ff16600581111561058c57fe5b1461059657600080fd5b600160a060020a03841615156105ab57600080fd5b600160a060020a0384166000908152600b602052604090205415156105d35760009250610640565b600160a060020a0384166000818152600b6020526040808220805492905590935083156108fc0290849051600060405180830381858888f19350505050151561061b57600080fd5b600160a060020a0384166000908152600b60205260409020541561063b57fe5b600192505b5050919050565b600b6020526000908152604090205481565b60015433600160a060020a0390811691161461067457600080fd5b600080600c5460ff16600581111561068857fe5b1461069257600080fd5b600160a060020a03821615156106a757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038481169190911780835516906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561072357600080fd5b6102c65a03f1151561073457600080fd5b50505060405180516009555060008054600160a060020a03169063313ce56790604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561078957600080fd5b6102c65a03f1151561079a57600080fd5b505050604051805160ff16600a0a60085550600c805460ff191660011790557f587930504fa5b1062f394d90f9dac9ecadd354ed23a97af9ea4e44dff4870a8460405160405180910390a15050565b600254600160a060020a031681565b60015433600160a060020a0390811691161461081357600080fd5b600180600c5460ff16600581111561082757fe5b1461083157600080fd5b600c805460ff19166002179055426003819055436005819055907ff8910119ddbef5440c54532457dfe8250a10ed39e583292818f44724b9e1344c60405160405180910390a350565b60035481565b600154600160a060020a031681565b69021e19e0c9bab240000081565b60006003600c5460ff1660058111156108b257fe5b14806108ce57506004600c5460ff1660058111156108cc57fe5b145b806108e957506005600c5460ff1660058111156108e757fe5b145b156108f657506000610901565b6108fe610fd3565b90505b90565b600a5481565b60008080600380600c5460ff16600581111561092257fe5b1461092c57600080fd5b600454620d2f0001421161093f57600080fd5b600160a060020a038516151561095457600080fd5b600160a060020a0385166000908152600b6020526040902054151561097c5760009350610c03565b600a54600160a060020a0386166000908152600b6020526040902054600854028115156109a557fe5b60008054929091049450600160a060020a03909116906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610a0857600080fd5b6102c65a03f11515610a1957600080fd5b505050604051805192505081831115610a30578192505b600160a060020a038086166000908152600b6020526040808220805460078054909101905582905581549092169163a9059cbb918891879190516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ab157600080fd5b6102c65a03f11515610ac257600080fd5b505050604051805190501515610ad757600080fd5b84600160a060020a03167fe9aa550fd75d0d28e07fa9dd67d3ae705678776f6c4a75abd09534f93e7d79078460405190815260200160405180910390a26006546007541415610b5a57600c805460ff191660051790557fcea85459abe456c560868e61c476933dcee35a72aba5f546e93715929a69618660405160405180910390a15b600080548491600160a060020a03909116906370a082319088906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610bb957600080fd5b6102c65a03f11515610bca57600080fd5b5050506040518051905010151515610bde57fe5b600160a060020a0385166000908152600b602052604090205415610bfe57fe5b600193505b505050919050565b60085481565b60095481565b600c5460ff1681565b600080600854610c2e61089d565b60095402811515610c3b57fe5b04905060065481111515610c52576000915061053c565b6006549003919050565b620d2f0081565b6611c37937e0800081565b60015433600160a060020a03908116911614610c8957600080fd5b600280600c5460ff166005811115610c9d57fe5b14610ca757600080fd5b60008054600254600954600160a060020a039283169363a9059cbb93909216916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d1157600080fd5b6102c65a03f11515610d2257600080fd5b50505060405180515050600c805460ff191660041790557f3edab9d02702b82c68bc3a966d302af41abe4f3d8e2408b27b94e5f9bf2d722c60405160405180910390a150565b60008080600280600c5460ff166005811115610d8057fe5b14610d8a57600080fd5b6611c37937e08000610d9a61089d565b14610da457600080fd5b4260045560065469021e19e0c9bab2400000901015610e805760008054600254600954600160a060020a039283169363a9059cbb93909216916040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e2757600080fd5b6102c65a03f11515610e3857600080fd5b50505060405180515050600c805460ff191660041790557f3edab9d02702b82c68bc3a966d302af41abe4f3d8e2408b27b94e5f9bf2d722c60405160405180910390a1610fbe565b600254600654600160a060020a039091169080156108fc0290604051600060405180830381858888f193505050501515610eb957600080fd5b610ec1610c20565b93506000841115610f5857610ed461089d565b60065460085402811515610ee457fe5b6009546000549290910494508490039250600160a060020a03166342966c688360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515610f3a57600080fd5b6102c65a03f11515610f4b57600080fd5b5050600980548490039055505b60095460065460085402811515610f6b57fe5b04600a819055600c805460ff191660031790557f45806e512b1f4f10e33e8b3cb64d1d11d998d8c554a95e0841fc1c701278bd5d9060405190815260200160405180910390a1600a5460009011610fbe57fe5b50505050565b600054600160a060020a031681565b60008080806002600c5460ff166005811115610feb57fe5b1415610ff957600354420392505b647df61ce2006003840a0491508183600101018360010166b1a2bc2ec500000281151561102257fe5b049050806611c37937e08000116110395780611042565b6611c37937e080005b9350505050905600a165627a7a72305820482f32eddff176297a48b8a3f41fd56ac0678f8d76b2c207231a7a5aa6f2dd160029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000099bab71019d224AAFB18b41C1A6045e481a7a51D

-----Decoded View---------------
Arg [0] : _walletAddress (address): 0x99bab71019d224AAFB18b41C1A6045e481a7a51D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000099bab71019d224AAFB18b41C1A6045e481a7a51D


Swarm Source

bzzr://482f32eddff176297a48b8a3f41fd56ac0678f8d76b2c207231a7a5aa6f2dd16

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.