Przeglądaj źródła

Merge pull request #2735 from pyth-network/docs-port-price-feeds

Start porting docs content
Aaron Bassett 5 miesięcy temu
rodzic
commit
289c30485c
100 zmienionych plików z 4110 dodań i 9 usunięć
  1. 61 0
      apps/developer-hub/content/docs/pyth-core/_meta.json
  2. 18 0
      apps/developer-hub/content/docs/pyth-core/api-instances-and-providers.mdx
  3. 4 0
      apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/_meta.json
  4. 51 0
      apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/hermes.mdx
  5. 21 0
      apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/pythnet-rpc.mdx
  6. 25 0
      apps/developer-hub/content/docs/pyth-core/api-reference.mdx
  7. BIN
      apps/developer-hub/content/docs/pyth-core/assets/Push-vs-Pull-Oracle.jpg
  8. 118 0
      apps/developer-hub/content/docs/pyth-core/best-practices.mdx
  9. 28 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses.mdx
  10. 14 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/_meta.json
  11. 22 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/aptos.mdx
  12. 38 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/cosmwasm.mdx
  13. 199 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/evm.mdx
  14. 19 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/fuel.mdx
  15. 28 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/iota.mdx
  16. 29 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/movement.mdx
  17. 16 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/near.mdx
  18. 34 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/pythnet.mdx
  19. 44 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/solana.mdx
  20. 19 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/starknet.mdx
  21. 34 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/sui.mdx
  22. 19 0
      apps/developer-hub/content/docs/pyth-core/contract-addresses/ton.mdx
  23. 24 0
      apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app.mdx
  24. 6 0
      apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/_meta.json
  25. 4 0
      apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/_meta.json
  26. 548 0
      apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/part-1.mdx
  27. 113 0
      apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/part-2.mdx
  28. 33 0
      apps/developer-hub/content/docs/pyth-core/current-fees.mdx
  29. 13 0
      apps/developer-hub/content/docs/pyth-core/error-codes.mdx
  30. 3 0
      apps/developer-hub/content/docs/pyth-core/error-codes/_meta.json
  31. 33 0
      apps/developer-hub/content/docs/pyth-core/error-codes/evm.mdx
  32. 48 0
      apps/developer-hub/content/docs/pyth-core/fetch-price-updates.mdx
  33. 38 0
      apps/developer-hub/content/docs/pyth-core/getting-started.mdx
  34. 28 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works.mdx
  35. 9 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/_meta.json
  36. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/EMA_Price_Aggregation_1.png
  37. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/EMA_Price_Aggregation_2.png
  38. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_1.png
  39. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_2.png
  40. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_3.png
  41. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_4.png
  42. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_5.png
  43. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_6.png
  44. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_7.png
  45. BIN
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Pull-Architecture-Hermes.png
  46. 36 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/cross-chain.mdx
  47. 53 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/ema-price-aggregation.mdx
  48. 22 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/fees.mdx
  49. 41 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/hermes.mdx
  50. 26 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/oracle-program.mdx
  51. 71 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/price-aggregation.mdx
  52. 28 0
      apps/developer-hub/content/docs/pyth-core/how-pyth-works/pythnet.mdx
  53. 6 2
      apps/developer-hub/content/docs/pyth-core/how-to-guides/index.mdx
  54. 22 6
      apps/developer-hub/content/docs/pyth-core/index.mdx
  55. 28 0
      apps/developer-hub/content/docs/pyth-core/market-hours.mdx
  56. 28 1
      apps/developer-hub/content/docs/pyth-core/meta.json
  57. 16 0
      apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth.mdx
  58. 3 0
      apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth/_meta.json
  59. 10 0
      apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth/chainlink.md
  60. 40 0
      apps/developer-hub/content/docs/pyth-core/price-feeds.mdx
  61. 3 0
      apps/developer-hub/content/docs/pyth-core/price-feeds/_meta.json
  62. 30 0
      apps/developer-hub/content/docs/pyth-core/price-feeds/asset-classes.mdx
  63. 64 0
      apps/developer-hub/content/docs/pyth-core/publish-data.mdx
  64. 6 0
      apps/developer-hub/content/docs/pyth-core/publish-data/_meta.json
  65. BIN
      apps/developer-hub/content/docs/pyth-core/publish-data/assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_1.png
  66. BIN
      apps/developer-hub/content/docs/pyth-core/publish-data/assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_2.png
  67. 32 0
      apps/developer-hub/content/docs/pyth-core/publish-data/confidence-interval-and-crypto-exchange-fees.mdx
  68. 349 0
      apps/developer-hub/content/docs/pyth-core/publish-data/pyth-client-websocket-api.mdx
  69. 63 0
      apps/developer-hub/content/docs/pyth-core/publish-data/understanding-publishing-slots.mdx
  70. 20 0
      apps/developer-hub/content/docs/pyth-core/publish-data/useful-resources-for-publishers.mdx
  71. 64 0
      apps/developer-hub/content/docs/pyth-core/pull-updates.mdx
  72. 16 0
      apps/developer-hub/content/docs/pyth-core/pythnet-reference.mdx
  73. 5 0
      apps/developer-hub/content/docs/pyth-core/pythnet-reference/_meta.json
  74. 100 0
      apps/developer-hub/content/docs/pyth-core/pythnet-reference/account-structure.mdx
  75. 133 0
      apps/developer-hub/content/docs/pyth-core/pythnet-reference/product-metadata.mdx
  76. 111 0
      apps/developer-hub/content/docs/pyth-core/pythnet-reference/schedule-format.mdx
  77. 27 0
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates.mdx
  78. 5 0
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/_meta.json
  79. BIN
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/dedicated-msg-sender.png
  80. BIN
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/deposit-usdc.png
  81. BIN
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/storage-pyth-config.png
  82. BIN
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/task-creation-gist-id.png
  83. BIN
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/task-execution.png
  84. 45 0
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-adrastia.mdx
  85. 132 0
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-gelato.mdx
  86. 21 0
      apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-scheduler.mdx
  87. 33 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds.mdx
  88. 7 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/_meta.json
  89. 38 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/aptos.mdx
  90. 275 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/evm.mdx
  91. 38 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/movement.mdx
  92. 67 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/solana.mdx
  93. 42 0
      apps/developer-hub/content/docs/pyth-core/sponsored-feeds/sui.mdx
  94. 16 0
      apps/developer-hub/content/docs/pyth-core/troubleshoot.mdx
  95. 4 0
      apps/developer-hub/content/docs/pyth-core/troubleshoot/_meta.json
  96. 44 0
      apps/developer-hub/content/docs/pyth-core/troubleshoot/evm.mdx
  97. 27 0
      apps/developer-hub/content/docs/pyth-core/troubleshoot/svm.mdx
  98. 71 0
      apps/developer-hub/content/docs/pyth-core/use-pyth-for-morpho.mdx
  99. 38 0
      apps/developer-hub/content/docs/pyth-core/use-real-time-data.mdx
  100. 13 0
      apps/developer-hub/content/docs/pyth-core/use-real-time-data/_meta.json

+ 61 - 0
apps/developer-hub/content/docs/pyth-core/_meta.json

@@ -0,0 +1,61 @@
+{
+  "documentation-home": {
+    "title": "← Documentation Home",
+    "href": "/home"
+  },
+
+  "-- Price Feeds": {
+    "title": "Price Feeds",
+    "type": "separator"
+  },
+  "index": "Introduction",
+  "getting-started": "Getting Started",
+
+  "-- Tutorials": {
+    "title": "Tutorials",
+    "type": "separator"
+  },
+
+  "create-your-first-pyth-app": "Create Your First Pyth App",
+
+  "-- How-to Guides": {
+    "title": "How-To Guides",
+    "type": "separator"
+  },
+
+  "use-real-time-data": "Use Real-Time Price Data",
+  "fetch-price-updates": "Fetch Price Updates",
+  "schedule-price-updates": "Schedule Price Updates",
+  "migrate-an-app-to-pyth": "Migrate an App to Pyth",
+  "use-pyth-for-morpho": "Use Pyth for Morpho Markets",
+  "publish-data": "Publish Data",
+  "troubleshoot": "Troubleshoot Errors",
+
+  "-- Reference Material": {
+    "title": "Reference Material",
+    "type": "separator"
+  },
+
+  "api-reference": "API Reference",
+  "price-feeds": "Price Feeds",
+  "current-fees": "Current Fees",
+  "sponsored-feeds": "Sponsored Feeds",
+  "market-hours": "Market Hours",
+  "best-practices": "Best Practices",
+  "error-codes": "Error Codes",
+  "api-instances-and-providers": "API Instances and Providers",
+  "contract-addresses": "Contract Addresses",
+  "pythnet-reference": "Pythnet Reference",
+
+  "examples": {
+    "title": "Example Applications ↗",
+    "href": "https://github.com/pyth-network/pyth-examples/tree/main/price_feeds"
+  },
+  "-- Understand Pyth": {
+    "title": "Understanding Pyth",
+    "type": "separator"
+  },
+
+  "pull-updates": "What is a Pull Oracle?",
+  "how-pyth-works": "How Pyth Works"
+}

+ 18 - 0
apps/developer-hub/content/docs/pyth-core/api-instances-and-providers.mdx

@@ -0,0 +1,18 @@
+---
+title: "Access Hermes & Pythnet RPC: Developer API Guide"
+description: >-
+  Streamline integration of Pyth Price Feeds with Hermes and Pythnet RPC. Choose
+  self-hosted or third-party instances to boost development efficiency.
+full: false
+index: false
+---
+
+# API Instances and Providers
+
+The following documentation explains how to get access to an instance of Hermes or a Pythnet RPC.
+Developers may need access to these services in order to use Pyth Price Feeds.
+Both services can be self-hosted or accessed through a third-party provider.
+See the following guides to learn more about how to access each service:
+
+- [Hermes](api-instances-and-providers/hermes)
+- [Pythnet RPC](api-instances-and-providers/pythnet-rpc)

+ 4 - 0
apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/_meta.json

@@ -0,0 +1,4 @@
+{
+  "hermes": "Hermes",
+  "pythnet-rpc": "Pythnet RPC"
+}

+ 51 - 0
apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/hermes.mdx

