ETH Price: $1,974.91 (+0.71%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Amount:Between 1-1M
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Amount:Between 1-1M
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MCAGAggregator

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;

import {Errors} from "./libraries/Errors.sol";
import {IAccessControl} from "lib/openzeppelin-contracts/contracts/access/IAccessControl.sol";
import {MCAGAggregatorInterface} from "./interfaces/MCAGAggregatorInterface.sol";
import {Roles} from "./libraries/Roles.sol";
import {WadRayMath} from "./libraries/WadRayMath.sol";

/**
 * @title MCAG Aggregator
 * @author MIMO Labs
 * @notice MCAGAggregator contracts serve as an oracle for the MCAGRateFeed
 */
contract MCAGAggregator is MCAGAggregatorInterface {
    using WadRayMath for uint256;

    uint256 public constant MIN_TERM = 4 weeks;

    uint8 private constant _VERSION = 1;
    uint8 private constant _DECIMALS = 27;

    uint256 private immutable _term;

    IAccessControl public immutable accessController;

    uint80 private _roundId;
    string private _description;
    int256 private _answer;
    int256 private _maxAnswer;
    uint256 private _volatilityThreshold;
    uint256 private _updatedAt;

    /**
     * @dev Modifier to make a function callable only when the caller has a specific role
     * @param role The role required to call the function
     */
    modifier onlyRole(bytes32 role) {
        if (!accessController.hasRole(role, msg.sender)) {
            revert Errors.ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE(msg.sender, role);
        }
        _;
    }

    /**
     * @param description_ Description of the oracle - for example "10 YEAR US TREASURY".
     * @param maxAnswer_ Maximum sensible answer the contract should accept during transmission
     * @param _accessController MCAG AccessController
     */
    constructor(
        string memory description_,
        int256 maxAnswer_,
        IAccessControl _accessController,
        int256 answer,
        uint256 volatilityThreshold,
        uint256 term
    ) {
        if (address(_accessController) == address(0)) {
            revert Errors.CANNOT_SET_TO_ADDRESS_ZERO();
        }
        if (volatilityThreshold <= 0) {
            revert Errors.INVALID_VOLATILITY_THRESHOLD();
        }
        if (answer > maxAnswer_) {
            revert Errors.TRANSMITTED_ANSWER_TOO_HIGH(answer, maxAnswer_);
        }
        if (term < MIN_TERM) {
            revert Errors.TERM_TOO_LOW(term, MIN_TERM);
        }

        _description = description_;
        _answer = answer;
        _maxAnswer = maxAnswer_;
        _volatilityThreshold = volatilityThreshold;
        _updatedAt = block.timestamp;
        _term = term;
        accessController = _accessController;

        emit AccessControllerSet(address(_accessController));
        emit AnswerTransmitted(msg.sender, 0, answer);
        emit MaxAnswerSet(0, maxAnswer_);
        emit VolatilityThresholdSet(0, volatilityThreshold);
        emit TermSet(term);
    }

    /**
     * @notice Transmits a new price to the aggreator and updates the answer, round id and updated at.
     * @dev Can only be called by a registered transmitter.
     * @param answer New central bank rate as a per second cumualtive rate in 27 decimals.
     * For example a 5% annual linear rate would be converted to a per second cumulative rate as follow :
     * (1 + 5%)^(1 / 31536000) * 1e27 = 100000000578137865680459171
     */
    function transmit(int256 answer) external onlyRole(Roles.MCAG_TRANSMITTER_ROLE) {
        if (answer > _maxAnswer) {
            revert Errors.TRANSMITTED_ANSWER_TOO_HIGH(answer, _maxAnswer);
        }
        if (answer < 0) {
            revert Errors.TRANSMITTED_ANSWER_TOO_LOW(answer, 0);
        }

        int256 answer_ = _answer;
        uint256 oldAnswer = uint256(answer_);
        uint256 newAnswer = uint256(answer);

        uint256 oldTotalLinearRate = oldAnswer.rayPow(_term);
        uint256 newTotalLinearRate = newAnswer.rayPow(_term);

        uint256 absoluteRateChange;

        if (newTotalLinearRate > oldTotalLinearRate) {
            absoluteRateChange = newTotalLinearRate - oldTotalLinearRate;
        } else {
            absoluteRateChange = oldTotalLinearRate - newTotalLinearRate;
        }

        if (absoluteRateChange > _volatilityThreshold) {
            revert Errors.RATE_TOO_VOLATILE(absoluteRateChange, _volatilityThreshold);
        }

        ++_roundId;
        _updatedAt = block.timestamp;
        _answer = answer;

        emit AnswerTransmitted(msg.sender, _roundId, answer);
    }

    /**
     * @notice Sets a new max answer.
     * @dev Can only be called by MCAG Manager.
     * @param newMaxAnswer New maximum sensible answer the contract should accept in RAY.
     */
    function setMaxAnswer(int256 newMaxAnswer) external onlyRole(Roles.MCAG_MANAGER_ROLE) {
        emit MaxAnswerSet(_maxAnswer, newMaxAnswer);
        _maxAnswer = newMaxAnswer;
    }

    /**
     * @notice Sets a new volatility threshold.
     * @dev Can only be called by MCAG Manager.
     * @param newVolatilityThreshold New maximum absolute value change of the answer between two consecutive rounds.
     */
    function setVolatilityThreshold(uint256 newVolatilityThreshold) external onlyRole(Roles.MCAG_MANAGER_ROLE) {
        if (newVolatilityThreshold == 0) {
            revert Errors.INVALID_VOLATILITY_THRESHOLD();
        }
        emit VolatilityThresholdSet(_volatilityThreshold, newVolatilityThreshold);
        _volatilityThreshold = newVolatilityThreshold;
    }

    /**
     * @notice Returns round data per the Chainlink format.
     * @return roundId Latest _roundId.
     * @return answer Latest answer transmitted.
     * @return startedAt Unused variable here only to follow Chainlink format.
     * @return updatedAt Timestamp of the last transmitted answer.
     * @return answeredInRound Latest _roundId.
     */
    function latestRoundData()
        external
        view
        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
    {
        roundId = _roundId;
        answer = _answer;
        startedAt = _updatedAt;
        updatedAt = _updatedAt;
        answeredInRound = _roundId;
    }

    /**
     * @return Description of the oracle - for example "10 YEAR US TREASURY".
     */
    function description() external view returns (string memory) {
        return _description;
    }

    /**
     * @return Maximum sensible answer the contract should accept.
     */
    function maxAnswer() external view returns (int256) {
        return _maxAnswer;
    }

    /**
     * @return Maximum absolute value change of the answer between two consecutive rounds.
     */
    function getVolatilityThreshold() external view returns (uint256) {
        return _volatilityThreshold;
    }

    /**
     * @return The term of oracle asset in seconds. For example 364 days for 52 week t-bills.
     */
    function getTerm() external view returns (uint256) {
        return _term;
    }

    /**
     * @return Number of decimals used to get its user representation.
     */
    function decimals() external pure returns (uint8) {
        return _DECIMALS;
    }

    /**
     * @return Contract version.
     */
    function version() external pure returns (uint8) {
        return _VERSION;
    }
}

// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;

interface MCAGAggregatorInterface {
    event AccessControllerSet(address accesController);
    event AnswerTransmitted(address indexed transmitter, uint80 roundId, int256 answer);
    event MaxAnswerSet(int256 oldMaxAnswer, int256 newMaxAnswer);
    event VolatilityThresholdSet(uint256 oldVolatilityThreshold, uint256 newVolatilityThreshold);
    event TermSet(uint256 term);

    function transmit(int256 answer) external;

    function decimals() external view returns (uint8);

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

    function maxAnswer() external view returns (int256);

    function getVolatilityThreshold() external view returns (uint256);

    function version() external view returns (uint8);

    function getTerm() external view returns (uint256);

    function latestRoundData()
        external
        view
        returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}

File 3 of 6 : Errors.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

library Errors {
    error CANNOT_SET_TO_ADDRESS_ZERO();
    error ERC721_APPROVAL_TO_CURRENT_OWNER();
    error ERC721_APPROVE_CALLER_IS_NOT_TOKEN_OWNER_OR_APPROVED_FOR_ALL();
    error ERC721_INVALID_TOKEN_ID();
    error ERC721_CALLER_IS_NOT_TOKEN_OWNER();
    error ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE(address account, bytes32 role);
    error BLACKLIST_CALLER_IS_NOT_BLACKLISTER();
    error BLACKLIST_ACCOUNT_IS_NOT_BLACKLISTED(address account);
    error BLACKLIST_ACCOUNT_IS_BLACKLISTED(address account);
    error TRANSMITTED_ANSWER_TOO_HIGH(int256 answer, int256 maxAnswer);
    error TRANSMITTED_ANSWER_TOO_LOW(int256 answer, int256 minAnswer);
    error TOKEN_IS_NOT_TRANSFERABLE();
    error KYC_DATA_OWNER_MISMATCH(address to, address owner);
    error RATE_TOO_VOLATILE(uint256 absoluteRateChange, uint256 volatilityThreshold);
    error INVALID_VOLATILITY_THRESHOLD();
    error TERMS_AND_CONDITIONS_URL_DOES_NOT_EXIST(uint256 tncId);
    error TERM_TOO_LOW(uint256 term, uint256 minTerm);
    error RISK_CATEGORY_MISMATCH(bytes4 currency, bytes32 name, uint64 term, bytes32 riskCategory);
    error MATURITY_LESS_THAN_ISSUANCE(uint64 maturity, uint64 issuance);
    error INVALID_RISK_CATEGORY();
    error EMPTY_CUSIP_AND_ISIN();
    error INVALID_MAX_COUPON();
    error INVALID_COUPON(uint256 coupon, uint256 minCoupon, uint256 maxCoupon);
}

File 4 of 6 : Roles.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

library Roles {
    bytes32 public constant MCAG_MINT_ROLE = keccak256("MCAG_MINT_ROLE");
    bytes32 public constant MCAG_BURN_ROLE = keccak256("MCAG_BURN_ROLE");
    bytes32 public constant MCAG_BLACKLIST_ROLE = keccak256("MCAG_BLACKLIST_ROLE");
    bytes32 public constant MCAG_PAUSE_ROLE = keccak256("MCAG_PAUSE_ROLE");
    bytes32 public constant MCAG_UNPAUSE_ROLE = keccak256("MCAG_UNPAUSE_ROLE");
    bytes32 public constant MCAG_TRANSMITTER_ROLE = keccak256("MCAG_TRANSMITTER_ROLE");
    bytes32 public constant MCAG_MANAGER_ROLE = keccak256("MCAG_MANAGER_ROLE");
    bytes32 public constant MCAG_SET_URI_ROLE = keccak256("MCAG_SET_URI_ROLE");
    bytes32 public constant MCAG_SET_TNC_ROLE = keccak256("MCAG_SET_TNC_ROLE");
    bytes32 public constant MCAG_SET_MAX_COUPON_ROLE = keccak256("MCAG_SET_MAX_COUPON_ROLE");
}

// SPDX-License-Identifier: BUSL-1.1
pragma solidity 0.8.17;

/**
 * @title WadRayMath library
 * @author Aave
 * @notice Provides functions to perform calculations with Wad and Ray units
 * @dev Provides mul and div function for wads (decimal numbers with 18 digits of precision) and rays (decimal numbers
 * with 27 digits of precision)
 * @dev Operations are rounded. If a value is >=.5, will be rounded up, otherwise rounded down.
 *
 */
library WadRayMath {
    // HALF_WAD and HALF_RAY expressed with extended notation as constant with operations are not supported in Yul assembly
    uint256 internal constant WAD = 1e18;
    uint256 internal constant HALF_WAD = 0.5e18;

    uint256 internal constant RAY = 1e27;
    uint256 internal constant HALF_RAY = 0.5e27;

    uint256 internal constant WAD_RAY_RATIO = 1e9;

    /**
     * @dev Multiplies two wad, rounding half up to the nearest wad
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Wad
     * @param b Wad
     * @return c = a*b, in wad
     *
     */
    function wadMul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // to avoid overflow, a <= (type(uint256).max - HALF_WAD) / b
        assembly {
            if iszero(or(iszero(b), iszero(gt(a, div(sub(not(0), HALF_WAD), b))))) { revert(0, 0) }

            c := div(add(mul(a, b), HALF_WAD), WAD)
        }
    }

    /**
     * @dev Divides two wad, rounding half up to the nearest wad
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Wad
     * @param b Wad
     * @return c = a/b, in wad
     *
     */
    function wadDiv(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // to avoid overflow, a <= (type(uint256).max - halfB) / WAD
        assembly {
            if or(iszero(b), iszero(iszero(gt(a, div(sub(not(0), div(b, 2)), WAD))))) { revert(0, 0) }

            c := div(add(mul(a, WAD), div(b, 2)), b)
        }
    }

    /**
     * @notice Multiplies two ray, rounding half up to the nearest ray
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Ray
     * @param b Ray
     * @return c = a raymul b
     *
     */
    function rayMul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // to avoid overflow, a <= (type(uint256).max - HALF_RAY) / b
        assembly {
            if iszero(or(iszero(b), iszero(gt(a, div(sub(not(0), HALF_RAY), b))))) { revert(0, 0) }

            c := div(add(mul(a, b), HALF_RAY), RAY)
        }
    }

    /**
     * @notice Divides two ray, rounding half up to the nearest ray
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Ray
     * @param b Ray
     * @return c = a raydiv b
     *
     */
    function rayDiv(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // to avoid overflow, a <= (type(uint256).max - halfB) / RAY
        assembly {
            if or(iszero(b), iszero(iszero(gt(a, div(sub(not(0), div(b, 2)), RAY))))) { revert(0, 0) }

            c := div(add(mul(a, RAY), div(b, 2)), b)
        }
    }

    /**
     * @dev Casts ray down to wad
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Ray
     * @return b = a converted to wad, rounded half up to the nearest wad
     *
     */
    function rayToWad(uint256 a) internal pure returns (uint256 b) {
        assembly {
            b := div(a, WAD_RAY_RATIO)
            let remainder := mod(a, WAD_RAY_RATIO)
            if iszero(lt(remainder, div(WAD_RAY_RATIO, 2))) { b := add(b, 1) }
        }
    }

    /**
     * @dev Converts wad up to ray
     * @dev assembly optimized for improved gas savings, see https://twitter.com/transmissions11/status/1451131036377571328
     * @param a Wad
     * @return b = a converted in ray
     *
     */
    function wadToRay(uint256 a) internal pure returns (uint256 b) {
        // to avoid overflow, b/WAD_RAY_RATIO == a
        assembly {
            b := mul(a, WAD_RAY_RATIO)

            if iszero(eq(div(b, WAD_RAY_RATIO), a)) { revert(0, 0) }
        }
    }

    /**
     * @dev calculates base^exp. The code uses the ModExp precompile
     * @return z base^exp, in ray
     *
     */
    function rayPow(uint256 x, uint256 n) internal pure returns (uint256 z) {
        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rayMul(x, x);

            if (n % 2 != 0) {
                z = rayMul(z, x);
            }
        }
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)

