Overview
ETH Balance
ETH Value
$0.00Multichain Info
Latest 25 from a total of 2,163 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Price | 12083118 | 2 mins ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12079496 | 1 hr ago | IN | 0 ETH | 0.00000141 | ||||
Update Price | 12078211 | 1 hr ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12074588 | 2 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12073485 | 2 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12069863 | 3 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12068569 | 4 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12064947 | 5 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12063645 | 5 hrs ago | IN | 0 ETH | 0.00000141 | ||||
Update Price | 12060023 | 6 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12057885 | 7 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12054262 | 8 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12052973 | 8 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12049352 | 9 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12048078 | 9 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12044457 | 10 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12043226 | 11 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12039604 | 12 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12038407 | 12 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12034786 | 13 hrs ago | IN | 0 ETH | 0.00000139 | ||||
Update Price | 12033599 | 13 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12029976 | 14 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12027654 | 15 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12026464 | 15 hrs ago | IN | 0 ETH | 0.0000014 | ||||
Update Price | 12022842 | 16 hrs ago | IN | 0 ETH | 0.0000014 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5494305 | 76 days ago | Contract Creation | 0 ETH |
Contract Source Code Verified (Exact Match)
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; import { Access } from "../administrator/Access.sol"; /** * @title TempOracle * @notice Simple temporary oracle for testing purposes */ contract TempOracle is Access { // Price data int256 private _price; uint256 private _updatedAt; uint80 private _roundId; uint8 private _decimals; /** * @notice Initialize the TempOracle * @param _administrator Address of the administrator contract * @param initialPrice Initial price value (normalized to specified decimals) * @param priceDecimals Number of decimals for the price feed */ function init( address _administrator, int256 initialPrice, uint8 priceDecimals ) public initializer { __Access_init(_administrator); _price = initialPrice; _updatedAt = block.timestamp; _roundId = 1; _decimals = priceDecimals; } /** * @notice Update the price * @param newPrice The new price value */ function updatePrice(int256 newPrice) external onlyMinterAndRedeemer { require(newPrice > 0, "Price must be positive"); _price = newPrice; _updatedAt = block.timestamp; _roundId++; } /** * @notice Get the latest round data * @return roundId The round ID * @return answer The price * @return startedAt When the round started * @return updatedAt When the round was updated * @return answeredInRound The round in which the answer was computed */ function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ) { return ( _roundId, _price, _updatedAt, _updatedAt, _roundId ); } /** * @notice Get the number of decimals for the price feed * @return The number of decimals */ function decimals() external view returns (uint8) { return _decimals; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.20; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in * case an upgrade adds a module that needs to be initialized. * * For example: * * [.hljs-theme-light.nopadding] * ```solidity * contract MyToken is ERC20Upgradeable { * function initialize() initializer public { * __ERC20_init("MyToken", "MTK"); * } * } * * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { * function initializeV2() reinitializer(2) public { * __ERC20Permit_init("MyToken"); * } * } * ``` * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() { * _disableInitializers(); * } * ``` * ==== */ abstract contract Initializable { /** * @dev Storage of the initializable contract. * * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions * when using with upgradeable contracts. * * @custom:storage-location erc7201:openzeppelin.storage.Initializable */ struct InitializableStorage { /** * @dev Indicates that the contract has been initialized. */ uint64 _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool _initializing; } // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Initializable")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00; /** * @dev The contract is already initialized. */ error InvalidInitialization(); /** * @dev The contract is not initializing. */ error NotInitializing(); /** * @dev Triggered when the contract has been initialized or reinitialized. */ event Initialized(uint64 version); /** * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, * `onlyInitializing` functions can be used to initialize parent contracts. * * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in * production. * * Emits an {Initialized} event. */ modifier initializer() { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); // Cache values to avoid duplicated sloads bool isTopLevelCall = !$._initializing; uint64 initialized = $._initialized; // Allowed calls: // - initialSetup: the contract is not in the initializing state and no previous version was // initialized // - construction: the contract is initialized at version 1 (no reinitialization) and the // current contract is just being deployed bool initialSetup = initialized == 0 && isTopLevelCall; bool construction = initialized == 1 && address(this).code.length == 0; if (!initialSetup && !construction) { revert InvalidInitialization(); } $._initialized = 1; if (isTopLevelCall) { $._initializing = true; } _; if (isTopLevelCall) { $._initializing = false; emit Initialized(1); } } /** * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be * used to initialize parent contracts. * * A reinitializer may be used after the original initialization step. This is essential to configure modules that * are added through upgrades and that require initialization. * * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer` * cannot be nested. If one is invoked in the context of another, execution will revert. * * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in * a contract, executing them in the right order is up to the developer or operator. * * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization. * * Emits an {Initialized} event. */ modifier reinitializer(uint64 version) { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing || $._initialized >= version) { revert InvalidInitialization(); } $._initialized = version; $._initializing = true; _; $._initializing = false; emit Initialized(version); } /** * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the * {initializer} and {reinitializer} modifiers, directly or indirectly. */ modifier onlyInitializing() { _checkInitializing(); _; } /** * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}. */ function _checkInitializing() internal view virtual { if (!_isInitializing()) { revert NotInitializing(); } } /** * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized * to any version. It is recommended to use this to lock implementation contracts that are designed to be called * through proxies. * * Emits an {Initialized} event the first time it is successfully executed. */ function _disableInitializers() internal virtual { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing) { revert InvalidInitialization(); } if ($._initialized != type(uint64).max) { $._initialized = type(uint64).max; emit Initialized(type(uint64).max); } } /** * @dev Returns the highest version that has been initialized. See {reinitializer}. */ function _getInitializedVersion() internal view returns (uint64) { return _getInitializableStorage()._initialized; } /** * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}. */ function _isInitializing() internal view returns (bool) { return _getInitializableStorage()._initializing; } /** * @dev Pointer to storage slot. Allows integrators to override it with a custom storage location. * * NOTE: Consider following the ERC-7201 formula to derive storage locations. */ function _initializableStorageSlot() internal pure virtual returns (bytes32) { return INITIALIZABLE_STORAGE; } /** * @dev Returns a pointer to the storage namespace. */ // solhint-disable-next-line var-name-mixedcase function _getInitializableStorage() private pure returns (InitializableStorage storage $) { bytes32 slot = _initializableStorageSlot(); assembly { $.slot := slot } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol) pragma solidity ^0.8.20; import {Initializable} from "../proxy/utils/Initializable.sol"; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, * consider using {ReentrancyGuardTransient} instead. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuardUpgradeable is Initializable { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant NOT_ENTERED = 1; uint256 private constant ENTERED = 2; /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard struct ReentrancyGuardStorage { uint256 _status; } // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.ReentrancyGuard")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00; function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) { assembly { $.slot := ReentrancyGuardStorageLocation } } /** * @dev Unauthorized reentrant call. */ error ReentrancyGuardReentrantCall(); function __ReentrancyGuard_init() internal onlyInitializing { __ReentrancyGuard_init_unchained(); } function __ReentrancyGuard_init_unchained() internal onlyInitializing { ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage(); $._status = NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage(); // On the first call to nonReentrant, _status will be NOT_ENTERED if ($._status == ENTERED) { revert ReentrancyGuardReentrantCall(); } // Any calls to nonReentrant after this point will fail $._status = ENTERED; } function _nonReentrantAfter() private { ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage(); // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) $._status = NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage(); return $._status == ENTERED; } }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; import { ReentrancyGuardUpgradeable } from "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; import { Common } from "../libs/Common.sol"; import { Constants } from "../libs/Constants.sol"; import { IBlackList } from "./interface/IBlackList.sol"; import { IPausable } from "./interface/IPausable.sol"; import { IRole } from "./interface/IRole.sol"; // To define all the access modifiers abstract contract Access is ReentrancyGuardUpgradeable { address public administrator; event AdministratorSet(address indexed caller, address indexed newAdministrator); /** * @notice Initialize the contract with administrator address * @param _administrator address of the administrator */ function __Access_init(address _administrator) internal onlyInitializing { __ReentrancyGuard_init(); require(_administrator != address(0), "!administrator"); administrator = _administrator; } modifier onlyAdmin() { require(IRole(administrator).hasRole(Constants.ADMIN_ROLE, msg.sender), "!admin"); _; } modifier onlyCollateralManager() { require(IRole(administrator).hasRole(Constants.COLLATERAL_MANAGER_ROLE, msg.sender), "!cmgr"); _; } modifier onlyBridge() { require(IRole(administrator).hasRole(Constants.BRIDGE_ROLE, msg.sender), "!bridge"); _; } modifier onlyOperator() { require(IRole(administrator).hasRole(Constants.BRIDGE_ROLE, msg.sender) || IRole(administrator).hasRole(Constants.LOCKBOX_ROLE, msg.sender) || IRole(administrator).hasRole(Constants.YIELD_ROLE, msg.sender), "!operator"); _; } modifier onlyManager() { require(IRole(administrator).hasRole(Constants.MANAGER_ROLE, msg.sender), "!manager"); _; } modifier onlyMinterAndRedeemer() { require(IRole(administrator).hasRole(Constants.MINTER_AND_REDEEMER_ROLE, msg.sender), "!minter"); _; } modifier onlyRewarder() { require(IRole(administrator).hasRole(Constants.REWARDER_ROLE, msg.sender), "!rewarder"); _; } modifier onlyBond() { require(IRole(administrator).hasRole(Constants.BOND_ROLE, msg.sender), "!bond"); _; } modifier notPaused() { require(!IPausable(administrator).isPaused(address(this)), "paused"); _; } modifier notBlacklisted(address user) { require(!IBlackList(administrator).isBlackListed(user), "blacklisted"); _; } /** * @notice Set the administrator address * @param _administrator address of the new administrator */ function setAdministrator(address _administrator) external onlyAdmin { require(Common.isContract(_administrator), "!contract"); administrator = _administrator; emit AdministratorSet(msg.sender, _administrator); } }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; interface IBlackList { //functions function blackListUsers(address[] calldata _users) external; function removeBlackListUsers(address[] calldata _clearedUsers) external; function isBlackListed(address _user) external view returns (bool); //events event BlackListed(address indexed _sender, address indexed _user); event BlackListCleared(address indexed _sender, address indexed _user); }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; interface IPausable { function pause() external; function unpause() external; function pauseSC(address _sc) external; function unpauseSC(address _sc) external; function isPaused(address _sc) external view returns (bool); //events event Paused(address indexed _sender); event Unpaused(address indexed _sender); event Paused(address indexed _sender, address indexed _sc); event Unpaused(address indexed _sender, address indexed _sc); }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; interface IRole { //functions function grantRoles(bytes32 _role, address[] calldata _accounts) external; function revokeRoles(bytes32 _role, address[] calldata _accounts) external; function hasRole(bytes32 _role, address _account) external view returns (bool); function hasRoles(bytes32[] calldata _role, address[] calldata _accounts) external view returns (bool[] memory); //events event RoleGranted(bytes32 indexed _role, address indexed _sender, address indexed _account); event RoleRevoked(bytes32 indexed _role, address indexed _sender, address indexed _account); }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; library Common { /** * @notice Check if an address is a contract * @param _addr address to check * @return true if the address is a contract, false otherwise */ function isContract(address _addr) internal view returns (bool) { return _addr != address(0) && _addr.code.length != 0; } }
// SPDX-License-Identifier: GPL-2.0 pragma solidity ^0.8.20; library Constants { // admin role bytes32 public constant ADMIN_ROLE = keccak256("ADMIN"); // role for minting and redeeming tokens bytes32 public constant MINTER_AND_REDEEMER_ROLE = keccak256("MINTER_AND_REDEEMER"); // role for collateral manager who can transfer collateral bytes32 public constant COLLATERAL_MANAGER_ROLE = keccak256("COLLATERAL_MANAGER"); // role for rewarder who can transfer reward bytes32 public constant REWARDER_ROLE = keccak256("REWARDER"); // role for managing blacklist addresses bytes32 public constant MANAGER_ROLE = keccak256("MANAGER"); // role assigned to bridges bytes32 public constant BRIDGE_ROLE = keccak256("BRIDGE"); // role for perpetual bond bytes32 public constant BOND_ROLE = keccak256("BOND"); // role for lockbox bytes32 public constant LOCKBOX_ROLE = keccak256("LOCKBOX"); // role for yield bytes32 public constant YIELD_ROLE = keccak256("YIELD"); uint256 constant PINT = 1e18; uint256 constant HUNDRED_PERCENT = 100e18; uint256 constant ONE_PERCENT = 1e18; uint256 constant HUNDRED = 100; // Period for vesting strategy rewards uint256 constant VESTING_PERIOD = 24 hours; // Bridge transaction types bytes32 public constant BRIDGE_SEND_HASH = keccak256("BRIDGE_SEND"); }
{ "evmVersion": "cancun", "libraries": {}, "metadata": { "appendCBOR": true, "bytecodeHash": "ipfs", "useLiteralContent": false }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [ "@layerzerolabs/oft-evm/=lib/devtools/packages/oft-evm/", "@layerzerolabs/oapp-evm/=lib/devtools/packages/oapp-evm/", "@layerzerolabs/lz-evm-protocol-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/protocol/", "@layerzerolabs/lz-evm-messagelib-v2/=lib/layerzero-v2/packages/layerzero-v2/evm/messagelib/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@openzeppelin-upgradeable/contracts/=lib/openzeppelin-contracts-upgradeable/contracts/", "@chainlink/contracts-ccip/=lib/chainlink/contracts/", "@chainlink/contracts/=lib/chainlink/contracts/", "solidity-bytes-utils/=lib/solidity-bytes-utils/", "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "chainlink/=lib/chainlink/", "devtools/=lib/devtools/packages/toolbox-foundry/src/", "ds-test/=lib/layerzero-v2/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/", "layerzero-v2/=lib/layerzero-v2/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "viaIR": true }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"newAdministrator","type":"address"}],"name":"AdministratorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"administrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_administrator","type":"address"},{"internalType":"int256","name":"initialPrice","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"}],"name":"init","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"_administrator","type":"address"}],"name":"setAdministrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"newPrice","type":"int256"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608080604052346015576106ae908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80631cd15dff146103c1578063313ce5671461039e578063d4c19bda1461023f578063df8089ef146100c9578063f53d0a8e146100a25763feaf968c1461005b575f80fd5b3461009e575f36600319011261009e5760a06001600160501b03600354166001549060025460405192828452602084015280604084015260608301526080820152f35b5f80fd5b3461009e575f36600319011261009e575f546040516001600160a01b039091168152602090f35b3461009e57602036600319011261009e576100e26105c9565b5f54604051632474521560e21b81527fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260048201523360248201526020816044816001600160a01b0386165afa908115610234575f91610205575b50156101d7576001600160a01b0382169182151590816101cc575b501561019b5781906bffffffffffffffffffffffff60a01b16175f55337fbc5dab480bc3beb0582944eefba927e4358ed22805ac40b2078d517b8a036ae75f80a3005b60405162461bcd60e51b81526020600482015260096024820152680858dbdb9d1c9858dd60ba1b6044820152606490fd5b90503b151583610158565b60405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b6044820152606490fd5b610227915060203d60201161022d575b61021f81836105df565b810190610615565b8361013d565b503d610215565b6040513d5f823e3d90fd5b3461009e57602036600319011261009e576004356044602060018060a01b035f541660405192838092632474521560e21b82527f196445be8e29cb4e505699c67ec8eceb0187441d0913818e000a48d538545d1460048301523360248301525afa908115610234575f9161037f575b5015610350575f81131561031257600155426002556003546001600160501b0381166001600160501b0381146102fe5760016001600160501b03910116906001600160501b031916176003555f80f35b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b81526020600482015260166024820152755072696365206d75737420626520706f73697469766560501b6044820152606490fd5b60405162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b6044820152606490fd5b610398915060203d60201161022d5761021f81836105df565b826102ae565b3461009e575f36600319011261009e57602060ff60035460501c16604051908152f35b3461009e57606036600319011261009e576103da6105c9565b60443560ff8116810361009e575f80516020610659833981519152549160ff8360401c16159267ffffffffffffffff8116801590816105c1575b60011490816105b7575b1590816105ae575b5061059f5767ffffffffffffffff1981166001175f805160206106598339815191525583610573575b5061045861062d565b61046061062d565b61046861062d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b031690811561053d576001916bffffffffffffffffffffffff60a01b5f5416175f556024358255426002556003549060ff60501b9060501b16906affffffffffffffffffffff191617176003556104e657005b68ff0000000000000000195f8051602061065983398151915254165f80516020610659833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b60405162461bcd60e51b815260206004820152600e60248201526d10b0b236b4b734b9ba3930ba37b960911b6044820152606490fd5b68ffffffffffffffffff191668010000000000000001175f80516020610659833981519152558361044f565b63f92ee8a960e01b5f5260045ffd5b90501585610426565b303b15915061041e565b859150610414565b600435906001600160a01b038216820361009e57565b90601f8019910116810190811067ffffffffffffffff82111761060157604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261009e5751801515810361009e5790565b60ff5f805160206106598339815191525460401c161561064957565b631afcd79f60e31b5f5260045ffdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c716b5800ad91648f977c48f47b3970732cfed340ba905a02cb826df7002164a64736f6c634300081a0033
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c80631cd15dff146103c1578063313ce5671461039e578063d4c19bda1461023f578063df8089ef146100c9578063f53d0a8e146100a25763feaf968c1461005b575f80fd5b3461009e575f36600319011261009e5760a06001600160501b03600354166001549060025460405192828452602084015280604084015260608301526080820152f35b5f80fd5b3461009e575f36600319011261009e575f546040516001600160a01b039091168152602090f35b3461009e57602036600319011261009e576100e26105c9565b5f54604051632474521560e21b81527fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4260048201523360248201526020816044816001600160a01b0386165afa908115610234575f91610205575b50156101d7576001600160a01b0382169182151590816101cc575b501561019b5781906bffffffffffffffffffffffff60a01b16175f55337fbc5dab480bc3beb0582944eefba927e4358ed22805ac40b2078d517b8a036ae75f80a3005b60405162461bcd60e51b81526020600482015260096024820152680858dbdb9d1c9858dd60ba1b6044820152606490fd5b90503b151583610158565b60405162461bcd60e51b815260206004820152600660248201526510b0b236b4b760d11b6044820152606490fd5b610227915060203d60201161022d575b61021f81836105df565b810190610615565b8361013d565b503d610215565b6040513d5f823e3d90fd5b3461009e57602036600319011261009e576004356044602060018060a01b035f541660405192838092632474521560e21b82527f196445be8e29cb4e505699c67ec8eceb0187441d0913818e000a48d538545d1460048301523360248301525afa908115610234575f9161037f575b5015610350575f81131561031257600155426002556003546001600160501b0381166001600160501b0381146102fe5760016001600160501b03910116906001600160501b031916176003555f80f35b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b81526020600482015260166024820152755072696365206d75737420626520706f73697469766560501b6044820152606490fd5b60405162461bcd60e51b815260206004820152600760248201526610b6b4b73a32b960c91b6044820152606490fd5b610398915060203d60201161022d5761021f81836105df565b826102ae565b3461009e575f36600319011261009e57602060ff60035460501c16604051908152f35b3461009e57606036600319011261009e576103da6105c9565b60443560ff8116810361009e575f80516020610659833981519152549160ff8360401c16159267ffffffffffffffff8116801590816105c1575b60011490816105b7575b1590816105ae575b5061059f5767ffffffffffffffff1981166001175f805160206106598339815191525583610573575b5061045861062d565b61046061062d565b61046861062d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00556001600160a01b031690811561053d576001916bffffffffffffffffffffffff60a01b5f5416175f556024358255426002556003549060ff60501b9060501b16906affffffffffffffffffffff191617176003556104e657005b68ff0000000000000000195f8051602061065983398151915254165f80516020610659833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b60405162461bcd60e51b815260206004820152600e60248201526d10b0b236b4b734b9ba3930ba37b960911b6044820152606490fd5b68ffffffffffffffffff191668010000000000000001175f80516020610659833981519152558361044f565b63f92ee8a960e01b5f5260045ffd5b90501585610426565b303b15915061041e565b859150610414565b600435906001600160a01b038216820361009e57565b90601f8019910116810190811067ffffffffffffffff82111761060157604052565b634e487b7160e01b5f52604160045260245ffd5b9081602091031261009e5751801515810361009e5790565b60ff5f805160206106598339815191525460401c161561064957565b631afcd79f60e31b5f5260045ffdfef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220c716b5800ad91648f977c48f47b3970732cfed340ba905a02cb826df7002164a64736f6c634300081a0033
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.