ETH Price: $2,707.96 (+1.52%)

Contract

0xccfcF083335633C48e99872899586113A2BD08D8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Price94401302020-02-08 5:14:581838 days ago1581138898IN
0xccfcF083...3A2BD08D8
0 ETH0.000480786.10000001
Update Price94396042020-02-08 3:16:381838 days ago1581131798IN
0xccfcF083...3A2BD08D8
0 ETH0.000669938.50000001
Update Price94322632020-02-07 0:03:501839 days ago1581033830IN
0xccfcF083...3A2BD08D8
0 ETH0.00047296.00000001
Update Price94321522020-02-06 23:38:311839 days ago1581032311IN
0xccfcF083...3A2BD08D8
0 ETH0.000709359.00000001
Update Price94075442020-02-03 5:04:281843 days ago1580706268IN
0xccfcF083...3A2BD08D8
0 ETH0.000708889.00000001
Update Price94056242020-02-02 21:50:371843 days ago1580680237IN
0xccfcF083...3A2BD08D8
0 ETH0.000709359.00000001
Update Price93650192020-01-27 16:07:331849 days ago1580141253IN
0xccfcF083...3A2BD08D8
0 ETH0.0008010410.17000001
Update Price93649032020-01-27 15:41:391849 days ago1580139699IN
0xccfcF083...3A2BD08D8
0 ETH0.000709119.00000001
Update Price93458342020-01-24 17:22:261852 days ago1579886546IN
0xccfcF083...3A2BD08D8
0 ETH0.000801310.17000001
Update Price93447942020-01-24 13:36:371852 days ago1579872997IN
0xccfcF083...3A2BD08D8
0 ETH0.000708889.00000001
Update Price93418982020-01-24 2:54:371853 days ago1579834477IN
0xccfcF083...3A2BD08D8
0 ETH0.000709359.00000001
Update Price93393902020-01-23 17:44:181853 days ago1579801458IN
0xccfcF083...3A2BD08D8
0 ETH0.000708889.00000001
Update Price93393602020-01-23 17:36:431853 days ago1579801003IN
0xccfcF083...3A2BD08D8
0 ETH0.0008899311.30000001
Update Price93383872020-01-23 14:10:561853 days ago1579788656IN
0xccfcF083...3A2BD08D8
0 ETH0.000551627.00000001
Update Price93269622020-01-21 20:13:381855 days ago1579637618IN
0xccfcF083...3A2BD08D8
0 ETH0.000709119.00000001
Update Price93268532020-01-21 19:47:441855 days ago1579636064IN
0xccfcF083...3A2BD08D8
0 ETH0.0008015510.17000001
Update Price93238472020-01-21 8:42:331855 days ago1579596153IN
0xccfcF083...3A2BD08D8
0 ETH0.000551537.00000001
Update Price93237162020-01-21 8:14:441855 days ago1579594484IN
0xccfcF083...3A2BD08D8
0 ETH0.000551537.00000001
Update Price93217842020-01-21 1:02:051856 days ago1579568525IN
0xccfcF083...3A2BD08D8
0 ETH0.000559417.10000001
Update Price93155302020-01-20 2:09:341857 days ago1579486174IN
0xccfcF083...3A2BD08D8
0 ETH0.000598817.60000001
Update Price93117802020-01-19 12:32:301857 days ago1579437150IN
0xccfcF083...3A2BD08D8
0 ETH0.000709119.00000001
Update Price93117682020-01-19 12:29:361857 days ago1579436976IN
0xccfcF083...3A2BD08D8
0 ETH0.000709119.00000001
Update Price93114252020-01-19 11:18:401857 days ago1579432720IN
0xccfcF083...3A2BD08D8
0 ETH0.0007879110.00000001
Update Price93022382020-01-18 1:11:501859 days ago1579309910IN
0xccfcF083...3A2BD08D8
0 ETH0.000866711.00000001
Update Price93020592020-01-18 0:37:271859 days ago1579307847IN
0xccfcF083...3A2BD08D8
0 ETH0.000603377.66140001
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:
DaiPriceOracle

Compiler Version
v0.5.7+commit.6da8b019

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-22
*/

/*

    Copyright 2019 dYdX Trading Inc.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

*/

pragma solidity 0.5.7;
pragma experimental ABIEncoderV2;

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * @notice Renouncing to ownership will leave the contract without an owner.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/protocol/interfaces/IErc20.sol

/**
 * @title IErc20
 * @author dYdX
 *
 * Interface for using ERC20 Tokens. We have to use a special interface to call ERC20 functions so
 * that we don't automatically revert when calling non-compliant tokens that have no return value for
 * transfer(), transferFrom(), or approve().
 */
interface IErc20 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply(
    )
        external
        view
        returns (uint256);

    function balanceOf(
        address who
    )
        external
        view
        returns (uint256);

    function allowance(
        address owner,
        address spender
    )
        external
        view
        returns (uint256);

    function transfer(
        address to,
        uint256 value
    )
        external;

    function transferFrom(
        address from,
        address to,
        uint256 value
    )
        external;

    function approve(
        address spender,
        uint256 value
    )
        external;

    function name()
        external
        view
        returns (string memory);

    function symbol()
        external
        view
        returns (string memory);

    function decimals()
        external
        view
        returns (uint8);
}

// File: contracts/protocol/lib/Monetary.sol

/**
 * @title Monetary
 * @author dYdX
 *
 * Library for types involving money
 */
library Monetary {

    /*
     * The price of a base-unit of an asset.
     */
    struct Price {
        uint256 value;
    }

    /*
     * Total value of an some amount of an asset. Equal to (price * amount).
     */
    struct Value {
        uint256 value;
    }
}

// File: contracts/protocol/interfaces/IPriceOracle.sol

/**
 * @title IPriceOracle
 * @author dYdX
 *
 * Interface that Price Oracles for Solo must implement in order to report prices.
 */
contract IPriceOracle {

    // ============ Constants ============

    uint256 public constant ONE_DOLLAR = 10 ** 36;

    // ============ Public Functions ============

    /**
     * Get the price of a token
     *
     * @param  token  The ERC20 token address of the market
     * @return        The USD price of a base unit of the token, then multiplied by 10^36.
     *                So a USD-stable coin with 18 decimal places would return 10^18.
     *                This is the price of the base unit rather than the price of a "human-readable"
     *                token amount. Every ERC20 may have a different number of decimals.
     */
    function getPrice(
        address token
    )
        public
        view
        returns (Monetary.Price memory);
}

// File: contracts/protocol/lib/Require.sol

/**
 * @title Require
 * @author dYdX
 *
 * Stringifies parameters to pretty-print revert messages. Costs more gas than regular require()
 */
library Require {

    // ============ Constants ============

    uint256 constant ASCII_ZERO = 48; // '0'
    uint256 constant ASCII_RELATIVE_ZERO = 87; // 'a' - 10
    uint256 constant ASCII_LOWER_EX = 120; // 'x'
    bytes2 constant COLON = 0x3a20; // ': '
    bytes2 constant COMMA = 0x2c20; // ', '
    bytes2 constant LPAREN = 0x203c; // ' <'
    byte constant RPAREN = 0x3e; // '>'
    uint256 constant FOUR_BIT_MASK = 0xf;

    // ============ Library Functions ============

    function that(
        bool must,
        bytes32 file,
        bytes32 reason
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason)
                    )
                )
            );
        }
    }

    function that(
        bool must,
        bytes32 file,
        bytes32 reason,
        uint256 payloadA
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason),
                        LPAREN,
                        stringify(payloadA),
                        RPAREN
                    )
                )
            );
        }
    }

    function that(
        bool must,
        bytes32 file,
        bytes32 reason,
        uint256 payloadA,
        uint256 payloadB
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason),
                        LPAREN,
                        stringify(payloadA),
                        COMMA,
                        stringify(payloadB),
                        RPAREN
                    )
                )
            );
        }
    }

    function that(
        bool must,
        bytes32 file,
        bytes32 reason,
        address payloadA
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason),
                        LPAREN,
                        stringify(payloadA),
                        RPAREN
                    )
                )
            );
        }
    }

    function that(
        bool must,
        bytes32 file,
        bytes32 reason,
        address payloadA,
        uint256 payloadB
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason),
                        LPAREN,
                        stringify(payloadA),
                        COMMA,
                        stringify(payloadB),
                        RPAREN
                    )
                )
            );
        }
    }

    function that(
        bool must,
        bytes32 file,
        bytes32 reason,
        address payloadA,
        uint256 payloadB,
        uint256 payloadC
    )
        internal
        pure
    {
        if (!must) {
            revert(
                string(
                    abi.encodePacked(
                        stringify(file),
                        COLON,
                        stringify(reason),
                        LPAREN,
                        stringify(payloadA),
                        COMMA,
                        stringify(payloadB),
                        COMMA,
                        stringify(payloadC),
                        RPAREN
                    )
                )
            );
        }
    }

    // ============ Private Functions ============

    function stringify(
        bytes32 input
    )
        private
        pure
        returns (bytes memory)
    {
        // put the input bytes into the result
        bytes memory result = abi.encodePacked(input);

        // determine the length of the input by finding the location of the last non-zero byte
        for (uint256 i = 32; i > 0; ) {
            // reverse-for-loops with unsigned integer
            /* solium-disable-next-line security/no-modify-for-iter-var */
            i--;

            // find the last non-zero byte in order to determine the length
            if (result[i] != 0) {
                uint256 length = i + 1;

                /* solium-disable-next-line security/no-inline-assembly */
                assembly {
                    mstore(result, length) // r.length = length;
                }

                return result;
            }
        }

        // all bytes are zero
        return new bytes(0);
    }

    function stringify(
        uint256 input
    )
        private
        pure
        returns (bytes memory)
    {
        if (input == 0) {
            return "0";
        }

        // get the final string length
        uint256 j = input;
        uint256 length;
        while (j != 0) {
            length++;
            j /= 10;
        }

        // allocate the string
        bytes memory bstr = new bytes(length);

        // populate the string starting with the least-significant character
        j = input;
        for (uint256 i = length; i > 0; ) {
            // reverse-for-loops with unsigned integer
            /* solium-disable-next-line security/no-modify-for-iter-var */
            i--;

            // take last decimal digit
            bstr[i] = byte(uint8(ASCII_ZERO + (j % 10)));

            // remove the last decimal digit
            j /= 10;
        }

        return bstr;
    }

    function stringify(
        address input
    )
        private
        pure
        returns (bytes memory)
    {
        uint256 z = uint256(input);

        // addresses are "0x" followed by 20 bytes of data which take up 2 characters each
        bytes memory result = new bytes(42);

        // populate the result with "0x"
        result[0] = byte(uint8(ASCII_ZERO));
        result[1] = byte(uint8(ASCII_LOWER_EX));

        // for each byte (starting from the lowest byte), populate the result with two characters
        for (uint256 i = 0; i < 20; i++) {
            // each byte takes two characters
            uint256 shift = i * 2;

            // populate the least-significant character
            result[41 - shift] = char(z & FOUR_BIT_MASK);
            z = z >> 4;

            // populate the most-significant character
            result[40 - shift] = char(z & FOUR_BIT_MASK);
            z = z >> 4;
        }

        return result;
    }

    function char(
        uint256 input
    )
        private
        pure
        returns (byte)
    {
        // return ASCII digit (0-9)
        if (input < 10) {
            return byte(uint8(input + ASCII_ZERO));
        }

        // return ASCII letter (a-f)
        return byte(uint8(input + ASCII_RELATIVE_ZERO));
    }
}

