Overview
APE Balance
0 APE
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60c06040 | 3564967 | 13 days ago | IN | 0 APE | 0.01783764 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PythAggregatorV3
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 800 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.23; import {PythStructs} from "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; import {IPyth} from "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; // This interface is forked from the Zerolend Adapter found here: // https://github.com/zerolend/pyth-oracles/blob/master/contracts/PythAggregatorV3.sol // Original license found under licenses/zerolend-pyth-oracles.md /** * @title A port of the ChainlinkAggregatorV3 interface that supports Pyth price feeds * @notice This does not store any roundId information on-chain. Please review the code before using this implementation. * Users should deploy an instance of this contract to wrap every price feed id that they need to use. * @dev Forked from https://github.com/zerolend/pyth-oracles/blob/master/contracts/PythAggregatorV3.sol with minor gas improvements */ contract PythAggregatorV3 { bytes32 public immutable priceId; IPyth public immutable pyth; constructor(address _pyth, bytes32 _priceId) { priceId = _priceId; pyth = IPyth(_pyth); } // Wrapper function to update the underlying Pyth price feeds. Not part of the AggregatorV3 interface but useful. function updateFeeds(bytes[] calldata priceUpdateData) external payable returns (bool success) { // Update the prices to the latest available values and pay the required fee for it. The `priceUpdateData` data // should be retrieved from our off-chain Price Service API using the `pyth-evm-js` package. // See section "How Pyth Works on EVM Chains" below for more information. uint fee = pyth.getUpdateFee(priceUpdateData); pyth.updatePriceFeeds{value: fee}(priceUpdateData); // refund remaining eth (success, ) = payable(msg.sender).call{value: address(this).balance}(""); } function decimals() external view virtual returns (uint8) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); return uint8(-1 * int8(price.expo)); } function description() external pure returns (string memory) { return "A port of a chainlink aggregator powered by pyth network feeds"; } function version() external pure returns (uint256) { return 1; } function latestAnswer() public view virtual returns (int256) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); return int256(price.price); } function latestTimestamp() public view returns (uint256) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); return price.publishTime; } function latestRound() external view returns (uint256) { // use timestamp as the round id return latestTimestamp(); } function getAnswer(uint256) external view returns (int256) { return latestAnswer(); } function getTimestamp(uint256) external view returns (uint256) { return latestTimestamp(); } function getRoundData( uint80 _roundId ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); return (_roundId, int256(price.price), price.publishTime, price.publishTime, _roundId); } function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); roundId = uint80(price.publishTime); return (roundId, int256(price.price), price.publishTime, price.publishTime, roundId); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "./PythStructs.sol"; import "./IPythEvents.sol"; /// @title Consume prices from the Pyth Network (https://pyth.network/). /// @dev Please refer to the guidance at https://docs.pyth.network/documentation/pythnet-price-feeds/best-practices for how to consume prices safely. /// @author Pyth Data Association interface IPyth is IPythEvents { /// @notice Returns the price of a price feed without any sanity checks. /// @dev This function returns the most recent price update in this contract without any recency checks. /// This function is unsafe as the returned price update may be arbitrarily far in the past. /// /// Users of this function should check the `publishTime` in the price to ensure that the returned price is /// sufficiently recent for their application. If you are considering using this function, it may be /// safer / easier to use `getPriceNoOlderThan`. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getPriceUnsafe( bytes32 id ) external view returns (PythStructs.Price memory price); /// @notice Returns the price that is no older than `age` seconds of the current time. /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently /// recently. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getPriceNoOlderThan( bytes32 id, uint age ) external view returns (PythStructs.Price memory price); /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks. /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available. /// However, if the price is not recent this function returns the latest available price. /// /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that /// the returned price is recent or useful for any particular application. /// /// Users of this function should check the `publishTime` in the price to ensure that the returned price is /// sufficiently recent for their application. If you are considering using this function, it may be /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getEmaPriceUnsafe( bytes32 id ) external view returns (PythStructs.Price memory price); /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds /// of the current time. /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently /// recently. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getEmaPriceNoOlderThan( bytes32 id, uint age ) external view returns (PythStructs.Price memory price); /// @notice Update price feeds with given update messages. /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// Prices will be updated if they are more recent than the current stored prices. /// The call will succeed even if the update is not the most recent. /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid. /// @param updateData Array of price update data. function updatePriceFeeds(bytes[] calldata updateData) external payable; /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`. /// /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas. /// Otherwise, it calls updatePriceFeeds method to update the prices. /// /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]` function updatePriceFeedsIfNecessary( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64[] calldata publishTimes ) external payable; /// @notice Returns the required fee to update an array of price updates. /// @param updateData Array of price update data. /// @return feeAmount The required fee in Wei. function getUpdateFee( bytes[] calldata updateData ) external view returns (uint feeAmount); /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published /// within `minPublishTime` and `maxPublishTime`. /// /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price; /// otherwise, please consider using `updatePriceFeeds`. This method may store the price updates on-chain, if they /// are more recent than the current stored prices. /// /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// /// /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is /// no update for any of the given `priceIds` within the given time range. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`. /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`. /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order). function parsePriceFeedUpdates( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64 minPublishTime, uint64 maxPublishTime ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds); /// @notice Similar to `parsePriceFeedUpdates` but ensures the updates returned are /// the first updates published in minPublishTime. That is, if there are multiple updates for a given timestamp, /// this method will return the first update. This method may store the price updates on-chain, if they /// are more recent than the current stored prices. /// /// /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is /// no update for any of the given `priceIds` within the given time range and uniqueness condition. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`. /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`. /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order). function parsePriceFeedUpdatesUnique( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64 minPublishTime, uint64 maxPublishTime ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @title IPythEvents contains the events that Pyth contract emits. /// @dev This interface can be used for listening to the updates for off-chain and testing purposes. interface IPythEvents { /// @dev Emitted when the price feed with `id` has received a fresh update. /// @param id The Pyth Price Feed ID. /// @param publishTime Publish time of the given price update. /// @param price Price of the given price update. /// @param conf Confidence interval of the given price update. event PriceFeedUpdate( bytes32 indexed id, uint64 publishTime, int64 price, uint64 conf ); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; contract PythStructs { // A price with a degree of uncertainty, represented as a price +- a confidence interval. // // The confidence interval roughly corresponds to the standard error of a normal distribution. // Both the price and confidence are stored in a fixed-point numeric representation, // `x * (10^expo)`, where `expo` is the exponent. // // Please refer to the documentation at https://docs.pyth.network/documentation/pythnet-price-feeds/best-practices for how // to how this price safely. struct Price { // Price int64 price; // Confidence interval around the price uint64 conf; // Price exponent int32 expo; // Unix timestamp describing when the price was published uint publishTime; } // PriceFeed represents a current aggregate price from pyth publisher feeds. struct PriceFeed { // The price ID. bytes32 id; // Latest available price Price price; // Latest available exponentially-weighted moving average price Price emaPrice; } }
{ "optimizer": { "enabled": true, "runs": 800 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_pyth","type":"address"},{"internalType":"bytes32","name":"_priceId","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","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":"uint256","name":"","type":"uint256"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestRound","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":"latestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pyth","outputs":[{"internalType":"contract IPyth","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"priceUpdateData","type":"bytes[]"}],"name":"updateFeeds","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b50604051610cb2380380610cb283398101604081905261002f91610043565b6080526001600160a01b031660a05261007d565b6000806040838503121561005657600080fd5b82516001600160a01b038116811461006d57600080fd5b6020939093015192949293505050565b60805160a051610bbd6100f56000396000818161028601528181610317015281816103de015281816104c4015281816105440152818161062f015281816106c0015261079b01526000818160e9015281816102e4015281816103ab015281816104910152818161057301526107ca0152610bbd6000f3fe6080604052600436106100d25760003560e01c80638205bf6a1161007f578063b633620c11610059578063b633620c14610231578063bc36c0a914610251578063f98d06f014610274578063feaf968c146102c057600080fd5b80638205bf6a146101a55780639a6fc8f5146101ba578063b5ab58dc1461021157600080fd5b806354fd4d50116100b057806354fd4d501461015a578063668a0f021461016e5780637284e4161461018357600080fd5b806331189334146100d7578063313ce5671461011e57806350d25bcd14610145575b600080fd5b3480156100e357600080fd5b5061010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561012a57600080fd5b506101336102d5565b60405160ff9091168152602001610115565b34801561015157600080fd5b5061010b61039c565b34801561016657600080fd5b50600161010b565b34801561017a57600080fd5b5061010b610453565b34801561018f57600080fd5b50610198610462565b6040516101159190610867565b3480156101b157600080fd5b5061010b610482565b3480156101c657600080fd5b506101da6101d53660046108b6565b610539565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610115565b34801561021d57600080fd5b5061010b61022c3660046108e9565b610610565b34801561023d57600080fd5b5061010b61024c3660046108e9565b610620565b61026461025f366004610902565b61062a565b6040519015158152602001610115565b34801561028057600080fd5b506102a87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610115565b3480156102cc57600080fd5b506101da610790565b6040516396834ad360e01b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa15801561035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038291906109a6565b905080604001516000196103969190610a36565b91505090565b6040516396834ad360e01b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044991906109a6565b5160070b92915050565b600061045d610482565b905090565b60606040518060600160405280603e8152602001610b4a603e9139905090565b6040516396834ad360e01b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396834ad390602401608060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f91906109a6565b6060015192915050565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396834ad37f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016105b091815260200190565b608060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906109a6565b8051606090910151979860079190910b97965086955088945092505050565b600061061a61039c565b92915050565b600061061a610482565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d47eed4585856040518363ffffffff1660e01b815260040161067b929190610a94565b602060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610b30565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef9e5e288286866040518463ffffffff1660e01b815260040161070d929190610a94565b6000604051808303818588803b15801561072657600080fd5b505af115801561073a573d6000803e3d6000fd5b50506040513393504792509050600081818185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b509095945050505050565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396834ad37f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161080791815260200190565b608060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084891906109a6565b60608101519051909760079190910b9650879550859450849350915050565b60006020808352835180602085015260005b8181101561089557858101830151858201604001528201610879565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156108c857600080fd5b813569ffffffffffffffffffff811681146108e257600080fd5b9392505050565b6000602082840312156108fb57600080fd5b5035919050565b6000806020838503121561091557600080fd5b823567ffffffffffffffff8082111561092d57600080fd5b818501915085601f83011261094157600080fd5b81358181111561095057600080fd5b8660208260051b850101111561096557600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff8116811461098f57600080fd5b919050565b8051600381900b811461098f57600080fd5b6000608082840312156109b857600080fd5b6040516080810181811067ffffffffffffffff821117156109e957634e487b7160e01b600052604160045260246000fd5b6040528251600781900b81146109fe57600080fd5b8152610a0c60208401610977565b6020820152610a1d60408401610994565b6040820152606083015160608201528091505092915050565b60008260000b8260000b028060000b9150808214610a6457634e487b7160e01b600052601160045260246000fd5b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b87811015610b2357868403603f190183528135368a9003601e19018112610ad957600080fd5b8901858101903567ffffffffffffffff811115610af557600080fd5b803603821315610b0457600080fd5b610b0f868284610a6b565b955050509184019190840190600101610ab3565b5091979650505050505050565b600060208284031215610b4257600080fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a2646970667358221220d14945c33062d71a97a5d2d97e6c4bb8ff337a759189cdd0997956c000fd55f964736f6c634300081700330000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4315add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
Deployed Bytecode
0x6080604052600436106100d25760003560e01c80638205bf6a1161007f578063b633620c11610059578063b633620c14610231578063bc36c0a914610251578063f98d06f014610274578063feaf968c146102c057600080fd5b80638205bf6a146101a55780639a6fc8f5146101ba578063b5ab58dc1461021157600080fd5b806354fd4d50116100b057806354fd4d501461015a578063668a0f021461016e5780637284e4161461018357600080fd5b806331189334146100d7578063313ce5671461011e57806350d25bcd14610145575b600080fd5b3480156100e357600080fd5b5061010b7f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c86481565b6040519081526020015b60405180910390f35b34801561012a57600080fd5b506101336102d5565b60405160ff9091168152602001610115565b34801561015157600080fd5b5061010b61039c565b34801561016657600080fd5b50600161010b565b34801561017a57600080fd5b5061010b610453565b34801561018f57600080fd5b50610198610462565b6040516101159190610867565b3480156101b157600080fd5b5061010b610482565b3480156101c657600080fd5b506101da6101d53660046108b6565b610539565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a001610115565b34801561021d57600080fd5b5061010b61022c3660046108e9565b610610565b34801561023d57600080fd5b5061010b61024c3660046108e9565b610620565b61026461025f366004610902565b61062a565b6040519015158152602001610115565b34801561028057600080fd5b506102a87f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4381565b6040516001600160a01b039091168152602001610115565b3480156102cc57600080fd5b506101da610790565b6040516396834ad360e01b81527f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864600482015260009081906001600160a01b037f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4316906396834ad390602401608060405180830381865afa15801561035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038291906109a6565b905080604001516000196103969190610a36565b91505090565b6040516396834ad360e01b81527f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864600482015260009081906001600160a01b037f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4316906396834ad390602401608060405180830381865afa158015610425573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044991906109a6565b5160070b92915050565b600061045d610482565b905090565b60606040518060600160405280603e8152602001610b4a603e9139905090565b6040516396834ad360e01b81527f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864600482015260009081906001600160a01b037f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4316906396834ad390602401608060405180830381865afa15801561050b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052f91906109a6565b6060015192915050565b6000806000806000807f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b436001600160a01b03166396834ad37f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c8646040518263ffffffff1660e01b81526004016105b091815260200190565b608060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f191906109a6565b8051606090910151979860079190910b97965086955088945092505050565b600061061a61039c565b92915050565b600061061a610482565b6000807f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b436001600160a01b031663d47eed4585856040518363ffffffff1660e01b815260040161067b929190610a94565b602060405180830381865afa158015610698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bc9190610b30565b90507f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b436001600160a01b031663ef9e5e288286866040518463ffffffff1660e01b815260040161070d929190610a94565b6000604051808303818588803b15801561072657600080fd5b505af115801561073a573d6000803e3d6000fd5b50506040513393504792509050600081818185875af1925050503d8060008114610780576040519150601f19603f3d011682016040523d82523d6000602084013e610785565b606091505b509095945050505050565b6000806000806000807f0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b436001600160a01b03166396834ad37f15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c8646040518263ffffffff1660e01b815260040161080791815260200190565b608060405180830381865afa158015610824573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084891906109a6565b60608101519051909760079190910b9650879550859450849350915050565b60006020808352835180602085015260005b8181101561089557858101830151858201604001528201610879565b506000604082860101526040601f19601f8301168501019250505092915050565b6000602082840312156108c857600080fd5b813569ffffffffffffffffffff811681146108e257600080fd5b9392505050565b6000602082840312156108fb57600080fd5b5035919050565b6000806020838503121561091557600080fd5b823567ffffffffffffffff8082111561092d57600080fd5b818501915085601f83011261094157600080fd5b81358181111561095057600080fd5b8660208260051b850101111561096557600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff8116811461098f57600080fd5b919050565b8051600381900b811461098f57600080fd5b6000608082840312156109b857600080fd5b6040516080810181811067ffffffffffffffff821117156109e957634e487b7160e01b600052604160045260246000fd5b6040528251600781900b81146109fe57600080fd5b8152610a0c60208401610977565b6020820152610a1d60408401610994565b6040820152606083015160608201528091505092915050565b60008260000b8260000b028060000b9150808214610a6457634e487b7160e01b600052601160045260246000fd5b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b87811015610b2357868403603f190183528135368a9003601e19018112610ad957600080fd5b8901858101903567ffffffffffffffff811115610af557600080fd5b803603821315610b0457600080fd5b610b0f868284610a6b565b955050509184019190840190600101610ab3565b5091979650505050505050565b600060208284031215610b4257600080fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a2646970667358221220d14945c33062d71a97a5d2d97e6c4bb8ff337a759189cdd0997956c000fd55f964736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4315add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
-----Decoded View---------------
Arg [0] : _pyth (address): 0x2880aB155794e7179c9eE2e38200202908C17B43
Arg [1] : _priceId (bytes32): 0x15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43
Arg [1] : 15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.