ETH Price: $3,111.05 (+0.43%)
Gas: 4 Gwei

Contract

0xE687AEc202f09c523aeAC32A22c61AaB20C76176
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Feed119628802021-03-03 3:32:341172 days ago1614742354IN
0xE687AEc2...B20C76176
0 ETH0.0118572300
Feed119605352021-03-02 18:44:461172 days ago1614710686IN
0xE687AEc2...B20C76176
0 ETH0.0118602300
Feed119602172021-03-02 17:29:051172 days ago1614706145IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602172021-03-02 17:29:051172 days ago1614706145IN
0xE687AEc2...B20C76176
0 ETH0.0118572300
Feed119602152021-03-02 17:28:331172 days ago1614706113IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602152021-03-02 17:28:331172 days ago1614706113IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602152021-03-02 17:28:331172 days ago1614706113IN
0xE687AEc2...B20C76176
0 ETH0.0070932300
Feed119602152021-03-02 17:28:331172 days ago1614706113IN
0xE687AEc2...B20C76176
0 ETH0.0118536300
Feed119602142021-03-02 17:28:111172 days ago1614706091IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602142021-03-02 17:28:111172 days ago1614706091IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602142021-03-02 17:28:111172 days ago1614706091IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119602142021-03-02 17:28:111172 days ago1614706091IN
0xE687AEc2...B20C76176
0 ETH0.0118602300
Feed119602132021-03-02 17:27:581172 days ago1614706078IN
0xE687AEc2...B20C76176
0 ETH0.0118602300
Feed119600422021-03-02 16:54:541173 days ago1614704094IN
0xE687AEc2...B20C76176
0 ETH0.0118572300
Feed119600402021-03-02 16:54:291173 days ago1614704069IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119600402021-03-02 16:54:291173 days ago1614704069IN
0xE687AEc2...B20C76176
0 ETH0.0070968300
Feed119600402021-03-02 16:54:291173 days ago1614704069IN
0xE687AEc2...B20C76176
0 ETH0.0118572300
Feed119600392021-03-02 16:53:571173 days ago1614704037IN
0xE687AEc2...B20C76176
0 ETH0.0118572300
Feed119596182021-03-02 15:25:591173 days ago1614698759IN
0xE687AEc2...B20C76176
0 ETH0.0105972300
Feed119494332021-03-01 1:40:511174 days ago1614562851IN
0xE687AEc2...B20C76176
0 ETH0.01379736349
Feed119447622021-02-28 8:27:071175 days ago1614500827IN
0xE687AEc2...B20C76176
0 ETH0.0118602300
Feed119407422021-02-27 17:40:581175 days ago1614447658IN
0xE687AEc2...B20C76176
0 ETH0.00976489247
Feed119342732021-02-26 17:40:391176 days ago1614361239IN
0xE687AEc2...B20C76176
0 ETH0.00830114235
Feed119342712021-02-26 17:40:291176 days ago1614361229IN
0xE687AEc2...B20C76176
0 ETH0.00928814235
Feed119277192021-02-25 17:40:111177 days ago1614274811IN
0xE687AEc2...B20C76176
0 ETH0.00928532235
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:
FeedPriceOracle

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license
/**
 *Submitted for verification at Etherscan.io on 2019-10-15
*/

