Oasis August 2024 Engineering Update
Read the latest report from the Oasis engineering team with all the latest releases and network updates from August 2024!
August marked another productive month for the Oasis Foundation’s engineering team. Inside this progress report is a deep dive into the key project updates, technical fixes, and network upgrades that pushed the network forward over the past month. Each of the following sections provide a full recap of the following engineering updates:
- 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 is proud to announce the Oasis Wallet 2.0. This is the first official release based on the unified Web wallet, the Browser extension and the Mobile wallet codebase simply named “wallet” (#2042). Keep in mind that while the web wallet is readily accessible at wallet.oasis.io, the Browser extension and the Mobile wallet are still pending the Chrome and Play store approvals.
Let’s look at some other wallet changes. The menu color scheme has been revisited slightly to remove the aggressive cyan blue (#2024, #2028). Generation of the wallet screenshots for the Chrome store has now been automated (#2044, #2049). The scripts in the github actions have been sanitized to remove potential workflow injections (#2033). A series of UI-related bug fixes have also been merged. Delegations to non-validators does not break the table anymore (#2031). Clicking on the delegator in the table now always expands their information (#2040). The Transak iframe is not cleared each time the pending transaction is refreshed (#2041). The validator address does not extend the whole table anymore when expanding their information (#2035). 19 wallet-related pull requests were merged in August.
The Oasis CLI team also prepared a new 0.10.0 release on August 23. The main highlight of the release is support for managing ROFLs, the unique Oasis feature that enables you running trusted offchain apps. The new rofl command allows you to compile your ROFL app binary, register the ROFL app to obtain its unique on-chain ID, manage your ROFL security policy (e.g. which nodes are allowed to run ROFL, who pays for the fees, who can update the binary and similar) and show you information about registered ROFLs (#265).
Network Updates
On August 8, after more than a month of testing, the Oasis Core 24.1 was proposed on the Mainnet.
On Testnet, a series of proposals were made:
- August 5: Sapphire 0.8.1-testnet and Cipher 3.1.1-testnet
- August 27: Oasis Core 24.2
- August 30: Sapphire 0.8.2-testnet and Cipher 3.1.2-testnet. These releases are not compatible with the legacy EPID attestations anymore, but require DCAP! Read the migration tutorial to learn more!
Mainnet highlights
The number of daily transactions on Sapphire Mainnet was in the 35k range and was significantly higher compared to July. On average, 35,494 daily transactions were submitted which is 27% higher compared to the last month (27,959 transactions). The daily maximum was 38,453 transactions on August 2, compared with 40,420 the last month on July 30.
The number of daily transactions on Emerald Mainnet was in the 4k-5k range with a single spike on August 5 ranging to a monthly high of 10,257 daily transactions, compared with 8,787 the last month on July 5. The average was 4,681 transactions per day and was almost equivalent to the last number figure (4,683 transactions).
As of August 31, 2024, the number of the Mainnet nodes are as follows (July figures in parenthesis):
- 118 (113) validator nodes
- 5 (6) key manager nodes
- 44 (44) Cipher ParaTime compute nodes
- 60 (61) Emerald ParaTime compute nodes
- 40 (42) Sapphire ParaTime compute nodes
Two major outages were reported for the Oasis-provided Mainnet services in August. The Oasis Nexus indexer was down for 1h 44m on August 16 due to an unexpected SQL proxy certificate issue. Also the Oasis Rosetta gateway endpoint was down for 1h 38m on August 20 due to an Nginx exporter issue on the load balancer. No other major downtimes occurred. You can check out the details on the Mainnet status page.
Testnet highlights
August was an interesting month for the Sapphire Testnet figures. From the beginning of the month until August 15, the number of daily transactions was steady around 8k. Then, from August 15 to August 21, the figure was around 16k and then falling back to the 12k range until the end of the month. The average in August was 11,107 transactions and was almost significantly higher compared to the last month (7,626 transactions). The daily maximum was 16,592 transactions on 18 August (compared to 9,371 the last month on 29 July).
Emerald Testnet was mostly dormant outside of the healthcheck effects. The monthly average was 3,336 transactions (3,357 transactions in July). The daily maximum was 3,637 on 5 August (compared to 4,902 the last month on 28 July).
As of August 31, 2024, the Testnet figures were as follows (July figures in parenthesis):
- 46 (46) validator nodes
- 7 (7) key manager nodes
- 18 (18) Cipher ParaTime compute nodes
- 31 (32) Emerald ParaTime compute nodes
- 17 (17) Sapphire ParaTime compute nodes
- 6 (5) Pontus-X ParaTime compute node
There were some outages monitored for the Oasis-provided Testnet services in August. The public Sapphire Web3 Testnett endpoint was down for 53 minutes on August 7. The system went out of disk space due to the extensive logging enabled and the misconfiguration of the alarms.
On August 14, the Oasis Nexus was upgraded and experienced a 1h 7m outage. Then on August 16, the SQL proxy issue which we also encountered on the Mainnet caused the service to halt for 1h 8m. The Testnet Rosetta gateway encountered downtime on August 20 in parallel with its Mainnet counterpart for 1h 44m. No other longer downtimes occurred. You can check out the details on the Testnet status page.
Oasis Nexus and Explorer
The Oasis Nexus team in charge of the indexer service that runs behind the Oasis Explorer merged a handful of exciting new features this hot August. ERC-20 token prices are now obtained from a specific Uniswap v2-compatible interface and indexed (#691). The validator’s staking history is now indexed (#732). Support for indexing ROFL-related transactions was added (#735, #739). Data fetching for the block was parallelized (#736). The average waiting time per block was reduced from 2.2 to 1.2 seconds. Aggregated statistics and cumulative voting power of the validators were added to the API (#738, #742). The team also made two releases this month: v0.3.2 released on August 12 and v0.3.3 released on August 28. In total, 11 pull requests were merged.
The Oasis Explorer team continued their work focusing both on the consensus and Sapphire layer frontend. New routes and layout for consensus events were added as well as the new validators list API changes (#1490, #1518, #1503). A new “Total escrow to Balance distribution” card was added for consensus (#1517). The network proposal types are now correctly shown similar to how Oasis Scan does it (#1460). Developers will be happy to know that they can now access the smart contract ABI playground link directly from the explorer (#1492).
Instead of the hardcoded values, a new configuration option was added for setting up a ParaTime including a custom name, path, theme and the opening graph on the landing page (#1441). Cleaning up and refactoring of the ParaTime cards was done (#1496). If there is a 5xx error reported by the Nexus indexer, then correctly report it instead of ignoring it (#1493, #1513). On August 29 the team also released v1.12.0 which is already live on explorer.oasis.io! In total, 30 pull requests were merged in August.
Developer Platform and ParaTime Updates
The Oasis Sdk team focused on the tooling and features around ROFL:
- A transaction submission manager was added to avoid nonce conflicts while multiple parts of the application submit transactions using a conflicting signer set including the timeout to ensure transaction submission doesn’t hang (#1928).
- The Oasis-maintained fork of ureq was replaced using mbedtls directly (#1946).
- A new rofl.AuthorizedOrigin query was added which makes it possible to query the endorsing node and entity of the origin ROFL app instance (#1954). Smart contracts could seamlessly rely on this as a form of authentication similar to msg.sender used in the Ethereum ecosystem. When registering your ROFL for the first time, a unique app ID is generated. Even if you upgrade the ROFL binary, the app ID will remain the same.
- App IDs can now be generated deterministically similar to how the smart contract addresses in Ethereum are determined (#1958). This will simplify tests for your ROFL in the CI.
- ROFL fee policy can now also be provided in YAML format (#1934).
- When the ROFL policy specifies an entity can endorse enclaves, allow any nodes registered under that entity, even if they are not registered for the current runtime (#1953).
- A new rofl-utils rust crate was created with a built-in HTTPS client (#1941).
A series of releases were made as well this month:
- ROFL utils v0.1.0 released on August 22 and v0.1.1 on August 26.
- Runtime SDK v0.9.5 released on August 19 and v0.9.6 on August 29.
12 pull requests were merged in August to the Oasis SDK repository.
The Sapphire Paratime team also prepared an exciting pack of new features this month:
- The Subcall.sol is richer for two new methods: coreCallDataPublicKey and coreCurrentEpoch (#370). This way your dApp can use standard EVM calls instead of a custom oasis_callDataPublicKey. Also it allows you to verify the signature of the public key to avoid a potentially adversary Web3 endpoint.
- A new subcall rofl.IsAuthorizedOrigin was added to Solidity to seamlessly authenticate the transaction signed by ROFL app (#348).
- The long-awaited 2.x release of the TypeScript Client SDK was made public (#343, #363, #365, #369)! It brings support for the new tooling commonly used in the Ethereum world nowadays such as Wagmi 2.x, Viem 2.x, Ethers v6 and deprecates Ethers v5. This is a breaking release and not all features have been implemented yet (most notably the signed queries). It is marked as “next” on npmjs for now while the existing 1.x is still “latest”. Keep in mind that the current documentation and examples are still tailored towards the 1.x featureset.
- The Sapphire ParaTime used for testing and on the Localnet and the CI is now built with mock SGX (#357). This is a significant improvement compared to the current non-SGX builds in the past since it mimics complete SGX stack except for the initial attestation of the binary. Mock SGX is also required to run ROFL apps locally.
A number of Sapphire ParaTime releases and the tooling around it were made this month:
- Sapphire ParaTime v0.8.1-testnet, released on August 5, contained an important bug fix for ROFL application registration and fee payments.
- Sapphire ParaTime v0.8.2-testnet, released on August 30, support for a deterministic ROFL app ID generation scheme, ability to retrieve some ROFL app instance metadata from smart contracts and other bug fixes.
- Sapphire Contracts v0.2.9 was made on August 2 and v0.2.10 on August 20.
- Sapphire TypeScript Client v2.0.0-alpha.0 was made on August 2 and a bugfix release v2.0.0-next.3 on August 28.
- Sapphire Viem v2 v2.0.0-alpha.0 was made on August 2 and a bugfix release v2.0.0-next.1 on August 28.
- Sapphire Wagmi v2 v2.0.0-alpha.0 was made on August 2 and a bugfix release v2.0.0-next.1 on August 28.
- Sapphire Ethers v6 v6.0.0-alpha.0 was made on August 23 and a bugfix release v6.0.0-next.1 on August 28.
- Sapphire Hardhat v22.2.2-next.0 was made on August 28.
In total, 15 pull requests were merged in August.
The Cipher Paratime saw two maintenance mostly focused for keeping compatibility with ROFL transactions and tooling:
- v3.1.1-testnet released on August 5.
- v3.1.2-testnet released on August 30.
The sapphire-localnet Docker image now ships the new 0.8.1-testnet version of the Sapphire ParaTime.
The docs.oasis.io updates were mostly related to the node operator chapters:
- The Run your node chapter explains basic node types (#897)
- Since the EPID instructions are obsolete, we removed them from the Run your node - Prerequisites chapter (#916)
- The ParaTime Client node chapter now contains a special section for configuring the TEE (#915)
The playground.oasis.io site, which lists educational and other interesting projects built on top of the Oasis platform, has seen an overhaul in the filters behavior. List of tags is now shown inside a dropdown (#68). Enabling filters is now possible by simply clicking on a tag, a programming language or a ParaTime in the visible cards (#70, #72). Also, the card is now expanded when you click on the project title or a screenshot (#69). This enables you to select a desired text without opening the card.
Core Platform Updates
The Oasis Core team worked on polishing CHURP and ROFL parts:
- “Enable key manager CHURP” flag has been deprecated since the extension is now enabled (#5790).
- Speed up CHURP by making constant time only sensitive methods (#5800). Methods and functions in CHURP and SHAMIR schemes are constant time only when dealing with sensitive data. Other operations (e.g. validation of input parameters) cannot reveal sensitive content and don’t need to run in constant time.
- Return True, if the CHURP polynom coefficient was set successfully, or False otherwise (#5835).
- The default subtle and p384 features features, such as ecdh, ecdsa, pem, and others, are not needed by CHURP and were removed to save space (#5839).
- Add timeout for HostSubmitTx from ROFL apps (#5813).
- Quote policy is now YAML serializable in SGX (#5804).
- A new “identity show-address” subcommand was added which makes it easier to get the address associated with the node identity public key (#5820).
The new features above were included in the Oasis Core 24.2 released on August 20. In total, 10 pull requests were merged to the Oasis Core repository in August.
What’s Next?!
That’s all for August — revisit the Oasis blog for more updates at the end of this month. Meanwhile, chat more with the Oasis team by joining the Oasis Discord or on the Oasis Forum. Also, check out the complete 2024 roadmap for more insights into what’s coming through the rest of the year!