Oasis April 2024 Engineering Update

Dive into April's updates, improvements, and performance data in this report from the Oasis engineering team!

April was full of routine updates, bug fixes, network improvements, and other new releases from the Oasis engineering team. Some key numbers and explanations that contextualize the productive month that just finished are inside this report. Keep reading for a full rundown of everything that happened at Oasis engineering in April. 

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

Oasis April 2024 Engineering update

On April 12, 2024, 12pm at ETHDam 2024, the Oasis team announced a rebrand of their products line. A new website was launched followed by the Oasis Web and Extension wallets, the Explorer and the documentation websites. We hope you will enjoy the fresh look! Read below to learn more about the exciting new Oasis Network features implemented this month.

Wallet and CLI Updates

The Oasis Wallet Web team focused on two areas this month: the Oasis rebranding and final pushes toward the beta release of the mobile and web extension flavor. In terms of the rebranding, a new color scheme and logo were merged (#1883, #1884, #1893, #1906, #1908). The Oasis Wallet Web has now been officially renamed to the “ROSE wallet” (#1870, #1879). Scrollbars visibility was fixed in the Chrome extension (#1902). The desktop-style expanded sidebar (includes text) on the left is now shown on medium size devices (#1878). The Delete profile and ParaTime transfer dialogs were revamped (#1869, #1872, #1888) and the Select account dialog now has more prominent Manage buttons (#1909). In the Settings dialog, the tab headings are now denser so all of them fit the screen horizontally on a typical phone (#1905). In case of a fatal error, a reload button was added to the modal error dialog report (#1860, #1865). New consensus transaction types were added such as burning the tokens, submitting a cross-chain message and unfreezing the node (#1895). A number of smaller UI glitches such as wrong text overflow, further declutter of the UI, outdated balance when submitting the transaction, fixed Terms and Conditions dialog on Windows, adjusted fee for Cipher deposits and withdrawals and smaller text tweaks were merged (#1864, #1874, #1876, #1866, #1886, #1896, #1892, #1907). In total, 34 pull requests were merged in April.

The team made two ROSE wallet releases — the 1.10.0 release on April 11 and 1.11.0 on April 19. Also, the first public Beta release of the ROSE wallet extension was made on April 20. If you are eager to test it, please manually install it to your browser and provide us your feedback to the #wallets channel on the Oasis Discord server!

The Oasis Wallet Extension team also rebranded the extension before the 2.x version based on the common codebase is mature enough (#335, #339). The wallet is now the ROSE wallet (#332). Fees for Cipher deposits and withdrawals was adjusted (#338). Two releases were made: the rebranded wallet 1.14.0 release on April 10 and the bugfix 1.15.0 release shortly after on April 17 already available on Chrome Store. In total, 8 pull requests were merged.

The Oasis CLI received some improvements to the “wallet remove” command. You can now pass the -y flag to avoid interactive confirmation (#217). Also, you can specify multiple accounts for removal to speed up the deletion, for example, when you test your application with a number of test accounts and you want to remove all of them with a single command (#222). The CLI is richer for 8 pull requests in April, including the dependency bumps.

Network Updates

On April 24, at around 10 UTC, the Sapphire Mainnet chain did not produce any blocks for one epoch (~1 hour). This was due to an unfortunate combination of two bugs that caused the deadlock until the new compute committee was elected in the next epoch. Read the Core platform updates below to learn more. Apart from the incident above, both the Mainnet and the Testnet were running stable and all their ParaTimes.

No network upgrades were proposed in April due to preparations of the Oasis Core 24.0 release which will presumably be launched early May.

Mainnet highlights

On Sapphire Mainnet, the number of daily transactions was in the 27k-35k range. The monthly peak of 35,640 transactions on April 2 was lower than the exceptional peak from March (67,431 transactions on March 18). The daily average for April was 29,187 transactions (43,043 in March).

On Emerald Mainnet, the number of daily transactions greatly fluctuated from the 3k to 6k range with two peaks, one on April 12-13 (43k transactions combined) and the other one on April 18-19 (37k combined). The daily peak of 25,448 transactions was reached on April 12 and was significantly higher from March (10,305 was on March 15). The average was 6,996 daily transactions (also higher from 5,332 in March).

As of April 30, 2024, the figures are slightly higher compared to the last month (figures from March in parenthesis):

  • 120 (120) validator nodes
  • 6 (5) key manager nodes
  • 45 (42) Cipher ParaTime compute nodes
  • 62 (62) Emerald ParaTime compute nodes
  • 42 (42) Sapphire ParaTime compute nodes

No major outages were reported for Oasis foundation-provided services in April. A few-minutes downtimes were encountered by the Oasis Nexus service on April 15 and the Rosetta gateway on April 20 due to the vault upgrade. You can check out the details on the Mainnet status page.

Testnet highlights

The number of Sapphire Testnet daily transactions was in the 11k range until April 12 and then dropped to about 7k. This may be well due to the ETHDam 2024 conference Apr 12-14 and the Oasis-sponsored hackathon in Amsterdam. The average for the month was 8,313 daily transactions and was slightly lower from March (9,206). The peak of 11,444 transactions was on April 4 (12,939 transactions on March 4).

The Emerald Testnet chain was in the 2k range, slightly increasing to 3k at the end of the month. Most of the transactions were generated by the Oasis heartbeat service. The average number of 2,646 transactions this month was slightly higher to the previous month (2,427 in March). The monthly peak of 3,347 transactions was reached at the end of the month on April 30 and was slightly higher compared to the previous month (2,651 transactions on March 15).

As of April 30, 2024, the Testnet figures are comparable to the last month (figures from March in parenthesis):

  • 43 (43) validator nodes
  • 6 (5) key manager nodes
  • 17 (19) Cipher ParaTime compute nodes
  • 30 (30) Emerald ParaTime compute nodes
  • 17 (18) Sapphire ParaTime compute nodes
  • 1 (1) Pontus-X ParaTime compute node

No major outages of Oasis Testnet services were encountered in April. A few minute outage was encountered by the Sapphire Web3 gateway on April 2 and the Rosetta Gateway on 20 due to the vault upgrade. You can check out the details on the Testnet status page.

Oasis Nexus and Explorer

The Oasis Nexus team prepared another pack of improvements this month, mostly related to the consensus layer indexer and fixed some bugs. The roothash messages are now parsed and stored to the database (#599, #616). The debond end time is now also retained for the transactions from the previous Damask and Cobalt upgrades (#669). When Nexus receives the account balance request, an account balance query is dispatched to the Oasis Core node in parallel (#670). If the computed/cached balance stored inside the indexer database then differs from the live value fetched from the Oasis Core node, the node’s is considered. Previously, the Explorer frontend needed to issue a request to the public Oasis GRPC endpoint to fetch the node balance. Now the client code can be simplified to only query Nexus. The ABI analyzer doesn’t crash the indexer anymore, if the contract’s ABI is broken, but the contract somehow managed to get verified (#680). 7 pull requests were merged in total.

The Oasis Explorer team focused mostly on polishing the end user experience this month. The new Privacy policy popup (we use Matomo analytics on the production explorer.oasis.io) is now configurable in case someone else wants to use our explorer or whitelabel it (#1354, #1361, #1362, #1366). The list of transactions now contains the transaction type as well (#1363). This was needed, because the consensus layer uses new transaction types and the existing icons representing those may be ambiguous to the ParaTime transactions. In the transaction events component, the correct Ethereum-compatible addresses are now displayed, if the EVM mode is used and the address has a known EVM counterpart (#1364, #1365). The new Oasis branding was applied to the Explorer as well (#1370, #1387). Empty accounts are now not considered anymore when looking for the address (#1372, #1374). The iconography for transactions was refreshed (#1383). Sometimes, the account balance was non-deterministic and even negative, because the gas payment amounts were fetched separately from the balance (#1384). In the transaction events page, the topics and the emitting contract address are now also shown (#1385). In total, 27 pull requests were merged in April.

On April 11, the new 1.10.0 version was released primarily because of the new Oasis branding launch. You can check out all the latest features above on the development deployment of the Oasis Explorer!

Developer Platform and ParaTime Updates

The Oasis SDK received some important updates. The TypeScript Client SDK, which is used by the wallets and other dApps operating on the consensus layer now supports Oasis Core 23.x calls (#1668) and will land in the 1.1.0 release of the npm package. An important gas calculation fix to support EIP-1559 transactions was merged into the Runtime SDK EVM module (#1674). The fix will be shipped in the next release of the Runtime SDK and then Sapphire/Emerald ParaTimes. Other changes were dependency updates and updates to the internal CI and testing. 28 pull requests were merged in total.

On the Oasis Sapphire front, a new 0.2.8 maintenance release of the @oasisprotocol/sapphire-contracts package was made (#288). It includes a dependency fix to OpenZeppelin contracts package (#285) and the workaround for the OpenZeppelin’s Context in the OPL codebase to reduce the final contract bundle size (#290). Most of the cycles however, were devoted to the upcoming breaking version of the Sapphire TypeScript wrapper, which will split the @oasisprotocol/sapphire-paratime and @oasisprotocol/sapphire-hardhat clients into multiple packages, significantly reduce the bundle size and bring the official support for wagmi v2. Stay tuned!

The Oasis Web3 gateway got support for simulated contract create calls (#546). Those calls are sometimes found in the pre-deployment contract tests. The sapphire-localnet and emerald-localnet Docker images were tested on the Apple’s M chips and received some quality documentation updates on the special –platform flag that needs to be provided along (#557, #558). Other changes were dependency bumps, resulting in 11 merged pull requests merged in April.

The Oasis Ledger Nano app now supports Ledger Stax (#222). You will need to install the unofficial 2.6.0 version to check it out.

The official Oasis documentation received the following updates:

  • The Token Metrics and Distribution chapter was updated to reflect the new staking rewards.
  • Node operators that use AppArmor to harden system security and that want to correctly configure it for the Oasis node can check out the new AppArmor Profiles section.
  • The whole docs.oasis.io website received a rebranded look on April 18.
  • All relevant Run your node chapters received a notice to open 26656 and 9200 TCP and UDP ports in the firewall.

Core Platform Updates

On April 24, at around 9:57 AM UTC, a transition to epoch 31573 occurred, but for approximately one hour, no blocks were proposed on the Sapphire Mainnet chain. This interruption happened because the Sapphire runtime crashed on all compute nodes, causing them to stop scheduling transactions for the next block.

The crash was due to an unfortunate and very rare combination of events. All nodes in the compute committee had changed, and the key manager nodes were unable to update their access lists on time. Consequently, all requests from the new committee were initially rejected for a short period, which eventually crashed the Sapphire runtime on the compute nodes due to a bug in the SGX runtimes. When the initial request to the key managers failed, the retry request should be sent after a while, but the runtime panicked instead because timers, utilized by the tokio-retry package, were not enabled on SGX platforms by default. Finally, when the Sapphire runtime was restarted, no blocks were proposed for the entire epoch, because the block scheduling only happens on errors and not on crashes.

Around 10:57 AM UTC, the epoch ended, and an empty Sapphire block was generated, indicating that an epoch transition had occurred. Additionally, a new compute committee was elected, and the nodes resumed proposing blocks. The chain started operating normally again. The bugs were fixed (#5660) and will be available as part of the 24.0 version and backported to the 23.0.11 Oasis Core release.

The majority of the Oasis Core team focused towards the release of the 24.0 version with a number of polishes as well as some important new features:

  • The new Runtime Offchain Logic (or ROFL 🤣) support was merged into the master branch (#5602, #5627, #5629, #5637). We briefly wrote about the ROFL proposal last month as part of the ADR-24. This novel mechanism enables compute nodes to execute potentially resource-hungry and network-interactive applications, but still trusted and governed by the committee of nodes in a decentralized fashion. In short, ROFL leverages existing decentralized Oasis infrastructure (runtime distribution, remote attestation, execution) to support off-chain tasks. ParaTime bundles can now provide additional components which are executed in the TEE, but can behave non-deterministically (e.g. communicate with the outside world via https or with other hardware components such as the GPU). They can also seamlessly authenticate to the on-chain part and post results via transactions. In practice, ROFLs can be used to implement trusted decentralized oracles, (light client) connectors to other chains like Ethereum and Bitcoin, intent solvers, autonomous AI agents and similar.
  • The new mock SGX builds are available (#5642, #5632, #5636). On many occasions, the Oasis code behaves differently based on whether the SGX is available or not. The new implementation simplifies the codebase in a way that a developer always uses SGX primitives. This will hopefully avoid crashes similar to the one that caused a one-hour downtime of the Sapphire chain this month, improve the overall integration of the Oasis Core and any of its ParaTimes, allow ordinary developers to better test their dApp when inside github actions not supporting SGX for example, and will especially be useful for the upcoming ROFLs.
  • On the CHURP front, the confidential hand-off was implemented (#5617, #5628, #5633, #5640, #5663), the computation of Lagrange coefficients (#5658) was added for later use by the key derivation center, and stake is now required for deploying a new scheme (#5653).
  • The new admission policy was added used by the new observer node role (#5623). This role will allow any ParaTime client node with SGX support to run confidential transactions and view calls on Sapphire.
  • Consensus voting can now also be performed by the token delegators without having a registered entity and not just by the validators (#5644).
  • The governance proposal can now human-readable metadata containing a title and a description of a proposal (#5650).
  • A new global minimum gas price parameter was added (#5657). This parameter is not related to a specific transaction or a ParaTime. For now, it will remain undefined on the Mainnet and the Testnet, but in the future, it may be set.
  • Oasis node upgrades can now be performed without manually stopping the node (#5659).
  • An intermittent bug was fixed in the archive node codebase which occasionally caused the storage worker initialization to fail and as a result causes any subsequent runtime queries to fail (#5622). The bug was discovered by the Oasis Explorer team while reindexing the historical storage state. The new 22.2.13 version as part of the 22.x codebase of the Oasis Core was released on April 30 for those running an archive node.

Apart from the highlights above, a series of smaller bug fixes, testing, cleanups, speed and CI improvements were made in April, resulting in a total of 41 pull requests being merged into the Oasis Core repository!

What’s Next?!

Stay tuned for more updates in May, but that’s all from Oasis engineering for April. 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 progress of the Oasis Network.

How we use cookies?

At Oasis Foundation we believe in your privacy, so you can choose to browse our site without any tracking or by clicking “Accept”, you help us to improve our site and help us grow our ecosystem. View our Privacy Policy for more information.