July marked a thrilling start to the third quarter of 2023. Oasis Engineering achieved enormous progress on multiple product fronts and traveled to the seminal ETHCC event in Paris for live demonstrations and in-person conversations about some of the latest Oasis technology.
This engineering report contains full updates on the following projects:
- 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 July!
Oasis Engineering in Paris!
The month of July was devoted to the EthCC event 17-20 July in Paris.
The Oasis team prepared an all-day Oasis Rendezvous conference side event on July 19 at the Level Coworking Cafe a few minutes walk from the main conference venue. The rendezvous mostly featured first-hand technical talks by the Oasis engineers and ecosystem partners. It was opened with a technical review of the Sapphire and OPL followed by a number of round tables such as the Ethereum’s account abstraction relation to Oasis, TEEs and ZKPs, avoiding MEV attacks and the confidential DAOs.
Next, a hands-on demo of the confidential voting dApp showing latest Sapphire features such as gasless voting was presented. Afterwards, Oasis kicked off the Privacy4Web3 hackathon and finally, a demo session of the shiny new Oasis Explorer was held with afternoon drinks long into the night.
View the uncut version of the event on the Oasis Youtube channel.
Wallet and CLI Updates
July’s commits to the wallets and CLI consisted of dependency bumps and CI improvements. The Oasis Wallet – Web saw 39 merged pull requests and the Oasis Wallet – Extension two pull requests.
A new 0.4.0 version of Oasis CLI was released on July 17. This is the first release which bundles official MacOS binaries! Mac users are welcome to test it out and provide feedback on the #wallets discord channel. In total, 3 pull requests were merged into the CLI repository.
Network Updates
In July, both Mainnet and Testnet networks were running stable. Emerald, Sapphire and Cipher ParaTimes were also up 100% both on Mainnet and the Testnet. On July 10 the non-breaking Oasis Core release 22.2.9 was mature enough to be proposed on the Mainnet. Another Oasis Core release 22.2.10 was made on July 31 and proposed on the Testnet the same day (see the Core Platform Updates section of this report to learn about the changes).
Mainnet Highlights
The average number of daily transactions on Emerald has seen a steady 7% growth in July (12,692 transactions compared to 11,786 in June). The peak of 14.459 transactions on July 13 was significantly lower compared to the last month’s peak – 20,482 on June 10.
The average number of daily transactions on Sapphire was 22% higher in July compared to the previous month (1,169 transactions versus 955 in June). The number of transactions started to rise notably after July 23, a few days after the EthCC conference and the Oasis Rendezvous event, reaching a peak of 1,301 transactions on July 29 (June’s peak was 1,192 transactions on June 17).
The number of active Oasis Mainnnet nodes is similar to the ones from June. As of July 31, 2023, the figures are as follows:
- 120 validator nodes
- 6 key manager nodes
- 43 Cipher ParaTime compute nodes
- 62 Emerald ParaTime compute nodes
- 32 Sapphire ParaTime compute nodes
On the Mainnet services level, the Emerald Explorer saw an unexpected 8-minute downtime on July 31 due to a glitch in the certificate renewal service. One of the two Oasis-hosted IAS Proxy nodes also saw occasional downtimes on July 29 and 30 because of an incomplete upgrade to 22.2.9. Due to the distributed nature of the service however, users should not have encountered any issues. Other services had no downtimes.
Testnet Highlights
The average number of daily transactions on Emerald was similar to June’s (1,241 transactions compared to 1,263). The peak of 1,337 transactions on July 14 was slightly lower from the previous month’s high of 1,407 transactions on June 10.
The number of daily transactions on Sapphire was slightly higher compared to June (11,180 transactions compared to 10,279). The peak of 11,736 transactions was on July 5 and was comparable to the one in the last month (11,891 transactions on June 14).
Active Oasis Testnet nodes as of July 31, 2023:
- 43 validator nodes
- 5 key manager nodes
- 14 Cipher ParaTime compute nodes
- 27 Emerald ParaTime compute nodes
- 19 Sapphire ParaTime compute nodes
Some of the Oasis Testnet services saw minor outages. On July 4, the Sapphire Web3 gateway service had another 21 minutes of downtime due to permission issues caused by the June 20th upgrade. The incident was quickly resolved, but it required manual intervention. The Testnet Nexus was down for roughly 23 minutes on July 17 due to planned migration. Other Oasis
Testnet services were running with no downtimes in July.
Oasis Nexus and Explorer Updates
Two new releases of the Oasis Nexus, an indexer for the Oasis network, were made this month which brought exciting new features: version 0.1.6 released on July 3 and 0.1.7 released July 17.
- Apart from some minor system and deployment related additions, most of the effort was focused on the ERC-20 and ERC-721 user experience. A new is_likely_native_token_transfer field was added to a transaction which signifies whether the transaction is likely a token transfer transaction – either the Oasis one or the EVM’s one (#469).
- In case of an unexpected Nexus crash, the stack trace is now stored into a database (#471).
- A new stress tester was added simulating Emerald and Sapphire load based on the Locust tool (#473).
- New Prometheus metrics for the queue length of the smart contract code, EVM balance and native token balance analyzer were added (#482).
- Since some fungible or non-fungible tokens don’t include the total supply information in their spec (e.g. NFTrout), support for computing the total supply on the fly by parsing the mint and burn events was implemented (#480, #485, #490).
- A timestamp is now included in each ParaTime event. Also, the token symbol and a number of decimals are added, if available, which should reduce roundtrips in the frontend (#491).
- Whether the token contract is verified along with the Ethereum’s address is now also part of the “list me all EVM tokens” response (#492, #493).
- The remainder of the pull requests were minor bug fixes, dependency bumps and performance improvements.
A total of 21 pull requests were merged in July.
On July 18, the first stable version 1.0.0 of the Oasis Explorer was released and presented publicly a day later at the Oasis Rendezvous event in Paris! The changes this month were mostly focused on polishing the user experience including safety checks and fixing any outstanding bugs.
- The search field has been improved so that the client checks whether a user entered secret material such as their account mnemonics before sending it to the search engine (#656, #671).
- Further mobile-friendly improvements were made on the Graphs showing ParaTime statistics (#644) and revamped Network selector component on the landing page (#667, #716, #759).
- Users are now welcome to verify the contract, if they have the contract source available (#669).
- More token-related fixes were merged such as full ERC-721 support (#679, #681, #687), showing the token type (#685), in the token-related transactions new tickers showing the token name and linking to the token page (#687).
- Finally, the conversion to Fiat value is now more accurate by using the BigNumber primitives as well (#770).
Altogether, 131 pull requests were merged in July.
Developer Platform and ParaTime Updates
The Oasis SDK is richer for two new precompiles the ParaTimes can use:
- SHA512/256 hashing which is a faster (and cheaper) alternative to the SHA256 (#1408)
- alt-bn128 which is primarily used by Ethereum’s Zero-Knowledge proofs (#1416)
Both precompiles will be included in the upcoming Sapphire release planned for August!
In July, the Sapphire development focused on adding developer-centric tools for cryptography and more hands-on examples on how to use smart contracts with confidential state. Most of the work was done and prepared in time for the Oasis Rendezvous event.
Oasis released two @oasisprotocol/sapphire-contracts updates.
- The 0.2.2 version released on July 12 includes helpers for converting a secp256k1 public key to a 20-byte Ethereum address and for converting DER encoded ECDSA signature to the Ethereum’s {r, s, v} format (#145).
- The 0.2.3 version released on July 17 brought support for generating and signing arbitrary Ethereum transactions on-chain following the EIP-155 format (#154). In practice, this is useful, if someone want to use Sapphire as a signer where the keys are stored in a confidential contract state. Some of the helpers currently written in solidity may become a precompile to increase the execution speed and reduce the amount of required gas.
A new version of @oasisprotocol/sapphire-paratime 1.1.0 was released on July 12 which incorporated an annoying bugfix when running dApps against the Localnet sapphire-dev container (#153). The @oasisprotocol/sapphire-hardhat hardhat plugin was also bumped to 2.16.1 to use the new version of @oasisprotocol/sapphire-paratime.
Finally, last month’s report described an on-chain service for signing the transactions and an e2eproxy proof of concept. For the Oasis Rendezvous event, the Oasis team prepared a working demo of the confidential voting dApp. The demo introduced a novel gasless voting mechanism which uses on-chain EIP-155 transaction generation and signing. Check the contract and the client source here. Go ahead – explore, submit a vote, create a fork and report back on the #dev-sapphire channel on Discord!
Core Platform Updates
A new maintenance release 22.2.10 of the Oasis core was released on July 28.
- The release contains a small storage log optimization where the key-value entries with null value are not processed anymore before being stored into the Merkelized Key-Value Store (#5321).
- This release also contains initial changes to the current 22.2.x branch required to be upgradable to the upcoming 23.x upgrade. To enable more thorough upgrade simulations additional query operations for the internal key-value store were added and the key managers which are built with trust root can now use encrypted transactions (#5308).
Apart from two fixes above that were backported, a handful of new exciting additions have landed for the upcoming the 23.x release:
- Key managers now have the ability to rotate the master secret at predetermined intervals. These rotations occur during key manager status updates, which typically happen during epoch transitions. The feature was implemented following the April’s ADR 22 proposal in the light of forward secrecy (#5196, #5307, #5320, #5325).
- The immediate verification of the block state without waiting for the next block which was implemented last month saw further polishes including fixes to end-to-end tests framework to support such scenarios (#5300, #5303, #5304, #5324, #5331).
- The runtime provisioner type (e.g. “sgx” vs “none”) was added to the host status output (#5301, #5302).
- The Oasis fork of CometBFT was bumped to 0.37.2-oasis1 (#5306).
- A crash discovered by the fuzz tester was fixed, if the reward schedule hasn’t completed yet, but the common pool is already empty (#5319).
- Node operators can now monitor new peer-to-peer metrics such as the number of input and output connections, blocked peers, topics and protocols (#5327).
In July, 27 pull requests were merged.
What’s Next?
That’s it for July!
Find monthly engineering updates for Q2 2023 featured at the end of this article. And more exciting progress reports from Oasis Engineering will be shared at the end of August! Needless to say, it’s a busy summer at Oasis.
Until then, chat more with the Oasis team by joining the Oasis Discord or on the Oasis Forum! Also, all builders, creators and hackers are invited to register for the inaugural Oasis Privacy4Web3 Hackathon!