Oasis October 2023 Engineering Update
Read the full monthly report by Oasis engineering for updates from October!
October was an exciting start to the last quarter of 2023.
Oasis Engineering pushed updates for the Oasis wallets, explorer, runtimes and more — of course, some bugs were also fixed. But, importantly, new releases of Oasis Core were running smoothly. There’s a lot packed into this report, so keep reading for the full review.
Updates in this report are ordered as follows:
- Wallet and CLI Updates
- Network Updates (Mainnet and Testnet)
- Oasis Nexus and Explorer Updates
- Developer Platform and ParaTime Updates
- Oasis Core Updates
Wallet and CLI Updates
The team behind the Oasis Wallet - Web merged a number of bug fixes related to the landscape and mobile responsive UI, as well as further usability improvements. Here’s a look at the most notable ones!
- A series of improvements were made to the Contacts list including the annoying scrolling bugs on mobile, overlapping contact names, issues with duplicate entries and syncing the list if shown in multiple tabs on desktop (#1696, #1713, #1735).
- Scrolling over the derived accounts in the Open Wallet dialog is now also fixed on mobile devices — both on Android and iOS (#1702).
- Support for exporting a private key of a single account was revamped (#1704, #1710).
- The new Oasis Core 23.0 (currently deployed on Testnet) changed the required gas for some transactions which are now also reflected in the new web wallet (#1712).
- When depositing funds from the consensus layer to the ParaTime layer, users are offered previously used addresses (#1737).
Two new wallet releases were made this month: On October 18, the 1.8.0 release, and on October 20, the bugfix 1.8.1 release. In total, 46 pull requests were merged in October.
Support for the new Oasis Core 23.0 gas costs also landed into the Oasis Wallet - Extension (#320). A new 1.13.0 release was made on October 16, and it is already available on the Chrome web store.
The Oasis CLI saw smaller usability improvements, mostly related to the upcoming 23.0 Oasis Core upgrade.
- Users can now change the domain chain context separator of the existing network by using the new network set-chain-context command (#141).
- The context separator changes each time the dump-and-restore network upgrade is performed because it is derived from the genesis document. A new wallet import-file subcommand was added which allows existing users such as the network validators to import their entity.pem file and use the private key stored in the file for signing the governance transactions (#146).
- Network validators that use the Ledger hardware wallet can continue using it by connecting it to their computer and then creating a “ledger” kind of account in their Oasis CLI. Finally, the network statistics format changed slightly for the new Oasis Core 23.0 release (#149).
All the improvements are part of the new 0.6.0 release made on October 20, which includes binaries for Linux and Mac! 7 pull requests were merged in October.
Network Updates
Oasis Mainnet and Testnet networks were running stable through October.
Emerald, Sapphire and Cipher ParaTimes were up 100% on Mainnet as well as the Oasis-provided services. On Testnet, however, Oasis engineers saw a few hours of downtime of the network on October 12 and notable distributions of the services afterward due to the major network upgrade of the Oasis Core to version 23.0. Read the Testnet highlights below to learn more!
Three new releases of the Oasis Core were made and proposed on the Testnet: 23.0 on October 10, 23.0.1 on October 12 and 23.0.2 on October 25. Read the Core Platform Updates section below for more.
Also, two new releases of the Sapphire ParaTime were made. 0.6.4 on October 4 and 0.7.0-testnet on October 19. The former was proposed on Mainnet and the latter on Testnet. Read the Developer platform and ParaTime updates below to learn about the new features.
Mainnet Highlights
Sapphire took the crown of the most popular ParaTime on the Oasis network based on the daily transaction figures! On Sapphire, the average number of 15,250 daily transactions this month increased more than 10-fold compared to any of the previous months!
Looking back to January 2023, when Sapphire transactions were actively monitored, there were 700–1,200 daily transactions. Many of those were related to the Oasis internal heartbeat services. This surge came as no surprise since the increase in daily transactions on Testnet was clearly notable in September and service providers now seem to feel confident of deploying their services on Mainnet. The peak of 27,549 transactions was reached on October 23 and was more than 20 times higher than the peak last month (1,212 transactions on September 29).
On the other hand, the average number of daily transactions on Emerald dropped through the month from the 13-14k range to the 2-4k range. The number of daily transactions in October was 7,906 compared to 12,156 in September. The peak of 14,113 transactions was reached on October 3 and was lower than last month’s peak — 15,180 on September 29. Despite lower figures, the Oasis Foundation has no plans of sunsetting Emerald since Sapphire may not be suitable for all dApps due to its privacy nature. In the future, it may prove a viable option for incompatible smart contracts making use of a cheap, trustless cross-ParaTime communication between Emerald, Cipher and Sapphire compared to slower and more expensive cross-chain messaging which also requires a trusted oracle.
The number of active Oasis Mainnnet nodes is similar to September. As of October 31, 2023, the figures are as follows (the figure from the previous month in parenthesis):
- 120 (120) validator nodes
- 5 (6) key manager nodes
- 34 (36) Cipher ParaTime compute nodes
- 52 (53) Emerald ParaTime compute nodes
- 23 (22) Sapphire ParaTime compute nodes
On the Mainnet services level, the services related to the Oasis Sapphire saw a short downtime on October 5 due to the Sapphire ParaTime 0.6.4 upgrade. The primary IAS proxy node also saw a series of shorter outages at the beginning of the month due to unexpected issues with the cloud provider. The secondary IAS proxy was running without issues so there were no network disruptions because of the incident.
Testnet Highlights
Finally, the long-awaited Oasis Core 23.0 upgrade landed!
After reaching the upgrade consensus of a whooping 81% of total consensus voting power, on the morning of October 12 at epoch 29570, the Testnet came to a halt. This upgrade was a dump-and-restore upgrade which means that a complete consensus state was exported into a json file and a new network was bootstrapped using this json file as a new genesis document. A 2.5-hour downtime of the consensus layer was due to manual tweaks and close inspection required in the new Oasis-node config file. Such migration will be simplified and mostly automated on the Mainnet upgrade so a shorter downtime is expected in the future. After the config file and the genesis document were migrated, the nodes started, the validator committee was elected and finally, the ParaTimes could spin up. After approximately 4 hours, the first Sapphire block was successfully validated on the new network! The successful upgrade of the Testnet network opened the door to the upcoming 23.0 upgrade on the Mainnet which is planned for December this year.
Even with interruptions during the network upgrade, the average number of daily transactions on Sapphire saw an additional 21% growth compared to an already extraordinary growth in the previous month (21,510 transactions compared to 17,768). The peak of 28,338 transactions on October 4 was also higher compared to the previous month (24,308 transactions on September 30).
The number of daily transactions on Emerald started to decline in the middle of the month resulting in ~1000 daily transactions — most of them related to the Oasis heartbeat services. This was expected because Emerald is a mature ParaTime and most if not all dApps are already running on the Mainnet Emerald and are in the process of migrating to Sapphire. On average, there were 1,188 daily transactions in October compared to 1,521 in September. The October’s peak was 1,310 transactions on October 2 and was much lower compared to an exceptional one-day peak of 6,144 transactions on September 20.
Since Oasis did not fully update the tooling until the last day of October for the new Oasis Core deployed on Testnet, the engineering team has provided the number of Oasis Testnet nodes as of November 9 (the figure in parenthesis is from 30 September). Keep in mind that the Cipher ParaTime upgrade is in progress, so the number reflects the number of nodes already running the upgraded version:
- 44 (46) validator nodes
- 5 (6) key manager nodes
- 9 (17) Cipher ParaTime compute nodes
- 29 (31) Emerald ParaTime compute nodes
- 15 (20) Sapphire ParaTime compute nodes
All Oasis Testnet services encountered outages on October 12 due to the network upgrade. Apart from the Rosetta gateway and the legacy Emerald Explorer the services were up and running the very same day. The remaining two services needed to be upgraded manually and were fully operable on October 18. There were no other incidents this month.
Oasis Nexus and Explorer Updates
Oasis Nexus, the official indexer of the Oasis Network, continued its “release often, release early cycle” by shipping two new releases in October:
- 0.1.16 was released on October 4. It further improved the parallel fast-sync mode (#457), basic indexing of NFTs (#506), a new Prometheus metric for cache hits/misses (#535) along with two fixes for correct error message encoding (#530, #534).
- 0.1.17 was released on October 20. It added NFT API for ownership queries, ID, tracking the token transfers and NFT-specific configuration options (#533, #514, #527, #529, #538, #539, #550), the 23.0 Testnet upgrade label (#547) and support for referencing two-step transactions such as ParaTime deposits and withdrawals (#537).
The Oasis Nexus repository is richer for 17 merged pull requests in October.
A new 1.3.0 release of Oasis Explorer — a frontend for Oasis Nexus — was made on October 23, which is already deployed on explorer.oasis.io.
- Users can now view the raw data of an unencrypted transaction (e.g. smart contract call) similar to what other explorers show (#896).
- Staking delegation and un-delegation transactions now have dedicated icons (#906).
- The token transfers page now uses pagination and filtering is more robust by using the EVM log signature instead of the name (#894).
- The total supply of the ERC-20 tokens is now precise to avoid potential attacks (#917).
- Finally, more than 60 dependency versions were bumped.
In total, 63 pull requests were merged in October. Feel free to test the latest development version containing yet-to-be-released features on explorer.dev.oasis.io and report back to us!
Developer Platform and ParaTime Updates
The Oasis SDK repository saw 19 pull requests in October. Most of the work was focused around the new Oasis Core 23.0 release and the required tooling around it for seamless upgrade:
- On October 18, a new client-sdk/go client v0.7.0 was released, adding compatibility with Oasis Core 23.0. This was needed to make the CLI, the Web3 gateway, the Rosetta gateway and other software written in Go compatible with the new network.
- On October 18, a new runtime-sdk v0.8.0 was released, adding support for the dynamic min-gas price (#1514) and a number of precompiles for the increasingly popular SHA-384 hashing, signing and verification (#1517, #1519).
- On October 19, another minor feature release of runtime-sdk v0.8.1 was made, enabling consensus state freshness checks supported by Oasis Core 23.0.
19 pull requests were also merged to the Oasis Sapphire repository and a number of new products were updated:
- On October 4, the 0.6.4 version of Oasis Sapphire was released for Mainnet. The ParaTime has the same features as 0.6.4-testnet. Check the September engineering report to learn about them.
- On October 19, the new major 0.7.0-testnet Oasis Sapphire release was made, bringing the new SHA-384 precompiles and faster transaction receipts to general users.
- On October 19, the new Sapphire Go client 0.10.0 was made. This was a cleanup release that removed dependency on an obsolete emerald-web3-gateway package and used the upstream Go-Ethereum bindings instead.
- On October 19, the 1.1.2 and the follow-up 1.1.3 versions of the Sapphire TypeScript client were made, adding support for submitting already signed transactions. For example, this simplifies the handling of the gasless transactions on Sapphire.
A new maintenance version of Oasis Emerald 11.0.0-testnet was released on October 12, which adds compatibility with the new Oasis Core 23.0.
Finally, two new releases of the Oasis Key Manager were made:
- 0.4.0-testnet released on October 13 added compatibility with Oasis Core 23.0 and was a release candidate to be used during the Testnet upgrade.
- 0.4.1-testnet released on October 16 correctly advertised support for the new master key rotation feature and was then actually used for the Testnet upgrade.
The Oasis Web3 gateway was vivid in October as well. 13 pull requests were merged and two significant releases were made:
- The 3.4.0 release made on October 4 was published after a number of release candidates, and will be the final release supporting the Oasis Core 22.2.x branch, Sapphire 0.6.x and Emerald 10.x.x.
- The 4.0.0-rc1 release made on October 25 is the first release that supports Oasis Core 23.x, Sapphire 0.7.x and Emerald 11.x.x.
The Sapphire and Emerald Localnet docker images for local testing and CI have also been updated with Oasis Core 23.0 and the latest EVM ParaTimes accordingly (#453, #463, #467, #469, #472).
A new 2.6.0 version of the Oasis Rosetta Gateway was released. Besides the usual dependency bumps (11 pull requests were merged in October), this release is now also compatible with Oasis Core 23.0 and can be used on Testnet.
A new 2.5.5 version of the Oasis Ledger Nano app was released updating dependency to the underlying zxlib and fixing some smaller UI glitches. This is the final release of the app before entering the code audit period. Existing users may notice that the last stable version of the Oasis nano app on the Ledger Live platform is 2.3.8, which doesn’t support signing any ParaTime-layer transactions yet. Once the new version of the code is audited, it can be uploaded to the Ledger Live for general availability!
The official Oasis Documentation had some notable changes too.
- The new View-Call Authentication chapter was added, showcasing a way to authenticate a user based on the policy stored inside a smart contract, but without needing any gas or writing anything to the chain on each login. This is possible because of the confidential state of the smart contract — a feature unique to Oasis Sapphire. Interested audiences can try out the Auth[zn] demo in practice!
- Since Consensys is deprecating Truffle next month, Oasis removed instructions on how to use Truffle to deploy the smart contract on Sapphire.
- All Node.js-related command line invocations now use a tab component with the syntax for npm, pnpm and yarn package managers (example). The selected choice is consistent across the whole Oasis documentation.
- Instructions for the Testnet 23.0 upgrade were added and a draft version of the Eden Upgrade on Mainnet chapter was added.
Core Platform Updates
On October 10, the long-awaited Oasis Core 23.0 was finally released!
This is an important milestone not just for the Oasis ecosystem but also for the whole distributed and confidential computing community. For a high-level overview of the new features, read the release blog. For any readers who want to learn more about the 23.0 development process and how the confidential features matured through time, feel free to read the Core Platform Updates section of the other engineering reports this year. 🤓
In addition to the initial 23.0 release, two subsequent bugfix releases were made shortly after:
- 23.0.1 released on October 12 fixed some outstanding bugs related and was used for the actual Testnet upgrade.
- 23.0.2 released on October 22 fixed a crash when performing a specific query.
Besides the final polishes to the 23.0 release, some important new additions were also merged just before branching a new stable release:
- Committee support for backup proposers: All executor committee workers are now permitted to schedule transactions, each with distinct per-round priority. Priority dictates the time after which a worker can propose a new batch. The consensus layer tracks all published executor commitments and tries to build a new runtime block on a proposal with the highest priority. This improves the network robustness in case of discrepancy (#5354).
- EPID attestation proxy fix: The IAS proxy client was refactored to expose separate clients for each configured IAS proxy, instead of load-balancing internally between endpoints on a per-request basis. This fixed some flakiness in the past when registering a compute node because the attestation procedure requires three calls to the IAS endpoint (namely GetSPIDInfo, GetSigRL and VerifyEvidence), which must all interact with the same endpoint (#5390).
- New fields in the compute node status: Node operators can use two new fields when checking the liveness of their compute node. Currently, the total_rounds and live_rounds fields correspond to the number of all validated rounds in the current epoch and the number of rounds, to which a compute node successfully contributed, respectively. Two new fields were added: finalized_rounds and missed_proposals which correspond to the number of finalized rounds and the failed rounds respectively when a compute node acted as a proposer (#5402).
In total, 32 pull requests were merged in October including bug fixes and version bumps.
What’s Next?!
That’s all for October!
Even though the holiday season is starting, Oasis Engineering is set to complete some more major product and network upgrades through the rest of 2023. So, stay alert for more important updates during November! Until then, chat more with the Oasis team by joining the Oasis Discord or on the Oasis Forum.