ETH Price: $1,604.70 (+1.04%)
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Fill187055952023-12-03 11:34:11502 days ago1701603251IN
AirSwap: V1 DEX Swap
0 ETH0.0008071628.30275741
Fill164929332023-01-26 18:58:35813 days ago1674759515IN
AirSwap: V1 DEX Swap
0 ETH0.0006677523.38492159
Fill164929222023-01-26 18:56:23813 days ago1674759383IN
AirSwap: V1 DEX Swap
0 ETH0.0006861123.83740091
Fill159898092022-11-17 12:41:47883 days ago1668688907IN
AirSwap: V1 DEX Swap
0 ETH0.0003462112.1193309
Fill110262742020-10-10 7:07:531652 days ago1602313673IN
AirSwap: V1 DEX Swap
0 ETH0.0021319339
Fill110061182020-10-07 3:06:151655 days ago1602039975IN
AirSwap: V1 DEX Swap
0 ETH0.0044928130
Fill110057092020-10-07 1:33:181655 days ago1602034398IN
AirSwap: V1 DEX Swap
0 ETH0.003110490
Fill110051532020-10-06 23:24:081655 days ago1602026648IN
AirSwap: V1 DEX Swap
0 ETH0.0020234659
Fill107148282020-08-23 6:03:421700 days ago1598162622IN
AirSwap: V1 DEX Swap
0.02597976 ETH0.0027222476
Fill97881122020-04-01 20:16:231843 days ago1585772183IN
AirSwap: V1 DEX Swap
0.11309043 ETH0.0003938711
Fill94113732020-02-03 19:02:441901 days ago1580756564IN
AirSwap: V1 DEX Swap
0 ETH0.000785628
Fill93982712020-02-01 18:55:551903 days ago1580583355IN
AirSwap: V1 DEX Swap
0.97126893 ETH0.000718418
Fill93606882020-01-27 0:19:231909 days ago1580084363IN
AirSwap: V1 DEX Swap
0 ETH0.000679296
Fill93329602020-01-22 18:14:041913 days ago1579716844IN
AirSwap: V1 DEX Swap
0.31094958 ETH0.000695628
Fill93324682020-01-22 16:22:231913 days ago1579710143IN
AirSwap: V1 DEX Swap
0 ETH0.000905818
Fill93239982020-01-21 9:18:501915 days ago1579598330IN
AirSwap: V1 DEX Swap
0 ETH0.00118573
Fill93239882020-01-21 9:17:131915 days ago1579598233IN
AirSwap: V1 DEX Swap
0 ETH0.0039523510
Fill93238792020-01-21 8:50:141915 days ago1579596614IN
AirSwap: V1 DEX Swap
0 ETH0.000790462
Fill93235932020-01-21 7:51:171915 days ago1579593077IN
AirSwap: V1 DEX Swap
0 ETH0.000711421.8
Fill93235862020-01-21 7:49:551915 days ago1579592995IN
AirSwap: V1 DEX Swap
0 ETH0.001976175
Fill93235692020-01-21 7:46:341915 days ago1579592794IN
AirSwap: V1 DEX Swap
0 ETH0.000146975
Fill93235612020-01-21 7:43:561915 days ago1579592636IN
AirSwap: V1 DEX Swap
0 ETH0.001976175
Fill93235502020-01-21 7:40:421915 days ago1579592442IN
AirSwap: V1 DEX Swap
0 ETH0.001976175
Fill93235482020-01-21 7:40:131915 days ago1579592413IN
AirSwap: V1 DEX Swap
0 ETH0.001976175
Fill93222172020-01-21 2:39:411915 days ago1579574381IN
AirSwap: V1 DEX Swap
0 ETH0.000905728
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-107148282020-08-23 6:03:421700 days ago1598162622
AirSwap: V1 DEX Swap
0.02597976 ETH
-97881122020-04-01 20:16:231843 days ago1585772183
AirSwap: V1 DEX Swap
0.11309043 ETH
-93982712020-02-01 18:55:551903 days ago1580583355
AirSwap: V1 DEX Swap
0.97126893 ETH
-93329602020-01-22 18:14:041913 days ago1579716844
AirSwap: V1 DEX Swap
0.31094958 ETH
-93000172020-01-17 17:08:121918 days ago1579280892
AirSwap: V1 DEX Swap
5.73792996 ETH
-92984672020-01-17 11:28:081918 days ago1579260488
AirSwap: V1 DEX Swap
0.00589991 ETH
-92925972020-01-16 13:56:371919 days ago1579182997
AirSwap: V1 DEX Swap
0.00015412 ETH
-92718532020-01-13 9:40:191922 days ago1578908419
AirSwap: V1 DEX Swap
1.40448971 ETH
-92673302020-01-12 16:56:461923 days ago1578848206
AirSwap: V1 DEX Swap
0.03851985 ETH
-92672642020-01-12 16:41:291923 days ago1578847289
AirSwap: V1 DEX Swap
0.07475337 ETH
-92577742020-01-11 5:43:351925 days ago1578721415
AirSwap: V1 DEX Swap
1.41844596 ETH
-92562092020-01-11 0:01:471925 days ago1578700907
AirSwap: V1 DEX Swap
14.39387841 ETH
-92521602020-01-10 9:14:421926 days ago1578647682
AirSwap: V1 DEX Swap
0.01312748 ETH
-92305662020-01-07 1:43:021929 days ago1578361382
AirSwap: V1 DEX Swap
0.21008466 ETH
-92286162020-01-06 18:43:131929 days ago1578336193
AirSwap: V1 DEX Swap
5 ETH
-92285702020-01-06 18:31:381929 days ago1578335498
AirSwap: V1 DEX Swap
0.77830982 ETH
-92276382020-01-06 15:04:301929 days ago1578323070
AirSwap: V1 DEX Swap
0.0004764 ETH
-92220672020-01-05 18:37:491930 days ago1578249469
AirSwap: V1 DEX Swap
0.54295702 ETH
-92118752020-01-04 5:10:301932 days ago1578114630
AirSwap: V1 DEX Swap
0.20644492 ETH
-92040602020-01-03 0:28:441933 days ago1578011324
AirSwap: V1 DEX Swap
0.0109608 ETH
-92016382020-01-02 15:22:481933 days ago1577978568
AirSwap: V1 DEX Swap
0.00318137 ETH
-91935662020-01-01 1:26:551935 days ago1577842015
AirSwap: V1 DEX Swap
3.6 ETH
-91879952019-12-30 22:45:341936 days ago1577745934
AirSwap: V1 DEX Swap
5 ETH
-91623552019-12-25 20:13:291941 days ago1577304809
AirSwap: V1 DEX Swap
0.23164529 ETH
-91367842019-12-20 18:07:451946 days ago1576865265
AirSwap: V1 DEX Swap
0.00385033 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AirSwapExchange

