Pyth Symbology Update (February 3rd, 2022)
This blog aims to introduce the symbology updates which the Pyth network will implement by the 3rd February 2022 on Solana mainnet. These changes have already been deployed on Solana testnet and devnet.
Be sure to fully review the upcoming changes in the Pyth code to determine how this will impact your application. Pyth documentation is available here. If you have any questions, please reach out on Discord or Telegram.
As a reminder, the Pyth price oracle manages a number of on-chain accounts. There are three different types of accounts:
- Product accounts store metadata about a product, such as its symbol (e.g., “BTC/USD”) and asset type.
- Price accounts store the current price information for a particular product. This account has fields such as the current price, a confidence interval, a time-weighted average price, and whether or not a price is currently available.
- Mapping accounts serve as a listing of other accounts. The mapping accounts are organized into a linked list whose values are the set of product accounts. These accounts allow applications to enumerate the full list of products whose prices are available on Pyth.
Product accounts contain an attribute dictionary, which is a key-value store holding a small amount of useful information to allow consumers and publishers to be certain about which product it is. The most conspicuous attribute is one called “symbol”, which is often used as a display name, and could easily be mistaken for a unique identifier. As always, more details are in our docs.
Where possible, we would like tickers to be short, intuitive, and unique but this is difficult to achieve across multiple asset classes and geographies.
Original Symbology and Product Attributes (will become outdated on February 3rd, 2022)
What is wrong with this?
There are known clashes in other asset classes too: for example, there’s a US equity called “HKD” which is also the mnemonic for Hong Kong Dollar. And there are two potential “SAN/EUR” equities in the Eurostoxx 50: Santander, the Spanish bank, and Sanofi, the French pharmaceuticals company.
Even where there aren’t clashes, there’s potential for confusion. We might have “DAI/USD” the cryptocurrency and “DAI/EUR” shares in Daimler AG.
New Symbology and Attributes (becomes official on February 3rd, 2022)
Note that crypto will no longer have “country” or “tenor”.
Equities will no longer have “tenor”.
FX and metals will no longer have “country”.
For more details and examples, be sure to check our Product Metadata docs.
When and how will it go live?
The deployment of the new symbology onto the Solana mainnet will start at 0830 US Central / 1430 UTC.
Deployment is expected to last tens of minutes (max 1 hour). This will depend on how RPC nodes behave, the better the shorter the deployment
As this new symbology gets deployed, this will not affect the publishing of data.
Users should not rely on the symbol name being unchanging or parse data out of the symbol.
Instead, programs should always use the different attributes to identify the product you are interested in. We have to ensure that anything which is used to compose the symbol is made available as a stand-alone attribute.
We are limited to 464 bytes to store the attribute dictionary in v2 (the product account is 512 bytes and 48 are used for other fields). This has to hold all the keys and values, plus field separators. There is no data compression or abbreviation.
We hope that the changes introduced above (live on Solana mainnet on February 3rd, 2022) will not negatively impact your current program. If it does, please be sure to update your program accordingly before the go-live date.
On the Pyth side, these changes will enabled to be much more scalable with regards to products available within the network, while ensuring that anyone leveraging these price feeds can easily and confidently understand which asset is linked to the account.