Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
PythAggregatorV3
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-21 */ // SPDX-License-Identifier: Apache AND Apache-2.0 // File contracts/IPythEvents.sol // Original license: SPDX_License_Identifier: Apache-2.0 pragma solidity 0.8.20; /// @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 ); } // File contracts/PythStructs.sol // Original license: SPDX_License_Identifier: Apache-2.0 pragma solidity 0.8.20; 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; } } // File contracts/IPyth.sol // Original license: SPDX_License_Identifier: Apache-2.0 pragma solidity 0.8.20; /// @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); } // File contracts/PythAggregatorV3.sol // Original license: SPDX_License_Identifier: Apache pragma solidity 0.8.20; // 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. */ contract PythAggregatorV3 { bytes32 public priceId; IPyth public 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) public payable { // 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 payable(msg.sender).call{value: address(this).balance}(""); } function decimals() public view virtual returns (uint8) { PythStructs.Price memory price = pyth.getPriceUnsafe(priceId); return uint8(-1 * int8(price.expo)); } function description() public pure returns (string memory) { return "A port of a chainlink aggregator powered by pyth network feeds"; } function version() public 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() public view returns (uint256) { // use timestamp as the round id return latestTimestamp(); } function getAnswer(uint256) public 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 ); } }
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":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051610aa0380380610aa083398101604081905261002e91610055565b5f55600180546001600160a01b0319166001600160a01b039290921691909117905561008c565b5f8060408385031215610066575f80fd5b82516001600160a01b038116811461007c575f80fd5b6020939093015192949293505050565b610a07806100995f395ff3fe6080604052600436106100ce575f3560e01c80638205bf6a1161007c578063b633620c11610057578063b633620c14610204578063bc36c0a914610223578063f98d06f014610238578063feaf968c1461026f575f80fd5b80638205bf6a1461017b5780639a6fc8f51461018f578063b5ab58dc146101e5575f80fd5b806354fd4d50116100ac57806354fd4d5014610133578063668a0f02146101465780637284e4161461015a575f80fd5b806331189334146100d2578063313ce567146100f957806350d25bcd1461011f575b5f80fd5b3480156100dd575f80fd5b506100e65f5481565b6040519081526020015b60405180910390f35b348015610104575f80fd5b5061010d610283565b60405160ff90911681526020016100f0565b34801561012a575f80fd5b506100e661030f565b34801561013e575f80fd5b5060016100e6565b348015610151575f80fd5b506100e661038c565b348015610165575f80fd5b5061016e61039a565b6040516100f091906106d4565b348015610186575f80fd5b506100e66103ba565b34801561019a575f80fd5b506101ae6101a936600461071f565b610437565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100f0565b3480156101f0575f80fd5b506100e66101ff36600461074f565b6104d1565b34801561020f575f80fd5b506100e661021e36600461074f565b6104e0565b610236610231366004610766565b6104e9565b005b348015610243575f80fd5b50600154610257906001600160a01b031681565b6040516001600160a01b0390911681526020016100f0565b34801561027a575f80fd5b506101ae61063a565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156102d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f69190610802565b905080604001515f19610309919061088d565b91505090565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561035e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103829190610802565b5160070b92915050565b5f6103956103ba565b905090565b60606040518060600160405280603e8152602001610994603e9139905090565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042d9190610802565b6060015192915050565b6001545f80546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561048e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b29190610802565b8051606090910151979860079190910b97965086955088945092505050565b5f6104da61030f565b92915050565b5f6104da6103ba565b6001546040517fd47eed450000000000000000000000000000000000000000000000000000000081525f916001600160a01b03169063d47eed459061053490869086906004016108e4565b602060405180830381865afa15801561054f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610573919061097c565b6001546040517fef9e5e280000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063ef9e5e289083906105c190879087906004016108e4565b5f604051808303818588803b1580156105d8575f80fd5b505af11580156105ea573d5f803e3d5ffd5b505060405133935047925090505f81818185875af1925050503d805f811461062d576040519150601f19603f3d011682016040523d82523d5f602084013e610632565b606091505b505050505050565b6001545f80546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610691573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b59190610802565b60608101519051909760079190910b9650879550859450849350915050565b5f6020808352835180828501525f5b818110156106ff578581018301518582016040015282016106e3565b505f604082860101526040601f19601f8301168501019250505092915050565b5f6020828403121561072f575f80fd5b813569ffffffffffffffffffff81168114610748575f80fd5b9392505050565b5f6020828403121561075f575f80fd5b5035919050565b5f8060208385031215610777575f80fd5b823567ffffffffffffffff8082111561078e575f80fd5b818501915085601f8301126107a1575f80fd5b8135818111156107af575f80fd5b8660208260051b85010111156107c3575f80fd5b60209290920196919550909350505050565b805167ffffffffffffffff811681146107ec575f80fd5b919050565b8051600381900b81146107ec575f80fd5b5f60808284031215610812575f80fd5b6040516080810181811067ffffffffffffffff8211171561084157634e487b7160e01b5f52604160045260245ffd5b6040528251600781900b8114610855575f80fd5b8152610863602084016107d5565b6020820152610874604084016107f1565b6040820152606083015160608201528091505092915050565b5f825f0b825f0b02805f0b91508082146108b557634e487b7160e01b5f52601160045260245ffd5b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60208082528181018390525f906040600585901b8401810190840186845b8781101561096f57868403603f190183528135368a9003601e19018112610927575f80fd5b8901858101903567ffffffffffffffff811115610942575f80fd5b803603821315610950575f80fd5b61095b8682846108bc565b955050509184019190840190600101610902565b5091979650505050505050565b5f6020828403121561098c575f80fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a2646970667358221220f89aa8916f434ca949f942bfad69f5b58fd40858a564676f02b9d0175c0f484664736f6c634300081400330000000000000000000000002880ab155794e7179c9ee2e38200202908c17b435c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c
Deployed Bytecode
0x6080604052600436106100ce575f3560e01c80638205bf6a1161007c578063b633620c11610057578063b633620c14610204578063bc36c0a914610223578063f98d06f014610238578063feaf968c1461026f575f80fd5b80638205bf6a1461017b5780639a6fc8f51461018f578063b5ab58dc146101e5575f80fd5b806354fd4d50116100ac57806354fd4d5014610133578063668a0f02146101465780637284e4161461015a575f80fd5b806331189334146100d2578063313ce567146100f957806350d25bcd1461011f575b5f80fd5b3480156100dd575f80fd5b506100e65f5481565b6040519081526020015b60405180910390f35b348015610104575f80fd5b5061010d610283565b60405160ff90911681526020016100f0565b34801561012a575f80fd5b506100e661030f565b34801561013e575f80fd5b5060016100e6565b348015610151575f80fd5b506100e661038c565b348015610165575f80fd5b5061016e61039a565b6040516100f091906106d4565b348015610186575f80fd5b506100e66103ba565b34801561019a575f80fd5b506101ae6101a936600461071f565b610437565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100f0565b3480156101f0575f80fd5b506100e66101ff36600461074f565b6104d1565b34801561020f575f80fd5b506100e661021e36600461074f565b6104e0565b610236610231366004610766565b6104e9565b005b348015610243575f80fd5b50600154610257906001600160a01b031681565b6040516001600160a01b0390911681526020016100f0565b34801561027a575f80fd5b506101ae61063a565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156102d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f69190610802565b905080604001515f19610309919061088d565b91505090565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561035e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103829190610802565b5160070b92915050565b5f6103956103ba565b905090565b60606040518060600160405280603e8152602001610994603e9139905090565b6001545f80546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042d9190610802565b6060015192915050565b6001545f80546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561048e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b29190610802565b8051606090910151979860079190910b97965086955088945092505050565b5f6104da61030f565b92915050565b5f6104da6103ba565b6001546040517fd47eed450000000000000000000000000000000000000000000000000000000081525f916001600160a01b03169063d47eed459061053490869086906004016108e4565b602060405180830381865afa15801561054f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610573919061097c565b6001546040517fef9e5e280000000000000000000000000000000000000000000000000000000081529192506001600160a01b03169063ef9e5e289083906105c190879087906004016108e4565b5f604051808303818588803b1580156105d8575f80fd5b505af11580156105ea573d5f803e3d5ffd5b505060405133935047925090505f81818185875af1925050503d805f811461062d576040519150601f19603f3d011682016040523d82523d5f602084013e610632565b606091505b505050505050565b6001545f80546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610691573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b59190610802565b60608101519051909760079190910b9650879550859450849350915050565b5f6020808352835180828501525f5b818110156106ff578581018301518582016040015282016106e3565b505f604082860101526040601f19601f8301168501019250505092915050565b5f6020828403121561072f575f80fd5b813569ffffffffffffffffffff81168114610748575f80fd5b9392505050565b5f6020828403121561075f575f80fd5b5035919050565b5f8060208385031215610777575f80fd5b823567ffffffffffffffff8082111561078e575f80fd5b818501915085601f8301126107a1575f80fd5b8135818111156107af575f80fd5b8660208260051b85010111156107c3575f80fd5b60209290920196919550909350505050565b805167ffffffffffffffff811681146107ec575f80fd5b919050565b8051600381900b81146107ec575f80fd5b5f60808284031215610812575f80fd5b6040516080810181811067ffffffffffffffff8211171561084157634e487b7160e01b5f52604160045260245ffd5b6040528251600781900b8114610855575f80fd5b8152610863602084016107d5565b6020820152610874604084016107f1565b6040820152606083015160608201528091505092915050565b5f825f0b825f0b02805f0b91508082146108b557634e487b7160e01b5f52601160045260245ffd5b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60208082528181018390525f906040600585901b8401810190840186845b8781101561096f57868403603f190183528135368a9003601e19018112610927575f80fd5b8901858101903567ffffffffffffffff811115610942575f80fd5b803603821315610950575f80fd5b61095b8682846108bc565b955050509184019190840190600101610902565b5091979650505050505050565b5f6020828403121561098c575f80fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a2646970667358221220f89aa8916f434ca949f942bfad69f5b58fd40858a564676f02b9d0175c0f484664736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b435c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c
-----Decoded View---------------
Arg [0] : _pyth (address): 0x2880aB155794e7179c9eE2e38200202908C17B43
Arg [1] : _priceId (bytes32): 0x5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43
Arg [1] : 5c6c0d2386e3352356c3ab84434fafb5ea067ac2678a38a338c4a69ddc4bdb0c
Deployed Bytecode Sourcemap
11408:3193:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11441:22;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;11441:22:0;;;;;;;;12348:182;;;;;;;;;;;;;:::i;:::-;;;368:4:1;356:17;;;338:36;;326:2;311:18;12348:182:0;196:184:1;12779:178:0;;;;;;;;;;;;;:::i;12695:76::-;;;;;;;;;;-1:-1:-1;12762:1:0;12695:76;;13145:138;;;;;;;;;;;;;:::i;12538:149::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12965:172::-;;;;;;;;;;;;;:::i;13510:532::-;;;;;;;;;;-1:-1:-1;13510:532:0;;;;;:::i;:::-;;:::i;:::-;;;;1856:22:1;1905:15;;;1887:34;;1952:2;1937:18;;1930:34;;;;1980:18;;1973:34;;;;2038:2;2023:18;;2016:34;2087:15;;;2081:3;2066:19;;2059:44;1833:3;1818:19;13510:532:0;1593:516:1;13291:97:0;;;;;;;;;;-1:-1:-1;13291:97:0;;;;;:::i;:::-;;:::i;13396:106::-;;;;;;;;;;-1:-1:-1;13396:106:0;;;;;:::i;:::-;;:::i;11735:605::-;;;;;;:::i;:::-;;:::i;:::-;;11470:17;;;;;;;;;;-1:-1:-1;11470:17:0;;;;-1:-1:-1;;;;;11470:17:0;;;;;;-1:-1:-1;;;;;3107:55:1;;;3089:74;;3077:2;3062:18;11470:17:0;2930:239:1;14050:548:0;;;;;;;;;;;;;:::i;12348:182::-;12448:4;;12397:5;12468:7;;12448:28;;-1:-1:-1;;;12448:28:0;;;;;160:25:1;;;;12397:5:0;;;;-1:-1:-1;;;;;12448:4:0;;;;:19;;133:18:1;;12448:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12415:61;;12510:5;:10;;;-1:-1:-1;;12500:21:0;;;;:::i;:::-;12487:35;;;12348:182;:::o;12779:178::-;12884:4;;12832:6;12904:7;;12884:28;;-1:-1:-1;;;12884:28:0;;;;;160:25:1;;;;12832:6:0;;;;-1:-1:-1;;;;;12884:4:0;;;;:19;;133:18:1;;12884:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12937:11;12930:19;;;12779:178;-1:-1:-1;;12779:178:0:o;13145:138::-;13189:7;13258:17;:15;:17::i;:::-;13251:24;;13145:138;:::o;12538:149::-;12582:13;12608:71;;;;;;;;;;;;;;;;;;;12538:149;:::o;12965:172::-;13066:4;;13013:7;13086;;13066:28;;-1:-1:-1;;;13066:28:0;;;;;160:25:1;;;;13013:7:0;;;;-1:-1:-1;;;;;13066:4:0;;;;:19;;133:18:1;;13066:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13112:17;;;;12965:172;-1:-1:-1;;12965:172:0:o;13510:532::-;13833:4;;13629:14;13853:7;;13833:28;;-1:-1:-1;;;13833:28:0;;;;;160:25:1;;;;13629:14:0;;;;;;;;;;;;-1:-1:-1;;;;;13833:4:0;;;;:19;;133:18:1;;13833:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13924:11;;13951:17;;;;;13894:8;;13917:19;;;;;;13951:17;-1:-1:-1;13951:17:0;;-1:-1:-1;13894:8:0;;-1:-1:-1;13510:532:0;-1:-1:-1;;;13510:532:0:o;13291:97::-;13340:6;13366:14;:12;:14::i;:::-;13359:21;13291:97;-1:-1:-1;;13291:97:0:o;13396:106::-;13450:7;13477:17;:15;:17::i;11735:605::-;12133:4;;:34;;;;;12122:8;;-1:-1:-1;;;;;12133:4:0;;:17;;:34;;12151:15;;;;12133:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12178:4;;:50;;;;;12122:45;;-1:-1:-1;;;;;;12178:4:0;;:21;;12122:45;;12178:50;;12212:15;;;;12178:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12274:58:0;;12282:10;;-1:-1:-1;12306:21:0;;-1:-1:-1;12274:58:0;-1:-1:-1;12274:58:0;;;;12306:21;12282:10;12274:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11805:535;11735:605;;:::o;14050:548::-;14345:4;;14141:14;14365:7;;14345:28;;-1:-1:-1;;;14345:28:0;;;;;160:25:1;;;;14141:14:0;;;;;;;;;;;;-1:-1:-1;;;;;14345:4:0;;;;:19;;133:18:1;;14345:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14401:17;;;;14481:11;;14401:17;;14474:19;;;;;;-1:-1:-1;14401:17:0;;-1:-1:-1;14401:17:0;;-1:-1:-1;14401:17:0;;-1:-1:-1;14050:548:0;-1:-1:-1;;14050:548:0:o;747::1:-;859:4;888:2;917;906:9;899:21;949:6;943:13;992:6;987:2;976:9;972:18;965:34;1017:1;1027:140;1041:6;1038:1;1035:13;1027:140;;;1136:14;;;1132:23;;1126:30;1102:17;;;1121:2;1098:26;1091:66;1056:10;;1027:140;;;1031:3;1216:1;1211:2;1202:6;1191:9;1187:22;1183:31;1176:42;1286:2;1279;1275:7;1270:2;1262:6;1258:15;1254:29;1243:9;1239:45;1235:54;1227:62;;;;747:548;;;;:::o;1300:288::-;1358:6;1411:2;1399:9;1390:7;1386:23;1382:32;1379:52;;;1427:1;1424;1417:12;1379:52;1466:9;1453:23;1516:22;1509:5;1505:34;1498:5;1495:45;1485:73;;1554:1;1551;1544:12;1485:73;1577:5;1300:288;-1:-1:-1;;;1300:288:1:o;2114:180::-;2173:6;2226:2;2214:9;2205:7;2201:23;2197:32;2194:52;;;2242:1;2239;2232:12;2194:52;-1:-1:-1;2265:23:1;;2114:180;-1:-1:-1;2114:180:1:o;2299:626::-;2396:6;2404;2457:2;2445:9;2436:7;2432:23;2428:32;2425:52;;;2473:1;2470;2463:12;2425:52;2513:9;2500:23;2542:18;2583:2;2575:6;2572:14;2569:34;;;2599:1;2596;2589:12;2569:34;2637:6;2626:9;2622:22;2612:32;;2682:7;2675:4;2671:2;2667:13;2663:27;2653:55;;2704:1;2701;2694:12;2653:55;2744:2;2731:16;2770:2;2762:6;2759:14;2756:34;;;2786:1;2783;2776:12;2756:34;2839:7;2834:2;2824:6;2821:1;2817:14;2813:2;2809:23;2805:32;2802:45;2799:65;;;2860:1;2857;2850:12;2799:65;2891:2;2883:11;;;;;2913:6;;-1:-1:-1;2299:626:1;;-1:-1:-1;;;;2299:626:1:o;3174:175::-;3252:13;;3305:18;3294:30;;3284:41;;3274:69;;3339:1;3336;3329:12;3274:69;3174:175;;;:::o;3354:164::-;3431:13;;3484:1;3473:20;;;3463:31;;3453:59;;3508:1;3505;3498:12;3523:911;3614:6;3667:3;3655:9;3646:7;3642:23;3638:33;3635:53;;;3684:1;3681;3674:12;3635:53;3717:2;3711:9;3759:3;3751:6;3747:16;3829:6;3817:10;3814:22;3793:18;3781:10;3778:34;3775:62;3772:242;;;-1:-1:-1;;;3867:1:1;3860:88;3971:4;3968:1;3961:15;3999:4;3996:1;3989:15;3772:242;4030:2;4023:22;4067:16;;4123:1;4112:20;;;4102:31;;4092:59;;4147:1;4144;4137:12;4092:59;4160:21;;4214:48;4258:2;4243:18;;4214:48;:::i;:::-;4209:2;4201:6;4197:15;4190:73;4296:47;4339:2;4328:9;4324:18;4296:47;:::i;:::-;4291:2;4283:6;4279:15;4272:72;4398:2;4387:9;4383:18;4377:25;4372:2;4364:6;4360:15;4353:50;4422:6;4412:16;;;3523:911;;;;:::o;4439:390::-;4476:7;4553:1;4550;4539:16;4535:1;4532;4521:16;4517:39;4590:11;4587:1;4576:26;4565:37;;4633:11;4624:7;4621:24;4611:212;;-1:-1:-1;;;4676:1:1;4669:88;4780:4;4777:1;4770:15;4808:4;4805:1;4798:15;4611:212;;4439:390;;;;:::o;4834:266::-;4922:6;4917:3;4910:19;4974:6;4967:5;4960:4;4955:3;4951:14;4938:43;-1:-1:-1;5026:1:1;5001:16;;;5019:4;4997:27;;;4990:38;;;;5082:2;5061:15;;;-1:-1:-1;;5057:29:1;5048:39;;;5044:50;;4834:266::o;5105:1226::-;5306:2;5358:21;;;5331:18;;;5414:22;;;-1:-1:-1;;5467:2:1;5516:1;5512:14;;;5497:30;;5493:39;;;5452:18;;5555:6;-1:-1:-1;5589:713:1;5603:6;5600:1;5597:13;5589:713;;;5668:22;;;-1:-1:-1;;5664:36:1;5652:49;;5740:20;;5815:14;5811:27;;;-1:-1:-1;;5807:41:1;5783:66;;5773:94;;5863:1;5860;5853:12;5773:94;5893:31;;5998:14;;;;5951:19;6039:18;6028:30;;6025:50;;;6071:1;6068;6061:12;6025:50;6124:6;6108:14;6104:27;6095:7;6091:41;6088:61;;;6145:1;6142;6135:12;6088:61;6172:50;6215:6;6207;6198:7;6172:50;:::i;:::-;6162:60;-1:-1:-1;;;6280:12:1;;;;6245:15;;;;5625:1;5618:9;5589:713;;;-1:-1:-1;6319:6:1;;5105:1226;-1:-1:-1;;;;;;;5105:1226:1:o;6336:184::-;6406:6;6459:2;6447:9;6438:7;6434:23;6430:32;6427:52;;;6475:1;6472;6465:12;6427:52;-1:-1:-1;6498:16:1;;6336:184;-1:-1:-1;6336:184:1:o
Swarm Source
ipfs://f89aa8916f434ca949f942bfad69f5b58fd40858a564676f02b9d0175c0f4846
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.