ETH Price: $2,024.06 (-1.22%)

Contract

0x36Bae77a5b292c1Ca5dc38C6b40A2a6504bB83f5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Fees143606142022-03-10 18:10:011112 days ago1646935801IN
0x36Bae77a...504bB83f5
0 ETH0.0017663345.14829372
Withdraw Fees143605952022-03-10 18:05:231112 days ago1646935523IN
0x36Bae77a...504bB83f5
0 ETH0.0027279954.09033577
Withdraw Fees143605842022-03-10 18:02:441112 days ago1646935364IN
0x36Bae77a...504bB83f5
0 ETH0.002539561.35392615
Return Funds113598712020-11-30 11:24:271577 days ago1606735467IN
0x36Bae77a...504bB83f5
0 ETH0.0029668575
Return Funds109325982020-09-25 15:26:531643 days ago1601047613IN
0x36Bae77a...504bB83f5
0 ETH0.00488907123.63014581
Release109182522020-09-23 10:13:171645 days ago1600855997IN
0x36Bae77a...504bB83f5
0 ETH0.00762426127.81665382
Create109182352020-09-23 10:10:311645 days ago1600855831IN
0x36Bae77a...504bB83f5
0 ETH0.01052847130.95445115
Create109127132020-09-22 13:56:301646 days ago1600782990IN
0x36Bae77a...504bB83f5
0 ETH0.00892818111.04987715
Release108863792020-09-18 13:23:121650 days ago1600435392IN
0x36Bae77a...504bB83f5
0 ETH0.01349416226.22233618
Create108863692020-09-18 13:20:501650 days ago1600435250IN
0x36Bae77a...504bB83f5
0 ETH0.01818782226.22233618
Return Funds108397342020-09-11 9:28:281657 days ago1599816508IN
0x36Bae77a...504bB83f5
0 ETH0.00670159149.2260394
Release108352392020-09-10 16:57:261658 days ago1599757046IN
0x36Bae77a...504bB83f5
0 ETH0.01277357214.14213562
Create108352312020-09-10 16:56:301658 days ago1599756990IN
0x36Bae77a...504bB83f5
0 ETH0.0142984177.84523257
Release108211162020-09-08 12:56:311660 days ago1599569791IN
0x36Bae77a...504bB83f5
0 ETH0.0045539591.05538513
Create108211112020-09-08 12:55:151660 days ago1599569715IN
0x36Bae77a...504bB83f5
0 ETH0.00780991.05538513
Create108198002020-09-08 7:58:041660 days ago1599551884IN
0x36Bae77a...504bB83f5
0 ETH0.0067207978.36660026
Return Funds108163742020-09-07 19:21:311661 days ago1599506491IN
0x36Bae77a...504bB83f5
0 ETH0.0035591490
Create107963222020-09-04 17:51:021664 days ago1599241862IN
0x36Bae77a...504bB83f5
0 ETH0.009687120.48808848
Release107885602020-09-03 13:19:151665 days ago1599139155IN
0x36Bae77a...504bB83f5
0 ETH0.02105672421.02498439
Create107885352020-09-03 13:14:091665 days ago1599138849IN
0x36Bae77a...504bB83f5
0 ETH0.03698641431.27313493
Return Funds107593262020-08-30 1:53:111670 days ago1598752391IN
0x36Bae77a...504bB83f5
0 ETH0.00460042116.29563014
Create107393562020-08-27 0:22:591673 days ago1598487779IN
0x36Bae77a...504bB83f5
0 ETH0.0056185669.87400787
Release107176642020-08-23 16:29:021676 days ago1598200142IN
0x36Bae77a...504bB83f5
0 ETH0.0051451101.59166304
Create107176132020-08-23 16:17:561676 days ago1598199476IN
0x36Bae77a...504bB83f5
0 ETH0.0087768101.59166304
Return Funds107167012020-08-23 12:58:091676 days ago1598187489IN
0x36Bae77a...504bB83f5
0 ETH0.0039554486.83176086
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RampInstantTokenEscrows

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 420 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-12-05
*/

pragma solidity 0.5.10;

/**
 * Copyright © 2017-2019 Ramp Network sp. z o.o. All rights reserved (MIT License).
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 * and associated documentation files (the "Software"), to deal in the Software without restriction,
 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
 * is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies
 * or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */


interface Erc20Token {

    /**
     * Send `_value` of tokens from `msg.sender` to `_to`
     *
     * @param _to The recipient address
     * @param _value The amount of tokens to be transferred
     * @return Indication if the transfer was successful
     */
    function transfer(address _to, uint256 _value) external returns (bool success);

    /**
     * Approve `_spender` to withdraw from sender's account multiple times, up to `_value`
     * amount. If this function is called again it overwrites the current allowance with _value.
     *
     * @param _spender The address allowed to operate on sender's tokens
     * @param _value The amount of tokens allowed to be transferred
     * @return Indication if the approval was successful
     */
    function approve(address _spender, uint256 _value) external returns (bool success);

    /**
     * Transfer tokens on behalf of `_from`, provided it was previously approved.
     *
     * @param _from The transfer source address (tokens owner)
     * @param _to The transfer destination address
     * @param _value The amount of tokens to be transferred
     * @return Indication if the approval was successful
     */
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool success);

    /**
     * Returns the account balance of another account with address `_owner`.
     */
    function balanceOf(address _owner) external view returns (uint256);

}

contract AssetAdapter {

    uint16 public ASSET_TYPE;

    constructor(
        uint16 assetType
    ) internal {
        ASSET_TYPE = assetType;
    }

    /**
     * Ensure the described asset is sent to the given address.
     * Should revert if the transfer failed, but callers must also handle `false` being returned,
     * much like ERC-20's `transfer`.
     */
    function rawSendAsset(
        bytes memory assetData,
        uint256 _amount,
        address payable _to
    ) internal returns (bool success);  // solium-disable-line indentation
    // indentation rule bug ^ https://github.com/duaraghav8/Ethlint/issues/268

    /**
     * Ensure the described asset is sent to this contract.
     * Should revert if the transfer failed, but callers must also handle `false` being returned,
     * much like ERC-20's `transfer`.
     */
    function rawLockAsset(
        uint256 amount,
        address payable _from
    ) internal returns (bool success) {
        return RampInstantPoolInterface(_from).sendFundsToSwap(amount);
    }

    function getAmount(bytes memory assetData) internal pure returns (uint256);

    /**
     * Verify that the passed asset data can be handled by this adapter and given pool.
     *
     * @dev it's sufficient to use this only when creating a new swap -- all the other swap
     * functions first check if the swap hash is valid, while a swap hash with invalid
     * asset type wouldn't be created at all.
     *
     * @dev asset type is 2 bytes long, and it's at offset 32 in `assetData`'s memory (the first 32
     * bytes are the data length). We load the word at offset 2 (it ends with the asset type bytes),
     * and retrieve its last 2 bytes into a `uint16` variable.
     */
    modifier checkAssetTypeAndData(bytes memory assetData, address _pool) {
        uint16 assetType;
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            assetType := and(
                mload(add(assetData, 2)),
                0xffff
            )
        }
        require(assetType == ASSET_TYPE, "invalid asset type");
        checkAssetData(assetData, _pool);
        _;
    }

    function checkAssetData(bytes memory assetData, address _pool) internal view;

    function () external payable {
        revert("this contract cannot receive ether");
    }

}

