ETH Price: $2,599.09 (-3.00%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
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
File 1 of 6 : MCAGAggregator.sol
// 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;
    }
}

File 2 of 6 : MCAGAggregatorInterface.sol
// 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");
}

File 5 of 6 : WadRayMath.sol
// 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);
            }
        }
    }
}

File 6 of 6 : IAccessControl.sol
// 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

[{"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"}]

60c06040523480156200001157600080fd5b5060405162001cfe38038062001cfe8339818101604052810190620000379190620005a8565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200009e576040517f6a8403ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008211620000d9576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84831315620001235782856040517f6bbbaae10000000000000000000000000000000000000000000000000000000081526004016200011a92919062000674565b60405180910390fd5b6224ea008110156200017357806224ea006040517f9fa7dec60000000000000000000000000000000000000000000000000000000081526004016200016a929190620006b2565b60405180910390fd5b856001908162000184919062000920565b508260028190555084600381905550816004819055504260058190555080608081815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fd0761a673d8d97d3dd1e8beb78920467f6482d897a3d1a77d0749f20c653130d846040516200020e919062000a18565b60405180910390a13373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b8406000856040516200026192919062000a8e565b60405180910390a27f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286000866040516200029d92919062000af4565b60405180910390a17f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600083604051620002d992919062000b5a565b60405180910390a17fc7280f97f846a9a86abb340951a554b3b460a661f096b87b54c1e05428f20c748160405162000312919062000b87565b60405180910390a150505050505062000ba4565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200038f8262000344565b810181811067ffffffffffffffff82111715620003b157620003b062000355565b5b80604052505050565b6000620003c662000326565b9050620003d4828262000384565b919050565b600067ffffffffffffffff821115620003f757620003f662000355565b5b620004028262000344565b9050602081019050919050565b60005b838110156200042f57808201518184015260208101905062000412565b60008484015250505050565b6000620004526200044c84620003d9565b620003ba565b9050828152602081018484840111156200047157620004706200033f565b5b6200047e8482856200040f565b509392505050565b600082601f8301126200049e576200049d6200033a565b5b8151620004b08482602086016200043b565b91505092915050565b6000819050919050565b620004ce81620004b9565b8114620004da57600080fd5b50565b600081519050620004ee81620004c3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200052182620004f4565b9050919050565b6000620005358262000514565b9050919050565b620005478162000528565b81146200055357600080fd5b50565b60008151905062000567816200053c565b92915050565b6000819050919050565b62000582816200056d565b81146200058e57600080fd5b50565b600081519050620005a28162000577565b92915050565b60008060008060008060c08789031215620005c857620005c762000330565b5b600087015167ffffffffffffffff811115620005e957620005e862000335565b5b620005f789828a0162000486565b96505060206200060a89828a01620004dd565b95505060406200061d89828a0162000556565b94505060606200063089828a01620004dd565b93505060806200064389828a0162000591565b92505060a06200065689828a0162000591565b9150509295509295509295565b6200066e81620004b9565b82525050565b60006040820190506200068b600083018562000663565b6200069a602083018462000663565b9392505050565b620006ac816200056d565b82525050565b6000604082019050620006c96000830185620006a1565b620006d86020830184620006a1565b9392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200073257607f821691505b602082108103620007485762000747620006ea565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000773565b620007be868362000773565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000801620007fb620007f5846200056d565b620007d6565b6200056d565b9050919050565b6000819050919050565b6200081d83620007e0565b620008356200082c8262000808565b84845462000780565b825550505050565b600090565b6200084c6200083d565b6200085981848462000812565b505050565b5b8181101562000881576200087560008262000842565b6001810190506200085f565b5050565b601f821115620008d0576200089a816200074e565b620008a58462000763565b81016020851015620008b5578190505b620008cd620008c48562000763565b8301826200085e565b50505b505050565b600082821c905092915050565b6000620008f560001984600802620008d5565b1980831691505092915050565b6000620009108383620008e2565b9150826002028217905092915050565b6200092b82620006df565b67ffffffffffffffff81111562000947576200094662000355565b5b62000953825462000719565b6200096082828562000885565b600060209050601f83116001811462000998576000841562000983578287015190505b6200098f858262000902565b865550620009ff565b601f198416620009a8866200074e565b60005b82811015620009d257848901518255600182019150602085019450602081019050620009ab565b86831015620009f25784890151620009ee601f891682620008e2565b8355505b6001600288020188555050505b505050505050565b62000a128162000514565b82525050565b600060208201905062000a2f600083018462000a07565b92915050565b6000819050919050565b600069ffffffffffffffffffff82169050919050565b600062000a7662000a7062000a6a8462000a35565b620007d6565b62000a3f565b9050919050565b62000a888162000a55565b82525050565b600060408201905062000aa5600083018562000a7d565b62000ab4602083018462000663565b9392505050565b600062000adc62000ad662000ad08462000a35565b620007d6565b620004b9565b9050919050565b62000aee8162000abb565b82525050565b600060408201905062000b0b600083018562000ae3565b62000b1a602083018462000663565b9392505050565b600062000b4262000b3c62000b368462000a35565b620007d6565b6200056d565b9050919050565b62000b548162000b21565b82525050565b600060408201905062000b71600083018562000b49565b62000b806020830184620006a1565b9392505050565b600060208201905062000b9e6000830184620006a1565b92915050565b60805160a05161111162000bed60003960008181610242015281816106560152818161069b015261081b0152600081816103cb01528181610402015261057801526111116000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060006104307f00000000000000000000000000000000000000000000000000000000000000008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea26469706673582212205ca1aea1c64f23481f75d76e69bc61df1bb0c6ab20b15e0d6c20137120973d4e64736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d06f1c662173443750000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cc342e541c00862a0000000000000000000000000000000000000000000295be96e640669720000000000000000000000000000000000000000000000000000000000000003cf9600000000000000000000000000000000000000000000000000000000000000002332592065474f20436f72706f7261746520426f6e642041646a757374656420526174650000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80637284e416116100715780637284e4161461016b578063bc43cbaf14610189578063d1d73635146101a7578063e9bded29146101c3578063f0604829146101df578063feaf968c146101fd576100b4565b80630452ed78146100b9578063124b65b4146100d5578063313ce567146100f357806353b8b8501461011157806354fd4d501461012f57806370da2f671461014d575b600080fd5b6100d360048036038101906100ce9190610aa6565b61021f565b005b6100dd610574565b6040516100ea9190610aec565b60405180910390f35b6100fb61059c565b6040516101089190610b23565b60405180910390f35b6101196105a5565b6040516101269190610aec565b60405180910390f35b6101376105af565b6040516101449190610b23565b60405180910390f35b6101556105b8565b6040516101629190610b4d565b60405180910390f35b6101736105c2565b6040516101809190610bf8565b60405180910390f35b610191610654565b60405161019e9190610c99565b60405180910390f35b6101c160048036038101906101bc9190610ce0565b610678565b005b6101dd60048036038101906101d89190610aa6565b6107f8565b005b6101e761093e565b6040516101f49190610aec565b60405180910390f35b610205610945565b604051610216959493929190610d32565b60405180910390f35b7fe6924b3e3549cbc71c8da5526215177ed4f734356390d258db06fc5a24837a697f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b815260040161029b929190610dbf565b602060405180830381865afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dc9190610e20565b61031f5733816040517f5dcee3bb000000000000000000000000000000000000000000000000000000008152600401610316929190610e4d565b60405180910390fd5b60035482131561036a57816003546040517f6bbbaae1000000000000000000000000000000000000000000000000000000008152600401610361929190610e76565b60405180910390fd5b60008212156103b3578160006040517f8bbdd4120000000000000000000000000000000000000000000000000000000081526004016103aa929190610eda565b60405180910390fd5b600060025490506000819050600084905060006103f97f0000000000000000000000000000000000000000000000000000000003cf96008461099690919063ffffffff16565b905060006104307f0000000000000000000000000000000000000000000000000000000003cf96008461099690919063ffffffff16565b905060008282111561044f5782826104489190610f32565b905061045e565b818361045b9190610f32565b90505b6004548111156104a957806004546040517f96f593a60000000000000000000000000000000000000000000000000000000081526004016104a0929190610f66565b60405180910390fd5b60008081819054906101000a900469ffffffffffffffffffff166104cc90610f8f565b91906101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff16021790555042600581905550876002819055503373ffffffffffffffffffffffffffffffffffffffff167f3a61c422699f82edf466ce95aa0fbca2b6ea7a729c6d6dd0726a1b57fe43b84060008054906101000a900469ffffffffffffffffffff168a604051610562929190610fc1565b60405180910390a25050505050505050565b60007f0000000000000000000000000000000000000000000000000000000003cf9600905090565b6000601b905090565b6000600454905090565b60006001905090565b6000600354905090565b6060600180546105d190611019565b80601f01602080910402602001604051908101604052809291908181526020018280546105fd90611019565b801561064a5780601f1061061f5761010080835404028352916020019161064a565b820191906000526020600020905b81548152906001019060200180831161062d57829003601f168201915b5050505050905090565b7f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72581565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b81526004016106f4929190610dbf565b602060405180830381865afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190610e20565b6107785733816040517f5dcee3bb00000000000000000000000000000000000000000000000000000000815260040161076f929190610e4d565b60405180910390fd5b600082036107b2576040517fd3a8179c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f8c04e5a7a35fdcad492801896ae7808f8240beb3b52c46822f56132f91f78566600454836040516107e5929190610f66565b60405180910390a1816004819055505050565b7fa9b4ac24d6673992e3084dcd16f95649bbd6c84b4a49263b9bbcb9bbb90890987f0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a72573ffffffffffffffffffffffffffffffffffffffff166391d1485482336040518363ffffffff1660e01b8152600401610874929190610dbf565b602060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b59190610e20565b6108f85733816040517f5dcee3bb0000000000000000000000000000000000000000000000000000000081526004016108ef929190610e4d565b60405180910390fd5b7f263b9a37f944c68e18b47c2d29208ad38b48a198984ecfdda7b842a1955800286003548360405161092b929190610e76565b60405180910390a1816003819055505050565b6224ea0081565b60008060008060008060009054906101000a900469ffffffffffffffffffff16945060025493506005549250600554915060008054906101000a900469ffffffffffffffffffff1690509091929394565b6000806002836109a69190611079565b036109bd576b033b2e3c9fd0803ce80000006109bf565b825b90506002826109ce91906110aa565b91505b60008214610a1a576109e38384610a20565b925060006002836109f49190611079565b14610a0657610a038184610a20565b90505b600282610a1391906110aa565b91506109d1565b92915050565b6000816b019d971e4fe8401e740000006000190304831115821517610a4457600080fd5b6b033b2e3c9fd0803ce80000006b019d971e4fe8401e740000008385020104905092915050565b600080fd5b6000819050919050565b610a8381610a70565b8114610a8e57600080fd5b50565b600081359050610aa081610a7a565b92915050565b600060208284031215610abc57610abb610a6b565b5b6000610aca84828501610a91565b91505092915050565b6000819050919050565b610ae681610ad3565b82525050565b6000602082019050610b016000830184610add565b92915050565b600060ff82169050919050565b610b1d81610b07565b82525050565b6000602082019050610b386000830184610b14565b92915050565b610b4781610a70565b82525050565b6000602082019050610b626000830184610b3e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ba2578082015181840152602081019050610b87565b60008484015250505050565b6000601f19601f8301169050919050565b6000610bca82610b68565b610bd48185610b73565b9350610be4818560208601610b84565b610bed81610bae565b840191505092915050565b60006020820190508181036000830152610c128184610bbf565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610c5f610c5a610c5584610c1a565b610c3a565b610c1a565b9050919050565b6000610c7182610c44565b9050919050565b6000610c8382610c66565b9050919050565b610c9381610c78565b82525050565b6000602082019050610cae6000830184610c8a565b92915050565b610cbd81610ad3565b8114610cc857600080fd5b50565b600081359050610cda81610cb4565b92915050565b600060208284031215610cf657610cf5610a6b565b5b6000610d0484828501610ccb565b91505092915050565b600069ffffffffffffffffffff82169050919050565b610d2c81610d0d565b82525050565b600060a082019050610d476000830188610d23565b610d546020830187610b3e565b610d616040830186610add565b610d6e6060830185610add565b610d7b6080830184610d23565b9695505050505050565b6000819050919050565b610d9881610d85565b82525050565b6000610da982610c1a565b9050919050565b610db981610d9e565b82525050565b6000604082019050610dd46000830185610d8f565b610de16020830184610db0565b9392505050565b60008115159050919050565b610dfd81610de8565b8114610e0857600080fd5b50565b600081519050610e1a81610df4565b92915050565b600060208284031215610e3657610e35610a6b565b5b6000610e4484828501610e0b565b91505092915050565b6000604082019050610e626000830185610db0565b610e6f6020830184610d8f565b9392505050565b6000604082019050610e8b6000830185610b3e565b610e986020830184610b3e565b9392505050565b6000819050919050565b6000610ec4610ebf610eba84610e9f565b610c3a565b610a70565b9050919050565b610ed481610ea9565b82525050565b6000604082019050610eef6000830185610b3e565b610efc6020830184610ecb565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f3d82610ad3565b9150610f4883610ad3565b9250828203905081811115610f6057610f5f610f03565b5b92915050565b6000604082019050610f7b6000830185610add565b610f886020830184610add565b9392505050565b6000610f9a82610d0d565b915069ffffffffffffffffffff8203610fb657610fb5610f03565b5b600182019050919050565b6000604082019050610fd66000830185610d23565b610fe36020830184610b3e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061103157607f821691505b60208210810361104457611043610fea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061108482610ad3565b915061108f83610ad3565b92508261109f5761109e61104a565b5b828206905092915050565b60006110b582610ad3565b91506110c083610ad3565b9250826110d0576110cf61104a565b5b82820490509291505056fea26469706673582212205ca1aea1c64f23481f75d76e69bc61df1bb0c6ab20b15e0d6c20137120973d4e64736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000033b2e3d06f1c662173443750000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a7250000000000000000000000000000000000000000033b2e3cc342e541c00862a0000000000000000000000000000000000000000000295be96e640669720000000000000000000000000000000000000000000000000000000000000003cf9600000000000000000000000000000000000000000000000000000000000000002332592065474f20436f72706f7261746520426f6e642041646a757374656420526174650000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : description_ (string): 2Y eGO Corporate Bond Adjusted Rate
Arg [1] : maxAnswer_ (int256): 1000000007431297985657717621
Arg [2] : _accessController (address): 0x8b853de26973b6C772B1e29Bb127F1a60130a725
Arg [3] : answer (int256): 1000000002554215010151195296
Arg [4] : volatilityThreshold (uint256): 50000000000000000000000000
Arg [5] : term (uint256): 63936000

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [1] : 0000000000000000000000000000000000000000033b2e3d06f1c66217344375
Arg [2] : 0000000000000000000000008b853de26973b6c772b1e29bb127f1a60130a725
Arg [3] : 0000000000000000000000000000000000000000033b2e3cc342e541c00862a0
Arg [4] : 000000000000000000000000000000000000000000295be96e64066972000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000003cf9600
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000023
Arg [7] : 32592065474f20436f72706f7261746520426f6e642041646a75737465642052
Arg [8] : 6174650000000000000000000000000000000000000000000000000000000000


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

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.