Two months into the new year, and Oasis Engineering has not skipped a beat. February saw enormous progress on multiple fronts of the Oasis stack. Amid the progress, Sapphire testnet saw a record high transaction count, and no network downtime or other incidents were reported.
The February monthly engineering brief includes:
- Wallet and CLI Updates
- Network Updates (Mainnet and Testnet)
- Indexer and Explorer Updates
- Developer Platform and ParaTime Updates
- Oasis Core Updates
Keep reading for a deep dive into Oasis Engineering’s work from February!
Wallet and CLI Updates
In February, the Oasis Wallet - Web saw a number of maintenance dependency bumps.
Oasis engineering is now in the middle of testing different browser’s local storage for wallet-sensitive data. Thus, no new releases will be made until the testing is complete. In total, 31 pull requests were merged.
Oasis CLI now supports showing and submitting offline-generated transactions stored in a file (e.g. generated by oasis CLI or oasis-node commands). The new commands are “tx show” and “tx submit” (#25, #27). Integration with Ledger for signing ParaTimes is in its final stage and is planned to be merged in March. In total, 17 pull requests were merged into the CLI repository.
Emerald, Sapphire and Cipher ParaTimes were all stable on both Mainnet and Testnet in February. No downtimes or incidents have been reported.
On February 7, the bugfix Oasis Core 22.2.6 release was proposed for the Testnet and a week later, on February 13, for the Mainnet.
The bugfix release of Oasis Core coincided with the upgrade of Sapphire to 0.4.0-testnet on Testnet and 0.4.0 on Mainnet respectively a week later.
Finally, on February 27, Emerald 10.0.0 was proposed for the Mainnet.
To learn more about Oasis Core fixes and the new ParaTime features, read the sections below.
The average number of daily transactions on Emerald saw a slight decrease in February (~14,300 transactions compared to 15,300 in January). The peak of 25,358 transactions on February 8 was higher from the previous month though – 21,442 on January 14.
The average number of daily transactions on Sapphire has seen a steady increase in February (1,157 transactions compared to 1,125 in January). The peak of 1,174 transactions on February 16 was also higher from the previous month – 1,160 transactions on January 18.
Active Oasis Mainnet nodes as of February 28, 2023:
- 120 validator nodes
- 6 key manager nodes
- 32 Cipher ParaTime compute nodes
- 52 Emerald ParaTime compute nodes
- 24 Sapphire ParaTime compute nodes
Two events marked the statistics for February Testnet. Oasis has reduced the number of “healthcheck” transactions on Emerald and Sapphire on February 16 and increased it back on February 28. So, there is a notable fluctuation of the daily transactions. Additionally, Oasis announced the Privacy4Web3 hackathon and later held a first developer workshop on Oasis Privacy Layer at EthDenver, which also caused the increase in the number of transactions.
On Emerald, the average of daily transactions was around 3,000 until February 16. Afterwards, it dropped to around 1,200 daily transactions. The daily average in whole February was lower than in January (2,271 transactions compared to 2,953 in January). The peak of 3,156 transactions on February 5 was comparable to the previous month – 3,282 on January 16.
The number of daily transactions on Sapphire was similar to Emerald numbers, and transaction levels dropped after February 16. The daily average in February was lower than in January (2,341 transactions compared to 2,880). At the end of the month, the number of daily transactions increased due to the new Sapphire health checks and the ETH Denver conference. The peak of 3,672 transactions on February 28 was record high for Sapphire on Testnet. Last month, the peak was reached at 3,069 transactions on January 11.
Active Oasis Testnet nodes as of February 28, 2023:
- 47 validator nodes
- 5 key manager nodes
- 17 Cipher ParaTime compute nodes
- 34 Emerald ParaTime compute nodes
- 20 Sapphire ParaTime compute nodes
Indexer and Explorer Updates
The Oasis Indexer team was working hard to bring exciting new features this month.
- In January, a generic database table for any ParaTime transaction was introduced with ParaTime-specific analyzers feeding the table. This month, some design improvements were proposed including the new indexes (#300, #306, #320, #333).
- A notable 70% speed bump was achieved in the Emerald token analyzer (#123).
- Grafana metrics were updated to reflect more realistic ParaTime-specific events and a new latency metric for the oasis-node and the analyzer was introduced (#321).
- The Indexer API is now richer for a new address-related search, which is something users would commonly in block explorer interfaces (#314). This enables a straight-forward “global” search across all transactions, addresses (native and Eth-compatible) and ParaTimes.
- Also, the transaction hash is now considered both in the Oasis and Eth namespaces (#315).
In total, 27 pull requests were merged.
The Oasis Explorer team has also progressed at a rapid pace this month.
- The Oasis Explorer now shows the number of active and inactive validator nodes (#113).
- The account view now supports showing all native, ERC20 and ERC721 token balances (#104).
- A number of search improvements were made including added support for global search (#140, #126, #156).
- Proper error handling and styling was implemented for network errors, invalid or non-existent transaction hash, address, page numbers and any other errors in the future (#118, #121, #122, #123).
- A mobile version saw a major rehaul of the landing page, the search bar and “the map” of ParaTimes (#92, #116, #144).
Altogether, 48 pull requests were merged.
Developer Platform and ParaTime Updates
Oasis Emerald version 10.0.0 was released which is the Mainnet release of the Testnet version from the beginning of January. In addition to the Mainnet’s .orc bundle, users will notice a new Localnet version of the ParaTime (#27). The Localnet bundle uses a separate Chain ID 0xa514, which is handy for dApp developers so they can have all the networks – the Localnet, the Testnet, and the Mainnet – configured at the same time and easily switch between them when deploying contracts. The emerald-dev Docker image was also updated with the Localnet flavor.
Oasis Sapphire 0.4.0-testnet was released this month, which brought support for standard EVM transactions (#1256). This fills the usability gap when a dApp is confined using standard Ethereum libraries, but developers would still prefer confidential smart contract execution on the nodes.
CAUTION: Since no end-to-end encryption is performed this way, users may reveal confidential data inside the calldata body or contract call response! Oasis Sapphire 0.4.0 was released a week later for general availability of this feature on the Mainnet.
Thanks to the standard EVM transaction format, Oasis Sapphire is now fully supported by Sourcify. Previously, only mutable contracts could be verified based on the deployed contract bytecode and metadata, because Sourcify was not able to decode the Oasis-formatted eth.create transaction. Developers who would like to have their immutable smart contract verified should now deploy the contract to Sapphire using standard Ethereum tooling. Besides checking the deployed bytecode and metadata, Sourcify will also find the original deployment transaction, decode the contract’s constructor arguments and complete the verification.
The new Localnet version of Sapphire uses a new Chain ID 0x5afd (#102). Analogous to Emerald, a brand new sapphire-dev Docker image allows developers to run a confidential Localnet Oasis stack. This stack includes the stable version of Oasis Core along with the key manager binary, the latest Oasis Sapphire, and the Oasis Web3 gateway. Without requiring Intel SGX, the image is handy for running confidential smart contract tests on a local computer without exposing them to the Testnet, or as part of a project’s continuous integration service. Oasis engineering encourages developers to test out the new image and report any issues back to our team!
A new Oasis Privacy Layer SDK was introduced in February (#117). The SDK makes it incredibly easy to add privacy layer functionalities to your L1 dapp. The SDK builds in automatic support for ERC-2771, gas relaying, and message passing bridges. A proof-of-concept end-to-end encrypted gas relayer network (GSN) was demonstrated, which enables third parties to pay for the transaction gas fee (#1).
The first cross-chain message passing bridge connecting Oasis Sapphire with other EVM networks has been established. It is powered by cBridge and connects Sapphire with Ethereum, BNB Chain, Polygon, Avalanche, and Optimism, among others, as well as several testnets. The bridge can be used through the OPL SDK. Oasis is currently working on addressing an important developer and user experience issue: how to estimate optimal gas limits for confidential transactions on Sapphire. Feel free to join the discussion on #sapphire-paratime Discord channel if this topic is of interest!
Finally, the official canonical ERC-20 contract for wrapped ROSE was deployed on Sapphire. DApp developers can find them at 0x8Bc2B030b299964eEfb5e1e0b36991352E56D2D3 and 0xB759a0fbc1dA517aF257D5Cf039aB4D86dFB3b94 addresses on Mainnet and Testnet, respectively. Note that these ERC-20 contracts are non-confidential! For example when the token transfer is performed, the transfer event is emitted containing the recipient and the amount.
Oasis Core Updates
A bugfix release of Oasis Core 22.2.6 this month fixed a potential issue where some ParaTime rounds could fail due to valid block proposals being dropped incorrectly (#5161). Previously, valid proposals could be dropped instead of being forwarded via the P2P gossip when the local node's consensus view was slightly behind even though the proposal was valid. With smaller committees and certain topologies this could result in some nodes not getting the proposals.
New notable features implemented on the Oasis Core master branch that contains the changes for the upcoming 23.x release were:
- Configuration changes (#5070). The node now supports a configuration file that holds all the settings that were previously available via command-line options. The command-line options themselves have been removed in favor of the config file, which also supports environment variable substitution using the envsubst package.
- Currently, TEE ParaTime upgrades require one epoch of downtime. This is because the node doesn't support running another ParaTime before activation, but advertising a new TEE ParaTime requires a remote attestation proof that it is running correctly. The improved TEE upgrade code makes it possible for a node to run an upcoming (e.g. not yet activated) version of the runtime before activation, register it in parallel with the old one and then when the switch happens just terminate the old one so that the upgrade can be performed with zero downtime (#5188).
- An important series of security improvements related to forward secrecy to ephemeral keys as proposed in ADR-21 were merged. As a result, if Intel SGX is breached, you cannot go back to previous epochs anymore and compromise ephemeral secrets (#5158, #5159, #5198, #5199).
- The gas costs for key manager transactions were moved from the registry to the key manager where they should have been in the first place (#5166).
- Key manager init requests are now verifiable against the consensus layer state (#5204).
Check out all the 41 pull requests merged in January, to see a complete list of changes.
That’s all for February! Now onward to the rest of March. In the meantime, chat more with the Oasis team by joining us on Discord or on the Oasis Forum! Also, learn more about the Oasis Privacy Layer here and register for the Oasis Privacy4Web3 Hackathon.