June marked an exciting conclusion to the first half of 2023 for Oasis Engineering. The entire engineering team achieved enormous progress. Updates were pushed throughout the entire Oasis stack, including a record-high number of individual changes to products like the Oasis Explorer!
Keep reading this post for a summary of the following updates:
- Wallet and CLI Updates
- Network Updates (Mainnet and Testnet)
- Oasis Nexus and Explorer Updates
- Developer Platform and ParaTime Updates
- Oasis Core Updates
Let’s dive into Oasis Engineering’s work from June!
Wallet and CLI Updates
In June, the Oasis Wallet – Web mostly saw under-the-hood improvements, but some of them are also user-centric.
- One of such features is the randomized order of validators on the staking page where the user can delegate their belongings to the validator (#1517). Hopefully this will encourage more users to stake their assets to lower-ranked validators in order to improve network decentralization and consequently the security.
- A similar addition was also incorporated into the Oasis Wallet – Extension codebase (#309).
Other fixes to the Web wallet include dependency version bumps and an improvement to the translation flow resulting in 33 pull requests merged in June.
A handful of exciting new features were merged into the official Oasis CLI!
- The runtimes term is now known as paratimes in all the commands and subcommands since the ParaTime term better captures a unique architectural component of the Oasis network that allows efficient parallel execution and also scaling (#86).
- The network show subcommand now also supports investigating arbitrary Oasis nodes besides the registered entities by providing their public key (#89).
- Network validators will be happy to see the new network governance command. Governance proposals include network upgrades and changes to other crucial network parameters. Previously, the oasis-node offered basic governance transactions, but now you can create and submit a new network governance proposal, list all active proposals, cast a vote and finally see the outcome of the proposal by using solely the Oasis CLI (#91, #100).
- Moving towards the 1.0 release, the Oasis team added supported for native MacOS builds running on M1 CPUs (#90).
All the features including the hardware wallet (Ledger) are supported! In total, 14 pull requests were merged into the CLI repository.
In June, both Mainnet and Testnet networks were running stable. Emerald, Sapphire and Cipher ParaTimes were also up 100% both on Mainnet and the Testnet.
On June 29, the non-breaking Oasis Core release 22.2.9 was proposed on Testnet the same day. Read the Core Platform Updates section later in this report to learn about the changes.
The average number of daily transactions on Emerald has seen a 42% decrease in June after a remarkable growth in May (11,786 transactions compared to 16,777 in May). The peak of 20,482 transactions on June 10 was also lower to the last month’s peak – 25,797 on May 24. A notable period of decreased activity was between June 15 to June 24 of only about 5,000 daily transactions. The activity increased on June 25 back to around 12,700 daily transactions.
The average number of daily transactions on Sapphire was 21% lower in June compared to the previous month (955 transactions compared to 1,165 in May). The most notable period is June 18-23 when the heartbeat Oasis services were disabled for maintenance. The peak of 1,192 transactions on June 17 was also slightly lower compared to the previous month – 1,234 transactions on May 4.
The number of active Oasis Mainnnet nodes was significantly higher compared to May. As of June 30, 2023, the figures are as follows:
- 120 validator nodes
- 6 key manager nodes
- 43 Cipher ParaTime compute nodes
- 64 Emerald ParaTime compute nodes
- 32 Sapphire ParaTime compute nodes
On the Mainnet services level, the Oasis Rosetta gateway saw an unexpected less than 2-minute downtime on June 8 and the Emerald’s Explorer a 3-minute downtime on June 12 respectively. Downtimes were related to unexpected networking issues. Other services, namely the Oasis Web Wallet, the GRPC node, the Oasis Web3 gateway for Emerald and Sapphire and the Sapphire Explorer had no downtimes.
The average number of daily transactions on Emerald was similar to May’s figures (1,263 transactions compared to 1,228). The peak of 1,407 transactions on June 10 is encouraging although it was lower from the previous month’s high of 1,995 transactions on May 18. This figure was actually an outlier and other peaks in May were around 1,300 transactions.
The number of daily transactions on Sapphire was comparable to May’s figures (10,279 transactions compared to 11,369), considering the Oasis health check services were down June 16-21. The peak of 11,891 transactions was reached on June 14 and was slightly lower from the previous month (12,592 transactions on May 19).
Active Oasis Testnet nodes as of June 30, 2023:
- 45 validator nodes
- 5 key manager nodes
- 17 Cipher ParaTime compute nodes
- 31 Emerald ParaTime compute nodes
- 21 Sapphire ParaTime compute nodes
Some of the Oasis Testnet services saw minor outages. The Rosetta gateway had a 4-minute outage on June 8 related to the cloud provider’s networking issues. A more serious incident was reported on June 20 by the Oasis Web3 gateway for Sapphire. Almost 2-hour downtime was caused due to a bug in the Oasis Core attestation service. The TLS certificate used by the IAS expired on June 20 and although the new certificate was generated, it wasn’t considered. The bug was fixed in the Oasis Core (#5289) and made publicly available in the 22.2.9 release.
Other Oasis Testnet services were running with no downtimes in June.
Oasis Nexus and Explorer Updates
Nexus connects many worlds on many layers.
- First, it unifies the consensus and the ParaTime layer so that the transactions on Emerald, Sapphire and Cipher as well as on consensus are indexed and can be explored.
- Second, it associates the application-level services like the smart contracts, ERC-20 tokens and ERC-721 NFTs with individual transactions.
- And third, it connects dApp developers, blockchain enthusiasts, wallets, the explorer as well as 3rd party services with the data on the Oasis blockchain. The Latin origin of the term suggests longevity and stability as it will become a backbone of existing and future applications.
Apart from the name change, more hard work was put into the actual Nexus codebase!
- The Sourcify service was integrated into the Nexus analyzer so that it regularly checks for fully verified contracts and stores the relevant metadata locally (#429).
- Unrelated to speaking with the Sourcify server, the smart contract’s bytecode is now obtained from the ParaTime and is made publicly available when the create contract transaction is indexed or on internal contract creation calls (#448, #452, #454).
- Support for indexing ERC-721 NFTs along with the contract interface detection (ERC-165) was added including tracking of the balance changes (#447, #459).
- Also, endpoint for listing all holders of a specific non-native token was added (#455).
- When calling the ParaTime status endpoint, the time of the last confirmed block is now also returned beside the height saving one request by typical health check service (#462).
- The previous engineering report mentioned significant speed improvements to indexing. By doing so, the tests could be expanded by about three times the number of real-life Emerald blocks for robustness (#442).
In total, 30 pull requests were merged including smaller bug fixes and dependency bumps.
On the Oasis Explorer front, Engineers is delighted to announce the first public release, 0.1.0, of the Explorer! It is deployed on explorer.stg.oasis.io and you are encouraged to try it out and get back to us. Currently, the Explorer only offers browsing through Sapphire ParaTime on the Mainnet and Testnet, but other ParaTimes will be coming soon!
- A sticky header was added at the top with important announcements as can be seen on the staging URL above (#466, #486).Last month, a cross-chain search was introduced allowing a user to search for example, a specific account address across all ParaTimes, if they were not sure where the account was used.
- A number of speed optimizations and robustness were added to frontend, such as when the user does not have network access or the API service is down (#449, #476, #478, #579, #585).
- This includes a number of polishes to the Network and the ParaTime selectors which are now mobile-friendly (#468, #482, #500, #582).A new padlock icon was added for indicating whether the broadcast transaction was encrypted or not (#505, #506, #572). Of course, this is only available on confidential ParaTimes such as Sapphire and Cipher.
- Existing Oasis users probably encountered two formats of addresses used in the Oasis ecosystem in the past. The bech32-encoded addresses are “physical” addresses used by the Oasis storage and the hex-encoded Ethereum-style ones are common to EVM dApps. The explorer now shows a toggle switch in the top-right corner to switch between the two (#263).
- A new page showing smart contract details was implemented including showing the contract’s bytecode and verification status by using a 3rd party Sourcify service (#544, #616, #631, #630, #609).
- In addition, a new ERC-20 and ERC-721 token overview page was added (#546, #523).
- By adding the token page, the Oasis Explorer is now EIP-3091 compatible which means it can be used as the official explorer for Oasis chains in Metamask and other user-facing applications (#530, #534).
In total, a record high 154 pull requests were merged into the Oasis Explorer repository in June!
Developer Platform and ParaTime Updates
An important addition was merged into the Oasis Runtime SDK that will enable staking from inside the ParaTime (#1122). This way, users can have their funds inside their EVM dApp-accessible wallets, but will still be able to delegate them to validators of their choice. The change needs to be downstreamed to a specific ParaTime to become effective.
The Sapphire Client TypeScript library now supports caching signed calls as long as the ephemeral key is valid (#100). In practice, this removes annoying Metamask popups for confirming confidential ETH calls each time. Ethers v6 is now supported as well (#140, #142) and support for the latest Hardhat 2.16.1 was merged (#144).
In April, the engineering report included mentions of the new Oasis Privacy Layer (OPL), which was presented at the Consensus 2023 conference. OPL enables dApp developers to take the existing dApp running on a non-Oasis chain and add privacy features by bridging it to the confidential Oasis chain. The Oasis documentation is now richer for a step-by-step Oasis Privacy Layer tutorial! This tutorial will teach you how to build a cross-chain secret ballot dApp which, by default, runs on the public Binance Smart chain (but could also run on any other chain supported by the Celer bridge) and having private data (votes) stored on the Oasis Sapphire. Feel free to try it out and give share feedback on a dedicated #dev-opl channel on the Oasis Discord server or open a pull request directly on GitHub!
The May 2023 report also mentioned the initial public release of the Oasis fork of the Gas Station Network (GSN) which implements ERC-2771. Research was being done this month to implement an alternative relaying service based on ERC-4337 and account abstraction wallets. While Ethereum and other non-confidential chains need to rely on off-chain services for signing the transaction, the goal was to offer a complete on-chain service for relaying the transactions, so that the relaying contract can both pay the gas fee on the user’s behalf and also sign the wrapping transaction with the private key stored in the contract’s confidential state on Sapphire. A proof of concept called e2eproxy can be found here. Interested audience members should report back in the #dev-sapphire channel on Discord.
Core Platform Updates
A new maintenance release 22.2.9 of the Oasis core was released on June 29. It contains a bug fix related to the IAS proxy initialization where oasis-node did not consider an updated version of the TLS certificate (#5289). In addition, dependency libraries of the peer-to-peer stack have been bumped.
Other exciting work was focused on the new 23.x release:
- The 0.37.1 version of the CometBFT was fully integrated (#5280).
- Oasis Core now fully executes consensus layer block proposals and includes the post-execution state root as a special metadata transaction in the block (#5285, #5292, CometBFT bug reported upstream and was fixed #1018).This allows light clients (e.g. the Web3 gateways) to read verified state immediately without waiting for the next block. In practice, once the transaction is submitted, the user will now be able to immediately perform a (confidential) query and get the new result. Currently, the user needs to wait for two block confirmations – the one that the transaction was executed in and the next one to confirm the previous state which can expectedly take up to 12 seconds. Similarly, consensus-level events can now be verified by the light clients as the Merkle root of events is included in the metadata transaction (#5292).
- A new comprehensive suite of end-to-end tests was merged for cross-version network upgrades (#5267).
- Trusted Computing Base information descriptors are now cached to improve robustness in case the Intel PCS servers are unavailable (#5245).
- Finally, Core contributors will be glad to know that Buildkite agents were greatly optimized. By trying out different geographic locations, the time for running the complete e2e tests suite was reduced from 35 minutes to 15 minutes mostly due to artifacts transfers (#5258, #5283). As a bonus, annoying flaky timeouts were fixed!
In total, 21 pull requests were merged.
That’s it for June!
Find previous monthly engineering updates published throughout Q2 2023 featured at the end of this article. More exciting progress will be ready to share the end of July!