Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EthX price feed #193

Merged
merged 6 commits into from
Aug 23, 2024
Merged

Add EthX price feed #193

merged 6 commits into from
Aug 23, 2024

Conversation

zmanian
Copy link
Contributor

@zmanian zmanian commented Jun 17, 2024

Summary by CodeRabbit

  • New Features
    • Introduced a script to switch the ETHX price feed, enhancing the asset settings management process.

Copy link
Contributor

coderabbitai bot commented Jun 17, 2024

Walkthrough

The update introduces a Solidity script for switching the ETHX price feed by interacting with key contracts such as Registry, PriceRouter, and IChainlinkAggregator. This script, in two parts, defines constants for derivatives and implements a run function to modify asset settings using PriceRouter.

Changes

Files Change Summary
script/.../switchETHXPriceFeed.s.sol Added switchEthXPriceFeed contract, constants for derivatives, a run function, and instances of Registry and PriceRouter contracts.
script/.../switchETHXPriceFeed.part2.s.sol Similar additions as switchETHXPriceFeed.s.sol: switchEthXPriceFeed contract, constants for derivatives, a run function, and Registry and PriceRouter.

Sequence Diagram(s)

sequenceDiagram
    participant User as User
    participant Script as switchEthXPriceFeed
    participant Registry as Registry
    participant PriceRouter as PriceRouter

    User->>Script: execute run()
    Script->>Registry: access Registry data
    Script->>PriceRouter: modify asset settings
Loading

Poem

On blockchain lands where codes abide,
A new script set the pace to glide,
Switch ETHX, the prices flow,
Through constants and routers, data grows.
Solidity sings, in bytes we trust,
For future gains and paths discussed.


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.


uint256 price = uint256(IChainlinkAggregator(WETH_USD_FEED).latestAnswer());
settings = PriceRouter.AssetSettings(CHAINLINK_DERIVATIVE, ETHX_USD_FEED);
PriceRouter.ChainlinkDerivativeStorage memory stor;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stor.inETH should be set to true. I looked at the feed and this is am ETHx/ETH feed not a USD one.


function run() external {

uint256 price = uint256(IChainlinkAggregator(WETH_USD_FEED).latestAnswer());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This price needs to be multiplied by the exchange rate of ETHx.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However this is not used to call startEditAsset, so you just need to keep it in mind for when you complete edit asset.

@zmanian zmanian marked this pull request as ready for review June 27, 2024 20:56
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 5c8e5d7 and 4541c1c.

Files selected for processing (2)
  • script/Mainnet/production/switchETHXPriceFeed.part2.s.sol (1 hunks)
  • script/Mainnet/production/switchETHXPriceFeed.s.sol (1 hunks)
Additional comments not posted (7)
script/Mainnet/production/switchETHXPriceFeed.s.sol (3)

28-30: Constants declaration review.

The constants CHAINLINK_DERIVATIVE, TWAP_DERIVATIVE, and EXTENSION_DERIVATIVE are clearly defined. Ensure these constants are used consistently throughout the contract and their values align with the intended logic.


32-47: Review of run function.

The function sets up and starts the broadcast of asset settings modifications. It uses a hardcoded ETHX_ETH_FEED which should be verified. The inETH flag is set to true based on a previous comment, which is good. However, ensure that the use of ETHX_ETH_FEED and the logic within this function align with the overall contract's goals.


24-25: Initialization of Registry and PriceRouter.

The hardcoded addresses for Registry and PriceRouter are fine as long as they are correct and intended for production use. Ensure these addresses are verified and up-to-date.

script/Mainnet/production/switchETHXPriceFeed.part2.s.sol (4)

21-21: Ensure accurate contract name.

The contract name in this file is correct and aligns with the file name.


28-30: Constants declaration review.

The constants are identical to those in the first file. Ensure they are consistently used across both parts of the script.


24-25: Initialization of Registry and PriceRouter.

As in the first part, ensure the hardcoded addresses are correct and intended for production use.


32-53: Review of run function in part 2.

This function completes the asset editing process started in the first part. It calculates prices using feeds and completes the asset setting. Ensure the calculations and the logic used here are accurate and intended. The division by 1e18 should be verified to ensure it aligns with the decimals used in the feeds.

* @dev Run
* `source .env && forge script script/Mainnet/production/switchETHXPriceFeed.s.sol:swithEthXPriceFeed --rpc-url $MAINNET_RPC_URL --sender $MULTI_SIG --with-gas-price 25000000000`
*/
contract swithEthXPriceFeed is Script, MainnetAddresses {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure accurate contract name.

The contract name swithEthXPriceFeed seems to have a typographical error. It should likely be switchEthXPriceFeed as indicated by the file name and usage in other documents.

- contract swithEthXPriceFeed is Script, MainnetAddresses {
+ contract switchEthXPriceFeed is Script, MainnetAddresses {
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
contract swithEthXPriceFeed is Script, MainnetAddresses {
contract switchEthXPriceFeed is Script, MainnetAddresses {

@zmanian zmanian merged commit 6d25401 into main Aug 23, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants