Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 121 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Price | 9440130 | 1838 days ago | IN | 0 ETH | 0.00048078 | ||||
Update Price | 9439604 | 1838 days ago | IN | 0 ETH | 0.00066993 | ||||
Update Price | 9432263 | 1839 days ago | IN | 0 ETH | 0.0004729 | ||||
Update Price | 9432152 | 1839 days ago | IN | 0 ETH | 0.00070935 | ||||
Update Price | 9407544 | 1843 days ago | IN | 0 ETH | 0.00070888 | ||||
Update Price | 9405624 | 1843 days ago | IN | 0 ETH | 0.00070935 | ||||
Update Price | 9365019 | 1849 days ago | IN | 0 ETH | 0.00080104 | ||||
Update Price | 9364903 | 1849 days ago | IN | 0 ETH | 0.00070911 | ||||
Update Price | 9345834 | 1852 days ago | IN | 0 ETH | 0.0008013 | ||||
Update Price | 9344794 | 1852 days ago | IN | 0 ETH | 0.00070888 | ||||
Update Price | 9341898 | 1853 days ago | IN | 0 ETH | 0.00070935 | ||||
Update Price | 9339390 | 1853 days ago | IN | 0 ETH | 0.00070888 | ||||
Update Price | 9339360 | 1853 days ago | IN | 0 ETH | 0.00088993 | ||||
Update Price | 9338387 | 1853 days ago | IN | 0 ETH | 0.00055162 | ||||
Update Price | 9326962 | 1855 days ago | IN | 0 ETH | 0.00070911 | ||||
Update Price | 9326853 | 1855 days ago | IN | 0 ETH | 0.00080155 | ||||
Update Price | 9323847 | 1855 days ago | IN | 0 ETH | 0.00055153 | ||||
Update Price | 9323716 | 1855 days ago | IN | 0 ETH | 0.00055153 | ||||
Update Price | 9321784 | 1856 days ago | IN | 0 ETH | 0.00055941 | ||||
Update Price | 9315530 | 1857 days ago | IN | 0 ETH | 0.00059881 | ||||
Update Price | 9311780 | 1857 days ago | IN | 0 ETH | 0.00070911 | ||||
Update Price | 9311768 | 1857 days ago | IN | 0 ETH | 0.00070911 | ||||
Update Price | 9311425 | 1857 days ago | IN | 0 ETH | 0.00078791 | ||||
Update Price | 9302238 | 1859 days ago | IN | 0 ETH | 0.0008667 | ||||
Update Price | 9302059 | 1859 days ago | IN | 0 ETH | 0.00060337 |
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
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
- No Contract Security Audit Submitted- Submit Audit Here
[{"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"}]
Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.