
Oasis January 2025 Engineering Update
Read the most recent report from the Oasis engineering team with all the newest releases and network updates from January 2025!

The new year is off to a fast start for the Oasis engineering team. A lot has happened since the last report, so let’s dive in and break down recent project updates, technical fixes, and general improvements. Note - this installment covers some details from the holiday period in December. As usual, each section below provides a full recap of the following engineering updates.
- Wallet and CLI Updates
- Network Updates
- Oasis Nexus and Explorer Updates
- Developer Platform and ParaTime Updates
- Oasis Core Update
Wallet and CLI Updates
In December, the Oasis Scan team switched to the new major API version 2, and the ROSE Wallet team was mostly focused on adopting the new API and/or integrating the wallet with the Oasis Nexus where possible. Both backends are actively maintained and used as a fallback if the other one fails.
The Oasis Scan V1 API support was removed from the wallet code (#2105, #2106). Vendor-specific tests were also migrated from Oasis Scan V1 to V2 (#2116). Playwright UI tests, on the other hand, were ported over to Nexus as well as a series of other end-to-end test fixes (#2096, #2101). Dumping validators are now enabled for the Nexus backend as well (#2102).
Furthermore, the Nexus API bindings are now generated entirely from the OpenAPI specifications without any manual tweaks (#2107). Users with a hardware wallet will be happy to know that the code for requesting Ledger access was revamped and doesn’t rely on browser state syncs anymore (#2118).
The Android app signing key configuration and secret management are now better explained in the mobile wallet docs (#2097). The minimum Android version for the mobile wallet is now Android 11 or newer due to the StrandHogg attack in previous versions of Android (#2110). Finally, on January 9, the team released a new Rose Wallet 2.1.0.
In total, 15 pull requests were merged in December and January.
The Oasis CLI was focused mostly on further extending Runtime Offchain Logic (ROFL) tooling to Intel TDX as well as a handful of convenience improvements. The new “oasis paratime show events” command was added which extracts both block and transaction-specific events for a specific block round number (#333). When adding a new network, the location of the network’s GRPC unix socket is now expanded to an absolute path, if the relative one was provided (#350). A long-standing bug was also fixed when executing “oasis network status” where the ParaTime IDs weren’t printed if the oasis node was still starting up (#343).
The rest of the new features were related to ROFL. Both SGX and TDX ROFL flavors are now compiled by simply running “oasis rofl build” and defining the rest of the settings inside a new “rofl.yaml” app manifest file (#335). To use containers inside your ROFL TDX, add “compose.yaml” Docker compose file which will now be validated before building the final bundle (#351).
Reproducible builds can now easily be verified against the manifest and on-chain state by passing the --verify flag (#352, #353). When debugging the ROFL register transactions, the address is now correctly encoded as a bech32 address starting with rofl1 instead of a hex value (#332).
Finally, per community request, the official Windows build of the Oasis CLI tool was released (#342, #344, #346). The Oasis CLI version 0.10.4, released on January 13, now brings new amd64 executables for Microsoft Windows 10 and later.
In total, 17 pull requests were merged in December and January.
Network Updates
Mainnet Highlights
On January 23, after a month of testing, the Oasis Core 24.3.1 was proposed on Mainnet. See November's engineering report to learn more about the release.
Daily transactions on Sapphire Mainnet fluctuated in the 16k-62k range in December and 16k-93k in January. The monthly average in December was 22,767 transactions per day, and was 4% higher compared to November (21,854 transactions). In January, this figure surged to 35,510 transactions, up 56%!
The daily maximum was 62,058 transactions on December 26 (compared to 28,716 the last month on November 22) and 93,609 transactions on January 17. Figures on the non-confidential Emerald Mainnet, where a few services still run in production, were in the 2k-5k range in December and January.
As of December 31, 2024, and January 31, the Mainnet nodes were well decentralized (November figures in parenthesis):
- 116 (117) validator nodes in December, 115 in January
- 6 (6) key manager nodes in December, 6 in January
- 41 (42) Cipher compute nodes in December, 41 in January
- 57 (55) Emerald compute nodes, 57 in January
- 34 (37) Sapphire compute nodes, 33 in January
No major outages of Oasis Foundation-provided services were encountered in December and January on Mainnet. The Oasis Nexus was upgraded on December 18 with a short 3-minute downtime. The Rosetta gateway encountered another set of 7-minute downtimes on January 21, 22 and 29. You can check out downtime details on the Mainnet status page.
Testnet highlights
On January 10, we released and proposed Sapphire 0.9.1-testnet and Cipher 3.2.1-testnet on the chain.
The number of daily transactions on Sapphire Testnet was in the 7k-9k range in December and January since no major hackathons and workshops were organized during this period. The number of daily transactions on Emerald Testnet was in the 2k-3k range, mostly related to our health check monitoring services.
As of December 31, 2024, and January 31, the Testnet figures are as follows (November figures in parenthesis):
- 44 (43) validator nodes in December, 44 in January
- 7 (7) key manager nodes in December, 7 in January
- 18 (19) Cipher compute nodes in December, 16 in January
- 29 (29) Emerald compute nodes in December, 28 in January
- 18 (18) Sapphire compute nodes in December, 17 in January
- 6 (5) Pontus-X compute nodes in December, 5 in January
The Testnet Oasis Rosetta Gateway saw a series of outages starting on January 21 due to Firewall upgrades by our SimplyVC partner. No other major outages of Oasis Foundation-provided services were encountered in December and January on Testnet.
You can check the current status of our Testnet services on the Oasis Testnet status page.
Nexus and Explorer
The Nexus team brought several exciting new indexing features to all Sapphire, consensus, and ROFL components. Nexus now supports named ERC-721 and ERC-20 tokens instead of just showing their contract addresses (#798). Related to EVM tokens, the sort_by parameter can now be provided to configure whether the results should be sorted in any way (#828). Contract events are now indexed per-contract (#808, #838). And a timestamp of each event is also added (#823).
The behavior of the status of consensus<->ParaTime transactions was revamped (#820). If a two-step transaction (e.g., deposit ROSE from consensus to Sapphire) fails, then the consensus part of the transaction is now also marked as failed on Nexus. A new "signers" field was added to the transaction response, deprecating a single sender_0, sender_0_eth, and nonce_0 interfaces (#885, #888). Filtering results based on their type or method is now supported (#824).
Also, finding top-n account-related transactions was optimized by adding the tx_transactions_method_height index (#890). The block proposer index also includes the block height (#836). Intermittent block pre-work errors were fixed in parallel environments due to a race condition (#810). The Nexus analyzer has a new MaxBackoffTimeout property used once the initial indexing is caught up (#837, #842). If a user cancels a request or an HTTP timeout is reached, cancel processing of the request in the backend as well (#821). Postgresql functions are now marked as STABLE to speed up the execution time (#832).
Nexus Docker images were migrated from Dockerhub to Github containers (#827). ROFL transactions are now parsed and indexed (register App, update App policy, deregister App) (#812, #876). The metadata_registry is now part of the end-to-end testing (#889).
The team also made four new releases of Oasis Nexus:
- v0.5.0 released on December 18.
- v0.5.1 released on December 19.
- v0.5.2 released on December 23.
- v0.5.3 released on January 21.
In total, 35 pull requests were merged in the two months.
The Explorer team prepared a special New Year surprise for users and made general availability of the Oasis Explorer for the consensus layer (#1663). Users can now visit explorer.oasis.io and click on the central "Consensus" button. This will open up the latest consensus blocks, transactions, and accounts, as well as a list of validators, statistics, and other consensus layer information. The Oasis team is proud to build the first explorer that combines and fully indexes the consensus and ParaTime layers.
There were also a number of other exciting features implemented. The search engine for Consensus transactions and blocks has been enabled (#1662, #1678). The layer selector on the top received a series of updates (#1688, #1686, #1709). A link to proposer in the consensus block data is now displayed (#1706). When fetching data for named validators, the API limit was now introduced (#1673). Support for filtering the transaction list for method type was added (#1679). The visibility of Sapphire in ParaTimes section is now more prominent (#1651, #1640, #1670, #1642).
Multiple signers for ParaTime transactions are now rendered (#1705). Both encryption_envelope and oasis_encryption_envelope are now considered when rendering a transaction (#1695). If a two-stage consensus<->ParaTime transaction fails, a special error is now reported (#1647). Names of the named ERC-20 and ERC-721 tokens are now rendered (#1632, #1687). ROFL transactions are now rendered on Explorer as well (#1659). A user can also copy complete ROFL raw data to clipboard with a button (#1683). Bug fixes for showing wrong token transfer balance and wrong total balance amount for consensus accounts have been applied (#1638, #1655).
The team made two releases, 1.15.0 and a quick follow up, 1.15.1, which were both released on December 18.
In total, 40 pull requests were merged in December and January.
Developer Platform and Paratime Updates
The Oasis SDK team continued their work on ROFL tooling, EVM, and other smaller bug fixes. A TDX-based example of an oracle that fetches the latest ROSE price from Binance and stores it to Sapphire was added (#2069, #2115).
Furthermore, support for running containers inside the TDX-based ROFL apps was introduced (#2108). Also, storing end-to-end encrypted secrets onchain and safely delivering them to the containers is now possible (#2136, #2137). Accessing the secrets is easily made available in containers via environment variables or container secrets referenced in the compose file (#2139, #2140).
A new rofl-containers rust crate was introduced that includes an easy-to-use REST API for secure key generation and other useful services inside containerized ROFL apps. Support for mounting persistent storage provided by the Oasis Core was added (#2134, #2135). A new rofl-dev Docker image was added for building your ROFL (#2063, #2109). This is particularly useful for hosts that don’t run Linux natively.
An EVM precompile for computing the sr25519 signature was added to the runtime SDK (#2073). This opens the door for onchain substrate key derivation and signatures compatible with Polkadot. Per-ParaTime staking thresholds are now pretty printed (e.g., in the CLI) (#2066).
A new Runtime SDK 0.11.0 was released on January 10, and 8 rofl-containers releases were made in January.
The Sapphire team made the SIWE wrapper API for onchain authentication ready for production (#459). Also, a number of Celer Testnets were removed from the OPL solidity library, because they are no longer maintained (#486, #483, #1085, #1045). Developers who want to build cross-chain apps on Oasis are encouraged to use Hyperlane or Router instead.
On January 10, Sapphire 0.9.1-testnet and Cipher 3.2.1-testnet ParaTimes were released. They improve ROFL app management, add features needed for running containers in ROFL TDX apps, and add sr25519 signature primitives to confidential EVM precompiles described above.
The Sapphire and Emerald Localnet docker images now have a way to disable the indexing and the explorer frontend by setting OASIS_DOCKER_START_EXPLORER environment variable to “no” (#471). This is especially useful for CI services where a fast spin-up time is desired, and no cycles are wasted. The image size was reduced by 20% by replacing the Node.js web server with Nginx (#676). Intermittent issues with epoch transitions when starting the key manager have now been resolved (#668, #665). Nexus 0.5.3 is now shipped with the Localnet image (#683).
The Oasis Web3 Gateway team also merged a number of improvements. A new Prometheus counter for the number of EIP-712 signed queries (eth_calls) was added (#618). On December 19, the team also released the 5.2.0-rc1 version.
The Documentation saw a major overhaul in the past two months:
- The new Build part now combines everything for BUIDLers on the Oasis platform: writing confidential smart contracts on Sapphire, confidential offchain logic (ROFL), or cross-chain applications (OPL). Previously, those chapters were spread across different parts of documentation and developers were often confused about which tool was correct for their problem (#466, #472, #478, #1041, #1052, #1054, #1030, #1058, #1097)
- The Gasless chapter is now richer for encrypted end-to-end transactions generated completely onchain and ready to be submitted by the user.
- The new Hyperlane chapter describes how to build a cross-chain dApp on Sapphire with a Hyperlane framework.
- The API reference for our Python clients was published (#460).
- Node operators running their own Web3 gateway can now see all Prometheus metrics exported by the gateway (#1075).
- Setting up a TEE on IBM Cloud has also now been documented.
- The Papers chapter was moved from the website to docs.oasis.io. It contains the original Ekiden white paper as well as subsequent research-oriented papers affiliated with the Oasis Protocol and Oasis Labs.
- Diagrams not generated by Mermaid but drawn manually, now have both light and dark theme versions (#457, #1055, #5973). This was possible thanks to app.diagrams.net, which supports embedding both CSS styles inside a single SVG image.
- Our docs.oasis.io site strives to be clean and quick. It does not require Javascript for rendering, nor should it use any tracking cookies. For this reason, YouTube video iframes have been replaced with the youtube-nocookie version (#475)
The Oasis Playground saw some updates too. 11 new hackathon projects from P4W3 2024 and EthGlobal Bangkok 2024 were added (#94, #95).
Also, an excellent showcase of Sapphire used for confidential chat was added (#92). The search field and selected filters are now part of the URL, so one can easily share those with others (#87). Finally, all projects are now exported to a single JSON file and integrated into the official Oasis Protocol website Ecosystem page (#93).
The official Demo Starter project was rewritten to React (#19). In the past year, it became clear that React is used by the majority of developers in the Web3 ecosystem, so the team decided to make it the Oasis default too. The Vue frontend of the Demo starter project is still available in a separate Vue branch.
The Oasis Blockvote dApp was deployed on Mainnet (#118, #120). You can try it out now at vote.oasis.io!
Core Platform Updates
The Oasis Core team merged the following features in December and January:
- Hot-loading of ParaTimes and ROFL bundles is now supported. This means you no longer need to restart your oasis-node process when a new version of ROFL and even ParaTime, such as Sapphire, is released (#5961, #5994). Instead, the URL and the expected .orc hash are now included inside the upgrade transaction, and oasis-node automatically fetches artifacts and restarts the corresponding component.
- In the mock beacon mode, secrets are now generated instantly which significantly reduces the execution time of end-to-end tests and spinning up the Localnet (#5971)
- All ELF, SGX, and TDX executables inside .orc bundle have been refactored so that they have the same structure (#5977, #5995). The change is backward compatible.
- Access to read-write drives and formats was added, as well as the persistent image overlay (#5981, #6005). This may now be used by the TDX containers.
- Upgrades to a new version can now be automatically performed (#6012).
- A ParaTime watchdog was introduced (#6024)
- Initial GPU-related metadata was added to .orc bundle manifest (#5995)
- Bundle directories for expanded .orc files are cleaned up on startup now and also on ParaTime upgrades (#6003, #5976, #6029).
- Provisioners are now decoupled, and the TEE kind can be defined per-component (#5975), meaning that you can configure a component to run in TDX, SGX, or without a TEE, depending on the component’s support. Since TDX will be mocked in the near future, the environment variable OASIS_UNSAFE_MOCK_SGX picked up by tests was renamed to a more generic OASIS_UNSAFE_MOCK_TEE.
In total, 23 pull requests were merged in December and January.
Finally, a new Oasis Boot repository has been created that contains the boot stage 1 and 2 of the
Oasis TDX runtime. The following PRs were merged in January:
- Add Podman-based container support (#5)
- Add e2fsprogs-resize2fs to stage 2 (#8)
- Support custom storage setup in stage 2 (#7). This allows more advanced setups like persistent storage that uses keys obtained from the on-chain KMS after successful registration.
Four new releases of the Oasis Boot were released and can be used in your rofl.yaml:
- 0.3.0 released on January 8.
- 0.3.1 released on January 16.
- 0.3.2 released on January 21.
- 0.3.3 released on January 22.
What’s Next?!
That brings things up to date — check back for further updates next month. Meanwhile, chat more with the Oasis team by joining the Oasis Discord or the Oasis Forum. Also, check out the recent case study with io.net to learn about the latest on ROFL.