// File: contracts/protocol/lib/Math.sol

/**
 * @title Math
 * @author dYdX
 *
 * Library for non-standard Math functions
 */
library Math {
    using SafeMath for uint256;

    // ============ Constants ============

    bytes32 constant FILE = "Math";

    // ============ Library Functions ============

    /*
     * Return target * (numerator / denominator).
     */
    function getPartial(
        uint256 target,
        uint256 numerator,
        uint256 denominator
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(numerator).div(denominator);
    }

    /*
     * Return target * (numerator / denominator), but rounded up.
     */
    function getPartialRoundUp(
        uint256 target,
        uint256 numerator,
        uint256 denominator
    )
        internal
        pure
        returns (uint256)
    {
        if (target == 0 || numerator == 0) {
            // SafeMath will check for zero denominator
            return SafeMath.div(0, denominator);
        }
        return target.mul(numerator).sub(1).div(denominator).add(1);
    }

    function to128(
        uint256 number
    )
        internal
        pure
        returns (uint128)
    {
        uint128 result = uint128(number);
        Require.that(
            result == number,
            FILE,
            "Unsafe cast to uint128"
        );
        return result;
    }

    function to96(
        uint256 number
    )
        internal
        pure
        returns (uint96)
    {
        uint96 result = uint96(number);
        Require.that(
            result == number,
            FILE,
            "Unsafe cast to uint96"
        );
        return result;
    }

    function to32(
        uint256 number
    )
        internal
        pure
        returns (uint32)
    {
        uint32 result = uint32(number);
        Require.that(
            result == number,
            FILE,
            "Unsafe cast to uint32"
        );
        return result;
    }

    function min(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        return a < b ? a : b;
    }

    function max(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        return a > b ? a : b;
    }
}

// File: contracts/protocol/lib/Time.sol

/**
 * @title Time
 * @author dYdX
 *
 * Library for dealing with time, assuming timestamps fit within 32 bits (valid until year 2106)
 */
library Time {

    // ============ Library Functions ============

    function currentTime()
        internal
        view
        returns (uint32)
    {
        return Math.to32(block.timestamp);
    }
}

// File: contracts/external/interfaces/IMakerOracle.sol

/**
 * @title IMakerOracle
 * @author dYdX
 *
 * Interface for the price oracles run by MakerDao
 */
interface IMakerOracle {

    // Event that is logged when the `note` modifier is used
    event LogNote(
        bytes4 indexed msgSig,
        address indexed msgSender,
        bytes32 indexed arg1,
        bytes32 indexed arg2,
        uint256 msgValue,
        bytes msgData
    ) anonymous;

    // returns the current value (ETH/USD * 10**18) as a bytes32
    function peek()
        external
        view
        returns (bytes32, bool);

    // requires a fresh price and then returns the current value
    function read()
        external
        view
        returns (bytes32);
}

// File: contracts/external/interfaces/IOasisDex.sol

/**
 * @title IOasisDex
 * @author dYdX
 *
 * Interface for the OasisDex contract
 */
interface IOasisDex {

    // ============ Structs ================

    struct OfferInfo {
        uint256 pay_amt;
        address pay_gem;
        uint256 buy_amt;
        address buy_gem;
        address owner;
        uint64 timestamp;
    }

    struct SortInfo {
        uint256 next;  //points to id of next higher offer
        uint256 prev;  //points to id of previous lower offer
        uint256 delb;  //the blocknumber where this entry was marked for delete
    }

    // ============ Storage Getters ================

    function last_offer_id()
        external
        view
        returns (uint256);

    function offers(
        uint256 id
    )
        external
        view
        returns (OfferInfo memory);

    function close_time()
        external
        view
        returns (uint64);

    function stopped()
        external
        view
        returns (bool);

    function buyEnabled()
        external
        view
        returns (bool);

    function matchingEnabled()
        external
        view
        returns (bool);

    function _rank(
        uint256 id
    )
        external
        view
        returns (SortInfo memory);

    function _best(
        address sell_gem,
        address buy_gem
    )
        external
        view
        returns (uint256);

    function _span(
        address sell_gem,
        address buy_gem
    )
        external
        view
        returns (uint256);

    function _dust(
        address gem
    )
        external
        view
        returns (uint256);

    function _near(
        uint256 id
    )
        external
        view
        returns (uint256);

    // ============ Constant Functions ================

    function isActive(
        uint256 id
    )
        external
        view
        returns (bool);

    function getOwner(
        uint256 id
    )
        external
        view
        returns (address);

    function getOffer(
        uint256 id
    )
        external
        view
        returns (uint256, address, uint256, address);

    function getMinSell(
        address pay_gem
    )
        external
        view
        returns (uint256);

    function getBestOffer(
        address sell_gem,
        address buy_gem
    )
        external
        view
        returns (uint256);

    function getWorseOffer(
        uint256 id
    )
        external
        view
        returns (uint256);

    function getBetterOffer(
        uint256 id
    )
        external
        view
        returns (uint256);

    function getOfferCount(
        address sell_gem,
        address buy_gem
    )
        external
        view
        returns (uint256);

    function getFirstUnsortedOffer()
        external
        view
        returns (uint256);

    function getNextUnsortedOffer(
        uint256 id
    )
        external
        view
        returns (uint256);

    function isOfferSorted(
        uint256 id
    )
        external
        view
        returns (bool);

    function getBuyAmount(
        address buy_gem,
        address pay_gem,
        uint256 pay_amt
    )
        external
        view
        returns (uint256);

    function getPayAmount(
        address pay_gem,
        address buy_gem,
        uint256 buy_amt
    )
        external
        view
        returns (uint256);

    function isClosed()
        external
        view
        returns (bool);

    function getTime()
        external
        view
        returns (uint64);

    // ============ Non-Constant Functions ================

    function bump(
        bytes32 id_
    )
        external;

    function buy(
        uint256 id,
        uint256 quantity
    )
        external
        returns (bool);

    function cancel(
        uint256 id
    )
        external
        returns (bool);

    function kill(
        bytes32 id
    )
        external;

    function make(
        address  pay_gem,
        address  buy_gem,
        uint128  pay_amt,
        uint128  buy_amt
    )
        external
        returns (bytes32);

    function take(
        bytes32 id,
        uint128 maxTakeAmount
    )
        external;

    function offer(
        uint256 pay_amt,
        address pay_gem,
        uint256 buy_amt,
        address buy_gem
    )
        external
        returns (uint256);

    function offer(
        uint256 pay_amt,
        address pay_gem,
        uint256 buy_amt,
        address buy_gem,
        uint256 pos
    )
        external
        returns (uint256);

    function offer(
        uint256 pay_amt,
        address pay_gem,
        uint256 buy_amt,
        address buy_gem,
        uint256 pos,
        bool rounding
    )
        external
        returns (uint256);

    function insert(
        uint256 id,
        uint256 pos
    )
        external
        returns (bool);

    function del_rank(
        uint256 id
    )
        external
        returns (bool);

    function sellAllAmount(
        address pay_gem,
        uint256 pay_amt,
        address buy_gem,
        uint256 min_fill_amount
    )
        external
        returns (uint256);

    function buyAllAmount(
        address buy_gem,
        uint256 buy_amt,
        address pay_gem,
        uint256 max_fill_amount
    )
        external
        returns (uint256);
}

// File: contracts/external/oracles/DaiPriceOracle.sol

/**
 * @title DaiPriceOracle
 * @author dYdX
 *
 * PriceOracle that gives the price of Dai in USD
 */
