Contract 0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b8

 

TxHash Block Age From To Value [TxFee]
0xcb4083befd6ef1963eeba086376dd4d65fbe08465d52837984607e3701e47d836152311219 days 10 hrs ago0x4af013afbadb22d8a88c92d68fc96b033b9ebb8a IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.00275004
0x7489b2f2a98dc9a45cc7145ee52379b86c5b6048ec7bd9b27278149a0375a1e16152160219 days 11 hrs ago0xa0ddc274302457c3369856a1db11f61aeee31396 IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.000641676
0x97cf87f78096f3b63135e8224e1879e6eaed9cffb225b249ffc95ee14dfa4d526152148219 days 11 hrs ago0x6efba8fb2ac5b6730729a972ec224426a287c3ad IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.000641676
0x70e6f23b9fb4980774b2c141564ec103c2a9c261cc152ee43636067607cb86876152135219 days 11 hrs ago0xa0ddc274302457c3369856a1db11f61aeee31396 IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.00042147
0x3e7fc0bcd2f4d27465b0e2864b22cca968a04d7855ac37ce7ae144e53a14a1b66151882219 days 12 hrs ago0x4af013afbadb22d8a88c92d68fc96b033b9ebb8a IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80.6 Ether0.000815724
0x633be365662b36702c37f6ce1bbca9ade861e525b5dde299e0d270264cec20d86151867219 days 12 hrs ago0x4af013afbadb22d8a88c92d68fc96b033b9ebb8a IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80.6 Ether0.00041451
0x6677f15e347e30c73d16adf6aceebe3dff0e223be278a9b13d7d5b3924b8f5ff6151862219 days 12 hrs ago0xa0ddc274302457c3369856a1db11f61aeee31396 IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b82.4 Ether0.00061057
0x797349f7913d82d299580113c4ac12958a36420e1d46fefd5046da2f3f4689826151855219 days 12 hrs ago0x4af013afbadb22d8a88c92d68fc96b033b9ebb8a IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b81 Ether0.0005800415
0x97f84a4ced32fa77e8a0ac43e1e3beedc0636f2f61f431e5ee93dbe93b480fa06151849219 days 12 hrs ago0xa0ddc274302457c3369856a1db11f61aeee31396 IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80.1 Ether0.00076057
0xf2a0e9143b003d5f28a313b0e254f6a32200bc0a4f38492267580c95e5f5b2ea6151363219 days 14 hrs ago0x6efba8fb2ac5b6730729a972ec224426a287c3ad IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.00094816
0xf2040c6046ebadbe76aa96a96c4c450cf6eaecddc0906aa6cefd33c9c500a3be6151229219 days 15 hrs ago0x6efba8fb2ac5b6730729a972ec224426a287c3ad IN  0x562b1cd868bc33966540f7e0c0cbfd2bf07ef9b80 Ether0.00088355
0x8fad035d9d54edede3737471a096980fa95693d3da33c7c5cbfa67744d3db0ea6151209219 days 15 hrs ago0x6efba8fb2ac5b6730729a972ec224426a287c3ad IN  Contract Creation0 Ether0.01025317
[ Download CSV Export 

Latest 7 internal transactions Internal Transactions as a result of Contract Execution

[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)

Contract Name:
DutchAuction

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes

Runs (Optimizer):
200

Contract Source Code

pragma solidity 0.4.24;

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * See https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address _who) public view returns (uint256);
  function transfer(address _to, uint256 _value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    // Gas optimization: this is cheaper than asserting 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    c = _a * _b;
    assert(c / _a == _b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // assert(_b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold
    return _a / _b;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    assert(_b <= _a);
    return _a - _b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256 c) {
    c = _a + _b;
    assert(c >= _a);
    return c;
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/BasicToken.sol

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) internal balances;

  uint256 internal totalSupply_;

  /**
  * @dev Total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev Transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_value <= balances[msg.sender]);
    require(_to != address(0));

    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return balances[_owner];
  }

}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

  function approve(address _spender, uint256 _value) public returns (bool);
  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );
}

// File: openzeppelin-solidity/contracts/token/ERC20/StandardToken.sol

/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://github.com/ethereum/EIPs/issues/20
 * 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)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipRenounced(address indexed previousOwner);
  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  constructor() public {
    owner = msg.sender;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
  function renounceOwnership() public onlyOwner {
    emit OwnershipRenounced(owner);
    owner = address(0);
  }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function transferOwnership(address _newOwner) public onlyOwner {
    _transferOwnership(_newOwner);
  }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
  function _transferOwnership(address _newOwner) internal {
    require(_newOwner != address(0));
    emit OwnershipTransferred(owner, _newOwner);
    owner = _newOwner;
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/MintableToken.sol

/**
 * @title Mintable token
 * @dev Simple ERC20 Token example, with mintable token creation
 * Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
 */
contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  modifier hasMintPermission() {
    require(msg.sender == owner);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(
    address _to,
    uint256 _amount
  )
    public
    hasMintPermission
    canMint
    returns (bool)
  {
    totalSupply_ = totalSupply_.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    emit Mint(_to, _amount);
    emit Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() public onlyOwner canMint returns (bool) {
    mintingFinished = true;
    emit MintFinished();
    return true;
  }
}

// File: openzeppelin-solidity/contracts/token/ERC20/BurnableToken.sol

/**
 * @title Burnable Token
 * @dev Token that can be irreversibly burned (destroyed).
 */
contract BurnableToken is BasicToken {

  event Burn(address indexed burner, uint256 value);

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public {
    _burn(msg.sender, _value);
  }

  function _burn(address _who, uint256 _value) internal {
    require(_value <= balances[_who]);
    // no need to require value <= totalSupply, since that would imply the
    // sender's balance is greater than the totalSupply, which *should* be an assertion failure

    balances[_who] = balances[_who].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Burn(_who, _value);
    emit Transfer(_who, address(0), _value);
  }
}

// File: contracts/robonomics/XRT.sol

contract XRT is MintableToken, BurnableToken {
    string public constant name     = "Robonomics Beta";
    string public constant symbol   = "XRT";
    uint   public constant decimals = 9;

    uint256 public constant INITIAL_SUPPLY = 1000 * (10 ** uint256(decimals));

    constructor() public {
        totalSupply_ = INITIAL_SUPPLY;
        balances[msg.sender] = INITIAL_SUPPLY;
        emit Transfer(0x0, msg.sender, INITIAL_SUPPLY);
    }
}

// File: contracts/robonomics/DutchAuction.sol

/// @title Dutch auction contract - distribution of XRT tokens using an auction.
/// @author Stefan George - <[email protected]>
/// @author Airalab - <[email protected]> 
contract DutchAuction {

    /*
     *  Events
     */
    event BidSubmission(address indexed sender, uint256 amount);

    /*
     *  Constants
     */
    uint constant public MAX_TOKENS_SOLD = 800 * 10**9; // 8M XRT = 10M - 1M (Foundation) - 1M (Early investors base)
    uint constant public WAITING_PERIOD = 30 minutes;

    /*
     *  Storage
     */
    XRT     public xrt;
    address public ambix;
    address public wallet;
    address public owner;
    uint public ceiling;
    uint public priceFactor;
    uint public startBlock;
    uint public endTime;
    uint public totalReceived;
    uint public finalPrice;
    mapping (address => uint) public bids;
    Stages public stage;

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

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

    modifier isOwner() {
        // Only owner is allowed to proceed
        require(msg.sender == owner);
        _;
    }

    modifier isWallet() {
        // Only wallet is allowed to proceed
        require(msg.sender == wallet);
        _;
    }

    modifier isValidPayload() {
        require(msg.data.length == 4 || msg.data.length == 36);
        _;
    }

    modifier timedTransitions() {
        if (stage == Stages.AuctionStarted && calcTokenPrice() <= calcStopPrice())
            finalizeAuction();
        if (stage == Stages.AuctionEnded && now > endTime + WAITING_PERIOD)
            stage = Stages.TradingStarted;
        _;
    }

    /*
     *  Public functions
     */
    /// @dev Contract constructor function sets owner.
    /// @param _wallet Multisig wallet.
    /// @param _ceiling Auction ceiling.
    /// @param _priceFactor Auction price factor.
    constructor(address _wallet, uint _ceiling, uint _priceFactor)
        public
    {
        require(_wallet != 0 && _ceiling != 0 && _priceFactor != 0);
        owner = msg.sender;
        wallet = _wallet;
        ceiling = _ceiling;
        priceFactor = _priceFactor;
        stage = Stages.AuctionDeployed;
    }

    /// @dev Setup function sets external contracts' addresses.
    /// @param _xrt Robonomics token address.
    /// @param _ambix Distillation cube address.
    function setup(address _xrt, address _ambix)
        public
        isOwner
        atStage(Stages.AuctionDeployed)
    {
        // Validate argument
        require(_xrt != 0 && _ambix != 0);
        xrt = XRT(_xrt);
        ambix = _ambix;

        // Validate token balance
        require(xrt.balanceOf(this) == MAX_TOKENS_SOLD);

        stage = Stages.AuctionSetUp;
    }

    /// @dev Starts auction and sets startBlock.
    function startAuction()
        public
        isWallet
        atStage(Stages.AuctionSetUp)
    {
        stage = Stages.AuctionStarted;
        startBlock = block.number;
    }

    /// @dev Changes auction ceiling and start price factor before auction is started.
    /// @param _ceiling Updated auction ceiling.
    /// @param _priceFactor Updated start price factor.
    function changeSettings(uint _ceiling, uint _priceFactor)
        public
        isWallet
        atStage(Stages.AuctionSetUp)
    {
        ceiling = _ceiling;
        priceFactor = _priceFactor;
    }

    /// @dev Calculates current token price.
    /// @return Returns token price.
    function calcCurrentTokenPrice()
        public
        timedTransitions
        returns (uint)
    {
        if (stage == Stages.AuctionEnded || stage == Stages.TradingStarted)
            return finalPrice;
        return calcTokenPrice();
    }

    /// @dev Returns correct stage, even if a function with timedTransitions modifier has not yet been called yet.
    /// @return Returns current auction stage.
    function updateStage()
        public
        timedTransitions
        returns (Stages)
    {
        return stage;
    }

    /// @dev Allows to send a bid to the auction.
    /// @param receiver Bid will be assigned to this address if set.
    function bid(address receiver)
        public
        payable
        isValidPayload
        timedTransitions
        atStage(Stages.AuctionStarted)
        returns (uint amount)
    {
        require(msg.value > 0);
        amount = msg.value;

        // If a bid is done on behalf of a user via ShapeShift, the receiver address is set.
        if (receiver == 0)
            receiver = msg.sender;

        // Prevent that more than 90% of tokens are sold. Only relevant if cap not reached.
        uint maxWei = MAX_TOKENS_SOLD * calcTokenPrice() / 10**9 - totalReceived;
        uint maxWeiBasedOnTotalReceived = ceiling - totalReceived;
        if (maxWeiBasedOnTotalReceived < maxWei)
            maxWei = maxWeiBasedOnTotalReceived;

        // Only invest maximum possible amount.
        if (amount > maxWei) {
            amount = maxWei;
            // Send change back to receiver address. In case of a ShapeShift bid the user receives the change back directly.
            receiver.transfer(msg.value - amount);
        }

        // Forward funding to ether wallet
        wallet.transfer(amount);

        bids[receiver] += amount;
        totalReceived += amount;
        BidSubmission(receiver, amount);

        // Finalize auction when maxWei reached
        if (amount == maxWei)
            finalizeAuction();
    }

    /// @dev Claims tokens for bidder after auction.
    /// @param receiver Tokens will be assigned to this address if set.
    function claimTokens(address receiver)
        public
        isValidPayload
        timedTransitions
        atStage(Stages.TradingStarted)
    {
        if (receiver == 0)
            receiver = msg.sender;
        uint tokenCount = bids[receiver] * 10**9 / finalPrice;
        bids[receiver] = 0;
        require(xrt.transfer(receiver, tokenCount));
    }

    /// @dev Calculates stop price.
    /// @return Returns stop price.
    function calcStopPrice()
        view
        public
        returns (uint)
    {
        return totalReceived * 10**9 / MAX_TOKENS_SOLD + 1;
    }

    /// @dev Calculates token price.
    /// @return Returns token price.
    function calcTokenPrice()
        view
        public
        returns (uint)
    {
        return priceFactor * 10**18 / (block.number - startBlock + 7500) + 1;
    }

    /*
     *  Private functions
     */
    function finalizeAuction()
        private
    {
        stage = Stages.AuctionEnded;
        finalPrice = totalReceived == ceiling ? calcTokenPrice() : calcStopPrice();
        uint soldTokens = totalReceived * 10**9 / finalPrice;

        if (totalReceived == ceiling) {
            // Auction contract transfers all unsold tokens to Ambix contract
            require(xrt.transfer(ambix, MAX_TOKENS_SOLD - soldTokens));
        } else {
            // Auction contract burn all unsold tokens
            xrt.burn(MAX_TOKENS_SOLD - soldTokens);
        }

        endTime = now;
    }
}

Contract ABI

[{"constant":true,"inputs":[],"name":"MAX_TOKENS_SOLD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_xrt","type":"address"},{"name":"_ambix","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"xrt","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_ceiling","type":"uint256"},{"name":"_priceFactor","type":"uint256"}],"name":"changeSettings","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"calcTokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ambix","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bids","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WAITING_PERIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ceiling","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"}],"name":"bid","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalReceived","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":true,"inputs":[],"name":"stage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"updateStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"calcCurrentTokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"calcStopPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceFactor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_wallet","type":"address"},{"name":"_ceiling","type":"uint256"},{"name":"_priceFactor","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"BidSubmission","type":"event"}]