pragma solidity ^0.8.0;

/**
 * @dev External interface of AccessControl declared to support ERC165 detection.
 */
interface IAccessControl {
    /**
     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
     *
     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
     * {RoleAdminChanged} not being emitted signaling this.
     *
     * _Available since v3.1._
     */
    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    /**
     * @dev Emitted when `account` is granted `role`.
     *
     * `sender` is the account that originated the contract call, an admin role
     * bearer except when using {AccessControl-_setupRole}.
     */
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Emitted when `account` is revoked `role`.
     *
     * `sender` is the account that originated the contract call:
     *   - if using `revokeRole`, it is the admin role bearer
     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
     */
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    /**
     * @dev Returns `true` if `account` has been granted `role`.
     */
    function hasRole(bytes32 role, address account) external view returns (bool);

    /**
     * @dev Returns the admin role that controls `role`. See {grantRole} and
     * {revokeRole}.
     *
     * To change a role's admin, use {AccessControl-_setRoleAdmin}.
     */
    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    /**
     * @dev Grants `role` to `account`.
     *
     * If `account` had not been already granted `role`, emits a {RoleGranted}
     * event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function grantRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from `account`.
     *
     * If `account` had been granted `role`, emits a {RoleRevoked} event.
     *
     * Requirements:
     *
     * - the caller must have ``role``'s admin role.
     */
    function revokeRole(bytes32 role, address account) external;

