Oasis May 2024 Engineering Update
Read the latest report from the Oasis engineering team with updates, improvements, and performance data from May 2024!
The engineering team at Oasis finished the past month with impressive productivity and momentum that’s already carrying through to June. Each week of May was packed with a variety of tasks and releases, including many network enhancements, feature upgrades, and bug fixes across all aspects of the Oasis Network. This update covers all the performance data and technical improvements from May.
The updates included 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 ROSE Wallet team merged a number of usability-related fixes this month for mobile, desktop and browser extension flavors. The new bluetooth UI now allows you to pick either the USB or Bluetooth hardware wallet (#1841). Currently, this behavior only works on mobile devices. Also on the mobile front, the profile is now automatically locked after 30 seconds of inactivity or when switching the apps (#1933). On Android, the back button is now supported for navigating through the mobile wallet (#1928, #1932). The incognito mode, where no private keys are stored on your device, was removed from the mobile UI because you may end up losing your keys if the application loses focus (#1914).
The Oasis assets were updated including the new mobile icon (#1927, #1924) and the size of the logo on the main screen was increased slightly on mobile (#1929). The app content is now not captured anymore in the screenshots or apps view (#1940). The 0x prefix will be trimmed automatically when importing a private ethereum key (#1923). For firstcomers, the default flow is now creating a new wallet (#1939). For existing browser extension users, a delay before user can finish V0 migration was added to encourage reading the instructions (#1943).
Apart from the “light” and “dark” themes, the “system” theme can now be used, which is also a new default (#1931). Smaller UI improvements were made to the account importing dialog, the footer text, the login screen, the transaction preview dialog and the delegations screen (#1913, #1941, #1936, #1912, #1904, #1937, #1938, #1915). A number of other bugs and UI fixes were applied, such as the unwanted dialog resizes, jittering on notifications, and refreshing after debonding transactions (#1950, #1920, #1963). In total, 33 pull requests were merged.
The Oasis CLI saw a number of interesting new features as well. You can send different tokens in Oasis ParaTime transactions and a new paratime denomination subcommand was added to configure them locally (#242). Also, there is a new DENOMINATION(S) column when listing the configured ParaTimes (#237). To fetch the compute committees for a specific ParaTime and epoch, a new oasis net show committee command was added (#235). 0x prefix is now automatically trimmed when importing secp256k1 accounts (#231). MacOS binaries built automatically on a new CLI release were not working due to wrong linkage of the libusb library and are now fixed (#243). Overall, 10 pull requests were merged in May.
Network Updates
The following Oasis Core and ParaTime releases were made in May and proposed on the network:
- Oasis Core 23.0.11, proposed on the Testnet on May 6, and on the Mainnet on May 10
- Sapphire 0.7.3 and Cipher 3.0.5, proposed on the Testnet on May 8, and on the Mainnet on May 21
- Oasis Core 24.0, proposed on the Testnet on May 13 and on the Mainnet on May 27
Read the Core Platform Updates and the Developer Platform and ParaTimes sections below to learn more about the new features and fixes.
Mainnet highlights
The number of daily transactions on Sapphire Mainnet was steadily climbing from the 25k to 43k range through the month. The average was 39,120, which was higher for a third compared to the last month (29,187 transactions). The daily maximum was 43,389 transactions on May 24, compared with April’s high of 35,640.
The number of daily transactions on Emerald Mainnet fluctuated between 4k and 7k. Two daily bursts occurred on May 19 in the 16k range and on May 27 all the way to 29,738 transactions, which was also the monthly peak, compared with 25,448 the last month on April 12. The spike seems to be related to the 0xd8239942BC23E4170C5F2E8F0B4ee75153001337 address. The monthly average in May was 6,841 transactions and was similar to the April average of 6,996 transactions.
As of May 31, 2024, the figures haven’t changed compared with April, apart from the confidential compute nodes. 12 and 10 nodes running Cipher and Sapphire, respectively, didn’t update the ParaTime version in time and the protocol evicted them from the compute node committee at the time of scraping the figures below:
- 120 (120) validator nodes
- 6 (6) key manager nodes
- 33 (45) Cipher ParaTime compute nodes
- 62 (62) Emerald ParaTime compute nodes
- 32 (42) Sapphire ParaTime compute nodes
No major outages were reported for the Oasis-provided services in May. Two 15-minute downtime events were encountered by the Oasis Nexus service on May 11 due to a slower SQL upgrade than was expected. The Rosetta gateway saw a two-minute downtime on May 27 because of the new Rosetta client upgrade. Check out the Mainnet status page to check all monitored services.
Testnet highlights
The number of daily transactions on Sapphire Testnet was steady in the 7k-8k range. The average for the month was 7,583 transactions and was slightly lower compared with April’s 8,313 transactions. The daily maximum with 9,025 transactions on May 1 was also slightly lower compared to the previous month, 11,444 transactions on April 4.
The Emerald Testnet chain was mostly dormant in the 3k range with Oasis healthcheck transactions taking most of the volume. Still, the monthly average with 3,292 transactions was higher for a quarter compared to last month’s 2,646 transactions. The daily maximum was 3,381 transactions on May 13, compared with 3,347 on April 30.
As of May 31, 2024, the Testnet figures are comparable to the last month (figures from April in parenthesis):
- 43 (43) validator nodes
- 6 (6) key manager nodes
- 18 (17) Cipher ParaTime compute nodes
- 29 (30) Emerald ParaTime compute nodes
- 21 (17) Sapphire ParaTime compute nodes
- 1 (1) Pontus-X ParaTime compute node
The official Oasis Sapphire Testnet Web3 gateway saw some hiccups in May. On May 10, during the upgrade of the Oasis Core to 23.0.11 and the ParaTimes, there was a slightly longer, 40 minutes downtime due to unexpected behavior of the vault. Then, on May 14 from around 11:00 to 16:30 UTC, the Web3 gateway encountered a series of downtimes due to the bug in the new key manager code. The bug was related to another upgrade, this time to Oasis Core 24.0 and the Key manager. The issue was finally resolved with a hotfix (read the Core Platform updates section below to learn more). Read the Core Platform Updates section below for details. Apart from the Web3 gateway, no other notable outages were reported for Oasis foundation-provided services in May. Check out the details on the Testnet status page for details.
Oasis Nexus and Explorer
The Oasis Nexus — the backend for the Oasis Explorer — team mostly merged cleanup PRs, bugfixes and tests improvements this month. Feature wise, the focus was on the consensus layer. Basic consensus-layer account statistics were added such as the number of transactions (#698). Genesis document query code was revamped (#630). Known addresses such as the common pool, the fee accumulator and similar were added to the database both for the consensus and ParaTime layers (#687). Consensus entities are now query-able by the oasis address, which is more convenient compared to the entity pubkey (#685). Also, the consensus transactions query responsiveness was improved up by extending the required db index (#697). PontusX ParaTime was now added to the indexer (#696). A crash was fixed for a non-existent block 8048955 in April 2022 that should exist as the first block of the dump-restore Damask upgrade, but does not (#677). End-to-end tests now contain a scenario for the fast sync (#667, #695). In total, 15 pull requests were merged in May and two releases were made with the features described above:
The Oasis Explorer team continued implementing the consensus-related features and optimized the website for mobile devices. Support for named accounts was added, including support for searching them by name (#1398, #1423, #1422). Added number of account transactions information (#1433). Governance proposal votes were added to the network proposal details page (#1356). Support for PontusX was added, but is currently hidden in the public UI and accessible only directly via the URL (#1435).
On the mobile front, labels now correctly fill up horizontal space on multiple pages (#1396, #1397). The zoom-out behavior has also been fixed since the consensus layer node is now a valid button (#1413, #1404). The Consensus layer button in the ParaTime-selection dialog now requires double-clicking which is the same as other ParaTimes behavior (#1401). A new 1.11.0 release was made on May 22 and deployed to explorer.oasis.io. 35 pull requests were merged this month in total.
Developer Platform and ParaTime Updates
The Oasis SDK saw a number of interesting updates. The TypeScript Client SDK now uses “@noble/hashes” package for ECC cryptography which is smaller and cleaner compared to the “elliptic” package counterpart (#1372). A thorough review was done beforehand of the modern TypeScript crypto libraries (#1371).
The Oasis Client SDK for Go was bumped to the Oasis Core 24.0 (#1677). The 0.8.3 version was released on May 16.
The Runtime SDK was bumped first to the Oasis Core 23.0.11-rt1 (#1748). Support for internal call data key and epoch was added (#1742). This is an important feature that will improve trust between the client and the Web3 gateway. Support for pre EIP-155 transactions was added (#1792). EIP-155 requires a unique chain ID to be stored inside a transaction to prevent malicious usages on other chains. However, Ethereum endpoints still support pre EIP-155 transactions and unspecified chain IDs may in fact come handy in practice for some dApps. A new 0.8.6 release of the Runtime SDK was made on May 8.
New releases of the Sapphire and Cipher ParaTimes were made on May 8 and 21, respectively based on the new Runtime SDK 0.8.6 described above:
- Cipher 3.0.5-testnet and 3.0.5
- Sapphire 0.7.3-testnet and 0.7.3
The Key manager ParaTime was bumped to use the new Oasis Core 24.0 codebase (#16) and saw the 0.5.0 and 0.5.0-testnet releases on May 14 and 27, respectively.
The Deoxysii.js team merged a huge rewrite that is now both CommonJS and ESM compatible including the tree chaking support (#35). A new 0.0.6 release was made on May 8.
The Oasis Web3 gateway saw a number of important improvements as well. Support for decoding both the legacy and the EIP-2718 transactions was added (#549). Two important gas estimate fixes were merged (#575, #574). The 5.1.0 release of the Web3 gateway was made on 28 May which includes the described improvements.
The sapphire-localnet Docker image now ships the new 0.7.3-testnet version of the Sapphire ParaTime.
The new maintenance release of the Oasis Rosetta gateway 2.7.0 was released on May 27. It contains support for the Oasis Core 24.0.
The following new additions landed on the docs.oasis.io documentation site:
- The Manage tokens chapter and its subchapters were greatly revised and made consistent.
- The Oasis Wallet Web and Browser Extension are now known as the ROSE wallet.
- Developers may be interested in a number of blockchain indexers (also called the explorer “backends”) added for consensus, Sapphire, Emerald, and Cipher ParaTimes and which are accessible via API, depending on the provider, on a public or a private endpoint.
- Running an Archive node chapter was refreshed to include complete configurations for the Cobalt, Damask and Eden networks with the corresponding Oasis Core release and the state snapshot. This enables any user to set up their own Archive node and explore previous blocks.
- Support for highlighting a specific line in the imported snippet code block was added (#815). An example of such usage can be found in the Oasis CLI transaction show command example, if the signature could not be verified.
- Also in the Oasis CLI documentation, a new --format parameter is described which enables a user to export a transaction into a CBOR format which can be signed by offline signers directly without decoding it.
- The Sapphire vs Ethereum section was revamped to include new important differences such as the instant finality and the option to fund a contract without having the receive() method defined.
- A new Sapphire Deployment patterns chapter was added which describes the usage of Universally Upgradable Proxy Standard and other proxies on Sapphire.
- A series of cBridge and other important Deployment addresses were added to the Sapphire Addresses chapter.
The Oasis Playground is richer for 17 demo projects from the Privacy4Web3, ETHDenver 2024 and ETHDam 2024 hackathons!
Core Platform Updates
On May 13, the Oasis Core team released a long-awaited 24.0 version. This is a groundbreaking release bringing unprecedented confidential blockchain technology to production! To name a few, the release brought support for the off-chain runtime logic or simply ROFL, hardened forward secrecy by supporting the proactive secret sharing in the key manager (CHURP), a cache-efficient PathBadger block storage engine, confidential computation by any observer node supporting the TEE and more! While all features are readily available, they will be enabled gradually via the consensus governance proposal in the upcoming months. Read the full change log and check out the previous monthly engineering reports to learn more about the exciting new features!
Apart from the 24.0 release, a new 23.0.11 maintenance release was made on May 6. The existing 23.x codebase was then moved to a stable/23.x branch and the master branch is now the home of 24.x.
The team also continued implementing CHURP and did other improvements:
- A simple consensus layer vault was merged which adds support for multi-signature transactions on the consensus layer (#5662). Previously, the multi-signature transactions were supported only in ParaTimes.
- CHURP now supports the key derivation center that allows shareholders to derive key shares and players to reconstruct the secret key from them (#5698, #5689, #5699). Shamir's secret sharing scheme is currently used for testing.
- Key manager epoch transitions are now more robust to avoid issues where key managers get out of sync and start rejecting otherwise valid requests (#5703). Similarly, one epoch in the future is now allowed during validation of ephemeral key requests to avoid a scenario where a key manager node that is slightly behind would return an error during an epoch transition (#5686).
- The order of fetching the Intel’s Trusted Computing Base (TCB) is now reversed so that early updates are now tried first when updating the TCB info (#5704). If the validation for an early update fails, the mechanism falls back to the standard update.
- Endorsing the TEE capability for a ParaTime feature is now part of the runtime-host protocol (#5676). The ParaTime support was already added back in April (#5632).
- The proveFreshness method return data type was fixed to the correct [32]byte blob in the consensus registry (#5708).
- CometBFT was bumped to 0.37.6 (#5673).
On May 14, a series of Sapphire Testnet Web3 gateway downtimes occurred, 4 hours and 25 minutes in total. This was caused by a rare edge case in quote policy selection that we never encountered before. The key manager runtimes have special version handling with multiple versions being active at the same time to allow for safe upgrades. However, the quote policies were sometimes provided without the corresponding version. This caused the wrong quote policy to be validated, which led to the quotes getting rejected by the key manager clients, including the node used by the Oasis foundation-managed Sapphire Testnet Web3 endpoint.
In contrast to the previous Oasis Core 23.x behavior, in the Oasis Core 24.0 and the Key Manager 0.5.0-testnet deployed on the Testnet earlier this month, the new policies are more strict and always require the latest Trusted Computer Base (TCB) information. The issue was temporarily worked around by always using the most recent TCB information, even if multiple versions of the key managers would run in parallel producing different quotes (#5693, #5694).
In total, 27 pull requests were merged in May!
What’s Next?!
More updates are on the way in June, but that wraps up Oasis engineering news for May. If you’d like to discuss any of the updates mentioned in this report, feel free to connect with the Oasis Foundation team on the official Discord server or on the Oasis Forum. Be sure to check back next month for another detailed report on the status of the Oasis Network.