Contract Creation Code

608060405234801561001057600080fd5b50604051606080610d99833981016040908152815160208301519190920151600160a060020a0383161580159061004657508115155b801561005157508015155b151561005c57600080fd5b6003805433600160a060020a03199182161790915560028054909116600160a060020a039490941693909317909255600455600555600b805460ff19169055610cef806100aa6000396000f3006080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317f5de9581146101375780632d34ba791461015e5780633197cbb614610187578063330f95881461019c57806336d02c94146101cd57806339f64b52146101e857806348cd4cb1146101fd578063521eb273146102125780635a5132be1461022757806362ea82db1461023c5780636b64c7691461025d5780636f85c7e414610272578063753ed1bd146102875780638da5cb5b1461029c5780639cf5453d146102b1578063a3c2c462146102c5578063a6b513ee146102da578063c040e6b8146102ef578063c062f57814610328578063d9f8a4e21461033d578063dd9dd68814610352578063df8de3e714610367578063dfb2866d14610388575b600080fd5b34801561014357600080fd5b5061014c61039d565b60408051918252519081900360200190f35b34801561016a57600080fd5b50610185600160a060020a03600435811690602435166103a6565b005b34801561019357600080fd5b5061014c6104ed565b3480156101a857600080fd5b506101b16104f3565b60408051600160a060020a039092168252519081900360200190f35b3480156101d957600080fd5b50610185600435602435610502565b3480156101f457600080fd5b5061014c610543565b34801561020957600080fd5b5061014c61056e565b34801561021e57600080fd5b506101b1610574565b34801561023357600080fd5b506101b1610583565b34801561024857600080fd5b5061014c600160a060020a0360043516610592565b34801561026957600080fd5b506101856105a4565b34801561027e57600080fd5b5061014c6105ed565b34801561029357600080fd5b5061014c6105f3565b3480156102a857600080fd5b506101b16105f9565b61014c600160a060020a0360043516610608565b3480156102d157600080fd5b5061014c61080a565b3480156102e657600080fd5b5061014c610810565b3480156102fb57600080fd5b50610304610816565b6040518082600481111561031457fe5b60ff16815260200191505060405180910390f35b34801561033457600080fd5b5061030461081f565b34801561034957600080fd5b5061014c61089e565b34801561035e57600080fd5b5061014c61095d565b34801561037357600080fd5b50610185600160a060020a0360043516610975565b34801561039457600080fd5b5061014c610b27565b64ba43b7400081565b600354600160a060020a031633146103bd57600080fd5b600080600b5460ff1660048111156103d157fe5b146103db57600080fd5b600160a060020a038316158015906103fb5750600160a060020a03821615155b151561040657600080fd5b60008054600160a060020a0380861673ffffffffffffffffffffffffffffffffffffffff199283161780845560018054878416941693909317909255604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905164ba43b740009493909216926370a08231926024808401936020939083900390910190829087803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b505050506040513d60208110156104cf57600080fd5b5051146104db57600080fd5b5050600b805460ff1916600117905550565b60075481565b600054600160a060020a031681565b600254600160a060020a0316331461051957600080fd5b600180600b5460ff16600481111561052d57fe5b1461053757600080fd5b50600491909155600555565b60006006544303611d4c01600554670de0b6b3a76400000281151561056457fe5b0460010190505b90565b60065481565b600254600160a060020a031681565b600154600160a060020a031681565b600a6020526000908152604090205481565b600254600160a060020a031633146105bb57600080fd5b600180600b5460ff1660048111156105cf57fe5b146105d957600080fd5b50600b805460ff1916600217905543600655565b61070881565b60045481565b600354600160a060020a031681565b60008080600436148061061b5750602436145b151561062657600080fd5b6002600b5460ff16600481111561063957fe5b148015610654575061064961095d565b610651610543565b11155b1561066157610661610b2d565b6003600b5460ff16600481111561067457fe5b14801561068657506107086007540142115b1561069957600b805460ff191660041790555b600280600b5460ff1660048111156106ad57fe5b146106b757600080fd5b600034116106c457600080fd5b349350600160a060020a03851615156106db573394505b600854633b9aca006106eb610543565b64ba43b74000028115156106fb57fe5b0403925060085460045403915082821015610714578192505b8284111561075c5782935084600160a060020a03166108fc8534039081150290604051600060405180830381858888f1935050505015801561075a573d6000803e3d6000fd5b505b600254604051600160a060020a039091169085156108fc029086906000818181858888f19350505050158015610796573d6000803e3d6000fd5b50600160a060020a0385166000818152600a60209081526040918290208054880190556008805488019055815187815291517f9c89e828e6cee6374b68147c9e753e41746aad98ba255a527a4fc0ac1868bff99281900390910190a28284141561080257610802610b2d565b505050919050565b60085481565b60095481565b600b5460ff1681565b60006002600b5460ff16600481111561083457fe5b14801561084f575061084461095d565b61084c610543565b11155b1561085c5761085c610b2d565b6003600b5460ff16600481111561086f57fe5b14801561088157506107086007540142115b1561089457600b805460ff191660041790555b50600b5460ff1690565b60006002600b5460ff1660048111156108b357fe5b1480156108ce57506108c361095d565b6108cb610543565b11155b156108db576108db610b2d565b6003600b5460ff1660048111156108ee57fe5b14801561090057506107086007540142115b1561091357600b805460ff191660041790555b6003600b5460ff16600481111561092657fe5b148061094257506004600b5460ff16600481111561094057fe5b145b15610950575060095461056b565b610958610543565b905090565b60085460009064ba43b7400090633b9aca0002610564565b600060043614806109865750602436145b151561099157600080fd5b6002600b5460ff1660048111156109a457fe5b1480156109bf57506109b461095d565b6109bc610543565b11155b156109cc576109cc610b2d565b6003600b5460ff1660048111156109df57fe5b1480156109f157506107086007540142115b15610a0457600b805460ff191660041790555b600480600b5460ff166004811115610a1857fe5b14610a2257600080fd5b600160a060020a0383161515610a36573392505b600954600160a060020a0384166000908152600a6020526040902054633b9aca0002811515610a6157fe5b600160a060020a038086166000818152600a60209081526040808320839055825481517fa9059cbb000000000000000000000000000000000000000000000000000000008152600481019590955296909504602484018190529451949750949092169363a9059cbb9360448084019492939192918390030190829087803b158015610aeb57600080fd5b505af1158015610aff573d6000803e3d6000fd5b505050506040513d6020811015610b1557600080fd5b50511515610b2257600080fd5b505050565b60055481565b600b805460ff1916600317905560045460085460009114610b5557610b5061095d565b610b5d565b610b5d610543565b6009819055600854633b9aca0002811515610b7457fe5b0490506004546008541415610c3b5760008054600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015264ba43b7400086900360248201529051919092169263a9059cbb92604480820193602093909283900390910190829087803b158015610bff57600080fd5b505af1158015610c13573d6000803e3d6000fd5b505050506040513d6020811015610c2957600080fd5b50511515610c3657600080fd5b610cbc565b60008054604080517f42966c6800000000000000000000000000000000000000000000000000000000815264ba43b7400085900360048201529051600160a060020a03909216926342966c689260248084019382900301818387803b158015610ca357600080fd5b505af1158015610cb7573d6000803e3d6000fd5b505050505b50426007555600a165627a7a7230582018f5b3976b2f3d707219a8e36e249f660e3d79a59f5ff40aa98a11f3ba93654400290000000000000000000000006efba8fb2ac5b6730729a972ec224426a287c3ad0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000258

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

0000000000000000000000006efba8fb2ac5b6730729a972ec224426a287c3ad0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000258

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006efba8fb2ac5b6730729a972ec224426a287c3ad
Arg [1] : 0000000000000000000000000000000000000000000000003782dace9d900000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000258

Swarm Source

bzzr://18f5b3976b2f3d707219a8e36e249f660e3d79a59f5ff40aa98a11f3ba936544
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.