    /**
     * @dev Revokes `role` from the calling account.
     *
     * Roles are often managed via {grantRole} and {revokeRole}: this function's
     * purpose is to provide a mechanism for accounts to lose their privileges
     * if they are compromised (such as when a trusted device is misplaced).
     *
     * If the calling account had been granted `role`, emits a {RoleRevoked}
     * event.
     *
     * Requirements:
     *
     * - the caller must be `account`.
     */
    function renounceRole(bytes32 role, address account) external;
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"description_","type":"string"},{"internalType":"int256","name":"maxAnswer_","type":"int256"},{"internalType":"contract IAccessControl","name":"_accessController","type":"address"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"volatilityThreshold","type":"uint256"},{"internalType":"uint256","name":"term","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"ACCESS_CONTROL_ACCOUNT_IS_MISSING_ROLE","type":"error"},{"inputs":[],"name":"CANNOT_SET_TO_ADDRESS_ZERO","type":"error"},{"inputs":[],"name":"INVALID_VOLATILITY_THRESHOLD","type":"error"},{"inputs":[{"internalType":"uint256","name":"absoluteRateChange","type":"uint256"},{"internalType":"uint256","name":"volatilityThreshold","type":"uint256"}],"name":"RATE_TOO_VOLATILE","type":"error"},{"inputs":[{"internalType":"uint256","name":"term","type":"uint256"},{"internalType":"uint256","name":"minTerm","type":"uint256"}],"name":"TERM_TOO_LOW","type":"error"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"int256","name":"maxAnswer","type":"int256"}],"name":"TRANSMITTED_ANSWER_TOO_HIGH","type":"error"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"int256","name":"minAnswer","type":"int256"}],"name":"TRANSMITTED_ANSWER_TOO_LOW","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"accesController","type":"address"}],"name":"AccessControllerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"transmitter","type":"address"},{"indexed":false,"internalType":"uint80","name":"roundId","type":"uint80"},{"indexed":false,"internalType":"int256","name":"answer","type":"int256"}],"name":"AnswerTransmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"oldMaxAnswer","type":"int256"},{"indexed":false,"internalType":"int256","name":"newMaxAnswer","type":"int256"}],"name":"MaxAnswerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"term","type":"uint256"}],"name":"TermSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldVolatilityThreshold","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newVolatilityThreshold","type":"uint256"}],"name":"VolatilityThresholdSet","type":"event"},{"inputs":[],"name":"MIN_TERM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accessController","outputs":[{"internalType":"contract IAccessControl","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTerm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVolatilityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"roundId","type":"uint80"},{"internalType":"int256","name":"answer","type":"int256"},{"internalType":"uint256","name":"startedAt","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"uint80","name":"answeredInRound","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"newMaxAnswer","type":"int256"}],"name":"setMaxAnswer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVolatilityThreshold","type":"uint256"}],"name":"setVolatilityThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"answer","type":"int256"}],"name":"transmit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"}]

