Contract Overview |  AirSwapProtocol
Balance: 0 Ether
Ether Value: $0
Transactions: 38133 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x1ff808e34e4df60326a3fc4c2b0f80748a3d60c2at txn 0xb5ddd56f449b623f1073535154356849deb8d37cf89140c9d6c07f14a04bc1a2
Token Balance:
 Latest 25 transactions from a total of 38133 transactions

TxHash Age From To Value [TxFee]
0x81b30c6989f9b783502c35c295a5a172bec55033e5175882a18ebc41aace9af015 mins ago0xfe88c120b50864264c5a7b5374389748b35b04fb  IN   AirSwapProtocol0 Ether0.00123198
0xb53b1895cd12f44f17a2e0cb8bafb34890d5361a50c9b27bc9c1b320201823f81 hr 12 mins ago0xfe88c120b50864264c5a7b5374389748b35b04fb  IN   AirSwapProtocol0 Ether0.001103454
0x5920043c9ded5aac567d76cea37c96400d2aead248735d6c7ca2d35e4eae5ce51 hr 26 mins ago0xd53a09059e46ae357e02a803f89a807a82381ca1  IN   AirSwapProtocol1.55070916 Ether0.000453945
0xae7fee66d09aa9b98248e9afb8eeba2a221862f473fbcacc91d889aa4bd5f2321 hr 36 mins ago0xdead0717b16b9f56eb6e308e4b29230dc0eee0b6  IN   AirSwapProtocol0.001696152533039 Ether0.00045938
0x3363739b0005057c86a6d3a6b217309baefec057a78a8a9707cdd147b6862d331 hr 40 mins ago0xfe88c120b50864264c5a7b5374389748b35b04fb  IN   AirSwapProtocol0.06332908621875 Ether0.00053566
0x849c86a963d207801b7db8e00c3f1acf54b747741bac0fb9a251a2f558eb64dd2 hrs 8 mins ago0x82e5a4182134d27cc468c53ccfdffb212502d217  IN   AirSwapProtocol0 Ether0.000524265
0x1a91c14ee5e4079cb317425affca0a1900b6ea11f48e9651efd39469425d08c62 hrs 17 mins ago0x24a4320f1c92fc30ba59ff39898b60119687a440  IN   AirSwapProtocol0.025117659659108 Ether0.0008
0x7c57457bfde2d94cfbb1fb9a436923fa9f02a7b3a0dd43e0a31749f52f3ff95f2 hrs 37 mins ago0xbc5eea869e6a7a30aa41b3b83111aedf23846e33  IN   AirSwapProtocol0 Ether0.00052697
0x6195344f4a7102b50f13c9c36bc15a1a44882fefe01f0c552ab33cf03b6334702 hrs 49 mins ago0xe5e598a99228869ff97a1c55c39e2aa17ea2414f  IN   AirSwapProtocol0.0439869314745 Ether0.000422196
0x7d8acecd47d2afe5d76aad2b26db4ca7dc4407c5e9942770ffd59d12cce3773f2 hrs 53 mins ago0x73b22872475566751491b2e0fe279e517253a5d4  IN   AirSwapProtocol1.174524564183835 Ether0.00052738
0xb90131d120c637c7fb09b9e2728d67440220747783a4931629625ba3ea2198c62 hrs 54 mins ago0xe5e598a99228869ff97a1c55c39e2aa17ea2414f  IN   AirSwapProtocol0.0439869314745 Ether0.000087822
0x59a2f86b5469bd2d5f08a25bbcf2dce4ec30bea75f4cc2b067231b01d45f72e12 hrs 57 mins ago0xdf0635793e91d4f8e7426dbd9ed08471186f428d  IN   AirSwapProtocol0.001055644659839 Ether0.00052518
0x1c810acde64dd061b71dc9f3b79ac64dddea1825c89ca33ad1314187b58fd8173 hrs ago0x2be55011d5c78dc81efe2da8093a630b32814aaa  IN   AirSwapProtocol0.467406517083906 Ether0.000536655
0x5ed6da52fa1de4ea7a877f81a720e2b641b5f00dc19479374fd93a2fddf4382a3 hrs 2 mins ago0x64db074a4c1bd6ed38e2751fc75a31c5f6ad4090  IN   AirSwapProtocol1 Ether0.000775675
0x33b7b8f7f08f81d2eab720e73b375f83dd42a93f7be7d590b4df3a5a9a7c89c53 hrs 3 mins ago0x0d19ec013e8d09f67cc6289fa3c1772fab0cf3be  IN   AirSwapProtocol1.5 Ether0.000529585
0x8d3de56a209cfa522c2bef3abfc3482d05cbd6d8f588529d28f375a9ecc03c713 hrs 3 mins ago0x64db074a4c1bd6ed38e2751fc75a31c5f6ad4090  IN   AirSwapProtocol1 Ether0.000218915
0x76f27b5692fb27081ae7a85934bd0efacb4413b5b347d37b0c73214843d975ff3 hrs 3 mins ago0x73b22872475566751491b2e0fe279e517253a5d4  IN   AirSwapProtocol0.993446722560975 Ether0.000799935
0xffe5c323ed8080cd78de7a5766da16f608f256d7400fbdb7afb3bb791c2bf3c43 hrs 7 mins ago0x0d19ec013e8d09f67cc6289fa3c1772fab0cf3be  IN   AirSwapProtocol0 Ether0.00053035
0x094853d3907a19d1dbf3857c6e65549b7256ce3e521564b4bf836541b0f2fe273 hrs 9 mins ago0x0d19ec013e8d09f67cc6289fa3c1772fab0cf3be  IN   AirSwapProtocol0 Ether0.00060535
0xeb6232f15a062e725bb0efbcc3701c7681b0c1983f1c1806a87c0a250d0a6fd23 hrs 14 mins ago0xdead0717b16b9f56eb6e308e4b29230dc0eee0b6  IN   AirSwapProtocol0.065930484382625 Ether0.00053438
0x4684edad81569e96822d840e2e9c50ab5801b8661541461819404b33f09360523 hrs 50 mins ago0xcf085317456133e93d72ab5fc56025d8d3802c38  IN   AirSwapProtocol0 Ether0.001085346
0x37e8d5f8e55da40cbb49f1aa3b61689df891d06bc1f308b6b7b4fed29e2a43e83 hrs 58 mins ago0xbc5eea869e6a7a30aa41b3b83111aedf23846e33  IN   AirSwapProtocol0 Ether0.000722364
0xfb452e752a52f684addc6635c48be8a7a1405b762d2db95a2e2c15f590c621224 hrs ago0xdead0717b16b9f56eb6e308e4b29230dc0eee0b6  IN   AirSwapProtocol0 Ether0.000724884
0xc39bd317b8b774a2f8ed091e1d669ecf58923f5a0ab7de3d8715cb95d02d517e4 hrs 1 min ago0xdead0717b16b9f56eb6e308e4b29230dc0eee0b6  IN   AirSwapProtocol0.050626735088752 Ether0.000545118
0x4a8c597814bc8cffa0a851a2eb283de8c692e37b5c0c45b6d222590aa838592a4 hrs 2 mins ago0x1114fa65a2f3d01b045dc2c22cfb224af4f16198  IN   AirSwapProtocol0 Ether0.000673153
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x5920043c9ded5aac567d76cea37c96400d2aead248735d6c7ca2d35e4eae5ce571156581 hr 26 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e301.550709160000000004 Ether
0xae7fee66d09aa9b98248e9afb8eeba2a221862f473fbcacc91d889aa4bd5f23271156271 hr 36 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.001696152533039648 Ether
0x3363739b0005057c86a6d3a6b217309baefec057a78a8a9707cdd147b6862d3371156101 hr 40 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x3310b055015a94a2f2e37014b944d8ca6bd2b8450.06332908621875 Ether
0x6195344f4a7102b50f13c9c36bc15a1a44882fefe01f0c552ab33cf03b63347071153692 hrs 49 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x3310b055015a94a2f2e37014b944d8ca6bd2b8450.0439869314745 Ether
0x7d8acecd47d2afe5d76aad2b26db4ca7dc4407c5e9942770ffd59d12cce3773f71153602 hrs 53 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e301.174524564183835232 Ether
0xb90131d120c637c7fb09b9e2728d67440220747783a4931629625ba3ea2198c671153592 hrs 54 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70xe5e598a99228869ff97a1c55c39e2aa17ea2414f0.0439869314745 Ether
0x59a2f86b5469bd2d5f08a25bbcf2dce4ec30bea75f4cc2b067231b01d45f72e171153522 hrs 57 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.001055644659839064 Ether
0x1c810acde64dd061b71dc9f3b79ac64dddea1825c89ca33ad1314187b58fd81771153423 hrs ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.467406517083906403 Ether
0x5ed6da52fa1de4ea7a877f81a720e2b641b5f00dc19479374fd93a2fddf4382a71153373 hrs 2 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e301 Ether
0x33b7b8f7f08f81d2eab720e73b375f83dd42a93f7be7d590b4df3a5a9a7c89c571153343 hrs 3 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e301.5 Ether
0x8d3de56a209cfa522c2bef3abfc3482d05cbd6d8f588529d28f375a9ecc03c7171153313 hrs 3 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x64db074a4c1bd6ed38e2751fc75a31c5f6ad40901 Ether
0x76f27b5692fb27081ae7a85934bd0efacb4413b5b347d37b0c73214843d975ff71153313 hrs 3 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.993446722560975494 Ether
0xeb6232f15a062e725bb0efbcc3701c7681b0c1983f1c1806a87c0a250d0a6fd271152983 hrs 14 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.065930484382625672 Ether
0xc39bd317b8b774a2f8ed091e1d669ecf58923f5a0ab7de3d8715cb95d02d517e71151334 hrs 1 min ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.050626735088752422 Ether
0xc322c7941dac2e52591934079e32e7c5da072eb1e54c4b82cce90c863966e80971150744 hrs 17 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.830678063945868613 Ether
0x4a8ba7f1161560bec3a616e9e0a717bac2cc0d6ad0d05a1c344d7b33ce9e011071150564 hrs 21 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e301 Ether
0x57c529e941dbf0c5c95569da9e26e1522e3330e3c8130fee0a20e05c11298acb71146176 hrs 19 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.42190386198067477 Ether
0x2d404c949c4bb14db7826cd2732603c6a76b8a58a97764ea4012fffb36998ea971145036 hrs 48 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.000004707718550107 Ether
0x3c7dac9cb7f7aaf064beaa8d4b2ccef39ec0255ef3936b16a20aa789a1fc406a71142307 hrs 59 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.010509565667011376 Ether
0x0b37591f28750d0ee754de32681c83247498553705961c6d09964d2bfa18096d71140868 hrs 44 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e304.366961937087096187 Ether
0x2554d7dfea3dc9c515e3a6c163c057c10e78251e29ddac289b3a599d4dbd8c0271139089 hrs 35 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70xac9ba72fb61aa7c31a95df0a8b6eba6f41ef875e0.10976707861125 Ether
0x1194afb1111192badc8b79d9317e7ccf37a9cde457a5ee99d7368ee2687570e271138699 hrs 48 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.000000504190308584 Ether
0x8539974afa26a29039998f90505c68a39913ec4c543d70218a0e71de24de16a771138669 hrs 49 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.04676009342676009 Ether
0x845097c4200b4aa49e440eb1290a6272a574c7f9183aefd5ba5bf5e1505818dd711379710 hrs 10 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x1550d41be3651686e1aeeea073d8d403d0bd2e300.000084370794078062 Ether
0xc991e8ab4e6a584e319cba65af2f1a3e2abf4cf8194f48b7bca2b3c92ab96fe8711379210 hrs 12 mins ago0x8fd3121013a07c57f0d69646e86e7a4880b467b70x3e9a8f4ec87bc9e2170688c593f42b2934b92f710.0000076076 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: AirSwapExchange
Compiler Text: v0.4.17+commit.bdeb9e52
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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 ABI  
[{"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"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b6112c98061001e6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d4d691d1461005357806320158c441461012857806366a264191461016757600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610247565b005b341561013357600080fd5b61014d600480803560001916906020019091905050610bfd565b604051808215151515815260200191505060405180910390f35b341561017257600080fd5b610245600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001909190803560ff169060200190919080356000191690602001909190803560001916906020019091905050610c1d565b005b60008873ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff161415610393573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156102bd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60018f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b428610156104b1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156103db57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60028f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b6104c48c8c8c8c8c8c8c8c8c8c8c610e7d565b9050600080826000191660001916815260200190815260200160002060009054906101000a900460ff1615610609573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050151561053357600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60038f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156108b1578734141561079a576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506106858c8a8d8d611148565b151561068d57fe5b8b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156106cd57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a46108ac565b3373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156107da57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60048f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b610bee565b6000341415156109d1573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015156108fb57600080fd5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60058f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a4610bef565b3373ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415610b1b576001600080836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610a468c8c8c8c8c8c61125b565b1515610a4e57fe5b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167fe59c5e56d85b2124f5e7f82cb5fcc6d28a4a241a9bdd732704ac9d3b6bfc98ab8e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610bed565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60068f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b5b505050505050505050505050565b60006020528060005260406000206000915054906101000a900460ff1681565b6000610c328c8c8c8c8c8c8c8c8c8c8c610e7d565b90508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e6f5760001515600080836000191660001916815260200190815260200160002060009054906101000a900460ff1615151415610d9c576001600080836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8ce0bae8f3488649f2f29762dfc77af336a695060bc787b9c813c6fdd79fdf258e8d8d8c8c604051808681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019550505050505060405180910390a4610e6e565b8673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff167f8e49dd3f283d9a844668a6f422edaa50c4c22987511ec284cebec288ca54f37a60078f8e8e8d8d604051808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001965050505050505060405180910390a45b5b505050505050505050505050565b600080610e88611289565b60008e8e8e8e8e8e8e8e604051808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200198505050505050505050604051809103902092506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250915081836040518083805190602001908083835b6020831015156110355780518252602082019150602081019050602083039250611010565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508e73ffffffffffffffffffffffffffffffffffffffff16600182898989604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561110857600080fd5b50506020604051035173ffffffffffffffffffffffffffffffffffffffff1614151561113357600080fd5b8293505050509b9a5050505050505050505050565b60008173ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b151561122957600080fd5b6102c65a03f1151561123a57600080fd5b50505060405180519050151561124f57600080fd5b60019050949350505050565b600061126987858888611148565b801561127d575061127c84888585611148565b5b90509695505050505050565b6020604051908101604052806000815250905600a165627a7a72305820894fbedb45377cc944ff04fe9af7fca8f5ff2d6ff06934c223d8c8c836bd21a00029

   Swarm Source:
bzzr://894fbedb45377cc944ff04fe9af7fca8f5ff2d6ff06934c223d8c8c836bd21a0

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.