Oasis September 2024 Engineering Update

Read the latest report from the Oasis engineering team with all the latest releases and network updates from September 2024!

September marked another busy month for the Oasis engineering team. This monthly review summarizes the key project updates, technical fixes, and upgrades that pushed the network forward over the past month. Each of the sections below provides a full recap of the following engineering updates: 

  • Wallet and CLI Updates
  • Network Updates 
  • Oasis Nexus and Explorer Updates
  • Developer Platform and ParaTime Updates
  • Oasis Core Update

Wallet and CLI Updates

The Wallet team implemented a handful of optimizations and bug fixes this month. To reduce the burden on the RPC endpoint, the GetChainContext call is now delayed until the user generates a new transaction (#2062). A temporary fix was merged for a rare bug that caused incorrect import of the account if there was an error in the internet connection (#2061). 

Also, the Ledger error message formatting was fixed (#2059). While we investigate further, the import is now disabled when in offline mode. Screenshots for the Chrome web store and Cloudflare preview URLs were updated (#2053, #2057). The README file for using swagger—an API and documentation generator—has also been updated (#2060). In total, 6 pull requests were merged.

In addition, the Oasis CLI team was working on automating the CLI in non-interactive environments and improving support for Runtime Offchain Logic (ROFL). The following commands now support the -y flag, which enables the non-interactive behavior (#279, #287):

  • oasis network add-local
  • oasis network remove
  • oasis paratime add

This enables developers to automate the registration of custom networks when running end-to-end tests. 

On the ROFL front, a new –mode parameter was added to the Oasis ROFL build command, which lets you choose from the production or mock SGX builds (#283). When registering a ROFL app, the app ID's derivation scheme can be selected using the new –scheme parameter (#281). ROFL developers running Mac OS can now also build ROFLs natively with the Oasis ROFL build command (#285). A new 0.10.1 release of Oasis CLI was made on September 11. 

In total, eight pull requests were merged.

Network Updates

On September 13, Sapphire 0.8.2 and Cipher 3.1.2 were released and proposed for Mainnet. The proposal came after a two-week testing period of Sapphire 0.8.2 and Cipher 3.1.2 on Testnet. As described in the last engineering report, the new releases include support for ROFL applications, bug fixes for pre-EIP-155 transactions, and mandatory DCAP attestations.

Mainnet highlights

The number of daily transactions on Sapphire Mainnet was in the 22k-46k range. The number increased until September 17, reaching its monthly peak (46,097 transactions compared to 38,453 on August 2). Then, the number dropped to around 24k. The monthly average in September was 32,792 transactions, slightly lower than last month's (35,494 transactions).

The number of daily transactions on Emerald Mainnet was in the 3k-4k range. The monthly average in September was 3,777 transactions per day, which was significantly lower than last month (4,681 transactions). We can assume that a number of dApps are migrating their services from Emerald to the confidential Sapphire chain. The daily maximum was 4,305 transactions on September 30 (compared to 10,257 the last month on August 5).

As of September 30, 2024, the number of the Mainnet nodes are as follows (August figures in parenthesis):

  • 118 (118) validator nodes
  • 6 (5) key manager nodes
  • 44 (44) Cipher ParaTime compute nodes
  • 57 (60) Emerald ParaTime compute nodes
  • 40 (40) Sapphire ParaTime compute nodes

An almost 2-hour unexpected outage was reported on September 25 by the Oasis Nexus indexing service due to a major upgrade that involved multiple database migrations that took a while to finish. Degraded performance was reported by the Sapphire and Emerald RPC endpoints on September 18 and 19 due to changes in the load balancing. No other major issues were reported. You can check the details on the Mainnet status page.  

Testnet highlights

The number of daily transactions on Sapphire Testnet was in the 10k-14k range. The monthly average in September was 12,739 daily transactions, which was 15% higher than the last month (11,107 transactions). The daily maximum was 14,698 transactions on September 11 (compared to 16,592 the last month on August 18). A slight transaction surge in the middle of the month was due to the EthGlobal Singapore hackathon.

The Emerald Testnet chain was mostly dormant, with around 3k daily transactions mostly accounted for by the health check service. The monthly average in September was 3,316 (3,336 in August). The daily maximum was 3,498 transactions on September 14 (compared to 3,637 the last month on August 5).

As of September 30, 2024, the Testnet figures were as follows (August figures in parenthesis):

  • 47 (46) validator nodes
  • 7 (7) key manager nodes
  • 19 (18) Cipher ParaTime compute nodes
  • 30 (31) Emerald ParaTime compute nodes
  • 19 (17) Sapphire ParaTime compute nodes
  • 6 (6) Pontus-X ParaTime compute node

On September 5, the Testnet Sapphire Web3 Gateway was unavailable for 45 minutes during the Sapphire 0.8.2-testnet upgrade. Several instances were not upgraded in time due to SSH issues, and the fallback instances were misconfigured. No other downtimes of Oasis-backed services were reported. You can check the details on the Testnet status page.

Oasis Nexus and Explorer Updates

The Nexus team prepared a pack of new practical features and improvements. Staking rewards are now stored per validator and considered when doing fast-sync (#752). This will simplify daily earnings computation in the dApps, for example, for taxation reasons. The metadata of a block, such as the block proposer and a list of all signers, are now indexed (#646). 

On the ParaTime front, metadata of encrypted transactions are now also stored (#747). If an EVM transaction fails, the NULL error module/code is also stored (#748, #746). Several typos and wording were fixed in the API spec (#754, #745). The subcall address is now a named account (#750). Subcalls can trigger a number of consensus calls, such as delegation or undelegation of tokens or obtaining an ephemeral public key for end-to-end encryption. Nine pull requests were merged.

The Explorer team continued their work on the consensus frontend, better support for non-native tokens, and bug fixing. A new consensus events section was introduced (#1552, #1544). The governance proposal votes are now also rendered (#1524). Charts for daily and total transactions are now shown in a single line (#1541). 

For consensus transactions, the same list component is now used as in the Sapphire and Emerald views (#1523, #1554, #1547). Contracts implementing ERC-1167 Minimal Proxy are now detected, and a link to the ABI playground is shown for interaction (#1538, #1540). The token in which transaction fees were paid is now correctly detected (#1543). Showing amounts in non-native tokens when emitting events is also supported (#1539). A bug showing negative amounts in the allowance transactions was fixed (#1529). On September 18, the Explorer team made a new 1.13.0 release, which is already deployed on explorer.oasis.io

In total, 20 pull requests were merged.

Developer Platform and Paratime Updates

In light of the EthGlobal Singapore hackathon, the Oasis SDK and the Core team worked hard to polish ROFL for early adopters. Most importantly, the new ROFL tutorial was integrated into the Oasis documentation (#1858, #1995). The example includes a simple oracle running inside a TEE, which fetches the latest token quotes from Binance and stores them to the blockchain.

Another feature initially tailored towards hackathon developers is the ability to plug and play your ROFL app with a Localnet instance of Sapphire (#1982, #1994). This does not require any TEE-enabled hardware and is perfect for testing and debugging before deploying your ROFL to the Testnet. 

Developers can now simply spin up their Sapphire Localnet docker image and mount the folder containing any ROFL .orc bundles into the docker’s /rofls folder. The initial process will detect those, configure them to be executed on the compute node, and register them on Localnet using one of the testing accounts. Assigning the enclave ID, the ID of a node executing ROFL, and the App ID is deterministic, so you can easily use the Localnet docker image inside your CI/CD environment.

On the Sapphire side, some convenience and maintenance changes were completed. For end-to-end encryption, the Sapphire clients originally called a non-standard “oasis_callDataPublicKey” action to obtain the ephemeral public key. This non-standard call, however, showed security warnings on some platforms. Now, this call was replaced by a standard EVM call, which triggers a subcall precompile to a specific address in Sapphire and returns the public key (#372, #422). A similar fix for the Viem integration was also provided (#383). A fix for intermittent SIWE test failures was applied (#375).

Versioning of the Sapphire Typescript client was revamped (#388). The previous alpha/beta naming convention on npmjs.com was replaced with the “-next” suffix for non-production versions. The latest production version is still based on the stable 1.x branch.

Based on their Testnet counterparts, Sapphire 0.8.2 and Cipher 3.1.2 ParaTimes were released on September 12 for the Mainnet.

The Pontus X ParaTime now supports authorizing only specific accounts to deploy the contracts (#6). A new 0.0.5 version was released on September 9 for the Testnet.

The Sapphire and Emerald Localnet docker images were also updated. An empty file called “CONTAINER_READY” will now appear after the network is successfully spun up, accounts funded, and, for Sapphire, any ROFL apps launched. This way, you (or your healthcheck command) can know when to start using the image for testing and debugging (#608, sapphire-localnet#381). Support for ROFLs landed (#614). Mock SGX has now been added for running ROFLs locally without the actual hardware TEE support (#601). The base image was moved from Alpine/MUSL to Debian/GLIBC for compatibility with various software (#623). Finally, the shipped version of the Sapphire ParaTime was bumped to 0.8.2-testnet (#616). In total, 13 pull requests were merged this month.

The Oasis Ledger nano app now supports both Ledger Flex and Ledger Stax touch-based hardware wallets (#225). A new 2.7.0 release was made on September 4.

Docs:

The Oasis Playground now contains the Demo starter for Go (#71) and a Demo starter for Python (#74) projects.

The Demo Quiz dApp now supports token payouts and NFT minting for successful quiz submissions (#7).

The Demo starter for Python was made public this month. The project includes a simple example of a CLI app for compiling and deploying a contract in Python, submitting a transaction, and querying it (#1, #2). Support for signed queries is in the works and will hopefully land the next month.

A new Oasis Blockvote dApp was launched to support confidential cross-chain voting for DAO members. The dApp originally started as a fork of the Demo Voting dApp, but the cross-chain support made it grow into its own project. Under the hood, it uses Sapphire’s contract state to confidentially store the votes and then report on the outcome once the voting has ended. You can try out the Testnet version of the dApp at vote.oasis.io and reach out to us on the #dev-central channel of the Oasis Discord server!

Core Platform Updates

The Oasis Core team was engaged in the following areas:

  • The Trusted Domain Execution (TDX), which will underlie the upcoming ROFL VMs, received support for verifying the Intel TDX quotes (#5840).
  • A series of CHURP-related fixes also landed: support for various handoff kinds was added (#5847), a few missing standard polynomial operations were implemented (#5849), and fetching CHURP key shares can now be performed concurrently (#5863).
  • The Enclave RPC now supports peer feedback for concurrent requests (#5872).
  • Production bundle components now don’t need to include the ELF binaries anymore since they are not used (#5838)
  • The keymanager trusted signers can now be mocked for the Oasis net runner to debug mock SGX builds (#5852)
  • The key manager’s runtime ID and signing key can now be obtained in the key manager client (#5865). This opens a path for verifying the ephemeral public key used for end-to-end encryption and potential MITM attacks on the Web3 gateway.
  • Go libp2p was bumped to 0.36.3 (#5844)

In total, 12 pull requests were merged in September.

What’s Next?!

That wraps it up for September — 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 the Oasis Forum. Also, check out the complete 2024 roadmap for more insights into what’s coming through the remainder of the year!

How we use cookies?

At Oasis Foundation we believe in your privacy, so you can choose to browse our site without any tracking or by clicking “Accept”, you help us to improve our site and help us grow our ecosystem. View our Privacy Policy for more information.