60c06040523480156200001157600080fd5b5060405162001cfe38038062001cfe8339818101604052810190620000379190620005a8565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200009e576040517f6a8403ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008211620000d9576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84831315620001235782856040517f6bbbaae10000000000000000000000000000000000000000000000000000000081526004016200011a92919062000674565b60405180910390fd5b6224ea008110156200017357806224ea006040517f9fa7dec60000000000000000000000000000000000000000000000000000000081526004016200016a929190620006b2565b60405180910390fd5b856001908162000184919062000920565b508260028190555084600381905550816004819055504260058190555080608081815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fd0761a673d8d97d3dd1e8beb78920467f6482d897a3d1a77d0749f20c653130d846040516200020e919062000a18565b60405180910390a13373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b8406000856040516200026192919062000a8e565b60405180910390a27f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286000866040516200029d92919062000af4565b60405180910390a17f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600083604051620002d992919062000b5a565b60405180910390a17fc7280f97f846a9a86abb340951a554b3b460a661f096b87b54c1e05428f20c748160405162000312919062000b87565b60405180910390a150505050505062000ba4565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200038f8262000344565b810181811067ffffffffffffffff82111715620003b157620003b062000355565b5b80604052505050565b6000620003c662000326565b9050620003d4828262000384565b919050565b600067ffffffffffffffff821115620003f757620003f662000355565b5b620004028262000344565b9050602081019050919050565b60005b838110156200042f57808201518184015260208101905062000412565b60008484015250505050565b6000620004526200044c84620003d9565b620003ba565b9050828152602081018484840111156200047157620004706200033f565b5b6200047e8482856200040f565b509392505050565b600082601f8301126200049e576200049d6200033a565b5b8151620004b08482602086016200043b565b91505092915050565b6000819050919050565b620004ce81620004b9565b8114620004da57600080fd5b50565b600081519050620004ee81620004c3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200052182620004f4565b9050919050565b6000620005358262000514565b9050919050565b620005478162000528565b81146200055357600080fd5b50565b60008151905062000567816200053c565b92915050565b6000819050919050565b62000582816200056d565b81146200058e57600080fd5b50565b600081519050620005a28162000577565b92915050565b60008060008060008060c08789031215620005c857620005c762000330565b5b600087015167ffffffffffffffff811115620005e957620005e862000335565b5b620005f789828a0162000486565b96505060206200060a89828a01620004dd565b95505060406200061d89828a0162000556565b94505060606200063089828a01620004dd565b93505060806200064389828a0162000591565b92505060a06200065689828a0162000591565b9150509295509295509295565b6200066e81620004b9565b82525050565b60006040820190506200068b600083018562000663565b6200069a602083018462000663565b9392505050565b620006ac816200056d565b82525050565b6000604082019050620006c96000830185620006a1565b620006d86020830184620006a1565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200073257607f821691505b602082108103620007485762000747620006ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000773565b620007be868362000773565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000801620007fb620007f5846200056d565b620007d6565b6200056d565b9050919050565b6000819050919050565b6200081d83620007e0565b620008356200082c8262000808565b84845462000780565b825550505050565b600090565b6200084c6200083d565b6200085981848462000812565b505050565b5b8181101562000881576200087560008262000842565b6001810190506200085f565b5050565b601f821115620008d0576200089a816200074e565b620008a58462000763565b81016020851015620008b5578190505b620008cd620008c48562000763565b8301826200085e565b50505b505050565b600082821c905092915050565b6000620008f560001984600802620008d5565b1980831691505092915050565b6000620009108383620008e2565b9150826002028217905092915050565b6200092b82620006df565b67ffffffffffffffff81111562000947576200094662000355565b5b62000953825462000719565b6200096082828562000885565b600060209050601f83116001811462000998576000841562000983578287015190505b6200098f858262000902565b865550620009ff565b601f198416620009a8866200074e565b60005b82811015620009d257848901518255600182019150602085019450602081019050620009ab565b86831015620009f25784890151620009ee601f891682620008e2565b8355505b6001600288020188555050505b505050505050565b62000a128162000514565b82525050565b600060208201905062000a2f600083018462000a07565b92915050565b6000819050919050565b600069ffffffffffffffffffff82169050919050565b600062000a7662000a7062000a6a8462000a35565b620007d6565b62000a3f565b9050919050565b62000a888162000a55565b82525050565b600060408201905062000aa5600083018562000a7d565b62000ab4602083018462000663565b9392505050565b600062000adc62000ad662000ad08462000a35565b620007d6565b620004b9565b9050919050565b62000aee8162000abb565b82525050565b600060408201905062000b0b600083018562000ae3565b62000b1a602083018462000663565b9392505050565b600062000b4262000b3c62000b368462000a35565b620007d6565b6200056d565b9050919050565b62000b548162000b21565b82525050565b600060408201905062000b71600083018562000b49565b62000b806020830184620006a1565b9392505050565b600060208201905062000b9e6000830184620006a1565b92915050565b60805160a05161111162000bed60003960008181610242015281816106560152818161069b015261081b0152600081816103cb01528181610402015261057801526111116000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060006104307f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea264697066735822122004a17612a58f55d4609c9b745d271e740a5aea0be277e67756048ebd7c93514364736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d13455c38653f2c6d0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cb24ecf390379af4b00000000000000000000000000000000000000000018d0bf423c03d8de0000000000000000000000000000000000000000000000000000000000000001dfe200000000000000000000000000000000000000000000000000000000000000001a353257205553205442696c6c2041646a75737465642052617465000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f0000000000000000000000000000000000000000000000000000000001dfe2008461099690919063ffffffff16565b905060006104307f0000000000000000000000000000000000000000000000000000000001dfe2008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000001dfe200905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72581565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea264697066735822122004a17612a58f55d4609c9b745d271e740a5aea0be277e67756048ebd7c93514364736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d13455c38653f2c6d0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cb24ecf390379af4b00000000000000000000000000000000000000000018d0bf423c03d8de0000000000000000000000000000000000000000000000000000000000000001dfe200000000000000000000000000000000000000000000000000000000000000001a353257205553205442696c6c2041646a75737465642052617465000000000000

-----Decoded View---------------
Arg [0] : description_ (string): 52W US TBill Adjusted Rate
Arg [1] : maxAnswer_ (int256): 1000000008319516284844715117
Arg [2] : _accessController (address): 0x8b853de26973b6C772B1e29Bb127F1a60130a725
Arg [3] : answer (int256): 1000000001332589384447930187
Arg [4] : volatilityThreshold (uint256): 30000000000000000000000000
Arg [5] : term (uint256): 31449600

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000033b2e3d13455c38653f2c6d
Arg [2] : 0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a725
Arg [3] : 0000000000000000000000000000000000000000033b2e3cb24ecf390379af4b
Arg [4] : 00000000000000000000000000000000000000000018d0bf423c03d8de000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000001dfe200
Arg [6] : 000000000000000000000000000000000000000000000000000000000000001a
Arg [7] : 353257205553205442696c6c2041646a75737465642052617465000000000000


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

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.