contract RampInstantPoolInterface {

    uint16 public ASSET_TYPE;

    function sendFundsToSwap(uint256 _amount)
        public /*onlyActive onlySwapsContract isWithinLimits*/ returns(bool success);

}

contract RampInstantTokenPoolInterface is RampInstantPoolInterface {

    address public token;

}

contract Ownable {

    address public owner;

    event OwnerChanged(address oldOwner, address newOwner);

    constructor() internal {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "only the owner can call this");
        _;
    }

    function changeOwner(address _newOwner) external onlyOwner {
        owner = _newOwner;
        emit OwnerChanged(msg.sender, _newOwner);
    }

}

contract WithStatus is Ownable {

    enum Status {
        STOPPED,
        RETURN_ONLY,
        FINALIZE_ONLY,
        ACTIVE
    }

    event StatusChanged(Status oldStatus, Status newStatus);

    Status public status = Status.ACTIVE;

    function setStatus(Status _status) external onlyOwner {
        emit StatusChanged(status, _status);
        status = _status;
    }

    modifier statusAtLeast(Status _status) {
        require(status >= _status, "invalid contract status");
        _;
    }

}

contract WithOracles is Ownable {

    mapping (address => bool) oracles;

    constructor() internal {
        oracles[msg.sender] = true;
    }

    function approveOracle(address _oracle) external onlyOwner {
        oracles[_oracle] = true;
    }

    function revokeOracle(address _oracle) external onlyOwner {
        oracles[_oracle] = false;
    }

    modifier isOracle(address _oracle) {
        require(oracles[_oracle], "invalid oracle address");
        _;
    }

    modifier onlyOracleOrPool(address _pool, address _oracle) {
        require(
            msg.sender == _pool || (msg.sender == _oracle && oracles[msg.sender]),
            "only the oracle or the pool can call this"
        );
        _;
    }

}

contract WithSwapsCreator is Ownable {

    address internal swapCreator;

    event SwapCreatorChanged(address _oldCreator, address _newCreator);

    constructor() internal {
        swapCreator = msg.sender;
    }

    function changeSwapCreator(address _newCreator) public onlyOwner {
        swapCreator = _newCreator;
        emit SwapCreatorChanged(msg.sender, _newCreator);
    }

    modifier onlySwapCreator() {
        require(msg.sender == swapCreator, "only the swap creator can call this");
        _;
    }

}

contract AssetAdapterWithFees is Ownable, AssetAdapter {

    uint16 public feeThousandthsPercent;
    uint256 public minFeeAmount;

    constructor(uint16 _feeThousandthsPercent, uint256 _minFeeAmount) public {
        require(_feeThousandthsPercent < (1 << 16), "fee % too high");
        require(_minFeeAmount <= (1 << 255), "minFeeAmount too high");
        feeThousandthsPercent = _feeThousandthsPercent;
        minFeeAmount = _minFeeAmount;
    }

    function rawAccumulateFee(bytes memory assetData, uint256 _amount) internal;

    function accumulateFee(bytes memory assetData) internal {
        rawAccumulateFee(assetData, getFee(getAmount(assetData)));
    }

    function withdrawFees(
        bytes calldata assetData,
        address payable _to
    ) external /*onlyOwner*/ returns (bool success);  // solium-disable-line indentation

    function getFee(uint256 _amount) internal view returns (uint256) {
        uint256 fee = _amount * feeThousandthsPercent / 100000;
        return fee < minFeeAmount
            ? minFeeAmount
            : fee;
    }

    function getAmountWithFee(bytes memory assetData) internal view returns (uint256) {
        uint256 baseAmount = getAmount(assetData);
        return baseAmount + getFee(baseAmount);
    }

    function lockAssetWithFee(
        bytes memory assetData,
        address payable _from
    ) internal returns (bool success) {
        return rawLockAsset(getAmountWithFee(assetData), _from);
    }

    function sendAssetWithFee(
        bytes memory assetData,
        address payable _to
    ) internal returns (bool success) {
        return rawSendAsset(assetData, getAmountWithFee(assetData), _to);
    }

    function sendAssetKeepingFee(
        bytes memory assetData,
        address payable _to
    ) internal returns (bool success) {
        bool result = rawSendAsset(assetData, getAmount(assetData), _to);
        if (result) accumulateFee(assetData);
        return result;
    }

}

/**
 * The main contract managing Ramp Swaps escrows lifecycle: create, release or return.
 * Uses an abstract AssetAdapter to carry out the transfers and handle the particular asset data.
 * With a corresponding off-chain oracle protocol allows for atomic-swap-like transfer between
 * fiat currencies and crypto assets.
 *
 * @dev an active swap is represented by a hash of its details, mapped to its escrow expiration
 * timestamp. When the swap is created, its end time is set a given amount of time in the future
 * (but within {MIN,MAX}_SWAP_LOCK_TIME_S).
 * The hashed swap details are:
 *  * address pool: the `RampInstantPool` contract that sells the crypto asset;
 *  * address receiver: the user that buys the crypto asset;
 *  * address oracle: address of the oracle that handles this particular swap;
 *  * bytes assetData: description of the crypto asset, handled by an AssetAdapter;
 *  * bytes32 paymentDetailsHash: hash of the fiat payment details: account numbers, fiat value
 *    and currency, and the transfer reference (title), that can be verified off-chain.
 *
 * @author Ramp Network sp. z o.o.
 */
