December became a landmark month for the Oasis Network after our engineering team ended 2022 with dozens of updates implemented across an array of ongoing projects.
Last month, the long-awaited, industry-first confidential EVM ParaTime — Sapphire — deployed on Mainnet; confidential random number generation was added to the Oasis SDK; developing support for signing ParaTime transactions with Ledger devices continued; and lots of maintenance and debugging happened along the way.
Emerald’s average daily transactions also saw a 30% month-over-month increase!
For a complete breakdown of Oasis Engineering’s progress in December (and lots of supplemental data), keep reading.
A maintenance release 1.4.1 of the Oasis Wallet — Web was made in the beginning of the month, which fixed potential exposure of mnemonic phrases to third-party sites for spell checking on some browsers. A new version is already deployed at wallet.oasisprotocol.org.
In the rest of December, most PRs were devoted to cleaning up the codebase, upgrading all the dependencies and testing if tests still test what they are supposed to test 🙂. For convenience, the wallet version is now shown in the footer apart from the commit hash (#1192). Thirty-five (35) pull requests were merged in December.
In parallel, the spell check fix for Oasis Wallet — Browser Extension was also implemented. It will be incorporated inside the 1.8.2 release, and the update will be available on the Chrome Web Store as usual.
On the Ledger front, the implementation of ADR 14 has begun, which will bring support for signing ParaTime transactions. This includes both the token-related operations (i.e., deposits, withdrawals, and transfers inside the ParaTime) and Oasis SDK-specific transactions used in Cipher.
Oasis CLI was migrated from the Oasis SDK to its own repository. This will enable easier integration of external services not related to the SDK into the CLI (e.g., block explorer) and allow more regular CLI releases.
On December 16, the long-awaited confidential Sapphire ParaTime was deployed on Mainnet! For the Oasis Network, this deployment marks one of the most important milestones in the years-long journey.
Other services like the block explorer and the public Web3 endpoint will be announced in the upcoming weeks. If you are eager to use Sapphire on Mainnet before that, you can set those up locally by following our ParaTime client node and the Web3 gateway documentation! To deposit funds to the new ParaTime, configure and use Oasis CLI with your local endpoint.
- Sapphire ParaTime 0.3.0 was deployed on Mainnet on December 16.
- Average daily transactions on Emerald saw a greater than 30% boost in December (12,000 transactions compared to 9,000 in November). Although the peak of 15,929 transactions on December 16 was lower from the previous month (22,594 on November 8), the peak in November can be explained by the 3-month token redistribution.
Active nodes as of December 31:
- 120 validator nodes
- 6 key manager nodes
- 17 Cipher ParaTime compute nodes
- 50 Emerald ParaTime compute nodes
- 6 Sapphire ParaTime compute nodes
- A non-breaking upgrade to the new minor release of Sapphire ParaTime 0.3.0-testnet was performed on Testnet on December 13.
- As Sapphire is entering a production environment, a number of dApps were being ported over and tested. On December 23, Testnet had a peak of 2,886 daily transactions (up tremendously from 165 transactions in November). Similarly, the average number of transactions increased to 1,067 (up from 66 in November).
Active nodes as of December 31:
- 46 validator nodes
- 4 key manager nodes
- 13 Cipher ParaTime compute nodes
- 33 Emerald ParaTime compute nodes
- 5 Sapphire ParaTime compute nodes
DEVELOPER PLATFORM AND PARATIME UPDATES
In December, the confidential random number generator (#1037, #1176) was added to Oasis SDK. This feature has been carefully crafted for six months and is crucial for future cryptographic operations (e.g., key generation and signing in smart contracts). Security was improved by making transaction encryption keys ephemeral (#1187). By default the new ParaTime keypair for transactions is derived each epoch (=1 hour). Other changes were mostly deprecated code removal, cleanups and documentation improvements. In total, eight (8) pull requests have been merged into the Oasis SDK.
The new random number generator was also integrated into the Sapphire ParaTime (#94, #97). The randomBytes() helper in Sapphire.sol precompile will return an array of random bytes of length of your choice. The seed is generated inside a trusted execution environment, but a developer can pass an optional personalization string to improve entropy. Go developers can now use the official Go bindings for submitting confidential transactions to Sapphire (#84, #87). Check out the wordleish demo to learn more and try it out! All the changes have been included in the new 0.3.0 release which is already live on the Testnet and Mainnet. A total of 7 pull requests have merged into the Sapphire ParaTime in December.
Emerald Web3 gateway has been officially renamed to the Oasis Web3 gateway because it can be used as a Web3 endpoint for any supported ParaTime. A new 3.2.0 release was made which added support for the Sapphire ParaTime 0.3.0, which was also deployed on the Mainnet. In December, we merged six (6) pull requests.
- Support for parsing ERC20 transactions was added. The token name and transfers are now indexed.
- The transaction processing has been pipelined. Each transaction analyzer (i.e., Consensus, Emerald, Sapphire, Cipher) now has at least three steps (pull data, analyze, and write to database), which simplifies testing and enables parallelization.
- OpenAPI specs have seen a great overhaul and fixed inconsistencies with the database and the codebase that were accumulated for the past six months.
Chain IDs 23295 (0x5aff) and 23294 (0x5afe) are now officially registered as Oasis Sapphire Testnet and Mainnet chains respectively.
Users that want to verify the smart contract deployed on the Oasis Emerald and Sapphire ParaTimes will be happy to know that support for Emerald Testnet and Mainnet chains has been merged to the Sourcify codebase (#879, #880) and will soon be available on sourcify.dev. The Sapphire Testnet chain has also been added (#883) while the Mainnet chain (#884) will be merged once we deploy the Sapphire Mainnet explorer.
Documentation is richer for a diagram describing how the trusted execution environment (TEE) is used to assure end-to-end confidentiality behind the scenes in the Oasis Network. Hopefully, this will help newcomers and dApp developers better understand our architecture. Other changes were mostly related to the release of the Sapphire ParaTime on the Mainnet. A total of 11 pull requests have been merged.
CORE PLATFORM UPDATES
New features were merged into the master branch that will land in 23.0 release. The most notable for node operators will probably be a new P2P light block protocol that will speed up initial Oasis node bootstrapping (#5085, #5100). The new code was written from scratch and does not rely on the (broken) Tendermint light block syncing anymore.
Another performance improvement was done by enabling the key manager to respond to insecure RPC requests (#5057) such as the ParaTime’s public key used to encrypt confidential transactions.
A series of bug fixes and convenience improvements were merged regarding the key manager policy updates, SGX helpers, genesis document and confidential transactions checks. Altogether, 19 pull requests were merged in December.