[PASSED] OP-PIP32: Upgrade the Pyth Oracle

Abstract
This proposal upgrades the Pyth oracle program on Pythnet to add a unique index id to each feed that can be used instead of price account key for more space efficiency.

Rationale
There is a tight limit on transaction size in Pythnet and publishers can only send 12 price updates in a single transaction. This proposal is part of a broader effort that changes the way publishers send price updates and allows them to send 47 price updates in a single transaction and increase the parallelism of the oracle computations. In the new design, publishers send prices to their own buffer in a new program called Price Store in a compressed way (a list of only required data) and later the validator copies their prices into the price accounts before performing the aggregation (validator changes).

Description
This proposal upgrades the Pyth oracle program with the following major change:

  • Add feed index for batch publish - PR 416

For the list of all the changes, please see the release notes of the new oracle from here.

Implementation Plan
Proposal id: 9yTbSwTUsp4PDpP6vU4snGDGr7ASwDujH7jtd43WEmZA

Verify the implementation following the guide below:

  1. Make sure you have git, Docker and sha256sum.
  2. git: install git from here
  3. Docker: install it from here
  4. sha256sum: if on Mac you can install it as a part of coreutils with brew install coreutils
  5. Clone the pyth-client repo (git clone)
  6. Go to the pyth-client directory and checkout to oracle v2.34.0 release by running git checkout oracle-v2.34.0 command.
  7. run the following command: docker build -f docker/Dockerfile --platform=linux/x86_64 --progress=plain .
  8. Upon a successful build, you should see the following messages containing the hash digest of the program:
sha256sum ./target/deploy/pyth_oracle.so
<hash-digest> ./target/deploy/pyth_oracle.so
  1. Check that the hash digest matches the hash digest of the buffer deployed on Pythnet. Get the buffer account from the proposal and fetch the digest of the program in the buffer account by running the following command:
solana -u https://api2.pythnet.pyth.network program dump <BUFFER> temp_file
sha256sum temp_file
rm temp_file
  1. Make sure the hash from step 8 and from step 9 match
  2. Make sure the buffer authority is the oracle authority. You can verify the authority by going to the solana explorer with https://api2.pythnet.pyth.network as a custom RPC and check the upgrade authority of the oracle program (FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH ) and the buffer.
2 Likes