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:
-
Make sure you have git, Docker and sha256sum.
-
git: install
git
from here -
Docker: install it from here
-
sha256sum: if on Mac you can install it as a part of coreutils with
brew install coreutils
-
Clone the
pyth-client
repo (git clone) -
Go to the
pyth-client
directory and run the following command:docker build -f docker/Dockerfile --platform=linux/x86_64 --progress=plain .
-
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
- 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
-
Make sure the hash from step 4 and from step 5 match
-
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.