contract RampInstantEscrows
is Ownable, WithStatus, WithOracles, WithSwapsCreator, AssetAdapterWithFees {

    /// @dev contract version, defined in semver
    string public constant VERSION = "0.5.1";

    uint32 internal constant MIN_ACTUAL_TIMESTAMP = 1000000000;

    /// @notice lock time limits for pool's assets, after which unreleased escrows can be returned
    uint32 internal constant MIN_SWAP_LOCK_TIME_S = 24 hours;
    uint32 internal constant MAX_SWAP_LOCK_TIME_S = 30 days;

    event Created(bytes32 indexed swapHash);
    event Released(bytes32 indexed swapHash);
    event PoolReleased(bytes32 indexed swapHash);
    event Returned(bytes32 indexed swapHash);
    event PoolReturned(bytes32 indexed swapHash);

    /**
     * @notice Mapping from swap details hash to its end time (as a unix timestamp).
     * After the end time the swap can be cancelled, and the funds will be returned to the pool.
     */
    mapping (bytes32 => uint32) internal swaps;

    /**
     * Swap creation, called by the Ramp Network. Checks swap parameters and ensures the crypto
     * asset is locked on this contract.
     *
     * Emits a `Created` event with the swap hash.
     */
    function create(
        address payable _pool,
        address _receiver,
        address _oracle,
        bytes calldata _assetData,
        bytes32 _paymentDetailsHash,
        uint32 lockTimeS
    )
        external
        statusAtLeast(Status.ACTIVE)
        onlySwapCreator()
        isOracle(_oracle)
        checkAssetTypeAndData(_assetData, _pool)
        returns
        (bool success)
    {
        require(
            lockTimeS >= MIN_SWAP_LOCK_TIME_S && lockTimeS <= MAX_SWAP_LOCK_TIME_S,
            "lock time outside limits"
        );
        bytes32 swapHash = getSwapHash(
            _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash
        );
        requireSwapNotExists(swapHash);
        // Set up swap status before transfer, to avoid reentrancy attacks.
        // Even if a malicious token is somehow passed to this function (despite the oracle
        // signature of its details), the state of this contract is already fully updated,
        // so it will behave correctly (as it would be a separate call).
        // solium-disable-next-line security/no-block-members
        swaps[swapHash] = uint32(block.timestamp) + lockTimeS;
        require(
            lockAssetWithFee(_assetData, _pool),
            "escrow lock failed"
        );
        emit Created(swapHash);
        return true;
    }

    /**
     * Swap release, which transfers the crypto asset to the receiver and removes the swap from
     * the active swap mapping. Normally called by the swap's oracle after it confirms a matching
     * wire transfer on pool's bank account. Can be also called by the pool, for example in case
     * of a dispute, when the parties reach an agreement off-chain.
     *
     * Emits a `Released` or `PoolReleased` event with the swap's hash.
     */
    function release(
        address _pool,
        address payable _receiver,
        address _oracle,
        bytes calldata _assetData,
        bytes32 _paymentDetailsHash
    ) external statusAtLeast(Status.FINALIZE_ONLY) onlyOracleOrPool(_pool, _oracle) {
        bytes32 swapHash = getSwapHash(
            _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash
        );
        requireSwapCreated(swapHash);
        // Delete the swap status before transfer, to avoid reentrancy attacks.
        swaps[swapHash] = 0;
        require(
            sendAssetKeepingFee(_assetData, _receiver),
            "asset release failed"
        );
        if (msg.sender == _pool) {
            emit PoolReleased(swapHash);
        } else {
            emit Released(swapHash);
        }
    }

    /**
     * Swap return, which transfers the crypto asset back to the pool and removes the swap from
     * the active swap mapping. Can be called by the pool or the swap's oracle, but only if the
     * escrow lock time expired.
     *
     * Emits a `Returned` or `PoolReturned` event with the swap's hash.
     */
    function returnFunds(
        address payable _pool,
        address _receiver,
        address _oracle,
        bytes calldata _assetData,
        bytes32 _paymentDetailsHash
    ) external statusAtLeast(Status.RETURN_ONLY) onlyOracleOrPool(_pool, _oracle) {
        bytes32 swapHash = getSwapHash(
            _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash
        );
        requireSwapExpired(swapHash);
        // Delete the swap status before transfer, to avoid reentrancy attacks.
        swaps[swapHash] = 0;
        require(
            sendAssetWithFee(_assetData, _pool),
            "asset return failed"
        );
        if (msg.sender == _pool) {
            emit PoolReturned(swapHash);
        } else {
            emit Returned(swapHash);
        }
    }

    /**
     * Given all valid swap details, returns its status. The return can be:
     * 0: the swap details are invalid, swap doesn't exist, or was already released/returned.
     * >1: the swap was created, and the value is a timestamp indicating end of its lock time.
     */
    function getSwapStatus(
        address _pool,
        address _receiver,
        address _oracle,
        bytes calldata _assetData,
        bytes32 _paymentDetailsHash
    ) external view returns (uint32 status) {
        bytes32 swapHash = getSwapHash(
            _pool, _receiver, _oracle, keccak256(_assetData), _paymentDetailsHash
        );
        return swaps[swapHash];
    }

    /**
     * Calculates the swap hash used to reference the swap in this contract's storage.
     */
    function getSwapHash(
        address _pool,
        address _receiver,
        address _oracle,
        bytes32 assetHash,
        bytes32 _paymentDetailsHash
    ) internal pure returns (bytes32) {
        return keccak256(
            abi.encodePacked(
                _pool, _receiver, _oracle, assetHash, _paymentDetailsHash
            )
        );
    }

    function requireSwapNotExists(bytes32 swapHash) internal view {
        require(
            swaps[swapHash] == 0,
            "swap already exists"
        );
    }

    function requireSwapCreated(bytes32 swapHash) internal view {
        require(
            swaps[swapHash] > MIN_ACTUAL_TIMESTAMP,
            "swap invalid"
        );
    }

    function requireSwapExpired(bytes32 swapHash) internal view {
        require(
            // solium-disable-next-line security/no-block-members
            swaps[swapHash] > MIN_ACTUAL_TIMESTAMP && block.timestamp > swaps[swapHash],
            "swap not expired or invalid"
        );
    }

}

contract TokenAdapter is AssetAdapterWithFees {

    uint16 internal constant TOKEN_TYPE_ID = 2;
    uint16 internal constant TOKEN_ASSET_DATA_LENGTH = 54;
    mapping (address => uint256) internal accumulatedFees;

    constructor() internal AssetAdapter(TOKEN_TYPE_ID) {}

    /**
    * @dev token assetData bytes contents:
    * offset length type     contents
    * +00    32     uint256  data length (== 0x36 == 54 bytes)
    * +32     2     uint16   asset type  (== TOKEN_TYPE_ID == 2)
    * +34    32     uint256  token amount in units
    * +66    20     address  token contract address
    */
    function getAmount(bytes memory assetData) internal pure returns (uint256 amount) {
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            amount := mload(add(assetData, 34))
        }
    }

    /**
     * @dev To retrieve the address at offset 66, get the word at offset 54 and return its last
     * 20 bytes. See `getAmount` for byte offsets table.
     */
    function getTokenAddress(bytes memory assetData) internal pure returns (address tokenAddress) {
        // solium-disable-next-line security/no-inline-assembly
        assembly {
            tokenAddress := and(
                mload(add(assetData, 54)),
                0xffffffffffffffffffffffffffffffffffffffff
            )
        }
    }

    function rawSendAsset(
        bytes memory assetData,
        uint256 _amount,
        address payable _to
    ) internal returns (bool success) {
        Erc20Token token = Erc20Token(getTokenAddress(assetData));
        return token.transfer(_to, _amount);
    }

    function rawAccumulateFee(bytes memory assetData, uint256 _amount) internal {
        accumulatedFees[getTokenAddress(assetData)] += _amount;
    }

    function withdrawFees(
        bytes calldata assetData,
        address payable _to
    ) external onlyOwner returns (bool success) {
        address token = getTokenAddress(assetData);
        uint256 fees = accumulatedFees[token];
        accumulatedFees[token] = 0;
        require(Erc20Token(token).transfer(_to, fees), "fees transfer failed");
        return true;
    }

    function checkAssetData(bytes memory assetData, address _pool) internal view {
        require(assetData.length == TOKEN_ASSET_DATA_LENGTH, "invalid asset data length");
        require(
            RampInstantTokenPoolInterface(_pool).token() == getTokenAddress(assetData),
            "invalid pool token address"
        );
    }

}

contract RampInstantTokenEscrows is RampInstantEscrows, TokenAdapter {

    constructor(
        uint16 _feeThousandthsPercent,
        uint256 _minFeeAmount
    ) public AssetAdapterWithFees(_feeThousandthsPercent, _minFeeAmount) {}

}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"},{"name":"lockTimeS","type":"uint32"}],"name":"create","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeThousandthsPercent","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"status","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCreator","type":"address"}],"name":"changeSwapCreator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_status","type":"uint8"}],"name":"setStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","type":"address"}],"name":"revokeOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ASSET_TYPE","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"getSwapStatus","outputs":[{"name":"status","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"release","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pool","type":"address"},{"name":"_receiver","type":"address"},{"name":"_oracle","type":"address"},{"name":"_assetData","type":"bytes"},{"name":"_paymentDetailsHash","type":"bytes32"}],"name":"returnFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"assetData","type":"bytes"},{"name":"_to","type":"address"}],"name":"withdrawFees","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oracle","type":"address"}],"name":"approveOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minFeeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_feeThousandthsPercent","type":"uint16"},{"name":"_minFeeAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"PoolReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"Returned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"swapHash","type":"bytes32"}],"name":"PoolReturned","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_oldCreator","type":"address"},{"indexed":false,"name":"_newCreator","type":"address"}],"name":"SwapCreatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldStatus","type":"uint8"},{"indexed":false,"name":"newStatus","type":"uint8"}],"name":"StatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"}]

60806040526000805460ff60a01b19167403000000000000000000000000000000000000000017905534801561003457600080fd5b50604051611bc2380380611bc28339818101604052604081101561005757600080fd5b50805160209182015160008054336001600160a01b0319918216811783558083526001958690526040909220805460ff1916909517909455600280549094161761ffff60a01b191674020000000000000000000000000000000000000000179092559081816201000061ffff83161061013157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f666565202520746f6f2068696768000000000000000000000000000000000000604482015290519081900360640190fd5b7f80000000000000000000000000000000000000000000000000000000000000008111156101c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d696e466565416d6f756e7420746f6f20686967680000000000000000000000604482015290519081900360640190fd5b6002805461ffff9093167601000000000000000000000000000000000000000000000261ffff60b01b199093169290921790915560035550506119ba806102086000396000f3fe6080604052600436106100f35760003560e01c8063946519f11161008a578063bfe5d9c511610059578063bfe5d9c51461054e578063f47bc89c146105d4578063f5d3647514610607578063ffa1ad741461062e576100f3565b8063946519f1146103285780639a3c6e29146103df578063a6f9dae11461047d578063a80e7acb146104b0576100f3565b80632e49d78b116100c65780632e49d78b146102825780635983e6b0146102af5780638815eb39146102e25780638da5cb5b146102f7576100f3565b80630b898c9e1461012a5780630bc2aad2146101e8578063200d2ed21461021457806326bdee371461024d575b60405162461bcd60e51b81526004018080602001828103825260228152602001806118f86022913960400191505060405180910390fd5b34801561013657600080fd5b506101d4600480360360c081101561014d57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561018957600080fd5b82018360208201111561019b57600080fd5b803590602001918460018302840111640100000000831117156101bd57600080fd5b91935091508035906020013563ffffffff166106b8565b604080519115158252519081900360200190f35b3480156101f457600080fd5b506101fd610a31565b6040805161ffff9092168252519081900360200190f35b34801561022057600080fd5b50610229610a42565b6040518082600381111561023957fe5b60ff16815260200191505060405180910390f35b34801561025957600080fd5b506102806004803603602081101561027057600080fd5b50356001600160a01b0316610a52565b005b34801561028e57600080fd5b50610280600480360360208110156102a557600080fd5b503560ff16610afb565b3480156102bb57600080fd5b50610280600480360360208110156102d257600080fd5b50356001600160a01b0316610bd9565b3480156102ee57600080fd5b506101fd610c47565b34801561030357600080fd5b5061030c610c58565b604080516001600160a01b039092168252519081900360200190f35b34801561033457600080fd5b506103c6600480360360a081101561034b57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561038757600080fd5b82018360208201111561039957600080fd5b803590602001918460018302840111640100000000831117156103bb57600080fd5b919350915035610c67565b6040805163ffffffff9092168252519081900360200190f35b3480156103eb57600080fd5b50610280600480360360a081101561040257600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b919350915035610cb5565b34801561048957600080fd5b50610280600480360360208110156104a057600080fd5b50356001600160a01b0316610eed565b3480156104bc57600080fd5b50610280600480360360a08110156104d357600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184600183028401116401000000008311171561054357600080fd5b919350915035610f96565b34801561055a57600080fd5b506101d46004803603604081101561057157600080fd5b81019060208101813564010000000081111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111640100000000831117156105c057600080fd5b9193509150356001600160a01b03166111cd565b3480156105e057600080fd5b50610280600480360360208110156105f757600080fd5b50356001600160a01b031661134e565b34801561061357600080fd5b5061061c6113c2565b60408051918252519081900360200190f35b34801561063a57600080fd5b506106436113c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561067d578181015183820152602001610665565b50505050905090810190601f1680156106aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106d557fe5b1015610722576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b6002546001600160a01b0316331461076b5760405162461bcd60e51b815260040180806020018281038252602381526020018061191a6023913960400191505060405180910390fd5b6001600160a01b038716600090815260016020526040902054879060ff166107da576040805162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c65206164647265737300000000000000000000604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028181015190548c9161ffff90811691600160a01b900416811461087c576040805162461bcd60e51b815260206004820152601260248201527f696e76616c696420617373657420747970650000000000000000000000000000604482015290519081900360640190fd5b61088683836113e9565b6201518063ffffffff8816108015906108a8575062278d0063ffffffff881611155b6108f9576040805162461bcd60e51b815260206004820152601860248201527f6c6f636b2074696d65206f757473696465206c696d6974730000000000000000604482015290519081900360640190fd5b60006109268e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611515565b905061093181611577565b600081815260046020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b82526109a191908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f6115e1565b6109f2576040805162461bcd60e51b815260206004820152601260248201527f657363726f77206c6f636b206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600254600160b01b900461ffff1681565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a9f576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fadf20380d9033e7f11fc1856d69012aa18e03195a098cd38ce3be225966968a89281900390910190a150565b6000546001600160a01b03163314610b48576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610b8a57fe5b60ff168152602001826003811115610b9e57fe5b60ff1681526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610bd157fe5b021790555050565b6000546001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600254600160a01b900461ffff1681565b6000546001600160a01b031681565b600080610c94888888888860405180838380828437604051920182900390912093508a9250611515915050565b60009081526004602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610cd057fe5b1015610d1d576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b0383161480610d585750336001600160a01b038216148015610d5857503360009081526001602052604090205460ff165b610d935760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b6000610dbf8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b9050610dca816115fc565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610e23919089908990819084018382808284376000920191909152508d9250611659915050565b610e74576040805162461bcd60e51b815260206004820152601460248201527f61737365742072656c65617365206661696c6564000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b161415610eb55760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610ee1565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610f3a576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610fb157fe5b1015610ffe576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b03831614806110395750336001600160a01b03821614801561103957503360009081526001602052604090205460ff165b6110745760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b60006110a08a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b90506110ab81611680565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252611104919089908990819084018382808284376000920191909152508e925061170d915050565b611155576040805162461bcd60e51b815260206004820152601360248201527f61737365742072657475726e206661696c656400000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b1614156111965760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610ee1565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b0316331461121b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600061125c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172292505050565b6001600160a01b038082166000818152600560209081526040808320805490849055815163a9059cbb60e01b8152958a16600487015260248601819052905195965094929363a9059cbb9360448083019491928390030190829087803b1580156112c557600080fd5b505af11580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b5051611342576040805162461bcd60e51b815260206004820152601460248201527f66656573207472616e73666572206661696c6564000000000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6000546001600160a01b0316331461139b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60035481565b60405180604001604052806005815260200164302e352e3160d81b81525081565b815160361461143f576040805162461bcd60e51b815260206004820152601960248201527f696e76616c69642061737365742064617461206c656e67746800000000000000604482015290519081900360640190fd5b61144882611722565b6001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b50516001600160a01b031614611511576040805162461bcd60e51b815260206004820152601a60248201527f696e76616c696420706f6f6c20746f6b656e2061646472657373000000000000604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526004602052604090205463ffffffff16156115de576040805162461bcd60e51b815260206004820152601360248201527f7377617020616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b50565b60006115f56115ef84611732565b83611750565b9392505050565b600081815260046020526040902054633b9aca0063ffffffff909116116115de576040805162461bcd60e51b815260206004820152600c60248201526b1cddd85c081a5b9d985b1a5960a21b604482015290519081900360640190fd5b60008061166f84611669866117cb565b856117d2565b905080156115f5576115f584611875565b600081815260046020526040902054633b9aca0063ffffffff9091161180156116bc575060008181526004602052604090205463ffffffff1642115b6115de576040805162461bcd60e51b815260206004820152601b60248201527f73776170206e6f742065787069726564206f7220696e76616c69640000000000604482015290519081900360640190fd5b60006115f58361171c85611732565b846117d2565b603601516001600160a01b031690565b60008061173e836117cb565b90506117498161188f565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b50519392505050565b6022015190565b6000806117de85611722565b9050806001600160a01b031663a9059cbb84866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050506040513d602081101561186a57600080fd5b505195945050505050565b6115de8161188a611885846117cb565b61188f565b6118c5565b6002546000908190620186a090600160b01b900461ffff16840204905060035481106118bb57806115f5565b6003549392505050565b80600560006118d385611722565b6001600160a01b03168152602081019190915260400160002080549091019055505056fe7468697320636f6e74726163742063616e6e6f7420726563656976652065746865726f6e6c792074686520737761702063726561746f722063616e2063616c6c20746869736f6e6c7920746865206f776e65722063616e2063616c6c2074686973000000006f6e6c7920746865206f7261636c65206f722074686520706f6f6c2063616e2063616c6c2074686973a265627a7a7230582077241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e64736f6c634300050a003200000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064

