Oasis November 2023 Engineering Update
Dive into the monthly report from Oasis engineering for November!
November was a month of notable progress for Oasis engineers as the year comes to an end.
Updates were pushed for the Oasis wallets, explorer, runtimes and more — of course, some bugs were also fixed and network performance data was parsed and analyzed. New releases of Oasis Core also ran smoothly.
There’s a lot packed into this report, so keep reading. The full updates 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 worked hard this month to bring you exciting new features.
- Similar to other wallets, accounts stored in the wallet, regardless of their type, can now finally be labeled (#1699).
- Work has begun to support Ledger devices over Bluetooth (#1739, #1784). While the Bluetooth support has yet to be fully implemented on mobile Chrome, it already works in a stand-alone Oasis mobile wallet, which we will be releasing in the upcoming months.
- A pack of UI fixes were made such as the revamped transaction preview modal (#1747), account removal behavior (#1752, #1753) and some minor mobile glitches (#1754, #1778).
- A new logic for seamless migration from the Oasis Wallet Extension (once it’s deprecated) was added (#1771).
28 pull requests were merged to the repository in November. Don’t forget to try the development version out at wallet.dev.oasis.io and report back to us!
The Oasis CLI also saw a handful of new features, mostly focused around the Oasis Core 23.0 release.
- The statistics output for a ParaTime was improved, which now shows both primary and backup proposers (#150).
- Improved block proposing mechanism is new in the 23.0 release and speeds up discrepancy resolution. A new “account entity init” command was added for node operators which prepares the entity.json file containing the public key of the selected account (#155).
- This command existed previously in Oasis Core but was deprecated. Node operators will also find useful a new command for importing your entity private key from the .pem file (#167).
- The CLI documentation and example invocations saw a number of cleanups and consistency fixes along with the node operators documentation (#158, #159, #160).
- The CLI now supports generating proposals for changing the network parameters (#162), which is new in the 23.0 release.
- Finally, the Mainnet chain context was changed to the new network following the Eden upgrade at the end of month (#165).
Altogether, 16 pull requests were merged. A new Oasis CLI 0.7.0 release was made on November 29 containing the described new features with binaries for Linux and MacOS!
In November, the wallet team released another package called The Unmnemonic Tool 0.1.0 for Linux, MacOS and Windows! This tool contains a special implementation of a derivation path tailored towards
- Ledger users with a failing device that have the recovery mnemonic available and urgently need to access their funds,
- BitPie users whose mobile wallet was deprecated and cannot access their funds anymore.
Network Updates
November was an extremely vivid month for the Oasis network.
On November 29, a major network upgrade took place on Mainnet. The consensus-breaking hard fork upgrade called the Eden upgrade (following the traditional rose-nomenclature starting with Amber in 2020, a non-formal Beta, Cobalt and finally Damask in 2022) switched from Oasis Core 22.x to 23.x. Mainnet was disrupted over the day, but both the network and all the ParaTimes were up and running at the end of the day UTC time. Read all about the Eden upgrade here.
The engineering team would like to thank all network validators — across the globe — who timely acknowledged our instructions and showed their commitment to the network! The Testnet network on the other hand and its ParaTimes were up 100% in November.
A record seven new releases of the Oasis Core were made in November. Most of them were targeting Testnet, while the last three releases were also proposed on Mainnet.
Mainnet Highlights
During the Eden upgrade on November 29, the Oasis Core 23.0.7 was planned to be used. During the upgrade, a hotfix 23.0.8 release was made and immediately proposed to the Mainnet validators. Another 23.0.9 bugfix was released on the next day, November 30. Read the Core Platform Updates section below for more.
A new 11.0.0 release of Emerald ParaTime was made and proposed on Mainnet on November 28.
Sapphire continues with a striking growth of transactions throughout the month. The average of 44,908 daily transactions in November increased roughly 3-times compared to October (15,250 daily transactions which saw a 10-fold growth from September!). The peak of 79,466 transactions was reached on November 30 and was also almost 3-times higher from the peak last month (27,549 transactions on October 23). The figure may be skewed slightly since the upgrade took place a day earlier and many transactions were still in the backlog.
The Emerald chain saw a significant increase of transactions too—from the 3k-6k range to 12k in the second half of the month. The average number of daily transactions in November was 8,494 (7,906 in September). The peak of 13,996 transactions was on November 15 (the October’s peak was 14,113 on October 3).
Despite the Eden upgrade happening on November 29, most of the active Mainnet nodes were quickly back online. As of November 30, 2023 (block 16836500), the figures are as follows (the figure from the previous month in parenthesis):
- 111 (120) validator nodes
- 5 (5) key manager nodes
- 33 (34) Cipher ParaTime compute nodes
- 46 (52) Emerald ParaTime compute nodes
- 24 (23) Sapphire ParaTime compute nodes
All Mainnet services were offline or out-of-sync on November 29 due to Eden – the last downtime-having upgrade for Oasis Mainnet. Otherwise, no downtimes were encountered and the network operated normally.
Testnet Highlights
Five bugfix Oasis Core releases were proposed on Testnet:
- 23.0.3 on November 8,
- 23.0.4 on November 14,
- 23.0.5 on November 22,
- 23.0.6 on November 26 and
- 23.0.7 on November 28.
Three new Cipher ParaTime releases were made and proposed on Testnet:
- 3.0.0-testnet on November 6,
- 3.0.1-testnet on November 10,
- 3.0.2-testnet on November 15
The average number of daily transactions on Sapphire fluctuates widely depending on which service dApp developers are currently working on. This month, we saw a decrease in the second half of November from 22k to 8k range, but then a two-day spike at the end of the month back to 16k. The average for the month was 15,530 and is similar to what we saw in the past three months (21,510, 17,768 and 11,313 transactions in October, September and August respectively). Interestingly, the peak of 31,578 transactions on November 12 was higher compared to the previous month (28,338 transactions on October 4).
On Emerald the majority of transactions were produced by the Oasis heartbeat service which doubled the frequency in November. The average number of transactions this month was thus 2,403 (1,188 in October). The November’s peak of 2,533 transactions on November 12 was also higher compared to the previous month (1,310 transactions on October 2).
As of November 30, 2023 (block 18522255), the the number of Oasis nodes running Testnet has significantly grown (the figure from November 9 in parenthesis):
- 46 (44) validator nodes
- 6 (5) key manager nodes
- 20 (9) Cipher ParaTime compute nodes
- 32 (29) Emerald ParaTime compute nodes
- 22 (15) Sapphire ParaTime compute nodes
The Rosetta gateway was disrupted on November 14–15 and 28–29 during the Eden upgrade. A shorter, 6-minute downtime was also encountered for the Oasis Wallet on November 28 for an upgrade and a 12-minute downtime of Oasis Explorer on November 23. All other Oasis Testnet services were up 100%.
Oasis Nexus and Explorer Updates
The Explorer team was busy pushing forward Nexus, the explorer backend, to run faster, more robustly and, of course, support the new Oasis Core 23.0 release. The team made 7 releases:
- 0.1.18 released November 2 added support for Oasis Core 23.0
- 0.1.19 released November 3 was a bugfix release fixing building the Docker image
- 0.1.20 released November 6 added support for the original NFT metadata in JSON form
- 0.1.21 released November 8 was a bugfix release that improved robustness of analyzers, simplified the node client stack and fixed the NFT metadata-related bug
- 0.1.22 released November 14 improved the speed of initial database queries, added a small bisect tool for finding where the Oasis Core and the explorer database diverge.
- 0.1.23 released November 20 brought support for indexing the results of unencrypted transactions on Sapphire.
- 0.1.24 released November 27 reduced database contention when using parallelism by writing updates into a writeahead log.
The repository is richer for 21 merged pull requests in November!
In parallel, the Explorer frontend saw a pack of improvements.
- On the block page, the block-level events are now shown (#990, #991) and similarly the account-related events on the account page (#992).
- Horizontal scrolling is now enabled, if the screen is too narrow to fit all tab titles on a screen (#1018).
- A new NFT metadata page was added to the frontend side as well including the image preview (#1036, #1038).
- A brand new “Token inventory tab” for ERC-721 was also added (#1043).
- Finally, the history of selected tab panes is now managed (#1049).
The remainder of commits were bug fixes and dependency updates — 63 pull requests merged in total. You can test the bleeding edge version of our Explorer at explorer.dev.oasis.io!
Developer Platform and ParaTime Updates
The Oasis SDK saw the following changes.
- A bug emitting an event that zero transaction fee was paid was fixed (#1557).
- Round root queries were added to the SDK to be used by the ParaTimes for cross-ParaTime communication when proof verification lands (#1564).
- And, finally, in ECDSA precompiles passing the public key in a compressed format is now optional (#1570).
Other changes were related to the Oasis Core bumps and the new Eden upgrade. 9 pull requests were merged in total this month.
A new version of Oasis Emerald 11.0.0 was released a day before the Eden upgrade adding compatibility with the new Oasis Core 23.0.
Similarly a new version of the Key Manager 0.3.4 was released a week earlier on November 20 in preparation for the Eden upgrade. Then, a day after a successful Eden upgrade, a new 0.4.1 release based on the Oasis Core 23.0 API and containing support for the new chain domain separation context was released.
Three new versions of Oasis Cipher were released and proposed on Testnet the same day:
- 3.0.0-testnet was released on November 6 adding support for the new trust roots following the Testnet network upgrade in October,
- 3.0.1-testnet was a bugfix release on November 10 which included the zero transaction fee fix,
- 3.0.2-testnet was another bugfix release on November 15 incorporating a number of ParaTime call fixes.
The Sapphire team also prepared a nice set of changes:
- The gas estimation logic inside the confidential EVM is now finally integrated with the client libraries (#173). This has been in the works for quite some time. Note that the gas estimate calls are not signed. Consequently, the msg.sender value is zero and the estimate may be off for that.
- The Sapphire-related documentation is now hosted in the sapphire-paratime GitHub repository instead of the general documentation (#227, docs#636).
- Network names in all Hardhat config examples and inside the documentation were made consistent with the official chain naming (#226, docs/#623). Developers are encouraged to use the following names:
- Sapphire running on Mainnet: sapphire
- Sapphire running on Testnet: sapphire-testnet
- Emerald running on Mainnet: emerald
- Emerald running on Testnet: emerald-testnet
- A fix for a broken SHA-384 precompile call was incorporated (#229)
The Oasis Web3 Gateway team released a new 4.0.0 version. This is a new major version for Mainnet which is based on the Oasis Core 23.0 API.
A lot of work was also put into the Sapphire and Emerald Localnet docker images. Last month, support for Oasis Core 23.0 was added including the fresh versions of Sapphire and Emerald ParaTimes. This month images were made lighter and faster (#473, #482, #483, #484) and the Oasis Core version was bumped to the latest 23.0.9 version (#486).
The Oasis Ledger nano app also got updates. Version 2.5.6 is now officially audited and can be included in the Ledger Live app manager. Another version, 2.5.7 added the chain context of the new Eden upgrade network so that the “Mainnet” literal is shown on the display when signing transactions instead of the hash.
The Oasis Docs saw quite some changes in November:
- A new Security chapter was started, for helping developers write secure confidential contracts on Sapphire and avoiding different attacks such as leaking storage access patterns, wrong order of operations or spent gas.
- The Run Your Validator Node chapter was revamped heavily to use the latest Oasis CLI which replaced many Oasis Core commands that were deprecated in the 23.0 version.
- The Staking incentives were slightly off time-wise and are now more accurate.
- Ledger and BitPie users will find the updated FAQ chapter handy with instructions for the Unmnemonic tool
- The Oasis Core Ledger repository was deprecated and all occurrences were replaced with the Oasis CLI (#626)
- The Eden upgrade chapter was finalized.
- All config files under the “Run your Node” chapter were updated for Oasis Core 23.0 (#640, #641, #642, #647, #648)
Core Platform Updates
It was a big month for the Oasis Core team. Most of the effort was concentrated around the Eden upgrade which took place on November 29. For details on what went right (or not entirely right) during the Eden Mainnet upgrade, read more here. 🤓
The team made no less than seven releases of the Oasis Core in a month, which is a record.
- 23.0.3 released on November 9 was a bugfix release and contained a crash fix and a number of smaller fixes gathered in the 14-day period running Oasis Core 23.0.2 on Testnet.
- 23.0.4 released on November 14 contained a deadlock fix, more connection robustness checks and a speed up of the compute executor committee.
- 23.0.5 released on November 22 was another bugfix release improving robustness when communicating with the ParaTimes.
- 23.0.6 released on November 27 exposed the round root query API to the client which will be used in the cross-ParaTime communication and contained another batch of bug fixes discovered during extensive testing on Testnet.
- 23.0.7 released on November 28 added two more optimizations, namely the suspension of looking for new peers, if enough of them were already discovered, and faster block verification in the light client implementation. This release was the candidate for the Eden upgrade.
- 23.0.8 released during the Eden upgrade on November 28 contained extra signatures for the Eden genesis block that were needed to unblock the key manager initialization on Mainnet.
- 23.0.9 released on November 30 fixed some logging messages and fetching I/O roots of the genesis block since, by definition, they don’t exist.
In total, 64 pull requests were merged in November.
What’s Next?!
That’s all for November!
The holiday season is here, and the engineering team at Oasis is ready to ring in the new year with more development, upgrades and product features. As 2024 kicks off, stay tuned for more updates. Until then, chat more with the Oasis team by joining the Oasis Discord or on the Oasis Forum.