Consumers of Pyth prices are responsible for invoking the permissionless price update, i.e. pulling the price update on chain, before using the price. The price stored in the Pyth receiver contract grows stale over time unless it is updated. Protocols integrating with Pyth price feeds can impose a limit on the maximum staleness of the price. Anyone interacting with one of these protocols will therefore be required to invoke the permissionless price update before their interaction if the current on-chain price is stale. In this design, consumers pay the transaction costs for updating Pyth price feeds only when the price is needed. This property is how the cross-chain architecture meets the goals set forth above. The broadcast component can stream high-frequency price updates for many different price feeds without incurring any transaction costs. Many of these price updates will never land on a target chain (and therefore never 3
id: 85ae78835d7dff122e5e1ffe40eeffdb - page: 3
Target chain transaction costs are themselves minimized because consumers only incur them when they need to use a price for an operation. 2.1 Update Fees Consumers are required to pay an update fee to the protocol in order to invoke the price update operation on a Pyth receiver contract. Fees are charged in the native token of the target chain.
id: 24379bb15c5b4e16f8731ec1beabbf55 - page: 4
2.2 Comparison: Pull vs. Push Most oracles have traditionally used a push architecture. In this architecture, the oracle publishes prices onto a general-purpose blockchain, and may even perform aggregation on that chain. The oracle is responsible for keeping prices fresh, and therefore must regularly send transactions to update the on-chain price. These transactions incur gas costs that scale with update frequency and the number of supported price feeds, blockchains, and possibly even publishers. Moreover, these oracles can be unreliable, as their price update transactions compete with other network activity. During busy periods, network congestion can prevent oracle updates from landing on-chain.
id: 43f627d61973c3c02a3dc4f851b2db67 - page: 4
Unlike the push model, Pyths pull model features price publishing and aggregation on a cheap chain. Pythnet is a fork of Solana, which allows for low-latency and high-frequency price updates. Pythnet transactions are free for publishers, which significantly lowers the overall operating costs of the oracle. Broadcasting prices to other blockchains still carries gas costs. However, unlike the push model where updates are pushed (and gas is paid) irrespective of demand, Pyth only pays gas when consumers demand a price update. As a result, gas consumption is more targeted and efficient. Consequently, Pyth can have more frequent price updates, and scale to more price feeds and blockchains than push oracles. The pull model is also not prone to unreliability. Network congestion on target chains does not affect the ability of publishers to publish prices to Pythnet, and motivated users can always pull a price from Pythnet on to their target chain by paying a sufficient transaction fee.
id: 479fb9ee6f1aff3fb7c6fdbb307745a4 - page: 4