Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 21 from a total of 21 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 4915489 | 2985 days ago | IN | 0.015 ETH | 0.00044736 | ||||
| Proxy Withdraw | 4827068 | 3001 days ago | IN | 0 ETH | 0.00022141 | ||||
| Proxy Withdraw | 4827065 | 3001 days ago | IN | 0 ETH | 0.00022141 | ||||
| Proxy Withdraw | 4827057 | 3001 days ago | IN | 0 ETH | 0.00044282 | ||||
| Proxy Withdraw | 4827049 | 3001 days ago | IN | 0 ETH | 0.00022141 | ||||
| Proxy Withdraw | 4827039 | 3001 days ago | IN | 0 ETH | 0.00022141 | ||||
| Proxy Withdraw | 4827028 | 3001 days ago | IN | 0 ETH | 0.00022141 | ||||
| Cancel Auction | 4827005 | 3001 days ago | IN | 0 ETH | 0.00044935 | ||||
| Transfer | 4806910 | 3004 days ago | IN | 0.5 ETH | 0.00103962 | ||||
| Transfer | 4716984 | 3020 days ago | IN | 0.2 ETH | 0.0010916 | ||||
| Transfer | 4714382 | 3020 days ago | IN | 0.5 ETH | 0.00214489 | ||||
| Transfer | 4707371 | 3021 days ago | IN | 0.04 ETH | 0.00042 | ||||
| Transfer | 4682480 | 3026 days ago | IN | 0.25054657 ETH | 0.00155943 | ||||
| Transfer | 4681983 | 3026 days ago | IN | 0.02126257 ETH | 0.0007766 | ||||
| Transfer | 4681361 | 3026 days ago | IN | 0.02127659 ETH | 0.0010916 | ||||
| Transfer | 4680514 | 3026 days ago | IN | 1 ETH | 0.00051981 | ||||
| Transfer | 4679378 | 3026 days ago | IN | 0.5 ETH | 0.00221037 | ||||
| Start Auction | 4679358 | 3026 days ago | IN | 0 ETH | 0.00207207 | ||||
| Transfer | 4679336 | 3026 days ago | IN | 1 ETH | 0.00127818 | ||||
| Transfer | 4679242 | 3026 days ago | IN | 1.06139654 ETH | 0.000336 | ||||
| Setup | 4678754 | 3026 days ago | IN | 0 ETH | 0.00329559 |
Latest 6 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DutchAuction
Compiler Version
v0.4.19-nightly.2017.11.11+commit.284c3839
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.