Overview
APE Balance
APE Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GainsChainlinkFeed
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 {PythAggregatorV3} from "@pythnetwork/pyth-sdk-solidity/PythAggregatorV3.sol"; contract GainsChainlinkFeed is PythAggregatorV3 { constructor(address _pythFeedContract, bytes32 _feedId) PythAggregatorV3(_pythFeedContract, _feedId) {} }
// 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 pragma solidity ^0.8.0; import {PythStructs} from "./PythStructs.sol"; import {IPyth} from "./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. */ 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 ); } }
// 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
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pythFeedContract","type":"address"},{"internalType":"bytes32","name":"_feedId","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
608060405234801561001057600080fd5b50604051610ac7380380610ac783398101604081905261002f91610057565b600055600180546001600160a01b0319166001600160a01b0392909216919091179055610091565b6000806040838503121561006a57600080fd5b82516001600160a01b038116811461008157600080fd5b6020939093015192949293505050565b610a27806100a06000396000f3fe6080604052600436106100d25760003560e01c80638205bf6a1161007f578063b633620c11610059578063b633620c14610213578063bc36c0a914610233578063f98d06f014610248578063feaf968c1461028057600080fd5b80638205bf6a146101875780639a6fc8f51461019c578063b5ab58dc146101f357600080fd5b806354fd4d50116100b057806354fd4d501461013c578063668a0f02146101505780637284e4161461016557600080fd5b806331189334146100d7578063313ce5671461010057806350d25bcd14610127575b600080fd5b3480156100e357600080fd5b506100ed60005481565b6040519081526020015b60405180910390f35b34801561010c57600080fd5b50610115610295565b60405160ff90911681526020016100f7565b34801561013357600080fd5b506100ed610325565b34801561014857600080fd5b5060016100ed565b34801561015c57600080fd5b506100ed6103a5565b34801561017157600080fd5b5061017a6103b4565b6040516100f791906106d1565b34801561019357600080fd5b506100ed6103d4565b3480156101a857600080fd5b506101bc6101b7366004610720565b610454565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100f7565b3480156101ff57600080fd5b506100ed61020e366004610753565b6104f1565b34801561021f57600080fd5b506100ed61022e366004610753565b610501565b61024661024136600461076c565b61050b565b005b34801561025457600080fd5b50600154610268906001600160a01b031681565b6040516001600160a01b0390911681526020016100f7565b34801561028c57600080fd5b506101bc610634565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190610810565b9050806040015160001961031f91906108a0565b91505090565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b9190610810565b5160070b92915050565b60006103af6103d4565b905090565b60606040518060600160405280603e81526020016109b4603e9139905090565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610810565b6060015192915050565b600154600080546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d29190610810565b8051606090910151979860079190910b97965086955088945092505050565b60006104fb610325565b92915050565b60006104fb6103d4565b60015460405163d47eed4560e01b81526000916001600160a01b03169063d47eed459061053e90869086906004016108fe565b602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061099a565b600154604051631df3cbc560e31b81529192506001600160a01b03169063ef9e5e289083906105b490879087906004016108fe565b6000604051808303818588803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b50506040513393504792509050600081818185875af1925050503d8060008114610627576040519150601f19603f3d011682016040523d82523d6000602084013e61062c565b606091505b505050505050565b600154600080546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190610810565b60608101519051909760079190910b9650879550859450849350915050565b60006020808352835180602085015260005b818110156106ff578581018301518582016040015282016106e3565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561073257600080fd5b813569ffffffffffffffffffff8116811461074c57600080fd5b9392505050565b60006020828403121561076557600080fd5b5035919050565b6000806020838503121561077f57600080fd5b823567ffffffffffffffff8082111561079757600080fd5b818501915085601f8301126107ab57600080fd5b8135818111156107ba57600080fd5b8660208260051b85010111156107cf57600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff811681146107f957600080fd5b919050565b8051600381900b81146107f957600080fd5b60006080828403121561082257600080fd5b6040516080810181811067ffffffffffffffff8211171561085357634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461086857600080fd5b8152610876602084016107e1565b6020820152610887604084016107fe565b6040820152606083015160608201528091505092915050565b60008260000b8260000b028060000b91508082146108ce57634e487b7160e01b600052601160045260246000fd5b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561098d57868403603f190183528135368a9003601e1901811261094357600080fd5b8901858101903567ffffffffffffffff81111561095f57600080fd5b80360382131561096e57600080fd5b6109798682846108d5565b95505050918401919084019060010161091d565b5091979650505050505050565b6000602082840312156109ac57600080fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a26469706673582212201c4b905b5ab749b042669b6d269b9050e304e35d447212e26ecebd59cec8303e64736f6c634300081700330000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4315add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
Deployed Bytecode
0x6080604052600436106100d25760003560e01c80638205bf6a1161007f578063b633620c11610059578063b633620c14610213578063bc36c0a914610233578063f98d06f014610248578063feaf968c1461028057600080fd5b80638205bf6a146101875780639a6fc8f51461019c578063b5ab58dc146101f357600080fd5b806354fd4d50116100b057806354fd4d501461013c578063668a0f02146101505780637284e4161461016557600080fd5b806331189334146100d7578063313ce5671461010057806350d25bcd14610127575b600080fd5b3480156100e357600080fd5b506100ed60005481565b6040519081526020015b60405180910390f35b34801561010c57600080fd5b50610115610295565b60405160ff90911681526020016100f7565b34801561013357600080fd5b506100ed610325565b34801561014857600080fd5b5060016100ed565b34801561015c57600080fd5b506100ed6103a5565b34801561017157600080fd5b5061017a6103b4565b6040516100f791906106d1565b34801561019357600080fd5b506100ed6103d4565b3480156101a857600080fd5b506101bc6101b7366004610720565b610454565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100f7565b3480156101ff57600080fd5b506100ed61020e366004610753565b6104f1565b34801561021f57600080fd5b506100ed61022e366004610753565b610501565b61024661024136600461076c565b61050b565b005b34801561025457600080fd5b50600154610268906001600160a01b031681565b6040516001600160a01b0390911681526020016100f7565b34801561028c57600080fd5b506101bc610634565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156102e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030b9190610810565b9050806040015160001961031f91906108a0565b91505090565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b9190610810565b5160070b92915050565b60006103af6103d4565b905090565b60606040518060600160405280603e81526020016109b4603e9139905090565b600154600080546040516396834ad360e01b81526004810191909152909182916001600160a01b03909116906396834ad390602401608060405180830381865afa158015610426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044a9190610810565b6060015192915050565b600154600080546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa1580156104ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d29190610810565b8051606090910151979860079190910b97965086955088945092505050565b60006104fb610325565b92915050565b60006104fb6103d4565b60015460405163d47eed4560e01b81526000916001600160a01b03169063d47eed459061053e90869086906004016108fe565b602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f919061099a565b600154604051631df3cbc560e31b81529192506001600160a01b03169063ef9e5e289083906105b490879087906004016108fe565b6000604051808303818588803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b50506040513393504792509050600081818185875af1925050503d8060008114610627576040519150601f19603f3d011682016040523d82523d6000602084013e61062c565b606091505b505050505050565b600154600080546040516396834ad360e01b815260048101919091529091829182918291829182916001600160a01b03909116906396834ad390602401608060405180830381865afa15801561068e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b29190610810565b60608101519051909760079190910b9650879550859450849350915050565b60006020808352835180602085015260005b818110156106ff578581018301518582016040015282016106e3565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561073257600080fd5b813569ffffffffffffffffffff8116811461074c57600080fd5b9392505050565b60006020828403121561076557600080fd5b5035919050565b6000806020838503121561077f57600080fd5b823567ffffffffffffffff8082111561079757600080fd5b818501915085601f8301126107ab57600080fd5b8135818111156107ba57600080fd5b8660208260051b85010111156107cf57600080fd5b60209290920196919550909350505050565b805167ffffffffffffffff811681146107f957600080fd5b919050565b8051600381900b81146107f957600080fd5b60006080828403121561082257600080fd5b6040516080810181811067ffffffffffffffff8211171561085357634e487b7160e01b600052604160045260246000fd5b6040528251600781900b811461086857600080fd5b8152610876602084016107e1565b6020820152610887604084016107fe565b6040820152606083015160608201528091505092915050565b60008260000b8260000b028060000b91508082146108ce57634e487b7160e01b600052601160045260246000fd5b5092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561098d57868403603f190183528135368a9003601e1901811261094357600080fd5b8901858101903567ffffffffffffffff81111561095f57600080fd5b80360382131561096e57600080fd5b6109798682846108d5565b95505050918401919084019060010161091d565b5091979650505050505050565b6000602082840312156109ac57600080fd5b505191905056fe4120706f7274206f66206120636861696e6c696e6b2061676772656761746f7220706f77657265642062792070797468206e6574776f726b206665656473a26469706673582212201c4b905b5ab749b042669b6d269b9050e304e35d447212e26ecebd59cec8303e64736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b4315add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
-----Decoded View---------------
Arg [0] : _pythFeedContract (address): 0x2880aB155794e7179c9eE2e38200202908C17B43
Arg [1] : _feedId (bytes32): 0x15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43
Arg [1] : 15add95022ae13563a11992e727c91bdb6b55bc183d9d747436c80a483d8c864
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.