Oasis Engineering Update | July 2025
Check out all the latest news and updates from the Oasis engineering team.
.png)
From EthCC in Cannes to ongoing platform optimizations and infrastructure upgrades and protocol enhancements, July was a packed month for the Oasis engineering team. This roundup reviews key developments alongside regular progress updates, technical improvements, and new capabilities that advanced the network recently. Let's dive in!
Wallet & CLI Updates
The Oasis CLI team added a series of exciting features for ROFL developers, node operators, and regular wallet users. The “–wipe-storage” flag is now also available for the “oasis rofl deploy” command (#514). This allows a developer to deploy a new version of their app to an existing machine and also wipe the storage at the same time.
Early SGX versions of ROFL can now be compiled with the recent Oasis CLI again (#548). For example, check out rofl-oracle-sgx in the Oasis SDK repository. When initializing a fresh ROFL app, the compose.yaml file is now already populated based on the ROFL app type (#517, #553). A new “--only-validate” flag was added to “oasis rofl build” command that simply validates the rofl.yaml and compose.yaml files (#513). This flag is typically used by ROFL marketplaces such as rofl.app where users can configure their own ROFL instances to avoid any obvious errors before spinning up an instance. Also, implicitly defined external volumes in compose.yaml are now correctly validated (#540).
Node operators can now easily check their entity and associated nodes with the “oasis network show <entity ID>” command (#533). When checking the account balance using “oasis account show”, an Ethereum-like address is now also shown, if available (#547). First-time users will be happy to see a new description and use cases of the supported key signature schemes (ed25519, secp256k1, and sr25519) when importing their account (#554).
The team also made three releases:
In total, 26 pull requests were merged in July.
Network Updates
Mainnet highlights
After almost a month of testing on July 15, the Oasis Core 25.4 was proposed on Mainnet. Most importantly, this release brings the ROFL logging facility to production-ready ROFL apps running on Mainnet. The release is not consensus-breaking, and all Testnet node operators are suggested to upgrade.
The number of daily transactions on Sapphire Mainnet was in the 11k-20k range with weekly spikes to 90k-100k on July 3, 10, 17, and 24. The monthly average in July was 27,317 transactions per day and was 8% lower compared to the last month (29,754 transactions). The daily maximum was 102,385 transactions on 31 July (compared to 137,055 the previous month on 17 June).
As of July 31, the Mainnet nodes were well decentralized (June figures in parentheses):
- 112 (110) validator nodes
- 6 (6) key manager nodes
- 39 (40) Cipher compute nodes
- 48 (53) Emerald compute nodes
- 32 (34) Sapphire compute nodes
On July 31, a 15-minute disruption of the GRPC, Sapphire, and Emerald RPC endpoints occurred because of a bug introduced in the Web3 gateway version 5.3.0. No other major outages were reported for Oasis foundation-provided services in July.
You can check out the details on the Mainnet status page.
Testnet highlights
At the beginning of the month, during EthGlobal Cannes, the number of daily transactions on Sapphire Testnet fluctuated up to 24k daily transactions and then gradually dropped since there were no other developer-related events in July. The monthly average was 11,624 daily transactions and was much lower compared to an extraordinary June (16,352 transactions). The daily maximum was 24,008 transactions on 6 July (comparable to 24,696 on 22 June).
As of July 31, the Testnet nodes were well decentralized (June figures in parentheses):
- 45 (46) validator nodes
- 6 (6) key manager nodes
- 19 (18) Cipher compute nodes
- 25 (26) Emerald compute nodes
- 19 (17) Sapphire compute nodes
- 4 (2) Pontus-X compute nodes
No major outages were reported in July. You can check out the status of the Oasis foundation-provided services on the Testnet status page.
Nexus & Explorer
The Nexus team improved stability, integrated token price functionality, and merged another pack of ROFL-related features and bugfixes. A huge cleanup of services lifecycle and graceful shutdown was done (#1084). This improves data integrity during forced shutdowns and fixes a number of intermittent bugs when shutting down or restarting the indexer.
Support for fetching EVM token prices from subgraph was added (#1102). The analyzer is currently hardcoded to Neby, but the implementation can be generalized in the future to support additional sources or DEX subgraphs if needed. Tokens that don’t emit events (like BitUSD) now omit num_holders and num_transfers instead of returning zeros (#1105). Precompile transaction results are now also parsed (#1099). This is especially useful for showing a human-readable error description. A new roflmarket.InstanceChangeAdmin transaction is now also parsed (#1096).
Four new Nexus releases were made:
- 0.7.8 released on July 1
- 0.7.9 released on July 2
- 0.7.10 released on July 14
- 0.7.11 released on July 30
Including bug fixes and dependency bumps, the team merged 21 pull requests this month in total.
The Explorer team brought exciting new ROFL and other convenient features. ROFL node endorsements and their visualization were completely revamped (#2072, #2071). A ROFL app developer can define in their ROFL policy which nodes are allowed to run their app. These can be filtered by the node ID, the provider, an entity, or an instance admin, and also combined with AND/OR operators. The ROFL app metadata homepage link is now rendered, which can display the web page or a social media handle such as X and Discord (#2069, #2075, #2080, #2087, #2086).
The new ROFL marketplace InstanceChangeAdmin transaction is now rendered (#2079), and InstanceCreate and InstanceExecuteCmds bodies are now correctly displayed (#2074). The Contract Call pane for the transaction was also revamped. Sapphire Subcall parameters are now shown, if available (#2068). This is particularly useful for Oasis-specific transactions such as creating or updating your ROFL app or moving tokens between different layers (e.g., between consensus and Sapphire). Function parameters are now also correctly decoded and their value is shown, if available (#2065). Finally, a minimal proxy smart contract (EIP-1167) for 0age/thirdweb variant was added (#2090).
Apart from filtering transaction types, events can now be filtered by their type both for the consensus and the runtime layer (#2078, #2081, #2082, #2084, #2085). The validator voting power percentage and the number of shares are now combined into a single “Voting Power” field (#2105). The number of transactions of a consensus account is now also shown, similar to their runtime counterpart (#2030).
The 404 page and other "no search results" pages were revisited (#2050, #2094). Finally, a new Visit ROSE App button was added in the top-right corner to direct users to an Oasis-provided app that allows you to stake, wrap, or move tokens from the consensus layer to a runtime and the other way around by simply using your Metamask or other EVM-based wallet (#2077). The team made three releases:
In total, 40 pull requests were merged in July.
Developer Platform & Paratime Updates
The Oasis SDK team mostly worked on the ROFL front this month. The rofl-oracle-sgx and rofl-oracle-tdx-raw examples were migrated to the recent tooling so that they are compilable with the Oasis CLI rofl build command out-of-the box (#2273). A new provider-related endorsement constraints for ROFL app were added (#2241). Now, a ROFL app developer can specify that only nodes run by a specific provider or nodes with a specific admin account are allowed to execute their app. This is useful for running your ROFL apps on a private set of ROFL nodes.
A new rofl.OriginApp internal call was added to the ROFL module, which determines the ROFL app ID from the Runtime Attestation Key (#2267). A new InstanceChangeAdmin call was added to the ROFL marketplace module, which enables transferring ROFL app ownership to another admin (#2269). App registration is now attempted using exponential backoff to avoid draining funds in case of a registration issue (#2266). The new ROFL marketplace methods and old delegation methods were added to the TypeScript Client SDK (#2286, #2285).
The team made the following releases this month:
- The Client SDK for Go 0.16.0 was released on July 14.
- The ROFL containers package 0.6.0 was released on July 16.
- A series of ROFL scheduler packages were released 0.2.3 on July 1, 0.2.4 on July 8, 0.2.5 on July 9, and 0.3.0 on July 16.
- A new Runtime SDK 0.15.0 was released on July 14
In total, 24 pull requests were merged in July.
On the Sapphire end, the WAGMI v2 example now includes all variations: a Single chain - Sapphire, Multichain, and EIP-1193 Injected provider (#579). Based on the new Runtime SDK 0.15.0, new Sapphire 1.0.0-testnet and Cipher 3.4.0-testnet were released on July 14.
Including smaller bug fixes, 6 pull requests were merged by the Sapphire team in July.
The Oasis Web3 Gateway team saw a number of maintenance fixes this month. Since the introduction of eth_getStorageAt() support for magic addresses, the standard response for other addresses now contains a 32-byte empty value instead of a single byte for better interoperability (#760). Parsing legacy pre-EIP-155 transactions without a chain ID is now supported (#762, #763). Two releases were made: 5.3.0 released on July 25 and 5.3.1 released on July 31.
Documentation:
- The docs.oasis.io landing page was redesigned with a new look and feel (#1324, #1345). This also includes new Doc Cards and Admonitions (#1344, #1356).
- The How to bridge assets to Sapphire chapter was revamped (#1328).
- The Delegation policy page was refreshed (#724).
- Detailed installation instructions of the Oasis CLI are now available for Linux, macOS, and Windows (#541).
- The ROFL diagram was redesigned to better illustrate the most powerful ROFL features (#2263).
The Playground now contains winning hackathon projects from ETHDam, EthBelgrade, and EthGlobal Cannes this year (#129, #130, #132). Also, a new importer for the Taikai platform was added (#128).
The Blockvote dApp introduced a series of new features as well. MiniMe tokens are now supported (#155, #179). A new wallet dialog was added (#165). A new LIDO-branded and Pontus-X-branded blockvote dApps were deployed (#137, #171, #175). The landing page was rewritten for mobile (#166).
In total, 28 pull requests were merged in July.
Core Platform Updates
The Oasis Core team was busy adding stateless client mode, improving storage performance, and fixing bugs. The following changes were notable:
- A new stateless client node was introduced (#6235, #6252). This node type may be particularly useful for ROFL nodes and Oasis chain oracles.
- The registry notifier component, which also keeps track of ROFL apps, was refactored (#6263). Now there is only a single instance of notifier running for all ROFL and other components, which makes the code more robust and predictable.
- Merkelized Key-Value Store checkpoint creation was parallelized (#6204). While exact benchmarks are still pending, the speed improvement in simulated environments implies a 2-5 fold speedup.
- A fix for server provider advertisement was merged, saving bandwidth (#6270). Only hosts that actually serve the p2p protocol should advertise themselves via seed nodes for peer discovery.
In total, 12 pull requests were merged in July, including bug fixes, documentation improvements, and tests.
A new ADR-23 formally describing Secret sharing schemes (CHURP) was published (#27).
That wraps it up for July. There are big plans in the works for this fall, so be sure to revisit the Oasis blog for more updates. Meanwhile, chat more with the Oasis team by joining the Oasis Discord or following us on X.