Compiler Version
v0.4.17+commit.bdeb9e52

Optimization Enabled:
No with 200 runs

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

pragma solidity ^0.4.11;

// See the Github at https://github.com/airswap/contracts

// Abstract contract for the full ERC 20 Token standard
// https://github.com/ethereum/EIPs/issues/20

contract Token {
    /* 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.
    */
    /// total amount of tokens
    uint256 public totalSupply;

    /// @param _owner The address from which the balance will be retrieved
    /// @return The balance
    function balanceOf(address _owner) constant returns (uint256 balance);

    /// @notice send `_value` token to `_to` from `msg.sender`
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transfer(address _to, uint256 _value) returns (bool success);

    /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
    /// @param _from The address of the sender
    /// @param _to The address of the recipient
    /// @param _value The amount of token to be transferred
    /// @return Whether the transfer was successful or not
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

    /// @notice `msg.sender` approves `_spender` to spend `_value` tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @param _value The amount of tokens to be approved for transfer
    /// @return Whether the approval was successful or not
    function approve(address _spender, uint256 _value) returns (bool success);

    /// @param _owner The address of the account owning tokens
    /// @param _spender The address of the account able to transfer the tokens
    /// @return Amount of remaining tokens allowed to spent
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}


/* Implements ERC 20 Token standard: https://github.com/ethereum/EIPs/issues/20 */

contract ERC20 is Token {

    function transfer(address _to, uint256 _value) returns (bool success) {
        require(balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        require(balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]);
        balances[_to] += _value;
        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }

    mapping (address => uint256) public balances; // *added public
    mapping (address => mapping (address => uint256)) public allowed; // *added public
}