/*

    Copyright 2019 The Hydro Protocol Foundation

    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.8;
pragma experimental ABIEncoderV2;
library Decimal {
    using SafeMath for uint256;

    uint256 constant BASE = 10**18;

    function one()
        internal
        pure
        returns (uint256)
    {
        return BASE;
    }

    function onePlus(
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return d.add(BASE);
    }

    function mulFloor(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(d) / BASE;
    }

    function mulCeil(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(d).divCeil(BASE);
    }

    function divFloor(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(BASE).div(d);
    }

    function divCeil(
        uint256 target,
        uint256 d
    )
        internal
        pure
        returns (uint256)
    {
        return target.mul(BASE).divCeil(d);
    }
}

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(), "NOT_OWNER");
        _;
    }

    /** @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
    {
        require(newOwner != address(0), "INVALID_OWNER");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMath {

    // Multiplies two numbers, reverts on overflow.
    function mul(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    // Integer division of two numbers truncating the quotient, reverts on division by zero.
    function div(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    // Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    function sub(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function sub(
        int256 a,
        uint256 b
    )
        internal
        pure
        returns (int256)
    {
        require(b <= 2**255-1, "INT256_SUB_ERROR");
        int256 c = a - int256(b);
        require(c <= a, "INT256_SUB_ERROR");
        return c;
    }

    // Adds two numbers, reverts on overflow.
    function add(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function add(
        int256 a,
        uint256 b
    )
        internal
        pure
        returns (int256)
    {
        require(b <= 2**255 - 1, "INT256_ADD_ERROR");
        int256 c = a + int256(b);
        require(c >= a, "INT256_ADD_ERROR");
        return c;
    }

    // Divides two numbers 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, "MOD_ERROR");
        return a % b;
    }

    /**
     * Check the amount of precision lost by calculating multiple * (numerator / denominator). To
     * do this, we check the remainder and make sure it's proportionally less than 0.1%. So we have:
     *
     *     ((numerator * multiple) % denominator)     1
     *     -------------------------------------- < ----
     *              numerator * multiple            1000
     *
     * To avoid further division, we can move the denominators to the other sides and we get:
     *
     *     ((numerator * multiple) % denominator) * 1000 < numerator * multiple
     *
     * Since we want to return true if there IS a rounding error, we simply flip the sign and our
     * final equation becomes:
     *
     *     ((numerator * multiple) % denominator) * 1000 >= numerator * multiple
     *
     * @param numerator The numerator of the proportion
     * @param denominator The denominator of the proportion
     * @param multiple The amount we want a proportion of
     * @return Boolean indicating if there is a rounding error when calculating the proportion
     */
    function isRoundingError(
        uint256 numerator,
        uint256 denominator,
        uint256 multiple
    )
        internal
        pure
        returns (bool)
    {
        // numerator.mul(multiple).mod(denominator).mul(1000) >= numerator.mul(multiple)
        return mul(mod(mul(numerator, multiple), denominator), 1000) >= mul(numerator, multiple);
    }

    /**
     * Takes an amount (multiple) and calculates a proportion of it given a numerator/denominator
     * pair of values. The final value will be rounded down to the nearest integer value.
     *
     * This function will revert the transaction if rounding the final value down would lose more
     * than 0.1% precision.
     *
     * @param numerator The numerator of the proportion
     * @param denominator The denominator of the proportion
     * @param multiple The amount we want a proportion of
     * @return The final proportion of multiple rounded down
     */
    function getPartialAmountFloor(
        uint256 numerator,
        uint256 denominator,
        uint256 multiple
    )
        internal
        pure
        returns (uint256)
    {
        require(!isRoundingError(numerator, denominator, multiple), "ROUNDING_ERROR");
        // numerator.mul(multiple).div(denominator)
        return div(mul(numerator, multiple), denominator);
    }

    /**
     * Returns the smaller integer of the two passed in.
     *
     * @param a Unsigned integer
     * @param b Unsigned integer
     * @return The smaller of the two integers
     */
    function min(
        uint256 a,
        uint256 b
    )
        internal
        pure
        returns (uint256)
    {
        return a < b ? a : b;
    }
}

