Oasis December 2023 Engineering Update
Dive into the monthly report from Oasis engineering for December 2023!
December was a strong finish to a landmark year for the engineering teams at Oasis. Throughout the past year, everything from minor application fixes to historic protocol upgrades were pushed live. Of course, some bugs were fixed, unexpected errors were solved and, ultimately, the entire network continued to function smoothly despite lots of improvements across the entire network stack.
There are lots of updates included in this report, such as:
- Wallet and CLI Updates
- Network Updates (Mainnet and Testnet)
- Oasis Nexus and Explorer Updates
- Developer Platform and ParaTime Updates
- Oasis Core Updates
Wallet and CLI Updates
The Oasis Wallet Web team brought another set of improvements in December:
- A new user interface was added for migrating the wallet from the existing wallet extension (#1783, #1790, #1809).
- When creating a new wallet, the mnemonic field is now empty and needs to be explicitly generated by clicking on the “Generate a new mnemonic” button (#1794). Hopefully, this will make it clearer to the newcomers that the mnemonic did not exist before and it needs to be securely stored after generating it.
- The styling of the user’s profile modal was greatly improved and a new “Add accounts” button was added (#1796, #1797, #1798, #1805, #1806, #1810, #1811).
- The transaction gas is now correctly rendered as an integer (#1802).
- A number of fixes to the testing framework also landed (#1786, #1789, #1813, #1814, #1816, #1818).
- German and Spanish translations were enabled (#1817).
Feel free to join the Oasis translation team on Transifex and translate the wallet to your language or improve the existing strings!
In total, 35 pull requests were merged in December.
The Oasis CLI also saw some improvements in December.
Most notably a new oasis account entity metadata-update command was added, which helps node operators to easily update their metadata information (#170). In addition, a number of dependency bumps and documentation changes were made, resulting in 12 pull requests being merged this month.
Network Updates
In December, Mainnet and Testnet were running stable. Emerald, Sapphire and Cipher ParaTimes were also up 100% both on Mainnet and Testnet. Apart from the Emerald Web3 gateway on Testnet, all other Oasis-provided services saw no major outages. (Keep reading this report to learn more).
On December 4, two new releases of ParaTimes were made and proposed on Mainnet the same day: the 0.7.0 release of Sapphire and the 3.0.2 release of Cipher. Read the Developer platform and ParaTime updates section below to learn about the new features.
Mainnet Highlights
Sapphire continues with explosive growth for the third month in a row!
The average of 83,256 daily transactions in December increased roughly two times compared to October (44,908 daily transactions which saw a 4-fold growth from October!). On December 22, the number of daily transactions on Sapphire broke through the 100k mark for the first time! 🥂 The monthly peak of 108,945 transactions was reached on December 27 and was 37% higher from the peak last month (79,466 transactions on November 30).
Emerald had a stable number of around 11k daily transactions with the exception of two spikes on December 23 falling down to 5,800 transactions and December 24 surging over 20,000. The average number of daily transactions in December was 11,590 (8,494 in November). The peak of 20,204 transactions was on December 24 (the last month’s peak was 13,996 on November 15).
Oasis is happy to announce that the number of both the validators and all kinds of compute nodes increased from November! As of December 31, 2023 (block 17292069), the figures are as follows (the figure from the previous month in parenthesis):
- 119 (111) validator nodes
- 6 (5) key manager nodes
- 34 (33) Cipher ParaTime compute nodes
- 54 (46) Emerald ParaTime compute nodes
- 31 (24) Sapphire ParaTime compute nodes
Mainnet services were up 100% apart from a short 4-minute outage of Oasis Safe on December 21.
Testnet Highlights
Oasis saw a decrease of daily transactions on the Sapphire’s Testnet chain through December, beginning with about 8.000 daily transactions and ending with 5,500. This may be due to the holiday season since the developers are finalizing their projects for the year and moving them to Mainnet. The average for the month was 7,260 daily transactions (15,530 in November). The peak of 13,429 transactions was on December 2 (31,578 transactions on November 12).
On Emerald, no major change was encountered from December on Testnet. The chain was mostly dormant (and available for non-confidential dApp developers) where the majority of transactions were generated by the Oasis heartbeat service. The average number of transactions this month was 1,253 (1,207 in November). The December peak of 1,341 transactions on December 22 was slightly higher compared to the previous month (1,295 transactions on November 13).
As of December 31, 2023 (block 19026978), the Testnet figures are comparable to the ones from the last month (the figure from the previous month in parenthesis):
- 44 (46) validator nodes
- 7 (6) key manager nodes
- 20 (20) Cipher ParaTime compute nodes
- 30 (32) Emerald ParaTime compute nodes
- 22 (22) Sapphire ParaTime compute nodes
Oasis Testnet services were mostly operational. The Testnet Nexus indexer and the Testnet Oasis Safe service encountered some few-minute downtimes. The Emerald Web3 gateway on Testnet saw a 14-hour downtime on December 11. No other downtime was encountered.
Oasis Nexus and Explorer Updates
Nexus, the explorer backend saw a number of bug fixes, a new Oasis Core 23.0 related feature and other smaller improvements in December. The team made seven (7) releases in December:
- 0.1.25, released December 8, added support for querying the blocks by their hash, handling special native token events such as for the wROSE token, a new ConsensusParameterChange consensus proposal introduced in Oasis Core 23.0
- 0.1.26, released December 12, will reparse contract-related transactions and extract more detailed information, if/when the contract ABI is uploaded
- 0.2.0, released late December 12, included a number of db schema consolidations which are not backward compatible
- 0.2.1 and 0.2.2, released December 21, were mainly an NFT-related bugfix releases
- 0.2.3, released December 22, fixed an important BigInt serialization bug related to the specific CBOR implementation in go (see the upstream conversation here)
- 0.2.4, released December 23, was a bugfix release fixing the contract creation info during the fast-sync
Overall, 15 pull requests were merged in December.
The Explorer frontend also got some exciting new features and bug fixes.
- All NFTs corresponding to the account are now shown in a gallery (#1043, #1051, #1052, #1069, #1109).
- If the backend indexer is not synced yet, the account balance is now fetched from the Web3 gateway node directly (#1073).
- When clicking on the “Request Test tokens” button, the correct ParaTime is now selected by default on the Testnet Faucet side (#1065, #1079).
- Querying by the block hash is now possible (#1081).
- The Ethereum account format is preferred if such address is passed in the URL (#1039, #1061).
54 pull requests were merged in December. The team also cut a new 1.4.0 release on December 14 and is already deployed on explorer.oasis.io for the general audience!
Developer Platform and ParaTime Updates
The Oasis SDK saw numerous dependency bumps and a release of the 1.0 version of the TypeScript client for Oasis Core (#1587). This is the library which the official Oasis wallets use for submitting both the consensus and ParaTime transactions. 17 pull requests were merged in December.
On December 4, two new ParaTime versions were released which included the new trust root for the Eden upgrade on Mainnet: Sapphire 0.7.0 and Cipher 3.0.2.
Further on the Sapphire front, two new releases of the @oasisprotocol/sapphire-contracts containing Sapphire-specific solidity wrappers were made:
- 0.2.5, released on December 2, brought support for padGas and gasUsed precompiles, SEC P256 R1 curve support and SHA512_256, SHA512 and SHA384 hash support (see the November’s engineering report for details).
- 0.2.6, released on December 18, added subcalls for the new staking and delegation transactions that can be triggered directly from a ParaTime, and updated the error handling mechanism in OPL that is compatible with the Celer IM MessageBus.
Also, a new 1.2.2 version of the @oasisprotocol/sapphire-paratime TypeScript wrapper for Sapphire was released December 1 bringing support for gas estimation and removing support for Truffle.
The Oasis Sapphire team is happy to announce the official Oasis Sapphire bindings for python. The wrapper supports encrypted gas estimates, transactions and contract calls. Keep in mind that a similar package was released by our Ocean Protocol partner a few months ago. The mid-term plan is to transition their service to the Oasis-provided library.
Two minor releases of the Oasis Web3 Gateway were also made:
- 4.0.1, released December 21, brought support for pprof profiling.
- 4.0.2, released December 27, brought speed improvements by pruning the block cache and reducing the number of toHex calls.
The Sapphire Localnet docker images now contain a working Oasis CLI tool and the Sapphire ParaTime version was bumped to the latest 0.7.0 (#488).
The Oasis Ledger nano app saw two bugfix releases:
- 2.5.8, released December 11, reduced the application size and is now installable on the original Nano S.
- 2.5.9, released December 13, was a bugfix release adding the missing manifest file.
Two important documentation updates also landed:
- The Trusted Execution Environment chapter saw a major overhaul reflecting the latest state of the art SGX setup on modern linuxes.
- All chapters which are part of the official Oasis documentation including all the images are now licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). This enables using the learning material from docs.oasis.io on Wikipedia or any other articles, blogs or presentations as long as the “Oasis Protocol Foundation” attribution is preserved. Complementary, all code snippets, which are part of the documentation and all examples, are licensed under Apache 2.0 — you can be rest assured that the code is patent-free from the original authors and you are free to use it in your products.
Core Platform Updates
After the successful Mainnet upgrade to Eden, the Oasis Core team was cleaning up leftovers from the previous 22.x branch, improving the testing framework and other tooling:
- The legacy key manager initialization code was removed now that production key managers support master key rotation (#5205).
- The legacy non-optimized code for fetching the runtime blocks per node state was removed since the more efficient same-block consensus validation is now supported (#5305).
- Oasis-tailored Docker images for Intel’s Application Enclave Services Manager (AESM) were revisited. Now, both the EPID and PCS versions are precompiled and ready to be used for testing and other dockerized environments (#5496, #5497).
- Read and write disk metrics were accidentally flipped and are now correctly reported (#5510).
12 pull requests were merged in December.
What’s Next?!
That’s all for December — and 2023!
A new year is here, and all the engineers at Oasis are already back at work preparing more feature upgrades and network improvements for the coming months. Stay tuned for more updates each month, and chat more with the Oasis team by joining the Oasis Discord or on the Oasis Forum.