/** @title AirSwap exchange contract.
  * Assumes makers and takers have approved this contract to access their balances.
  */
contract AirSwapExchange {

    // Mapping of order hash to bool (true = already filled).
    mapping (bytes32 => bool) public fills;

    // Events that are emitted in different scenarios.
    event Filled(address indexed makerAddress, uint makerAmount, address indexed makerToken, address takerAddress, uint takerAmount, address indexed takerToken, uint256 expiration, uint256 nonce);
    event Canceled(address indexed makerAddress, uint makerAmount, address indexed makerToken, address takerAddress, uint takerAmount, address indexed takerToken, uint256 expiration, uint256 nonce);

    /** Event thrown when a trade fails
      * Error codes:
      * 1 -> 'The makeAddress and takerAddress must be different',
      * 2 -> 'The order has expired',
      * 3 -> 'This order has already been filled',
      * 4 -> 'The ether sent with this transaction does not match takerAmount',
      * 5 -> 'No ether is required for a trade between tokens',
      * 6 -> 'The sender of this transaction must match the takerAddress',
      * 7 -> 'Order has already been cancelled or filled'
      */
    event Failed(uint code, address indexed makerAddress, uint makerAmount, address indexed makerToken, address takerAddress, uint takerAmount, address indexed takerToken, uint256 expiration, uint256 nonce);

    /** Fills an order by transferring tokens between (maker or escrow) and taker.
      * maker is given tokenA to taker,
      */
    function fill(address makerAddress, uint makerAmount, address makerToken,
                  address takerAddress, uint takerAmount, address takerToken,
                  uint256 expiration, uint256 nonce, uint8 v, bytes32 r, bytes32 s) payable {

        if (makerAddress == takerAddress) {
            msg.sender.transfer(msg.value);
            Failed(1,
            makerAddress, makerAmount, makerToken,
            takerAddress, takerAmount, takerToken,
            expiration, nonce);
            return;
        }

        // Check if this order has expired
        if (expiration < now) {
            msg.sender.transfer(msg.value);
            Failed(2,
                makerAddress, makerAmount, makerToken,
                takerAddress, takerAmount, takerToken,
                expiration, nonce);
            return;
        }

        // Validate the message by signature.
        bytes32 hash = validate(makerAddress, makerAmount, makerToken,
            takerAddress, takerAmount, takerToken,
            expiration, nonce, v, r, s);

        // Check if this order has already been filled
        if (fills[hash]) {
            msg.sender.transfer(msg.value);
            Failed(3,
                makerAddress, makerAmount, makerToken,
                takerAddress, takerAmount, takerToken,
                expiration, nonce);
            return;
        }

        // Check to see if this an order for ether.
        if (takerToken == address(0x0)) {

            // Check to make sure the message value is the order amount.
            if (msg.value == takerAmount) {

                // Mark order as filled to prevent reentrancy.
                fills[hash] = true;

                // Perform the trade between makerAddress and takerAddress.
                // The transfer will throw if there's a problem.
                assert(transfer(makerAddress, takerAddress, makerAmount, makerToken));

                // Transfer the ether received from sender to makerAddress.
                makerAddress.transfer(msg.value);

                // Log an event to indicate completion.
                Filled(makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);

            } else {
                msg.sender.transfer(msg.value);
                Failed(4,
                    makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);
            }

        } else {
            // This is an order trading two tokens
            // Check that no ether has been sent accidentally
            if (msg.value != 0) {
                msg.sender.transfer(msg.value);
                Failed(5,
                    makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);
                return;
            }

            if (takerAddress == msg.sender) {

                // Mark order as filled to prevent reentrancy.
                fills[hash] = true;

                // Perform the trade between makerAddress and takerAddress.
                // The transfer will throw if there's a problem.
                // Assert should never fail
                assert(trade(makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken));

                // Log an event to indicate completion.
                Filled(
                    makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);

            } else {
                Failed(6,
                    makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);
            }
        }
    }

    /** Cancels an order by refunding escrow and adding it to the fills mapping.
      * Will log an event if
      * - order has been cancelled or
      * - order has already been filled
      * and will do nothing if the maker of the order in question is not the
      * msg.sender
      */
    function cancel(address makerAddress, uint makerAmount, address makerToken,
                    address takerAddress, uint takerAmount, address takerToken,
                    uint256 expiration, uint256 nonce, uint8 v, bytes32 r, bytes32 s) {

        // Validate the message by signature.
        bytes32 hash = validate(makerAddress, makerAmount, makerToken,
            takerAddress, takerAmount, takerToken,
            expiration, nonce, v, r, s);

        // Only the maker can cancel an order
        if (msg.sender == makerAddress) {

            // Check that order has not already been filled/cancelled
            if (fills[hash] == false) {

                // Cancel the order by considering it filled.
                fills[hash] = true;

                // Broadcast an event to the blockchain.
                Canceled(makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);

            } else {
                Failed(7,
                    makerAddress, makerAmount, makerToken,
                    takerAddress, takerAmount, takerToken,
                    expiration, nonce);
            }
        }
    }

    /** Atomic trade of tokens between first party and second party.
      * Throws if one of the trades does not go through.
      */
    function trade(address makerAddress, uint makerAmount, address makerToken,
                   address takerAddress, uint takerAmount, address takerToken) private returns (bool) {
        return (transfer(makerAddress, takerAddress, makerAmount, makerToken) &&
        transfer(takerAddress, makerAddress, takerAmount, takerToken));
    }

    /** Transfers tokens from first party to second party.
      * Prior to a transfer being done by the contract, ensure that
      * tokenVal.approve(this, amount, {from : address}) has been called
      * throws if the transferFrom of the token returns false
      * returns true if, the transfer went through
      */
    function transfer(address from, address to, uint amount, address token) private returns (bool) {
        require(ERC20(token).transferFrom(from, to, amount));
        return true;
    }

    /** Validates order arguments for fill() and cancel() functions. */
    function validate(address makerAddress, uint makerAmount, address makerToken,
                      address takerAddress, uint takerAmount, address takerToken,
                      uint256 expiration, uint256 nonce, uint8 v, bytes32 r, bytes32 s) private returns (bytes32) {

        // Hash arguments to identify the order.
        bytes32 hashV = keccak256(makerAddress, makerAmount, makerToken,
            takerAddress, takerAmount, takerToken,
            expiration, nonce);

        bytes memory prefix = "\x19Ethereum Signed Message:\n32";
        bytes32 prefixedHash = sha3(prefix, hashV);

        require(ecrecover(prefixedHash, v, r, s) == makerAddress);

        return hashV;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"makerAddress","type":"address"},{"name":"makerAmount","type":"uint256"},{"name":"makerToken","type":"address"},{"name":"takerAddress","type":"address"},{"name":"takerAmount","type":"uint256"},{"name":"takerToken","type":"address"},{"name":"expiration","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"fill","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"fills","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"makerAddress","type":"address"},{"name":"makerAmount","type":"uint256"},{"name":"makerToken","type":"address"},{"name":"takerAddress","type":"address"},{"name":"takerAmount","type":"uint256"},{"name":"takerToken","type":"address"},{"name":"expiration","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"cancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"makerAddress","type":"address"},{"indexed":false,"name":"makerAmount","type":"uint256"},{"indexed":true,"name":"makerToken","type":"address"},{"indexed":false,"name":"takerAddress","type":"address"},{"indexed":false,"name":"takerAmount","type":"uint256"},{"indexed":true,"name":"takerToken","type":"address"},{"indexed":false,"name":"expiration","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Filled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"makerAddress","type":"address"},{"indexed":false,"name":"makerAmount","type":"uint256"},{"indexed":true,"name":"makerToken","type":"address"},{"indexed":false,"name":"takerAddress","type":"address"},{"indexed":false,"name":"takerAmount","type":"uint256"},{"indexed":true,"name":"takerToken","type":"address"},{"indexed":false,"name":"expiration","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Canceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"code","type":"uint256"},{"indexed":true,"name":"makerAddress","type":"address"},{"indexed":false,"name":"makerAmount","type":"uint256"},{"indexed":true,"name":"makerToken","type":"address"},{"indexed":false,"name":"takerAddress","type":"address"},{"indexed":false,"name":"takerAmount","type":"uint256"},{"indexed":true,"name":"takerToken","type":"address"},{"indexed":false,"name":"expiration","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Failed","type":"event"}]

6060604052341561000f57600080fd5b6112c98061001e6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d1461005357806320158c441461012857806366a264191461016757600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610247565b005b341561013357600080fd5b61014d600480803560001916906020019091905050610bfd565b604051808215151515815260200191505060405180910390f35b341561017257600080fd5b610245600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610c1d565b005b60008873ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161415610393573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156102bd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60018f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b428610156104b1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156103db57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60028f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b6104c48c8c8c8c8c8c8c8c8c8c8c610e7d565b9050600080826000191660001916815260200190815260200160002060009054906101000a900460ff1615610609573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561053357600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60038f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156108b1578734141561079a576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506106858c8a8d8d611148565b151561068d57fe5b8b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156106cd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a46108ac565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156107da57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60048f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b610bee565b6000341415156109d1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156108fb57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60058f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b3373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415610b1b576001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610a468c8c8c8c8c8c61125b565b1515610a4e57fe5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610bed565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60068f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b5b505050505050505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000610c328c8c8c8c8c8c8c8c8c8c8c610e7d565b90508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e6f5760001515600080836000191660001916815260200190815260200160002060009054906101000a900460ff1615151415610d9c576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8ce0bae8f3488649f2f29762dfc77af336a695060bc787b9c813c6fdd79fdf258e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610e6e565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60078f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b505050505050505050505050565b600080610e88611289565b60008e8e8e8e8e8e8e8e604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200198505050505050505050604051809103902092506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081836040518083805190602001908083835b6020831015156110355780518252602082019150602081019050602083039250611010565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508e73ffffffffffffffffffffffffffffffffffffffff16600182898989604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561110857600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff1614151561113357600080fd5b8293505050509b9a5050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561122957600080fd5b6102c65a03f1151561123a57600080fd5b50505060405180519050151561124f57600080fd5b60019050949350505050565b600061126987858888611148565b801561127d575061127c84888585611148565b5b90509695505050505050565b6020604051908101604052806000815250905600a165627a7a72305820894fbedb45377cc944ff04fe9af7fca8f5ff2d6ff06934c223d8c8c836bd21a00029

Deployed Bytecode

0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d1461005357806320158c441461012857806366a264191461016757600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610247565b005b341561013357600080fd5b61014d600480803560001916906020019091905050610bfd565b604051808215151515815260200191505060405180910390f35b341561017257600080fd5b610245600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610c1d565b005b60008873ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161415610393573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156102bd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60018f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b428610156104b1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156103db57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60028f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b6104c48c8c8c8c8c8c8c8c8c8c8c610e7d565b9050600080826000191660001916815260200190815260200160002060009054906101000a900460ff1615610609573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561053357600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60038f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156108b1578734141561079a576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506106858c8a8d8d611148565b151561068d57fe5b8b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156106cd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a46108ac565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156107da57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60048f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b610bee565b6000341415156109d1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156108fb57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60058f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b3373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415610b1b576001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610a468c8c8c8c8c8c61125b565b1515610a4e57fe5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610bed565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60068f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b5b505050505050505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000610c328c8c8c8c8c8c8c8c8c8c8c610e7d565b90508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e6f5760001515600080836000191660001916815260200190815260200160002060009054906101000a900460ff1615151415610d9c576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8ce0bae8f3488649f2f29762dfc77af336a695060bc787b9c813c6fdd79fdf258e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610e6e565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60078f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b505050505050505050505050565b600080610e88611289565b60008e8e8e8e8e8e8e8e604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200198505050505050505050604051809103902092506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081836040518083805190602001908083835b6020831015156110355780518252602082019150602081019050602083039250611010565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508e73ffffffffffffffffffffffffffffffffffffffff16600182898989604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561110857600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff1614151561113357600080fd5b8293505050509b9a5050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561122957600080fd5b6102c65a03f1151561123a57600080fd5b50505060405180519050151561124f57600080fd5b60019050949350505050565b600061126987858888611148565b801561127d575061127c84888585611148565b5b90509695505050505050565b6020604051908101604052806000815250905600a165627a7a72305820894fbedb45377cc944ff04fe9af7fca8f5ff2d6ff06934c223d8c8c836bd21a00029

Swarm Source

bzzr://894fbedb45377cc944ff04fe9af7fca8f5ff2d6ff06934c223d8c8c836bd21a0

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

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