contract FeedPriceOracle is Ownable {
    using SafeMath for uint256;

    address public asset;
    uint256 public price;
    uint256 public lastBlockNumber;
    uint256 public validBlockNumber;
    uint256 public maxChangeRate;
    uint256 public minPrice;
    uint256 public maxPrice;

    event PriceFeed(
        uint256 price,
        uint256 blockNumber
    );

    constructor (
        address _asset,
        uint256 _validBlockNumber,
        uint256 _maxChangeRate,
        uint256 _minPrice,
        uint256 _maxPrice
    )
        public
    {
        asset = _asset;

        setParams(
            _validBlockNumber,
            _maxChangeRate,
            _minPrice,
            _maxPrice
        );
    }

    function setParams(
        uint256 _validBlockNumber,
        uint256 _maxChangeRate,
        uint256 _minPrice,
        uint256 _maxPrice
    )
        public
        onlyOwner
    {
        require(_minPrice <= _maxPrice, "MIN_PRICE_MUST_LESS_OR_EQUAL_THAN_MAX_PRICE");
        validBlockNumber = _validBlockNumber;
        maxChangeRate = _maxChangeRate;
        minPrice = _minPrice;
        maxPrice = _maxPrice;
    }

    function feed(
        uint256 newPrice
    )
        external
        onlyOwner
    {
        require(newPrice > 0, "PRICE_MUST_GREATER_THAN_0");
        require(lastBlockNumber < block.number, "BLOCKNUMBER_WRONG");
        require(newPrice <= maxPrice, "PRICE_EXCEED_MAX_LIMIT");
        require(newPrice >= minPrice, "PRICE_EXCEED_MIN_LIMIT");

        if (price > 0) {
            uint256 changeRate = Decimal.divFloor(newPrice, price);
            if (changeRate > Decimal.one()) {
                changeRate = changeRate.sub(Decimal.one());
            } else {
                changeRate = Decimal.one().sub(changeRate);
            }
            require(changeRate <= maxChangeRate, "PRICE_CHANGE_RATE_EXCEED");
        }

        price = newPrice;
        lastBlockNumber = block.number;

        emit PriceFeed(price, lastBlockNumber);
    }

    function getPrice(
        address _asset
    )
        external
        view
        returns (uint256)
    {
        require(asset == _asset, "ASSET_NOT_MATCH");
        require(block.number.sub(lastBlockNumber) <= validBlockNumber, "PRICE_EXPIRED");
        return price;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"lastBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"asset","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_asset","type":"address"}],"name":"getPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_validBlockNumber","type":"uint256"},{"name":"_maxChangeRate","type":"uint256"},{"name":"_minPrice","type":"uint256"},{"name":"_maxPrice","type":"uint256"}],"name":"setParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxChangeRate","outputs":[{"name":"","type":"uint256"}],"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":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"feed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"validBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_asset","type":"address"},{"name":"_validBlockNumber","type":"uint256"},{"name":"_maxChangeRate","type":"uint256"},{"name":"_minPrice","type":"uint256"},{"name":"_maxPrice","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"blockNumber","type":"uint256"}],"name":"PriceFeed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040523480156200001157600080fd5b5060405160a08062000ec683398101806040526200003391908101906200018b565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b038716179055620000ac84848484620000b7602090811b901c565b50505050506200030e565b620000c76200015a60201b60201c565b62000109576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010090620002b9565b60405180910390fd5b8082111562000146576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200010090620002a7565b600493909355600591909155600655600755565b6000546001600160a01b0316331490565b80516200017881620002e9565b92915050565b8051620001788162000303565b600080600080600060a08688031215620001a457600080fd5b6000620001b288886200016b565b9550506020620001c5888289016200017e565b9450506040620001d8888289016200017e565b9350506060620001eb888289016200017e565b9250506080620001fe888289016200017e565b9150509295509295909350565b60006200021a602b83620002cb565b7f4d494e5f50524943455f4d5553545f4c4553535f4f525f455155414c5f54484181527f4e5f4d41585f5052494345000000000000000000000000000000000000000000602082015260400192915050565b60006200027b600983620002cb565b7f4e4f545f4f574e45520000000000000000000000000000000000000000000000815260200192915050565b6020808252810162000178816200020b565b6020808252810162000178816200026c565b90815260200190565b60006001600160a01b03821662000178565b90565b620002f481620002d4565b81146200030057600080fd5b50565b620002f481620002e6565b610ba8806200031e6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f32d59b1161008c578063e45be8eb11610066578063e45be8eb14610187578063f2fde38b1461018f578063f59dfdfb146101a2578063fa259444146101b5576100ea565b80638f32d59b14610162578063a035b1fe14610177578063e38d6b5c1461017f576100ea565b8063715018a6116100c8578063715018a6146101355780637ece45e81461013f57806385faf624146101525780638da5cb5b1461015a576100ea565b80632552317c146100ef57806338d52e0f1461010d57806341976e0914610122575b600080fd5b6100f76101bd565b6040516101049190610afd565b60405180910390f35b6101156101c3565b6040516101049190610a11565b6100f7610130366004610682565b6101d2565b61013d61024e565b005b61013d61014d3660046106c6565b6102bf565b6100f761031d565b610115610323565b61016a610332565b6040516101049190610a1f565b6100f7610343565b6100f7610349565b6100f761034f565b61013d61019d366004610682565b610355565b61013d6101b03660046106a8565b610400565b6100f7610587565b60035481565b6001546001600160a01b031681565b6001546000906001600160a01b0383811691161461020e57604051600160e51b62461bcd02815260040161020590610a4d565b60405180910390fd5b60045460035461022590439063ffffffff61058d16565b111561024657604051600160e51b62461bcd02815260040161020590610a7d565b505060025490565b610256610332565b61027557604051600160e51b62461bcd02815260040161020590610abd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6102c7610332565b6102e657604051600160e51b62461bcd02815260040161020590610abd565b8082111561030957604051600160e51b62461bcd02815260040161020590610a3d565b600493909355600591909155600655600755565b60055481565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025481565b60075481565b60065481565b61035d610332565b61037c57604051600160e51b62461bcd02815260040161020590610abd565b6001600160a01b0381166103a557604051600160e51b62461bcd02815260040161020590610aad565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610408610332565b61042757604051600160e51b62461bcd02815260040161020590610abd565b6000811161044a57604051600160e51b62461bcd02815260040161020590610add565b436003541061046e57604051600160e51b62461bcd02815260040161020590610a8d565b60075481111561049357604051600160e51b62461bcd02815260040161020590610aed565b6006548110156104b857604051600160e51b62461bcd02815260040161020590610a2d565b600254156105405760006104ce826002546105bd565b90506104d86105ee565b8111156104fe576104f76104ea6105ee565b829063ffffffff61058d16565b9050610519565b6105168161050a6105ee565b9063ffffffff61058d16565b90505b60055481111561053e57604051600160e51b62461bcd02815260040161020590610a6d565b505b60028190554360038190556040517f4771fd008104ebb997a015445d17943eac52c60cdc6df59839c5a3d0c3e40c559161057c91849190610b0b565b60405180910390a150565b60045481565b6000828211156105b257604051600160e51b62461bcd02815260040161020590610a9d565b508082035b92915050565b60006105e7826105db85670de0b6b3a764000063ffffffff6105fa16565b9063ffffffff61063716565b9392505050565b670de0b6b3a764000090565b600082610609575060006105b7565b8282028284828161061657fe5b04146105e757604051600160e51b62461bcd02815260040161020590610acd565b600080821161065b57604051600160e51b62461bcd02815260040161020590610a5d565b81838161066457fe5b049392505050565b80356105b781610b4e565b80356105b781610b65565b60006020828403121561069457600080fd5b60006106a0848461066c565b949350505050565b6000602082840312156106ba57600080fd5b60006106a08484610677565b600080600080608085870312156106dc57600080fd5b60006106e88787610677565b94505060206106f987828801610677565b935050604061070a87828801610677565b925050606061071b87828801610677565b91505092959194509250565b61073081610b2f565b82525050565b61073081610b3a565b600061074c601683610b26565b7f50524943455f4558434545445f4d494e5f4c494d495400000000000000000000815260200192915050565b6000610785602b83610b26565b7f4d494e5f50524943455f4d5553545f4c4553535f4f525f455155414c5f5448418152600160a81b6a4e5f4d41585f505249434502602082015260400192915050565b60006107d5600f83610b26565b7f41535345545f4e4f545f4d415443480000000000000000000000000000000000815260200192915050565b600061080e600e83610b26565b7f4449564944494e475f4552524f52000000000000000000000000000000000000815260200192915050565b6000610847601883610b26565b7f50524943455f4348414e47455f524154455f4558434545440000000000000000815260200192915050565b6000610880600d83610b26565b7f50524943455f4558504952454400000000000000000000000000000000000000815260200192915050565b60006108b9601183610b26565b7f424c4f434b4e554d4245525f57524f4e47000000000000000000000000000000815260200192915050565b60006108f2600983610b26565b600160b91b6829aaa12fa2a92927a902815260200192915050565b600061091a600d83610b26565b7f494e56414c49445f4f574e455200000000000000000000000000000000000000815260200192915050565b6000610953600983610b26565b600160b91b682727aa2fa7aba722a902815260200192915050565b600061097b600983610b26565b600160b91b6826aaa62fa2a92927a902815260200192915050565b60006109a3601983610b26565b7f50524943455f4d5553545f475245415445525f5448414e5f3000000000000000815260200192915050565b60006109dc601683610b26565b7f50524943455f4558434545445f4d41585f4c494d495400000000000000000000815260200192915050565b61073081610b4b565b602081016105b78284610727565b602081016105b78284610736565b602080825281016105b78161073f565b602080825281016105b781610778565b602080825281016105b7816107c8565b602080825281016105b781610801565b602080825281016105b78161083a565b602080825281016105b781610873565b602080825281016105b7816108ac565b602080825281016105b7816108e5565b602080825281016105b78161090d565b602080825281016105b781610946565b602080825281016105b78161096e565b602080825281016105b781610996565b602080825281016105b7816109cf565b602081016105b78284610a08565b60408101610b198285610a08565b6105e76020830184610a08565b90815260200190565b60006105b782610b3f565b151590565b6001600160a01b031690565b90565b610b5781610b2f565b8114610b6257600080fd5b50565b610b5781610b4b56fea265627a7a723058205a3a26278a69fef52a915dd2a785a0179bfc96070487069cc7df8f31679cd3d16c6578706572696d656e74616cf50037000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000b5c0e8d21d902d61fa0000000000000000000000000000000000000000000000de24aac7eb3e705b4e0000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638f32d59b1161008c578063e45be8eb11610066578063e45be8eb14610187578063f2fde38b1461018f578063f59dfdfb146101a2578063fa259444146101b5576100ea565b80638f32d59b14610162578063a035b1fe14610177578063e38d6b5c1461017f576100ea565b8063715018a6116100c8578063715018a6146101355780637ece45e81461013f57806385faf624146101525780638da5cb5b1461015a576100ea565b80632552317c146100ef57806338d52e0f1461010d57806341976e0914610122575b600080fd5b6100f76101bd565b6040516101049190610afd565b60405180910390f35b6101156101c3565b6040516101049190610a11565b6100f7610130366004610682565b6101d2565b61013d61024e565b005b61013d61014d3660046106c6565b6102bf565b6100f761031d565b610115610323565b61016a610332565b6040516101049190610a1f565b6100f7610343565b6100f7610349565b6100f761034f565b61013d61019d366004610682565b610355565b61013d6101b03660046106a8565b610400565b6100f7610587565b60035481565b6001546001600160a01b031681565b6001546000906001600160a01b0383811691161461020e57604051600160e51b62461bcd02815260040161020590610a4d565b60405180910390fd5b60045460035461022590439063ffffffff61058d16565b111561024657604051600160e51b62461bcd02815260040161020590610a7d565b505060025490565b610256610332565b61027557604051600160e51b62461bcd02815260040161020590610abd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6102c7610332565b6102e657604051600160e51b62461bcd02815260040161020590610abd565b8082111561030957604051600160e51b62461bcd02815260040161020590610a3d565b600493909355600591909155600655600755565b60055481565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b60025481565b60075481565b60065481565b61035d610332565b61037c57604051600160e51b62461bcd02815260040161020590610abd565b6001600160a01b0381166103a557604051600160e51b62461bcd02815260040161020590610aad565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610408610332565b61042757604051600160e51b62461bcd02815260040161020590610abd565b6000811161044a57604051600160e51b62461bcd02815260040161020590610add565b436003541061046e57604051600160e51b62461bcd02815260040161020590610a8d565b60075481111561049357604051600160e51b62461bcd02815260040161020590610aed565b6006548110156104b857604051600160e51b62461bcd02815260040161020590610a2d565b600254156105405760006104ce826002546105bd565b90506104d86105ee565b8111156104fe576104f76104ea6105ee565b829063ffffffff61058d16565b9050610519565b6105168161050a6105ee565b9063ffffffff61058d16565b90505b60055481111561053e57604051600160e51b62461bcd02815260040161020590610a6d565b505b60028190554360038190556040517f4771fd008104ebb997a015445d17943eac52c60cdc6df59839c5a3d0c3e40c559161057c91849190610b0b565b60405180910390a150565b60045481565b6000828211156105b257604051600160e51b62461bcd02815260040161020590610a9d565b508082035b92915050565b60006105e7826105db85670de0b6b3a764000063ffffffff6105fa16565b9063ffffffff61063716565b9392505050565b670de0b6b3a764000090565b600082610609575060006105b7565b8282028284828161061657fe5b04146105e757604051600160e51b62461bcd02815260040161020590610acd565b600080821161065b57604051600160e51b62461bcd02815260040161020590610a5d565b81838161066457fe5b049392505050565b80356105b781610b4e565b80356105b781610b65565b60006020828403121561069457600080fd5b60006106a0848461066c565b949350505050565b6000602082840312156106ba57600080fd5b60006106a08484610677565b600080600080608085870312156106dc57600080fd5b60006106e88787610677565b94505060206106f987828801610677565b935050604061070a87828801610677565b925050606061071b87828801610677565b91505092959194509250565b61073081610b2f565b82525050565b61073081610b3a565b600061074c601683610b26565b7f50524943455f4558434545445f4d494e5f4c494d495400000000000000000000815260200192915050565b6000610785602b83610b26565b7f4d494e5f50524943455f4d5553545f4c4553535f4f525f455155414c5f5448418152600160a81b6a4e5f4d41585f505249434502602082015260400192915050565b60006107d5600f83610b26565b7f41535345545f4e4f545f4d415443480000000000000000000000000000000000815260200192915050565b600061080e600e83610b26565b7f4449564944494e475f4552524f52000000000000000000000000000000000000815260200192915050565b6000610847601883610b26565b7f50524943455f4348414e47455f524154455f4558434545440000000000000000815260200192915050565b6000610880600d83610b26565b7f50524943455f4558504952454400000000000000000000000000000000000000815260200192915050565b60006108b9601183610b26565b7f424c4f434b4e554d4245525f57524f4e47000000000000000000000000000000815260200192915050565b60006108f2600983610b26565b600160b91b6829aaa12fa2a92927a902815260200192915050565b600061091a600d83610b26565b7f494e56414c49445f4f574e455200000000000000000000000000000000000000815260200192915050565b6000610953600983610b26565b600160b91b682727aa2fa7aba722a902815260200192915050565b600061097b600983610b26565b600160b91b6826aaa62fa2a92927a902815260200192915050565b60006109a3601983610b26565b7f50524943455f4d5553545f475245415445525f5448414e5f3000000000000000815260200192915050565b60006109dc601683610b26565b7f50524943455f4558434545445f4d41585f4c494d495400000000000000000000815260200192915050565b61073081610b4b565b602081016105b78284610727565b602081016105b78284610736565b602080825281016105b78161073f565b602080825281016105b781610778565b602080825281016105b7816107c8565b602080825281016105b781610801565b602080825281016105b78161083a565b602080825281016105b781610873565b602080825281016105b7816108ac565b602080825281016105b7816108e5565b602080825281016105b78161090d565b602080825281016105b781610946565b602080825281016105b78161096e565b602080825281016105b781610996565b602080825281016105b7816109cf565b602081016105b78284610a08565b60408101610b198285610a08565b6105e76020830184610a08565b90815260200190565b60006105b782610b3f565b151590565b6001600160a01b031690565b90565b610b5781610b2f565b8114610b6257600080fd5b50565b610b5781610b4b56fea265627a7a723058205a3a26278a69fef52a915dd2a785a0179bfc96070487069cc7df8f31679cd3d16c6578706572696d656e74616cf50037

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

000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000007530000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000b5c0e8d21d902d61fa0000000000000000000000000000000000000000000000de24aac7eb3e705b4e0000000

-----Decoded View---------------
Arg [0] : _asset (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [1] : _validBlockNumber (uint256): 30000
Arg [2] : _maxChangeRate (uint256): 100000000000000000
Arg [3] : _minPrice (uint256): 900000000000000000000000000000
Arg [4] : _maxPrice (uint256): 1100000000000000000000000000000

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [1] : 0000000000000000000000000000000000000000000000000000000000007530
Arg [2] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [3] : 000000000000000000000000000000000000000b5c0e8d21d902d61fa0000000
Arg [4] : 000000000000000000000000000000000000000de24aac7eb3e705b4e0000000


Deployed Bytecode Sourcemap

8976:2387:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8976:2387:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9108:30;;;:::i;:::-;;;;;;;;;;;;;;;;9054:20;;;:::i;:::-;;;;;;;;11069:289;;;;;;;;;:::i;3044:163::-;;;:::i;:::-;;9739:438;;;;;;;;;:::i;9183:28::-;;;:::i;2292:110::-;;;:::i;2643:123::-;;;:::i;:::-;;;;;;;;9081:20;;;:::i;9248:23::-;;;:::i;9218:::-;;;:::i;3376:250::-;;;;;;;;;:::i;10185:876::-;;;;;;;;;:::i;9145:31::-;;;:::i;9108:30::-;;;;:::o;9054:20::-;;;-1:-1:-1;;;;;9054:20:0;;:::o;11069:289::-;11202:5;;11169:7;;-1:-1:-1;;;;;11202:15:0;;;:5;;:15;11194:43;;;;-1:-1:-1;;;;;11194:43:0;;;;;;;;;;;;;;;;;11293:16;;11273:15;;11256:33;;:12;;:33;:16;:33;:::i;:::-;:53;;11248:79;;;;-1:-1:-1;;;;;11248:79:0;;;;;;;;;-1:-1:-1;;11345:5:0;;;11069:289::o;3044:163::-;2521:9;:7;:9::i;:::-;2513:31;;;;-1:-1:-1;;;;;2513:31:0;;;;;;;;;3166:1;3150:6;;3129:40;;-1:-1:-1;;;;;3150:6:0;;;;3129:40;;3166:1;;3129:40;3197:1;3180:19;;-1:-1:-1;;;;;;3180:19:0;;;3044:163::o;9739:438::-;2521:9;:7;:9::i;:::-;2513:31;;;;-1:-1:-1;;;;;2513:31:0;;;;;;;;;9962:9;9949;:22;;9941:78;;;;-1:-1:-1;;;;;9941:78:0;;;;;;;;;10030:16;:36;;;;10077:13;:30;;;;10118:8;:20;10149:8;:20;9739:438::o;9183:28::-;;;;:::o;2292:110::-;2356:7;2388:6;-1:-1:-1;;;;;2388:6:0;2292:110;:::o;2643:123::-;2709:4;2752:6;-1:-1:-1;;;;;2752:6:0;2738:10;:20;;2643:123::o;9081:20::-;;;;:::o;9248:23::-;;;;:::o;9218:::-;;;;:::o;3376:250::-;2521:9;:7;:9::i;:::-;2513:31;;;;-1:-1:-1;;;;;2513:31:0;;;;;;;;;-1:-1:-1;;;;;3496:22:0;;3488:48;;;;-1:-1:-1;;;;;3488:48:0;;;;;;;;;3573:6;;;3552:38;;-1:-1:-1;;;;;3552:38:0;;;;3573:6;;;3552:38;;;3601:6;:17;;-1:-1:-1;;;;;;3601:17:0;-1:-1:-1;;;;;3601:17:0;;;;;;;;;;3376:250::o;10185:876::-;2521:9;:7;:9::i;:::-;2513:31;;;;-1:-1:-1;;;;;2513:31:0;;;;;;;;;10305:1;10294:8;:12;10286:50;;;;-1:-1:-1;;;;;10286:50:0;;;;;;;;;10373:12;10355:15;;:30;10347:60;;;;-1:-1:-1;;;;;10347:60:0;;;;;;;;;10438:8;;10426;:20;;10418:55;;;;-1:-1:-1;;;;;10418:55:0;;;;;;;;;10504:8;;10492;:20;;10484:55;;;;-1:-1:-1;;;;;10484:55:0;;;;;;;;;10556:5;;:9;10552:381;;10582:18;10603:33;10620:8;10630:5;;10603:16;:33::i;:::-;10582:54;;10668:13;:11;:13::i;:::-;10655:10;:26;10651:192;;;10715:29;10730:13;:11;:13::i;:::-;10715:10;;:29;:14;:29;:::i;:::-;10702:42;;10651:192;;;10798:29;10816:10;10798:13;:11;:13::i;:::-;:17;:29;:17;:29;:::i;:::-;10785:42;;10651:192;10879:13;;10865:10;:27;;10857:64;;;;-1:-1:-1;;;;;10857:64:0;;;;;;;;;10552:381;;10945:5;:16;;;10990:12;10972:15;:30;;;11020:33;;;;;;10953:8;;10990:12;11020:33;;;;;;;;;;10185:876;:::o;9145:31::-;;;;:::o;4753:194::-;4863:7;4901:1;4896;:6;;4888:28;;;;-1:-1:-1;;;;;4888:28:0;;;;;;;;;-1:-1:-1;4934:5:0;;;4753:194;;;;;:::o;1445:183::-;1565:7;1597:23;1618:1;1597:16;:6;778;1597:16;:10;:16;:::i;:::-;:20;:23;:20;:23;:::i;:::-;1590:30;1445:183;-1:-1:-1;;;1445:183:0:o;793:109::-;778:6;793:109;:::o;3712:283::-;3822:7;3851:6;3847:47;;-1:-1:-1;3881:1:0;3874:8;;3847:47;3918:5;;;3922:1;3918;:5;:1;3942:5;;;;;:10;3934:32;;;;-1:-1:-1;;;;;3934:32:0;;;;;;;;4097:198;4207:7;4244:1;4240;:5;4232:32;;;;-1:-1:-1;;;;;4232:32:0;;;;;;;;;4286:1;4282;:5;;;;;;;4097:198;-1:-1:-1;;;4097:198:0:o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;279:241;;383:2;371:9;362:7;358:23;354:32;351:2;;;399:1;396;389:12;351:2;434:1;451:53;496:7;476:9;451:53;;;441:63;345:175;-1:-1;;;;345:175;527:241;;631:2;619:9;610:7;606:23;602:32;599:2;;;647:1;644;637:12;599:2;682:1;699:53;744:7;724:9;699:53;;775:617;;;;;930:3;918:9;909:7;905:23;901:33;898:2;;;947:1;944;937:12;898:2;982:1;999:53;1044:7;1024:9;999:53;;;989:63;;961:97;1089:2;1107:53;1152:7;1143:6;1132:9;1128:22;1107:53;;;1097:63;;1068:98;1197:2;1215:53;1260:7;1251:6;1240:9;1236:22;1215:53;;;1205:63;;1176:98;1305:2;1323:53;1368:7;1359:6;1348:9;1344:22;1323:53;;;1313:63;;1284:98;892:500;;;;;;;;1399:113;1482:24;1500:5;1482:24;;;1477:3;1470:37;1464:48;;;1519:104;1596:21;1611:5;1596:21;;1631:364;;1791:67;1855:2;1850:3;1791:67;;;1891:66;1871:87;;1986:2;1977:12;;1777:218;-1:-1;;1777:218;2004:465;;2164:67;2228:2;2223:3;2164:67;;;2264:66;2244:87;;-1:-1;;;;;2360:2;2351:12;;2344:88;2460:2;2451:12;;2150:319;-1:-1;;2150:319;2478:364;;2638:67;2702:2;2697:3;2638:67;;;2738:66;2718:87;;2833:2;2824:12;;2624:218;-1:-1;;2624:218;2851:364;;3011:67;3075:2;3070:3;3011:67;;;3111:66;3091:87;;3206:2;3197:12;;2997:218;-1:-1;;2997:218;3224:364;;3384:67;3448:2;3443:3;3384:67;;;3484:66;3464:87;;3579:2;3570:12;;3370:218;-1:-1;;3370:218;3597:364;;3757:67;3821:2;3816:3;3757:67;;;3857:66;3837:87;;3952:2;3943:12;;3743:218;-1:-1;;3743:218;3970:364;;4130:67;4194:2;4189:3;4130:67;;;4230:66;4210:87;;4325:2;4316:12;;4116:218;-1:-1;;4116:218;4343:363;;4503:66;4567:1;4562:3;4503:66;;;-1:-1;;;;;4582:87;;4697:2;4688:12;;4489:217;-1:-1;;4489:217;4715:364;;4875:67;4939:2;4934:3;4875:67;;;4975:66;4955:87;;5070:2;5061:12;;4861:218;-1:-1;;4861:218;5088:363;;5248:66;5312:1;5307:3;5248:66;;;-1:-1;;;;;5327:87;;5442:2;5433:12;;5234:217;-1:-1;;5234:217;5460:363;;5620:66;5684:1;5679:3;5620:66;;;-1:-1;;;;;5699:87;;5814:2;5805:12;;5606:217;-1:-1;;5606:217;5832:364;;5992:67;6056:2;6051:3;5992:67;;;6092:66;6072:87;;6187:2;6178:12;;5978:218;-1:-1;;5978:218;6205:364;;6365:67;6429:2;6424:3;6365:67;;;6465:66;6445:87;;6560:2;6551:12;;6351:218;-1:-1;;6351:218;6577:113;6660:24;6678:5;6660:24;;6697:213;6815:2;6800:18;;6829:71;6804:9;6873:6;6829:71;;6917:201;7029:2;7014:18;;7043:65;7018:9;7081:6;7043:65;;7125:407;7316:2;7330:47;;;7301:18;;7391:131;7301:18;7391:131;;7539:407;7730:2;7744:47;;;7715:18;;7805:131;7715:18;7805:131;;7953:407;8144:2;8158:47;;;8129:18;;8219:131;8129:18;8219:131;;8367:407;8558:2;8572:47;;;8543:18;;8633:131;8543:18;8633:131;;8781:407;8972:2;8986:47;;;8957:18;;9047:131;8957:18;9047:131;;9195:407;9386:2;9400:47;;;9371:18;;9461:131;9371:18;9461:131;;9609:407;9800:2;9814:47;;;9785:18;;9875:131;9785:18;9875:131;;10023:407;10214:2;10228:47;;;10199:18;;10289:131;10199:18;10289:131;;10437:407;10628:2;10642:47;;;10613:18;;10703:131;10613:18;10703:131;;10851:407;11042:2;11056:47;;;11027:18;;11117:131;11027:18;11117:131;;11265:407;11456:2;11470:47;;;11441:18;;11531:131;11441:18;11531:131;;11679:407;11870:2;11884:47;;;11855:18;;11945:131;11855:18;11945:131;;12093:407;12284:2;12298:47;;;12269:18;;12359:131;12269:18;12359:131;;12507:213;12625:2;12610:18;;12639:71;12614:9;12683:6;12639:71;;12727:324;12873:2;12858:18;;12887:71;12862:9;12931:6;12887:71;;;12969:72;13037:2;13026:9;13022:18;13013:6;12969:72;;13059:163;13162:19;;;13211:4;13202:14;;13155:67;13230:91;;13292:24;13310:5;13292:24;;13328:85;13394:13;13387:21;;13370:43;13420:121;-1:-1;;;;;13482:54;;13465:76;13548:72;13610:5;13593:27;13627:117;13696:24;13714:5;13696:24;;;13689:5;13686:35;13676:2;;13735:1;13732;13725:12;13676:2;13670:74;;13751:117;13820:24;13838:5;13820:24;

Swarm Source

bzzr://5a3a26278a69fef52a915dd2a785a0179bfc96070487069cc7df8f31679cd3d1

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.