Deployed Bytecode

0x6080604052600436106100f35760003560e01c8063946519f11161008a578063bfe5d9c511610059578063bfe5d9c51461054e578063f47bc89c146105d4578063f5d3647514610607578063ffa1ad741461062e576100f3565b8063946519f1146103285780639a3c6e29146103df578063a6f9dae11461047d578063a80e7acb146104b0576100f3565b80632e49d78b116100c65780632e49d78b146102825780635983e6b0146102af5780638815eb39146102e25780638da5cb5b146102f7576100f3565b80630b898c9e1461012a5780630bc2aad2146101e8578063200d2ed21461021457806326bdee371461024d575b60405162461bcd60e51b81526004018080602001828103825260228152602001806118f86022913960400191505060405180910390fd5b34801561013657600080fd5b506101d4600480360360c081101561014d57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561018957600080fd5b82018360208201111561019b57600080fd5b803590602001918460018302840111640100000000831117156101bd57600080fd5b91935091508035906020013563ffffffff166106b8565b604080519115158252519081900360200190f35b3480156101f457600080fd5b506101fd610a31565b6040805161ffff9092168252519081900360200190f35b34801561022057600080fd5b50610229610a42565b6040518082600381111561023957fe5b60ff16815260200191505060405180910390f35b34801561025957600080fd5b506102806004803603602081101561027057600080fd5b50356001600160a01b0316610a52565b005b34801561028e57600080fd5b50610280600480360360208110156102a557600080fd5b503560ff16610afb565b3480156102bb57600080fd5b50610280600480360360208110156102d257600080fd5b50356001600160a01b0316610bd9565b3480156102ee57600080fd5b506101fd610c47565b34801561030357600080fd5b5061030c610c58565b604080516001600160a01b039092168252519081900360200190f35b34801561033457600080fd5b506103c6600480360360a081101561034b57600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561038757600080fd5b82018360208201111561039957600080fd5b803590602001918460018302840111640100000000831117156103bb57600080fd5b919350915035610c67565b6040805163ffffffff9092168252519081900360200190f35b3480156103eb57600080fd5b50610280600480360360a081101561040257600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561043e57600080fd5b82018360208201111561045057600080fd5b8035906020019184600183028401116401000000008311171561047257600080fd5b919350915035610cb5565b34801561048957600080fd5b50610280600480360360208110156104a057600080fd5b50356001600160a01b0316610eed565b3480156104bc57600080fd5b50610280600480360360a08110156104d357600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561050f57600080fd5b82018360208201111561052157600080fd5b8035906020019184600183028401116401000000008311171561054357600080fd5b919350915035610f96565b34801561055a57600080fd5b506101d46004803603604081101561057157600080fd5b81019060208101813564010000000081111561058c57600080fd5b82018360208201111561059e57600080fd5b803590602001918460018302840111640100000000831117156105c057600080fd5b9193509150356001600160a01b03166111cd565b3480156105e057600080fd5b50610280600480360360208110156105f757600080fd5b50356001600160a01b031661134e565b34801561061357600080fd5b5061061c6113c2565b60408051918252519081900360200190f35b34801561063a57600080fd5b506106436113c8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561067d578181015183820152602001610665565b50505050905090810190601f1680156106aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600380600054600160a01b900460ff1660038111156106d557fe5b1015610722576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b6002546001600160a01b0316331461076b5760405162461bcd60e51b815260040180806020018281038252602381526020018061191a6023913960400191505060405180910390fd5b6001600160a01b038716600090815260016020526040902054879060ff166107da576040805162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c65206164647265737300000000000000000000604482015290519081900360640190fd5b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060028181015190548c9161ffff90811691600160a01b900416811461087c576040805162461bcd60e51b815260206004820152601260248201527f696e76616c696420617373657420747970650000000000000000000000000000604482015290519081900360640190fd5b61088683836113e9565b6201518063ffffffff8816108015906108a8575062278d0063ffffffff881611155b6108f9576040805162461bcd60e51b815260206004820152601860248201527f6c6f636b2074696d65206f757473696465206c696d6974730000000000000000604482015290519081900360640190fd5b60006109268e8e8e8e8e60405180838380828437808301925050509250505060405180910390208d611515565b905061093181611577565b600081815260046020908152604091829020805463ffffffff1916428c0163ffffffff161790558151601f8d018290048202810182019092528b82526109a191908d908d9081908401838280828437600081840152601f19601f820116905080830192505050505050508f6115e1565b6109f2576040805162461bcd60e51b815260206004820152601260248201527f657363726f77206c6f636b206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60405181907f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c90600090a25060019d9c50505050505050505050505050565b600254600160b01b900461ffff1681565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610a9f576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fadf20380d9033e7f11fc1856d69012aa18e03195a098cd38ce3be225966968a89281900390910190a150565b6000546001600160a01b03163314610b48576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b7fe1377aa21d49fa10bb9ece6a0cd4f75597a90a80c3750f7f7674967f49ab9a62600060149054906101000a900460ff168260405180836003811115610b8a57fe5b60ff168152602001826003811115610b9e57fe5b60ff1681526020019250505060405180910390a16000805482919060ff60a01b1916600160a01b836003811115610bd157fe5b021790555050565b6000546001600160a01b03163314610c26576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b600254600160a01b900461ffff1681565b6000546001600160a01b031681565b600080610c94888888888860405180838380828437604051920182900390912093508a9250611515915050565b60009081526004602052604090205463ffffffff1698975050505050505050565b600280600054600160a01b900460ff166003811115610cd057fe5b1015610d1d576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b0383161480610d585750336001600160a01b038216148015610d5857503360009081526001602052604090205460ff165b610d935760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b6000610dbf8a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b9050610dca816115fc565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252610e23919089908990819084018382808284376000920191909152508d9250611659915050565b610e74576040805162461bcd60e51b815260206004820152601460248201527f61737365742072656c65617365206661696c6564000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b161415610eb55760405181907f789952a21900cba4809507b4ba56618cee6a1e748254f8faab21e9b8f1c60bc990600090a2610ee1565b60405181907f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d1490600090a25b50505050505050505050565b6000546001600160a01b03163314610f3a576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03831690811790915560408051338152602081019290925280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150565b600180600054600160a01b900460ff166003811115610fb157fe5b1015610ffe576040805162461bcd60e51b8152602060048201526017602482015276696e76616c696420636f6e74726163742073746174757360481b604482015290519081900360640190fd5b8685336001600160a01b03831614806110395750336001600160a01b03821614801561103957503360009081526001602052604090205460ff165b6110745760405162461bcd60e51b815260040180806020018281038252602981526020018061195d6029913960400191505060405180910390fd5b60006110a08a8a8a8a8a60405180838380828437604051920182900390912093508c9250611515915050565b90506110ab81611680565b600081815260046020908152604091829020805463ffffffff191690558151601f8901829004820281018201909252878252611104919089908990819084018382808284376000920191909152508e925061170d915050565b611155576040805162461bcd60e51b815260206004820152601360248201527f61737365742072657475726e206661696c656400000000000000000000000000604482015290519081900360640190fd5b336001600160a01b038b1614156111965760405181907f7b5ac55826e0ca40c3f69722d916fb9962d86cffcddc9c84d082b712419e5cbd90600090a2610ee1565b60405181907fc99795d9dc9d68f27b21e122a0e663f689138f9110dee0122fc2980f8d57977590600090a250505050505050505050565b600080546001600160a01b0316331461121b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b600061125c85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172292505050565b6001600160a01b038082166000818152600560209081526040808320805490849055815163a9059cbb60e01b8152958a16600487015260248601819052905195965094929363a9059cbb9360448083019491928390030190829087803b1580156112c557600080fd5b505af11580156112d9573d6000803e3d6000fd5b505050506040513d60208110156112ef57600080fd5b5051611342576040805162461bcd60e51b815260206004820152601460248201527f66656573207472616e73666572206661696c6564000000000000000000000000604482015290519081900360640190fd5b50600195945050505050565b6000546001600160a01b0316331461139b576040805162461bcd60e51b815260206004820152601c602482015260008051602061193d833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60035481565b60405180604001604052806005815260200164302e352e3160d81b81525081565b815160361461143f576040805162461bcd60e51b815260206004820152601960248201527f696e76616c69642061737365742064617461206c656e67746800000000000000604482015290519081900360640190fd5b61144882611722565b6001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b50516001600160a01b031614611511576040805162461bcd60e51b815260206004820152601a60248201527f696e76616c696420706f6f6c20746f6b656e2061646472657373000000000000604482015290519081900360640190fd5b5050565b604080516bffffffffffffffffffffffff19606097881b811660208084019190915296881b811660348301529490961b9093166048860152605c850191909152607c8085019190915281518085039091018152609c9093019052815191012090565b60008181526004602052604090205463ffffffff16156115de576040805162461bcd60e51b815260206004820152601360248201527f7377617020616c72656164792065786973747300000000000000000000000000604482015290519081900360640190fd5b50565b60006115f56115ef84611732565b83611750565b9392505050565b600081815260046020526040902054633b9aca0063ffffffff909116116115de576040805162461bcd60e51b815260206004820152600c60248201526b1cddd85c081a5b9d985b1a5960a21b604482015290519081900360640190fd5b60008061166f84611669866117cb565b856117d2565b905080156115f5576115f584611875565b600081815260046020526040902054633b9aca0063ffffffff9091161180156116bc575060008181526004602052604090205463ffffffff1642115b6115de576040805162461bcd60e51b815260206004820152601b60248201527f73776170206e6f742065787069726564206f7220696e76616c69640000000000604482015290519081900360640190fd5b60006115f58361171c85611732565b846117d2565b603601516001600160a01b031690565b60008061173e836117cb565b90506117498161188f565b0192915050565b6000816001600160a01b03166381fd3f0b846040518263ffffffff1660e01b815260040180828152602001915050602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b50519392505050565b6022015190565b6000806117de85611722565b9050806001600160a01b031663a9059cbb84866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b505050506040513d602081101561186a57600080fd5b505195945050505050565b6115de8161188a611885846117cb565b61188f565b6118c5565b6002546000908190620186a090600160b01b900461ffff16840204905060035481106118bb57806115f5565b6003549392505050565b80600560006118d385611722565b6001600160a01b03168152602081019190915260400160002080549091019055505056fe7468697320636f6e74726163742063616e6e6f7420726563656976652065746865726f6e6c792074686520737761702063726561746f722063616e2063616c6c20746869736f6e6c7920746865206f776e65722063616e2063616c6c2074686973000000006f6e6c7920746865206f7261636c65206f722074686520706f6f6c2063616e2063616c6c2074686973a265627a7a7230582077241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e64736f6c634300050a0032

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

00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000064

-----Decoded View---------------
Arg [0] : _feeThousandthsPercent (uint16): 1000
Arg [1] : _minFeeAmount (uint256): 100

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000064


Deployed Bytecode Sourcemap

20398:243:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5055:44;;-1:-1:-1;;;5055:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:1388;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12132:1388:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;12132:1388:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;12132:1388:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12132:1388:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12132:1388:0;;-1:-1:-1;12132:1388:0;-1:-1:-1;12132:1388:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7800:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7800:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6108:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6108:36:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7420:168;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7420:168:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7420:168:0;-1:-1:-1;;;;;7420:168:0;;:::i;:::-;;6153:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6153:135:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6153:135:0;;;;:::i;6696:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6696:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6696:101:0;-1:-1:-1;;;;;6696:101:0;;:::i;2731:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2731:24:0;;;:::i;5461:20::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5461:20:0;;;:::i;:::-;;;;-1:-1:-1;;;;;5461:20:0;;;;;;;;;;;;;;16261:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16261:397:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;16261:397:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;16261:397:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16261:397:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16261:397:0;;-1:-1:-1;16261:397:0;-1:-1:-1;16261:397:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;13990:824;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13990:824:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;13990:824:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;13990:824:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;13990:824:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;13990:824:0;;-1:-1:-1;13990:824:0;-1:-1:-1;13990:824:0;;:::i;5741:146::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5741:146:0;-1:-1:-1;;;;;5741:146:0;;:::i;15149:818::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15149:818:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;15149:818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15149:818:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15149:818:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15149:818:0;;-1:-1:-1;15149:818:0;-1:-1:-1;15149:818:0;;:::i;19658:385::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19658:385:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19658:385:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;19658:385:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19658:385:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19658:385:0;;-1:-1:-1;19658:385:0;-1:-1:-1;19658:385:0;-1:-1:-1;;;;;19658:385:0;;:::i;6587:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6587:101:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6587:101:0;-1:-1:-1;;;;;6587:101:0;;:::i;7842:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7842:27:0;;;:::i;:::-;;;;;;;;;;;;;;;;11075:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11075:40:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11075:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:1388;12529:12;12383:13;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;7656:11;;-1:-1:-1;;;;;7656:11:0;7642:10;:25;7634:73;;;;-1:-1:-1;;;7634:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6859:16:0;;;;;;:7;:16;;;;;;12443:7;;6859:16;;6851:51;;;;;-1:-1:-1;;;6851:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12483:10;;4488:434;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;4741:1:0;4726:17;;;4720:24;4826:10;;12495:5;;4763:6;4698:86;;;;-1:-1:-1;;;4826:10:0;;;4813:23;;4805:54;;;;;-1:-1:-1;;;4805:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4870:32;4885:9;4896:5;4870:14;:32::i;:::-;11339:8;12581:33;;;;;;;:70;;-1:-1:-1;11402:7:0;12618:33;;;;;12581:70;12559:144;;;;;-1:-1:-1;;;12559:144:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12714:16;12733:106;12759:5;12766:9;12777:7;12796:10;;12786:21;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;12786:21:0;;;;;;;;;;;;;12809:19;12733:11;:106::i;:::-;12714:125;;12850:30;12871:8;12850:20;:30::i;:::-;13290:15;;;;:5;:15;;;;;;;;;:53;;-1:-1:-1;;13290:53:0;13315:15;13308:35;;13290:53;;;;;13376:35;;;;;;;;;;;;;;;;;;;;;;;13393:10;;13376:35;;;;;;13393:10;13376:35;;13393:10;13376:35;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;13376:35:0;;;;;;13405:5;13376:16;:35::i;:::-;13354:103;;;;;-1:-1:-1;;;13354:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13473:17;;13481:8;;13473:17;;;;;-1:-1:-1;13508:4:0;;12132:1388;-1:-1:-1;;;;;;;;;;;;;12132:1388:0:o;7800:35::-;;;-1:-1:-1;;;7800:35:0;;;;;:::o;6108:36::-;;;-1:-1:-1;;;6108:36:0;;;;;:::o;7420:168::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;7496:11;:25;;-1:-1:-1;;;;;;7496:25:0;-1:-1:-1;;;;;7496:25:0;;;;;;;;7537:43;;;7556:10;7537:43;;;;;;;;;;;;;;;;;;;;;7420:168;:::o;6153:135::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;6223:30;6237:6;;;;;;;;;;;6245:7;6223:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6264:6;:16;;6273:7;;6264:6;-1:-1:-1;;;;6264:16:0;-1:-1:-1;;;6273:7:0;6264:16;;;;;;;;;;;;;6153:135;:::o;6696:101::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6765:16:0;6784:5;6765:16;;;:7;:16;;;;;:24;;-1:-1:-1;;6765:24:0;;;6696:101::o;2731:24::-;;;-1:-1:-1;;;2731:24:0;;;;;:::o;5461:20::-;;;-1:-1:-1;;;;;5461:20:0;;:::o;16261:397::-;16466:13;16492:16;16511:106;16537:5;16544:9;16555:7;16574:10;;16564:21;;;;;30:3:-1;22:6;14;1:33;16564:21:0;;45:16:-1;;16564:21:0;;;;;;;-1:-1:-1;16587:19:0;;-1:-1:-1;16511:11:0;;-1:-1:-1;;16511:106:0:i;:::-;16635:15;;;;:5;:15;;;;;;;;;16261:397;-1:-1:-1;;;;;;;;16261:397:0:o;13990:824::-;14197:20;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;14236:5;14243:7;7021:10;-1:-1:-1;;;;;7021:19:0;;;;:69;;-1:-1:-1;7045:10:0;-1:-1:-1;;;;;7045:21:0;;;:44;;;;-1:-1:-1;7078:10:0;7070:19;;;;:7;:19;;;;;;;;7045:44;6999:160;;;;-1:-1:-1;;;6999:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14263:16;14282:106;14308:5;14315:9;14326:7;14345:10;;14335:21;;;;;30:3:-1;22:6;14;1:33;14335:21:0;;45:16:-1;;14335:21:0;;;;;;;-1:-1:-1;14358:19:0;;-1:-1:-1;14282:11:0;;-1:-1:-1;;14282:106:0:i;:::-;14263:125;;14399:28;14418:8;14399:18;:28::i;:::-;14537:1;14519:15;;;:5;:15;;;;;;;;;:19;;-1:-1:-1;;14519:19:0;;;14571:42;;;;;;;;;;;;;;;;;;;;;;;14591:10;;;;;;14571:42;;14591:10;;;;14571:42;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;14603:9:0;;-1:-1:-1;14571:19:0;;-1:-1:-1;;14571:42:0:i;:::-;14549:112;;;;;-1:-1:-1;;;14549:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14676:10;-1:-1:-1;;;;;14676:19:0;;;14672:135;;;14717:22;;14730:8;;14717:22;;;;;14672:135;;;14777:18;;14786:8;;14777:18;;;;;14672:135;7170:1;6410;;13990:824;;;;;;;:::o;5741:146::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;5811:5;:17;;-1:-1:-1;;;;;;5811:17:0;-1:-1:-1;;;;;5811:17:0;;;;;;;;5844:35;;;5857:10;5844:35;;;;;;;;;;;;;;;;;;;;;5741:146;:::o;15149:818::-;15360:18;;6354:6;;-1:-1:-1;;;6354:6:0;;;;:17;;;;;;;;;;6346:53;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;-1:-1:-1;;;6346:53:0;;;;;;;;;;;;;;;15397:5;15404:7;7021:10;-1:-1:-1;;;;;7021:19:0;;;;:69;;-1:-1:-1;7045:10:0;-1:-1:-1;;;;;7045:21:0;;;:44;;;;-1:-1:-1;7078:10:0;7070:19;;;;:7;:19;;;;;;;;7045:44;6999:160;;;;-1:-1:-1;;;6999:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15424:16;15443:106;15469:5;15476:9;15487:7;15506:10;;15496:21;;;;;30:3:-1;22:6;14;1:33;15496:21:0;;45:16:-1;;15496:21:0;;;;;;;-1:-1:-1;15519:19:0;;-1:-1:-1;15443:11:0;;-1:-1:-1;;15443:106:0:i;:::-;15424:125;;15560:28;15579:8;15560:18;:28::i;:::-;15698:1;15680:15;;;:5;:15;;;;;;;;;:19;;-1:-1:-1;;15680:19:0;;;15732:35;;;;;;;;;;;;;;;;;;;;;;;15749:10;;;;;;15732:35;;15749:10;;;;15732:35;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;15761:5:0;;-1:-1:-1;15732:16:0;;-1:-1:-1;;15732:35:0:i;:::-;15710:104;;;;;-1:-1:-1;;;15710:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15829:10;-1:-1:-1;;;;;15829:19:0;;;15825:135;;;15870:22;;15883:8;;15870:22;;;;;15825:135;;;15930:18;;15939:8;;15930:18;;;;;7170:1;6410;;15149:818;;;;;;;:::o;19658:385::-;19780:12;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;19805:13;19821:26;19837:9;;19821:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;19821:15:0;;-1:-1:-1;;;19821:26:0:i;:::-;-1:-1:-1;;;;;19873:22:0;;;19858:12;19873:22;;;:15;:22;;;;;;;;;;19906:26;;;;19951:37;;-1:-1:-1;;;19951:37:0;;;;;;;;;;;;;;;;;19805:42;;-1:-1:-1;19873:22:0;;;19951:26;;:37;;;;;;;;;;;;;;19873:22;19951:37;;;5:2:-1;;;;30:1;27;20:12;5:2;19951:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19951:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19951:37:0;19943:70;;;;;-1:-1:-1;;;19943:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20031:4:0;;19658:385;-1:-1:-1;;;;;19658:385:0:o;6587:101::-;5675:5;;-1:-1:-1;;;;;5675:5:0;5661:10;:19;5653:60;;;;;-1:-1:-1;;;5653:60:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5653:60:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6657:16:0;;;;;6676:4;6657:16;;;;;;;;:23;;-1:-1:-1;;6657:23:0;;;;;;6587:101::o;7842:27::-;;;;:::o;11075:40::-;;;;;;;;;;;;;;-1:-1:-1;;;11075:40:0;;;;:::o;20051:338::-;20147:16;;17979:2;20147:43;20139:81;;;;;-1:-1:-1;;;20139:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20301:26;20317:9;20301:15;:26::i;:::-;-1:-1:-1;;;;;20253:74:0;20283:5;-1:-1:-1;;;;;20253:42:0;;:44;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20253:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20253:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20253:44:0;-1:-1:-1;;;;;20253:74:0;;20231:150;;;;;-1:-1:-1;;;20231:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20051:338;;:::o;16772:372::-;17018:107;;;-1:-1:-1;;17018:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;17018:107:0;;;;;;16994:142;;;;;;16772:372::o;17152:170::-;17247:15;;;;:5;:15;;;;;;;;:20;17225:89;;;;;-1:-1:-1;;;17225:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17152:170;:::o;9043:204::-;9159:12;9191:48;9204:27;9221:9;9204:16;:27::i;:::-;9233:5;9191:12;:48::i;:::-;9184:55;9043:204;-1:-1:-1;;;9043:204:0:o;17330:179::-;17423:15;;;;:5;:15;;;;;;11172:10;17423:38;:15;;;:38;17401:100;;;;;-1:-1:-1;;;17401:100:0;;;;;;;;;;;;-1:-1:-1;;;17401:100:0;;;;;;;;;;;;;;9474:285;9591:12;9616:11;9630:50;9643:9;9654:20;9664:9;9654;:20::i;:::-;9676:3;9630:12;:50::i;:::-;9616:64;;9695:6;9691:36;;;9703:24;9717:9;9703:13;:24::i;17517:298::-;17677:15;;;;:5;:15;;;;;;11172:10;17677:38;:15;;;:38;:75;;;;-1:-1:-1;17737:15:0;;;;:5;:15;;;;;;;;17719;:33;17677:75;17588:219;;;;;-1:-1:-1;;;17588:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9255:211;9369:12;9401:57;9414:9;9425:27;9442:9;9425:16;:27::i;:::-;9454:3;9401:12;:57::i;18862:351::-;19115:2;19100:18;19094:25;-1:-1:-1;;;;;19072:123:0;;19041:165::o;8844:191::-;8917:7;8937:18;8958:20;8968:9;8958;:20::i;:::-;8937:41;;9009:18;9016:10;9009:6;:18::i;:::-;8996:31;;8844:191;-1:-1:-1;;8844:191:0:o;3580:199::-;3684:12;3741:5;-1:-1:-1;;;;;3716:47:0;;3764:6;3716:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3716:55:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3716:55:0;;3580:199;-1:-1:-1;;;3580:199:0:o;18446:235::-;18659:2;18644:18;18638:25;;18613:61::o;19221:272::-;19357:12;19382:16;19412:26;19428:9;19412:15;:26::i;:::-;19382:57;;19457:5;-1:-1:-1;;;;;19457:14:0;;19472:3;19477:7;19457:28;;;;;;;;;;;;;-1:-1:-1;;;;;19457:28:0;-1:-1:-1;;;;;19457:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19457:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19457:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19457:28:0;;19221:272;-1:-1:-1;;;;;19221:272:0:o;8291:132::-;8358:57;8375:9;8386:28;8393:20;8403:9;8393;:20::i;:::-;8386:6;:28::i;:::-;8358:16;:57::i;8615:221::-;8715:21;;8671:7;;;;8739:6;;-1:-1:-1;;;8715:21:0;;;;8705:31;;:40;8691:54;;8769:12;;8763:3;:18;:65;;8825:3;8763:65;;;8797:12;;8756:72;8615:221;-1:-1:-1;;;8615:221:0:o;19501:149::-;19635:7;19588:15;:43;19604:26;19620:9;19604:15;:26::i;:::-;-1:-1:-1;;;;;19588:43:0;;;;;;;;;;;;-1:-1:-1;19588:43:0;:54;;;;;;;-1:-1:-1;;19501:149:0:o

Swarm Source

bzzr://77241addf942e6cf978e5ddf0120b14d1aaa7300e6554f491b68c0554ca10c3e

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
[ 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.