Oasis June 2024 Engineering Update
Check out the Oasis engineering team's latest report with updates, improvements, and performance data from June!
The Oasis Engineering team wrapped up the second quarter on a high note! June was packed with activity, including a long list of network updates, new feature releases, and bug fixes. All areas of the Oasis Network saw healthy progress over the last four weeks. Keep reading for a full recap of everything that made June a successful month at Oasis.
The updates included in this report are ordered as follows:
- 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 team merged a handful of fixes this month focusing both on the mobile and desktop front. If a fresh version of the mobile wallet is available, a new “Update now” screen is shown (#1945). The in-wallet purchase of ROSE on mobile/in future extension was restyled so that the Transak service is opened in a separate view instead of being embedded into the existing wallet screen (#1966). If a fatal error occurs, the “reload” button is shown on mobile (#1977). The Android version of the Oasis Mobile Wallet is now prepared for launch and is waiting for the Google Play Store approval, stay tuned! On desktop, the values of the input fields are not changed anymore when scrolling with a mouse wheel, if the cursor is hovering over the input field (#1956). A fix for stale balance and transaction list after submitting a transaction was merged by adding a short delay (#1967). Altogether, 11 pull requests were merged in June!
The Oasis CLI saw a number of dependency bumps in June, but, most importantly, a new 0.9.0 release was made on June 5. The release brought a number of exciting features developed in the last 2.5 months such as Pontus X, multiple ParaTime denominations, improved UI for reporting the network status and other usability improvements. Check out the April and May engineering reports to learn more. Most of all, the 0.9.0 is the first release that officially ships the ARM 64 binary. Now, you can run your favorite Oasis CLI tool on the energy-efficient ARM servers or on credit card-size computers such as the Raspberry Pi!
Network Updates
On June 10, a “consensus240” proposal was made on the Testnet. This proposal activated the novel proactive secret sharing for key managers (CHURP) and support for runtime off-chain components (ROFL). Both features were already included in the Oasis Core 24.0 release, but weren’t activated yet. The proposal passed with owners of the 99.39% of the stake voted YES (the required threshold was 68%). If no major blockers are found, a similar proposal will be made in July on the Mainnet.
Mainnet highlights
The number of daily transactions on Sapphire Mainnet were in the 40k range until June 21, and then gradually declined to 8k. The most probable cause for the downturn is the upgrade of the Ocean’s Predictoor service. Consequently, the monthly average was 30,735 daily transactions and was notably lower compared with the previous month (39,120 transactions). The daily maximum was 41,289 transactions on June 4 (similar to the 43,389 monthly high on 24 May).
The number of daily transactions on Emerald Mainnet was in the 4k range except between June 4 and 14 when the transactions spiked all the way up to the monthly high of 20,039 transactions on June 5, compared with the similar outlier of 29,738 transactions last month on 27 May. The monthly average in June was 6,532 transactions per day and was comparable to the last month (6,841 transactions).
In May, some node operators of the confidential compute nodes didn’t update the ParaTime version in time, so they were evicted from the compute committee. Those nodes were now updated and are part of the committee again! As of June 30, 2024, the numbers of the rest of the Mainnet nodes are comparable to the last month (figures from May in parenthesis).
- 119 (120) validator nodes
- 6 (6) key manager nodes
- 44 (33) Cipher ParaTime compute nodes
- 61 (62) Emerald ParaTime compute nodes
- 42 (32) Sapphire ParaTime compute nodes
No major outages were reported for the Oasis Protocol Foundation-provided Mainnet services in June. The Oasis Rosetta gateway saw a few-minutes downtime on June 11 and 12 due to network issues. You can check out the details on the Mainnet status page.
Testnet highlights
The Sapphire Testnet figures were steady in the 8k range. The monthly average in June was 7,820 daily transactions, comparable to last month (7,583 transactions). The daily maximum was 8,531 on June 27, compared with 9,025 the previous month on May 1.
The number of daily transactions on Emerald Testnet were in the 3k range, mostly due to the internal health checks. The monthly average was 3,276 (3,292 in May). The daily maximum was 3,416 transactions on June 11 (3,381 on May 13).
In June, the Pontus X team spun up multiple nodes powering the chain with more to join in the near future. As of June 30, 2024, the Testnet figures were as follows(figures from May in parenthesis):
- 45 (43) validator nodes
- 9 (6) key manager nodes
- 18 (18) Cipher ParaTime compute nodes
- 31 (29) Emerald ParaTime compute nodes
- 17 (21) Sapphire ParaTime compute nodes
- 6 (1) Pontus-X ParaTime compute node
No major outages were reported for the Testnet services in June. The Oasis Rosetta gateway saw a few-minutes downtime on June 11 due to network issues. You can check out the details on the Testnet status page.
Oasis Nexus and Explorer
The Oasis Nexus team merged a number of bug fixes this month. The Nexus backend is now based on the latest Oasis Core 24.0 release (#716). The validator’s Metadata fields (e.g. the website link, email, twitter handle, logo) have been renamed so that they match the upstream Metadata registry for simpler manipulation (#707, #714). A series of bug fixes related to the Pontus X chain were merged (#701). Consensus proposals for network upgrades contain a set of changed parameters, which are stored in the CBOR format on-chain. However, frontends like the web browser don’t support that format natively, so the changed parameters are now encoded in JSON for more simpler processing on the client side (#710). The cache usage when reindexing the chain was improved (#715). The transaction type is now also indexed for faster filtering of certain transactions (#708). A fix for removing stale token delegations was merged (#711, #713). Altogether, 11 pull requests were merged in June.
The Oasis Explorer frontend team was also busy this month. The list of consensus transactions now contain the new “to” and “value” columns (#1462). The Current Epoch card was implemented (#1451). The Pontus X chain is now visible in the Testnet chain selection dropdown (#1445). No “Nan%” value is shown in the charts anymore when there is no data available (#1443). In total, 19 pull requests were merged in June. You can always check out the development version of the Oasis Explorer on explorer.dev.oasis.io!
We released abi-playground.oasis.io (a fork of abi.ninja). When we migrated from the previous Blockscout-based explorers, we lost an important feature: “Write Contract.” It allows users to interact with a verified contract directly, even if its accompanying dApp is missing.
Developer Platform and ParaTime Updates
The Oasis SDK team merged an important convenience fix to the TypeScript Client SDK this month (#1836). A number of crypto-related functions were declared as async, although their behavior was entirely deterministic. This prevented calling such functions in the constructor, which, by design, cannot be async. These functions were rewritten to ordinary functions and the following code is now possible:
export class OasisSigner {
public readonly signer: oasis.signature.Signer;
public readonly address: Uint8Array;
public readonly addressBech32: string;
constructor(public readonly client: OasisClient, public readonly secret: Uint8Array) {
this.signer = oasis.signature.NaclSigner.fromSecret(secret, 'this key is not important');
this.address = oasis.staking.addressFromPublicKey(this.signer.public())
this.addressBech32 = oasis.staking.addressToBech32(this.address);
}
...
}
The Oasis Docs are now two new documents richer:
- The Deployment patterns chapter, which describes best practices for upgradable contracts on Oasis Sapphire. Since the eth_getStorageAt() call is not possible on Sapphire, some workarounds need to be performed.
- The Enclave panicked troubleshooting section was added for those who run the ParaTime compute node inside the TEE.
The Oasis Playground app now adds the current project’s ID to the URL (#50). This feature comes handy when you want to share a URL to a specific project on the Oasis Playground. Also, a new Confidential Quiz project was added, which is a simple quiz dApp that runs completely on-chain (#65). This includes storing all the questions, expected answers and even supports claiming the reward tokens in a gasless fashion!
Core Platform Updates
The Oasis Core team mostly focused on the Runtime Offchain Logic (ROFL) components and other TEE-related tasks this month:
- ROFLs can now live as detached components (#5707). Previously each bundle that contained one or more ROFL components also needed to contain the exact version of the RONL component it was attaching to. This was somewhat awkward to use so this adds support for detached ROFL components where the bundle only contains the ROFL and oasis-node then automatically gets the appropriate RONL component from another bundle.
- The attestation-related types were extended (#5728). Since verified attestations generated from TEE capabilities can include additional metadata (e.g. the enclave's view of consensus layer height at time of attestation), this finally allows such data to be used by callers.
- Observer node storage role fix (#5725). Since the storage node is always coupled with another role, make sure to not add any particular role as otherwise this could cause observer nodes to also register as compute nodes and then misbehave.
- The CometBFT base was bumped to 0.37.7 (#5730).
The team also released a new 24.1 Oasis Core release on June 28 which incorporated all the above features and CHURP-related improvements from May (read the full change log here).
In total, 12 pull requests were merged to the Oasis Core repository in June.
What’s Next?!
That’s a wrap on Oasis Engineering news for June, but more updates are coming next month as Oasis starts a new quarter. Readers are invited to discuss any of the updates mentioned in this report with the Oasis Foundation team. Connect with Oasis in the official Discord server or on the Oasis Forum. Don’t forget to check back next month for another in-depth report on Oasis engineering’s progress.