From cf250b068b88adaafcf22bafb13e08c3c637d642 Mon Sep 17 00:00:00 2001
From: Jordyn | Envio <82444671+Jordy-Baby@users.noreply.github.com>
Date: Tue, 15 Apr 2025 13:33:57 +0000
Subject: [PATCH] oracle wars blog
---
blog/2025-04-15-oracle-wars.md | 112 ++++++++++++++++++
.../HyperIndex/supported-networks/arbitrum.md | 2 +-
docs/HyperIndex/supported-networks/curtis.md | 63 ++++++++++
.../monad-testnet-backup.md | 63 ++++++++++
.../HyperIndex/supported-networks/moonbeam.md | 2 +-
docs/HyperIndex/supported-networks/polygon.md | 2 +-
.../HyperRPC/hyperrpc-url-endpoints.md | 2 +
.../HyperSync/hypersync-supported-networks.md | 8 +-
static/blog-assets/oracle-wars-1.png | Bin 0 -> 82201 bytes
static/blog-assets/oracle-wars-2.png | Bin 0 -> 50970 bytes
static/blog-assets/oracle-wars-3.png | Bin 0 -> 395575 bytes
supported-networks.json | 2 +-
12 files changed, 249 insertions(+), 7 deletions(-)
create mode 100644 blog/2025-04-15-oracle-wars.md
create mode 100644 docs/HyperIndex/supported-networks/curtis.md
create mode 100644 docs/HyperIndex/supported-networks/monad-testnet-backup.md
create mode 100644 static/blog-assets/oracle-wars-1.png
create mode 100644 static/blog-assets/oracle-wars-2.png
create mode 100644 static/blog-assets/oracle-wars-3.png
diff --git a/blog/2025-04-15-oracle-wars.md b/blog/2025-04-15-oracle-wars.md
new file mode 100644
index 00000000..7edf7ef6
--- /dev/null
+++ b/blog/2025-04-15-oracle-wars.md
@@ -0,0 +1,112 @@
+---
+title: Oracle Wars - Exploring Real-Time Oracle Behavior and Push-Based Feeds
+sidebar_label: Oracle Wars - Exploring Real-Time Oracle Behavior and Push-Based Feeds
+slug: /oracle-wars
+---
+
+
+
+
+
+Oracles are the unsung heroes of DeFi. They connect blockchains to real-world data, enabling smart contracts to interact with off-chain events like asset prices (USDC, ETH), market rates, or even real-time sports scores. But while the concept of oracles is often discussed in theoretical terms, visualizing how they behave in practice can offer a new level of clarity, especially for developers building apps on-chain.
+
+Enter [Oracle Wars](https://www.oraclewars.xyz/), a live feed of on-chain oracle data that compares how different providers behave in real-time. It helps developers visualize and gain a better understanding of how oracles actually function under different market conditions, so they can design more reliable and secure smart contracts.
+
+⭐ **Please note**: The dashboard shown above is no longer live on the site, but the platform remains focused on delivering valuable insights into oracle performance. Oracle Wars is an educational and experimental platform designed to showcase data from various oracle providers, with the goal of improving the understanding of oracle behavior through real-time data analysis, which is constantly evolving and being updated.
+
+
+## What is a Blockchain Oracle?
+
+If you're building in the decentralized space, you’ve more than likely heard about oracles. In simple terms, they allow smart contracts to react to external data sources. Whether it's the latest price of an asset or the outcome of a sporting event, oracles are how the blockchain sees the world.
+
+Over time, oracle architectures have evolved. From the early days of Truffle and Ganache to today’s production-grade protocols, we've seen the rise of push-based oracles, pull-based oracles, and many more. Each design has trade-offs. For now, let’s zero in on push oracles and how they behave from a data perspective.
+
+
+
+### Push Oracles in Practice
+
+A push oracle works exactly as the name implies: it periodically pushes data onto the blockchain. Your contract can then read that data and respond accordingly, whether it's executing a trade, adjusting a loan-to-value ratio, or minting some ridiculous meme coin.
+
+
+#### Most push oracles use two primary mechanisms:
+
+
+
+1. **Heartbeat intervals** – Regular updates (e.g., every 24 hours)
+2. **Deviation thresholds** – Immediate updates when data shifts significantly (e.g., 0.5% price movement)
+
+
+
+## Visualizing Real-Time Oracle Activity with Oracle Wars
+
+Wonder what happens in live conditions, during periods of high volatility? That’s where Oracle Wars comes in. It can show a live comparison between price feeds from different oracle providers, such as [Chainlink](https://chain.link/) and [RedStone](https://www.redstone.finance/).
+
+You’ll notice that updates aren’t always evenly spaced. That’s the deviation threshold kicking in when markets get volatile, updates come in fast. When things are calm, fewer updates appear. It’s a valuable pattern to observe, especially if you’re designing a protocol that depends on accurate and real-time data.
+
+For example, this volatility spike, between Chainlink and RedStone posted frequent updates to reflect price changes, an essential feature for platforms like [Aave](https://app.aacve.com/dashboard), which depend on real-time data for liquidation logic and capital safety.
+
+
+
+## Understanding the Limitations of Deviation Thresholds in Push Oracles
+
+Oracle Wars also allows you to see the maximum deviation between any two consecutive price points over 24 hours. Why does this matter? Every DeFi protocol relies on timely and accurate price data, and large shifts between updates can lead to exploit risk, broken assumptions, or cascading failures. This metric gives developers a real-world view of how much price movement can actually occur between updates, even when using well-known oracle providers.
+
+This brings us to a common misunderstanding: deviation thresholds are not strict limits.
+
+Take Chainlink and RedStone, for instance. Both use a 0.5% deviation threshold for price feeds. That should mean the oracle updates whenever the price moves more than 0.5%. But here’s the catch:
+
+A 0.5% deviation threshold does not mean consecutive on-chain prices will only differ by 0.5%.
+
+In practice, you might see larger deviations. Over 24 hours alone, Oracle Wars recorded deviations of around 0.67% for both providers. This doesn’t mean the oracles were broken, it means they’re working as designed. The threshold is more of a trigger condition than a strict upper bound.
+
+So if you're competing in security audits on platforms like Sherlock, Code4rena, or CodeHawks, it's worth thinking through these edge cases. Your protocol logic needs to account for these potentially higher-than-expected changes, especially in volatile markets.
+
+
+## Is a Super-Fast Push Oracle Now Better Than a Pull Oracle?
+
+With the advent of high-speed chains like MegaETH and Monad, we’re starting to see the rise of ultra-fast push oracles that update data with each block. This near-instantaneous data feed challenges traditional push oracles, offering freshness comparable to pull oracles, provided transaction costs remain manageable.
+
+On Oracle Wars, you can now observe how these super-fast push oracles behave in real-time, with feeds like the ETH/USD price on MegaETH. The data is continuously updated, providing a new level of insight into how push oracles might evolve to rival the responsiveness of pull models.
+
+
+
+However, one aspect that remains intriguing is the frequent occurrence of multiple price updates at the same timestamp. This raises questions about whether these oracles are pushing multiple updates within the same block, and the rationale behind this granularity.
+
+While Redstone's "Bolt" push oracle is an exciting development, it’s still early days. It will be interesting to see how other oracle providers and chains approach the super-fast push model. The key question remains: Can these ultra-fast push oracles maintain the freshness and reliability of pull oracles without significant cost overhead?
+
+
+## Oracle Wars: Powered by Envio’s HyperIndex
+
+To pull this off and index this level of data, we used HyperIndex, our open blockchain indexing framework which seamlessly queried this data effortlessly. The entire Oracle Wars platform was built in under two hours using Envio’s HyperIndex, which made indexing real-time oracle data smooth and easy.
+
+If you're building dashboards, simulations, or monitoring tools, it’s worth checking out. Need help getting started? Feel free to reach out to us in our Discord or on Telegram, we’re always happy to walk you through it!
+
+
+### Helpful Resources
+
+
+
+* [HyperIndex Quickstart](https://docs.envio.dev/docs/HyperIndex/contract-import)
+* [Guides](https://docs.envio.dev/docs/HyperIndex/configuration-file)
+* [Examples](https://docs.envio.dev/docs/HyperIndex/example-uniswap-v4-multi-chain-indexer)
+* [GitHub Repo](https://github.com/enviodev/hyperindex)
+
+Thanks for reading, and if you're curious, feel free to check out the original background posts on X that kicked this all off:
+
+
+
+* [Thinking through oracles with data](https://x.com/jonjonclark/status/1890426833088246054)
+* [Understanding the Limitations of Deviation Thresholds in Push Oracles](https://x.com/jonjonclark/status/1892208677815300350)
+* [How Much Latency Do High-Frequency Oracle Push Feeds Actually Have?](https://x.com/jonjonclark/status/1903109614318575809)
+* [Is a super-fast push oracle now better than a pull oracle?](https://x.com/jonjonclark/status/1909635483182789020)
+
+
+## About Envio
+
+[Envio](https://envio.dev/) is an open blockchain indexing framework that addresses the limitations of traditional blockchain indexing approaches and gives developers peace of mind. Blockchain developers and data analysts can harness the power of Envio to overcome the challenges posed by latency, reliability, infrastructure management, and costs across various sources.
+
+If you're a blockchain developer looking to enhance your development process and unlock the true potential of Web3 infrastructure, look no further.
+
+Join our growing community of Web3 developers, check out our docs, and let's work together to revolutionize the blockchain world and propel your project to the next level.
+
+[Website](https://envio.dev/) | [X](https://twitter.com/envio_indexer) | [Discord](https://discord.com/invite/gt7yEUZKeB) | [Farcaster](https://warpcast.com/envio) | [GitHub](https://github.com/enviodev) | [Medium](https://medium.com/@Envio_Indexer) | [YouTube](https://www.youtube.com/channel/UCR7nZ2yzEtc5SZNM0dhrkhA) | [Reddit](https://www.reddit.com/user/Envio_indexer)
\ No newline at end of file
diff --git a/docs/HyperIndex/supported-networks/arbitrum.md b/docs/HyperIndex/supported-networks/arbitrum.md
index 13906829..78a80e25 100644
--- a/docs/HyperIndex/supported-networks/arbitrum.md
+++ b/docs/HyperIndex/supported-networks/arbitrum.md
@@ -19,7 +19,7 @@ slug: /arbitrum
### Tier
-GOLD 🏅
+SILVER 🥈
### Overview
diff --git a/docs/HyperIndex/supported-networks/curtis.md b/docs/HyperIndex/supported-networks/curtis.md
new file mode 100644
index 00000000..514554cf
--- /dev/null
+++ b/docs/HyperIndex/supported-networks/curtis.md
@@ -0,0 +1,63 @@
+---
+id: curtis
+title: Curtis
+sidebar_label: Curtis
+slug: /curtis
+---
+
+# Curtis
+
+## Indexing Curtis Data with Envio
+
+| **Field** | **Value** |
+|-------------------------------|----------------------------------------------------------------------------------------------------|
+| **Curtis Chain ID** | 33111 |
+| **HyperSync URL Endpoint** | [https://curtis.hypersync.xyz](https://curtis.hypersync.xyz) or [https://33111.hypersync.xyz](https://33111.hypersync.xyz) |
+| **HyperRPC URL Endpoint** | [https://curtis.rpc.hypersync.xyz](https://curtis.rpc.hypersync.xyz) or [https://33111.rpc.hypersync.xyz](https://33111.rpc.hypersync.xyz) |
+
+---
+
+### Tier
+
+STONE 🪨
+
+### Overview
+
+Envio is a modular hyper-performant data indexing solution for Curtis, enabling applications and developers to efficiently index and aggregate real-time and historical blockchain data. Envio offers three primary solutions for indexing and accessing large amounts of data: [HyperIndex](/docs/HyperIndex/overview) (a customizable indexing framework), [HyperSync](/docs/HyperSync/overview) (a real-time indexed data layer), and [HyperRPC](/docs/HyperSync/overview-hyperrpc) (extremely fast read-only RPC).
+
+HyperSync accelerates the synchronization of historical data on Curtis, enabling what usually takes hours to sync millions of events to be completed in under a minute—up to 1000x faster than traditional RPC methods.
+
+Designed to optimize the user experience, Envio offers automatic code generation, flexible language support, multi-chain data aggregation, and a reliable, cost-effective hosted service.
+
+To get started, see our documentation or follow our quickstart [guide](/docs/HyperIndex/contract-import).
+
+---
+
+### Defining Network Configurations
+
+```yaml
+name: IndexerName # Specify indexer name
+description: Indexer Description # Include indexer description
+networks:
+ - id: 33111 # Curtis
+ start_block: START_BLOCK_NUMBER # Specify the starting block
+ contracts:
+ - name: ContractName
+ address:
+ - "0xYourContractAddress1"
+ - "0xYourContractAddress2"
+ handler: ./src/EventHandlers.ts
+ events:
+ - event: Event # Specify event
+ - event: Event
+```
+
+With these steps completed, your application will be set to efficiently index Curtis data using Envio’s blockchain indexer.
+
+For more information on how to set up your config, define a schema, and write event handlers, refer to the guides section in our [documentation](/docs/HyperIndex/configuration-file).
+
+### Support
+
+Can’t find what you’re looking for or need support? Reach out to us on [Discord](https://discord.com/invite/Q9qt8gZ2fX); we’re always happy to help!
+
+---
diff --git a/docs/HyperIndex/supported-networks/monad-testnet-backup.md b/docs/HyperIndex/supported-networks/monad-testnet-backup.md
new file mode 100644
index 00000000..aa44d469
--- /dev/null
+++ b/docs/HyperIndex/supported-networks/monad-testnet-backup.md
@@ -0,0 +1,63 @@
+---
+id: monad-testnet-backup
+title: Monad Testnet Backup
+sidebar_label: Monad Testnet Backup
+slug: /monad-testnet-backup
+---
+
+# Monad Testnet Backup
+
+## Indexing Monad Testnet Backup Data with Envio
+
+| **Field** | **Value** |
+|-------------------------------|----------------------------------------------------------------------------------------------------|
+| **Monad Testnet Backup Chain ID** | 10143333333 |
+| **HyperSync URL Endpoint** | [https://monad-testnet-backup.hypersync.xyz](https://monad-testnet-backup.hypersync.xyz) or [https://10143333333.hypersync.xyz](https://10143333333.hypersync.xyz) |
+| **HyperRPC URL Endpoint** | [https://monad-testnet-backup.rpc.hypersync.xyz](https://monad-testnet-backup.rpc.hypersync.xyz) or [https://10143333333.rpc.hypersync.xyz](https://10143333333.rpc.hypersync.xyz) |
+
+---
+
+### Tier
+
+HIDDEN 🔒
+
+### Overview
+
+Envio is a modular hyper-performant data indexing solution for Monad Testnet Backup, enabling applications and developers to efficiently index and aggregate real-time and historical blockchain data. Envio offers three primary solutions for indexing and accessing large amounts of data: [HyperIndex](/docs/HyperIndex/overview) (a customizable indexing framework), [HyperSync](/docs/HyperSync/overview) (a real-time indexed data layer), and [HyperRPC](/docs/HyperSync/overview-hyperrpc) (extremely fast read-only RPC).
+
+HyperSync accelerates the synchronization of historical data on Monad Testnet Backup, enabling what usually takes hours to sync millions of events to be completed in under a minute—up to 1000x faster than traditional RPC methods.
+
+Designed to optimize the user experience, Envio offers automatic code generation, flexible language support, multi-chain data aggregation, and a reliable, cost-effective hosted service.
+
+To get started, see our documentation or follow our quickstart [guide](/docs/HyperIndex/contract-import).
+
+---
+
+### Defining Network Configurations
+
+```yaml
+name: IndexerName # Specify indexer name
+description: Indexer Description # Include indexer description
+networks:
+ - id: 10143333333 # Monad Testnet Backup
+ start_block: START_BLOCK_NUMBER # Specify the starting block
+ contracts:
+ - name: ContractName
+ address:
+ - "0xYourContractAddress1"
+ - "0xYourContractAddress2"
+ handler: ./src/EventHandlers.ts
+ events:
+ - event: Event # Specify event
+ - event: Event
+```
+
+With these steps completed, your application will be set to efficiently index Monad Testnet Backup data using Envio’s blockchain indexer.
+
+For more information on how to set up your config, define a schema, and write event handlers, refer to the guides section in our [documentation](/docs/HyperIndex/configuration-file).
+
+### Support
+
+Can’t find what you’re looking for or need support? Reach out to us on [Discord](https://discord.com/invite/Q9qt8gZ2fX); we’re always happy to help!
+
+---
diff --git a/docs/HyperIndex/supported-networks/moonbeam.md b/docs/HyperIndex/supported-networks/moonbeam.md
index 5029e997..72fa5203 100644
--- a/docs/HyperIndex/supported-networks/moonbeam.md
+++ b/docs/HyperIndex/supported-networks/moonbeam.md
@@ -19,7 +19,7 @@ slug: /moonbeam
### Tier
-SILVER 🥈
+BRONZE 🥉
### Overview
diff --git a/docs/HyperIndex/supported-networks/polygon.md b/docs/HyperIndex/supported-networks/polygon.md
index c87d99b0..a8dd92c9 100644
--- a/docs/HyperIndex/supported-networks/polygon.md
+++ b/docs/HyperIndex/supported-networks/polygon.md
@@ -19,7 +19,7 @@ slug: /polygon
### Tier
-GOLD 🏅
+SILVER 🥈
### Overview
diff --git a/docs/HyperSync/HyperRPC/hyperrpc-url-endpoints.md b/docs/HyperSync/HyperRPC/hyperrpc-url-endpoints.md
index d38f4f1d..14edc665 100644
--- a/docs/HyperSync/HyperRPC/hyperrpc-url-endpoints.md
+++ b/docs/HyperSync/HyperRPC/hyperrpc-url-endpoints.md
@@ -32,6 +32,7 @@ Here is a table of the currently supported networks on HyperRPC and their respec
| Celo | 42220 | https://celo.rpc.hypersync.xyz or https://42220.rpc.hypersync.xyz | |
| Chiliz | 8888 | https://chiliz.rpc.hypersync.xyz or https://8888.rpc.hypersync.xyz | |
| Citrea Testnet | 5115 | https://citrea-testnet.rpc.hypersync.xyz or https://5115.rpc.hypersync.xyz | |
+| Curtis | 33111 | https://curtis.rpc.hypersync.xyz or https://33111.rpc.hypersync.xyz | |
| Cyber | 7560 | https://cyber.rpc.hypersync.xyz or https://7560.rpc.hypersync.xyz | |
| Darwinia | 46 | https://darwinia.rpc.hypersync.xyz or https://46.rpc.hypersync.xyz | ✔️ |
| Ethereum Mainnet | 1 | https://eth.rpc.hypersync.xyz or https://1.rpc.hypersync.xyz | ✔️ |
@@ -64,6 +65,7 @@ Here is a table of the currently supported networks on HyperRPC and their respec
| Mev Commit | 17864 | https://mev-commit.rpc.hypersync.xyz or https://17864.rpc.hypersync.xyz | |
| Mode | 34443 | https://mode.rpc.hypersync.xyz or https://34443.rpc.hypersync.xyz | |
| Monad Testnet | 10143 | https://monad-testnet.rpc.hypersync.xyz or https://10143.rpc.hypersync.xyz | |
+| Monad Testnet Backup | 10143333333 | https://monad-testnet-backup.rpc.hypersync.xyz or https://10143333333.rpc.hypersync.xyz | |
| Moonbase Alpha | 1287 | https://moonbase-alpha.rpc.hypersync.xyz or https://1287.rpc.hypersync.xyz | |
| Moonbeam | 1284 | https://moonbeam.rpc.hypersync.xyz or https://1284.rpc.hypersync.xyz | |
| Morph | 2818 | https://morph.rpc.hypersync.xyz or https://2818.rpc.hypersync.xyz | |
diff --git a/docs/HyperSync/hypersync-supported-networks.md b/docs/HyperSync/hypersync-supported-networks.md
index c9997f36..612fdc24 100644
--- a/docs/HyperSync/hypersync-supported-networks.md
+++ b/docs/HyperSync/hypersync-supported-networks.md
@@ -31,7 +31,7 @@ If you are a network operator or user and would like improved service support or
| Network Name | Network ID | URL | Tier | Supports Traces |
| -------------------- | ---------- | ----------------------------------------------------------------------------------- | ---- | --------------- |
| Abstract | 2741 | https://abstract.hypersync.xyz or https://2741.hypersync.xyz | 🪨 | |
-| Arbitrum | 42161 | https://arbitrum.hypersync.xyz or https://42161.hypersync.xyz | 🏅 | |
+| Arbitrum | 42161 | https://arbitrum.hypersync.xyz or https://42161.hypersync.xyz | 🥈 | |
| Arbitrum Nova | 42170 | https://arbitrum-nova.hypersync.xyz or https://42170.hypersync.xyz | 🥉 | |
| Arbitrum Sepolia | 421614 | https://arbitrum-sepolia.hypersync.xyz or https://421614.hypersync.xyz | 🎒 | |
| Aurora | 1313161554 | https://aurora.hypersync.xyz or https://1313161554.hypersync.xyz | 🪨 | |
@@ -48,6 +48,7 @@ If you are a network operator or user and would like improved service support or
| Celo | 42220 | https://celo.hypersync.xyz or https://42220.hypersync.xyz | 🪨 | |
| Chiliz | 8888 | https://chiliz.hypersync.xyz or https://8888.hypersync.xyz | 🥉 | |
| Citrea Testnet | 5115 | https://citrea-testnet.hypersync.xyz or https://5115.hypersync.xyz | 🪨 | |
+| Curtis | 33111 | https://curtis.hypersync.xyz or https://33111.hypersync.xyz | 🪨 | |
| Cyber | 7560 | https://cyber.hypersync.xyz or https://7560.hypersync.xyz | 🪨 | |
| Darwinia | 46 | https://darwinia.hypersync.xyz or https://46.hypersync.xyz | 🪨 | ✔️ |
| Ethereum Mainnet | 1 | https://eth.hypersync.xyz or https://1.hypersync.xyz | 🏅 | ✔️ |
@@ -80,15 +81,16 @@ If you are a network operator or user and would like improved service support or
| Mev Commit | 17864 | https://mev-commit.hypersync.xyz or https://17864.hypersync.xyz | 🪨 | |
| Mode | 34443 | https://mode.hypersync.xyz or https://34443.hypersync.xyz | 🪨 | |
| Monad Testnet | 10143 | https://monad-testnet.hypersync.xyz or https://10143.hypersync.xyz | 🏅 | |
+| Monad Testnet Backup | 10143333333 | https://monad-testnet-backup.hypersync.xyz or https://10143333333.hypersync.xyz | 🔒 | |
| Moonbase Alpha | 1287 | https://moonbase-alpha.hypersync.xyz or https://1287.hypersync.xyz | 🪨 | |
-| Moonbeam | 1284 | https://moonbeam.hypersync.xyz or https://1284.hypersync.xyz | 🥈 | |
+| Moonbeam | 1284 | https://moonbeam.hypersync.xyz or https://1284.hypersync.xyz | 🥉 | |
| Morph | 2818 | https://morph.hypersync.xyz or https://2818.hypersync.xyz | 🪨 | |
| Morph Holesky | 2810 | https://morph-holesky.hypersync.xyz or https://2810.hypersync.xyz | 🎒 | |
| Opbnb | 204 | https://opbnb.hypersync.xyz or https://204.hypersync.xyz | 🪨 | |
| Optimism | 10 | https://optimism.hypersync.xyz or https://10.hypersync.xyz | 🏅 | |
| Optimism Sepolia | 11155420 | https://optimism-sepolia.hypersync.xyz or https://11155420.hypersync.xyz | 🎒 | |
| Pharos Devnet | 50002 | https://pharos-devnet.hypersync.xyz or https://50002.hypersync.xyz | 🪨 | |
-| Polygon | 137 | https://polygon.hypersync.xyz or https://137.hypersync.xyz | 🏅 | |
+| Polygon | 137 | https://polygon.hypersync.xyz or https://137.hypersync.xyz | 🥈 | |
| Polygon Amoy | 80002 | https://polygon-amoy.hypersync.xyz or https://80002.hypersync.xyz | 🥉 | |
| Polygon zkEVM | 1101 | https://polygon-zkevm.hypersync.xyz or https://1101.hypersync.xyz | 🪨 | |
| Rootstock | 30 | https://rootstock.hypersync.xyz or https://30.hypersync.xyz | 🥉 | |
diff --git a/static/blog-assets/oracle-wars-1.png b/static/blog-assets/oracle-wars-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..15acb5502ea4b82a9bf69497e0cfa00ebc19746e
GIT binary patch
literal 82201
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