contract DaiPriceOracle is
    Ownable,
    IPriceOracle
{
    using SafeMath for uint256;

    // ============ Constants ============

    bytes32 constant FILE = "DaiPriceOracle";

    uint256 constant DECIMALS = 18;

    uint256 constant EXPECTED_PRICE = ONE_DOLLAR / (10 ** DECIMALS);

    // ============ Structs ============

    struct PriceInfo {
        uint128 price;
        uint32 lastUpdate;
    }

    struct DeviationParams {
        uint64 denominator;
        uint64 maximumPerSecond;
        uint64 maximumAbsolute;
    }

    // ============ Events ============

    event PriceSet(
        PriceInfo newPriceInfo
    );

    // ============ Storage ============

    PriceInfo public g_priceInfo;

    address public g_poker;

    DeviationParams public DEVIATION_PARAMS;

    uint256 public OASIS_ETH_AMOUNT;

    IErc20 public WETH;

    IErc20 public DAI;

    IMakerOracle public MEDIANIZER;

    IOasisDex public OASIS;

    address public UNISWAP;

    // ============ Constructor =============

    constructor(
        address poker,
        address weth,
        address dai,
        address medianizer,
        address oasis,
        address uniswap,
        uint256 oasisEthAmount,
        DeviationParams memory deviationParams
    )
        public
    {
        g_poker = poker;
        MEDIANIZER = IMakerOracle(medianizer);
        WETH = IErc20(weth);
        DAI = IErc20(dai);
        OASIS = IOasisDex(oasis);
        UNISWAP = uniswap;
        DEVIATION_PARAMS = deviationParams;
        OASIS_ETH_AMOUNT = oasisEthAmount;
        g_priceInfo = PriceInfo({
            lastUpdate: uint32(block.timestamp),
            price: uint128(EXPECTED_PRICE)
        });
    }

    // ============ Admin Functions ============

    function ownerSetPokerAddress(
        address newPoker
    )
        external
        onlyOwner
    {
        g_poker = newPoker;
    }

    // ============ Public Functions ============

    function updatePrice(
        Monetary.Price memory minimum,
        Monetary.Price memory maximum
    )
        public
        returns (PriceInfo memory)
    {
        Require.that(
            msg.sender == g_poker,
            FILE,
            "Only poker can call updatePrice",
            msg.sender
        );

        Monetary.Price memory newPrice = getBoundedTargetPrice();

        Require.that(
            newPrice.value >= minimum.value,
            FILE,
            "newPrice below minimum",
            newPrice.value,
            minimum.value
        );

        Require.that(
            newPrice.value <= maximum.value,
            FILE,
            "newPrice above maximum",
            newPrice.value,
            maximum.value
        );

        g_priceInfo = PriceInfo({
            price: Math.to128(newPrice.value),
            lastUpdate: Time.currentTime()
        });

        emit PriceSet(g_priceInfo);
        return g_priceInfo;
    }

    // ============ IPriceOracle Functions ============

    function getPrice(
        address /* token */
    )
        public
        view
        returns (Monetary.Price memory)
    {
        return Monetary.Price({
            value: g_priceInfo.price
        });
    }

    // ============ Price-Query Functions ============

    /**
     * Get the new price that would be stored if updated right now.
     */
    function getBoundedTargetPrice()
        public
        view
        returns (Monetary.Price memory)
    {
        Monetary.Price memory targetPrice = getTargetPrice();

        PriceInfo memory oldInfo = g_priceInfo;
        uint256 timeDelta = uint256(Time.currentTime()).sub(oldInfo.lastUpdate);
        (uint256 minPrice, uint256 maxPrice) = getPriceBounds(oldInfo.price, timeDelta);
        uint256 boundedTargetPrice = boundValue(targetPrice.value, minPrice, maxPrice);

        return Monetary.Price({
            value: boundedTargetPrice
        });
    }

    /**
     * Get the USD price of DAI that this contract will move towards when updated. This price is
     * not bounded by the variables governing the maximum deviation from the old price.
     */
    function getTargetPrice()
        public
        view
        returns (Monetary.Price memory)
    {
        Monetary.Price memory ethUsd = getMedianizerPrice();

        uint256 targetPrice = getMidValue(
            EXPECTED_PRICE,
            getOasisPrice(ethUsd).value,
            getUniswapPrice(ethUsd).value
        );

        return Monetary.Price({
            value: targetPrice
        });
    }

    /**
     * Get the USD price of ETH according the Maker Medianizer contract.
     */
    function getMedianizerPrice()
        public
        view
        returns (Monetary.Price memory)
    {
        // throws if the price is not fresh
        return Monetary.Price({
            value: uint256(MEDIANIZER.read())
        });
    }

    /**
     * Get the USD price of DAI according to OasisDEX given the USD price of ETH.
     */
    function getOasisPrice(
        Monetary.Price memory ethUsd
    )
        public
        view
        returns (Monetary.Price memory)
    {
        IOasisDex oasis = OASIS;

        // If exchange is not operational, return old value.
        // This allows the price to move only towards 1 USD
        if (
            oasis.isClosed()
            || !oasis.buyEnabled()
            || !oasis.matchingEnabled()
        ) {
            return Monetary.Price({
                value: g_priceInfo.price
            });
        }

        uint256 numWei = OASIS_ETH_AMOUNT;
        address dai = address(DAI);
        address weth = address(WETH);

        // Assumes at least `numWei` of depth on both sides of the book if the exchange is active.
        // Will revert if not enough depth.
        uint256 daiAmt1 = oasis.getBuyAmount(dai, weth, numWei);
        uint256 daiAmt2 = oasis.getPayAmount(dai, weth, numWei);

        uint256 num = numWei.mul(daiAmt2).add(numWei.mul(daiAmt1));
        uint256 den = daiAmt1.mul(daiAmt2).mul(2);
        uint256 oasisPrice = Math.getPartial(ethUsd.value, num, den);

        return Monetary.Price({
            value: oasisPrice
        });
    }

    /**
     * Get the USD price of DAI according to Uniswap given the USD price of ETH.
     */
    function getUniswapPrice(
        Monetary.Price memory ethUsd
    )
        public
        view
        returns (Monetary.Price memory)
    {
        address uniswap = address(UNISWAP);
        uint256 ethAmt = uniswap.balance;
        uint256 daiAmt = DAI.balanceOf(uniswap);
        uint256 uniswapPrice = Math.getPartial(ethUsd.value, ethAmt, daiAmt);

        return Monetary.Price({
            value: uniswapPrice
        });
    }

    // ============ Helper Functions ============

    function getPriceBounds(
        uint256 oldPrice,
        uint256 timeDelta
    )
        private
        view
        returns (uint256, uint256)
    {
        DeviationParams memory deviation = DEVIATION_PARAMS;

        uint256 maxDeviation = Math.getPartial(
            oldPrice,
            Math.min(deviation.maximumAbsolute, timeDelta.mul(deviation.maximumPerSecond)),
            deviation.denominator
        );

        return (
            oldPrice.sub(maxDeviation),
            oldPrice.add(maxDeviation)
        );
    }

    function getMidValue(
        uint256 valueA,
        uint256 valueB,
        uint256 valueC
    )
        private
        pure
        returns (uint256)
    {
        uint256 maximum = Math.max(valueA, Math.max(valueB, valueC));
        if (maximum == valueA) {
            return Math.max(valueB, valueC);
        }
        if (maximum == valueB) {
            return Math.max(valueA, valueC);
        }
        return Math.max(valueA, valueB);
    }

    function boundValue(
        uint256 value,
        uint256 minimum,
        uint256 maximum
    )
        private
        pure
        returns (uint256)
    {
        assert(minimum <= maximum);
        return Math.max(minimum, Math.min(maximum, value));
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"newPoker","type":"address"}],"name":"ownerSetPokerAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBoundedTargetPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMedianizerPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"value","type":"uint256"}],"name":"ethUsd","type":"tuple"}],"name":"getOasisPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OASIS","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DEVIATION_PARAMS","outputs":[{"name":"denominator","type":"uint64"},{"name":"maximumPerSecond","type":"uint64"},{"name":"maximumAbsolute","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"getPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"components":[{"name":"value","type":"uint256"}],"name":"ethUsd","type":"tuple"}],"name":"getUniswapPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ONE_DOLLAR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"g_poker","outputs":[{"name":"","type":"address"}],"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":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MEDIANIZER","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"OASIS_ETH_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"components":[{"name":"value","type":"uint256"}],"name":"minimum","type":"tuple"},{"components":[{"name":"value","type":"uint256"}],"name":"maximum","type":"tuple"}],"name":"updatePrice","outputs":[{"components":[{"name":"price","type":"uint128"},{"name":"lastUpdate","type":"uint32"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"WETH","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"g_priceInfo","outputs":[{"name":"price","type":"uint128"},{"name":"lastUpdate","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTargetPrice","outputs":[{"components":[{"name":"value","type":"uint256"}],"name":"","type":"tuple"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"UNISWAP","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DAI","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"poker","type":"address"},{"name":"weth","type":"address"},{"name":"dai","type":"address"},{"name":"medianizer","type":"address"},{"name":"oasis","type":"address"},{"name":"uniswap","type":"address"},{"name":"oasisEthAmount","type":"uint256"},{"components":[{"name":"denominator","type":"uint64"},{"name":"maximumPerSecond","type":"uint64"},{"name":"maximumAbsolute","type":"uint64"}],"name":"deviationParams","type":"tuple"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"name":"price","type":"uint128"},{"name":"lastUpdate","type":"uint32"}],"indexed":false,"name":"newPriceInfo","type":"tuple"}],"name":"PriceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b506040516101408062002135833981018060405262000034919081019062000250565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b03998a166001600160a01b03199182161790915560078054968a169682169690961790955560058054978916978616979097179096556006805495881695851695909517909455600880549287169284169290921790915560098054919095169116179092558051600380546020808501516040958601516001600160401b03908116700100000000000000000000000000000000908102600160801b600160c01b03199383166801000000000000000002600160401b600160801b0319939098166001600160401b031990961695909517919091169590951716919091179091556004939093558151808301909252670de0b6b3a76400008083524263ffffffff1692909301829052600180546001600160801b031916909317600160801b63ffffffff021916910217905562000366565b6000620001c9825162000338565b9392505050565b600060608284031215620001e357600080fd5b620001ef606062000311565b90506000620001ff848462000242565b8252506020620002128484830162000242565b6020830152506040620002288482850162000242565b60408301525092915050565b6000620001c9825162000357565b6000620001c982516200035a565b600080600080600080600080610140898b0312156200026e57600080fd5b60006200027c8b8b620001bb565b98505060206200028f8b828c01620001bb565b9750506040620002a28b828c01620001bb565b9650506060620002b58b828c01620001bb565b9550506080620002c88b828c01620001bb565b94505060a0620002db8b828c01620001bb565b93505060c0620002ee8b828c0162000234565b92505060e0620003018b828c01620001d0565b9150509295985092959890939650565b6040518181016001600160401b03811182821017156200033057600080fd5b604052919050565b600062000345826200034b565b92915050565b6001600160a01b031690565b90565b6001600160401b031690565b611dbf80620003766000396000f3fe608060405234801561001057600080fd5b50600436106101815760003560e01c80638da5cb5b116100d8578063ad5c46481161008c578063c745d9e711610066578063c745d9e7146102cb578063e0bab4c4146102d3578063f2fde38b146102db57610181565b8063ad5c4648146102a5578063afb1f8d6146102ad578063bd01bb32146102c357610181565b806394c5eddb116100bd57806394c5eddb1461027557806396363e291461027d578063a90005661461028557610181565b80638da5cb5b146102585780638f32d59b1461026057610181565b806325878e0d1161013a578063572ca9e711610114578063572ca9e714610226578063715018a61461023b578063748635c71461024357610181565b806325878e0d146101e957806341976e09146102005780634a7454f81461021357610181565b80630a7d84861161016b5780630a7d8486146101b95780630ced7610146101c15780631ebd567b146101d457610181565b8062a341c81461018657806303ad0d631461019b575b600080fd5b61019961019436600461183b565b6102ee565b005b6101a3610346565b6040516101b09190611bc6565b60405180910390f35b6101a3610422565b6101a36101cf36600461189d565b6104dc565b6101dc610899565b6040516101b09190611b8b565b6101f16108b5565b6040516101b093929190611bfd565b6101a361020e36600461183b565b6108ed565b6101a361022136600461189d565b61091c565b61022e610a01565b6040516101b09190611bef565b610199610a14565b61024b610a94565b6040516101b09190611b47565b61024b610ab0565b610268610acc565b6040516101b09190611b7d565b6101dc610aea565b61022e610b06565b6102986102933660046118bb565b610b0c565b6040516101b09190611baa565b6101dc610d87565b6102b5610da3565b6040516101b0929190611bd4565b6101a3610dd7565b61024b610e2d565b6101dc610e49565b6101996102e936600461183b565b610e65565b6102f6610acc565b6102ff57600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61034e61178e565b61035661178e565b61035e610dd7565b90506103686117a1565b50604080518082019091526001546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000900463ffffffff16602082018190526000906103cf906103bb610e82565b63ffffffff16610e9290919063ffffffff16565b90506000806103f484600001516fffffffffffffffffffffffffffffffff1684610ea7565b91509150600061040986600001518484610f65565b6040805160208101909152908152965050505050505090565b61042a61178e565b6040518060200160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b15801561049d57600080fd5b505afa1580156104b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104d5919081019061187f565b9052905090565b6104e461178e565b600854604080517fc2b6b58c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691829163c2b6b58c916004808301926020929190829003018186803b15801561055057600080fd5b505afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105889190810190611861565b8061060e57508073ffffffffffffffffffffffffffffffffffffffff1663f582d2936040518163ffffffff1660e01b815260040160206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060c9190810190611861565b155b8061069457508073ffffffffffffffffffffffffffffffffffffffff166301492a0b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561065a57600080fd5b505afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106929190810190611861565b155b156106c257505060408051602081019091526001546fffffffffffffffffffffffffffffffff168152610894565b600480546006546005546040517f144a2752000000000000000000000000000000000000000000000000000000008152929373ffffffffffffffffffffffffffffffffffffffff92831693918316926000929087169163144a27529161072e91879187918a9101611b55565b60206040518083038186803b15801561074657600080fd5b505afa15801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061077e919081019061187f565b905060008573ffffffffffffffffffffffffffffffffffffffff1663ff1fd9748585886040518463ffffffff1660e01b81526004016107bf93929190611b55565b60206040518083038186803b1580156107d757600080fd5b505afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061080f919081019061187f565b90506000610842610826878563ffffffff610f8e16565b610836888563ffffffff610f8e16565b9063ffffffff610fb516565b90506000610867600261085b868663ffffffff610f8e16565b9063ffffffff610f8e16565b9050600061087a8b600001518484610fc7565b604080516020810190915290815299505050505050505050505b919050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041683565b6108f561178e565b505060408051602081019091526001546fffffffffffffffffffffffffffffffff16815290565b61092461178e565b6009546006546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316928331926000929116906370a0823190610986908690600401611b47565b60206040518083038186803b15801561099e57600080fd5b505afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d6919081019061187f565b905060006109e986600001518484610fc7565b60408051602081019091529081529695505050505050565b6ec097ce7bc90715b34b9f100000000081565b610a1c610acc565b610a2557600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b610b146117a1565b600254610b7f9073ffffffffffffffffffffffffffffffffffffffff1633908114907f44616950726963654f7261636c65000000000000000000000000000000000000907f4f6e6c7920706f6b65722063616e2063616c6c2075706461746550726963650090610fe9565b610b8761178e565b610b8f610346565b84518151919250610be89181811015917f44616950726963654f7261636c65000000000000000000000000000000000000917f6e657750726963652062656c6f77206d696e696d756d00000000000000000000916110ee565b82518151610c3f9180821115917f44616950726963654f7261636c65000000000000000000000000000000000000917f6e657750726963652061626f7665206d6178696d756d0000000000000000000091906110ee565b6040518060400160405280610c5783600001516111b9565b6fffffffffffffffffffffffffffffffff168152602001610c76610e82565b63ffffffff908116909152815160018054602090940151909216700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317169190911781556040517fe98273326f8618f83229329c983e5dfeafe5dd27b8d4bdf152fb230a73f112d491610d3591611bb8565b60405180910390a15050604080518082019091526001546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000900463ffffffff1660208201525b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6001546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900463ffffffff1682565b610ddf61178e565b610de761178e565b610def610422565b90506000610e18670de0b6b3a7640000610e08846104dc565b51610e128561091c565b5161121b565b60408051602081019091529081529250505090565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b610e6d610acc565b610e7657600080fd5b610e7f8161126d565b50565b6000610e8d4261131a565b905090565b600082821115610ea157600080fd5b50900390565b600080610eb26117b8565b506040805160608101825260035467ffffffffffffffff8082168352680100000000000000008204811660208401819052700100000000000000000000000000000000909204169282018390529091600091610f36918891610f259190610f20908a9063ffffffff610f8e16565b611370565b845167ffffffffffffffff16610fc7565b9050610f48868263ffffffff610e9216565b610f58878363ffffffff610fb516565b9350935050509250929050565b600081831115610f7157fe5b610f8483610f7f8487611370565b611386565b90505b9392505050565b600082610f9d57506000610d81565b82820282848281610faa57fe5b0414610f8757600080fd5b600082820183811015610f8757600080fd5b6000610f8482610fdd868663ffffffff610f8e16565b9063ffffffff61139516565b836110e857610ff7836113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611021846113b7565b7f203c00000000000000000000000000000000000000000000000000000000000061104b85611497565b6040516110819594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611a6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526110df91600401611b99565b60405180910390fd5b50505050565b846111b2576110fc846113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611126856113b7565b7f203c0000000000000000000000000000000000000000000000000000000000006111508661160e565b7f2c2000000000000000000000000000000000000000000000000000000000000061117a8761160e565b60405161108197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611acb565b5050505050565b600081610d816fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000061171d565b60008061122c85610f7f8686611386565b905084811415611248576112408484611386565b915050610f87565b8381141561125a576112408584611386565b6112648585611386565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff811661128d57600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600081610d8163ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000061171d565b600081831061137f5781610f87565b5090919050565b600081831161137f5781610f87565b60008082116113a357600080fd5b60008284816113ae57fe5b04949350505050565b606080826040516020016113cb9190611a30565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561147c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061143757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000060f891821c90911b16156114775760010181529050610894565b6113fe565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106114e357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061152457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561148f576002810261156f600f851661176c565b83826029038151811061157e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c93506115c0600f851661176c565b8382602803815181106115cf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101611556565b60608161164f575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610894565b8160005b811561166757600101600a82049150611653565b6060816040519080825280601f01601f191660200182016040528015611694576020820181803883390190505b508593509050815b8015611714577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106116da57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061169c565b50949350505050565b826117675761172b826113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611755836113b7565b60405160200161108193929190611a45565b505050565b6000600a82101561178457506030810160f81b610894565b5060570160f81b90565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6000610f878235611c59565b6000610f878251611c64565b6000610f878251611cb3565b60006020828403121561180e57600080fd5b6118186020611c25565b90506000611826848461182f565b82525092915050565b6000610f878235611cb3565b60006020828403121561184d57600080fd5b600061185984846117d8565b949350505050565b60006020828403121561187357600080fd5b600061185984846117e4565b60006020828403121561189157600080fd5b600061185984846117f0565b6000602082840312156118af57600080fd5b600061185984846117fc565b600080604083850312156118ce57600080fd5b60006118da85856117fc565b92505060206118eb858286016117fc565b9150509250929050565b6118fe81611c59565b82525050565b6118fe81611c64565b6118fe61191982611c69565b611cb3565b6118fe61191982611c8e565b6118fe61191982611cb3565b600061194182611c4c565b61194b8185610894565b935061195b818560208601611d05565b9290920192915050565b6118fe81611cfa565b600061197982611c4c565b6119838185611c50565b9350611993818560208601611d05565b61199c81611d57565b9093019392505050565b805160408301906119b78482611a0c565b5060208201516110e86020850182611a1e565b805460408301906119da81611d31565b6119e48582611a0c565b506119ee81611d44565b6111b26020860182611a1e565b805160208301906110e88482611a15565b6118fe81611cb6565b6118fe81611cb3565b6118fe81611ce4565b6118fe81611ced565b6000611a3c828461192a565b50602001919050565b6000611a518286611936565b9150611a5d828561191e565b6002820191506112648284611936565b6000611a798289611936565b9150611a85828861191e565b600282019150611a958287611936565b9150611aa1828661191e565b600282019150611ab18285611936565b9150611abd828461190d565b506001019695505050505050565b6000611ad7828b611936565b9150611ae3828a61191e565b600282019150611af38289611936565b9150611aff828861191e565b600282019150611b0f8287611936565b9150611b1b828661191e565b600282019150611b2b8285611936565b9150611b37828461190d565b5060010198975050505050505050565b60208101610d8182846118f5565b60608101611b6382866118f5565b611b7060208301856118f5565b6118596040830184611a15565b60208101610d818284611904565b60208101610d818284611965565b60208082528101610f87818461196e565b60408101610d8182846119a6565b60408101610d8182846119ca565b60208101610d8182846119fb565b60408101611be28285611a0c565b610f876020830184611a1e565b60208101610d818284611a15565b60608101611c0b8286611a27565b611c186020830185611a27565b6118596040830184611a27565b60405181810167ffffffffffffffff81118282101715611c4457600080fd5b604052919050565b5190565b90815260200190565b6000610d8182611ccb565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6000610d8182611c59565b60005b83811015611d20578181015183820152602001611d08565b838111156110e85750506000910152565b6000610d81611d3f83611cb3565b611cb6565b6000610d81611d5283611d7f565b611ce4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60801c9056fea265627a7a72305820241c8ff6c5b1a05df5cc1441823040bf8d1038961a8edb184c75cfef8216928b6c6578706572696d656e74616cf50037000000000000000000000000500dd93a74dbfa65a4eeda44da489adcef530cb9000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000729d19f657bd0614b4985cf1d82531c67569197b00000000000000000000000039755357759ce0d7f32dc8dc45414cca409ae24e0000000000000000000000002a1530c4c41db0b0b2bb646cb5eb1a67b7158667000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000002386f26fc10000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101815760003560e01c80638da5cb5b116100d8578063ad5c46481161008c578063c745d9e711610066578063c745d9e7146102cb578063e0bab4c4146102d3578063f2fde38b146102db57610181565b8063ad5c4648146102a5578063afb1f8d6146102ad578063bd01bb32146102c357610181565b806394c5eddb116100bd57806394c5eddb1461027557806396363e291461027d578063a90005661461028557610181565b80638da5cb5b146102585780638f32d59b1461026057610181565b806325878e0d1161013a578063572ca9e711610114578063572ca9e714610226578063715018a61461023b578063748635c71461024357610181565b806325878e0d146101e957806341976e09146102005780634a7454f81461021357610181565b80630a7d84861161016b5780630a7d8486146101b95780630ced7610146101c15780631ebd567b146101d457610181565b8062a341c81461018657806303ad0d631461019b575b600080fd5b61019961019436600461183b565b6102ee565b005b6101a3610346565b6040516101b09190611bc6565b60405180910390f35b6101a3610422565b6101a36101cf36600461189d565b6104dc565b6101dc610899565b6040516101b09190611b8b565b6101f16108b5565b6040516101b093929190611bfd565b6101a361020e36600461183b565b6108ed565b6101a361022136600461189d565b61091c565b61022e610a01565b6040516101b09190611bef565b610199610a14565b61024b610a94565b6040516101b09190611b47565b61024b610ab0565b610268610acc565b6040516101b09190611b7d565b6101dc610aea565b61022e610b06565b6102986102933660046118bb565b610b0c565b6040516101b09190611baa565b6101dc610d87565b6102b5610da3565b6040516101b0929190611bd4565b6101a3610dd7565b61024b610e2d565b6101dc610e49565b6101996102e936600461183b565b610e65565b6102f6610acc565b6102ff57600080fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61034e61178e565b61035661178e565b61035e610dd7565b90506103686117a1565b50604080518082019091526001546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000900463ffffffff16602082018190526000906103cf906103bb610e82565b63ffffffff16610e9290919063ffffffff16565b90506000806103f484600001516fffffffffffffffffffffffffffffffff1684610ea7565b91509150600061040986600001518484610f65565b6040805160208101909152908152965050505050505090565b61042a61178e565b6040518060200160405280600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166357de26a46040518163ffffffff1660e01b815260040160206040518083038186803b15801561049d57600080fd5b505afa1580156104b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104d5919081019061187f565b9052905090565b6104e461178e565b600854604080517fc2b6b58c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691829163c2b6b58c916004808301926020929190829003018186803b15801561055057600080fd5b505afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506105889190810190611861565b8061060e57508073ffffffffffffffffffffffffffffffffffffffff1663f582d2936040518163ffffffff1660e01b815260040160206040518083038186803b1580156105d457600080fd5b505afa1580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061060c9190810190611861565b155b8061069457508073ffffffffffffffffffffffffffffffffffffffff166301492a0b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561065a57600080fd5b505afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106929190810190611861565b155b156106c257505060408051602081019091526001546fffffffffffffffffffffffffffffffff168152610894565b600480546006546005546040517f144a2752000000000000000000000000000000000000000000000000000000008152929373ffffffffffffffffffffffffffffffffffffffff92831693918316926000929087169163144a27529161072e91879187918a9101611b55565b60206040518083038186803b15801561074657600080fd5b505afa15801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061077e919081019061187f565b905060008573ffffffffffffffffffffffffffffffffffffffff1663ff1fd9748585886040518463ffffffff1660e01b81526004016107bf93929190611b55565b60206040518083038186803b1580156107d757600080fd5b505afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061080f919081019061187f565b90506000610842610826878563ffffffff610f8e16565b610836888563ffffffff610f8e16565b9063ffffffff610fb516565b90506000610867600261085b868663ffffffff610f8e16565b9063ffffffff610f8e16565b9050600061087a8b600001518484610fc7565b604080516020810190915290815299505050505050505050505b919050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60035467ffffffffffffffff808216916801000000000000000081048216917001000000000000000000000000000000009091041683565b6108f561178e565b505060408051602081019091526001546fffffffffffffffffffffffffffffffff16815290565b61092461178e565b6009546006546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316928331926000929116906370a0823190610986908690600401611b47565b60206040518083038186803b15801561099e57600080fd5b505afa1580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109d6919081019061187f565b905060006109e986600001518484610fc7565b60408051602081019091529081529695505050505050565b6ec097ce7bc90715b34b9f100000000081565b610a1c610acc565b610a2557600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b60005473ffffffffffffffffffffffffffffffffffffffff16331490565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b610b146117a1565b600254610b7f9073ffffffffffffffffffffffffffffffffffffffff1633908114907f44616950726963654f7261636c65000000000000000000000000000000000000907f4f6e6c7920706f6b65722063616e2063616c6c2075706461746550726963650090610fe9565b610b8761178e565b610b8f610346565b84518151919250610be89181811015917f44616950726963654f7261636c65000000000000000000000000000000000000917f6e657750726963652062656c6f77206d696e696d756d00000000000000000000916110ee565b82518151610c3f9180821115917f44616950726963654f7261636c65000000000000000000000000000000000000917f6e657750726963652061626f7665206d6178696d756d0000000000000000000091906110ee565b6040518060400160405280610c5783600001516111b9565b6fffffffffffffffffffffffffffffffff168152602001610c76610e82565b63ffffffff908116909152815160018054602090940151909216700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941693909317169190911781556040517fe98273326f8618f83229329c983e5dfeafe5dd27b8d4bdf152fb230a73f112d491610d3591611bb8565b60405180910390a15050604080518082019091526001546fffffffffffffffffffffffffffffffff81168252700100000000000000000000000000000000900463ffffffff1660208201525b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6001546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900463ffffffff1682565b610ddf61178e565b610de761178e565b610def610422565b90506000610e18670de0b6b3a7640000610e08846104dc565b51610e128561091c565b5161121b565b60408051602081019091529081529250505090565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b610e6d610acc565b610e7657600080fd5b610e7f8161126d565b50565b6000610e8d4261131a565b905090565b600082821115610ea157600080fd5b50900390565b600080610eb26117b8565b506040805160608101825260035467ffffffffffffffff8082168352680100000000000000008204811660208401819052700100000000000000000000000000000000909204169282018390529091600091610f36918891610f259190610f20908a9063ffffffff610f8e16565b611370565b845167ffffffffffffffff16610fc7565b9050610f48868263ffffffff610e9216565b610f58878363ffffffff610fb516565b9350935050509250929050565b600081831115610f7157fe5b610f8483610f7f8487611370565b611386565b90505b9392505050565b600082610f9d57506000610d81565b82820282848281610faa57fe5b0414610f8757600080fd5b600082820183811015610f8757600080fd5b6000610f8482610fdd868663ffffffff610f8e16565b9063ffffffff61139516565b836110e857610ff7836113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611021846113b7565b7f203c00000000000000000000000000000000000000000000000000000000000061104b85611497565b6040516110819594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611a6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526110df91600401611b99565b60405180910390fd5b50505050565b846111b2576110fc846113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611126856113b7565b7f203c0000000000000000000000000000000000000000000000000000000000006111508661160e565b7f2c2000000000000000000000000000000000000000000000000000000000000061117a8761160e565b60405161108197969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001611acb565b5050505050565b600081610d816fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000061171d565b60008061122c85610f7f8686611386565b905084811415611248576112408484611386565b915050610f87565b8381141561125a576112408584611386565b6112648585611386565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff811661128d57600080fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600081610d8163ffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743332000000000000000000000061171d565b600081831061137f5781610f87565b5090919050565b600081831161137f5781610f87565b60008082116113a357600080fd5b60008284816113ae57fe5b04949350505050565b606080826040516020016113cb9190611a30565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b801561147c5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091019082908290811061143757fe5b01602001517fff0000000000000000000000000000000000000000000000000000000000000060f891821c90911b16156114775760010181529050610894565b6113fe565b5060408051600080825260208201909252905b509392505050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b816000815181106114e357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061152457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b601481101561148f576002810261156f600f851661176c565b83826029038151811061157e57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c93506115c0600f851661176c565b8382602803815181106115cf57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c91600101611556565b60608161164f575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610894565b8160005b811561166757600101600a82049150611653565b6060816040519080825280601f01601f191660200182016040528015611694576020820181803883390190505b508593509050815b8015611714577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b8282815181106116da57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8404935061169c565b50949350505050565b826117675761172b826113b7565b7f3a20000000000000000000000000000000000000000000000000000000000000611755836113b7565b60405160200161108193929190611a45565b505050565b6000600a82101561178457506030810160f81b610894565b5060570160f81b90565b6040518060200160405280600081525090565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6000610f878235611c59565b6000610f878251611c64565b6000610f878251611cb3565b60006020828403121561180e57600080fd5b6118186020611c25565b90506000611826848461182f565b82525092915050565b6000610f878235611cb3565b60006020828403121561184d57600080fd5b600061185984846117d8565b949350505050565b60006020828403121561187357600080fd5b600061185984846117e4565b60006020828403121561189157600080fd5b600061185984846117f0565b6000602082840312156118af57600080fd5b600061185984846117fc565b600080604083850312156118ce57600080fd5b60006118da85856117fc565b92505060206118eb858286016117fc565b9150509250929050565b6118fe81611c59565b82525050565b6118fe81611c64565b6118fe61191982611c69565b611cb3565b6118fe61191982611c8e565b6118fe61191982611cb3565b600061194182611c4c565b61194b8185610894565b935061195b818560208601611d05565b9290920192915050565b6118fe81611cfa565b600061197982611c4c565b6119838185611c50565b9350611993818560208601611d05565b61199c81611d57565b9093019392505050565b805160408301906119b78482611a0c565b5060208201516110e86020850182611a1e565b805460408301906119da81611d31565b6119e48582611a0c565b506119ee81611d44565b6111b26020860182611a1e565b805160208301906110e88482611a15565b6118fe81611cb6565b6118fe81611cb3565b6118fe81611ce4565b6118fe81611ced565b6000611a3c828461192a565b50602001919050565b6000611a518286611936565b9150611a5d828561191e565b6002820191506112648284611936565b6000611a798289611936565b9150611a85828861191e565b600282019150611a958287611936565b9150611aa1828661191e565b600282019150611ab18285611936565b9150611abd828461190d565b506001019695505050505050565b6000611ad7828b611936565b9150611ae3828a61191e565b600282019150611af38289611936565b9150611aff828861191e565b600282019150611b0f8287611936565b9150611b1b828661191e565b600282019150611b2b8285611936565b9150611b37828461190d565b5060010198975050505050505050565b60208101610d8182846118f5565b60608101611b6382866118f5565b611b7060208301856118f5565b6118596040830184611a15565b60208101610d818284611904565b60208101610d818284611965565b60208082528101610f87818461196e565b60408101610d8182846119a6565b60408101610d8182846119ca565b60208101610d8182846119fb565b60408101611be28285611a0c565b610f876020830184611a1e565b60208101610d818284611a15565b60608101611c0b8286611a27565b611c186020830185611a27565b6118596040830184611a27565b60405181810167ffffffffffffffff81118282101715611c4457600080fd5b604052919050565b5190565b90815260200190565b6000610d8182611ccb565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b67ffffffffffffffff1690565b6000610d8182611c59565b60005b83811015611d20578181015183820152602001611d08565b838111156110e85750506000910152565b6000610d81611d3f83611cb3565b611cb6565b6000610d81611d5283611d7f565b611ce4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b60801c9056fea265627a7a72305820241c8ff6c5b1a05df5cc1441823040bf8d1038961a8edb184c75cfef8216928b6c6578706572696d656e74616cf50037

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

000000000000000000000000500dd93a74dbfa65a4eeda44da489adcef530cb9000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000729d19f657bd0614b4985cf1d82531c67569197b00000000000000000000000039755357759ce0d7f32dc8dc45414cca409ae24e0000000000000000000000002a1530c4c41db0b0b2bb646cb5eb1a67b7158667000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000002386f26fc10000

-----Decoded View---------------
Arg [0] : poker (address): 0x500dd93A74DbFA65A4Eeda44Da489adCeF530cb9
Arg [1] : weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : dai (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [3] : medianizer (address): 0x729D19f657BD0614b4985Cf1D82531c67569197B
Arg [4] : oasis (address): 0x39755357759cE0d7f32dC8dC45414CCa409AE24e
Arg [5] : uniswap (address): 0x2a1530C4C41db0B0b2bB646CB5Eb1A67b7158667
Arg [6] : oasisEthAmount (uint256): 10000000000000000
Arg [7] : deviationParams (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 000000000000000000000000500dd93a74dbfa65a4eeda44da489adcef530cb9
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [3] : 000000000000000000000000729d19f657bd0614b4985cf1d82531c67569197b
Arg [4] : 00000000000000000000000039755357759ce0d7f32dc8dc45414cca409ae24e
Arg [5] : 0000000000000000000000002a1530c4c41db0b0b2bb646cb5eb1a67b7158667
Arg [6] : 000000000000000000000000000000000000000000000000002386f26fc10000
Arg [7] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [8] : 00000000000000000000000000000000000000000000000000005af3107a4000
Arg [9] : 000000000000000000000000000000000000000000000000002386f26fc10000


Deployed Bytecode Sourcemap

25112:8341:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25112:8341:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26957:143;;;;;;;;;:::i;:::-;;28612:579;;;:::i;:::-;;;;;;;;;;;;;;;;29928:252;;;:::i;30289:1227::-;;;;;;;;;:::i;26082:22::-;;;:::i;:::-;;;;;;;;25902:39;;;:::i;:::-;;;;;;;;;;28236:223;;;;;;;;;:::i;31624:453::-;;;;;;;;;:::i;7088:45::-;;;:::i;:::-;;;;;;;;4071:140;;;:::i;25871:22::-;;;:::i;:::-;;;;;;;;3358:79;;;:::i;3693:92::-;;;:::i;:::-;;;;;;;;26043:30;;;:::i;25950:31::-;;;:::i;27161:1008::-;;;;;;;;;:::i;:::-;;;;;;;;25990:18;;;:::i;25834:28::-;;;:::i;:::-;;;;;;;;;29404:424;;;:::i;26113:22::-;;;:::i;26017:17::-;;;:::i;4388:109::-;;;;;;;;;:::i;26957:143::-;3570:9;:7;:9::i;:::-;3562:18;;;;;;27074:7;:18;;;;;;;;;;;;;;;26957:143::o;28612:579::-;28693:21;;:::i;:::-;28732:33;;:::i;:::-;28768:16;:14;:16::i;:::-;28732:52;;28797:24;;:::i;:::-;-1:-1:-1;28797:38:0;;;;;;;;;28824:11;28797:38;;;;;;;;;;;;;;;;;-1:-1:-1;;28866:51:0;;28874:18;:16;:18::i;:::-;28866:27;;:31;;:51;;;;:::i;:::-;28846:71;;28929:16;28947;28967:40;28982:7;:13;;;28967:40;;28997:9;28967:14;:40::i;:::-;28928:79;;;;29018:26;29047:49;29058:11;:17;;;29077:8;29087;29047:10;:49::i;:::-;29116:67;;;;;;;;;;;;;-1:-1:-1;;;;;;;28612:579:0;:::o;29928:252::-;30006:21;;:::i;:::-;30097:75;;;;;;;;30142:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30142:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30142:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30142:17:0;;;;;;;;;30097:75;;30090:82;-1:-1:-1;29928:252:0;:::o;30289:1227::-;30406:21;;:::i;:::-;30463:5;;30622:16;;;;;;;;30463:5;;;;;;;30622:14;;:16;;;;;;;;;;;;;;30463:5;30622:16;;;5:2:-1;;;;30:1;27;20:12;5:2;30622:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30622:16:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30622:16:0;;;;;;;;;:52;;;;30656:5;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30656:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30656:18:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30656:18:0;;;;;;;;;30655:19;30622:52;:93;;;;30692:5;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30692:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30692:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;30692:23:0;;;;;;;;;30691:24;30622:93;30604:231;;;-1:-1:-1;;30749:74:0;;;;;;;;;30790:11;:17;;;30749:74;;30742:81;;30604:231;30864:16;;;30913:3;;30951:4;;31132:37;;;;;30864:16;;30913:3;;;;;30951:4;;;;30847:14;;31132:18;;;;;;:37;;30913:3;;30951:4;;30864:16;;31132:37;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31132:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31132:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;31132:37:0;;;;;;;;;31114:55;;31180:15;31198:5;:18;;;31217:3;31222:4;31228:6;31198:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31198:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31198:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;31198:37:0;;;;;;;;;31180:55;-1:-1:-1;31248:11:0;31262:44;31286:19;:6;31297:7;31286:19;:10;:19;:::i;:::-;31262;:6;31273:7;31262:19;:10;:19;:::i;:::-;:23;:44;:23;:44;:::i;:::-;31248:58;-1:-1:-1;31317:11:0;31331:27;31356:1;31331:20;:7;31343;31331:20;:11;:20;:::i;:::-;:24;:27;:24;:27;:::i;:::-;31317:41;;31369:18;31390:39;31406:6;:12;;;31420:3;31425;31390:15;:39::i;:::-;31449:59;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;30289:1227:0;;;;:::o;26082:22::-;;;;;;:::o;25902:39::-;;;;;;;;;;;;;;;;;;;;:::o;28236:223::-;28339:21;;:::i;:::-;-1:-1:-1;;28385:66:0;;;;;;;;;28422:11;:17;;;28385:66;;;28236:223::o;31624:453::-;31743:21;;:::i;:::-;31808:7;;31887:3;;:22;;;;;31808:7;;;;;31844:15;;;31782;;31887:3;;;:13;;:22;;31808:7;;31887:22;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31887:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31887:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;31887:22:0;;;;;;;;;31870:39;;31920:20;31943:45;31959:6;:12;;;31973:6;31981;31943:15;:45::i;:::-;32008:61;;;;;;;;;;;;;31624:453;-1:-1:-1;;;;;;31624:453:0:o;7088:45::-;7125:8;7088:45;:::o;4071:140::-;3570:9;:7;:9::i;:::-;3562:18;;;;;;4170:1;4154:6;;4133:40;;;4154:6;;;;4133:40;;4170:1;;4133:40;4201:1;4184:19;;;;;;4071:140::o;25871:22::-;;;;;;:::o;3358:79::-;3396:7;3423:6;;;3358:79;:::o;3693:92::-;3733:4;3771:6;;;3757:10;:20;;3693:92::o;26043:30::-;;;;;;:::o;25950:31::-;;;;:::o;27161:1008::-;27303:16;;:::i;:::-;27378:7;;27337:151;;27378:7;;27364:10;:21;;;;27400:4;;27337:151;;:12;:151::i;:::-;27501:30;;:::i;:::-;27534:23;:21;:23::i;:::-;27615:13;;27597:14;;27501:56;;-1:-1:-1;27570:184:0;;27597:31;;;;;27643:4;;27570:184;;:12;:184::i;:::-;27812:13;;27794:14;;27767:184;;27794:31;;;;;27840:4;;27767:184;;27794:14;27767:12;:184::i;:::-;27978:115;;;;;;;;28010:26;28021:8;:14;;;28010:10;:26::i;:::-;27978:115;;;;;;28063:18;:16;:18::i;:::-;27978:115;;;;;;;27964:129;;:11;:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28111:21;;;;;;;;;;;;;;;;-1:-1:-1;;28143:18:0;;;;;;;;;28150:11;28143:18;;;;;;;;;;;;;;;27161:1008;;;;;:::o;25990:18::-;;;;;;:::o;25834:28::-;;;;;;;;;;;;;:::o;29404:424::-;29478:21;;:::i;:::-;29517:28;;:::i;:::-;29548:20;:18;:20::i;:::-;29517:51;-1:-1:-1;29581:19:0;29603:137;25396:14;29658:21;29517:51;29658:13;:21::i;:::-;:27;29700:23;29716:6;29700:15;:23::i;:::-;:29;29603:11;:137::i;:::-;29760:60;;;;;;;;;;;;;-1:-1:-1;;;29404:424:0;:::o;26113:22::-;;;;;;:::o;26017:17::-;;;;;;:::o;4388:109::-;3570:9;:7;:9::i;:::-;3562:18;;;;;;4461:28;4480:8;4461:18;:28::i;:::-;4388:109;:::o;18296:138::-;18369:6;18400:26;18410:15;18400:9;:26::i;:::-;18393:33;;18296:138;:::o;1961:150::-;2019:7;2052:1;2047;:6;;2039:15;;;;;;-1:-1:-1;2077:5:0;;;1961:150::o;32138:555::-;32273:7;32282;32307:32;;:::i;:::-;-1:-1:-1;32307:51:0;;;;;;;;32342:16;32307:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32394:178:0;;32424:8;;32447:78;;32307:51;32483:41;;:9;;:41;:13;:41;:::i;:::-;32447:8;:78::i;:::-;32540:21;;32394:178;;:15;:178::i;:::-;32371:201;-1:-1:-1;32607:26:0;:8;32371:201;32607:26;:12;:26;:::i;:::-;32648;:8;32661:12;32648:26;:12;:26;:::i;:::-;32585:100;;;;;;32138:555;;;;;:::o;33178:272::-;33330:7;33373;33362;:18;;33355:26;;;;33399:43;33408:7;33417:24;33426:7;33435:5;33417:8;:24::i;:::-;33399:8;:43::i;:::-;33392:50;;33178:272;;;;;;:::o;956:433::-;1014:7;1258:6;1254:47;;-1:-1:-1;1288:1:0;1281:8;;1254:47;1325:5;;;1329:1;1325;:5;:1;1349:5;;;;;:10;1341:19;;;;;2197:150;2255:7;2287:5;;;2311:6;;;;2303:15;;;;;15988:238;16148:7;16180:38;16206:11;16180:21;:6;16191:9;16180:21;:10;:21;:::i;:::-;:25;:38;:25;:38;:::i;10200:566::-;10369:4;10364:395;;10487:15;10497:4;10487:9;:15::i;:::-;10529:5;10561:17;10571:6;10561:9;:17::i;:::-;10605:6;10638:19;10648:8;10638:9;:19::i;:::-;10444:269;;;;;;;;;10684:6;;10444:269;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;10444:269:0;;;;10390:357;;;;;;;;;;;;;;;;;10364:395;10200:566;;;;:::o;9521:671::-;9717:4;9712:473;;9835:15;9845:4;9835:9;:15::i;:::-;9877:5;9909:17;9919:6;9909:9;:17::i;:::-;9953:6;9986:19;9996:8;9986:9;:19::i;:::-;10032:5;10064:19;10074:8;10064:9;:19::i;:::-;9792:347;;;;;;;;;;;10110:6;;9792:347;;;;9712:473;9521:671;;;;;:::o;16749:309::-;16846:7;16896:6;16914:112;16941:16;;;;;16972:4;16914:112;:12;:112::i;32701:469::-;32853:7;32878:15;32896:42;32905:6;32913:24;32922:6;32930;32913:8;:24::i;32896:42::-;32878:60;;32964:6;32953:7;:17;32949:81;;;32994:24;33003:6;33011;32994:8;:24::i;:::-;32987:31;;;;;32949:81;33055:6;33044:7;:17;33040:81;;;33085:24;33094:6;33102;33085:8;:24::i;33040:81::-;33138:24;33147:6;33155;33138:8;:24::i;:::-;33131:31;32701:469;-1:-1:-1;;;;;32701:469:0:o;4647:187::-;4721:22;;;4713:31;;;;;;4781:6;;;4760:38;;;;;;;4781:6;;;4760:38;;;4809:6;:17;;;;;;;;;;;;;;;4647:187::o;17378:304::-;17474:6;17521;17539:111;17566:16;;;;;17597:4;17539:111;:12;:111::i;17690:163::-;17800:7;17836:1;17832;:5;:13;;17844:1;17832:13;;;-1:-1:-1;17840:1:0;;17825:20;-1:-1:-1;17690:163:0:o;17861:::-;17971:7;18007:1;18003;:5;:13;;18015:1;18003:13;;1522:303;1580:7;1679:1;1675;:5;1667:14;;;;;;1692:9;1708:1;1704;:5;;;;;;;1522:303;-1:-1:-1;;;;1522:303:0:o;12291:988::-;12390:12;12468:19;12507:5;12490:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;12490:23:0;;;;-1:-1:-1;49:4;12622:587:0;12643:5;;12622:587;;12900:9;;12799:3;;;;;12900:6;;12799:3;;12900:9;;;;;;;;;;:14;:9;;;;;;;:14;;12896:302;;12956:1;12952:5;13086:22;;13093:6;-1:-1:-1;13169:13:0;;12896:302;12622:587;;;-1:-1:-1;13259:12:0;;;13269:1;13259:12;;;;;;;;;;;-1:-1:-1;13252:19:0;12291:988;-1:-1:-1;;;12291:988:0:o;14244:993::-;14526:13;;;14536:2;14526:13;;;14343:12;14526:13;;;;;;14385:14;;;;14343:12;;14526:13;;;21:6:-1;;104:10;14526:13:0;87:34:-1;135:17;;-1:-1;14526:13:0;14504:35;;8109:2;14606:23;;14594:6;14601:1;14594:9;;;;;;;;;;;:35;;;;;;;;;;;8219:3;14652:27;;14640:6;14647:1;14640:9;;;;;;;;;;;:39;;;;;;;;;;-1:-1:-1;14796:9:0;14791:413;14815:2;14811:1;:6;14791:413;;;14906:1;14902:5;;15002:23;8446:3;15007:17;;15002:4;:23::i;:::-;14981:6;14993:5;14988:2;:10;14981:18;;;;;;;;;;;:44;;;;;;;;;;;15049:1;15044;:6;;15040:10;;15144:23;8446:3;15149:1;:17;15144:4;:23::i;:::-;15123:6;15135:5;15130:2;:10;15123:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;15191:1:0;15186:6;;;;;14819:3;;14791:413;;13287:949;13386:12;13420:10;13416:53;;-1:-1:-1;13447:10:0;;;;;;;;;;;;;;;;;;;13416:53;13533:5;13521:9;13574:72;13581:6;;13574:72;;13604:8;;13632:2;13627:7;;;;13574:72;;;13690:17;13720:6;13710:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;13710:17:0;87:34:-1;135:17;;-1:-1;13710:17:0;-1:-1:-1;13822:5:0;;-1:-1:-1;13690:37:0;-1:-1:-1;13855:6:0;13838:367;13863:5;;13838:367;;14019:3;;14118:2;14114:1;:6;8109:2;14100:21;14089:34;;14079:4;14084:1;14079:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;14191:2:0;14186:7;;;;13838:367;;;-1:-1:-1;14224:4:0;13287:949;-1:-1:-1;;;;13287:949:0:o;8512:427::-;8654:4;8649:283;;8772:15;8782:4;8772:9;:15::i;:::-;8814:5;8846:17;8856:6;8846:9;:17::i;:::-;8729:157;;;;;;;;;;;8649:283;8512:427;;;:::o;15245:339::-;15339:4;15410:2;15402:5;:10;15398:81;;;-1:-1:-1;8109:2:0;15447:18;;15436:31;;15429:38;;15398:81;-1:-1:-1;8164:2:0;15547:27;15536:40;;;15245:339::o;25112:8341::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;25112:8341:0;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;25112:8341:0;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;130:116;;205:36;233:6;227:13;205:36;;253:122;;331:39;362:6;356:13;331:39;;410:320;;521:4;509:9;504:3;500:19;496:30;493:2;;;539:1;536;529:12;493:2;557:20;572:4;557:20;;;548:29;-1:-1;628:1;659:49;704:3;684:9;659:49;;;635:74;;-1:-1;646:5;487:243;-1:-1;;487:243;737:118;;804:46;842:6;829:20;804:46;;991:241;;1095:2;1083:9;1074:7;1070:23;1066:32;1063:2;;;1111:1;1108;1101:12;1063:2;1146:1;1163:53;1208:7;1188:9;1163:53;;;1153:63;1057:175;-1:-1;;;;1057:175;1239:257;;1351:2;1339:9;1330:7;1326:23;1322:32;1319:2;;;1367:1;1364;1357:12;1319:2;1402:1;1419:61;1472:7;1452:9;1419:61;;1503:263;;1618:2;1606:9;1597:7;1593:23;1589:32;1586:2;;;1634:1;1631;1624:12;1586:2;1669:1;1686:64;1742:7;1722:9;1686:64;;1773:285;;1899:2;1887:9;1878:7;1874:23;1870:32;1867:2;;;1915:1;1912;1905:12;1867:2;1950:1;1967:75;2034:7;2014:9;1967:75;;2065:454;;;2230:2;2218:9;2209:7;2205:23;2201:32;2198:2;;;2246:1;2243;2236:12;2198:2;2281:1;2298:75;2365:7;2345:9;2298:75;;;2288:85;;2260:119;2410:2;2428:75;2495:7;2486:6;2475:9;2471:22;2428:75;;;2418:85;;2389:120;2192:327;;;;;;2796:120;2879:31;2904:5;2879:31;;;2874:3;2867:44;2861:55;;;2923:111;3000:28;3022:5;3000:28;;3041:155;3140:50;3159:30;3183:5;3159:30;;;3140:50;;3203:155;3302:50;3321:30;3345:5;3321:30;;3365:159;3466:52;3486:31;3511:5;3486:31;;3531:356;;3659:38;3691:5;3659:38;;;3709:88;3790:6;3785:3;3709:88;;;3702:95;;3802:52;3847:6;3842:3;3835:4;3828:5;3824:16;3802:52;;;3866:16;;;;;3639:248;-1:-1;;3639:248;3894:154;3991:51;4036:5;3991:51;;4399:347;;4511:39;4544:5;4511:39;;;4562:71;4626:6;4621:3;4562:71;;;4555:78;;4638:52;4683:6;4678:3;4671:4;4664:5;4660:16;4638:52;;;4711:29;4733:6;4711:29;;;4702:39;;;;4491:255;-1:-1;;;4491:255;4826:479;5039:22;;4973:4;4964:14;;;5067:61;4968:3;5039:22;5067:61;;;4993:141;5212:4;5205:5;5201:16;5195:23;5224:60;5278:4;5273:3;5269:14;5256:11;5224:60;;5385:594;5601:22;;5529:4;5520:14;;;5648:55;5601:22;5648:55;;;5709:61;5760:3;5743:11;5709:61;;;5567:209;5837:55;5882:9;5837:55;;;5898:60;5952:4;5947:3;5943:14;5930:11;5898:60;;6039:313;6242:22;;6176:4;6167:14;;;6270:61;6171:3;6242:22;6270:61;;6359:110;6432:31;6457:5;6432:31;;6603:110;6676:31;6701:5;6676:31;;6847:107;6918:30;6942:5;6918:30;;7085:117;7166:30;7190:5;7166:30;;7209:244;;7328:75;7399:3;7390:6;7328:75;;;-1:-1;7425:2;7416:12;;7316:137;-1:-1;7316:137;7460:553;;7676:93;7765:3;7756:6;7676:93;;;7669:100;;7780:73;7849:3;7840:6;7780:73;;;7875:1;7870:3;7866:11;7859:18;;7895:93;7984:3;7975:6;7895:93;;8020:978;;8334:93;8423:3;8414:6;8334:93;;;8327:100;;8438:73;8507:3;8498:6;8438:73;;;8533:1;8528:3;8524:11;8517:18;;8553:93;8642:3;8633:6;8553:93;;;8546:100;;8657:73;8726:3;8717:6;8657:73;;;8752:1;8747:3;8743:11;8736:18;;8772:93;8861:3;8852:6;8772:93;;;8765:100;;8876:73;8945:3;8936:6;8876:73;;;-1:-1;8971:1;8962:11;;8315:683;-1:-1;;;;;;8315:683;9005:1269;;9391:93;9480:3;9471:6;9391:93;;;9384:100;;9495:73;9564:3;9555:6;9495:73;;;9590:1;9585:3;9581:11;9574:18;;9610:93;9699:3;9690:6;9610:93;;;9603:100;;9714:73;9783:3;9774:6;9714:73;;;9809:1;9804:3;9800:11;9793:18;;9829:93;9918:3;9909:6;9829:93;;;9822:100;;9933:73;10002:3;9993:6;9933:73;;;10028:1;10023:3;10019:11;10012:18;;10048:93;10137:3;10128:6;10048:93;;;10041:100;;10152:73;10221:3;10212:6;10152:73;;;-1:-1;10247:1;10238:11;;9372:902;-1:-1;;;;;;;;9372:902;10281:213;10399:2;10384:18;;10413:71;10388:9;10457:6;10413:71;;10501:435;10675:2;10660:18;;10689:71;10664:9;10733:6;10689:71;;;10771:72;10839:2;10828:9;10824:18;10815:6;10771:72;;;10854;10922:2;10911:9;10907:18;10898:6;10854:72;;10943:201;11055:2;11040:18;;11069:65;11044:9;11107:6;11069:65;;11151:241;11283:2;11268:18;;11297:85;11272:9;11355:6;11297:85;;11917:301;12055:2;12069:47;;;12040:18;;12130:78;12040:18;12194:6;12130:78;;12225:321;12397:2;12382:18;;12411:125;12386:9;12509:6;12411:125;;12553:315;12722:2;12707:18;;12736:122;12711:9;12831:6;12736:122;;12875:301;13037:2;13022:18;;13051:115;13026:9;13139:6;13051:115;;13183:320;13327:2;13312:18;;13341:71;13316:9;13385:6;13341:71;;;13423:70;13489:2;13478:9;13474:18;13465:6;13423:70;;13510:213;13628:2;13613:18;;13642:71;13617:9;13686:6;13642:71;;13730:423;13898:2;13883:18;;13912:69;13887:9;13954:6;13912:69;;;13992:70;14058:2;14047:9;14043:18;14034:6;13992:70;;;14073;14139:2;14128:9;14124:18;14115:6;14073:70;;14160:256;14222:2;14216:9;14248:17;;;14323:18;14308:34;;14344:22;;;14305:62;14302:2;;;14380:1;14377;14370:12;14302:2;14396;14389:22;14200:216;;-1:-1;14200:216;14423:91;14497:12;;14481:33;14774:163;14877:19;;;14926:4;14917:14;;14870:67;14945:105;;15014:31;15039:5;15014:31;;15057:92;15130:13;15123:21;;15106:43;15156:151;15235:66;15224:78;;15207:100;15314:151;15393:66;15382:78;;15365:100;15472:79;15541:5;15524:27;15558:120;15638:34;15627:46;;15610:68;15685:128;15765:42;15754:54;;15737:76;15906:95;15985:10;15974:22;;15957:44;16008:103;16087:18;16076:30;;16059:52;16877:149;;16970:51;17015:5;16970:51;;17787:268;17852:1;17859:101;17873:6;17870:1;17867:13;17859:101;;;17940:11;;;17934:18;17921:11;;;17914:39;17895:2;17888:10;17859:101;;;17975:6;17972:1;17969:13;17966:2;;;-1:-1;;18040:1;18022:16;;18015:27;17836:219;18063:161;;18153:66;18184:34;18207:10;18184:34;;;18153:66;;18231:162;;18321:67;18351:36;18376:10;18351:36;;;18321:67;;18641:97;18729:2;18709:14;18725:7;18705:28;;18689:49;18846:93;18922:3;18918:15;;18899:40

Swarm Source

bzzr://241c8ff6c5b1a05df5cc1441823040bf8d1038961a8edb184c75cfef8216928b

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.