Pythscan
PROPOSALProposalsMay 14, 2024

[PASSED] OP-PIP-10: Optimize Pyth oracle program

May 14, 2024

Abstract


This proposal upgrades the Pyth oracle program on Pythnet to optimize its performance.

Rationale


Pythnet processes more than 3000 price updates per second and is expected to grow further. To ensure the network can handle this load, the Pyth oracle program requires continuous optimization for performance.

Description


This proposal upgrades the Pyth oracle program with the following changes:

  • Use a sorted list of publishers to reduce the time to lookup a publisher - PR

  • Remove rent checks because they are enforced by the network - PR. Storage rent is a locked fee mechanism for storage space in Solana that ensures storage is used efficiently in the network.

It is expected that these changes will decrease the compute unit usage of price updates by 10-30%.

Implementation Plan


Proposal id: Bj7w9MB37a3su9hYD6DPbYjXwBBoCywqcX4SM3SKy1GT

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 run the following command: docker build -f docker/Dockerfile --platform=linux/x86_64 --progress=plain .

  7. 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 4 and from step 5 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 oracle program (FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH) and the buffer.

Showing the original post. Read the full thread on forum.pyth.network

Replies
7
Views
635
Likes
52
Last activity
Jun 2024

Source: https://forum.pyth.network/t/passed-op-pip-10-optimize-pyth-oracle-program/119 · external id 119