@@ -0,0 +1,51 @@
+---
+title: "Hermes: Open-Source Service for Pyth Price Updates"
+description: >-
+  Experience real-time Pyth price feeds with Hermes: an open-source REST and
+  streaming API. Use public endpoints or self-host for reliable, decentralized
+  data.
+full: false
+index: false
+---
+
+# Hermes
+
+Hermes is an open-source service that listens to the Pythnet and the Wormhole Network for Pyth price updates, and
+serves them via a convenient web API.
+
+Hermes allows users to easily [fetch price updates](../fetch-price-updates) via a REST API, or subscribe to server-side streaming
+updates.
+
+## Public Endpoints
+
+The Pyth Data Association operates a public endpoint for Hermes, which can be used to test integrations with Pyth
+Network:
+
+URL: https://hermes.pyth.network
+
+<InfoBox variant="warning">
+For developers building on **Aptos testnet**, **Sui testnet** or **Near testnet**, please use the Hermes Beta endpoint:
+
+URL: https://hermes-beta.pyth.network
+
+</InfoBox>
+
+For production deployments, developers integrating with Pyth Network are **strongly encouraged** to use Node Providers
+for maximum resilience and decentralization. Moreover, Hermes is designed to be self-hosted, so developers can run their own
+instance of Hermes to fetch Pyth price updates. Please note it is not recommended to use the public endpoint for production as it has rate limits.
+
+## Node Providers
+
+The following node providers offer Hermes:
+
+- [Triton](https://triton.one)
+- [P2P](https://p2p.org)
+- [extrnode](https://extrnode.com/)
+- [Liquify](https://www.liquify.io/)
+
+## Self-Hosting
+
+The Pyth Data Association provides a Helm chart for running Hermes in
+[charts](https://github.com/pyth-network/charts/tree/main/charts/hermes) repository. Please refer to the chart's readme
+for the configuration values.
+You will need a Pythnet RPC to run Hermes; see the [guide for accessing a Pythnet RPC](pythnet-rpc).

+ 21 - 0
apps/developer-hub/content/docs/pyth-core/api-instances-and-providers/pythnet-rpc.mdx

@@ -0,0 +1,21 @@
+---
+title: "Pythnet RPC: How to Access and Use for Developers"
+description: >-
+  Use Hermes to configure Pythnet RPC. Choose from trusted providers like Triton
+  or P2P, or self-host a node for secure, reliable data access.
+full: false
+index: false
+---
+
+# Pythnet RPC
+
+You will need a Pythnet RPC to run Hermes, which you can obtain from any of the Pythnet RPC
+providers below:
+
+- [Triton](https://triton.one)
+- [P2P](https://p2p.org)
+- [Blockdaemon](https://blockdaemon.com/)
+- [Figment](https://figment.io)
+
+Alternatively, you can host Pythnet RPC yourself, but this is discouraged due to the potential high cost and maintenance
+involved in operating it. If you still wish to run it, please contact the Pyth team for more information.

+ 25 - 0
apps/developer-hub/content/docs/pyth-core/api-reference.mdx

@@ -0,0 +1,25 @@
+---
+title: "Pyth API Reference: On- and Off-Chain Developer Tools"
+description: >-
+  Pyth Core’s API reference covers EVM, Aptos, CosmWasm, and Hermes. It provides
+  interactive documentation and guides for both on-chain and off-chain
+  integration.
+full: false
+index: false
+---
+
+# API Reference
+
+The API reference is a comprehensive guide to the various APIs -- both on- and off-chain -- that developers can use in their applications.
+Developers can consult this reference to better understand what methods exist and what they do.
+The API reference is interactive, so developers can try out the APIs from the website to better understand their behavior.
+
+The following on-chain contracts are documented in the API reference:
+
+- [EVM](api-reference/evm)
+- [Aptos](api-reference/aptos)
+- [CosmWasm](api-reference/cosmwasm)
+
+Hermes also has interactive API documentation hosted by the service itself:
+
+- [Hermes](https://hermes.pyth.network/docs/)

BIN
apps/developer-hub/content/docs/pyth-core/assets/Push-vs-Pull-Oracle.jpg


+ 118 - 0
apps/developer-hub/content/docs/pyth-core/best-practices.mdx

@@ -0,0 +1,118 @@
+---
+title: "Pyth Price Feeds: Best Practices for Safe Use"
+description: >-
+  Best practices for Pyth price feeds: secure fixed-point representation,
+  mitigate latency & threats, use confidence intervals, and follow futures
+  pricing guidelines.
+full: false
+index: false
+---
+
+# Best Practices
+
+This page provides some technical details about Pyth price feeds that are necessary to use them safely and correctly.
+Please read this page before using Pyth price feeds in your application.
+
+## Fixed-Point Numeric Representation
+
+Price feeds represent numbers in a fixed-point format. The same exponent is used for both the price and confidence interval. The integer representation of these values can be computed by multiplying by `10^exponent`. As an example, imagine Pyth reported the following values for AAPL/USD:
+
+| Field      | Value    |
+| ---------- | -------- |
+| `exponent` | -5       |
+| `conf`     | 1500     |
+| `price`    | 12276250 |
+
+The confidence interval is `1500 * 10^(-5) = $0.015`, and the price is `12276250 * 10^(-5) = $122.7625`.
+
+## Price Availability
+
+Sometimes, Pyth will not be able to provide a current price for a product.
+This situation can happen for various reasons.
+For example, US equity markets only trade during certain hours, and outside those hours, it's not clear what an equity's price is.
+Pyth price feeds follow the traditional market hours for each asset class. \
+Consult [Market Hours](./market-hours.md) to know the market hours for each asset class.
+
+Alternatively, a network outage (at the internet level, blockchain level, or at multiple data providers) may prevent the protocol from producing new price updates.
+(Such outages are unlikely, but integrators should still be prepared for the possibility.)
+In such cases, Pyth may return a stale price for the product.
+
+Integrators should be careful to avoid accidentally using a stale price.
+The Pyth SDKs guard against this failure mode by incorporating a staleness check by default.
+Querying the current price will fail if too much time has elapsed since the last update.
+The SDKs expose this failure condition in an idiomatic way: for example, the Rust SDK may return `None`, and the Solidity SDK may revert the transaction.
+The SDK provides a sane default for the staleness threshold, but users may configure it to suit their use case.
+
+## Adversarial selection
+
+Pull updates give users of Pyth Network some ability to select which price to use in a transaction.
+This ability is highly circumscribed by various constraints: on-chain prices must move forward in time and cannot be from too far in the past.
+However, users can still choose any price update that satisfies these constraints.
+This ability is functionally equivalent to latency: it allows users to see the price in the future before using a price from the past.
+
+The simplest way to guard against this attack vector is to incorporate a **staleness check** to ensure that the price used in a transaction is sufficiently recent.
+
+The Pyth SDK provides the [`getPriceNoOlderThan()`](https://api-reference.pyth.network/price-feeds/evm/getPriceNoOlderThan) method to help users guard against this attack vector. This method returns the most recent price update that is not older than a specified threshold.
+Highly latency-sensitive protocols may wish to reduce the threshold to a few seconds to better suit their needs.
+Please also see the section below on [latency mitigations](best-practices.md#latency) for additional ideas on how latency-sensitive protocols can minimize the impact of oracle latency.
+
+## Latency
+
+Developers integrating Pyth Network price feeds should account for the difference in latency between on-chain oracles and off-chain sources (e.g. centralized exchanges).
+Although Pyth Network is designed with low latency in mind, no on-chain oracle can match the latency of an off-chain source due to the added overhead for consensus and security.
+The threat model for integrating protocols should assume that adversaries see price changes a short time before the protocol does.
+In this threat model, protocol designers should avoid situations where a Pyth price update must race against an adversary's transaction.
+Adversaries are highly likely to win these races, as they have a head start, and sophisticated adversaries can additionally optimize their network latencies or pay miners for priority blockspace.
+
+### Latency Mitigations for Derivative Protocols[^1]
+
+Derivative protocols are encouraged to consider the following strategies to mitigate the impact of oracle latency:
+
+1. **Use Delayed Settlement**: Derivative protocols can introduce a delay between the time an order is created and the time it is executed. This delay gives the protocol time to observe price changes and reject trades/transactions that profit over latency.
+   Suppose a user submits a trade transaction at a time `t`. The protocol should execute the trade by using the price at the time `t`, which will be available to the protocol after a short delay.
+   The protocol can fetch this price update of a specific timestamp from [Hermes](https://hermes.pyth.network/docs/#/rest/timestamp_price_updates) and can use [`parsePriceFeedUpdates()`](https://api-reference.pyth.network/price-feeds/evm/parsePriceFeedUpdates) to parse the prices and submit to prevent price frontrunning.
+
+1. **Use a Spread**: Pyth provides a confidence interval for each price update. Derivative protocols can use this confidence interval to determine the range in which the true price probably lies.
+   By using the lower bound of the confidence interval, derivative protocols can protect themselves from price manipulation that drives the price down. By using the upper bound of the confidence interval, derivative protocols can protect themselves from price manipulation that drives the price up.
+
+1. **Enforce Position Holding**: Derivative protocols can enforce hold times on positions to prevent users from exploiting oracle latency.
+   For example, a protocol could require users to hold an asset or a position for a certain period before they can trade or close it.
+   This hold time gives the protocol time to observe price changes and reject trades that profit over latency.
+
+## Confidence Intervals
+
+At every point in time, Pyth publishes both a price and a confidence interval for each product. For example, Pyth may publish the current price of bitcoin as \$50000 ± \$10. Pyth publishes a confidence interval because, in real markets, there is _no one single price for a product_. For example, at any given time, bitcoin trades at different prices at different venues around the world. While these prices are typically similar, they can diverge for a number of reasons, such as when a cryptocurrency exchange blocks withdrawals on an asset. If this happens, prices diverge because arbitrageurs can no longer bring prices across exchanges into line. Alternatively, prices on different venues can differ simply because an asset is highly volatile at a particular point in time. At such times, bid/ask spreads tend to be wider, and trades on different markets at around the same time tend to occur at a wider range of prices.
+
+In a Pyth feed, each publisher specifies an interval `(p_i-c_i, p_i+c_i)` in the form of their price and confidence submission. This interval is intended to achieve 95% coverage, i.e. the publisher expresses the belief that this interval contains the “true” price with 95% probability. The resulting aggregate interval `(μ-σ, μ+σ)`, where `μ` represents the aggregate price and `σ` represents the aggregate confidence, is a good estimate of a range in which the true price lies.
+
+To explain this, consider two cases of publisher estimates. In the first case, there is 100% overlap of all the publishers’ intervals, i.e. each publisher submits the same interval `(p-c, p+c)`. In this case, the aggregate confidence interval is exactly that interval, so the aggregate confidence interval provides 100% coverage of the publishers’ intervals. This first case represents normal operating conditions, where most publishers agree about the price of an asset.
+
+In the second case, each publisher specifies an interval that is disjoint from each of the other publishers’ intervals. In this case, the aggregate confidence interval can be seen to contain at least the 25th percentile and at least the 75th percentile of the set of points consisting of each of the publisher’s price, price plus confidence, and price plus confidence. As a result, the aggregate confidence interval is somewhat analogous to an interquartile range of the data, which is a reasonable measure of the spread of a set of points. Note that this is not an IQR of the prices alone of the publishers but rather of the set composed of the 3 points that each publisher submits. Moreover, note that the IQR does not include the most extreme publishers’ prices on either side; this property is necessary to ensure that a small group of publishers cannot manipulate the aggregate confidence interval. This second case represents an atypical scenario where publishers all disagree. Such circumstances are rare but can occur during market volatility or unusual events.
+
+The aggregate confidence interval interpolates between the two cases above as publishers’ prices begin to diverge. In situations closer to case 1 where there is significant overlap of the individual publishers’ intervals, the aggregate interval `(μ-σ, μ+σ)` will capture most of the spread of the individual publishers. In the situation where the prices look more like case 2 with greater disjointness due to different views of the price across different venues, that aggregate interval may be in some eyes an imperfect measure of spread because there may be a number of individual price intervals that lie outside the aggregate interval. In this case, a protocol has a couple of options:
+
+1. It can use a discounted price in the direction favorable to it. For example, a lending protocol valuing a user’s collateral can use the lower valuation price `μ-σ`. When valuing an outstanding loan position consisting of tokens a user has borrowed from the protocol, it can use the higher end of the interval by using the price `μ+σ`. This allows the protocol to be conservative with regard to its own health and safety when making valuations.
+2. It can decide that there is too much uncertainty when `σ/μ` exceeds some threshold and choose to pause any new activity that depends on the price of this asset.
+
+To expand upon the first option, it is recommended to use the confidence interval to protect your users from these unusual market conditions. The simplest way to do so is to use Pyth's confidence interval to compute a _range_ in which the true price probably lies. This principle is common sense. Imagine that you are lending money to a friend, and your friend pledges a bitcoin as collateral. Also imagine that Pyth says the bitcoin price is \$50000 +- \$1000. (Note that \$1000 is an unusually large confidence interval for bitcoin; the confidence interval is typically \$50 dollars). You therefore calculate that the true price is between \$49000 and \$51000. When originating the loan, you would value the bitcoin at \$49000. The lower price is conservative in this instance because it limits the amount of borrowing that is possible while the price is uncertain. On the other hand, if you were to issue a loan of bitcoin, you would value the borrowed bitcoin at \$51000. The higher price is conservative, as it protects you from allowing someone to borrow in excess during times of increased volatility.
+
+The same principle would apply if you wrote a derivative contract. If someone wants to open a derivative contract with you, you would value their collateral at the lower price. However, if you were deciding whether someone's margin limits were violated, you could value their outstanding leveraged position at the higher price. If a contract needs to be settled at a price, you could take approaches such as the following:
+
+1. Using Pyth's exponential moving average price, which represents estimates of the average price of the asset over a specified time period (e.g., over the past 1 hour). The exponential moving average price is computed such that it lessens the influence of prices with wide confidence intervals. You may find more details in [EMA Price Aggregation](./how-pyth-works/ema-price-aggregation.md).
+2. Using the aggregate price, which is Pyth's best estimate of the price at a single point in time. The quality of this estimate depends on the width of the confidence interval at settlement time and on occasion, it may be imprecise. However, it is the best you can do with Pyth data if you need a single price at that exact point in time.
+3. Defining the contract to depend on confidence. For example, you could create an option that refunds the option premium to the buyer (so both sides of the transaction are even) if the strike price is within the confidence interval at settlement time. You could also create a contract that delayed settlement until the confidence interval was sufficiently small. If you choose this second option, you should ensure that your contract is guaranteed to eventually settle even if the confidence interval never narrows.
+
+## Pricing Futures-Based Assets
+
+For assets like commodities, interest rates, and even volatility indices, pricing is primarily derived from futures contracts. These contracts form a series of prices for different delivery dates, collectively known as the futures curve. While the **front-month contract** is the most actively traded and often seen as the benchmark, it **doesn't** represent the current price of the asset but rather a proxy of the near-term price of the asset at the time of delivery.
+
+This reliance on futures, in the absence of a native spot price, means that market expectations, logistical constraints, amongst other factors can heavily influence the front-month price.
+For example, in times of extreme market stress, the front-month contract turn **negative** when traders avoid delivery, distorting its usefulness as a representative market signal. This happened in the case of the 2020 oil crash, where the front-month price of WTI Crude oil turned negative due to a lack of storage capacity, making applications that rely exclusively on the front-month price unreliable.
+
+Thus it is important that each contract **should have a weighted stratergy** based on the their expiration dates. As the front month approaches expiry, least weight should be allocated on this contract and the weights of the other contracts are determined proportionally. A daily re-adjusted strategy should be applied by the end user of the price feeds.
+
+##
+
+[^1]:
+    _The strategies and methodologies outlined in this page, including those addressing price latency mitigation, are provided solely for informational purposes and might not fully eliminate the discussed problems. Do your own research before using them. \
+    Refer to [Terms of Use](https://www.pyth.network/terms-of-use) for more information._

+ 28 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses.mdx

@@ -0,0 +1,28 @@
+---
+title: Pyth Contract Addresses for Multiple Blockchains
+description: >-
+  Discover Pyth Price Feed contract addresses for EVM, Solana, Aptos, and more.
+  Visit our Developer Hub for quick access to your blockchain’s address.
+full: false
+index: false
+---
+
+# Contract Addresses
+
+The following sections list the addresses of deployed Pyth Price Feed contracts across blockchains.
+The contracts are split by ecosystem into several different documents:
+
+- [EVM](contract-addresses/evm)
+- [Solana/SVM](contract-addresses/solana)
+- [Aptos](contract-addresses/aptos)
+- [Sui](contract-addresses/sui)
+- [IOTA](contract-addresses/iota)
+- [Movement](contract-addresses/movement)
+- [TON](contract-addresses/ton)
+- [Fuel](contract-addresses/fuel)
+- [CosmWasm](contract-addresses/cosmwasm)
+- [NEAR](contract-addresses/near)
+- [Starknet](contract-addresses/starknet)
+- [Pythnet](contract-addresses/pythnet)
+
+Please see the relevant ecosystem document to find the Pyth contract address on your blockchain of choice.

+ 14 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/_meta.json

@@ -0,0 +1,14 @@
+{
+  "evm": "EVM",
+  "solana": "Solana / SVM",
+  "aptos": "Aptos",
+  "sui": "Sui",
+  "iota": "IOTA",
+  "movement": "Movement",
+  "ton": "TON",
+  "fuel": "Fuel",
+  "cosmwasm": "CosmWasm",
+  "near": "NEAR",
+  "starknet": "Starknet",
+  "pythnet": "Pythnet"
+}

+ 22 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/aptos.mdx

@@ -0,0 +1,22 @@
+---
+title: "Aptos Pyth Contract Addresses (Mainnet, Testnet, Devnet)"
+description: >-
+  Browse Pyth’s Aptos contract addresses on Mainnet, Testnet, and Devnet with
+  direct links to Pyth, Wormhole, and the Deployer for quick reference.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Price Feed Contract Addresses on Aptos
+
+Pyth is currently deployed on Aptos Mainnet, Aptos Testnet, and Movement devnet.
+
+When deploying contracts using Pyth, the [named addresses](https://diem.github.io/move/address.html#named-addresses) `pyth`, `wormhole` and `deployer` need to be defined at compile time. These addresses are the same across both Aptos Mainnet and Testnet:
+
+| Named Address | Value                                                                                                                                                                                               |
+| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `pyth`        | <CopyAddress address={`0x7e783b349d3e89cf5931af376ebeadbfab855b3fa239b7ada8f5a92fbea6b387`} url="https://aptscan.ai/accounts/0x7e783b349d3e89cf5931af376ebeadbfab855b3fa239b7ada8f5a92fbea6b387" /> |
+| `wormhole`    | <CopyAddress address={`0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625`} url="https://aptscan.ai/accounts/0x5bc11445584a763c1fa7ed39081f1b920954da14e04b32440cba863d03e19625" /> |
+| `deployer`    | <CopyAddress address={`0xb31e712b26fd295357355f6845e77c888298636609e93bc9b05f0f604049f434`} url="https://aptscan.ai/accounts/0xb31e712b26fd295357355f6845e77c888298636609e93bc9b05f0f604049f434" /> |

+ 38 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/cosmwasm.mdx

@@ -0,0 +1,38 @@
+---
+title: Price Feed Contract Addresses on CosmWasm Networks
+description: >-
+  Find Pyth contract addresses on CosmWasm networks—mainnets and testnets across
+  multiple chains. Access your network’s address instantly.
+full: false
+index: false
+---
+
+# Price Feed Contract Addresses on CosmWasm Networks
+
+Pyth is currently available on the following cosmwasm chains:
+
+### Stable
+
+| Network           | Contract address                                                     |
+| ----------------- | -------------------------------------------------------------------- |
+| Injective Mainnet | `inj12j43nf2f0qumnt2zrrmpvnsqgzndxefujlvr08`                         |
+| Osmosis Mainnet   | `osmo13ge29x4e2s63a8ytz2px8gurtyznmue4a69n5275692v3qn3ks8q7cwck7`    |
+| Neutron Mainnet   | `neutron1m2emc93m9gpwgsrsf2vylv9xvgqh654630v7dfrhrkmr5slly53spg85wv` |
+| Xion Mainnet      | `xion18nsqwhfwnqzs4vkxdr02x40awm0gz9pl0wn4ecsl8qqra2vxqppq57qx5a`    |
+| Osmosis Test 5    | `osmo1hpdzqku55lmfmptpyj6wdlugqs5etr6teqf7r4yqjjrxjznjhtuqqu5kdh`    |
+| Sei Atlantic 2    | `sei1w2rxq6eckak47s25crxlhmq96fzjwdtjgdwavn56ggc0qvxvw7rqczxyfy`     |
+| Sei Pacific 1     | `sei15d2tyq2jzxmpg32y3am3w62dts32qgzmds9qnr6c87r0gwwr7ynqal0x38`     |
+| Neutron Pion 1    | `neutron15ldst8t80982akgr8w8ekcytejzkmfpgdkeq4xgtge48qs7435jqp87u3t` |
+| Juno              | `juno1eacsrua27njc35pxz37y97gmcjs899t59f8pf0rkejjyvtmhws5q6lxsdd`    |
+| Xion testnet 2    | `xion1wptw89weav8tnpgxg4fyhcahgk8yy99lka3w308536ktadkvjwxqe463hl`    |
+
+### Beta
+
+| Network        | Contract address                                                     |
+| -------------- | -------------------------------------------------------------------- |
+| Injective      | `inj18rlflp3735h25jmjx97d22c72sxk260amdjxlu`                         |
+| Osmosis Test 5 | `osmo1lltupx02sj99suakmuk4sr4ppqf34ajedaxut3ukjwkv6469erwqtpg9t3`    |
+| Sei Atlantic 2 | `sei1kpntez76v38yuxhhaaahdmvjxnr5tkr8tq077smefs7uw70rj5yqw2aewy`     |
+| Neutron Pion 1 | `neutron16zwrmx3zgggmxhzau86xfycm42cr4sj888hdvzsxya3qarp6zhhqzhlkvz` |
+| Juno           | `juno1h93q9kwlnfml2gum4zj54al9w4jdmuhtzrh6vhycnemsqlqv9l9snnznxs`    |
+| Rol            | `rol1pvrwmjuusn9wh34j7y520g8gumuy9xtl3gvprlljfdpwju3x7ucszdyfs8`     |

+ 199 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/evm.mdx

@@ -0,0 +1,199 @@
+---
+title: Pyth Networks EVM Contract Addresses & Price Feed IDs
+description: >-
+  Browse Pyth’s EVM contract addresses for mainnet and testnet, with direct
+  explorer links—stay up to date on all network deployments.
+full: false
+index: false
+---
+
+# Price Feed Contract Addresses on EVM Networks
+
+Pyth is currently available on the EVM networks below using Pyth Stable price sources that are accessible via Hermes Stable.
+
+## Mainnets
+
+| Network               | Contract address                                                                                                                          |
+| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
+| Abstract              | [`0x8739d5024B5143278E2b15Bd9e7C26f6CEc658F1`](https://abscan.org/address/0x8739d5024B5143278E2b15Bd9e7C26f6CEc658F1)                     |
+| Apechain              | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://apechain.calderaexplorer.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)   |
+| Arbitrum              | [`0xff1a0f4744e8582DF1aE09D5611b887B6a12925C`](https://arbiscan.io/address/0xff1a0f4744e8582df1ae09d5611b887b6a12925c)                    |
+| Aurora                | [`0xF89C7b475821EC3fDC2dC8099032c05c6c0c9AB9`](https://explorer.aurora.dev/address/0xF89C7b475821EC3fDC2dC8099032c05c6c0c9AB9)            |
+| Avalanche             | [`0x4305FB66699C3B2702D4d05CF36551390A4c69C6`](https://snowtrace.io/address/0x4305fb66699c3b2702d4d05cf36551390a4c69c6)                   |
+| Berachain             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://berascan.com/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                   |
+| Bittensor             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://evm.taostats.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                |
+| Blast                 | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://blastscan.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                   |
+| BNB                   | [`0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594`](https://bscscan.com/address/0x4d7e825f80bdf85e913e0dd2a2d54927e9de1594)                    |
+| BTTC                  | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://bttcscan.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                   |
+| Base                  | [`0x8250f4aF4B972684F7b336503E2D6dFeDeB1487a`](https://basescan.org/address/0x8250f4aF4B972684F7b336503E2D6dFeDeB1487a)                   |
+| Boba                  | [`0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF`](https://bobascan.com/address/0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF)                   |
+| Canto                 | [`0x98046Bd286715D3B0BC227Dd7a956b83D8978603`](https://canto.dex.guru/address/0x78357316239040e19fc823372cc179ca75e64b81)                 |
+| Celo                  | [`0xff1a0f4744e8582DF1aE09D5611b887B6a12925C`](https://celoscan.io/address/0xff1a0f4744e8582df1ae09d5611b887b6a12925c)                    |
+| Chiliz                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://scan.chiliz.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                |
+| Conflux eSpace        | [`0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc`](https://evm.confluxscan.io/address/0xe9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc)             |
+| Core DAO              | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://scan.coredao.org/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)               |
+| Cronos                | [`0xE0d0e68297772Dd5a1f1D99897c581E2082dbA5B`](https://cronoscan.com/address/0xe0d0e68297772dd5a1f1d99897c581e2082dba5b)                  |
+| Cronos zkEVM          | [`0x056f829183Ec806A78c26C98961678c24faB71af`](https://explorer.zkevm.cronos.org/address/0x056f829183ec806a78c26c98961678c24fab71af)      |
+| EOS                   | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.evm.eosnetwork.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)    |
+| EVMOS                 | [`0x354bF866A4B006C9AF9d9e06d9364217A8616E12`](https://www.mintscan.io/evmos/evm/contract/0x354bF866A4B006C9AF9d9e06d9364217A8616E12)     |
+| Ethereum              | [`0x4305FB66699C3B2702D4d05CF36551390A4c69C6`](https://etherscan.io/address/0x4305fb66699c3b2702d4d05cf36551390a4c69c6)                   |
+| Etherlink             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.etherlink.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)         |
+| Eventum               | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.evedex.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)            |
+| Fantom                | [`0xff1a0f4744e8582DF1aE09D5611b887B6a12925C`](https://explorer.fantom.network/address/0xff1a0f4744e8582DF1aE09D5611b887B6a12925C)        |
+| Filecoin              | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://filfox.info/en/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                 |
+| Flow                  | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://evm.flowscan.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                |
+| Gnosis                | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://gnosisscan.io/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                  |
+| Gravity               | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.gravity.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)           |
+| Hedera                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://hashscan.io/mainnet/contract/0.0.4622850)                                          |
+| Hemi                  | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer-b81c3bd8.hemi.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)     |
+| Horizen EON           | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://eon-explorer.horizenlabs.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)    |
+| HyperEVM              | [`0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc`](https://purrsec.com/address/0xe9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc)                    |
+| XCHAIN (IDEX) Mainnet | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://xchain-explorer.kuma.bid/address/0x2880aB155794e7179c9eE2e38200202908C17B43)       |
+| Injective inEVM       | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://inevm.calderaexplorer.xyz/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)      |
+| Ink                   | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.inkonchain.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)        |
+| Iota                  | [`0x8D254a21b3C86D32F7179855531CE99164721933`](https://explorer.evm.iota.org/address/0x8D254a21b3C86D32F7179855531CE99164721933)          |
+| Kava                  | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.kava.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)               |
+| KCC                   | [`0xE0d0e68297772Dd5a1f1D99897c581E2082dbA5B`](https://explorer.kcc.io/en/address/0xe0d0e68297772dd5a1f1d99897c581e2082dba5b)             |
+| Kinto                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://kintoscan.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                   |
+| Kaia                  | [`0x2880ab155794e7179c9ee2e38200202908c17b43`](https://kaiascan.io/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                    |
+| LightLink Phoenix     | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://phoenix.lightlink.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)           |
+| Linea                 | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.linea.build/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)           |
+| Manta                 | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://pacific-explorer.manta.network/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729) |
+| Mantle                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://mantlescan.info/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                |
+| Merlin                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://scan.merlinchain.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)            |
+| Meter                 | [`0xbFe3f445653f2136b2FD1e6DdDb5676392E3AF16`](https://scan.meter.io/address/0xbfe3f445653f2136b2fd1e6dddb5676392e3af16)                  |
+| Mode                  | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.mode.network/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)          |
+| Morph                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.morphl2.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)            |
+| Neon                  | [`0x7f2dB085eFC3560AFF33865dD727225d91B4f9A5`](https://neonscan.org/address/0x7f2dB085eFC3560AFF33865dD727225d91B4f9A5)                   |
+| OpBNB                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://opbnbscan.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                  |
+| Optimism              | [`0xff1a0f4744e8582DF1aE09D5611b887B6a12925C`](https://optimistic.etherscan.io/address/0xff1a0f4744e8582df1ae09d5611b887b6a12925c)        |
+| Polygon               | [`0xff1a0f4744e8582DF1aE09D5611b887B6a12925C`](https://polygonscan.com/address/0xff1a0f4744e8582df1ae09d5611b887b6a12925c)                |
+| Polygon zkEVM         | [`0xC5E56d6b40F3e3B5fbfa266bCd35C37426537c65`](https://zkevm.polygonscan.com/address/0xc5e56d6b40f3e3b5fbfa266bcd35c37426537c65)          |
+| Polynomial            | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.polynomial.fi/address/0x2880aB155794e7179c9eE2e38200202908C17B43)         |
+| Ronin                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://app.roninchain.com/address/0x2880ab155794e7179c9ee2e38200202908c17b43)             |
+| Scroll                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://blockscout.scroll.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)           |
+| Superseed             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer.superseed.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)         |
+| Sei EVM               | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://seitrace.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43?chain=pacific-1)   |
+| Shimmer               | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.evm.shimmer.network/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)   |
+| Skate                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://scan.skatechain.org/address/0x2880aB155794e7179c9eE2e38200202908C17B43)            |
+| Sonic                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://sonicscan.org/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                  |
+| Soneium               | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://soneium.blockscout.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)         |
+| Story Protocol        | [`0xD458261E832415CFd3BAE5E416FdF3230ce6F134`](https://www.storyscan.xyz/address/0xD458261E832415CFd3BAE5E416FdF3230ce6F134)              |
+| Swellchain            | [`0xDd24F84d36BF92C65F92307595335bdFab5Bbd21`](https://explorer.swellnetwork.io/address/0xDd24F84d36BF92C65F92307595335bdFab5Bbd21)       |
+| Taiko                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://taikoscan.network/address/0x2880aB155794e7179c9eE2e38200202908C17B43)              |
+| Unichain              | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://uniscan.xyz/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                    |
+| Viction               | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://tomoscan.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                    |
+| WEMIX                 | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer.wemix.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)             |
+| Worldchain            | [`0xe9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc`](https://worldscan.org/address/0xe9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc)                  |
+| ZKFair                | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://scan.zkfair.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                 |
+| zkSync Era            | [`0xf087c864AEccFb6A2Bf1Af6A0382B0d0f6c5D834`](https://explorer.zksync.io/address/0xf087c864AEccFb6A2Bf1Af6A0382B0d0f6c5D834)             |
+| zetachain             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://zetachain.blockscout.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)       |
+
+## Testnets
+
+| Network                           | Contract address                                                                                                                                                             |
+| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Abstract testnet                  | [`0x47F2A9BDAd52d65b66287253cf5ca0D2b763b486`](https://explorer.testnet.abs.xyz/address/0x47F2A9BDAd52d65b66287253cf5ca0D2b763b486)                                          |
+| ApeChain (testnet)                | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://curtis.explorer.caldera.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                       |
+| Arbitrum Blueberry (testnet)      | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://arb-blueberry.gelatoscout.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                     |
+| Arbitrum Sepolia (testnet)        | [`0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF`](https://sepolia-explorer.arbitrum.io/address/0x4374e5a8b9C22271E9EB878A2AA31DE97DF15DAF)                                      |
+| Aurora testnet                    | [`0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E`](https://explorer.testnet.aurora.dev/address/0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E)                                       |
+| BNB testnet                       | [`0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb`](https://testnet.bscscan.com/address/0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb)                                               |
+| BTTC testnet                      | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://testnet.bttcscan.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                              |
+| Base Sepolia (testnet)            | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://base-sepolia.blockscout.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                       |
+| Berachain Bepolia testnet         | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://bepolia.beratrail.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                              |
+| Bittensor testnet                 | [`0x41955476936DdA8d0fA98b8d1778172F7E4fCcA1`]()                                                                                                                             |
+| Blast Sepolia                     | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://testnet.blastscan.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                              |
+| Ble testnet                       | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer-ethena-testnet-0.t.conduit.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                           |
+| Boba Goerli (testnet)             | [`0x8D254a21b3C86D32F7179855531CE99164721933`](https://testnet.bobascan.com/address/0x8D254a21b3C86D32F7179855531CE99164721933)                                              |
+| Boba Sepolia (testnet)            | [`0x8D254a21b3C86D32F7179855531CE99164721933`](https://28882.testnet.routescan.io/address/0x8D254a21b3C86D32F7179855531CE99164721933)                                        |
+| Canto testnet                     | [`0x26DD80569a8B23768A1d80869Ed7339e07595E85`](https://testnet-explorer.canto.neobase.one/address/0x26DD80569a8B23768A1d80869Ed7339e07595E85)                                |
+| Celo Alfajores (testnet)          | [`0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E`](https://explorer.celo.org/alfajores/address/0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E)                                       |
+| Chiado (Gnosis testnet)           | [`0x98046Bd286715D3B0BC227Dd7a956b83D8978603`](https://blockscout.com/gnosis/chiado/address/0x98046Bd286715D3B0BC227Dd7a956b83D8978603)                                      |
+| Chiliz testnet                    | [`0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509`](https://spicy-explorer.chiliz.com/address/0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509)                                         |
+| Conflux eSpace testnet            | [`0xDd24F84d36BF92C65F92307595335bdFab5Bbd21`](https://evmtestnet.confluxscan.io/address/0xDd24F84d36BF92C65F92307595335bdFab5Bbd21)                                         |
+| Core DAO testnet                  | [`0x8D254a21b3C86D32F7179855531CE99164721933`](https://scan.test.btcs.network/address/0x8D254a21b3C86D32F7179855531CE99164721933)                                            |
+| Converge testnet                  | [`0x87047526937246727E4869C5f76A347160e08672`](https://explorer-converge-testnet-1.t.conduit.xyz/address/0x87047526937246727E4869C5f76A347160e08672)                         |
+| Cronos testnet                    | [`0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320`](https://cronos.org/explorer/testnet3/address/0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320)                                      |
+| Cronos zkEVM Testnet              | [`0xB1DB1498902F08E16E11F1a423ec9CCB9537E1D6`](https://explorer.zkevm.cronos.org/testnet/address/0xb1db1498902f08e16e11f1a423ec9ccb9537e1d6)                                 |
+| Dela Deperp Testnet               | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://sepolia-delascan.deperp.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                       |
+| Dela Deperp Mithreum Testnet      | [`0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc`](https://mithreum-sepolia.deperp.com/address/0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc)                                       |
+| EOS testnet                       | [`0x0708325268dF9F66270F1401206434524814508b`](https://explorer.testnet.evm.eosnetwork.com/address/0x0708325268dF9F66270F1401206434524814508b)                               |
+| Etherlink testnet                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.explorer.etherlink.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                    |
+| Eventum testnet                   | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet-blockscout.eh-dev.app/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                     |
+| EVMOS testnet                     | [`0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E`](https://evm.evmos.dev/address/0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E)                                                     |
+| Fantom testnet                    | [`0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb`](https://testnet.ftmscan.com/address/0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb)                                               |
+| Filecoin calibration              | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://calibration.filfox.info/en/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                        |
+| Flow Testnet                      | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://evm-testnet.flowscan.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                           |
+| Fuji (Avalanche testnet)          | [`0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509`](https://testnet.snowtrace.io/address/0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509)                                              |
+| Hedera testnet                    | [`0xa2aa501b19aff244d90cc15a4cf739d2725b5729`](https://hashscan.io/testnet/contract/0.0.3042133)                                                                             |
+| Hemi testnet                      | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.explorer.hemi.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                         |
+| HyperEVM testnet                  | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.purrsec.com/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                                               |
+| XCHAIN (IDEX) testnet             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://xchain-testnet-explorer.kuma.bid/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                  |
+| Injective inEVM testnet           | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://inevm-testnet.explorer.caldera.xyz/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                |
+| Kakarot Sepolia testnet           | [`0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc`](https://sepolia.kakarotscan.org/address/0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc)                                           |
+| Kava testnet                      | [`0xfA25E653b44586dBbe27eE9d252192F0e4956683`](https://explorer.testnet.kava.io/address/0xfA25E653b44586dBbe27eE9d252192F0e4956683)                                          |
+| KCC testnet                       | [`0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E`](https://scan-testnet.kcc.network/address/0x74f09cb3c7e2A01865f424FD14F6dc9A14E3e94E)                                          |
+| Klaytn                            | [`0x2880ab155794e7179c9ee2e38200202908c17b43`](https://baobab.klaytnfinder.io/account/0x2880aB155794e7179c9eE2e38200202908C17B43)                                            |
+| Injective EVM                     | [`0x2880ab155794e7179c9ee2e38200202908c17b43`](https://k8s.testnet.evm.blockscout.injective.network/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                      |
+| Ink Sepolia                       | [`0x2880ab155794e7179c9ee2e38200202908c17b43`](https://explorer-sepolia.inkonchain.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                   |
+| Kaia testnet                      | [`0x2880ab155794e7179c9ee2e38200202908c17b43`](https://kairos.kaiascan.io/address/0x2880ab155794e7179c9ee2e38200202908c17b43?tabId=txList&page=1)                            |
+| LightLink Pegasus                 | [`0x5D289Ad1CE59fCC25b6892e7A303dfFf3a9f7167`](https://pegasus.lightlink.io/address/0x5D289Ad1CE59fCC25b6892e7A303dfFf3a9f7167)                                              |
+| Linea Goerli                      | [`0xdF21D137Aadc95588205586636710ca2890538d5`](https://goerli.lineascan.build/address/0xdF21D137Aadc95588205586636710ca2890538d5)                                            |
+| Linea Sepolia                     | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://sepolia.lineascan.build/address/0xa2aa501b19aff244d90cc15a4cf739d2725b5729)                                           |
+| Manta testnet                     | [`0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c`](https://pacific-explorer.testnet.manta.network/address/0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c)                            |
+| Manta Sepolia                     | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://pacific-explorer.sepolia-testnet.manta.network/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                    |
+| Mantle sepolia                    | [`0x98046Bd286715D3B0BC227Dd7a956b83D8978603`](https://explorer.sepolia.mantle.xyz/address/0x98046Bd286715D3B0BC227Dd7a956b83D8978603)                                       |
+| MegaEth Testnet                   | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://www.megaexplorer.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                              |
+| Merlin testnet                    | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://testnet-scan.merlinchain.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                       |
+| Merlin testnet V2                 | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://testnet-scan-v2.merlinchain.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                    |
+| Meter testnet                     | [`0x5a71C07a0588074443545eE0c08fb0375564c3E4`](https://scan-warringstakes.meter.io/address/0x5a71C07a0588074443545eE0c08fb0375564c3E4)                                       |
+| Mode testnet                      | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://sepolia.explorer.mode.network/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                     |
+| Monad testnet                     | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.monadexplorer.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                         |
+| Monad testnet - beta oracle       | [`0xad2B52D2af1a9bD5c561894Cdd84f7505e1CD0B5`](https://testnet.monadexplorer.com/address/0xad2B52D2af1a9bD5c561894Cdd84f7505e1CD0B5)                                         |
+| Morph Holesky testnet             | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://explorer-holesky.morphl2.io/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                       |
+| Morph testnet                     | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://explorer-testnet.morphl2.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                       |
+| Mumbai (Polygon testnet)          | [`0xFC6bd9F9f0c6481c6Af3A7Eb46b296A5B85ed379`](https://mumbai.polygonscan.com/address/0xFC6bd9F9f0c6481c6Af3A7Eb46b296A5B85ed379)                                            |
+| Neon devnet                       | [`0x0708325268dF9F66270F1401206434524814508b`](https://devnet.neonscan.org/address/0x0708325268dF9F66270F1401206434524814508b)                                               |
+| Olive Testnet                     | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://olive-network-testnet.explorer.caldera.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                        |
+| OpBNB Testnet                     | [`0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c`](https://testnet.opbnbscan.com/address/0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c)                                             |
+| Optimism Goerli (testnet)         | [`0xDd24F84d36BF92C65F92307595335bdFab5Bbd21`](https://goerli-optimism.etherscan.io/address/0xDd24F84d36BF92C65F92307595335bdFab5Bbd21)                                      |
+| Optimism Sepolia (testnet)        | [`0x0708325268dF9F66270F1401206434524814508b`](https://optimism-sepolia.blockscout.com/address/0x0708325268dF9F66270F1401206434524814508b)                                   |
+| Optimism Celestia Raspberry       | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://opcelestia-raspberry.gelatoscout.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                              |
+| Orange Avalanche Subnet (testnet) | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://subnets-test.avax.network/orangetest/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                              |
+| Polygon Amoy testnet              | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://www.oklink.com/amoy/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                                               |
+| Polygon Blackberry testnet        | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://polygon-blackberry.gelatoscout.com/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                |
+| Polygon zkEVM testnet             | [`0xFf255f800044225f54Af4510332Aa3D67CC77635`](https://testnet-zkevm.polygonscan.com/address/0xFf255f800044225f54Af4510332Aa3D67CC77635)                                     |
+| Polynomial testnet                | [`0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509`](https://explorerl2new-polynomial-network-testnet-x0tryg8u1c.t.conduit.xyz/address/0x23f0e8FAeE7bbb405E7A7C3d60138FCfd43d7509) |
+| Reya testnet                      | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://reya-cronos.blockscout.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                        |
+| Saigon (Ronin testnet)            | [`0xEbe57e8045F2F230872523bbff7374986E45C486`](https://saigon-app.roninchain.com/address/0xEbe57e8045F2F230872523bbff7374986E45C486)                                         |
+| Sei EVM testnet                   | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://seitrace.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43?chain=atlantic-2)                                     |
+| Scroll Sepolia                    | [`0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c`](https://sepolia-blockscout.scroll.io/address/0x41c9e39574F40Ad34c79f1C99B66A45eFB830d4c)                                      |
+| Sepolia (Ethereum testnet)        | [`0xDd24F84d36BF92C65F92307595335bdFab5Bbd21`](https://sepolia.etherscan.io/address/0xDd24F84d36BF92C65F92307595335bdFab5Bbd21)                                              |
+| Shimmer testnet                   | [`0x8D254a21b3C86D32F7179855531CE99164721933`](https://explorer.evm.testnet.shimmer.network/address/0x8D254a21b3C86D32F7179855531CE99164721933)                              |
+| Skate testnet                     | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://testnet.skalenodes.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                            |
+| Soneium (testnet)                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://soneium-minato.blockscout.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                     |
+| Sonic Blaze Testnet               | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://blaze.soniclabs.com/address/0x2880ab155794e7179c9ee2e38200202908c17b43)                                               |
+| Story Testnet                     | [`0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320`](https://aeneid.storyscan.xyz/address/0x36825bf3Fbdf5a29E2d5148bfe7Dcf7B5639e320)                                              |
+| Superseed Testnet                 | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://sepolia-explorer.superseed.xyz/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                    |
+| Swellchain Testnet                | [`0x26DD80569a8B23768A1d80869Ed7339e07595E85`](https://swell-testnet-explorer.alt.technology/address/0x26DD80569a8B23768A1d80869Ed7339e07595E85)                             |
+| Tabi Testnet                      | [`0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb`](https://testnetv2.tabiscan.com/address/0x5744Cbf430D99456a0A8771208b674F27f8EF0Fb)                                            |
+| Taiko Hekla                       | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://hekla.taikoscan.network/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                           |
+| Unichain Sepolia                  | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://unichain-sepolia.blockscout.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                                   |
+| Viction testnet                   | [`0x5D289Ad1CE59fCC25b6892e7A303dfFf3a9f7167`](https://testnet.tomoscan.io/address/0x5D289Ad1CE59fCC25b6892e7A303dfFf3a9f7167)                                               |
+| WEMIX testnet                     | [`0x26DD80569a8B23768A1d80869Ed7339e07595E85`](https://explorer.test.wemix.com/address/0x26DD80569a8B23768A1d80869Ed7339e07595E85)                                           |
+| Worldchain testnet                | [`0x2880aB155794e7179c9eE2e38200202908C17B43`](https://worldchain-sepolia.explorer.alchemy.com/address/0x2880aB155794e7179c9eE2e38200202908C17B43)                           |
+| ZKFair testnet                    | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://testnet-scan.zkfair.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729)                                            |
+| zetachain testnet                 | [`0x0708325268dF9F66270F1401206434524814508b`](https://explorer.zetachain.com/address/0x0708325268dF9F66270F1401206434524814508b)                                            |
+| zkSync Era Goerli (testnet)       | [`0x8739d5024B5143278E2b15Bd9e7C26f6CEc658F1`](https://goerli.explorer.zksync.io/address/0x8739d5024B5143278E2b15Bd9e7C26f6CEc658F1)                                         |
+| zkSync Era Sepolia (testnet)      | [`0x056f829183Ec806A78c26C98961678c24faB71af`](https://sepolia.explorer.zksync.io/address/0x056f829183Ec806A78c26C98961678c24faB71af)                                        |
+
+Pyth is available on the following network using Pyth Beta price sources:
+
+| Network              | Contract address                                                                                                                        |
+| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
+| Horizen GOBI testnet | [`0xA2aa501b19aff244D90cc15a4Cf739D2725B5729`](https://gobi-explorer.horizenlabs.io/address/0xA2aa501b19aff244D90cc15a4Cf739D2725B5729) |
+
+## Price Feed IDs
+
+The price feed IDs for EVM chains are available [here](https://pyth.network/developers/price-feed-ids#pyth-evm-stable)

+ 19 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/fuel.mdx

@@ -0,0 +1,19 @@
+---
+title: Pyth Fuel Contract Addresses | Mainnet & Testnet
+description: >-
+  Instantly access Pyth Core Fuel Mainnet and Testnet price feed addresses with
+  direct links and one-click copy for seamless verification.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Price Feed Contract Addresses on Fuel
+
+Pyth is currently deployed on Fuel Mainnet and Fuel Testnet.
+
+| Network      | Contract address                                                                                                                                                                                                  |
+| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Fuel Mainnet | <CopyAddress address={`0x1c86fdd9e0e7bc0d2ae1bf6817ef4834ffa7247655701ee1b031b52a24c523da`} url="https://app.fuel.network/contract/0x1c86fdd9e0e7bc0d2ae1bf6817ef4834ffa7247655701ee1b031b52a24c523da" />         |
+| Fuel Testnet | <CopyAddress address={`0x25146735b29d4216639f7f8b1d7b921ff87a1d3051de62d6cceaacabeb33b8e7`} url="https://app-testnet.fuel.network/contract/0x25146735b29d4216639f7f8b1d7b921ff87a1d3051de62d6cceaacabeb33b8e7" /> |

+ 28 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/iota.mdx

@@ -0,0 +1,28 @@
+---
+title: "IOTA Contract Addresses: Pyth & Wormhole Testnet/Mainnet"
+description: >-
+  Provides Pyth and Wormhole contract addresses for IOTA testnet and mainnet,
+  with explorer links for each key ID to facilitate cross-chain integration.
+full: false
+index: false
+---
+
+# Price Feed Contract Addresses on IOTA
+
+#### IOTA testnet
+
+| Name                | Address                                                                                                                                                                                     |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Pyth State ID       | [`0x68dda579251917b3db28e35c4df495c6e664ccc085ede867a9b773c8ebedc2c1`](https://explorer.iota.org/object/0x68dda579251917b3db28e35c4df495c6e664ccc085ede867a9b773c8ebedc2c1?network=testnet) |
+| Pyth Package ID     | [`0x23994dd119480ea614f7623520337058dca913cb1bb6e5d8d51c7b067d3ca3bb`](https://explorer.iota.org/object/0x23994dd119480ea614f7623520337058dca913cb1bb6e5d8d51c7b067d3ca3bb?network=testnet) |
+| Wormhole State ID   | [`0x8bc490f69520a97ca1b3de864c96aa2265a0cf5d90f5f3f016b2eddf0cf2af2b`](https://explorer.iota.org/object/0x8bc490f69520a97ca1b3de864c96aa2265a0cf5d90f5f3f016b2eddf0cf2af2b?network=testnet) |
+| Wormhole Package ID | [`0xfca58c557f09cddb7930588c4e2a4edbe3cdded1ac1ed2270aa2dfa8d2b9ae0d`](https://explorer.iota.org/object/0xfca58c557f09cddb7930588c4e2a4edbe3cdded1ac1ed2270aa2dfa8d2b9ae0d?network=testnet) |
+
+#### IOTA mainnet
+
+| Name                | Address                                                                                                                                                                     |
+| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Pyth State ID       | [`0x6bc33855c7675e006f55609f61eebb1c8a104d8973a698ee9efd3127c210b37f`](https://explorer.iota.org/object/0x6bc33855c7675e006f55609f61eebb1c8a104d8973a698ee9efd3127c210b37f) |
+| Pyth Package ID     | [`0x7792c84e1f8683dac893126712f7cf3ba5fcc82450839f0a481215f60199769f`](https://explorer.iota.org/object/0x7792c84e1f8683dac893126712f7cf3ba5fcc82450839f0a481215f60199769f) |
+| Wormhole State ID   | [`0xd43b448afc9dd01deb18273ec39d8f27ddd4dd46b0922383874331771b70df73`](https://explorer.iota.org/object/0xd43b448afc9dd01deb18273ec39d8f27ddd4dd46b0922383874331771b70df73) |
+| Wormhole Package ID | [`0x88b00a6f1d56966d48680ffad3b42d7a25b01c519b73732a0858e0314a960801`](https://explorer.iota.org/object/0x88b00a6f1d56966d48680ffad3b42d7a25b01c519b73732a0858e0314a960801) |

+ 29 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/movement.mdx

@@ -0,0 +1,29 @@
+---
+title: Movement Network Contract Addresses for Pyth Mainnet
+description: >-
+  Discover Pyth Movement’s key contract addresses—Pyth, Wormhole, and
+  Deployer—and access direct explorer links. Integrate and verify effortlessly
+  on mainnet.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Price Feed Contract Addresses on Movement
+
+Pyth is currently deployed on the following Movement networks.
+
+- [Mainnet](#mainnet)
+
+## Mainnet
+
+Use the following addresses for the Movement Mainnet and testnets:
+
+| Named Address | Value                                                                                                                                                                                                             |
+| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `pyth`        | <CopyAddress address={`0x9357e76fe965c9956a76181ee49f66d51b7f9c3800182a944ed96be86301e49f`} url="https://explorer.movementlabs.xyz/account/0x9357e76fe965c9956a76181ee49f66d51b7f9c3800182a944ed96be86301e49f" /> |
+| `wormhole`    | <CopyAddress address={`0x9236893d6444b208b7e0b3e8d4be4ace90b6d17817ab7d1584e46a33ef5c50c9`} url="https://explorer.movementlabs.xyz/account/0x9236893d6444b208b7e0b3e8d4be4ace90b6d17817ab7d1584e46a33ef5c50c9" /> |
+| `deployer`    | <CopyAddress address={`0xa3ad2d9c8114b9a4fe97d45b7a9d3c731148d936b0f5dd396fc20a53a11a70da`} url="https://explorer.movementlabs.xyz/account/0xa3ad2d9c8114b9a4fe97d45b7a9d3c731148d936b0f5dd396fc20a53a11a70da" /> |
+
+`deployer` and `wormhole` are implementation details of the Pyth contract: you will not need to interact with these.

+ 16 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/near.mdx

@@ -0,0 +1,16 @@
+---
+title: NEAR Price Feed Contract Addresses for Mainnet & Testnet
+description: >-
+  This resource lists the current Pyth NEAR contract addresses for mainnet and
+  testnet. Use them to integrate on-chain price feeds and ensure your
+  configuration stays up to date.
+full: false
+index: false
+---
+
+# Price Feed Contract Addresses on NEAR
+
+| Network      | Contract address      |
+| ------------ | --------------------- |
+| NEAR Mainnet | `pyth-oracle.near`    |
+| NEAR Testnet | `pyth-oracle.testnet` |

+ 34 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/pythnet.mdx

@@ -0,0 +1,34 @@
+---
+title: Pythnet & Testnet Contract Addresses for Cross-Chain Price Feeds
+description: >-
+  Easily access Pythnet and testnet contract addresses for blockchain price
+  feeds. View mainnet/testnet details, reference links, and comprehensive
+  program information.
+full: false
+index: false
+---
+
+# Price Feed Program Addresses on Pythnet
+
+<InfoBox variant="warning">
+  **Important:** The addresses on this page are for the Pythnet network itself,
+  which is used to construct and deliver Pyth prices to other blockchains. If
+  you are building an application on EVM, Solana, SVM, or another chain, you
+  should use the Pyth program deployed on your target chain instead. Please
+  refer to the [Contract Addresses](/price-feeds/contract-addresses) page and
+  select your specific blockchain environment.
+</InfoBox>
+
+The following table contains the addresses of the programs deployed on Pythnet that operate together to construct Pyth prices and deliver them to other blockchains:
+
+| Network  | Program                                                                                                 | Program address                                |
+| -------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
+| Pythnet  | [Oracle Program](https://github.com/pyth-network/pyth-client/tree/main)                                 | `FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH` |
+| Pythnet  | [Remote Executor](https://github.com/pyth-network/pyth-crosschain/tree/main/governance/remote_executor) | `exe6S3AxPVNmy46L4Nj6HrnnAVQUhwyYzMSNcnRn3qq`  |
+| Pythnet  | [Message Buffer](https://github.com/pyth-network/pyth-crosschain/tree/main/pythnet/message_buffer)      | `7Vbmv1jt4vyuqBZcpYPpnVhrqVe5e6ZPb6JxDcffRHUM` |
+| Pythtest | [Oracle Program](https://github.com/pyth-network/pyth-client/tree/main)                                 | `gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s`  |
+| Pythtest | [Oracle Program](https://github.com/pyth-network/pyth-client/tree/main)                                 | `8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz` |
+| Pythtest | [Remote Executor](https://github.com/pyth-network/pyth-crosschain/tree/main/governance/remote_executor) | `exe6S3AxPVNmy46L4Nj6HrnnAVQUhwyYzMSNcnRn3qq`  |
+| Pythtest | [Message Buffer](https://github.com/pyth-network/pyth-crosschain/tree/main/pythnet/message_buffer)      | `7Vbmv1jt4vyuqBZcpYPpnVhrqVe5e6ZPb6JxDcffRHUM` |
+
+Note that Pythnet above is the mainnet network for Pyth, and Pythtest is a testnet for development purposes.

+ 44 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/solana.mdx

@@ -0,0 +1,44 @@
+---
+title: Solana Program Addresses & SVM Chains Overview
+description: >-
+  Access Solana program addresses and SVM networks (mainnet, devnet, testnet, or
+  custom). Includes direct links and one-click copy for development workflows.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Program Addresses on Solana and other SVM chains
+
+The Pyth Oracle consists of two different programs.
+
+The **Solana receiver program** is deployed at the following addresses:
+
+| Network         | Program address                                                                                                                                                                                                                                                                   |
+| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Solana Mainnet  | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.solana.com/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ" />                                                                                                                     |
+| Solana Devnet   | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.solana.com/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=devnet" />                                                                                                      |
+| Eclipse Mainnet | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.dev.eclipsenetwork.xyz/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ" />                                                                                                         |
+| Eclipse Testnet | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.dev.eclipsenetwork.xyz/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=testnet" />                                                                                         |
+| Mantis Testnet  | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.solana.com/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=custom&customUrl=https%3A%2F%2Fmantis-testnet-rollup.composable-shared-artifacts.composablenodes.tech%2Frpc" /> |
+| Sonic Mainnet   | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.sonic.game/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=mainnet" />                                                                                                     |
+| Sonic Testnet   | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.sonic.game/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=testnet" />                                                                                                     |
+| Sonic Devnet    | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.sonic.game/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=devnet" />                                                                                                      |
+| Atlas Testnet   | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.atlas.xyz/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ" />                                                                                                                      |
+| Mantis Mainnet  | <CopyAddress address={`rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ`} url="https://explorer.solana.com/address/rec5EKMGg6MxZYaMdyBfgwp4d5rB9T1VQH5pJv5LtFJ?cluster=custom&customUrl=https%3A%2F%2Fmantis-rollup.composable-shared-artifacts.composablenodes.tech%2Frpc" />         |
+
+The **Price feed program** is deployed at the following addresses:
+
+| Network         | Program address                                                                                                                                                                                                                                                                   |
+| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Solana Mainnet  | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.solana.com/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT" />                                                                                                                     |
+| Solana Devnet   | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.solana.com/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=devnet" />                                                                                                      |
+| Eclipse Mainnet | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.dev.eclipsenetwork.xyz/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT" />                                                                                                         |
+| Eclipse Testnet | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.dev.eclipsenetwork.xyz/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=testnet" />                                                                                         |
+| Mantis Testnet  | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.solana.com/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=custom&customUrl=https%3A%2F%2Fmantis-testnet-rollup.composable-shared-artifacts.composablenodes.tech%2Frpc" /> |
+| Sonic Mainnet   | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.sonic.game/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=mainnet" />                                                                                                     |
+| Sonic Testnet   | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.sonic.game/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=testnet" />                                                                                                     |
+| Sonic Devnet    | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.sonic.game/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=devnet" />                                                                                                      |
+| Atlas Testnet   | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.atlas.xyz/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT" />                                                                                                                      |
+| Mantis Mainnet  | <CopyAddress address={`pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT`} url="https://explorer.solana.com/address/pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT?cluster=custom&customUrl=https%3A%2F%2Fmantis-rollup.composable-shared-artifacts.composablenodes.tech%2Frpc" />         |

+ 19 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/starknet.mdx

@@ -0,0 +1,19 @@
+---
+title: "Pyth Price Feed Contract Addresses on Starknet: Mainnet and Testnet"
+description: >-
+  Pyth StarkNet contract addresses for Mainnet and Testnet, with links to their
+  StarkScan pages.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Price Feed Contract Addresses on Starknet
+
+Pyth is deployed on both Starknet Mainnet and Testnet.
+
+| Network          | Contract address                                                                                                                                                                                              |
+| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Starknet Mainnet | <CopyAddress address={`0x062ab68d8e23a7aa0d5bf4d25380c2d54f2dd8f83012e047851c3706b53d64d1`} url="https://starkscan.co/contract/0x062ab68d8e23a7aa0d5bf4d25380c2d54f2dd8f83012e047851c3706b53d64d1" />         |
+| Starknet Testnet | <CopyAddress address={`0x07f2b07b6b5365e7ee055bda4c0ecabd867e6d3ee298d73aea32b027667186d6`} url="https://sepolia.starkscan.co/contract/0x07f2b07b6b5365e7ee055bda4c0ecabd867e6d3ee298d73aea32b027667186d6" /> |

+ 34 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/sui.mdx

@@ -0,0 +1,34 @@
+---
+title: Sui Contract Addresses on Sui Blockchain
+description: >-
+  This page lists Pyth’s Sui contract addresses on mainnet and testnet,
+  including contract IDs and explorer URLs for integration and verification.
+full: false
+index: false
+---
+
+# Price Feed Contract Addresses on Sui
+
+Pyth is currently available on the following sui-based chains:
+
+### Stable channel
+
+#### Sui Mainnet
+
+| Name                | Address                                                                                                                                                                   |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Pyth State ID       | [`0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8`](https://explorer.sui.io/object/0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8) |
+| Pyth Package ID     | [`0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91`](https://explorer.sui.io/object/0x04e20ddf36af412a4096f9014f4a565af9e812db9a05cc40254846cf6ed0ad91) |
+| Wormhole State ID   | [`0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c`](https://explorer.sui.io/object/0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c) |
+| Wormhole Package ID | [`0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a`](https://explorer.sui.io/object/0x5306f64e312b581766351c07af79c72fcb1cd25147157fdc2f8ad76de9a3fb6a) |
+
+### Beta channel
+
+#### Sui Testnet
+
+| Name                | Address                                                                                                                                                                                   |
+| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Pyth State ID       | [`0x243759059f4c3111179da5878c12f68d612c21a8d54d85edc86164bb18be1c7c`](https://explorer.sui.io/object/0x2d82612a354f0b7e52809fc2845642911c7190404620cec8688f68808f8800d8?network=testnet) |
+| Pyth Package ID     | [`0xabf837e98c26087cba0883c0a7a28326b1fa3c5e1e2c5abdb486f9e8f594c837`](https://explorer.sui.io/object/0xf7114cc10266d90c0c9e4b84455bddf29b40bd78fe56832c7ac98682c3daa95b?network=testnet) |
+| Wormhole State ID   | [`0x31358d198147da50db32eda2562951d53973a0c0ad5ed738e9b17d88b213d790`](https://explorer.sui.io/object/0xebba4cc4d614f7a7cdbe883acc76d1cc767922bc96778e7b68be0d15fce27c02?network=testnet) |
+| Wormhole Package ID | [`0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94`](https://explorer.sui.io/object/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94?network=testnet) |

+ 19 - 0
apps/developer-hub/content/docs/pyth-core/contract-addresses/ton.mdx

@@ -0,0 +1,19 @@
+---
+title: TON Contract Addresses (Mainnet & Testnet) | Pyth
+description: >-
+  Explore Pyth’s TON Mainnet & Testnet contract addresses. Verify them instantly
+  on TONScan.
+full: false
+index: false
+---
+
+import CopyAddress from "../../../../src/components/CopyAddress";
+
+# Price Feed Contract Addresses on TON
+
+Pyth is currently deployed on TON Mainnet and TON Testnet.
+
+| Network     | Contract address                                                                                                                                                        |
+| ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| TON Mainnet | <CopyAddress address={`EQBU6k8HH6yX4Jf3d18swWbnYr31D3PJI7PgjXT-flsKHqql`} url="https://tonscan.org/address/EQBU6k8HH6yX4Jf3d18swWbnYr31D3PJI7PgjXT-flsKHqql" />         |
+| TON Testnet | <CopyAddress address={`EQB4ZnrI5qsP_IUJgVJNwEGKLzZWsQOFhiaqDbD7pTt_f9oU`} url="https://testnet.tonscan.org/address/EQB4ZnrI5qsP_IUJgVJNwEGKLzZWsQOFhiaqDbD7pTt_f9oU" /> |

+ 24 - 0
apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app.mdx

@@ -0,0 +1,24 @@
+---
+title: Build Your First Pyth Price Feed for EVM
+description: >-
+  Use the Pyth network to create real-time price feeds on EVM. This step-by-step
+  guide shows how to integrate price oracles into smart contracts and connect
+  off-chain code.
+full: false
+index: false
+---
+
+# Create your first Pyth app
+
+This tutorial walks through creating a complete application that uses Pyth Price feeds.
+The application includes a smart contract and an off-chain code invoking the contract.
+
+<InfoBox variant="info">
+  The tutorial is an in-depth walkthrough of contract development; more
+  experienced developers may want to refer to [Use Real-time Price
+  Data](./use-real-time-data) for a more concise version.
+</InfoBox>
+
+Please choose your environment to get started:
+
+- [EVM](create-your-first-pyth-app/evm/part-1)

+ 6 - 0
apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/_meta.json

@@ -0,0 +1,6 @@
+{
+  "evm": {
+    "title": "on EVM",
+    "href": "/evm"
+  }
+}

+ 4 - 0
apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/_meta.json

@@ -0,0 +1,4 @@
+{
+  "part-1": "Part 1: Create a Contract",
+  "part-2": "Part 2: Deploy your App"
+}

+ 548 - 0
apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/part-1.mdx

@@ -0,0 +1,548 @@
+---
+title: Create a Pyth-Integrated Contract to Fetch ETH Price on EVM
+description: >-
+  Learn how to deploy a Pyth EVM smart contract that delivers real-time ETH/USD
+  rates and powers accurate NFT pricing. Follow our step-by-step guide with
+  built-in data-freshness verification.
+full: false
+index: false
+---
+
+# Create your first Pyth app on EVM
+
+In this tutorial, we will use real-time Pyth price data to mint an NFT in exchange for $1 of ETH.
+Our solidity contract will read the price of ETH/USD from Pyth and use it to calculate the amount of ETH required to mint the NFT.
+
+This tutorial will cover the following topics:
+
+- Create a contract that reads the ETH/USD price from Pyth using [pyth-sdk-solidity](https://github.com/pyth-network/pyth-crosschain/tree/main/target_chains/ethereum/sdk/solidity)
+- Learn how to update Pyth prices to avoid Stale data.
+- Deploy the contract to OP-sepolia testnet.
+- Update and Fetch price using [hermes-client](https://github.com/pyth-network/pyth-crosschain/tree/main/apps/hermes/client/js).
+
+This tutorial is divided into two parts: \
+[Part 1:](./part-1) Create a contract and fetch prices from Pyth oracles. \
+[Part 2:](./part-2) Deploy Your Pyth App
+
+## Create a contract and fetch prices from Pyth oracles
+
+In this part of the tutorial, we will create a contract that reads the price from Pyth and uses it to calculate the amount of ETH required to mint an NFT.
+After that, we will write tests to ensure that the contract works as expected.
+
+### Preliminaries
+
+This tutorial uses Foundry to perform the contract development tasks.
+Please make sure these are installed on your system before continuing.
+
+- [foundry](https://book.getfoundry.sh/getting-started/installation)
+- [node](https://nodejs.org/en/download/)
+- [curl](https://curl.se/download.html)
+- [jq](https://stedolan.github.io/jq/download/)
+
+### Create a Foundry project
+
+Create a new directory to hold your app and a `contracts` directory within.
+Here `forge init` command will initialize an empty foundry project creating several subdirectories within `contracts`.
+
+```bash copy
+mkdir my_first_pyth_app
+mkdir my_first_pyth_app/contracts && cd my_first_pyth_app/contracts
+forge init
+```
+
+The `src` directory will hold your contract code, and the `test` directory will hold unit tests.
+Both directories are initialized with some sample contract code and tests.
+
+Try it out by running `forge test`.
+This command should print out something like this:
+
+```
+[⠢] Compiling...
+No files changed, compilation skipped
+
+Running 2 tests for test/Counter.t.sol:CounterTest
+[PASS] testFuzz_SetNumber(uint256) (runs: 256, μ: 27864, ~: 28409)
+[PASS] test_Increment() (gas: 28379)
+Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 12.30ms
+
+Ran 1 test suites: 2 tests passed, 0 failed, 0 skipped (2 total tests)
+```
+
+The Foundry project has been successfully initialized!
+At this point, delete the sample code from `src` and the test file from `test` -- we won't need them anymore.
+
+```bash copy
+rm -r src/* test/*
+```
+
+### Install the Pyth SDK
+
+Pyth provides a Solidity SDK that can be used to interact with one-chain Pyth Price Feed contracts.
+It exposes multiple [methods](/price-feeds/api-reference/evm) to read and interact with the contracts.
+
+Use `npm` to add the Pyth SDK:
+
+```bash copy
+npm init -y
+npm install @pythnetwork/pyth-sdk-solidity
+```
+
+Next, run the following command to create a text file `contracts/remappings.txt`:
+
+```bash copy
+echo '@pythnetwork/pyth-sdk-solidity/=node_modules/@pythnetwork/pyth-sdk-solidity' > remappings.txt
+```
+
+This line tells Foundry where to find the Pyth SDK so that you can import it from Solidity contracts.
+
+### Create a contract
+
+Next, open `src/MyFirstPythContract.sol` in your favorite editor and add the following code:
+
+```solidity copy filename="MyFirstPythContract.sol"
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import { console2 } from "forge-std/Test.sol";
+import "@pythnetwork/pyth-sdk-solidity/IPyth.sol";
+
+contract MyFirstPythContract {
+  IPyth pyth;
+  bytes32 ethUsdPriceId;
+
+  constructor(address _pyth, bytes32 _ethUsdPriceId) {
+    pyth = IPyth(_pyth);
+    ethUsdPriceId = _ethUsdPriceId;
+  }
+}
+
+```
+
+Notice that this code block imports the `IPyth` interface from the SDK you installed earlier.
+This interface is the primary way to interact with the Pyth price feeds contract.
+The constructor instantiates this interface with the address of the Pyth contract.
+It also takes an `_ethUsdPriceId`.
+We will see how to populate both parameters later on.
+
+Next, add a `mint` function to your contract:
+
+```solidity copy filename="MyFirstPythContract.sol"
+contract MyFirstPythContract {
+  // ... other functions omitted
+
+  function mint() public payable {
+    PythStructs.Price memory price = pyth.getPriceNoOlderThan(
+      ethUsdPriceId,
+      60
+    );
+
+    uint ethPrice18Decimals = (uint(uint64(price.price)) * (10 ** 18)) /
+      (10 ** uint8(uint32(-1 * price.expo)));
+    uint oneDollarInWei = ((10 ** 18) * (10 ** 18)) / ethPrice18Decimals;
+
+    console2.log("required payment in wei");
+    console2.log(oneDollarInWei);
+
+    if (msg.value >= oneDollarInWei) {
+      // User paid enough money.
+      // TODO: mint the NFT here
+    } else {
+      revert InsufficientFee();
+    }
+  }
+
+  // Error raised if the payment is not sufficient
+  error InsufficientFee();
+}
+
+```
+
+This function first reads a `Price` from the pyth contract if it is updated within the last 60 seconds.
+It then performs some arithmetic on the price in order to calculate how much the caller needs to pay. This conversion
+assumes that 10^18 wei is equal to the native token (ETH in this example); in some networks (like Hedera) the decimal
+places are different and you need to change the math.
+If the caller has not paid enough, the function reverts.
+
+Try out your changes by running `forge build`:
+
+```
+[⠒] Compiling...
+[⠘] Compiling 28 files with 0.8.23
+[⠊] Solc 0.8.23 finished in 2.71s
+Compiler run successful!
+```
+
+The contract compiles!
+
+### Create a test
+
+Before deploying the contract, let's write a test to make sure it works.
+Open `test/MyFirstPythContract.t.sol` in your favorite editor and add the following code:
+
+```solidity copy filename="MyFirstPythContract.t.sol"
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import { Test, console2 } from "forge-std/Test.sol";
+import { MyFirstPythContract } from "../src/MyFirstPythContract.sol";
+import { MockPyth } from "@pythnetwork/pyth-sdk-solidity/MockPyth.sol";
+
+contract MyFirstPythContractTest is Test {
+  MockPyth public pyth;
+  bytes32 ETH_PRICE_FEED_ID = bytes32(uint256(0x1));
+  MyFirstPythContract public app;
+
+  uint256 ETH_TO_WEI = 10 ** 18;
+
+  function setUp() public {
+    pyth = new MockPyth(60, 1);
+    app = new MyFirstPythContract(address(pyth), ETH_PRICE_FEED_ID);
+  }
+
+  function createEthUpdate(
+    int64 ethPrice
+  ) private view returns (bytes[] memory) {
+    bytes[] memory updateData = new bytes[](1);
+    updateData[0] = pyth.createPriceFeedUpdateData(
+      ETH_PRICE_FEED_ID,
+      ethPrice * 100000, // price
+      10 * 100000, // confidence
+      -5, // exponent
+      ethPrice * 100000, // emaPrice
+      10 * 100000, // emaConfidence
+      uint64(block.timestamp), // publishTime
+      uint64(block.timestamp) // prevPublishTime
+    );
+
+    return updateData;
+  }
+
+  function setEthPrice(int64 ethPrice) private {
+    bytes[] memory updateData = createEthUpdate(ethPrice);
+    uint value = pyth.getUpdateFee(updateData);
+    vm.deal(address(this), value);
+    pyth.updatePriceFeeds{ value: value }(updateData);
+  }
+
+  function testMint() public {
+    setEthPrice(100);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+
+  function testMintRevert() public {
+    setEthPrice(99);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    vm.expectRevert();
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+}
+
+```
+
+Take a look at the two `test` functions at the end of this file.
+These tests set the price of Ether to a specific value, then call `mint`.
+The tests use a mock implementation of Pyth and some helper methods defined above to set the price of Ether.
+
+Try your tests by running `forge test -vvv`
+
+```
+[⠢] Compiling...
+[⠔] Compiling 1 files with 0.8.23
+[⠒] Solc 0.8.23 finished in 1.23s
+Compiler run successful!
+
+Running 2 tests for test/MyFirstPythContract.t.sol:MyFirstPythContractTest
+[PASS] testMint() (gas: 197064)
+Logs:
+  required payment in wei
+  10000000000000000
+
+[PASS] testMintRevert() (gas: 197468)
+Logs:
+  required payment in wei
+  10101010101010101
+
+Test result: ok. 2 passed; 0 failed; 0 skipped; finished in 702.58µs
+
+Ran 1 test suites: 2 tests passed, 0 failed, 0 skipped (2 total tests)
+```
+
+The tests pass!
+The tests also print out the required payment to successfully mint the NFT -- these originate from the `console2.log` statements in `MyFirstPythContract`.
+Notice that the payment is higher in the second test: when the price of ETH is \$99 (instead of \$100), more ETH is required to reach \$1.
+This difference demonstrates that your contract is successfully reading the price of ETH/USD from Pyth.
+
+### Update Pyth prices
+
+While our code above seems to work properly, it has a problem.
+To see this problem, let's add another test to the test suite:
+
+```solidity copy filename="MyFirstPythContract.t.sol"
+contract MyFirstPythContractTest is Test {
+  // ... prior tests omitted ...
+
+  function testMintStalePrice() public {
+    setEthPrice(100);
+
+    skip(120);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+}
+
+```
+
+Notice that this test is the same as the first test, except it adds a call to [`skip`](https://book.getfoundry.sh/reference/forge-std/skip) in the middle.
+
+Now run `forge test -vvv`
+
+```
+[FAIL. Reason: StalePrice()] testMintStalePrice() (gas: 192722)
+```
+
+Oh no, the test fails with a `StalePrice` error!
+When our contract calls `getPriceNoOlderThan(.., 60)`, it checks the timestamp on the blockchain and compares it to the timestamp for the Pyth price.
+If the Pyth price's timestamp is more than 60 seconds in the past, then a `StalePrice` error occurs.
+`skip` moves the timestamp on the blockchain forward, which triggers the error.
+
+We can fix this problem, but first, let's fix the test case.
+Add a call to `vm.expectRevert()` as shown below:
+
+```solidity {10} copy filename="MyFirstPythContract.t.sol "
+contract MyFirstPythContractTest is Test {
+  // ... prior tests omitted ...
+  function testMintStalePrice() public {
+    setEthPrice(100);
+
+    skip(120);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    // Add this line
+    vm.expectRevert();
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+}
+
+```
+
+To fix the `StalePrice` error, add a new function to `MyFirstPythContract`:
+
+```solidity copy filename="MyFirstPythContract.sol"
+contract MyFirstPythContract {
+  // ... prior code omitted
+
+  function updateAndMint(bytes[] calldata pythPriceUpdate) external payable {
+    uint updateFee = pyth.getUpdateFee(pythPriceUpdate);
+    pyth.updatePriceFeeds{ value: updateFee }(pythPriceUpdate);
+
+    mint();
+  }
+}
+
+```
+
+The end of this function calls the `mint` function we defined before.
+Before that, however, the function calls [`updatePriceFeeds`](../../api-reference/evm/updatePriceFeeds) on the Pyth contract.
+This function takes a payload of `bytes[]` that is passed into the function itself.
+The Pyth contract requires a fee to perform this update; the code snippet above calculates the needed fee using [`getUpdateFee`](https://api-reference.pyth.network/price-feeds/evm/getUpdateFee).
+The caller of this function can pass in a recent Pyth price update as this payload, guaranteeing that the `StalePrice` error won't occur.
+
+We can test this function by adding the following snippet to the test file:
+
+```solidity copy filename="MyFirstPythContract.t.sol"
+contract MyFirstPythContractTest is Test {
+  // ... prior tests omitted ...
+  function testUpdateAndMint() public {
+    bytes[] memory updateData = createEthUpdate(100);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    app.updateAndMint{ value: ETH_TO_WEI / 100 }(updateData);
+  }
+}
+
+```
+
+Note that this test creates and passes a price update directly to `updateAndMint` instead of calling `setEthPrice` like
+the previous tests. For this test, we created a mock price update using the testing library.
+When the contract is deployed, we will retrieve the price update from a web service.
+
+Run this new test with `forge test -vvv`
+
+```
+[⠢] Compiling...
+[⠰] Compiling 1 files with 0.8.23
+[⠔] Solc 0.8.23 finished in 1.19s
+Compiler run successful!
+
+Running 4 tests for test/MyFirstPythContract.t.sol:MyFirstPythContractTest
+[PASS] testMint() (gas: 197148)
+Logs:
+  required payment in wei
+  10000000000000000
+
+[PASS] testMintRevert() (gas: 197575)
+Logs:
+  required payment in wei
+  10101010101010101
+
+[PASS] testMintStalePrice() (gas: 193074)
+[PASS] testUpdateAndMint() (gas: 197067)
+Logs:
+  required payment in wei
+  10000000000000000
+
+Test result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.54ms
+
+Ran 1 test suites: 4 tests passed, 0 failed, 0 skipped (4 total tests)
+```
+
+The test passes!
+
+Congratulations! We have successfully created a contract that reads the price of ETH/USD from Pyth and uses it to calculate the amount of ETH required to mint an NFT.
+
+In this part of the tutorial, we learned how to create a contract that reads the price from Pyth oracle and how to update the price to avoid stale data.
+We also wrote tests to ensure that the contract works as expected.
+
+Our final contract code should look like this:
+
+```solidity copy filename="MyFirstPythContract.sol"
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import { console2 } from "forge-std/Test.sol";
+import "@pythnetwork/pyth-sdk-solidity/IPyth.sol";
+
+contract MyFirstPythContract {
+  IPyth pyth;
+  bytes32 ethUsdPriceId;
+
+  constructor(address _pyth, bytes32 _ethUsdPriceId) {
+    pyth = IPyth(_pyth);
+    ethUsdPriceId = _ethUsdPriceId;
+  }
+
+  function mint() public payable {
+    PythStructs.Price memory price = pyth.getPriceNoOlderThan(
+      ethUsdPriceId,
+      60
+    );
+    console2.log("price of ETH in USD");
+    console2.log(price.price);
+
+    uint ethPrice18Decimals = (uint(uint64(price.price)) * (10 ** 18)) /
+      (10 ** uint8(uint32(-1 * price.expo)));
+    uint oneDollarInWei = ((10 ** 18) * (10 ** 18)) / ethPrice18Decimals;
+
+    console2.log("required payment in wei");
+    console2.log(oneDollarInWei);
+
+    if (msg.value >= oneDollarInWei) {
+      // User paid enough money.
+      // TODO: mint the NFT here
+    } else {
+      revert InsufficientFee();
+    }
+  }
+
+  function updateAndMint(bytes[] calldata pythPriceUpdate) external payable {
+    uint updateFee = pyth.getUpdateFee(pythPriceUpdate);
+    pyth.updatePriceFeeds{ value: updateFee }(pythPriceUpdate);
+
+    mint();
+  }
+
+  // Error raised if the payment is not sufficient
+  error InsufficientFee();
+}
+
+```
+
+And our test file should look like this:
+
+```solidity copy filename="MyFirstPythContract.t.sol"
+// SPDX-License-Identifier: UNLICENSED
+pragma solidity ^0.8.13;
+
+import { Test, console2 } from "forge-std/Test.sol";
+import { MyFirstPythContract } from "../src/MyFirstPythContract.sol";
+import { MockPyth } from "@pythnetwork/pyth-sdk-solidity/MockPyth.sol";
+
+contract MyFirstPythContractTest is Test {
+  MockPyth public pyth;
+  bytes32 ETH_PRICE_FEED_ID = bytes32(uint256(0x1));
+  MyFirstPythContract public app;
+
+  uint256 ETH_TO_WEI = 10 ** 18;
+
+  function setUp() public {
+    pyth = new MockPyth(60, 1);
+    app = new MyFirstPythContract(address(pyth), ETH_PRICE_FEED_ID);
+  }
+
+  function createEthUpdate(
+    int64 ethPrice
+  ) private view returns (bytes[] memory) {
+    bytes[] memory updateData = new bytes[](1);
+    updateData[0] = pyth.createPriceFeedUpdateData(
+      ETH_PRICE_FEED_ID,
+      ethPrice * 100000,
+      10 * 100000,
+      -5,
+      ethPrice * 100000,
+      10 * 100000,
+      uint64(block.timestamp),
+      uint64(block.timestamp)
+    );
+
+    return updateData;
+  }
+
+  function setEthPrice(int64 ethPrice) private {
+    bytes[] memory updateData = createEthUpdate(ethPrice);
+    uint value = pyth.getUpdateFee(updateData);
+    console2.log("value: ", value);
+    vm.deal(address(this), value);
+    pyth.updatePriceFeeds{ value: value }(updateData);
+  }
+
+  function testMint() public {
+    setEthPrice(100);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+
+  function testMintRevert() public {
+    setEthPrice(99);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    vm.expectRevert();
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+
+  function testMintStalePrice() public {
+    setEthPrice(100);
+
+    skip(120);
+
+    vm.deal(address(this), ETH_TO_WEI);
+
+    vm.expectRevert();
+    app.mint{ value: ETH_TO_WEI / 100 }();
+  }
+
+  function testUpdateAndMint() public {
+    bytes[] memory updateData = createEthUpdate(100);
+
+    vm.deal(address(this), ETH_TO_WEI);
+    app.updateAndMint{ value: ETH_TO_WEI / 100 }(updateData);
+  }
+}
+
+```
+
+Check out [Part 2](./part-2) to learn how to deploy our contract to OP-sepolia testnet and fetch prices using hermes-client.

Plik diff jest za duży
+ 113 - 0
apps/developer-hub/content/docs/pyth-core/create-your-first-pyth-app/evm/part-2.mdx


+ 33 - 0
apps/developer-hub/content/docs/pyth-core/current-fees.mdx

@@ -0,0 +1,33 @@
+---
+title: Current Pyth Network Price Feed Update Fees by Blockchain
+description: >-
+  Compare Pyth Network's current fees for updating price feeds on Ethereum,
+  Avalanche, and 10+ blockchains. Optimize transactions with the best rates.
+full: false
+index: false
+---
+
+# Current Fees
+
+The following tables shows the total fees payable when updating a price feed.
+Please note the fees shown below is the amount paid in `msg.value` per price feed update.
+
+<InfoBox variant="info">
+  **Note**: The default fee of all chains **not** mentioned below is **1(one)**
+  unit of the smallest denomination of the blockchain's native token (e.g., **1
+  wei on Ethereum**).
+</InfoBox>
+
+| **Network** | **Fees**         |
+| ----------- | ---------------- |
+| Aurora      | 0.000003 **ETH** |
+| Avalanche   | 0.00025 **AVAX** |
+| Conflux     | 0.1 **CFX**      |
+| Cronos      | 0.06 **CRO**     |
+| Meter       | 0.02 **MTR**     |
+| opBNB       | 0.000186 **BNB** |
+| Ronin       | 0.001 **RON**    |
+| Sei         | 0.01 **SEI**     |
+| Shimmer     | 1 **SMR**        |
+| Swellchain  | 0.00005 **ETH**  |
+| Worldchain  | 0.00001 **ETH**  |

+ 13 - 0
apps/developer-hub/content/docs/pyth-core/error-codes.mdx

@@ -0,0 +1,13 @@
+---
+title: "Error Codes for Pyth Cross-Chain Apps: Complete List & Troubleshooting"
+description: >-
+  List of Pyth cross-chain EVM error codes with descriptions and troubleshooting
+  steps. Use this reference to diagnose and resolve issues across EVM-compatible
+  chains.
+full: false
+index: false
+---
+
+# Error Codes
+
+- [EVM](error-codes/evm)

+ 3 - 0
apps/developer-hub/content/docs/pyth-core/error-codes/_meta.json

@@ -0,0 +1,3 @@
+{
+  "evm": "EVM"
+}

+ 33 - 0
apps/developer-hub/content/docs/pyth-core/error-codes/evm.mdx

@@ -0,0 +1,33 @@
+---
+title: "EVM Error Codes: Troubleshooting & Descriptions"
+description: >-
+  Decode Pyth Network EVM errors to troubleshoot invalid arguments, missing
+  price feeds, governance issues, and more. Resolve issues quickly.
+full: false
+index: false
+---
+
+# EVM Error Codes
+
+The following table contains the errors used in the Pyth Network's [EVM contracts](https://github.com/pyth-network/pyth-crosschain/tree/a888ba318c0325c29070eaf5afcc3a4d443b058c/target_chains/ethereum/contracts/contracts).
+This information is derived from [PythErrors.sol](https://github.com/pyth-network/pyth-crosschain/blob/a888ba318c0325c29070eaf5afcc3a4d443b058c/target_chains/ethereum/sdk/solidity/PythErrors.sol#L8)
+in the Pyth SDK and can be used to decode error codes programmatically.
+
+Consult [Troubleshoot Errors on EVM Price Feeds Contract](../troubleshoot/evm) for more information on how to handle these errors.
+
+| Error Codes | Error                          | Error Description                                                |
+| ----------- | ------------------------------ | ---------------------------------------------------------------- |
+| 0xa9cb9e0d  | InvalidArgument()              | Function Arguments are invalid.                                  |
+| 0xe60dce71  | InvalidUpdateDataSource()      | Invalid data source of the provided updateData.                  |
+| 0xe69ffece  | InvalidUpdateData()            | UpdateData is invalid.                                           |
+| 0x025dbdd4  | InsufficientFee()              | Insufficient fee provided for the operation.                     |
+| 0xde2c57fa  | NoFreshUpdate()                | No new fresh updates available.                                  |
+| 0x45805f5d  | PriceFeedNotFoundWithinRange() | No price feed found within the given range or it doesn't exists. |
+| 0x14aebe68  | PriceFeedNotFound()            | Price feed not found or it is not pushed on-chain yet.           |
+| 0x19abf40e  | StalePrice()                   | The requested price feed has not been updated recently enough.   |
+| 0x2acbe915  | InvalidWormholeVaa()           | Given message is not a valid Wormhole VAA.                       |
+| 0x97363b35  | InvalidGovernanceMessage()     | Governance message is invalid                                    |
+| 0x63daeb77  | InvalidGovernanceTarget()      | Governance message is not for this contract.                     |
+| 0x360f2d87  | InvalidGovernanceDataSource()  | Invalid data source for the governance message.                  |
+| 0x88d1b847  | OldGovernanceMessage()         | Governance message is old.                                       |
+| 0x13d3ed82  | InvalidWormholeAddressToSet()  | The wormhole address to set in SetWormholeAddress is invalid.    |

Plik diff jest za duży
+ 48 - 0
apps/developer-hub/content/docs/pyth-core/fetch-price-updates.mdx


+ 38 - 0
apps/developer-hub/content/docs/pyth-core/getting-started.mdx

@@ -0,0 +1,38 @@
+---
+title: "Getting Started with Pyth Price Feeds: Developer Guide & Resources"
+description: >-
+  Pyth offers tutorials, API documentation, and best practice guides for
+  integrating its price feeds. These resources help you build, test, and deploy
+  reliable on-chain crypto data.
+full: false
+index: false
+---
+
+# Getting Started
+
+Integrating Pyth price feeds is quick and easy. Pyth price feeds are permissionless and available on-chain. You **don't** need to sign up or request an API key
+
+Pyth offers several different resources to help you get started.
+The [Build](#build) section provides resources for developers integrating Pyth price feeds into their applications.
+The [Learn](#learn) section provides general material for anyone interested in understanding how the protocol works.
+
+## Build
+
+Developers interested in using Pyth can refer to the following resources:
+
+- [Create Your First Pyth App](./create-your-first-pyth-app/) is a tutorial that walks the reader through all of the steps required to develop, test and deploy a contract using Pyth price feeds. This guide is tailored toward new developers with less contract development experience.
+- [Use Real-Time Price Data](./use-real-time-data/) is a how-to guide that provides the minimal steps to integrate price feeds into your app. This guide is targeted towards more experienced developers who know the basics of smart contract development.
+- [API Reference](./api-reference) is an interactive playground that provides a detailed overview of the Pyth smart contract's functionality. This guide is useful for developers who want to understand the full capabilities of the Pyth oracles.
+
+In addition to the resources above, the following reference materials will be useful for developers as they integrate:
+
+- [Price Feed IDs](https://www.pyth.network/developers/price-feed-ids) lists the price feed IDs for all the assets supported by Pyth.
+- [Contract Addresses](./contract-addresses/) provides the contract addresses for Pyth on different chains.
+- [Error Codes](./error-codes.mdx) lists the error codes that can be returned by the Pyth contracts.
+- [Best Practices](./best-practices.mdx) explains how to use Pyth price feeds safely and effectively in your application.
+
+## Learn
+
+For those interested in learning more about Pyth, the following resources are available:
+
+- [How Pyth Works](./how-pyth-works.mdx) provides a high-level overview of Pyth architecture.

+ 28 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works.mdx

@@ -0,0 +1,28 @@
+---
+title: "How Pyth Works: On-Chain Price Aggregation & Cross-Chain Data Transfer"
+description: >-
+  Pyth Oracle provides real-time price data via cross-chain feeds. Publishers
+  submit signed price updates which are aggregated on-chain to ensure accuracy.
+  Developers can integrate these feeds directly into smart contracts for
+  blockchain applications.
+full: false
+index: false
+---
+
+# Design Overview
+
+Pyth is a protocol that allows market participants to publish pricing information on-chain for others to use. The protocol is an interaction between three parties:
+
+1. _Publishers_ submit pricing information to Pyth's oracle program. Pyth has multiple data publishers for every product to improve the accuracy and robustness of the system.
+2. Pyth's _oracle program_ combines publishers' data to produce a single aggregate price and confidence interval.
+3. _Consumers_ read the price information produced by the oracle program.
+
+Pyth's oracle program runs on [Pythnet](how-pyth-works/pythnet.md).
+The prices constructed on Pythnet are transferred [cross-chain](how-pyth-works/cross-chain.md) to reach consumers on these blockchains.
+
+The critical component of the system is the [oracle program](how-pyth-works/oracle-program.md) that combines the data from each individual publisher.
+This program maintains a number of different [SVM accounts](pythnet-reference/account-structure.md) that list the products on Pyth and their current price data.
+Publishers publish their price and confidence by interacting with the oracle program on every slot.
+The program stores this information in its accounts.
+The first price update in a slot additionally triggers [price aggregation](how-pyth-works/price-aggregation.md), which combines the price data from the previous slot into a single aggregate price and confidence interval.
+This aggregate price is written to these SVM accounts of Pythnet where it is available for transmission to other blockchains.

+ 9 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/_meta.json

@@ -0,0 +1,9 @@
+{
+  "pythnet": "Pythnet",
+  "oracle-program": "Oracle Program",
+  "cross-chain": "Cross-chain",
+  "fees": "Fees",
+  "hermes": "Hermes",
+  "price-aggregation": "Price Aggregation",
+  "ema-price-aggregation": "EMA Price Aggregation"
+}

BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/EMA_Price_Aggregation_1.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/EMA_Price_Aggregation_2.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_1.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_2.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_3.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_4.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_5.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_6.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Price_Aggregation_7.png


BIN
apps/developer-hub/content/docs/pyth-core/how-pyth-works/assets/Pull-Architecture-Hermes.png


+ 36 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/cross-chain.mdx

@@ -0,0 +1,36 @@
+---
+title: Pyth Network Cross-Chain Price Transfer Mechanisms
+description: >-
+  Securely transfer and verify real-time price feeds across blockchains with
+  Pyth’s cross-chain solutions, including Wormhole, Hermes, and native on-chain
+  protocols.
+full: false
+index: false
+---
+
+# Cross-chain
+
+Pyth uses a cross-chain mechanism to transfer prices from [Pythnet](pythnet.md) to target chains. The diagram below
+shows how prices are delivered from Pythnet to target chains:
+
+![](./assets/Pull-Architecture-Hermes.png)
+
+Data providers publish their prices on Pythnet. The on-chain [oracle program](oracle-program.md) then aggregates prices
+for a feed to obtain the aggregate price and confidence. Next, the Pythnet validators send a Wormhole message on each
+Pythnet slot to the Wormhole contract on Pythnet containing the Merkle root of all the prices. Wormhole guardians
+then observe the Merkle root message and create a signed VAA for the Merkle root message.
+
+[Hermes](./hermes) continually listens to Wormhole for Pyth Merkle roots at each slot. It also
+listens to Pythnet to get all the price messages. It stores the latest price messages with their Merkle proof and signed
+Merkle root in memory and exposes HTTP and server-side streaming APIs for retrieving the latest update. (Anyone can run an instance
+of this webservice, but the Pyth Data Association runs a public instance for convenience.) When a user wants to use a
+Pyth price in a transaction, they retrieve the latest update message from Hermes and submit it in their transaction. The
+update message includes the signed Merkle tree root, along with the Merkle proofs of each included price update. To
+verify the payload, the Pyth Network contract simply checks the Wormhole signatures on the root, then checks the Merkle
+proofs and, if it is valid, stores the new price in its on-chain storage.
+
+Finally, on-chain protocols integrate with the Pyth contract via a simple API that retrieves the current Pyth price from
+its on-chain storage. This API will return the current price as long as it has been updated sufficiently recently; this
+approach works because users will have updated the Pyth price earlier in the same transaction. Protocols can configure
+the recency threshold to suit their needs — e.g., latency sensitive applications can set a lower threshold than the
+default.

+ 53 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/ema-price-aggregation.mdx

@@ -0,0 +1,53 @@
+---
+title: "EMA Price Aggregation in Pyth Network: How It Works & Confidence Metrics"
+description: >-
+  Ensure real-time price accuracy with Pyth’s EMA Price Aggregation, blending
+  slot-weighted and inverse confidence-weighted exponential moving averages for
+  reliable data.
+full: false
+index: false
+---
+
+# EMA Price Aggregation
+
+Pyth network also offers an exponentially-weighted moving average (EMA) price and confidence. These values are time-weighted averages of the aggregate price and confidence. For more details, please read out [Medium Blog](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1) on the topic.
+
+Both the EMA price (ema_price) and confidence (ema_confidence) are available from Pyth price accounts:
+
+```sh copy
+price_account .. CqFJLrT4rSpA46RQkVYWn8tdBDuQ7p7RXcp6Um76oaph
+    price ........ 16297000 x 10^-5
+    conf ......... 27952 x 10^-5
+    price_type ... price
+    exponent ..... -5
+    status ....... trading
+    corp_act ..... nocorpact
+    num_qt ....... 2
+    valid_slot ... 110430111
+    publish_slot . 110430112
+    ema_price ......... 16247409 x 10^-5
+    ema_confidence ......... 19415 x 10^-5
+```
+
+**What is an exponential moving average (EMA)?**
+
+In an EMA the most recent samples receive the most weight, and samples further back in time get exponentially less weight the farther in the past they are. For a 1 hour EMA, the samples 1 hour in the past get 50% of the weighting, samples 2 hours in the past get 25% of the weighting, 3 hours in the past get 12.5% of the weighting, etc.
+
+![](./assets/EMA_Price_Aggregation_1.png)
+
+While conceptually not as simple as an SMA (Simple Moving Average), the EMA has a particularly simple implementation for streaming applications such as Pyth. The exponential weighting method allows the entire history of prices and weights to be represented by a single number.
+
+Find the implementation in [GitHub](https://github.com/pyth-network/pyth-client/blob/852b991fb4403dcf23043752e3a799a40ed0133b/program/src/oracle/upd_aggregate.h).
+
+**How does Pyth calculate its EMA Price and EMA Confidence?**
+
+The EMA Price (`ema_price`) and EMA Confidence (`ema_confidence`) values are derived directly from the aggregated prices and confidences Pyth has generated on-chain. Publishers do not submit either EMA Price or EMA Confidence values, they only publish to Pythnet a “live” price and its associated confidence interval which will, in turn, be used for EMA Price and EMA Confidence calculation.
+
+The current Pyth averaging method is a slot-weighted, inverse confidence-weighted exponential moving average of the aggregate price (and confidence interval).
+
+- **Slot weighted** — The Pyth EMA uses the Pythnet slot number to measure the passage of time. The averaging period is 5921 slots, which corresponds to approximately 1 hour on Pythnet.
+- **Inverse confidence weighted** — Weighting each sample by 1/Confidence lets the EMA give more weight to samples with tight confidence and ignore samples with very wide confidence. Below is an example of an outlier aggregate price with a wide confidence interval. Notice how the average using inverse confidence weighting does not get pulled up by the outlier sample while the uniform weighted average does.
+
+![](./assets/EMA_Price_Aggregation_2.png)
+
+For more details and explanations, be sure to read the dedicated blog post on this topic [here](https://pythnetwork.medium.com/whats-in-a-name-302a03e6c3e1).

+ 22 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/fees.mdx

@@ -0,0 +1,22 @@
+---
+title: Understanding Fees in the Pyth Network Protocol
+description: >-
+  Learn how Pyth Network’s governance sets optional data fees for on-chain price
+  feeds, compensates providers, and ensures transparent, efficient pricing.
+full: false
+index: false
+---
+
+# Fees
+
+The Pyth Network protocol has been designed to allow for the optional enablement of data fees in order to update the state of an on-chain price feeds.
+The ongoing existence of and size of the fee will be determined by governance on a per-blockchain basis; until governance is live, the fee will be 1 of the smallest denomination of the blockchain's native token (e.g., 1 wei on Ethereum).
+The fees collected by the protocol will go toward compensating data providers and possibly other uses as determined by governance.
+
+Note that protocols integrating with Pyth Network can pass these fees along to their users.
+Whenever a user submits a transaction that requires a price update, that transaction can also include payment of the necessary fee.
+This approach charges end users in proportion to their usage of Pyth Network data.
+The Pyth Network SDKs use this approach by default and include all of the necessary logic for computing and sending the fee along with every transaction.
+
+In addition to update fees, end users ultimately bear the gas cost of updating the Pyth Network price feeds, which means that their transactions cost a little more than they would in the push model.
+However, the cost of a single price update is minimal, so the combined gas and update fee should only be a small portion of the overall transaction cost for the end user.

+ 41 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/hermes.mdx

@@ -0,0 +1,41 @@
+---
+title: "Hermes: Real-Time Price Data Service for Pyth Network"
+description: >-
+  Provides real-time Pythnet and Wormhole price data via REST APIs and
+  server-sent events (SSE) for on-chain verification.
+full: false
+index: false
+---
+
+# Hermes
+
+[Hermes][hermes-repo] is a web service that listens to the Pythnet and the Wormhole Network for Pyth price updates, and
+serves them via a convenient web API. It provides Pyth's latest price update data format that are more cost-effective
+to verify and use on-chain.
+
+Hermes allows users to easily query for recent price updates via a REST API, or subscribe to a server-side events stream
+for streaming updates. The Pyth Network's Javascript SDKs connect to an instance of Hermes to fetch price updates.
+
+[hermes-repo]: https://github.com/pyth-network/pyth-crosschain/tree/main/apps/hermes
+
+## Documentation
+
+The [Hermes API Documentation](https://hermes.pyth.network/docs) provides a comprehensive explanation of Hermes API for
+user interaction. You can use [the price service client library in
+JS](https://github.com/pyth-network/pyth-crosschain/tree/main/price_service/client/js) to interact with Hermes.
+
+Here's an example of retrieving the latest update of the ETH/USD price feed using `curl`.
+
+```bash
+# Example API call
+$ curl https://hermes.pyth.network/api/latest_price_feeds?ids[]=0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace
+
+# Example Response
+[{"id":"ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace","price":{"price":"184136023127","conf":"177166324","expo":-8,"publish_time":1692110601},"ema_price":{"price":"184100641000","conf":"178704085","expo":-8,"publish_time":1692110601}}]
+```
+
+## Accessing Hermes
+
+Hermes is a permissionless service that can either be self-hosted or accessed through a third-party provider (similar to a blockchain RPC).
+The Pyth Data Association also operates a public instance for development purposes.
+Please see [Hermes API Instances and Providers](../api-instances-and-providers/hermes) for more details.

+ 26 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/oracle-program.mdx

@@ -0,0 +1,26 @@
+---
+title: "Oracle Program: How Pyth Maintains & Aggregates Price Feeds"
+description: >-
+  Discover how Pyth’s oracle delivers accurate on-chain price feeds by
+  aggregating real-time data and computing moving averages for your
+  decentralized apps.
+full: false
+index: false
+---
+
+# Oracle Program
+
+The oracle program is responsible for several tasks:
+
+1. Maintaining the set of price feeds.
+2. Storing the contributions of data providers to each price feed.
+3. Combining the individual data providers' prices into a single aggregate price and confidence interval.
+4. Performing any additional stateful computations on the resulting price series, such as computing moving averages.
+
+The oracle solves these problems by maintaining a collection of [SVM accounts](../pythnet-reference/account-structure.md) to represent the set of price feeds.
+Each feed has two accounts: a product account to store [metadata](../pythnet-reference/product-metadata.md) and a price account.
+The price account stores a list of authorized data providers for this specific price feed, and allocates storage space for each data provider's price.
+The oracle program exposes an instruction called `upd_price` that enables an authorized data provider to update the price account with their current estimate of the price and confidence interval.
+Additionally, the first time that `upd_price` is called in a slot, it will [aggregate](price-aggregation.md) the individual data provider's prices into an aggregate price and confidence interval.
+Only the aggregate price and confidence are made available for use in downstream applications; the individual data providers prices are internal state of the oracle program.
+Finally, the oracle program computes an [exponentially-weighted moving average](ema-price-aggregation.md) of the oracle price.

+ 71 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/price-aggregation.mdx

@@ -0,0 +1,71 @@
+---
+title: "Pyth Price Aggregation: Combining Data for Accurate Prices"
+description: >-
+  Pyth delivers real-time market prices for DeFi and trading applications by
+  aggregating weighted data from multiple sources.
+full: false
+index: false
+---
+
+# Price Aggregation
+
+Price aggregation combines the prices and confidences submitted by individual data providers into a single aggregate price and confidence.
+
+**Design Goals**
+
+The aggregation algorithm is designed to achieve 3 properties. First, it must be **robust to manipulation.** If most publishers are submitting a price of \$100 and one publisher submits a price of \$80, the aggregate price should remain near \$100 and not be overly influenced by the single outlying price. In the figure below, the aggregate price and confidence interval (represented by the blue star) is not influenced by the magenta publisher whose price is far away from the other publishers:
+
+![](./assets/Price_Aggregation_1.png)
+
+Second, the **aggregate price should appropriately weight data sources with different levels of accuracy.** Pyth allows publishers to submit a confidence interval because they have varying levels of accuracy in observing the price of a product. This property can result in situations where one publisher reports a price of \$101 +/- 1, and another reports \$110 +/- 10. In these cases, aggregating the price to be closer to \$101 than \$110 is appropriate, as in the figure below.
+
+![](./assets/Price_Aggregation_2.png)
+
+Finally, the **aggregate confidence interval should reflect the variation between publishers' prices.**
+Under normal market conditions, it is reasonable to expect a product to trade at a similar price across exchanges.
+In these cases, aggregate confidence interval is preferable to reflect the confidence intervals of the individual data providers, as shown in the figure on the left.
+However, in some rare situations, a product can trade at different prices on different exchanges.
+In these cases, the aggregate confidence interval should widen out to reflect the variation between these prices, as shown in the figure on the right.
+
+![](./assets/Price_Aggregation_3.png)
+
+**Algorithm**
+
+The aggregation algorithm itself is a simple two-step process.
+The first step computes the aggregate price by giving each publisher three votes — one vote at their price and one vote at each of their price +/- their confidence interval — then taking the median of all the votes.
+The second step computes the distance from the aggregate price to the 25th and 75th percentiles of the votes, and then selects the larger of the two as the aggregate confidence interval.
+
+This process acts like a hybrid between a mean and a median, giving confident publishers more influence, while still capping the maximum influence of any single publisher.
+The algorithm has an interpretation as computing the minimum of an objective function that penalizes the aggregate price from deviating too far from the publishers' prices.
+This interpretation allows properties of the algorithm's behavior to be proved: for example, the aggregate price will always lie between the 25th and 75th percentiles of the publishers' prices.
+
+**Scenarios**
+
+The operation of this algorithm and objective function can be visualized in the 4 scenarios described above.
+In the following graphs, the colored bars represent each publisher's price and confidence interval, and the grey dashed lines above depict the publisher's contribution to the overall objective function.
+The red line represents the combined objective function, that is, the sum of the dashed grey lines.
+The grey circles represent the 25th and 75th percentiles of the votes — the further one of these from the aggregate price determines the confidence interval’s width.
+Finally, the bold red star depicts the aggregate price and the bold red line depicts the aggregate confidence interval.
+
+In the first scenario, one publisher with a tight confidence interval is an outlier.
+Although this publisher does influence the objective function (the red line is lower on the left side than the right), it does not have enough influence to affect either the aggregate price or confidence interval.
+
+![](./assets/Price_Aggregation_4.png)
+
+The second scenario depicts how publishers with tighter confidence intervals can exert more influence over the location of the aggregate price, as long as their prices are consistent with the confidence intervals of other publishers.
+
+![](./assets/Price_Aggregation_5.png)
+
+The third scenario demonstrates the typical case where there are many publishers whose prices and confidence intervals roughly agree.
+In this case, the desired behavior is for the aggregate price and confidence to reflect those of the individual publishers.
+
+![](./assets/Price_Aggregation_6.png)
+
+Finally, the fourth scenario considers the case where the publishers publish distinct prices with non-overlapping confidence intervals.
+In this case, the confidence interval widens out because the dispersion between publishers creates a large gap between the aggregate price and the 25th/75th percentiles of the votes.
+
+![](./assets/Price_Aggregation_7.png)
+
+**Further Reading**
+
+For more details on the aggregation algorithm and some of the theory behind it, please see the [price aggregation blog post](https://pythnetwork.medium.com/pyth-price-aggregation-proposal-770bfb686641).

+ 28 - 0
apps/developer-hub/content/docs/pyth-core/how-pyth-works/pythnet.mdx

@@ -0,0 +1,28 @@
+---
+title: "Pythnet: Real-Time Off-Chain Price Feeds on Solana"
+description: >-
+  Pythnet on Solana delivers secure, real-time price data across multiple
+  blockchains with on-chain verification for smart contracts.
+full: false
+index: false
+---
+
+# Pythnet
+
+Pythnet is an application-specific blockchain operated by Pyth's data providers.
+This blockchain is a computation substrate to securely combine the data provider's prices into a single aggregate price for each Pyth price feed.
+Pythnet forms the core of Pyth's off-chain price feeds that serve all blockchains.
+
+Pythnet is powered by Solana technology: it runs the same validator software but is a Pyth-specific chain that is independent of Solana's mainnet.
+The Pyth Data Association DAO enables each data provider to operate one validator by delegating them the necessary stake.
+
+The purpose of Pythnet is to provide a secure and reliable computing substrate for Pyth's price aggregation.
+Recall that Pyth's data providers submit their own price measurements for each product.
+The Pyth protocol needs to combine these prices to produce a single aggregate price.
+This computation needs to be performed securely -- prices must be combined correctly -- and reliably -- so that accurate and up-to-date price information is always available for applications.
+Pythnet solves both of these problems.
+First, anyone can validate that the price computation is done correctly by replaying the network's transaction log.
+The Wormhole guardians perform this validation when constructing the Pyth price update messages that are delivered to other blockchains.
+Consequently, as long as 2/3+ of the Wormhole guardians are honest, users of Pyth prices can trust that they were computed accurately.
+Second, the Pythnet blockchain has built-in redundancy to ensure high availability: it is operational as long as 2/3+ of Pythnet validators are online.
+Furthermore, Pythnet remains available even when target chain transaction bandwidth is highly contested, such as during periods of high market volatility.

+ 6 - 2
apps/developer-hub/content/docs/pyth-core/how-to-guides/index.mdx

@@ -1,6 +1,10 @@
 ---
-title: Pyth Core How-To Guide
-description: A placeholder docs page
+title: Pyth Core Integration & Setup Guide
+description: >-
+  The Pyth Core developer guides include step-by-step tutorials, a complete API
+  reference, and code examples for integration.
+full: false
+index: true
 ---
 
 # Heading One

+ 22 - 6
apps/developer-hub/content/docs/pyth-core/index.mdx

@@ -1,10 +1,26 @@
 ---
-title: Overview
-description: A placeholder landing page
-icon: CardsThree
-full: true
+title: "Pyth Network Price Feeds: Real-Time Data on 100+ Blockchains"
+description: >-
+  Pyth Network provides real-time price feeds for multiple assets from data
+  providers across 100+ blockchains. Integrate these feeds into your
+  applications.
+full: false
+index: true
 ---
 
-# Real-time data from financial institutions
+# Introduction
 
-The fastest and most reliable data powering more transactions than any other oracle. Permissionless integration on every blockchain.
+Pyth Network price feeds provide real-time financial market data to smart contract applications on 100+ blockchains.
+Pyth's market data is contributed by over [120+ reputable first-party data providers](https://insights.pyth.network/publishers?utm_source=docs), including some of the biggest exchanges and market making firms in the world.
+Each price feed publishes a [robust aggregate](price-feeds/how-pyth-works/price-aggregation) of these prices multiple times per second.
+The protocol offers over [1300+ price feeds](https://pyth.network/price-feeds/) covering a number of different asset classes, including US equities, commodities, and cryptocurrencies.
+
+Pythnet Price Feeds are available on [100+ blockchain ecosystems](./price-feeds/contract-addresses), and can also be used in off-chain applications.
+They are available on mainnet for most [EVM chains](price-feeds/use-real-time-data/evm.md) -- including Ethereum, BNB, Avalanche, and more --several [Cosmos chains](price-feeds/use-real-time-data/cosmwasm.md), [Solana](https://docs.pyth.network/price-feeds/use-real-time-data/solana),
+[Aptos](price-feeds/use-real-time-data/aptos.md), [Sui](price-feeds/use-real-time-data/sui.md), [Ton](price-feeds/use-real-time-data/ton.md), and [NEAR](price-feeds/use-real-time-data/near.md).
+More ecosystems are coming soon!
+
+Follow the [Getting Started](price-feeds/getting-started.mdx) guide to learn more about Pyth and integrate Pyth Price Feeds into your application.
+
+Developers may also consider using [Benchmarks](../benchmarks) to access historical Pyth prices for both on- and off-chain use.
+These historical prices can be used for settlement or other similar applications.

+ 28 - 0
apps/developer-hub/content/docs/pyth-core/market-hours.mdx

@@ -0,0 +1,28 @@
+---
+title: "Pyth Market Hours by Asset Class: Trading Schedules & Holidays"
+description: >-
+  Pyth provides market hours data for cryptocurrencies, stocks, forex, metals,
+  interest rates, and commodities. It includes regular schedules, holiday
+  closures, and exceptions.
+full: false
+index: false
+---
+
+# Market Hours
+
+Pyth price feeds follow the [traditional market hours](https://www.cmegroup.com/trading-hours.html) of each asset classes and will be available at the following hours:
+| Asset Class | Opening Hours | Exceptions |
+| ----------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| Crypto | 24/7 | No market close |
+| US Equities | Every weekday from 9.30AM ET to 4PM ET | Markets are closed on weekends, and follow [NYSE Holidays & Trading Hours](https://www.nyse.com/markets/hours-calendars) |
+| EU Equities | Paris, Amsterdam, Ireland: Every weekday from 9AM CET to 5.30PM CET | Markets are closed on weekends, and follow [Euronext Holidays & Trading Hours](https://live.euronext.com/en/resources/trading-hours-holidays) |
+| UK Equities | Every weekday from 8AM UK time to 4.30PM UK time | Markets are closed on weekends, and follow [LSE Holidays & Trading Hours](https://www.londonstockexchange.com/equities-trading/business-days) |
+| FX | From Sunday 5PM ET to Friday 5PM ET | Trading continues during most US holidays |
+| Emerging Markets FX | From Sunday 6PM ET to Friday 5PM ET. For USDBRL, USDCOP, USDCLP and USDPEN, please refer to the [EM FX Market Hours Guide](https://pyth-network.notion.site/EM-FX-Market-Hours-Guide-1de2eecaaac980eea5eddf8f34398309) | Spot EM FX liquidity can be significantly limited at the start of the trading week, outside local market trading hours, and during local holidays, which can lead to wider confidence intervals. Pyth EM FX currencies: INR, IDR, PHP, KRW, TWD, CNH, TRY, ZAR, MXN, BRL, COP, CLP, PEN |
+| Metals | From Sunday 6PM ET to Friday 5PM ET | Daily maintenance window applies from 5PM ET to 6PM ET, Monday to Thursday. Spot gold and silver trading also follow [CME holiday closures](https://www.cmegroup.com/tools-information/holiday-calendar.html)|
+| Rates | Every weekday from 8AM ET to 5PM ET | Markets are closed on weekends, and follow [NYSE Holidays & Trading Hours](https://www.nyse.com/markets/hours-calendars) |
+| Reference Rates | 24/7 | Follow [Federal Reserve Bank of New York Holidays](https://www.newyorkfed.org/aboutthefed/holiday_schedule.html) |
+| Commodities | WTI: From Sunday 6PM ET to Friday 5PM ET | Daily maintenance window applies from 5PM ET to 6PM ET and follow [CME Holidays](https://www.cmegroup.com/tools-information/holiday-calendar.html)|
+| Commodities | BRENT: From Sunday 6PM ET to Friday 6PM ET | Daily maintenance window applies from 6PM ET to 8PM ET, Monday to Thursday and follow [ICE Holidays](https://www.ice.com/publicdocs/Trading_Schedule.pdf)|
+| Commodities | UKOILSPOT CFD: From Monday 1AM GMT to Friday 9:45PM GMT | Daily maintenance window applies from 10PM GMT to 1AM GMT, Monday to Friday and follow [FXCM Holidays](https://www.fxcm.com/markets/help/cfd-trading-what-are-the-cfd-holiday-hours/)|
+| Commodities | USOILSPOT CFD: From Sunday 11PM GMT to Friday 9:45PM GMT | Daily maintenance window applies from 10PM GMT to 11PM GMT, Monday to Friday and follow [FXCM Holidays](https://www.fxcm.com/markets/help/cfd-trading-what-are-the-cfd-holiday-hours/)|

+ 28 - 1
apps/developer-hub/content/docs/pyth-core/meta.json

@@ -3,5 +3,32 @@
   "title": "Pyth Core",
   "description": "Real-time data from financial institutions",
   "icon": "ChartLine",
-  "pages": ["index", "---Guides---", "how-to-guides"]
+  "pages": [
+    "index",
+    "getting-started",
+    "---Tutorials---",
+    "create-your-first-pyth-app",
+    "---Guides---",
+    "use-real-time-data",
+    "fetch-price-updates",
+    "schedule-price-updates",
+    "migrate-an-app-to-pyth",
+    "use-pyth-for-morpho",
+    "publish-data",
+    "troubleshoot",
+    "---Reference Material---",
+    "api-reference",
+    "price-feeds",
+    "current-fees",
+    "sponsored-feeds",
+    "market-hours",
+    "best-practices",
+    "error-codes",
+    "api-instances-and-providers",
+    "contract-addresses",
+    "pythnet-reference",
+    "---Understand Pyth---",
+    "pull-updates",
+    "how-pyth-works"
+  ]
 }

+ 16 - 0
apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth.mdx

@@ -0,0 +1,16 @@
+---
+title: "Migrate to Pyth Oracle: Complete Guide for Developers"
+description: >-
+  This guide provides step-by-step instructions to migrate real-time price feeds
+  from Chainlink to Pyth oracles, detailing configuration, data validation, and
+  performance considerations to improve price accuracy, update speed, and system
+  reliability.
+full: false
+index: false
+---
+
+# Migrate to Pyth from Another Oracle
+
+The guides in this section are designed to help developers migrate an application from another oracle to use Pyth price feeds.
+
+- [Chainlink](migrate-an-app-to-pyth/chainlink.md)

+ 3 - 0
apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth/_meta.json

@@ -0,0 +1,3 @@
+{
+  "chainlink": "from Chainlink"
+}

+ 10 - 0
apps/developer-hub/content/docs/pyth-core/migrate-an-app-to-pyth/chainlink.md

@@ -0,0 +1,10 @@
+---
+title: "Migrating from Chainlink to Pyth: A Step-by-Step Guide"
+description: >-
+  Migrate your EVM app from Chainlink to Pyth with our step-by-step guide. Set
+  up Pyth price feeds, automate updates, and access reliable price data.
+full: false
+index: false
+---
+
+Hello

+ 40 - 0
apps/developer-hub/content/docs/pyth-core/price-feeds.mdx

@@ -0,0 +1,40 @@
+---
+title: "Pyth Price Feeds: Real-Time Data & Asset Identifiers"
+description: >-
+  Get real-time Pyth Price Feeds with unique IDs for every blockchain asset
+  class. Learn to fetch, identify, and integrate them effortlessly.
+full: false
+index: false
+---
+
+# Price Feeds
+
+Pyth Price Feeds provide real-time, first-party, market data for a wide range of assets.
+
+Every price feed has a **unique ID**, representing the specific pair of assets being priced.
+These specific pairs are part of an asset class, which is a broader category of assets.
+
+Anyone can fetch available price feeds and their IDs via [Hermes API](https://hermes.pyth.network/docs/#/rest/price_feeds_metadata).
+
+## Asset Classes
+
+Every price feed belongs to an asset class. These asset classes distinguish between different types of assets, such as crypto, US equities, and metals.
+
+Refer to the [Asset Classes](./price-feeds/asset-classes.md) page to learn more about the existing asset classes.
+
+## Price Feed IDs
+
+Price Feed IDs are unique identifiers for each specific pair of assets being priced (e.g. BTC/USD).
+Every price update is tagged with the corresponding price feed ID.
+
+Applications need to store the IDs of the feeds they wish to read.
+However, the IDs may be represented in different formats (e.g. hex or base58) depending on the blockchain.
+Price feeds also have different IDs in the Stable and Beta channels.
+
+Refer to the [Price Feed ID reference catalog](https://www.pyth.network/developers/price-feed-ids) to identify a feed's ID in your chosen ecosystem.
+
+### Solana Price Feed Accounts
+
+On Solana, each feed additionally has a collection of **price feed accounts** containing the feed's data.
+The addresses of these accounts are programmatically derived from the feed id and a shard id, which is simply a 16-bit number.
+See [How to Use Real-Time Data on Solana](./use-real-time-data/solana#price-feed-accounts) for more information on price feed accounts.

+ 3 - 0
apps/developer-hub/content/docs/pyth-core/price-feeds/_meta.json

@@ -0,0 +1,3 @@
+{
+  "asset-classes": "Asset Classes"
+}

+ 30 - 0
apps/developer-hub/content/docs/pyth-core/price-feeds/asset-classes.mdx

@@ -0,0 +1,30 @@
+---
+title: Understanding Asset Classes in Pyth Price Feeds
+description: >-
+  Real-time Pyth price feeds for crypto, equities, FX, metals, commodities, and
+  energy. Integrate these feeds into trading and analytics systems to support
+  data-driven decision-making.
+full: false
+index: false
+---
+
+# Asset Classes
+
+[Pyth price feeds](https://www.pyth.network/price-feeds) provide market data for the following asset classes:
+
+| Asset Class | Subclass         | Definition                                                                                                                                                                                                                       |
+| ----------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Crypto      | Spot Prices      | Real-time prices for cryptocurrencies and digital assets                                                                                                                                                                         |
+|             | Redemption Rates | Real-time swap rates derived from smart contracts for the redemption of liquid staking and liquid restaking tokens (LSTs and LRTs), liquidity provider tokens (LP Tokens) and interest-bearing assets, including tokenised notes |
+|             | Indices          | Real-time prices that measure the performance of baskets of cryptocurrencies and digital assets                                                                                                                                  |
+| US Equities | Spot Prices      | Real-time prices for US equities                                                                                                                                                                                                 |
+| FX          | Spot Prices      | Real-time prices for fiat currency pairs                                                                                                                                                                                         |
+| Metals      | Spot Prices      | Real-time prices for precious metals                                                                                                                                                                                             |
+| Rates       | Future Prices    | Real-time prices for fixed income products, including bond futures                                                                                                                                                               |
+| Commodities | Futures Prices   | Real-time prices for commodity futures                                                                                                                                                                                           |
+| Energy      | Spot Prices      | Real-time prices for a non-expiring Contract for Difference (CFD) that tracks the price of the asset                                                                                                                             |
+|             | Futures Prices   | Real-time prices for energy futures contract                                                                                                                                                                                     |
+
+**NOTE:** When integrating with **Energy Futures Price Feeds**, it is not recommended to rely solely on the first month expiry price feed as there is often lower liquidity towards expiration.
+Best practice is to combine, 1-month, 2-month and 3-month feeds or use the weighted average which is represented by spot price(USOILSPOT or UKOILSPOT).
+Please refer to the [Best Practices](../best-practices.mdx#pricing-futures-based-assets) page for more information.

+ 64 - 0
apps/developer-hub/content/docs/pyth-core/publish-data.mdx

@@ -0,0 +1,64 @@
+---
+title: "How to Publish Data on Pyth Network: Step-by-Step Guide"
+description: >-
+  To publish data on the Pyth Network, request access, generate a keypair,
+  configure validator connections, and integrate with pyth-agent.
+full: false
+index: false
+---
+
+# Publish Data
+
+Data providers can get started publishing data to the Pyth Network by performing the following steps.
+
+## Request access
+
+First, contact the Pyth Data Association and request to become a data provider.
+You can reach out on [Discord](https://discord.gg/Ff2XDydUhu) or [Telegram](https://t.me/Pyth_Network).
+**Only data providers with first-party data (exchanges, market makers, and trading firms) are allowed to participate in the network.**
+
+## Generate keypair
+
+Every data provider is identified on the network by a public key, and their prices are signed by the corresponding private key.
+You will need a Solana public/private key pair for this purpose.
+If you do not already have a keypair, you can create one using the instructions below:
+
+```sh copy
+# Install the Solana Tool Suite, needed for creating the key used to sign your transactions.
+# See https://docs.solana.com/cli/install-solana-cli-tools for the latest version
+sh -c "$(curl -sSfL https://release.solana.com/v1.14.13/install)"
+
+# Generate a public/private keypair.
+solana-keygen new --no-bip39-passphrase --outfile publish_key_pair.json
+```
+
+This command will create a public/private keypair in `publish_key_pair.json`.
+Please extract the public key from this file and share it with the Pyth Data Association so they can enable you to publish prices.
+
+```sh copy
+# Print the public key of the keypair.
+solana-keygen pubkey publish_key_pair.json
+```
+
+This command will output the public key in base58 encoding and will look something like:
+
+```sh copy
+5rYvdyWAunZgD2EC1aKo7hQbutUUnkt7bBFM6xNq2z7Z
+```
+
+Most data providers choose to generate two separate keypairs, one for testing and one for production.
+If you do so, please share both public keys with the Pyth Data Association.
+
+## Procure validators
+
+Every data provider to the network will require both a Solana RPC node and a Pythnet validator.
+The Pyth Data Association will assist you with this step.
+
+## pyth-agent
+
+Data providers can publish data to the network using the [pyth-agent](https://github.com/pyth-network/pyth-agent) software package.
+This package abstracts away all of the communication with the underlying blockchain and exposes a simple JSON RPC interface for submitting price data.
+Please see the [README](https://github.com/pyth-network/pyth-agent) of that package for instructions on using it.
+This software requires you to configure both the keypair and validators from the previous steps in order to run.
+Please also see the [JSON RPC API documentation](publish-data/pyth-client-websocket-api.md).
+Finally, the [example publisher](https://github.com/pyth-network/example-publisher) is a fully-worked example of how to integrate with the pyth-agent API.

+ 6 - 0
apps/developer-hub/content/docs/pyth-core/publish-data/_meta.json

@@ -0,0 +1,6 @@
+{
+  "understanding-publishing-slots": "Understanding Publishing Slots",
+  "pyth-client-websocket-api": "pyth-client Websocket API",
+  "confidence-interval-and-crypto-exchange-fees": "Confidence Interval and Crypto Exchange Fees",
+  "useful-resources-for-publishers": "Useful Resources for Publishers"
+}

BIN
apps/developer-hub/content/docs/pyth-core/publish-data/assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_1.png


BIN
apps/developer-hub/content/docs/pyth-core/publish-data/assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_2.png


+ 32 - 0
apps/developer-hub/content/docs/pyth-core/publish-data/confidence-interval-and-crypto-exchange-fees.mdx

@@ -0,0 +1,32 @@
+---
+title: Crypto Fee Adjustments for Accurate Confidence Intervals
+description: >-
+  Learn Pyth Core’s fee-adjusted crypto pricing for confidence interval
+  calculations with multi-exchange order book modeling and precise data
+  adjustments.
+full: false
+index: false
+---
+
+# Confidence Interval and Crypto Exchange Fees
+
+It is very important that publishers consider crypto exchange aggressive fees when calculating their price and confidence intervals from one or more exchange order books. Ask prices should be moved up by the best publicly available aggressive fee rate, and bid prices should be moved down by the same rate.
+
+```sh copy
+ask_adjusted = ask * (1.0 + fee_rate)
+bid_adjusted = bid * (1.0 - fee_rate)
+```
+
+This is to reflect the "after fee" effective prices that could be gotten on that exchange. This is important for crypto markets because the fees are often MUCH larger than the typical bid-ask spread. It is not important for other markets (such as US equities) where fees are small compared with the bid-ask spread. The rationale for this adjustment is that the "fair price" could be above the best ask or below the best bid by as much as the aggressive fees before an informed trader would be able to profitably trade on this exchange and move the best price. Because of that, the best price on the exchange could be "wrong" by as much as +/- the aggressive fees.
+
+Example 1 - Exchange A has best aggressive fee of 10bps
+
+![](./assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_1.png)
+
+Exchange A should publish a price of \$50,000.01 and a confidence of \$50.005 (half the bid-ask spread after fee adjustment). It would be wrong to publish a confidence of \$0.005 based on the "not fee-adjusted" raw exchange bid-ask spread.
+
+Example 2 - Exchange A has a best aggressive fee of 10bps. Exchange B has a best aggressive fee of 1bps, and a publisher is combining them into a single combined book. Exchange books are combined by taking the best ask across both exchanges and the best bid across both exchanges.
+
+![](./assets/Confidence_Interval_and_Crypto_Exchange_Fees_Table_2.png)
+
+In this example, if a publisher were combining the books of Exchange A and Exchange B to get a combined price, they should publish a price of \$49,978.13 and confidence of \$28.125, which corresponds to the midprice and half the bid-ask spread of the combined fee-adjusted books. It would be wrong to publish a price of \$50,000.01 and confidence of \$0.01 based on the "not fee-adjusted" raw exchange prices. Note that in this example, not only is the confidence changed by including the exchange fees, but the price reported is also substantially different once fees are properly accounted for.

+ 349 - 0
apps/developer-hub/content/docs/pyth-core/publish-data/pyth-client-websocket-api.mdx

@@ -0,0 +1,349 @@
+---
+title: "pyth-agent WebSocket API: JSON-RPC Methods & Usage"
+description: >-
+  The Pyth Client WebSocket API provides real-time market data using JSON-RPC
+  2.0 methods such as get_product_list, update_price, and subscribe_price_sched.
+full: false
+index: false
+---
+
+# pyth-agent API
+
+[pyth-agent](https://github.com/pyth-network/pyth-agent) supports a websocket interface based on the json-rpc 2.0 standard. Methods include:
+
+- [get_product_list](pyth-client-websocket-api.md#get_product_list)
+- [update_price](pyth-client-websocket-api.md#update_price)
+- [subscribe_price_sched](pyth-client-websocket-api.md#subscribe_price_sched)
+- [get_product](pyth-client-websocket-api.md#get_product)
+- [get_all_products](pyth-client-websocket-api.md#get_all_products)
+
+Batch requests are processed in the order the requests appear within the batch. **Batching is highly recommended if the client sends
+updates to over 50 price feeds.**
+
+## get_product_list
+
+Get the list of available symbols and associated metadata.
+
+Please note that all of the fields in the `attr_dict` dictionary should be considered optional: your publishing software should gracefully handle cases where any of these fields are missing.
+
+The request looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "get_product_list",
+  "id": 1
+}
+```
+
+A successful response looks something like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "result": [
+    {
+      "account": "9F6eBgAfktth93C9zmtKDXFXNjZkq6JwJR56VPKqWmJm",
+      "attr_dict": {
+        "symbol": "SYMBOL1/USD",
+        "asset_type": "Equity",
+        "country": "USA",
+        "description": "pyth example product #1",
+        "quote_currency": "USD",
+        "tenor": "Spot",
+        "cms_symbol": "SYMBOL1",
+        "cqs_symbol": "SYMBOL1",
+        "nasdaq_symbol": "SYMBOL1"
+      },
+      "price": [
+        {
+          "account": "CrZCEEt3awgkGLnVbsv45Pp4aLhr7fZfZr3ubzrbNXaq",
+          "price_exponent": -4,
+          "price_type": "price"
+        }
+      ]
+    },
+    {
+      "account": "HCFaDYyz1ajS57HfCaaqzA1cZSaa2oEccQejbHaaofd4",
+      "attr_dict": {
+        "symbol": "SYMBOL2/USD",
+        "asset_type": "Equity",
+        "country": "USA",
+        "description": "pyth example product #2",
+        "quote_currency": "USD",
+        "tenor": "Spot",
+        "cms_symbol": "SYMBOL2",
+        "cqs_symbol": "SYMBOL2",
+        "nasdaq_symbol": "SYMBOL2"
+      },
+      "price": [
+        {
+          "account": "7FUsKvvtN5rB1fgYFWZLo5DLcqHTTeu63bUPThYT6MiS",
+          "price_exponent": -4,
+          "price_type": "price"
+        }
+      ]
+    }
+  ],
+  "id": null
+}
+```
+
+## update_price
+
+Update component price of some symbols using the publishing key of pyth-agent.
+
+The request includes the pricing account from the get_product_list output and looks something like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "update_price",
+  "params": {
+    "account": "CrZCEEt3awgkGLnVbsv45Pp4aLhr7fZfZr3ubzrbNXaq",
+    "price": 42002,
+    "conf": 3,
+    "status": "trading"
+  },
+  "id": 1
+}
+```
+
+The price and confidence interval (conf) attributes are expressed as integers with an implied decimal point given by the price*exponent defined by the symbol. The price type is a string with one of the following values: "price" or "ema*\_price". The symbol status is a string with one of the following values: "trading" or "unknown".
+
+A successful response looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "result": 0,
+  "id": 1
+}
+```
+
+## subscribe_price_sched
+
+**This method can saturate the connection between the agent and the client. Please create a scheduler on the client side to avoid saturating the connection or
+send price updates as soon as they are available.**
+
+Subscribe to price update schedule. pyth-agent will notify the client whenever it should submit the next price for a subscribed symbol.
+
+The request looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "subscribe_price_sched",
+  "params": {
+    "account": "CrZCEEt3awgkGLnVbsv45Pp4aLhr7fZfZr3ubzrbNXaq"
+  },
+  "id": 1
+}
+```
+
+A successful response looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "result": {
+    "subscription": 1234
+  },
+  "id": 1
+}
+```
+
+Where the result is an integer corresponding to a subscription identifier. All subsequent notifications for this subscription correspond to this identifier.
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "notify_price_sched",
+  "params": {
+    "subscription": 1234
+  }
+}
+```
+
+## get_product
+
+Get the full set of data for the given product.
+
+Please note that all of the fields in the `attr_dict` dictionary should be considered optional: your publishing software should gracefully handle cases where any of these fields are missing.
+
+The request looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "get_product",
+  "params": {
+    "account": "4aDoSXJ5o3AuvL7QFeR6h44jALQfTmUUCTVGDD6aoJTM"
+  },
+  "id": 1
+}
+```
+
+A successful response looks something like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "result": {
+    "account": "4aDoSXJ5o3AuvL7QFeR6h44jALQfTmUUCTVGDD6aoJTM",
+    "attr_dict": {
+      "asset_type": "Crypto",
+      "symbol": "BTC/USD",
+      "country": "US",
+      "quote_currency": "USD",
+      "description": "BTC/USD",
+      "tenor": "Spot",
+      "generic_symbol": "BTCUSD"
+    },
+    "price_accounts": [
+      {
+        "account": "GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",
+        "price_type": "price",
+        "price_exponent": -8,
+        "status": "trading",
+        "price": 4426101900000,
+        "conf": 4271150000,
+        "ema_price": 4433467600000,
+        "ema_confidence": 1304202670,
+        "valid_slot": 91402257,
+        "pub_slot": 91402259,
+        "prev_slot": 91402256,
+        "prev_price": 4425895500000,
+        "prev_conf": 3315350000,
+        "publisher_accounts": [
+          {
+            "account": "HekM1hBawXQu6wK6Ah1yw1YXXeMUDD2bfCHEzo25vnEB",
+            "status": "trading",
+            "price": 4426958500000,
+            "conf": 1492500000,
+            "slot": 91402255
+          },
+          {
+            "account": "GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ",
+            "status": "trading",
+            "price": 4424690000000,
+            "conf": 3690000000,
+            "slot": 91402256
+          }
+        ]
+      }
+    ]
+  },
+  "id": 1
+}
+```
+
+## get_all_products
+
+Get full set of data for the given product.
+
+Please note that all of the fields in the `attr_dict` dictionary should be considered optional: your publishing software should gracefully handle cases where any of these fields are missing.
+
+The request looks like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "method": "get_all_products",
+  "id": 1
+}
+```
+
+A successful response looks something like:
+
+```json copy
+{
+  "jsonrpc": "2.0",
+  "result": [
+    {
+      "account": "5uKdRzB3FzdmwyCHrqSGq4u2URja617jqtKkM71BVrkw",
+      "attr_dict": {
+        "asset_type": "Crypto",
+        "symbol": "BCH/USD",
+        "country": "US",
+        "quote_currency": "USD",
+        "description": "BCH/USD",
+        "tenor": "Spot",
+        "generic_symbol": "BCHUSD"
+      },
+      "price_accounts": [
+        {
+          "account": "5ALDzwcRJfSyGdGyhP3kP628aqBNHZzLuVww7o9kdspe",
+          "price_type": "price",
+          "price_exponent": -8,
+          "status": "trading",
+          "price": 60282000000,
+          "conf": 26000000,
+          "ema_price": 60321475000,
+          "ema_confidence": 22504746,
+          "valid_slot": 91402601,
+          "pub_slot": 91402604,
+          "prev_slot": 91402600,
+          "prev_price": 60282000000,
+          "prev_conf": 26000000,
+          "publisher_accounts": [
+            {
+              "account": "HekM1hBawXQu6wK6Ah1yw1YXXeMUDD2bfCHEzo25vnEB",
+              "status": "trading",
+              "price": 60282000000,
+              "conf": 26000000,
+              "slot": 91402599
+            },
+            {
+              "account": "2V7t5NaKY7aGkwytCWQgvUYZfEr9XMwNChhJEakTExk6",
+              "status": "unknown",
+              "price": 0,
+              "conf": 0,
+              "slot": 0
+            }
+          ]
+        }
+      ]
+    },
+    {
+      "account": "3nuELNFBkbXqsXtnCzphRPCX6toKKYxVDnkyr9pTwB1K",
+      "attr_dict": {
+        "asset_type": "Crypto",
+        "symbol": "SABER/USD",
+        "country": "US",
+        "quote_currency": "USD",
+        "description": "SABER/USD",
+        "tenor": "Spot",
+        "generic_symbol": "SABERUSD"
+      },
+      "price_accounts": [
+        {
+          "account": "8Td9VML1nHxQK6M8VVyzsHo32D7VBk72jSpa9U861z2A",
+          "price_type": "price",
+          "price_exponent": -8,
+          "status": "trading",
+          "price": 5785000,
+          "conf": 5000,
+          "ema_price": 5856365,
+          "ema_confidence": 10241,
+          "valid_slot": 91402601,
+          "pub_slot": 91402604,
+          "prev_slot": 91402600,
+          "prev_price": 5785000,
+          "prev_conf": 5000,
+          "publisher_accounts": [
+            {
+              "account": "GKNcUmNacSJo4S2Kq3DuYRYRGw3sNUfJ4tyqd198t6vQ",
+              "status": "trading",
+              "price": 5785000,
+              "conf": 5000,
+              "slot": 91402601
+            }
+          ]
+        }
+      ]
+    }
+  ],
+  "id": 1
+}
+```

+ 63 - 0
apps/developer-hub/content/docs/pyth-core/publish-data/understanding-publishing-slots.mdx

@@ -0,0 +1,63 @@
+---
+title: "Understanding Publishing Slots in Pyth: How Price Updates Work"
+description: >-
+  Pythnet’s publishing slots deliver ordered price updates on Solana, prevent
+  on-chain data conflicts, and improve cross-chain update efficiency.
+full: false
+index: false
+---
+
+# Understanding Publishing Slots
+
+When a quoter publishes a price, the pyth-client API also forwards what it thinks is the current slot on Solana and Pythnet. This is known as its publishing slot.
+
+The publishing slot and price is stored as the latest update for that publisher on-chain but only if the price is for a later slot than that currently stored. This is to prevent prices from being updated out-of-order and to facilitate arbitration between multiple publishers.
+
+The aggregation algorithm only combines prices from publishers that were published within 25 slots of the current on-chain slot.
+
+Not all published prices get included in the pyth contract due to unreliable transports and the way Solana and Pythnet formulate and reach consensus on each slot.
+
+A quoter may detect if a published price is dropped by comparing the list of publishing slots it submits vs what it subsequently receives in each aggregate price callback.
+
+For example, here is an excerpt of a log take from a run of the test_publish.cpp example program against mainnet-beta. It logs everything it sends and everything it receives.
+
+The publishing slots of six consecutive price submissions have been annotated with the labels A, B, C, D, E and F or slots 79018079, 79018084, 79018085, 79018086, 79018087, 79018092.
+
+The API submits a new price every time it receives notification of a new slot but note that prices for slots 79018080 thru 79018083 and 79018088 thru 79018091 were not submitted. This is because solana does not always publish consecutive slots and gaps can occur. Solana can also publish slots out-of-order, but the API ignores these and is guaranteed only to issue callbacks for slots that are strictly increasing.
+
+Price updates occur for slots labelled A, B, C and F. Slots D and E (79018086, 79018087) were dropped and did not get executed on the chain.
+
+```sh copy
+[2021-05-18T22:36:14.048435Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.116000,spread=0.001000,slot=79018079,sub_id=1
+                                                                                                                                                          ^^ A ^^^
+[2021-05-18T22:36:14.237644Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.112000,agg_spread=0.001000,valid_slot=79018076,pub_slot=79018077,my_price=0.112000,my_conf=0.001000,my_status=trading,my_slot=79018075
+[2021-05-18T22:36:14.405182Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.113000,agg_spread=0.001000,valid_slot=79018077,pub_slot=79018078,my_price=0.113000,my_conf=0.001000,my_status=trading,my_slot=79018076
+[2021-05-18T22:36:16.099126Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.117000,spread=0.001000,slot=79018084,sub_id=1
+                                                                                                                                                          ^^ B ^^^
+[2021-05-18T22:36:16.962077Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.118000,spread=0.001000,slot=79018085,sub_id=1
+                                                                                                                                                          ^^ C ^^^
+[2021-05-18T22:36:17.519741Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.119000,spread=0.001000,slot=79018086,sub_id=1
+                                                                                                                                                          ^^ D ^^^
+[2021-05-18T22:36:17.671924Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.114000,agg_spread=0.001000,valid_slot=79018078,pub_slot=79018079,my_price=0.114000,my_conf=0.001000,my_status=trading,my_slot=79018077
+[2021-05-18T22:36:18.109491Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.120000,spread=0.001000,slot=79018087,sub_id=1
+                                                                                                                                                          ^^ E ^^^
+[2021-05-18T22:36:20.537479Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.121000,spread=0.001000,slot=79018092,sub_id=1
+                                                                                                                                                          ^^ F ^^^
+[2021-05-18T22:36:21.195836Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.122000,spread=0.001000,slot=79018093,sub_id=1
+[2021-05-18T22:36:21.529074Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.123000,spread=0.001000,slot=79018094,sub_id=1
+[2021-05-18T22:36:21.802004Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.116000,agg_spread=0.001000,valid_slot=79018079,pub_slot=79018085,my_price=0.116000,my_conf=0.001000,my_status=trading,my_slot=79018079
+                                                                                                                                                                                                                                                                               ^^ A ^^^
+[2021-05-18T22:36:21.969477Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.117000,agg_spread=0.001000,valid_slot=79018085,pub_slot=79018087,my_price=0.117000,my_conf=0.001000,my_status=trading,my_slot=79018084
+                                                                                                                                                                                                                                                                               ^^ B ^^^
+[2021-05-18T22:36:22.304469Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.118000,agg_spread=0.001000,valid_slot=79018087,pub_slot=79018093,my_price=0.118000,my_conf=0.001000,my_status=trading,my_slot=79018085
+                                                                                                                                                                                                                                                                               ^^ C ^^^
+[2021-05-18T22:36:22.758348Z 654359 INF submit price to block-chain             ] symbol=SYMBOL1/USD,price_type=price,price=0.125000,spread=0.001000,slot=79018096,sub_id=1
+[2021-05-18T22:36:23.121339Z 654359 INF received aggregate price update         ] symbol=SYMBOL1/USD,price_type=price,status=trading,agg_price=0.121000,agg_spread=0.001000,valid_slot=79018093,pub_slot=79018094,my_price=0.121000,my_conf=0.001000,my_status=trading,my_slot=79018092
+                                                                                                                                                                                                                                                                               ^^ F ^^^
+```
+
+The API keeps track of the "hit-rate" of price submissions that show up in the update callbacks and tracks end-to-end latency statistics at the 25th, 50th, 75th and 99th percentiles both in terms of seconds of elapsed time and in number of slot updates observed. For example, from the same log:
+
+```sh copy
+[2021-05-18T22:37:26.685518Z 654359 INF publish statistics                      ] symbol=SYMBOL1/USD,price_type=price,num_sent=135,hit_rate=73.333333,secs_p25=2.000000,secs_p50=2.500000,secs_p75=3.000000,secs_p99=7.500000,slot_p25=4,slot_p50=4,slot_p75=6,slot_p99=16
+```

+ 20 - 0
apps/developer-hub/content/docs/pyth-core/publish-data/useful-resources-for-publishers.mdx

@@ -0,0 +1,20 @@
+---
+title: "Essential Resources for Pyth Publishers: Monitoring & Analytics"
+description: >-
+  Provides Pyth publishing support on Solana Explorer and Pythnet. Includes
+  transaction tracking, live price data monitoring, ranking exploration, and
+  detailed analytics.
+full: false
+index: false
+---
+
+# Useful Resources for Publishers
+
+This page contains useful tools for publishers to analyse, monitor and review their price data.
+
+- [Price Monitoring & Alerting Script](https://github.com/pyth-network/publisher-utils#monitoring): This monitoring script will provide alerts if a publishers data activity is suspicious i.e. price deviation, bad confidence interval
+- [Pyth Price Feeds & Metrics](https://pyth.network/price-feeds): Publishers can review their price data metrics for permissioned symbols. The conformance logs that can be downloaded contain useful metrics that show publisher uptime, price deviations and alerts. The metrics page can be accessed by selecting the environment > symbol > publisher key tab
+- [Pyth Publisher Ranking Page](https://pyth.network/publishers/ranking): This page provides a full breakdown of publisher ranking and inactive/active price feeds
+- [Pyth Agent API GitHub Repository](https://github.com/pyth-network/pyth-agent): This repository contains the latest release for the Pyth-Agent API
+- [Solana Explorer](https://explorer.solana.com): Solana Explorer allows publishers to monitor their public keys balance and transactions. It also provides live cluster statistics. For Pythnet or Pythtest, publishers should select 'Custom RPC URL' and add the the RPC http URL
+- [Pythnet Statistics](https://pyth.network/stats): A useful tool to review pythnet uptime per publisher key

+ 64 - 0
apps/developer-hub/content/docs/pyth-core/pull-updates.mdx

@@ -0,0 +1,64 @@
+---
+title: "Pull vs. Push Oracles: Key Differences & Use Cases"
+description: >-
+  Compare push vs. pull oracles by update frequency, latency, blockchain
+  compatibility, and integration to select the ideal solution for real-time data
+  needs.
+full: false
+index: false
+---
+
+# What is a Pull Oracle?
+
+Most oracles today are push oracles where the oracle operator is responsible for submitting price updates to the blockchain.
+Pyth is different: it is a _pull oracle_ where anyone can permissionlessly update the on-chain price.
+This document explains the differences between push and pull oracles.
+
+## Push Oracles
+
+_Push oracles_ periodically update an on-chain price based on external trigger conditions.
+The oracle has a smart contract that stores the current price.
+The contract also has a set of permissioned operators who are authorized to update the price.
+The oracle operators then commit to updating the on-chain price at a specific cadence, for example, once every 30 minutes or if the price moves by 1%.
+Thus, in a push oracle, the on-chain price is periodically updated, regardless of whether or not anyone is using it.
+
+## Pull Oracles
+
+In contrast to push oracles, _pull oracles_ only update the on-chain price when requested.
+There are different ways for users to request an updated price from a pull oracle.
+Some pull oracles respond to on-chain requests: applications send one transaction to request data from the oracle, which then submits the response in a second transaction.
+Pyth uses a simpler system where users can request the latest price update from an off-chain service.
+Anyone can submit a price update to the on-chain Pyth contract, which verifies its authenticity and stores it for later use.
+This system allows applications to use a single transaction flow that first updates the price then performs the necessary application logic.
+
+For a more in-depth explanation on the differences between push and pull oracles, refer to the following video tutorial:
+[How to Build with Pyth's Pull Oracle Design: Pyth Tutorials](https://youtu.be/qdwrs23Qc9g)
+
+## Comparing Push and Pull
+
+![](./assets/Push-vs-Pull-Oracle.jpg)
+
+Push and pull oracles differ on a number of important dimensions:
+
+- **Update frequency** -- In a push oracle, every price feed updates at a fixed update frequency.
+  The oracle operator determines the frequency, but it typically ranges from every 10 minutes to 1 hour.
+  In contrast, pull oracles can update at a much higher frequency.
+  For example, every Pyth price feed updates every 400 milliseconds.
+- **Latency** -- An oracle's update frequency also affects its prices' latency.
+  The higher update frequencies of pull oracles allow applications to access lower-latency data.
+- **Blockchain support** -- Pull oracles support a wide variety of different blockchains.
+  Push oracles typically support a smaller number of blockchains, as each additional chain requires ongoing gas expenditures.
+- **Price feed selection** -- Similar to the item above, pull oracles also support a wide selection of price feeds.
+  In contrast, push oracles typically have a more limited selection.
+  Push oracles generally cannot support a wide selection of feeds due to the gas cost of periodically updating each feed.
+
+A fundamental reason for these differences is that push oracles incur gas costs for price updates.
+These gas costs limit their scalability across all of the dimensions above.
+
+### Integration Differences
+
+Push oracles and pull oracles require applications to integrate in different ways.
+With a push oracle, applications typically read the current price out of a smart contract.
+Since the push oracle periodically updates the price, the application can assume the data in the smart contract is (reasonably) fresh.
+With a pull oracle, applications need to update the on-chain price before reading it.
+Developers using Pyth can refer to [How to Use Real-Time Price Data](/price-feeds/use-real-time-data) to learn how to perform these steps.

+ 16 - 0
apps/developer-hub/content/docs/pyth-core/pythnet-reference.mdx

@@ -0,0 +1,16 @@
+---
+title: "Pythnet Reference: Account Structure, Metadata & Schedule Format"
+description: >-
+  Explore Pythnet’s account structure, product metadata, and schedule formats.
+  Learn best practices to optimize and manage your Pythnet accounts effectively.
+full: false
+index: false
+---
+
+# Pythnet Reference
+
+The documentation in this section describes the structure of Pythnet accounts and their contents:
+
+- [Account Structure](/price-feeds/pythnet-reference/account-structure.mdx) describes the accounts that exist and their high-level contents
+- [Product Metadata](/price-feeds/pythnet-reference/product-metadata.mdx) describes the metadata associated with each product account
+- [Schedule Format](/price-feeds/pythnet-reference/schedule-format.mdx) describes the `schedule` field of the product metadata

+ 5 - 0
apps/developer-hub/content/docs/pyth-core/pythnet-reference/_meta.json

@@ -0,0 +1,5 @@
+{
+  "account-structure": "Account Structure",
+  "product-metadata": "Product Metadata",
+  "schedule-format": "Schedule Format"
+}

+ 100 - 0
apps/developer-hub/content/docs/pyth-core/pythnet-reference/account-structure.mdx

@@ -0,0 +1,100 @@
+---
+title: Account Structure of PythNet Oracle Accounts
+description: >-
+  Dive into Pyth oracle accounts on Pythnet: understand product and price data
+  structures, on-chain mappings, real-world examples, and network interactions.
+full: false
+index: false
+---
+
+# Account Structure
+
+The Pyth oracle program manages a number of on-chain accounts. There are three different types of accounts:
+
+1. _Product accounts_ store metadata about a product, such as its symbol (e.g., "BTC/USD") and asset type.
+2. _Price accounts_ store the current price information for a particular product. This account has fields such as the current price, a confidence interval, an exponential moving average price, an exponential moving average confidence interval and whether or not a price is currently available.
+3. _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.&#x20;
+
+The [Pyth Rust SDK](https://github.com/pyth-network/pyth-sdk-rs) contains a sample application that prints the current content of all Pyth accounts. The following sections use the output of this application to better understand the content of these accounts.
+
+**Product Accounts**
+
+Product accounts store metadata about a product. This metadata is represented as a set of reference attributes, stored as a list of text key/value pairs. Not all product accounts follow the same structure; for a comprehensive overview, visit the [Product Metadata page](product-metadata.md). For example, the product account for AAPL contains the following fields:
+
+```sh copy
+product_account .. G89jkM5wFLpmnbvRbeePUumxsJyzoXaRfgBVjyx2CPzQ
+  symbol.......... Equity.US.AAPL/USD
+  asset_type...... Equity
+  quote_currency.. USD
+  description..... APPLE INC
+  base............ AAPL
+  country......... US
+  cms_symbol...... AAPL
+  cqs_symbol...... AAPL
+  nasdaq_symbol... AAPL
+  price_account... CqFJLrT4rSpA46RQkVYWn8tdBDuQ7p7RXcp6Um76oaph
+```
+
+This snippet shows the reference attributes for AAPL. The set of available reference attributes depends on the `asset_type`. Every product account has `symbol` , `asset_type`, `quote_currency` , and `price_account` . US equity products additionally include additional reference symbology that is useful for mapping Pyth products to other industry-standard identifiers. The product account also contains a pointer to a price account that contains the product's current pricing information.&#x20;
+
+As another example, here is the product account for BTC/USD:
+
+```sh copy
+product_account .. 3m1y5h2uv7EQL3KaJZehvAJa4yDNvgc5yAdL9KPMKwvk
+  symbol.......... Crypto.BTC/USD
+  asset_type...... Crypto
+  quote_currency.. USD
+  description..... BTC/USD
+  generic_symbol.. BTCUSD
+  base............ BTC
+  price_account .. HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J
+```
+
+**Price Accounts**
+
+Price accounts store the current price of a product along with additional useful information. For example, consider the following content of AAPL's price account:&#x20;
+
+```sh copy
+price_account .. CqFJLrT4rSpA46RQkVYWn8tdBDuQ7p7RXcp6Um76oaph
+    price ........ 16297000 x 10^-5
+    conf ......... 27952 x 10^-5
+    price_type ... price
+    exponent ..... -5
+    status ....... trading
+    corp_act ..... nocorpact
+    num_qt ....... 2
+    valid_slot ... 110430111
+    publish_slot . 110430112
+    ema_price ......... 16247409 x 10^-5
+    ema_confidence ......... 19415 x 10^-5
+```
+
+This account stores the current price in a fixed-point format. The price is computed by taking the `price` field and multiplying by `10^exponent`. The account also includes a confidence interval that represents Pyth's uncertainty about the current price. This confidence interval can be interpreted as the standard deviation of a Laplace distribution centered around the price. `conf` is also stored in the same fixed-point format. In the example above, the price is 12276250, the conf is 1500 and the exponent is -5. These values translate into a price of \$122.76250 +- 0.015.
+
+Price accounts include several other useful fields. First, each account has a `status` that indicates whether or not the price is valid. Pricing information for a product can be unavailable for various reasons, for example, US equity markets only trade during certain hours. The status field indicates whether or not Pyth currently has a price for the product. **Only prices with a value of `status=trading` should be used**. If the status is not `trading` but is Unknown, Halted or Auction the Pyth price can be an arbitrary value.
+
+**Mapping Accounts**
+
+Mapping accounts serve as an index of the pricing information currently available on Pyth. These accounts are organized into a linked list whose values are product accounts. Applications can traverse this linked list to enumerate all products currently available on Pyth.
+
+The on-chain relationship between different account types is as follows:
+
+```
+  -------------        -------------       -------------
+  |           |1      m|           |       |           |
+  |  mapping  |------->|  product  |------>|   price   |
+  |           |        |           |       |           |
+  -------------        -------------       -------------
+        |
+        V
+  -------------
+  |           |
+  |  mapping  |
+  |           |
+  -------------
+        |
+        V
+       ...
+```
+
+Each mapping account contains a list of product account ids, plus an optional pointer to the subsequent mapping account. Each product account in turn points to the price account that stores the current price information for that product.&#x20;

+ 133 - 0
apps/developer-hub/content/docs/pyth-core/pythnet-reference/product-metadata.mdx

@@ -0,0 +1,133 @@
+---
+title: "Product Metadata: Structure & Best Practices for Asset Accounts"
+description: >-
+  Pyth’s product metadata schema covers equities, cryptocurrencies, FX, and
+  metals. This guide describes the schema’s key attributes and recommended usage
+  patterns to optimize data processing.
+full: false
+index: false
+---
+
+# Product Metadata
+
+Product accounts store metadata about a product. This metadata is represented as a set of reference attributes, stored as a list of text key/value pairs but not all products share the same account structure. Metadata is network dependent.
+
+Every product has `product_account`, `symbol`, `asset_type`, `quote_currency`, `base` and `price_account`. However, the remaining fields of a product account will depend on its `asset_type`.
+
+**Equity**
+
+As a rule, all products with `asset_type` = Equity will follow the below Product Account structure:
+
+```sh copy
+product_account... Solana Account
+  asset_type...... AssetType
+  base............ BaseCurrency
+  cms_symbol...... NYSESymbol
+  cqs_symbol...... SIPSSymbol
+  country......... Country
+  description..... Description
+  nasdaq_symbol... ComstockSymbol
+  quote_currency.. QuoteCurrency
+  symbol.......... AssetType.Country.BaseCurrency/QuoteCurrency
+  weekly_schedule. WeeklySchedule
+  price_account... Solana Account
+```
+
+`symbol`: AssetType.Country.BaseCurrency/QuoteCurrency where the `base`: BaseCurrency is, in order of availability:&#x20;
+
+1. `cms_symbol`: NYSESymbol&#x20;
+2. `cqs_symbol`: SIPSSymbol
+3. `nasdaq_symbol`: ComstockSymbol
+
+Here is a snapshot of the Apple product account on Pythnet:
+
+```sh copy
+product_account .. 3mkwqdkawySvAm1VjD4f2THN5mmXzb76fvft2hWpAANo
+  asset_type...... Equity
+  base............ AAPL
+  cms_symbol...... AAPL
+  cqs_symbol...... AAPL
+  country......... US
+  description..... APPLE INC / US DOLLAR
+  nasdaq_symbol... AAPL
+  quote_currency.. USD
+  symbol.......... Equity.US.AAPL/USD
+  weekly_schedule. America/New_York,9:30-16:00,9:30-16:00,9:30-16:00,9:30-16:00,9:30-16:00,C,C
+  price_account... 5yixRcKtcs5BZ1K2FsLFwmES1MyA92d6efvijjVevQCw
+```
+
+**Crypto**
+
+As a rule, all products with `asset_type` = Crypto will follow the below Product Account structure:
+
+```sh copy
+product_account .. Solana Account
+  asset_type...... AssetType
+  base............ BaseCurrency
+  description..... Description
+  generic_symbol.. JLQDSymbol
+  quote_currency.. QuoteCurrency
+  symbol.......... AssetType.BaseCurrency/QuoteCurrency
+  weekly_schedule. WeeklySchedule
+  price_account .. Solana Account
+```
+
+Here is a snapshot of the Ethereum product account on Pythnet:
+
+```sh copy
+product_account .. EMkxjGC1CQ7JLiutDbfYb7UKb3zm9SJcUmr1YicBsdpZ
+  asset_type...... Crypto
+  base............ ETH
+  description..... ETHEREUM / US DOLLAR
+  generic_symbol.. ETHUSD
+  quote_currency.. USD
+  symbol.......... Crypto.ETH/USD
+  weekly_schedule. America/New_York,O,O,O,O,O,O,O
+  price_account .. JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB
+```
+
+**Foreign Currency & Metal**
+
+Lastly, are Foreign Currencies (FX) and Metal assets. Those 2 `asset_type` share a common product account structure that follows the below template:
+
+```sh copy
+product_account .. Solana Account
+  asset_type...... AssetType
+  base............ BaseCurrency
+  description..... Description
+  generic_symbol.. JLQDSymbol
+  quote_currency.. QuoteCurrency
+  symbol.......... AssetType.BaseCurrency/QuoteCurrency
+  tenor........... Maturity
+  weekly_schedule. WeeklySchedule
+  price_account .. Solana Account
+```
+
+Here is a snapshot of the Japanese Yen product account on Pythnet:
+
+```sh copy
+product_account .. eAnmHaCS2J1XPEb6zohWFrnXD3Mni3wTrfKGhkoQmcZ
+  asset_type...... FX
+  base............ USD
+  description..... US DOLLAR / JAPANESE YEN
+  generic_symbol.. USDJPY
+  quote_currency.. JPY
+  symbol.......... FX.USD/JPY
+  tenor........... Spot
+  weekly_schedule. America/New_York,O,O,O,O,00:00-17:00,C,17:00-24:00
+  price_account .. H6dt83FavYgfJR8oV7HewKWZjzveFFiDhq41VbmDYnVF
+```
+
+**Other Fields**
+
+- `weekly_schedule` - Optional field. When set, contents are used by publishers to learn about a symbol's typical market hours. See [Weekly Schedule Format](schedule-format#weekly-schedule-format-deprecated) for a detailed format specification.
+
+**Best Practices**
+
+The 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. You have to ensure that anything which is used to compose the symbol is made available as a stand-alone attribute.
+
+**Caveats**
+
+There is a limit of 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.

+ 111 - 0
apps/developer-hub/content/docs/pyth-core/pythnet-reference/schedule-format.mdx

@@ -0,0 +1,111 @@
+---
+title: "PythNet Schedule Format: Market Hours, Timezones & Holidays"
+description: >-
+  Explore PythNet’s schedule format: discover its structure, components, and
+  usage with real-world examples for market hours, timezones, and holidays.
+full: false
+index: false
+---
+
+# Schedule Format
+
+This document describes the format for the `schedule` field in Pyth product metadata.
+The `schedule` field defines a product's market hours, including its timezone, weekly schedule, and any holiday exceptions.
+It controls the publishing schedule of `pyth-agent`, restricting it to follow a predetermined timetable.
+This field is particularly useful for:
+
+- FX
+- Metals
+- Stocks
+
+## Format
+
+```plain
+Timezone;WeeklySchedule;Holidays
+```
+
+**If `schedule` is omitted for a symbol, pyth-agent will revert to the deprecated [`weekly_schedule`](schedule-format#weekly-schedule-format-deprecated) field.
+If `weekly_schedule` is also undefined, pyth-agent will default to 24/7 publishing, which was the standard behavior prior to this feature.**
+
+**Detailed Definitions**
+
+- `Timezone` - A human-readable tz database TZ identifier of the market’s local timezone, such as `America/New_York`.
+  **Full list of identifiers can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)**.
+  <InfoBox variant="info">
+    Daylight-saving time is automatically handled by the pyth-agent.
+  </InfoBox>
+- `WeeklySchedule` - A list of seven comma-separated `DaySchedule` entries that define the recurring weekly schedule of a product’s market hours.
+  Each `DaySchedule` entry corresponds to a day of the week, starting from Monday.
+  None of the comma-separated values can be omitted.
+- `Holidays` - A list of comma-separated `MonthDay/DaySchedule` entries.
+  Each entry specifies the schedule for a specific day of the year, overriding the `WeeklySchedule` for that date.
+  This list can be empty. `MonthDay` is a compact date format where the first two digits represent the month (01 for January, 12 for December),
+  and the last two digits represent the day of the month (e.g., `0415` for April 15th). **Leading zeros are mandatory**.
+- `DaySchedule` - A single day’s schedule. `DaySchedule` can be one of the following:
+
+  - `O` for all-day open
+  - `C` for all-day closed
+  - `HourMinute-HourMinute[&HourMinute-HourMinute[&...]]` for specific open and close times in the market-local timezone.
+    The hour and minute are combined into a single 4-digit number, where the first two digits represent the hour (00 to 24),
+    and the last two digits represent the minute (00 to 59).
+    For example, `0415` represents 4:15 AM. The open time must precede the close time, and the range is inclusive.
+
+    - `24` can only be used to specify `2400`, which represents the final moment of a given day.
+      - Context: Without this special case, the next best thing would be `2359` which could cause a symbol to go down between `2359` and the next day’s `0000` for a full minute.
+    - **Leading zeros are mandatory**.
+
+    If there are multiple open and close times per day (e.g., maintenance window) you can specify them by using `&` in between. For instance `0000-1200&1300-2400` means that the
+    market is open all day except between 12:00 and 13:00.
+
+**Examples**
+
+- `Europe/Lisbon;O,O,O,O,O,C,C;` - 24h open from Monday to Friday, according to Lisbon’s perspective of midnight. Closed on Saturdays and Sundays.
+- `America/New_York;0930-1630,0930-1630,0930-1630,0930-1630,0930-1630,C,C;` - Open 9:30AM - 4:30PM ET (EDT or EST)
+  from Monday to Friday. Closed outside specified ranges, on Saturdays and on Sundays. Based off real-life NASDAQ hours.
+- `Israel;0959-1714,0959-1714,0959-1714,0959-1714,C,C,0959-1539;` - Interesting edge case of the Tel-Aviv Stock Exchange. Open with reduced hours on Sundays, closed on Friday and Saturday. Note the slash-less timezone name.
+- `Africa/Johannesburg;C,C,C,C,C,C,C;` - Trivial made-up example. The market is not trading on any day - exact opposite of 24/7 trading. Pyth-agent instances observing this value will not publish the product at any time. Note: The timezone has no effect in this case.
+- `Europe/London;O,O,O,O,O,O,O;` - Trivial example. The market is open at all times and the timezone has no effect. Equivalent to default 24/7 behavior when `schedule` and `weekly_schedule` is not specified on a symbol.
+- `America/New_York;O,O,O,O,O,C,C;1224/0930-1300,1225/C` - An example of specifying holidays. The market closes early on Christmas Eve and is fully closed on Christmas Day.
+- `America/New_York;C,C,C,C,0930-1530&1830-2200,C,C;` - Only open Friday between 9:30AM - 3:30PM and 6:30PM - 10:00PM ET (EDT or EST)
+
+## Weekly Schedule Format (Deprecated)
+
+<InfoBox variant="warning">
+  This field is deprecated in favor of `schedule`.
+</InfoBox>
+
+This document outlines the rules for specifying contents of a new Pyth product metadata field - `weekly_schedule` . The field specifies the recurring weekly schedule of a product’s market hours. It serves as a reference for `pyth-agent` to stop publishing outside the hours specified in the schedule. Notable use cases include:
+
+- FX
+- Metals
+- Stocks
+
+## Format
+
+```plain
+Timezone,MHKind,MHKind,MHKind,MHKind,MHKind,MHKind,MHKind
+```
+
+**Note: None of the comma-separated values can be ommitted - exactly one timezone and seven subsequent per-day schedules are required. That said, ommitting `weekly_schedule` on a symbol is allowed and will cause pyth-agent to default to 24/7 publishing (the usual behavior before this feature)**
+
+**Detailed Definitions**
+
+- `Timezone` - A human-readable tz database TZ identifier of the market’s local timezone - e.g. `America/New_York`. **Full list of identifiers can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)**. Notes:
+  - Daylight-saving time - Handled automatically by pyth-agent code dealing with the format.
+- `MHKind` - A single week day’s schedule. The `MHKind` values describe week days from Monday to Sunday, in that order. `MHKind` is defined as one of:
+  - `O` - all-day open
+  - `C` - all-day closed
+  - `Hour:Minute-Hour:Minute` - specific open and close times in the market-local timezone. Open time must come before close time. **The range is inclusive.** Definitions:
+    - `Hour` - number of hours from `00` to `24` . Notes:
+      - Leading zeros are optional - e.g. `9` and `09`, `0` and `00` are equivalent.
+      - `24` can only be used to specify `24:00`. This value is used to express the final moment of a given day (split-second before `00:00` on the next day). Context: Without this special case, the next best thing would be `23:59` which could cause a symbol to go down between `23:59` and the next day’s `00:00` for a full minute.
+    - `Minute` - number of minutes from `00` to `59`. Notes:
+      - Leading zeros are **mandatory** - e.g. `9:05`, `9:00`, `15:07`
+
+**Examples**
+
+- `Europe/Lisbon,O,O,O,O,O,C,C` - 24h open from Monday to Friday, according to Lisbon’s perspective of midnight. Closed on Saturdays and Sundays.
+- `America/New_York,9:30-16:30,9:30-16:30,9:30-16:30,9:30-16:30,9:30-16:30,C,C` - Open 9:30AM - 4:30PM ET (EDT or EST) from Monday to Friday. Closed outside specified ranges, on Saturdays and on Sundays. Based off real-life NASDAQ hours.
+- `Israel,9:59-17:14,9:59-17:14,9:59-17:14,9:59-17:14,C,C,9:59-15:39` - Interesting edge case of the Tel-Aviv Stock Exchange. Open with reduced hours on Sundays, closed on Friday and Saturday. Note the slash-less timezone name.
+- `Africa/Johannesburg,C,C,C,C,C,C,C` - Trivial made-up example. The market is not trading on any day - exact opposite of 24/7 trading. Pyth-agent instances observing this value will not publish the product at any time. Note: The timezone has no effect in this case.
+- `Europe/London,O,O,O,O,O,O,O` - Trivial example. The market is open at all times and the timezone has no effect. Equivalent to default 24/7 behavior when `weekly_schedule` is not specified on a symbol.

+ 27 - 0
apps/developer-hub/content/docs/pyth-core/schedule-price-updates.mdx

@@ -0,0 +1,27 @@
+---
+title: "Schedule Pyth Price Updates Using Adrastia, Gelato, or Scheduler"
+description: >-
+  Use Adrastia, Gelato, or Scheduler to automate Pyth price updates on EVM
+  chains. Schedule on-chain price feed updates programmatically to ensure
+  timely, consistent data.
+full: false
+index: false
+---
+
+# How To Schedule Price Updates
+
+The following guides explain how to schedule Pyth price updates to occur at regular intervals.
+As a pull oracle, Pyth's users are typically responsible for updating the state of on-chain feeds.
+Please see [What is a Pull Oracle?](/price-feeds/pull-updates) to learn more about pull updates.
+
+The Pyth Data Association sponsors regular on-chain updates for some price feeds.
+See [Sponsored Feeds](/price-feeds/sponsored-feeds) for the current list of feeds and their update parameters.
+If you would like to see additional feeds on this list, please [contact the association via this form](https://tally.so/r/nGz2jj).
+
+There are also three different tools to schedule price updates:
+
+- [Adrastia's Pyth Price Feed Updater](schedule-price-updates/using-adrastia) is a white-glove service that automates price updates based on time and price deviations, supporting any EVM chain.
+- [Gelato](schedule-price-updates/using-gelato) provides a turnkey automation solution for scheduled updates.
+- [Scheduler](schedule-price-updates/using-scheduler) is a service that developers can run to trigger price updates when certain time or price change conditions are met.
+
+For developers comparing these three options, Adrastia and Gelato are simpler, in that they do not require you to operate a service.

+ 5 - 0
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/_meta.json

@@ -0,0 +1,5 @@
+{
+  "using-adrastia": "Using Adrastia",
+  "using-gelato": "Using Gelato",
+  "using-scheduler": "Using Scheduler"
+}

BIN
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/dedicated-msg-sender.png


BIN
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/deposit-usdc.png


BIN
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/storage-pyth-config.png


BIN
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/task-creation-gist-id.png


BIN
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/assets/guides/gelato/task-execution.png


+ 45 - 0
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-adrastia.mdx

@@ -0,0 +1,45 @@
+---
+title: "Pyth Core: Using Adrastia for Real-Time Price Updates"
+description: >-
+  Adrastia automates secure, real-time access to Pyth price feeds for DeFi
+  applications. It provides a straightforward integration process, performance
+  optimizations, and consistently reliable market data.
+full: false
+index: false
+---
+
+# Using Adrastia to Schedule Real-Time Price Updates
+
+## About Adrastia
+
+Established in 2021, [Adrastia](https://adrastia.io) is an automation platform founded by TRILEZ SOFTWARE INC. and leverages over a decade of experience in building and running AI agents to deliver reliable, high-performance automated systems. Adrastia operates with the core values of reliability, transparency, and prudence with a focus on enhancing the security, performance, and efficiency of DeFi systems.
+
+## Pyth Price Feed Updater
+
+Adrastia's Pyth Price Feed Updater is a managed white-glove solution that reliably pushes price updates with speed and efficiency when specified trigger conditions are met. The setup process is simple and Adrastia handles all the heavy lifting.
+
+## Process
+
+Adrastia is working on a decentralized, permissionless system for managing this service where you'll be able to effortlessly choose your preferred service provider and manage all details in an app. In the meantime, they've made the offchain integration process as simple as possible.
+
+1. Reach out to them via email ([support@adrastia.io](mailto:support@adrastia.io)) or [Discord](https://discord.adrastia.io/).
+2. Provide them with the price feed IDs for which you'd like to schedule price updates.
+3. They'll create a public (or private) GitHub repository for you to view the configuration and suggest changes.
+4. They'll send you a Service Agreement to authorize.
+5. They'll provide you with a set of Automatos (automation) worker addresses for you to fund with gas.
+6. They'll start the service and provide you with access to a data analytics dashboard.
+7. They'll provide you with a status page for your service, at your request.
+8. They'll bill you at the end of the month.
+
+## Configuration
+
+Every price feed supports updates based on either:
+
+1. The price changing by at least the specified threshold, or
+2. The heartbeat period being met (i.e. requiring at least one update every so often)
+
+Additionally, every feed also supports early update conditions as an extension of the above criteria. When one feed requires an update based on the regular criteria, additional criteria can be applied to preemptively update other specified price feeds. This early update mechanism saves gas by reducing the amount of update transactions, with the cost savings rooted in performing a minimal amount of proof validations.
+
+## More details
+
+This page covers the key aspects of Adrastia's Pyth Price Feed Updater. For more details including aspects like costs, analytics, terms, and technical specifications, please visit [Adrastia's documentation page](https://docs.adrastia.io/automatos/pyth-price-feed-updater).

+ 132 - 0
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-gelato.mdx

@@ -0,0 +1,132 @@
+---
+title: "Automate Pyth Price Updates with Gelato: Step-by-Step Guide"
+description: >-
+  Gelato automates Pyth price feeds on EVM chains by scheduling off-chain
+  updates. Configure, deploy, and monitor these updates to keep price data
+  synchronized.
+full: false
+index: false
+---
+
+# How to Schedule Price Updates with Gelato
+
+This guide explains how to create an automated Gelato task that updates Pyth price feeds on a schedule. The task will
+update the on-chain price after either a fixed time interval or if the price has changed by a certain percentage.
+
+### Introduction to Gelato
+
+[Gelato](https://www.gelato.network/) is web3’s decentralized backend empowering developers to create augmented smart contracts that are automated,
+gasless and off-chain aware on all major EVM-compatible blockchains. Gelato offers Web3 Functions (W3F) that connect your
+smart contracts to off-chain data and computation by running decentralized cloud functions.
+
+### Gelato W3F Pyth Task
+
+The Gelato W3F Pyth Task is a Gelato task that updates Pyth price feeds on a schedule.
+The task is deployed to IPFS and can be used by anyone to schedule price updates for any Pyth price feed.
+The task is configured via file called `config.yaml` which contains various parameters such as the price
+feeds to update, the update frequency, price deviation threshold.
+
+## Steps
+
+#### 1. Join Gelato Web3 Functions whitelist
+
+Web3 functions like Solidity functions and automated transactions can be used directly. However, to use TypeScript-based Web3 Functions, you must be added to the whitelist.
+To apply, please reach out to the Gelato team for access [here](https://discord.com/invite/ApbA39BKyJ).
+
+#### 2. Configure your task
+
+[//]: # "TODO: redirect this to pyth fork of repo)"
+
+The Gelato task reads a yaml configuration file from a GitHub gist.
+Create a GitHub gist by logging into GitHub and navigating to [here](https://gist.github.com/). Add a file called `config.yaml`.
+Copy the [example gist](https://gist.github.com/swimricky/18b2a5ad9c1a605f1cf5c19ac1d2f1d9) and edit the parameters for
+the environment you're deploying to and configure your price feeds and update thresholds. See
+[directory](https://github.com/pyth-network/w3f-pyth-poc-v2/tree/master/web3-functions/pyth-oracle-w3f-priceIds) for
+some example configuration files. These parameters can be updated at any time by editing the gist even if the task has
+already been deployed. The task will automatically pick up these configuration changes and use them for subsequent executions.
+
+#### 3. Create the task
+
+Use the link below to auto-populate the task parameters with the Pyth web3 function code:
+
+https://app.gelato.network/new-task?cid=QmTFQHpiThqkVKvuW2KU8cETNBdyXHB9uP34woL6Vc5w6g
+
+The pyth web3 function code is deployed to IPFS, so you can use it via the cid/link above.
+You can find a copy of the web3 function code [here](https://github.com/pyth-network/w3f-pyth-poc-v2/tree/master/web3-functions/pyth-oracle-w3f-priceIds)
+
+Choose network, and then in the "Task secrets" section, set `GIST_ID` to the gistId of the gist you created in step 2.
+![](./assets/guides/gelato/task-creation-gist-id.png)
+
+**Note that the free tier have certain limits, Checkout all subscription plans and choose the one that best fits your needs [here](https://app.gelato.network/1balance/subscriptions/functions?networkGroup=mainnets&type=monthly)**.
+
+#### 4. Fund the task
+
+There are two sets of fees that must be paid before the task can execute successfully :
+
+**Gelato Fees**
+
+Gelato's fees are paid through [1Balance](https://docs.gelato.network/web3-services/1balance). Once you are
+whitelisted, visit the 1Balance section on [Gelato app](https://app.gelato.network/1balance) and deposit USDC on Polygon to top up
+your Gelato balance which will be used to pay the Gelato fees on all supported chains. These include computational costs
+and transaction gas fees. Testnet executions are subsidized by Gelato and free.
+Note : You can deposit USDC from any chain supported by Circle CCTP.
+
+Deposit USDC
+![](./assets/guides/gelato/deposit-usdc.png)
+
+**Pyth Fees**
+
+Updating a pyth price feed requires the caller to pay a small fee. Pyth fees are paid in the native token of the chain
+where the task is running. The method that updates the price is payable and the update transaction has to include the
+corresponding fee in the `msg.value`.
+
+The on-chain transaction executed via a web3 function gets routed through a proxy smart contract
+which is solely owned by the web3 function task creator. This proxy smart contract is known as the `dedicatedMsgSender`
+and will be deployed the first time a task is created for a given wallet address.
+
+Pyth fees are paid by the `dedicatedMsgSender` and transaction fees as well as computational costs by 1Balance.
+You will need to transfer over the native tokens to `dedicatedMsgSender` on every chain where you want to run
+the task using a standard transfer. The `dedicatedMsgSender` address can be found in the Gelato App settings and on the Task dashboard as well.
+
+![](./assets/guides/gelato/dedicated-msg-sender.png)
+
+You can simply open your wallet and send native tokens to `dedicatedMsgSender` on the chain(s) where you want to run the
+task.
+
+#### 5. Check task execution
+
+Once your task has been successfully created, you can check the task execution details on the Task dashboard in the Gelato app.
+
+![](./assets/guides/gelato/task-execution.png)
+
+## Managing your Gelato Task
+
+#### Monitoring
+
+To ensure that your tasks are running as expected, you can set up monitoring. Gelato supports monitoring 1Balance and
+address balances as well as execution statuses for tasks. You can set up monitoring for your Gelato balance and
+the `dedicatedMsgSender` address on each chain where you are running tasks and receive notifications in either
+Telegram or Discord.
+
+See the following links for more information:
+
+- [1Balance Alerts](https://docs.gelato.network/web3-services/1balance/1balance-alerts)
+- [Balance Alerts](https://docs.gelato.network/web3-services/web3-functions/analytics-and-monitoring)
+
+#### Updating configuration
+
+To update the configuration of your task, such as adding/removing new price feeds or changing the deviation thresholds,
+you can simply update the `config.yaml` file in your gist. The task will automatically pick up the changes and use them.
+Note that the `config.yaml` includes a `configRefreshRateInSeconds` parameter which determines how often the task will
+fetch the latest configuration from the gist vs reading a locally cached version. This is to prevent the task from being
+rate-limited by GitHub. To verify that your most recent task execution used the latest configuration, you can check the
+"Storage" tab on the task details page and look at the configuration stored under the `pythConfig` key.
+
+![](./assets/guides/gelato/storage-pyth-config.png)
+
+## Notes
+
+If you want to customize the behavior of the web3 function beyond what is supported by updating the config.yaml, you can
+clone this [repo](https://github.com/pyth-network/w3f-pyth-poc-v2) and deploy your own version of the web3 function.
+You can then use the cid of your deployed web3 function to create a new task. See [README.md](https://github.com/pyth-network/w3f-pyth-poc-v2/tree/master/web3-functions/pyth-oracle-w3f-priceIds/README.md) and
+[Gelato Web3 Function Documentation](https://docs.gelato.network/web3-services/web3-functions) for more details.

+ 21 - 0
apps/developer-hub/content/docs/pyth-core/schedule-price-updates/using-scheduler.mdx

@@ -0,0 +1,21 @@
+---
+title: "Pyth Scheduler: Schedule Off-Chain Price Updates Guide"
+description: >-
+  Pyth’s off-chain scheduler triggers on-chain price updates when predefined
+  conditions are met, maintaining reliable blockchain integration and supporting
+  seamless migration from existing oracles with minimal downtime.
+full: false
+index: false
+---
+
+# Scheduler
+
+The [scheduler](https://github.com/pyth-network/pyth-crosschain/tree/main/apps/price_pusher) (previously known as "price pusher")
+is an off-chain application that regularly pulls price updates on to a blockchain.
+Anyone can run this service to regularly update the on-chain Pyth price based on various conditions, such as a minimum update frequency, or a price change threshold.
+This service can simplify the process of migrating to Pyth from other oracles.
+Protocols that currently depend on regular push updates can simply run this service.
+Please see the README linked above for additional information about this service.
+
+In addition, you can find an in-depth explanation from one of Pyth's contributors, Ali:
+[How to Build with Pyth Data on EVM Chains (with Pusher): Pyth Tutorials](https://youtu.be/yhmo81JOH10)

+ 33 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds.mdx

@@ -0,0 +1,33 @@
+---
+title: "Pyth Data Association Sponsored Feeds: Networks & Updates"
+description: >-
+  Pyth Data Association provides real-time price updates across EVM, Solana,
+  Aptos, Sui, and Movement. It supports sponsored feeds through a simple
+  integration.
+full: false
+index: false
+---
+
+# Sponsored Feeds
+
+The Pyth Data Association sponsors price updates for some feeds on some networks.
+Sponsored feeds are updated at a specific heartbeat rate or when the price changes by a specific percentage.
+Developers don't need to [pull prices](./fetch-price-updates.mdx) for sponsored feeds, unless they required short update intervals.
+
+The sponsored feeds can vary by network. Please see the relevant section below for the network of interest.
+
+- [EVM](sponsored-feeds/evm)
+- [Solana](sponsored-feeds/solana)
+- [Aptos](sponsored-feeds/aptos)
+- [Sui](sponsored-feeds/sui)
+- [Movement](sponsored-feeds/movement)
+
+<InfoBox variant="warning">
+  DISCLAIMER: While the Pyth Data Association strives to deliver timely updates,
+  these sponsored feeds may occasionally experience delays in updates caused by
+  chain halts, gas estimations and other issues. Applications are advised to run
+  their own scheduler. Find out how you can run your own scheduler
+  [here](/price-feeds/schedule-price-updates/using-scheduler).
+</InfoBox>
+
+If you would like to see additional feeds on this list, please fill in this [form](https://tally.so/r/nGz2jj) to signal your interest.

+ 7 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/_meta.json

@@ -0,0 +1,7 @@
+{
+  "evm": "EVM",
+  "solana": "Solana / SVM",
+  "aptos": "Aptos",
+  "movement": "Movement",
+  "sui": "Sui"
+}

+ 38 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/aptos.mdx

@@ -0,0 +1,38 @@
+---
+title: "Sponsored Price Feeds on Aptos: IDs & Update Parameters"
+description: >-
+  API access to Aptos price feeds updated every 15 seconds with a maximum
+  deviation of ±0.5%. Data is sponsored to ensure consistent availability for
+  market monitoring and trading applications.
+full: false
+index: false
+---
+
+# Sponsored Feeds on Aptos
+
+The price feeds listed in the table below are currently sponsored in **Aptos mainnet**.
+
+Update Parameters: **15 second heartbeat or 0.5% price deviation**
+
+| Name            | Price Feed Id                                                      |
+| --------------- | ------------------------------------------------------------------ |
+| APT/USD         | `03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5` |
+| BTC/USD         | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD         | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| SOL/USD         | `ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d` |
+| USDC/USD        | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD        | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| CAKE/USD        | `2356af9529a1064d41e32d617e2ce1dca5733afa901daba9e2b68dee5d53ecf9` |
+| SUI/USD         | `23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744` |
+| CETUS/USD       | `e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef` |
+| BNB/USD         | `2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f` |
+| WBTC/USD        | `c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33` |
+| THL/USD         | `74e3fbb0d33e0ed8c0078b56134dcebdae38852f0858a8ea4de4c5ea7474bd42` |
+| USDY/USD        | `e393449f6aff8a4b6d3e1165a7c9ebec103685f3b41e60db4277b5b6d10e7326` |
+| WETH/USD        | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| THAPT/USD       | `b29276972267db5d64ae718fb7f107ad9e72a79cabf9992f0e9bc75ad451a7f6` |
+| STONE/USD       | `4dcc2fb96fb89a802ef9712f6bd2246d3607cf95ca5540cb24490d37003f8c46` |
+| MOD/USD         | `9a2a116d85a31d6f1bed19771105557276457094e31791a892758148aa54023d` |
+| SUSDE/USD       | `ca3ba9a619a4b3755c10ac7d5e760275aa95e9823d38a84fedd416856cdba37c` |
+| USDE/USD        | `6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d` |
+| STHAPT/THAPT.RR | `ea07fce25d7d716fe6ad10b267451011baadc8f3724b28487026072ddce3ba1b` |

+ 275 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/evm.mdx

@@ -0,0 +1,275 @@
+---
+title: "Pyth EVM Sponsored Feeds: Asset Pairs & Hashes"
+description: >-
+  Streamline DApp development with sponsored EVM price feeds on Ethereum, Base,
+  and Berachain. Access feed IDs and update parameters for seamless integration.
+full: false
+index: false
+---
+
+# Sponsored Feeds on EVM
+
+The following EVM chains have sponsored price feeds:
+
+- [Ethereum Mainnet](#ethereum-mainnet)
+- [Base Mainnet](#base-mainnet)
+- [Berachain Mainnet](#berachain-mainnet)
+- [HyperEVM Mainnet](#hyperevm-mainnet)
+- [Kraken Mainnet](#kraken-mainnet)
+- [Unichain Mainnet](#unichain-mainnet)
+- [Mode Mainnet](#mode-mainnet)
+- [Sonic Mainnet](#sonic-mainnet)
+- [Story Mainnet](#story-mainnet)
+- [Optimism Sepolia](#optimism-sepolia)
+- [Unichain Sepolia](#unichain-sepolia)
+- [Ble Testnet](#ble-testnet)
+
+## Ethereum Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Ethereum mainnet**.
+
+Update Parameters: **1 hour heartbeat or 2% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| USDC/USD   | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| UNI/USD    | `78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501` |
+| PYTH/USD   | `0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff` |
+| USR/USD    | `10b013adec14c0fe839ca0fe54cec9e4d0b6c1585ac6d7e70010dac015e57f9c` |
+| WSTUSR/USR | `b74c2bc175c2dab850ce5a5451608501c293fe8410cb4aba7449dd1c355ab706` |
+| USDTB/NAV  | `967549f1ff4869f41cb354a7116b9e5a9a3091bebe0b2640eeed745ca1f7f90b` |
+
+## Base Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Base mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| USDC/USD   | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| ETH/USD    | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| WETH/USD   | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| PUFETH/USD | `e5801530292c348f322b7b4a48c1c0d59ab629846cce1c816fc27aee2054b560` |
+| WEETH/USD  | `9ee4e7c60b940440a261eb54b6d8149c23b580ed7da3139f7f08f4ea29dad395` |
+| EZETH/USD  | `06c217a791f5c4f988b36629af4cb88fad827b2485400a358f3b02886b54de92` |
+| CBETH/USD  | `15ecddd26d49e1a8f1de9376ebebc03916ede873447c1255d2d5891b92ce5717` |
+| WSTETH/USD | `6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784` |
+| RSETH/USD  | `0caec284d34d836ca325cf7b3256c078c597bc052fbd3c0283d52b581d68d71f` |
+| PYTH/USD   | `0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff` |
+| SUI/USD    | `23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744` |
+| XRP/USD    | `ec5d399846a9209f3fe5881d70aae9268c94339ff9817e8d18ff19fa05eea1c8` |
+| USR/USD    | `10b013adec14c0fe839ca0fe54cec9e4d0b6c1585ac6d7e70010dac015e57f9c` |
+| USR/USD.RR | `512a79cc65f49531f0bbb72956353e79ecdc1e4a6e5241847196c1f9a11d8a52` |
+| RLP/USD    | `7265d5cf8ee0e7b5266f75ff19c42c5b7697a9756c9304aa78b6be4fbb8d823d` |
+| RLP/USD.RR | `796bcb684fdfbba2b071c165251511ab61f08c8949afd9e05665a26f69d9a839` |
+
+## Berachain Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Berachain mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name                  | Price Feed Id                                                      |
+| --------------------- | ------------------------------------------------------------------ |
+| BERA/USD              | `962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265` |
+| BERASTONE/USD         | `950fe827fa92b73e81cd49043673e9132a8424b24e35989156606073f2385e21` |
+| BERASTONE/ETH.RR      | `b8004b055f64f9e13468e0bff616bb87232c241a962cdf87c7a781ec31194803` |
+| BTC/USD               | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD               | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| LIQUIDBERABTC/WBTC.RR | `c869104c9feab6b6b303add2d48fa7443fc119493f8d8cafd4df23890659ed78` |
+| LIQUIDBERAETH/ETH.RR  | `bedaf537ab909117259282b9463b0f54d67dd575d64dcd564bfbdbfc0f57f99d` |
+| USDC/USD              | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD              | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| PYUSD/USD             | `c1da1b73d7f01e7ddd54b3766cf7fcd644395ad14f70aa706ec5384c59e76692` |
+| SUSDE/USDE.RR         | `271c64ce459937abf721d42552035713b6c58f80eeceab716a624607fda4b10f` |
+| HONEY/USD             | `f67b033925d73d43ba4401e00308d9b0f26ab4fbd1250e8b5407b9eaade7e1f4` |
+| RSETH/USD             | `0caec284d34d836ca325cf7b3256c078c597bc052fbd3c0283d52b581d68d71f` |
+| RSETH/ETH.RR          | `56e9b5eb08e62dd4b445f29e4ec7d3b3d49617d64f2d331d36a2101d4904e3c4` |
+| IBGT/USD              | `c929105a1af143cbfc887c4573947f54422a9ca88a9e622d151b8abdf5c2962f` |
+| STBGT/USD             | `ffd5448b844f5e7eeafbf36c47c7d4791a3cb86f5cefe02a7ba7864b22d81137` |
+| HENLO/USD             | `d90813d7fc7f4f5d786f3a6a35701aff4f628db0ecd998de66be0ff8264c67a2` |
+| IBERA/USD             | `eb943c0b5c9e02a529f799ac91070c3b7046f9412f3e5b0a90ba00267b838f34` |
+| NECT/USD              | `ddf0dd319060db4561b5aa8f84a94816d33579f8dc2af2d8f74583bce20cd260` |
+| HONEY/USD.RR          | `8bb3695875f9c33594097b0e0a1daa881aa81290088f0eac3a07b700fc7612ba` |
+
+## HyperEVM Mainnet
+
+The price feeds listed in the table below are currently sponsored in **HyperEVM mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name              | Price Feed Id                                                      |
+| ----------------- | ------------------------------------------------------------------ |
+| BTC/USD           | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD           | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| USDC/USD          | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD          | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| HYPE/USD          | `4279e31cc369bbcc2faf022b382b080e32a8e689ff20fbc530d2a603eb6cd98b` |
+| HFUN/USD          | `61db931fcfd322223fb84dc4bfc9c6481bd5610a31403782bc396df213e3ce12` |
+| PURR/USD          | `e0154bf4dfbcf835fad3428c0d8c1078b83f687e4d6afafb827f7f9af70ec326` |
+| SOL/USD           | `ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d` |
+| WSTETH/USD        | `6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784` |
+| WSTETH/STETH.RR   | `f59ead01ed0faba85332a1e2feae8ddb14a1c94ebac259f1c982c92fc7ce333e` |
+| WEETH/USD         | `9ee4e7c60b940440a261eb54b6d8149c23b580ed7da3139f7f08f4ea29dad395` |
+| WEETH/EETH.RR     | `343558e79f587e098c321218ecb34d031ba709ab3e84133126f3c98511b91f64` |
+| LBTC/USD          | `8f257aab6e7698bb92b15511915e593d6f8eae914452f781874754b03d0c612b` |
+| LBTC/BTC.RR       | `bade5c63f281d36a13dbb64ed0ae1c532a434b6771b11885f396a41f56cc3bd0` |
+| CBBTC/USD         | `2817d7bfe5c64b8ea956e9a26f573ef64e72e4d7891f2d6af9bcc93f7aff9a97` |
+| WBTC/USD          | `c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33` |
+| WETH/USD          | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| USDE/USD          | `6ec879b1e9963de5ee97e9c8710b742d6228252a5e2ca12d4ae81d7fe5ee8c5d` |
+| SUSDE/USD         | `ca3ba9a619a4b3755c10ac7d5e760275aa95e9823d38a84fedd416856cdba37c` |
+| SUSDE/USDE.RR     | `271c64ce459937abf721d42552035713b6c58f80eeceab716a624607fda4b10f` |
+| WSTHYPE/STHYPE.RR | `1a78b5829a99f1d2897917dae2a02266c0210535a995a2e9d0692613bbc89e27` |
+| LHYPE/USD         | `9e3cadc2a8a0ebfd765b34d5ee5de77a4add3114672fc0b8d3ad09ac56940069` |
+| FHYPE/HYPE.RR     | `8f749681c078ce4ef65cd220994f25735b80264fca4386dd57b31eacf7e4610b` |
+| USDXL/USD         | `e10593860e9ee1c204e4f9569e877502f098dd1a4d84cc5bad06f23f77dcbfe2` |
+| MHYPE/HYPE.RR     | `e35aebd2d35795acaa2b0e59f3b498510e8ef334986d151d1502adb9e26234f7` |
+| FEUSD/USD         | `7f2e9a7365eb634c543e9ca72683a9cf778cdc16ee5b8bca73abe6d08c1410d5` |
+| MHYPE/USD         | `a7fb4cdafed5130e8731b8da7c9208881f24e9b671bb92438b1fbf361d578112` |
+| STHYPE/USD        | `068cd0617cbdd1dda615ed2b5ab4fe07d2e9f46347f5e785484844aa10d22dc5` |
+| UETH/USD          | `08c73e187b45ecb2ab8375b975865d3c4a225fef1ccc7f326ad6eec66a24567a` |
+| UBTC/USD          | `42bfb26778f3504a9f359a92c731f77d0c24aed9b7745276e3ad0c2d840b74c2` |
+| CMETH/METH.RR     | `cef5ad3be493afef85e77267cb0c07d048f3d54055409a34782996607e48cf0a` |
+| METH/ETH.RR       | `ee279eeb2fec830e3f535ad4d6524eb35eb1c6890cb1afc0b64554d08c88727e` |
+
+## Kraken Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Kraken mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name        | Price Feed Id                                                      |
+| ----------- | ------------------------------------------------------------------ |
+| USDC/USD    | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD    | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| ETH/USD     | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| WETH/USD    | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| WSTETH/USD  | `6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784` |
+| BTC/USD     | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| KBTC/BTC.RR | `5dd5ede8b038c39f015746942820595ed69f30c00c3d3700f01d9ec55e027700` |
+
+## Unichain Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Unichain mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name     | Price Feed Id                                                      |
+| -------- | ------------------------------------------------------------------ |
+| BTC/USD  | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD  | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| UNI/USD  | `78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501` |
+| USDC/USD | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| PYTH/USD | `0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff` |
+
+## Mode Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Mode mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| wUSDM/USDM | `3d392a0fc3ae7fac4d6ba15e99a4c2bec2debbe1c9fc7d950ec0972ee716f559` |
+| USDM/USD   | `a6a0dfa49b6b3a93510658245618099f5e842514970f596cf64fad9e0d658193` |
+| STONE/ETH  | `7a508a94c9276cbc60d04e1a8cf839d20d835bb869a74487dfffa8f1bfd1ce42` |
+
+## Sonic Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Sonic mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name               | Price Feed Id                                                      |
+| ------------------ | ------------------------------------------------------------------ |
+| USDC/USD           | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| ETH/USD            | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| WETH/USD           | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| WBTC/USD           | `c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33` |
+| BTC/USD            | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| USDT/USD           | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| S/USD              | `f490b178d0c85683b7a0f2388b40af2e6f7c90cbe0f96b31f315f08d0e5a2d6d` |
+| SCUSD/USD          | `316b1536978bee10c47b3c74c0b3995aabae973a3351621680a2aa383aca77b8` |
+| SCETH/USD          | `8bb5e69ed1ab19642a0e7e851b1ed7b3579d0548bc8ddd1077b0d9476bb1dabc` |
+| WSTKSCETH/SCETH.RR | `b680422b70915df562e4802bd8679112ff0f6b0a29ec2c3762ae2720eda01e58` |
+| WSTKSCUSD/SCUSD.RR | `caed0964240861da425cf03fae9737473f6f031fb80cbbd73c3fb8cddd7a2204` |
+| STS/S.RR           | `3b14bd355f182fa3a3feeea6824228e1f71e7c221a37bc91e8307280aee6a803` |
+| ANON/USD           | `7a36855b8a4a6efd701ed82688694bbf67602de9faae509ae28f91065013cb82` |
+| OS/USD             | `2bcd65e3c1b4580a5f59755ef30e11077238217dd418d301dd7ee4d252987675` |
+| GOGLZ/USD          | `82465d1155ddbb2c73bf3491457163000f8e8d02dea90c548b1b7e56ae9fe4b1` |
+| SHADOW/USD         | `6f02ad2b8a307411fc3baedb9876e83efe9fa9f5b752aab8c99f4742c9e5f5d5` |
+| WANS/ANS.RR        | `940b0948d828c46bff5fc3a3204fc032092b5b4239ef9364f33e01d37437ba65` |
+| STS/USD            | `19f463beb47cb398cf2e2c8037f1d0073583cf18209c91a636f051d755ce0662` |
+
+## Story Mainnet
+
+The price feeds listed in the table below are currently sponsored in **Story mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| USDC/USD   | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD   | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| ETH/USD    | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| WETH/USD   | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| WBTC/USD   | `c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33` |
+| BTC/USD    | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| IP/USD     | `b620ba83044577029da7e4ded7a2abccf8e6afc2a0d4d26d89ccdd39ec109025` |
+| STIP/IP.RR | `1997bb9bdde99431e222562f1d659c901a075fbf82502a8155d96fb2c7e33991` |
+| VIP/IP.RR  | `34471f3bcaecba4cf2b6f25bc6c365216869add332d0ed2e88e542e3a3bcc2c7` |
+
+## Optimism Sepolia
+
+The price feeds listed in the table below are currently sponsored in **Optimism Sepolia**.
+
+Update Parameters: **30 seconds heartbeat or 1% price deviation**
+
+| Name     | Price Feed Id                                                      |
+| -------- | ------------------------------------------------------------------ |
+| USDC/USD | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| ETH/USD  | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+
+## Unichain Sepolia
+
+The price feeds listed in the table below are currently sponsored in **Unichain Sepolia**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| BTC/USD    | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD    | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| STETH/USD  | `3af6a3098c56f58ff47cc46dee4a5b1910e5c157f7f0b665952445867470d61f` |
+| UNI/USD    | `78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501` |
+| USDC/USD   | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| USDT/USD   | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| WSTETH/USD | `6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784` |
+| WETH/USD   | `9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6` |
+| AVAX/USD   | `93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7` |
+| POL/USD    | `ffd11c5a1cfd42f80afb2df4d9f264c15f956d68153335374ec10722edd70472` |
+| DOGE/USD   | `dcef50dd0a4cd2dcc17e45df1676dcb336a11a61c69df7a0299b0150c672d25c` |
+| SHIB/USD   | `f0d57deca57b3da2fe63a493f4c25925fdfd8edf834b20f93e1f84dbd1504d4a` |
+| DAI/USD    | `b0948a5e5313200c632b51bb5ca32f6de0d36e9950a942d19751e833f70dabfd` |
+| OP/USD     | `385f64d993f7b77d8182ed5003d97c60aa3361f3cecfe711544d2d59165e9bdf` |
+| PYTH/USD   | `0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff` |
+
+## Ble Testnet
+
+The price feeds listed in the table below are currently sponsored in **Ble Testnet**.
+
+Update Parameters: **30 seconds heartbeat or 1% price deviation**
+
+| Name       | Price Feed Id                                                      |
+| ---------- | ------------------------------------------------------------------ |
+| BTC/USD    | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| ETH/USD    | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| USDE/USD   | `3af6a3098c56f58ff47cc46dee4a5b1910e5c157f7f0b665952445867470d61f` |
+| SUSDE/USD  | `78d185a741d07edb3412b09008b7c5cfb9bbbd7d568bf00ba737b456ba171501` |
+| ENA/USD    | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| SUSDE/USDE | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| USDTB/NAV  | `967549f1ff4869f41cb354a7116b9e5a9a3091bebe0b2640eeed745ca1f7f90b` |
+| USDTB/USD  | `e4731214382d8ed70a766930a7722c68064fc7ed4e6d70dbce3c84d4be81bc92` |

+ 38 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/movement.mdx

@@ -0,0 +1,38 @@
+---
+title: "Sponsored Price Feeds on Movement Mainnet: Key Updates"
+description: >-
+  Movement mainnet provides on-chain sponsored price feeds with hourly updates
+  and a 1% deviation threshold. See the full list of available feeds.
+full: false
+index: false
+---
+
+# Sponsored Feeds on Movement
+
+The price feeds listed in the table below are currently sponsored in **Movement mainnet**.
+
+Update Parameters: **1 hour heartbeat or 1% price deviation**
+
+| Name            | Price Feed Id                                                    |
+| --------------- | ---------------------------------------------------------------- |
+| MOVE/USD        | 6bf748c908767baa762a1563d454ebec2d5108f8ee36d806aadacc8f0a075b6d |
+| APT/USD         | 03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5 |
+| USDC/USD        | eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a |
+| USDT/USD        | 2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b |
+| SUSDE/USD       | ca3ba9a619a4b3755c10ac7d5e760275aa95e9823d38a84fedd416856cdba37c |
+| WETH/USD        | 9d4294bbcd1174d6f2003ec365831e64cc31d9f6f15a2b85399db8d5000960f6 |
+| MOD/USD         | 9a2a116d85a31d6f1bed19771105557276457094e31791a892758148aa54023d |
+| THAPT/USD       | b29276972267db5d64ae718fb7f107ad9e72a79cabf9992f0e9bc75ad451a7f6 |
+| STHAPT/APT.RR   | ea07fce25d7d716fe6ad10b267451011baadc8f3724b28487026072ddce3ba1b |
+| FRAX/USD        | c3d5d8d6d17081b3d0bbca6e2fa3a6704bb9a9561d9f9e1dc52db47629f862ad |
+| LBTC/USD        | 8f257aab6e7698bb92b15511915e593d6f8eae914452f781874754b03d0c612b |
+| LBTC/BTC.RR     | bade5c63f281d36a13dbb64ed0ae1c532a434b6771b11885f396a41f56cc3bd0 |
+| ETH/USD         | ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace |
+| BTC/USD         | e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 |
+| WBTC/USD        | c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33 |
+| AVALON.USDA/USD | 37c307959acbb353e1451bcf7da9d305c8cb8d54c64353588aaf900ffcffdd7d |
+| WSTETH/USD      | 6df640f3b8963d8f8358f791f352b8364513f6ab1cca5ed3f1f7b5448980e784 |
+| SOLVBTC/USD     | f253cf87dc7d5ed5aa14cba5a6e79aee8bcfaef885a0e1b807035a0bbecc36fa |
+| WEETH/USD       | 9ee4e7c60b940440a261eb54b6d8149c23b580ed7da3139f7f08f4ea29dad395 |
+| WEETH/ETH.RR    | 343558e79f587e098c321218ecb34d031ba709ab3e84133126f3c98511b91f64 |
+| EZETH/USD       | 06c217a791f5c4f988b36629af4cb88fad827b2485400a358f3b02886b54de92 |

+ 67 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/solana.mdx

@@ -0,0 +1,67 @@
+---
+title: "Sponsored Price Feeds on Solana: Assets, Accounts & Parameters"
+description: >-
+  Access Solana’s sponsored price feeds: get mainnet & devnet configurations,
+  account addresses, update parameters, and essential asset feed IDs.
+full: false
+index: false
+---
+
+# Sponsored Feeds on Solana
+
+The price feeds listed in the table below are currently sponsored in **Solana mainnet and devnet**.
+
+Update Parameters for BTC, WBTC, SOL, JITOSOL , BONK and USDC: **60 seconds heartbeat or 0.02% price deviation**
+
+Update Parameters for other assets: **60 seconds heartbeat or 0.5% price deviation**
+
+The addresses represent the price feed account for shard 0 of the relevant price feed id:
+
+| Name         | Account Address                                | Price Feed Id                                                      |
+| ------------ | ---------------------------------------------- | ------------------------------------------------------------------ |
+| SOL/USD      | `7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE` | `ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d` |
+| JITOSOL/USD  | `AxaxyeDT8JnWERSaTKvFXvPKkEdxnamKSqpWbsSjYg1g` | `67be9f519b95cf24338801051f9a808eff0a578ccb388db73b7f6fe1de019ffb` |
+| MSOL/USD     | `5CKzb9j4ChgLUt8Gfm5CNGLN6khXKiqMbnGAW4cgXgxK` | `c2289a6a43d2ce91c6f55caec370f4acc38a2ed477f58813334c6d03749ff2a4` |
+| BSOL/USD     | `5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE` | `89875379e70f8fbadc17aef315adf3a8d5d160b811435537e03c97e8aac97d9c` |
+| SSOL/SOL     | `2doCYXwYNt2FhzfCdgpW4YAwczvdzB27xtJkzQd5Kre2` | `add6499a420f809bbebc0b22fbf68acb8c119023897f6ea801688e0d6e391af4` |
+| BONK/USD     | `DBE3N8uNjhKPRHfANdwGvCZghWXyLPdqdSbEW2XFwBiX` | `72b021217ca3fe68922a19aaf990109cb9d84e9ad004b4d2025ad6f529314419` |
+| W/USD        | `BEMsCSQEGi2kwPA4mKnGjxnreijhMki7L4eeb96ypzF9` | `eff7446475e218517566ea99e72a4abec2e1bd8498b43b7d8331e29dcb059389` |
+| KMNO/USD     | `ArjngUHXrQPr1wH9Bqrji9hdDQirM6ijbzc1Jj1fXUk7` | `b17e5bc5de742a8a378b54c9c75442b7d51e30ada63f28d9bd28d3c0e26511a0` |
+| MEW/USD      | `EF6U755BdHMXim8RBw6XSC6Yk6XaouTKpwcBZ7QkcanB` | `514aed52ca5294177f20187ae883cec4a018619772ddce41efcc36a6448f5d5d` |
+| TNSR/USD     | `9TSGDwcPQX4JpAvZbu2Wp5b68wSYkQvHCvfeBjYcCyC`  | `05ecd4597cd48fe13d6cc3596c62af4f9675aee06e2e0b94c06d8bee2b659e05` |
+| USDC/USD     | `Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX` | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` |
+| BTC/USD      | `4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo` | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` |
+| JTO/USD      | `7ajR2zA4MGMMTqRAVjghTKqPPn4kbrj3pYkAVRVwTGzP` | `b43660a5f790c69354b0729a5ef9d50d68f1df92107540210b9cccba1f947cc2` |
+| USDT/USD     | `HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM`  | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` |
+| JUP/USD      | `7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5` | `0a0408d619e9380abad35060f9192039ed5042fa6f82301d0e48bb52be830996` |
+| ETH/USD      | `42amVS4KgzR9rA28tkVYqVXjq9Qa8dcZQMbH5EYFX6XC` | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` |
+| PYTH/USD     | `8vjchtMuJNY4oFQdTi8yCe6mhCaNBFaUbktT482TpLPS` | `0bbf28e9a841a1cc788f6a361b17ca072d0ea3098a1e5df1c3922d06719579ff` |
+| HNT/USD      | `4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33` | `649fdd7ec08e8e2a20f425729854e90293dcbe2376abc47197a14da6ff339756` |
+| RENDER/USD   | `HAm5DZhrgrWa12heKSxocQRyJWGCtXegC77hFQ8F5QTH` | `3d4a2bd9535be6ce8059d75eadeba507b043257321aa544717c56fa19b49e35d` |
+| ORCA/USD     | `4CBshVeNBEXz24GZpoj8SrqP5L7VGG3qjGd6tCST1pND` | `37505261e557e251290b8c8899453064e8d760ed5c65a779726f2490980da74c` |
+| SAMO/USD     | `2eUVzcYccqXzsDU1iBuatUaDCbRKBjegEaPPeChzfocG` | `49601625e1a342c1f90c3fe6a03ae0251991a1d76e480d2741524c29037be28a` |
+| WIF/USD      | `6B23K3tkb51vLZA14jcEQVCA1pfHptzEHFA93V5dYwbT` | `4ca4beeca86f0d164160323817a4e42b10010a724c2217c6ee41b54cd4cc61fc` |
+| LST/USD      | `7aT9A5knp62jVvnEW33xaWopaPHa3Y7ggULyYiUsDhu8` | `12fb674ee496045b1d9cf7d5e65379acb026133c2ad69f3ed996fb9fe68e3a37` |
+| INF/USD      | `Ceg5oePJv1a6RR541qKeQaTepvERA3i8SvyueX9tT8Sq` | `f51570985c642c49c2d6e50156390fdba80bb6d5f7fa389d2f012ced4f7d208f` |
+| PRCL/USD     | `6a9HN13ZFf57WZd4msn85KWLe5iTayqS8Ee8gstQkxqm` | `5bbd1ce617792b476c55991c27cdfd89794f9f13356babc9c92405f5f0079683` |
+| RAY/USD      | `Hhipna3EoWR7u8pDruUg8RxhP5F6XLh6SEHMVDmZhWi8` | `91568baa8beb53db23eb3fb7f22c6e8bd303d103919e19733f2bb642d3e7987a` |
+| FIDA/USD     | `2cfmeuVBf7bvBJcjKBQgAwfvpUvdZV7K8NZxUEuccrub` | `c80657b7f6f3eac27218d09d5a4e54e47b25768d9f5e10ac15fe2cf900881400` |
+| MNDE/USD     | `GHKcxocPyzSjy7tWApQjKRkDNuVXd4Kk624zhuaR7xhC` | `3607bf4d7b78666bd3736c7aacaf2fd2bc56caa8667d3224971ebe3c0623292a` |
+| MOBILE/USD   | `DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx` | `ff4c53361e36a9b837433c87d290c229e1f01aec5ef98d9f3f70953a20a629ce` |
+| IOT/USD      | `8UYEn5Weq7toHwgcmctvcAxaNJo3SJxXEayM57rpoXr9` | `6b701e292e0836d18a5904a08fe94534f9ab5c3d4ff37dc02c74dd0f4901944d` |
+| NEON/USD     | `F2VfCymdNQiCa8Vyg5E7BwEv9UPwfm8cVN6eqQLqXiGo` | `d82183dd487bef3208a227bb25d748930db58862c5121198e723ed0976eb92b7` |
+| AUD/USD      | `6pPXqXcgFFoLEcXfedWJy3ypNZVJ1F3mgipaDFsvZ1co` | `67a6f93030420c1c9e3fe37c1ab6b77966af82f995944a9fefce357a22854a80` |
+| GBP/USD      | `G25Tm7UkVruTJ7mcbCxFm45XGWwsH72nJKNGcHEQw1tU` | `84c2dde9633d93d1bcad84e7dc41c9d56578b7ec52fabedc1f335d673df0a7c1` |
+| EUR/USD      | `Fu76ChamBDjE8UuGLV6GP2AcPPSU6gjhkNhAyuoPm7ny` | `a995d00bb36a63cef7fd2c287dc105fc8f3d93779f062f09551b0af3e81ec30b` |
+| XAG/USD      | `H9JxsWwtDZxjSL6m7cdCVsWibj3JBMD9sxqLjadoZnot` | `f2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e` |
+| XAU/USD      | `2uPQGpm8X4ZkxMHxrAW1QuhXcse1AHEgPih6Xp9NuEWW` | `765d2ba906dbc32ca17cc11f5310a89e9ee1f6420508c63861f2f8ba4ee34bb2` |
+| INJ/USD      | `GwXYEfmPdgHcowF9GZwbb1WiTGTn1fuT3hbSLneoBKK6` | `7a5bc1d2b56ad029048cd63964b3ad2776eadf812edc1a43a31406cb54bff592` |
+| SLND/USD     | `6vPfd6612huknxXaDapfj6cVmB8NvCwKm3BHKFxzo1EZ` | `f8d030e4ef460b91ad23eabbbb27aec463e3c30ecc8d5c4b71e92f54a36ccdbd` |
+| WEN/USD      | `CsG7wXoqZKNxx4UnFtvozfwXQ9RgpKe7zSJa4LWh5MT9` | `5169491cd7e2a44c98353b779d5eb612e4ac32e073f5cc534303d86307c2f1bc` |
+| BLZE/USD     | `FFv5yoCGhEgWv6mXhwv4KX8A2dYcVAzi88a6Yu8Tf3iB` | `93c3def9b169f49eed14c9d73ed0e942c666cf0e1290657ec82038ebb792c2a8` |
+| JLP/USD      | `2TTGSRSezqFzeLUH8JwRUbtN66XLLaymfYsWRTMjfiMw` | `c811abc82b4bad1f9bd711a2773ccaa935b03ecef974236942cec5e0eb845a3a` |
+| WBTC/USD     | `9gNX5vguzarZZPjTnE1hWze3s6UsZ7dsU3UnAmKPnMHG` | `c9d8b075a5c69303365ae23633d4e085199bf5c520a3b90fed1322a0342ffc33` |
+| PENGU/USD    | `27zzC5wXCeZeuJ3h9uAJzV5tGn6r5Tzo98S1ZceYKEb8` | `bed3097008b9b5e3c93bec20be79cb43986b85a996475589351a21e67bae9b61` |
+| AI16Z/USD    | `BxizdE1Rd9yeCXUaorGNGLc4qHbqBULxiBtjRX37HjSV` | `2551eca7784671173def2c41e6f3e51e11cd87494863f1d208fdd8c64a1f85ae` |
+| TRUMP/USD    | `9vNb2tQoZ8bB4vzMbQLWViGwNaDJVtct13AGgno1wazp` | `879551021853eec7a7dc827578e8e69da7e4fa8148339aa0d3d5296405be4b1a` |
+| FARTCOIN/USD | `2t8eUbYKjidMs3uSeYM9jXM9uudYZwGkSeTB4TKjmvnC` | `58cd29ef0e714c5affc44f269b2c1899a52da4169d7acc147b9da692e6953608` |

+ 42 - 0
apps/developer-hub/content/docs/pyth-core/sponsored-feeds/sui.mdx

@@ -0,0 +1,42 @@
+---
+title: "Sponsored Price Feeds on Sui Mainnet: Essential Parameters & Updates"
+description: >-
+  Unlock Sui-sponsored BTC, ARB, and SUI price feeds with detailed heartbeat
+  intervals, price deviation thresholds, and update mechanisms for accurate,
+  real-time data.
+full: false
+index: false
+---
+
+# Sponsored Feeds on Sui
+
+The price feeds listed in the table below are currently sponsored in **Sui mainnet**.
+
+| Name       | Price Feed Id                                                      | Update Parameters                                   |
+| ---------- | ------------------------------------------------------------------ | --------------------------------------------------- |
+| BTC/USD    | `e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43` | **3** seconds heartbeat / **0.5%** price deviation  |
+| ARB/USD    | `ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace` | **3** seconds heartbeat / **0.5%** price deviation  |
+| SUI/USD    | `23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744` | **3** seconds heartbeat / **0.5%** price deviation  |
+| SOL/USD    | `ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d` | **3** seconds heartbeat / **0.5%** price deviation  |
+| ARB/USD    | `3fa4252848f9f0a1480be62745a4629d9eb1322aebab8a791e344b3b9c1adcf5` | **15** seconds heartbeat / **0.5%** price deviation |
+| APT/USD    | `03ae4db29ed4ae33d323568895aa00337e658e348b37509f5372ae51f0af00d5` | **15** seconds heartbeat / **0.5%** price deviation |
+| SEI/USD    | `53614f1cb0c031d4af66c04cb9c756234adad0e1cee85303795091499a4084eb` | **15** seconds heartbeat / **0.5%** price deviation |
+| AVAX/USD   | `93da3352f9f1d105fdfe4971cfa80e9dd777bfc5d0f683ebb6e1294b92137bb7` | **15** seconds heartbeat / **0.5%** price deviation |
+| TIA/USD    | `09f7c1d7dfbb7df2b8fe3d3d87ee94a2259d212da4f30c1f0540d066dfa44723` | **15** seconds heartbeat / **0.5%** price deviation |
+| POL/USD    | `ffd11c5a1cfd42f80afb2df4d9f264c15f956d68153335374ec10722edd70472` | **15** seconds heartbeat / **0.5%** price deviation |
+| BLUE/USD   | `04cfeb7b143eb9c48e9b074125c1a3447b85f59c31164dc20c1beaa6f21f2b6b` | **15** seconds heartbeat / **0.5%** price deviation |
+| DEEP/USD   | `29bdd5248234e33bd93d3b81100b5fa32eaa5997843847e2c2cb16d7c6d9f7ff` | **15** seconds heartbeat / **0.5%** price deviation |
+| SEND/USD   | `7d19b607c945f7edf3a444289c86f7b58dcd8b18df82deadf925074807c99b59` | **15** seconds heartbeat / **0.5%** price deviation |
+| USDC/USD   | `eaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a` | **15** seconds heartbeat / **0.5%** price deviation |
+| USDT/USD   | `2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b` | **15** seconds heartbeat / **0.5%** price deviation |
+| AUSD/USD   | `d9912df360b5b7f21a122f15bdd5e27f62ce5e72bd316c291f7c86620e07fb2a` | **15** seconds heartbeat / **0.5%** price deviation |
+| AFSUI/USD  | `17cd845b16e874485b2684f8b8d1517d744105dbb904eec30222717f4bc9ee0d` | **15** seconds heartbeat / **0.5%** price deviation |
+| HASUI/USD  | `6120ffcf96395c70aa77e72dcb900bf9d40dccab228efca59a17b90ce423d5e8` | **15** seconds heartbeat / **0.5%** price deviation |
+| VSUI/USD   | `57ff7100a282e4af0c91154679c5dae2e5dcacb93fd467ea9cb7e58afdcfde27` | **15** seconds heartbeat / **0.5%** price deviation |
+| NAVX/USD   | `88250f854c019ef4f88a5c073d52a18bb1c6ac437033f5932cd017d24917ab46` | **15** seconds heartbeat / **0.5%** price deviation |
+| SCA/USD    | `7e17f0ac105abe9214deb9944c30264f5986bf292869c6bd8e8da3ccd92d79bc` | **15** seconds heartbeat / **0.5%** price deviation |
+| USDY/USD   | `e393449f6aff8a4b6d3e1165a7c9ebec103685f3b41e60db4277b5b6d10e7326` | **15** seconds heartbeat / **0.5%** price deviation |
+| FUD/USD    | `6a4090703da959247727f2b490eb21aea95c8684ecfac675f432008830890c75` | **15** seconds heartbeat / **0.5%** price deviation |
+| BUCK/USD   | `fdf28a46570252b25fd31cb257973f865afc5ca2f320439e45d95e0394bc7382` | **15** seconds heartbeat / **0.5%** price deviation |
+| CETUS/USD  | `e5b274b2611143df055d6e7cd8d93fe1961716bcd4dca1cad87a83bc1e78c1ef` | **15** seconds heartbeat / **0.5%** price deviation |
+| HAEDAL/USD | `e67d98cc1fbd94f569d5ba6c3c3c759eb3ffc5d2b28e64538a53ae13efad8fd1` | **15** seconds heartbeat / **0.5%** price deviation |

+ 16 - 0
apps/developer-hub/content/docs/pyth-core/troubleshoot.mdx

@@ -0,0 +1,16 @@
+---
+title: Troubleshoot Pyth Price Feed Integration Errors
+description: >-
+  Step-by-step instructions to resolve Pyth price feed issues in EVM and SVM
+  contracts, enabling data integration in minutes.
+full: false
+index: false
+---
+
+# Troubleshoot
+
+The following guide helps users integrating pyth price feeds to solve common issues they may encounter.
+Please select the component where you are facing the issue to get the troubleshooting steps.
+
+- [EVM Price Feeds Contract](troubleshoot/evm)
+- [SVM Price Feeds Contract](troubleshoot/svm)

+ 4 - 0
apps/developer-hub/content/docs/pyth-core/troubleshoot/_meta.json

@@ -0,0 +1,4 @@
+{
+  "evm": "EVM Price Feeds Contract",
+  "svm": "SVM Price Feeds Contract"
+}

+ 44 - 0
apps/developer-hub/content/docs/pyth-core/troubleshoot/evm.mdx

@@ -0,0 +1,44 @@
+---
+title: "Troubleshoot Pyth EVM Price Feed Issues: Fix Common Errors"
+description: >-
+  Troubleshoot Pyth Price Feed on EVM chains with our concise guide and official
+  resources. Quickly fix stale prices, wrong feed IDs, and low-fee errors.
+full: true
+index: false
+---
+
+# Troubleshoot EVM Price Feeds Contract
+
+This reference page is designed to help you troubleshoot common issues you may encounter when using Pyth Price Feeds on EVM chains.
+Follow the steps provided below to diagnose and resolve the issue.
+
+#### getPrice() reverts with `StalePrice()` or `0x19abf40e` error
+
+This error occurs when the requested price feed has not been updated in the last `validTimePeriod`.
+The valid time period for the feed can queried using the [`getValidTime()`](https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/AbstractPyth.sol#L22) method.
+
+To resolve this issue:
+
+- Update the prices by calling [`updatePriceFeeds()`]("https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/AbstractPyth.sol#L88")
+  by passing the latest updateData from [Hermes](https://hermes.pyth.network/docs/#/rest/latest_vaas).
+- Another method to fetch the price is [`getPriceUnsafe()`](https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/AbstractPyth.sol#L41)
+  If the price feed is available, the method will return the latest prices with timestamp of last update.
+  NOTE: `getPriceUnsafe()` method does not check the freshness of the price.
+
+#### getPrice() reverts with `PriceFeedNotFound()` or `0x14aebe68` error
+
+This error occurs when the requested price feed has not been updated on-chain, or the price feed id is incorrect.
+
+To resolve this issue:
+
+- Update the prices by calling [`updatePriceFeeds()`](https://api-reference.pyth.network/price-feeds/evm/updatePriceFeeds)
+  by passing the latest updateData from [Hermes](https://hermes.pyth.network/docs/#/rest/latest_vaas).
+- Check the entered [price feed id](https://pyth.network/developers/price-feed-ids) and [pyth-contract address](https://docs.pyth.network/price-feeds/contract-addresses/evm) to make sure they are correct.
+
+#### updatePriceFeeds() reverts with `InsufficientFee()` or `0x025dbdd4` error
+
+This error occurs when the fee provided for updating the price feed is insufficient.
+To resolve this issue:
+
+- Fetch the latest fee by calling [`getUpdateFee()`](https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/IPyth.sol#L112) method and
+  provide the required fee to `msg.value` when calling [`updatePriceFeeds()`](https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/IPyth.sol#L112) method.

+ 27 - 0
apps/developer-hub/content/docs/pyth-core/troubleshoot/svm.mdx

@@ -0,0 +1,27 @@
+---
+title: "Troubleshoot SVM Price Feeds: Fix Anchor-Lang Version Mismatch"
+description: >-
+  Step-by-step guide to align anchor-lang versions in Cargo.toml and Cargo.lock
+  to resolve Pyth SVM compilation errors affecting Solana price feeds.
+full: false
+index: false
+---
+
+# Troubleshoot Solana Price Feeds Contract
+
+This reference page is designed to help you troubleshoot common issues you may encounter when using Pyth Price Feeds on SVM chains.
+Follow the steps provided below to diagnose and resolve the issue.
+
+1. `error[E0277]: the trait bound PriceUpdateV2: anchor_lang::AccountDeserialize is not satisfied{:rust}`
+
+   This error happens when a program using the [`pyth-solana-receiver-sdk`](https://github.com/pyth-network/pyth-crosschain/tree/main/target_chains/solana/pyth_solana_receiver_sdk) fails to compile. It is caused by an `anchor-lang` version mismatch.
+   Make sure the transitive version of `anchor-lang` brought by `pyth-solana-receiver-sdk`
+   matches the version of `anchor-lang` of your program's `Cargo.toml`.
+
+   You can fix it by following these steps:
+
+   - Check the version of `anchor-lang` in your [`Cargo.toml`](https://github.com/guibescos/anchor-pyth/blob/broken-build/programs/anchor-pyth/Cargo.toml) (in the example `0.29.0{:js}`) call it `x.y.z`
+   - Check the version of `anchor-lang` in the `pyth-solana-receiver-sdk` tree in [`Cargo.lock`](https://github.com/guibescos/anchor-pyth/blob/broken-build/Cargo.lock#L1400) (in the example `0.30.1{:js}`) call it `a.b.c`
+   - Run `cargo update -p anchor-lang@a.b.c --precise x.y.z{:bash}`
+     replacing `a.b.c` and `x.y.z` by the versions in the previous steps. For example:\
+     `cargo update -p anchor-lang@0.30.1 --precise 0.29.0{:bash}`

+ 71 - 0
apps/developer-hub/content/docs/pyth-core/use-pyth-for-morpho.mdx

@@ -0,0 +1,71 @@
+---
+title: "Use Pyth for Morpho: Deployment & Update Guide"
+description: >-
+  Step-by-step guide to deploy Pyth’s Chainlink-compatible PythAggregatorV3
+  contract, automate price updates, and integrate with Morpho for seamless
+  oracle deployment.
+full: false
+index: false
+---
+
+import { Steps, Step } from "fumadocs-ui/components/steps";
+
+# How to use Pyth for Morpho Markets
+
+This guide will show how you can leverage Pyth real time price data to power Morpho markets.
+
+At the time of writing, Morpho supports an [oracle interface](https://github.com/morpho-org/morpho-blue-oracles/tree/main/src) similar to [ChainlinkAggregatorV3Interface](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol).
+We need to wrap the Pyth oracle with this interface to use it with Morpho.
+
+There are three steps to use Pyth price feeds for Morpho markets:
+
+1. Deploy the [`PythAggregatorV3`](https://github.com/pyth-network/pyth-crosschain/blob/main/target_chains/ethereum/sdk/solidity/PythAggregatorV3.sol) contract to provide a Chainlink-compatible feed interface.
+2. Run the price pusher or scheduler.
+3. Deploy the Morpho oracle contract.
+
+<Steps>
+
+<Step>
+### Deploy the `PythAggregatorV3` contract
+
+Pyth provides a wrapper called `PythAggregatorV3` that implements the ChainlinkAggregatorV3Interface.
+This wrapper allows you to use Pyth price feeds with Morpho markets.
+[Migrate from Chainlink to Pyth](./migrate-an-app-to-pyth/chainlink.md) explains how to deploy the `PythAggregatorV3` contract.
+
+You can use the forge [script](https://github.com/pyth-network/pyth-examples/blob/main/price_feeds/evm/chainlink_migration/script/PythAggregatorV3Deployment.s.sol) from the [pyth-examples](https://github.com/pyth-network/pyth-examples/tree/main/price_feeds/evm/chainlink_migration) directory to deploy the `PythAggregatorV3` contract.
+
+```bash copy
+forge script script/PythAggregatorV3Deployment.s.sol --rpc-url $RPC_URL --broadcast --verify
+```
+
+This script will deploy the `PythAggregatorV3` contract and verify it on the target chain.
+You have to run the script for both `BASE` and `QUOTE` price feeds.
+
+</Step>
+
+<Step>
+### Run the price pusher or scheduler
+
+As a pull oracle, Pyth's users are typically responsible for updating the state of on-chain feeds.
+Please see [What is a Pull Oracle?](/price-feeds/pull-updates) to learn more about pull updates.
+
+If you are using the `PythAggregatorV3` contract, you must push price updates to the contract at regular intervals.
+The Pyth Data Association sponsors regular on-chain updates for some price feeds.
+See [Sponsored Feeds](./sponsored-feeds.mdx) for the current list of feeds and their update parameters.
+
+If you don't find relevant price IDs in the [Sponsored Feeds](./sponsored-feeds.mdx) list, you can run the scheduler/price pusher for the price feed you need.
+
+Please see [Schedule Price Updates](./schedule-price-updates.mdx) for more information on how to schedule price updates.
+
+</Step>
+
+<Step>
+### Deploy the Morpho oracle contract
+
+After deploying the `PythAggregatorV3` contract and scheduling price updates, you can deploy the Morpho oracle contract with the address of the `PythAggregatorV3` contract deployed in the first step.
+
+Please refer to the [Morpho documentation](https://docs.morpho.org/morpho/tutorials/deploy-an-oracle/) for more information on how to deploy the Morpho oracle contract.
+
+</Step>
+
+</Steps>

+ 38 - 0
apps/developer-hub/content/docs/pyth-core/use-real-time-data.mdx

@@ -0,0 +1,38 @@
+---
+title: Integrate Pyth Real-Time Data on Blockchains & Off-Chain
+description: >-
+  Integrate Pyth real-time data into blockchain and off-chain applications.
+  Includes detailed guides, contract addresses, and deployment best practices.
+full: false
+index: false
+---
+
+# How to Use Real-Time Price Data
+
+The following guides demonstrate how to consume Pyth real-time prices on various blockchains.
+These guides are intended for developers building on-chain applications that need price data, i.e., the price data must
+be on the blockchain.
+
+Pyth price feeds are available on 40+ blockchain ecosystems.
+Check out the complete list of chains and implementation contract addresses at [Contract Addresses](contract-addresses).
+
+If your blockchain is not supported, please [ask in Discord](https://discord.gg/invite/PythNetwork).
+Then, consult the relevant ecosystem guide to get started using Pyth real-time price data:
+
+- [EVM](use-real-time-data/evm)
+- [Solana](use-real-time-data/solana)
+- [Aptos](use-real-time-data/aptos.md)
+- [CosmWasm](use-real-time-data/cosmwasm.md)
+- [Sui](use-real-time-data/sui.md)
+- [IOTA](use-real-time-data/iota.md)
+- [Near](use-real-time-data/sui.md)
+
+Pyth price feeds can also be used in off-chain applications.
+For example, an application may need to show real-time asset prices on a website.
+Developers building such applications can consult the following guide:
+
+- [Off-chain Apps](use-real-time-data/off-chain.md)
+
+Off-chain application developers should also consider using [Benchmarks](../benchmarks).
+In addition to real-time data, Benchmarks provides access to historical Pyth prices.
+These historical prices are useful for building price charts or graphs.

+ 13 - 0
apps/developer-hub/content/docs/pyth-core/use-real-time-data/_meta.json

@@ -0,0 +1,13 @@
+{
+  "evm": "in EVM Contracts",
+  "solana": "in Solana and SVM Programs",
+  "starknet": "in Starknet Contracts",
+  "fuel": "in Fuel Contracts",
+  "aptos": "in Aptos Contracts",
+  "sui": "in Sui Contracts",
+  "iota": "in IOTA Contracts",
+  "ton": "in TON Contracts",
+  "cosmwasm": "in CosmWasm Contracts",
+  "near": "in Near Contracts",
+  "off-chain": "in Off-Chain Applications"
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików