ETH Price: $3,547.52 (-0.83%)
Gas: 19 Gwei

Contract

0x5A4Fc44325aa235B81aD60c60444F515fD418436
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Create Trade Con...29464752017-01-06 14:23:522638 days ago1483712632IN
0x5A4Fc443...5fD418436
0 ETH0.0145935220
Create Trade Con...29265252017-01-03 7:48:322642 days ago1483429712IN
0x5A4Fc443...5fD418436
0 ETH0.014588420
Create Trade Con...29265252017-01-03 7:48:322642 days ago1483429712IN
0x5A4Fc443...5fD418436
0 ETH0.014588420
Create Trade Con...29265182017-01-03 7:47:152642 days ago1483429635IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29265142017-01-03 7:46:502642 days ago1483429610IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29265142017-01-03 7:46:502642 days ago1483429610IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29265112017-01-03 7:46:062642 days ago1483429566IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29265082017-01-03 7:45:282642 days ago1483429528IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29265032017-01-03 7:44:492642 days ago1483429489IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29264872017-01-03 7:42:092642 days ago1483429329IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263972017-01-03 7:20:042642 days ago1483428004IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263932017-01-03 7:19:272642 days ago1483427967IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263782017-01-03 7:14:562642 days ago1483427696IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263762017-01-03 7:13:472642 days ago1483427627IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263762017-01-03 7:13:472642 days ago1483427627IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263682017-01-03 7:12:222642 days ago1483427542IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263612017-01-03 7:11:312642 days ago1483427491IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
Create Trade Con...29263242017-01-03 7:02:252642 days ago1483426945IN
0x5A4Fc443...5fD418436
0 ETH0.0145858420
0x6060604028353262016-12-19 5:40:012657 days ago1482126001IN
 Create: TokenTraderFactory
0 ETH0.0261760420

Latest 24 internal transactions

Advanced mode:
Parent Txn Hash Block From To Value
29464752017-01-06 14:23:522638 days ago1483712632
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265252017-01-03 7:48:322642 days ago1483429712
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265252017-01-03 7:48:322642 days ago1483429712
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265182017-01-03 7:47:152642 days ago1483429635
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265142017-01-03 7:46:502642 days ago1483429610
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265142017-01-03 7:46:502642 days ago1483429610
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265112017-01-03 7:46:062642 days ago1483429566
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265082017-01-03 7:45:282642 days ago1483429528
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29265032017-01-03 7:44:492642 days ago1483429489
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29264872017-01-03 7:42:092642 days ago1483429329
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263972017-01-03 7:20:042642 days ago1483428004
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263932017-01-03 7:19:272642 days ago1483427967
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263782017-01-03 7:14:562642 days ago1483427696
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263762017-01-03 7:13:472642 days ago1483427627
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263762017-01-03 7:13:472642 days ago1483427627
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263682017-01-03 7:12:222642 days ago1483427542
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263612017-01-03 7:11:312642 days ago1483427491
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29263242017-01-03 7:02:252642 days ago1483426945
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29262122017-01-03 6:33:282642 days ago1483425208
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29261992017-01-03 6:30:132642 days ago1483425013
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29261992017-01-03 6:30:132642 days ago1483425013
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29261992017-01-03 6:30:132642 days ago1483425013
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29261992017-01-03 6:30:132642 days ago1483425013
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
29261212017-01-03 6:13:492642 days ago1483424029
0x5A4Fc443...5fD418436
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenTraderFactory

Compiler Version
v0.4.6+commit.2dabbdf0

Optimization Enabled:
Yes with 200 runs

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

pragma solidity ^0.4.4;

// ------------------------------------------------------------------------
// TokenTraderFactory
//
// Decentralised trustless ERC20-compliant token to ETH exchange contract
// on the Ethereum blockchain.
//
// Note that this TokenTrader cannot be used with the Golem Network Token
// directly as the token does not implement the ERC20
// transferFrom(...), approve(...) and allowance(...) methods
//
// Enjoy. (c) JonnyLatte & BokkyPooBah 2016. The MIT licence.
// ------------------------------------------------------------------------

// https://github.com/ethereum/EIPs/issues/20
contract ERC20 {
    function totalSupply() constant returns (uint totalSupply);
    function balanceOf(address _owner) constant returns (uint balance);
    function transfer(address _to, uint _value) returns (bool success);
    function transferFrom(address _from, address _to, uint _value) returns (bool success);
    function approve(address _spender, uint _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

contract Owned {
    address public owner;
    event OwnershipTransferred(address indexed _from, address indexed _to);

    function Owned() {
        owner = msg.sender;
    }

    modifier onlyOwner {
        if (msg.sender != owner) throw;
        _;
    }

    function transferOwnership(address newOwner) onlyOwner {
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

// contract can buy or sell tokens for ETH
// prices are in amount of wei per batch of token units

contract TokenTrader is Owned {

    address public asset;       // address of token
    uint256 public buyPrice;    // contract buys lots of token at this price
    uint256 public sellPrice;   // contract sells lots at this price
    uint256 public units;       // lot size (token-wei)

    bool public buysTokens;     // is contract buying
    bool public sellsTokens;    // is contract selling

    event ActivatedEvent(bool buys, bool sells);
    event MakerDepositedEther(uint256 amount);
    event MakerWithdrewAsset(uint256 tokens);
    event MakerWithdrewERC20Token(address tokenAddress, uint256 tokens);
    event MakerWithdrewEther(uint256 ethers);
    event TakerBoughtAsset(address indexed buyer, uint256 ethersSent,
        uint256 ethersReturned, uint256 tokensBought);
    event TakerSoldAsset(address indexed seller, uint256 tokensToSell,
        uint256 tokensSold, uint256 ethers);

    // Constructor - only to be called by the TokenTraderFactory contract
    function TokenTrader (
        address _asset,
        uint256 _buyPrice,
        uint256 _sellPrice,
        uint256 _units,
        bool    _buysTokens,
        bool    _sellsTokens
    ) internal {
        asset       = _asset;
        buyPrice    = _buyPrice;
        sellPrice   = _sellPrice;
        units       = _units;
        buysTokens  = _buysTokens;
        sellsTokens = _sellsTokens;
        ActivatedEvent(buysTokens, sellsTokens);
    }

    // Maker can activate or deactivate this contract's buying and
    // selling status
    //
    // The ActivatedEvent() event is logged with the following
    // parameter:
    //   buysTokens   this contract can buy asset tokens
    //   sellsTokens  this contract can sell asset tokens
    //
    function activate (
        bool _buysTokens,
        bool _sellsTokens
    ) onlyOwner {
        buysTokens  = _buysTokens;
        sellsTokens = _sellsTokens;
        ActivatedEvent(buysTokens, sellsTokens);
    }

    // Maker can deposit ethers to this contract so this contract
    // can buy asset tokens.
    //
    // Maker deposits asset tokens to this contract by calling the
    // asset's transfer() method with the following parameters
    //   _to     is the address of THIS contract
    //   _value  is the number of asset tokens to be transferred
    //
    // Taker MUST NOT send tokens directly to this contract. Takers
    // MUST use the takerSellAsset() method to sell asset tokens
    // to this contract
    //
    // The MakerDepositedEther() event is logged with the following
    // parameter:
    //   ethers  is the number of ethers deposited by the maker
    //
    // This method was called deposit() in the old version
    //
    function makerDepositEther() payable onlyOwner {
        MakerDepositedEther(msg.value);
    }

    // Maker can withdraw asset tokens from this contract, with the
    // following parameter:
    //   tokens  is the number of asset tokens to be withdrawn
    //
    // The MakerWithdrewAsset() event is logged with the following
    // parameter:
    //   tokens  is the number of tokens withdrawn by the maker
    //
    // This method was called withdrawAsset() in the old version
    //
    function makerWithdrawAsset(uint256 tokens) onlyOwner returns (bool ok) {
        MakerWithdrewAsset(tokens);
        return ERC20(asset).transfer(owner, tokens);
    }

    // Maker can withdraw any ERC20 asset tokens from this contract
    //
    // This method is included in the case where this contract receives
    // the wrong tokens
    //
    // The MakerWithdrewERC20Token() event is logged with the following
    // parameter:
    //   tokenAddress  is the address of the tokens withdrawn by the maker
    //   tokens        is the number of tokens withdrawn by the maker
    //
    // This method was called withdrawToken() in the old version
    //
    function makerWithdrawERC20Token(
        address tokenAddress,
        uint256 tokens
    ) onlyOwner returns (bool ok) {
        MakerWithdrewERC20Token(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(owner, tokens);
    }

    // Maker can withdraw ethers from this contract
    //
    // The MakerWithdrewEther() event is logged with the following parameter
    //   ethers  is the number of ethers withdrawn by the maker
    //
    // This method was called withdraw() in the old version
    //
    function makerWithdrawEther(uint256 ethers) onlyOwner returns (bool ok) {
        if (this.balance >= ethers) {
            MakerWithdrewEther(ethers);
            return owner.send(ethers);
        }
    }

    // Taker buys asset tokens by sending ethers
    //
    // The TakerBoughtAsset() event is logged with the following parameters
    //   buyer           is the buyer's address
    //   ethersSent      is the number of ethers sent by the buyer
    //   ethersReturned  is the number of ethers sent back to the buyer as
    //                   change
    //   tokensBought    is the number of asset tokens sent to the buyer
    //
    // This method was called buy() in the old version
    //
    function takerBuyAsset() payable {
        if (sellsTokens || msg.sender == owner) {
            uint order    = msg.value / sellPrice;
            uint can_sell = ERC20(asset).balanceOf(address(this)) / units;
            uint256 change = 0;
            if (order > can_sell) {
                change = msg.value - (can_sell * sellPrice);
                order = can_sell;
                if (!msg.sender.send(change)) throw;
            }
            if (order > 0) {
                if(!ERC20(asset).transfer(msg.sender, order * units)) throw;
            }
            TakerBoughtAsset(msg.sender, msg.value, change, order * units);
        }
        // Return user funds if the contract is not selling
        else if (!msg.sender.send(msg.value)) throw;
    }

    // Taker sells asset tokens for ethers by:
    // 1. Calling the asset's approve() method with the following parameters
    //    _spender  is the address of this contract
    //    _value    is the number of tokens to be sold
    // 2. Calling this takerSellAsset() method with the following parameter
    //    tokens    is the number of asset tokens to be sold
    //
    // The TakerSoldAsset() event is logged with the following parameters
    //   seller        is the seller's address
    //   tokensToSell  is the number of asset tokens offered by the seller
    //   tokensSold    is the number of asset tokens sold
    //   ethers        is the number of ethers sent to the seller
    //
    // This method was called sell() in the old version
    //
    function takerSellAsset(uint256 tokens) {
        if (buysTokens || msg.sender == owner) {
            // Maximum number of token the contract can buy
            uint256 can_buy = this.balance / buyPrice;
            // Token lots available
            uint256 order = tokens / units;
            // Adjust order for funds available
            if (order > can_buy) order = can_buy;
            if (order > 0) {
                // Extract user tokens
                if(!ERC20(asset).transferFrom(msg.sender, address(this), order * units)) throw;
                // Pay user
                if(!msg.sender.send(order * buyPrice)) throw;
            }
            TakerSoldAsset(msg.sender, tokens, order * units, order * buyPrice);
        }
    }

    // Taker buys tokens by sending ethers
    function () payable {
        takerBuyAsset();
    }
}

// This contract deploys TokenTrader contracts and logs the event
contract TokenTraderFactory is Owned {

    event TradeListing(address ownerAddress, address tokenTraderAddress, address asset,
        uint256 buyPrice, uint256 sellPrice, uint256 units,
        bool buysTokens, bool sellsTokens);
    event OwnerWithdrewERC20Token(address tokenAddress, uint256 tokens);

    mapping(address => bool) _verify;

    // Anyone can call this method to verify the settings of a
    // TokenTrader contract. The parameters are:
    //   tradeContract  is the address of a TokenTrader contract
    //
    // Return values:
    //   valid        did this TokenTraderFactory create the TokenTrader contract?
    //   owner        is the owner of the TokenTrader contract
    //   asset        is the ERC20 asset address
    //   buyPrice     is the buy price in ethers per `units` of asset tokens
    //   sellPrice    is the sell price in ethers per `units` of asset tokens
    //   units        is the number of units of asset tokens
    //   buysTokens   is the TokenTrader contract buying tokens?
    //   sellsTokens  is the TokenTrader contract selling tokens?
    //
    function verify(address tradeContract) constant returns (
        bool    valid,
        address owner,
        address asset,
        uint256 buyPrice,
        uint256 sellPrice,
        uint256 units,
        bool    buysTokens,
        bool    sellsTokens
    ) {
        valid = _verify[tradeContract];
        if (valid) {
            TokenTrader t = TokenTrader(tradeContract);
            owner         = t.owner();
            asset         = t.asset();
            buyPrice      = t.buyPrice();
            sellPrice     = t.sellPrice();
            units         = t.units();
            buysTokens    = t.buysTokens();
            sellsTokens   = t.sellsTokens();
        }
    }

    // Maker can call this method to create a new TokenTrader contract
    // with the maker being the owner of this new contract
    //
    // Parameters:
    //   asset        is the ERC20 asset address
    //   buyPrice     is the buy price in ethers per `units` of asset tokens
    //   sellPrice    is the sell price in ethers per `units` of asset tokens
    //   units        is the number of units of asset tokens
    //   buysTokens   is the TokenTrader contract buying tokens?
    //   sellsTokens  is the TokenTrader contract selling tokens?
    //
    // For example, listing a TokenTrader contract on the REP Augur token where
    // the contract will buy REP tokens at a rate of 39000/100000 = 0.39 ETH
    // per REP token and sell REP tokens at a rate of 41000/100000 = 0.41 ETH
    // per REP token:
    //   asset        0x48c80f1f4d53d5951e5d5438b54cba84f29f32a5
    //   buyPrice     39000
    //   sellPrice    41000
    //   units        100000
    //   buysTokens   true
    //   sellsTokens  true
    //
    // The TradeListing() event is logged with the following parameters
    //   ownerAddress        is the Maker's address
    //   tokenTraderAddress  is the address of the newly created TokenTrader contract
    //   asset               is the ERC20 asset address
    //   buyPrice            is the buy price in ethers per `units` of asset tokens
    //   sellPrice           is the sell price in ethers per `units` of asset tokens
    //   unit                is the number of units of asset tokens
    //   buysTokens          is the TokenTrader contract buying tokens?
    //   sellsTokens         is the TokenTrader contract selling tokens?
    //
    function createTradeContract(
        address asset,
        uint256 buyPrice,
        uint256 sellPrice,
        uint256 units,
        bool    buysTokens,
        bool    sellsTokens
    ) returns (address trader) {
        // Cannot set negative price
        if (buyPrice < 0 || sellPrice < 0) throw;
        // Must make profit on spread
        if (buyPrice > sellPrice) throw;
        // Cannot buy or sell zero or negative units
        if (units <= 0) throw;
        trader = new TokenTrader(
            asset,
            buyPrice,
            sellPrice,
            units,
            buysTokens,
            sellsTokens);
        // Record that this factory created the trader
        _verify[trader] = true;
        // Set the owner to whoever called the function
        TokenTrader(trader).transferOwnership(msg.sender);
        TradeListing(msg.sender, trader, asset, buyPrice, sellPrice, units, buysTokens, sellsTokens);
    }

    // Factory owner can withdraw any ERC20 asset tokens from this contract
    //
    // This method is included in the case where this contract receives
    // the wrong tokens
    //
    // The OwnerWithdrewERC20Token() event is logged with the following
    // parameter:
    //   tokenAddress  is the address of the tokens withdrawn by the maker
    //   tokens        is the number of tokens withdrawn by the maker
    //
    function ownerWithdrawERC20Token(address tokenAddress, uint256 tokens) onlyOwner returns (bool ok) {
        OwnerWithdrewERC20Token(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(owner, tokens);
    }

    // Prevents accidental sending of ether to the factory
    function () {
        throw;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"asset","type":"address"},{"name":"buyPrice","type":"uint256"},{"name":"sellPrice","type":"uint256"},{"name":"units","type":"uint256"},{"name":"buysTokens","type":"bool"},{"name":"sellsTokens","type":"bool"}],"name":"createTradeContract","outputs":[{"name":"trader","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"ownerWithdrawERC20Token","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tradeContract","type":"address"}],"name":"verify","outputs":[{"name":"valid","type":"bool"},{"name":"owner","type":"address"},{"name":"asset","type":"address"},{"name":"buyPrice","type":"uint256"},{"name":"sellPrice","type":"uint256"},{"name":"units","type":"uint256"},{"name":"buysTokens","type":"bool"},{"name":"sellsTokens","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"tokenTraderAddress","type":"address"},{"indexed":false,"name":"asset","type":"address"},{"indexed":false,"name":"buyPrice","type":"uint256"},{"indexed":false,"name":"sellPrice","type":"uint256"},{"indexed":false,"name":"units","type":"uint256"},{"indexed":false,"name":"buysTokens","type":"bool"},{"indexed":false,"name":"sellsTokens","type":"bool"}],"name":"TradeListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"OwnerWithdrewERC20Token","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60606040525b60008054600160a060020a0319166c01000000000000000000000000338102041790555b5b611251806100386000396000f36060604052361561004b5760e060020a60003504633d6a32bd811461005d5780635de014971461009857806363a9c3d7146100bf5780638da5cb5b14610120578063f2fde38b14610149575b346100005761005b5b610000565b565b005b346100005761007c60043560243560443560643560843560a43561015b565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ab6004356024356102ef565b604080519115158252519081900360200190f35b34610000576100cf6004356103da565b604080519815158952600160a060020a0397881660208a015295909616878601526060870193909352608086019190915260a0850152151560c084015290151560e083015251908190036101000190f35b346100005761007c610669565b60408051600160a060020a039092168252519081900360200190f35b346100005761005b600435610678565b005b6000600086108061016c5750600085105b1561017657610000565b8486111561018357610000565b6000841161019057610000565b868686868686604051610b50806107018339018087600160a060020a03168152602001868152602001858152602001848152602001831515815260200182151581526020019650505050505050604051809103906000f0801561000057600160a060020a038082166000818152600160208190526040808320805460ff191690921790915580517ff2fde38b00000000000000000000000000000000000000000000000000000000815233909416600485015251939450909263f2fde38b92602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03338116825280851660208301528a1681830152606081018990526080810188905260a0810187905285151560c082015284151560e082015290517f65ff0f5aef2091ad3616436792adf51be3068c631b081ac0f30f77e3a0e6502d9250908190036101000190a15b9695505050505050565b6000805433600160a060020a0390811691161461030b57610000565b60408051600160a060020a03851681526020810184905281517f168656e1968a1165ef7fd3f1006847fcfba4cac97672bc70ccbcffb66bc080ba929181900390910190a16000805460408051602090810184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b600160a060020a03811660009081526001602052604081205460ff169080808080808080881561065c5789905080600160a060020a0316638da5cb5b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150975080600160a060020a03166338d52e0f6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150965080600160a060020a0316638620410b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150955080600160a060020a0316634b7503346000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150945080600160a060020a031663976a84356000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150935080600160a060020a031663b10993476000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150925080600160a060020a0316634ca50f596000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b50919395975091939597565b600054600160a060020a031681565b60005433600160a060020a0390811691161461069357610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b50566060604052346100005760405160c080610b5083398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b5b60008054600160a060020a0319166c01000000000000000000000000338102041790555b60018054600160a060020a0319166c01000000000000000000000000888102041790556002859055600384905560048390556005805460ff19167f01000000000000000000000000000000000000000000000000000000000000008481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5050505050505b610a158061013b6000396000f3606060405236156100b95760e060020a60003504632170ebf781146100ca57806338d52e0f146100ee5780634b750334146101175780634ca50f59146101365780638620410b146101575780638da5cb5b14610176578063919f8cfc1461019f578063976a8435146101a9578063a7abc124146101c8578063b1099347146101dd578063c34764cf146101fe578063c60ccb0e14610225578063cd53a3b71461022f578063eff883bd14610253578063f2fde38b14610265575b6100c85b6100c5610277565b5b565b005b34610000576100da6004356104a5565b604080519115158252519081900360200190f35b34610000576100fb610537565b60408051600160a060020a039092168252519081900360200190f35b3461000057610124610546565b60408051918252519081900360200190f35b34610000576100da61054c565b604080519115158252519081900360200190f35b346100005761012461055a565b60408051918252519081900360200190f35b34610000576100fb610560565b60408051600160a060020a039092168252519081900360200190f35b6100c861056f565b005b34610000576101246105c1565b60408051918252519081900360200190f35b34610000576100c86004356024356105c7565b005b34610000576100da61065c565b604080519115158252519081900360200190f35b34610000576100da600435602435610665565b604080519115158252519081900360200190f35b6100c8610277565b005b34610000576100da60043561073a565b604080519115158252519081900360200190f35b34610000576100c8600435610800565b005b34610000576100c860043561098c565b005b600060006000600560019054906101000a900460ff16806102a6575060005433600160a060020a039081169116145b1561046f5760035434811561000057049250600454600160009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519050811561000057049150600090508183111561038457506003546040519192508291908202340390600160a060020a0333169082156108fc029083906000818181858888f19350505050151561038457610000565b5b600083111561041a57600160009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360045486026000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051511515905061041a57610000565b5b60045460408051348152602081018490529185028282015251600160a060020a033316917f37e948531341be0a8ce95c3833827c6f3559825cb6421e6ff1fe21c3a8b71217919081900360600190a261049e565b604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561049e57610000565b5b5b505050565b6000805433600160a060020a039081169116146104c157610000565b600160a060020a03301631829010610530576040805183815290517f8a93d70d792b644d97d7da8a5798e03bbee85be4537a860a331dbe3ee50eb9829181900360200190a160008054604051600160a060020a039091169184156108fc02918591818181858888f19450505050505b5b5b919050565b600154600160a060020a031681565b60035481565b600554610100900460ff1681565b60025481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461058a57610000565b6040805134815290517fc745dab9c51cefa79677191ed7af7b0ccbb8360b8b39ed79f257f6895882980f9181900360200190a15b5b565b60045481565b60005433600160a060020a039081169116146105e257610000565b6005805460ff191660f860020a8481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5b5050565b60055460ff1681565b6000805433600160a060020a0390811691161461068157610000565b60408051600160a060020a03851681526020810184905281517ffea8ae97829f3801e6ca15928428931c2a4f3cee1fa7c9b83d959efd24666422929181900390910190a160008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b6000805433600160a060020a0390811691161461075657610000565b6040805183815290517f1ebbc515a759c3fe8e048867aac7fe458e3a37ac3dd44ffc73a6238cf30039819181900360200190a160015460008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a039384166004820152602481018890529151929094169363a9059cbb9360448084019492938390030190829087803b156100005760325a03f115610000575050604051519150505b5b919050565b600554600090819060ff1680610824575060005433600160a060020a039081169116145b1561049e5760025430600160a060020a03163181156100005704915060045483811561000057049050818111156108585750805b600081111561093157600160009054906101000a9004600160a060020a0316600160a060020a03166323b872dd333060045485026000604051602001526040518460e060020a0281526004018084600160a060020a0316815260200183600160a060020a031681526020018281526020019350505050602060405180830381600087803b156100005760325a03f11561000057505060405151151590506108fe57610000565b600254604051600160a060020a03331691830280156108fc02916000818181858888f19350505050151561093157610000565b5b6004546002546040805186815292840260208401529083028282015251600160a060020a033316917f0ba0a3a12a9b73413f41468a265bf897ff66171a971e352360753a27d5db7683919081900360600190a25b5b505050565b60005433600160a060020a039081169116146109a757610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b5056

Deployed Bytecode

0x6060604052361561004b5760e060020a60003504633d6a32bd811461005d5780635de014971461009857806363a9c3d7146100bf5780638da5cb5b14610120578063f2fde38b14610149575b346100005761005b5b610000565b565b005b346100005761007c60043560243560443560643560843560a43561015b565b60408051600160a060020a039092168252519081900360200190f35b34610000576100ab6004356024356102ef565b604080519115158252519081900360200190f35b34610000576100cf6004356103da565b604080519815158952600160a060020a0397881660208a015295909616878601526060870193909352608086019190915260a0850152151560c084015290151560e083015251908190036101000190f35b346100005761007c610669565b60408051600160a060020a039092168252519081900360200190f35b346100005761005b600435610678565b005b6000600086108061016c5750600085105b1561017657610000565b8486111561018357610000565b6000841161019057610000565b868686868686604051610b50806107018339018087600160a060020a03168152602001868152602001858152602001848152602001831515815260200182151581526020019650505050505050604051809103906000f0801561000057600160a060020a038082166000818152600160208190526040808320805460ff191690921790915580517ff2fde38b00000000000000000000000000000000000000000000000000000000815233909416600485015251939450909263f2fde38b92602480820193929182900301818387803b156100005760325a03f11561000057505060408051600160a060020a03338116825280851660208301528a1681830152606081018990526080810188905260a0810187905285151560c082015284151560e082015290517f65ff0f5aef2091ad3616436792adf51be3068c631b081ac0f30f77e3a0e6502d9250908190036101000190a15b9695505050505050565b6000805433600160a060020a0390811691161461030b57610000565b60408051600160a060020a03851681526020810184905281517f168656e1968a1165ef7fd3f1006847fcfba4cac97672bc70ccbcffb66bc080ba929181900390910190a16000805460408051602090810184905281517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b600160a060020a03811660009081526001602052604081205460ff169080808080808080881561065c5789905080600160a060020a0316638da5cb5b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150975080600160a060020a03166338d52e0f6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150965080600160a060020a0316638620410b6000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150955080600160a060020a0316634b7503346000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150945080600160a060020a031663976a84356000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150935080600160a060020a031663b10993476000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f1156100005750505060405180519060200150925080600160a060020a0316634ca50f596000604051602001526040518160e060020a028152600401809050602060405180830381600087803b156100005760325a03f115610000575050604051519250505b5b50919395975091939597565b600054600160a060020a031681565b60005433600160a060020a0390811691161461069357610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b50566060604052346100005760405160c080610b5083398101604090815281516020830151918301516060840151608085015160a090950151929491929091905b5b60008054600160a060020a0319166c01000000000000000000000000338102041790555b60018054600160a060020a0319166c01000000000000000000000000888102041790556002859055600384905560048390556005805460ff19167f01000000000000000000000000000000000000000000000000000000000000008481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5050505050505b610a158061013b6000396000f3606060405236156100b95760e060020a60003504632170ebf781146100ca57806338d52e0f146100ee5780634b750334146101175780634ca50f59146101365780638620410b146101575780638da5cb5b14610176578063919f8cfc1461019f578063976a8435146101a9578063a7abc124146101c8578063b1099347146101dd578063c34764cf146101fe578063c60ccb0e14610225578063cd53a3b71461022f578063eff883bd14610253578063f2fde38b14610265575b6100c85b6100c5610277565b5b565b005b34610000576100da6004356104a5565b604080519115158252519081900360200190f35b34610000576100fb610537565b60408051600160a060020a039092168252519081900360200190f35b3461000057610124610546565b60408051918252519081900360200190f35b34610000576100da61054c565b604080519115158252519081900360200190f35b346100005761012461055a565b60408051918252519081900360200190f35b34610000576100fb610560565b60408051600160a060020a039092168252519081900360200190f35b6100c861056f565b005b34610000576101246105c1565b60408051918252519081900360200190f35b34610000576100c86004356024356105c7565b005b34610000576100da61065c565b604080519115158252519081900360200190f35b34610000576100da600435602435610665565b604080519115158252519081900360200190f35b6100c8610277565b005b34610000576100da60043561073a565b604080519115158252519081900360200190f35b34610000576100c8600435610800565b005b34610000576100c860043561098c565b005b600060006000600560019054906101000a900460ff16806102a6575060005433600160a060020a039081169116145b1561046f5760035434811561000057049250600454600160009054906101000a9004600160a060020a0316600160a060020a03166370a08231306000604051602001526040518260e060020a0281526004018082600160a060020a03168152602001915050602060405180830381600087803b156100005760325a03f115610000575050604051519050811561000057049150600090508183111561038457506003546040519192508291908202340390600160a060020a0333169082156108fc029083906000818181858888f19350505050151561038457610000565b5b600083111561041a57600160009054906101000a9004600160a060020a0316600160a060020a031663a9059cbb3360045486026000604051602001526040518360e060020a0281526004018083600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051511515905061041a57610000565b5b60045460408051348152602081018490529185028282015251600160a060020a033316917f37e948531341be0a8ce95c3833827c6f3559825cb6421e6ff1fe21c3a8b71217919081900360600190a261049e565b604051600160a060020a033316903480156108fc02916000818181858888f19350505050151561049e57610000565b5b5b505050565b6000805433600160a060020a039081169116146104c157610000565b600160a060020a03301631829010610530576040805183815290517f8a93d70d792b644d97d7da8a5798e03bbee85be4537a860a331dbe3ee50eb9829181900360200190a160008054604051600160a060020a039091169184156108fc02918591818181858888f19450505050505b5b5b919050565b600154600160a060020a031681565b60035481565b600554610100900460ff1681565b60025481565b600054600160a060020a031681565b60005433600160a060020a0390811691161461058a57610000565b6040805134815290517fc745dab9c51cefa79677191ed7af7b0ccbb8360b8b39ed79f257f6895882980f9181900360200190a15b5b565b60045481565b60005433600160a060020a039081169116146105e257610000565b6005805460ff191660f860020a8481028190049190911761ff00191661010084830292909204820217918290556040805160ff80851615158252929093049091161515602083015280517ffa4f96c42c616d6fbda491095977a6af7c76ebd387177b72299180502cbeaa999281900390910190a15b5b5050565b60055460ff1681565b6000805433600160a060020a0390811691161461068157610000565b60408051600160a060020a03851681526020810184905281517ffea8ae97829f3801e6ca15928428931c2a4f3cee1fa7c9b83d959efd24666422929181900390910190a160008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a0393841660048201526024810187905291519287169363a9059cbb936044808501949192918390030190829087803b156100005760325a03f115610000575050604051519150505b5b92915050565b6000805433600160a060020a0390811691161461075657610000565b6040805183815290517f1ebbc515a759c3fe8e048867aac7fe458e3a37ac3dd44ffc73a6238cf30039819181900360200190a160015460008054604080516020908101849052815160e060020a63a9059cbb028152600160a060020a039384166004820152602481018890529151929094169363a9059cbb9360448084019492938390030190829087803b156100005760325a03f115610000575050604051519150505b5b919050565b600554600090819060ff1680610824575060005433600160a060020a039081169116145b1561049e5760025430600160a060020a03163181156100005704915060045483811561000057049050818111156108585750805b600081111561093157600160009054906101000a9004600160a060020a0316600160a060020a03166323b872dd333060045485026000604051602001526040518460e060020a0281526004018084600160a060020a0316815260200183600160a060020a031681526020018281526020019350505050602060405180830381600087803b156100005760325a03f11561000057505060405151151590506108fe57610000565b600254604051600160a060020a03331691830280156108fc02916000818181858888f19350505050151561093157610000565b5b6004546002546040805186815292840260208401529083028282015251600160a060020a033316917f0ba0a3a12a9b73413f41468a265bf897ff66171a971e352360753a27d5db7683919081900360600190a25b5b505050565b60005433600160a060020a039081169116146109a757610000565b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166c01000000000000000000000000838102041790555b5b5056

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.