TOC

Oasis March 2025 Engineering update

Wallet and CLI Updates

Wallet

The Wallet team merged 22 PRs this month:

Update dumped validators (#2051) ±4185 by github-actions[bot] @ 2025-03-04.

Created by https://github.com/oasisprotocol/wallet/blob/master/.github/workflows/dump-validators.yml

If CI actions and checks don't run in this PR: close it and reopen.
https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs

CHANGELOG:

Update dumped validators

Add Vietnamese translation (#2131) ±592 by lukaw3d @ 2025-03-11.

CHANGELOG:

Add Vietnamese translation, thanks emhieu2005

Update translations (#2148) ±319 by lukaw3d @ 2025-03-24.

CHANGELOG:

Update translations from transifex

Show Ledger help links on USBTransportError and in extension (#2149) ±84 by lukaw3d @ 2025-03-19.

Fixes #2150 and #2151

Before

loop.mp4

After

err.mp4

CHANGELOG:

Show Ledger help links after USBTransportError

Show ParaTime transactions in pending transactions section (#2128) ±79 by lukaw3d @ 2025-03-06.

Fixes #2123 (review)

image

CHANGELOG:

Show ParaTime transactions in pending transactions section

Assemble changes for 2.2.0 release (#2134) ±76 by lukaw3d @ 2025-03-04.
Fix Nexus API mocked data to fix making screenshots (#2130) ±61 by lukaw3d @ 2025-03-04.

Fixes yarn test:screenshots, broken since d3d1af0.

Screenshots failing in monthly CI: https://github.com/oasisprotocol/wallet/actions/runs/13598927233/job/38021610407

CHANGELOG:

Fix Nexus API mocked data to fix making screenshots

Fallback to transak button if embedded doesn't initialize after 5sec (#2154) ±55 by lukaw3d @ 2025-03-26.

Related to #2132

Extensions don't send origin/referrer header when loading iframe and transak now
responds with Referrer-Policy: same-origin; X-Frame-Options: sameorigin;.

We embed transak based on window size, so transak could get embedded and fail if
user opens the extension in a large tab. This mitigates a failure in 5 seconds.

Peek 2025-03-24 20-43

CHANGELOG:

Fallback to transak button if embedded doesn't initialize after 5sec

Improve translations (#2129) ±35 by lukaw3d @ 2025-03-03.

CHANGELOG:

Improve translations

Move detecting a mobile app into runtimeIs (#2155) ±29 by lukaw3d @ 2025-03-25.

CHANGELOG:

Move detecting a mobile app into runtimeIs

Bump redux dependencies (#2127) ±28 by buberdds @ 2025-03-04.

CHANGELOG:

Bump Redux dependencies

Add env vars with updated deploy URLs and refine banner display conditions (#2145) ±28 by anzoman @ 2025-03-14.

Including the https://wallet.prd.oasis.io production URL when checking the origin. This is similar to what we already do for Oasis Explorer, which has https://explorer.oasis.io and https://explorer.prd.oasis.io. Similarly, we add the corresponding environment variables, update deploy URLs, and refine conditions for displaying the "this is not a production deploy" banner.

CHANGELOG:

Add env vars with updated deploy URLs and refine banner display conditions

Update paratimes display order (#2142) ±13 by buberdds @ 2025-03-10.

Closes #2141

CHANGELOG:

Update paratimes display order

Disable E2E test for transak embedded in extension (#2132) ±5 by lukaw3d @ 2025-03-04.

Looks like extensions don't send origin/referrer header when loading iframe and transak now responds with Referrer-Policy: same-origin; X-Frame-Options: sameorigin;

Luckily our extension does not embed transak, but opens it in a new tab. Mobile app too, except maybe on tablets. Not sure if iframe would load in a mobile app context

CHANGELOG:

Disable E2E test for transak embedded in extension

Fix broken link to Ledger help (#2137) ±5 by lukaw3d @ 2025-03-06.

CHANGELOG:

Fix broken link to Ledger help

Fix Explorer link for testnet network (#2144) ±3 by buberdds @ 2025-03-11.

Closes #2143

CHANGELOG:

Fix Explorer link for testnet network

1 new releases of wallet were made this month: In total, 22 pull requests were merged in March.


Oasis Wallet Ext

The Oasis Wallet Ext team merged 1 PRs this month:

Add Retired Project notice and refer to new repo (#344) ±10 by lukaw3d @ 2025-03-24.
In total, 1 pull requests were merged in March.


Cli

The Cli team merged 17 PRs this month:

Add hint for the Testnet faucet, no account, no ParaTime and failed deposit (#403) ±336 by matevz @ 2025-03-19.

Sleeker UX for first-time users/ROFL developers.

Partial fix for #384

Fixes #10

feat(cmd/rofl): Only create deployments in create not init (#391) ±308 by kostko @ 2025-03-12.

Fixes #385

`oasis rofl deploy` instructions (#396) ±124 by matevz @ 2025-03-19.

Partial fix for #384

oa@matevz-oa:~/demo-rofl-chatbot$ oasis rofl deploy
To deploy your ROFL app, you can decide between one of the two options:

A. RUN YOUR OWN OASIS NODE

   1. Follow https://docs.oasis.io/node/run-your-node/paratime-client-node
      and configure your TDX Oasis node
   2. Copy demo-rofl-chatbot.default.orc to your node, for example /node/rofls/
   3. Add the following snippet to your config.yml:

      runtime:
        paths:
          - /node/rofls/demo-rofl-chatbot.default.orc

   4. Restart your node

B. DEPLOY YOUR ROFL TO THE OASIS PROVIDER

   1. Upload demo-rofl-chatbot.default.orc to a publicly accessible file server.
   2. Reach out to us at https://oasis.io/discord #dev-central channel and we
      will run your ROFL app inside the TEE on our servers.
feat(cmd/rofl): Populate component identity in the generated bundle (#399) ±87 by kostko @ 2025-03-14.

Fixes #398

feat(cmd/rofl): Add repository/author/license and other app metadata (#393) ±71 by kostko @ 2025-03-12.

Based on #391
Fixes #375

fix(build): Fix Rust metadata discovery for packages in workspaces (#407) ±40 by kostko @ 2025-03-19.

This fixes an issue when fetching metadata for Rust packages which are part of workspaces since in those cases cargo metadata returns information about all packages in the workspace instead of just the package in the current working directory.

cmd/rofl/build: Update manifest by default (#405) ±31 by matevz @ 2025-03-19.

Running oasis rofl build now updates the manifest by default. Pass --no-update-manifest if you really don't want to update it. Mark --update-manifest as deprecated until all the examples and demos are updated to avoid breaking compatibility.

rofl: Detect compose-like file on init, if it exists (#395) ±26 by matevz @ 2025-03-14.

Detect docker-compose.yml, docker-compose.yaml, compose.yml if they already exist on oasis rofl init. Useful, if you want to ROFLize existing containers.

Partial fix for #384

fix(cmd/rofl): Set only per-component version in manifest (#402) ±22 by kostko @ 2025-03-17.
fix(cmd/rofl): Fix incorrect enclave id list generation (#400) ±2 by kostko @ 2025-03-17.
feat(cmd/build): Bump latest rofl-containers to v0.4.2 (#401) ±2 by kostko @ 2025-03-17.
cmd/rofl/init: Detect rofl-compose.yaml as well if it exists (#411) ±2 by matevz @ 2025-03-26.

In some projects, we needed to separate between the generic compose.yaml files and ROFL-tailored compose files (e.g. how env variables are populated). In this case we named it rofl-compose.yaml. When running oasis rofl init, autodetect it and use it, if it exists.

3 new releases of cli were made this month: In total, 17 pull requests were merged in March.


Network Updates

Mainnet highlights

[2025-03-18] ami.dev: We have released Sapphire 0.9.2 and Cipher 3.2.2 for MAINNET. These releases improve ROFL app management and add features needed for containers in ROFL apps, add Sr25519 signature primitives to confidential EVM precompiles, add support for node and instance key scopes in key derivation for ROFL apps, support for per-instance metadata, additional queries and events to manage ROFL registrations, reduce ROFL app registration cost and more.

Node operators running Sapphire and/or Cipher on MAINNET, please update your node configuration to add the new versions and restart your node in preparation for the upcoming Sapphire and/or Cipher MAINNET upgrades before epoch 39604.

For more information and links to releases, see the updated MAINNET network parameters (https://docs.oasis.io/node/mainnet/). Thanks for keeping everything running smoothly!

The number of daily transactions on Sapphire Mainnet fluctuated between 12,910 and 110,155. The monthly average in March was 29,980 transactions per day and was 17% lower compared to the last month (36,283 transactions). The daily maximum was 110,155 transactions on 20 March (compared to 133,399 the last month on 7 February).

dateall
2025-03-0113,942
2025-03-0217,502
2025-03-0316,469
2025-03-0417,190
2025-03-0516,005
2025-03-0616,537
2025-03-0725,092
2025-03-0894,840
2025-03-0917,343
2025-03-1015,612
2025-03-1114,172
2025-03-1213,675
2025-03-13106,510
2025-03-1438,869
2025-03-1572,655
2025-03-1622,410
2025-03-1718,973
2025-03-1816,421
2025-03-1913,028
2025-03-20110,155
2025-03-2115,197
2025-03-2214,346
2025-03-2315,366
2025-03-2415,311
2025-03-2514,634
2025-03-2613,010
2025-03-2788,102
2025-03-2832,534
2025-03-2914,220
2025-03-3016,337
2025-03-3112,910
2025-04-011,020

The number of daily transactions on Emerald Mainnet fluctuated between 3,141 and 4,406. The monthly average in March was 3,545 transactions per day and was 8% lower compared to the last month (3,872 transactions). The daily maximum was 4,406 transactions on 3 March (compared to 5,763 the last month on 3 February).

dateall
2025-03-013,409
2025-03-023,799
2025-03-034,406
2025-03-044,212
2025-03-053,805
2025-03-063,688
2025-03-073,928
2025-03-083,462
2025-03-093,524
2025-03-104,127
2025-03-114,133
2025-03-123,757
2025-03-133,478
2025-03-143,355
2025-03-153,343
2025-03-163,443
2025-03-173,414
2025-03-183,521
2025-03-193,385
2025-03-203,282
2025-03-213,367
2025-03-223,282
2025-03-233,347
2025-03-243,494
2025-03-253,239
2025-03-263,236
2025-03-273,210
2025-03-283,376
2025-03-293,299
2025-03-303,141
2025-03-313,434
2025-04-01268

{{NODE_STATS mainnet}}

No major outages were reported for Oasis foundation-provided services in March. A few-minutes downtimes were encountered by the ... You can check out the details on the Mainnet status page.

Testnet highlights

[2025-03-04] ami.dev: have released Sapphire 0.9.2-testnet and Cipher 3.2.2-testnet for TESTNET. These releases add support for node and instance key scopes in key derivation for ROFL apps, support for per-instance metadata, additional queries and events to manage ROFL registrations, reduce ROFL app registration cost and some minor bug fixes. Node operators running Sapphire and/or Cipher on TESTNET, please update your node configuration to add the new versions and restart your node in preparation for the upcoming Sapphire and/or Cipher TESTNET upgrades before epoch 42588. ‼️ Just a quick reminder! If you haven't upgraded yet, please update your TESTNET nodes to Oasis Core 25.0. For more information and links to releases, see the updated TESTNET network parameters (https://docs.oasis.io/node/testnet/). Thanks for keeping everything running smoothly! 🙂

The number of daily transactions on Sapphire Testnet fluctuated between 8,971 and 14,007. The monthly average in March was 10,456 transactions per day and was 0% lower compared to the last month (10,502 transactions). The daily maximum was 14,007 transactions on 21 March (compared to 14,129 the last month on 17 February).

dateall
2025-03-019,908
2025-03-0210,379
2025-03-0310,609
2025-03-0410,400
2025-03-0510,241
2025-03-0610,429
2025-03-079,724
2025-03-088,971
2025-03-099,079
2025-03-1010,409
2025-03-1111,057
2025-03-1211,856
2025-03-1312,007
2025-03-1410,809
2025-03-1510,087
2025-03-1610,242
2025-03-1710,485
2025-03-1810,184
2025-03-1910,064
2025-03-2010,203
2025-03-2114,007
2025-03-2210,055
2025-03-2310,491
2025-03-2410,793
2025-03-259,759
2025-03-2610,296
2025-03-2710,605
2025-03-2810,438
2025-03-2910,073
2025-03-309,636
2025-03-3110,839
2025-04-01838

The number of daily transactions on Emerald Testnet fluctuated between 2,583 and 3,720. The monthly average in March was 3,444 transactions per day and was 3% lower compared to the last month (3,548 transactions). The daily maximum was 3,720 transactions on 14 March (compared to 3,843 the last month on 15 February).

dateall
2025-03-013,521
2025-03-023,623
2025-03-033,699
2025-03-043,436
2025-03-053,462
2025-03-063,581
2025-03-073,698
2025-03-083,523
2025-03-093,582
2025-03-103,654
2025-03-113,616
2025-03-123,608
2025-03-133,504
2025-03-143,720
2025-03-153,429
2025-03-163,317
2025-03-173,550
2025-03-183,542
2025-03-193,562
2025-03-203,560
2025-03-213,501
2025-03-223,524
2025-03-233,306
2025-03-243,315
2025-03-253,309
2025-03-263,313
2025-03-273,301
2025-03-283,301
2025-03-293,308
2025-03-302,583
2025-03-312,810
2025-04-01274

{{NODE_STATS testnet}}

No major outages were reported for Oasis foundation-provided services in March. A few-minutes downtimes were encountered by the ... You can check out the details on the Testnet status page.

Oasis Nexus and Explorer

Nexus

The Nexus team merged 15 PRs this month:

ROFL Apps support (#911) ±99488 by ptrus @ 2025-03-28.

Fixes: #807

CHANGELOG:

Implement support for ROFL applications
Two ROFL-related analyzer were added. To enable them, use the `rofl_{runtime}` and `rofl_instance_transactions_{runtime}` config fields.
Added API endpoints:
- `{runtime}/rofl_apps` - returns a list of ROFL applications
- `{runtime}/rofl_apps/{id}` - return a specific ROFL application
- `/{runtime}/rofl_apps/{id}/transactions` - returns a list of management transactions of the ROFL application
- `/{runtime}/rofl_apps/{id}/instance_transactions` - returns a list of transactions submitted by instances of the ROFL application
- `/{runtime}/rofl_apps/{id}/instances` - returns a list of ROFL instances for the given ROFL application
- `/{runtime}/rofl_apps/{id}/instances/{rak}/transactions` - returns a list of transactions submitted by the given ROFL instance

analyzer/runtime: Initial support for roflmarket module (#941) ±491 by ptrus @ 2025-03-31.

Fixes: #938

Supports roflmarket transactions and events.

CHANGELOG:

analyzer/runtime: Initial support for roflmarket module

storage/db: Optimize rofl instance transactions query (#939) ±98 by ptrus @ 2025-03-28.

CHANGELOG:

storage/db: Optimize `rofl/instance_transactions` query

Add named addresses for pontusxdev and pontusxtest runtimes (#925) ±85 by csillag @ 2025-03-08.

testnet pontusxdev and pontusxtest are both similar to sapphire. For now, the same names addresses are also valid there.

This commit adds the corresponding JSON lists.
(Which are simply copies for the one for Sapphire.)

CHANGELOG:

Add named addresses for pontusxdev and pontusxtest runtimes

Changelog 0.6.3 (#937) ±67 by ptrus @ 2025-03-28.
storage/db: Configuring max connection to the database (#929) ±35 by ptrus @ 2025-03-21.

By default pgxpool uses a very conservative limit for maximum number of connections (max(num_cpu's, 4)). We make this configurable, and also bump the default to 10.

In production we probably want to bump this to something like 50 or 100.

CHANGELOG:

storage/db/config: Support configuring max connections
By default, `pgxpool` uses a very conservative limit for the maximum number of connections (`max(num_cpus, 4)`). This change makes it configurable and increases the default to 10.

changelog: Assemble changes for 0.6.2 release (#930) ±30 by ptrus @ 2025-03-21.

Minor release with a couple of fixes.

storage/db: Remove max connection configuration option (#934) ±29 by ptrus @ 2025-03-27.

As mentioned in https://github.com/oasisprotocol/nexus/pull/929/files#r2009079229

No need to provide a config option for this, as it can be specified in the db connection string.

Changelog 0.6.4 (#942) ±14 by ptrus @ 2025-03-31.
config: add support for array values via environment variables (#933) ±12 by ptrus @ 2025-03-27.

Fixes: #932

This should be good enough since we only use env variables for a couple of config settings (none of those should have commas unless providing a list of values).

CHANGELOG:

config: fix consensus_circulating_supply_exclusions via env

Update Faucet address name (#931) ±11 by buberdds @ 2025-03-26.

CHANGELOG:

Update Faucet address name

rofl: Fix support for Instance Registered event (#922) ±9 by gw0 @ 2025-03-06.

The Nexus Sapphire Testnet analyzer got stuck at processing block 10653792 that includes the new recently added InstanceRegisteredEvent (oasisprotocol/oasis-sdk#2159). This PR adds support for decoding such events that was missing in #917.

{"analyzer":"sapphire","caller":"block.go:412","height":10653792,"level":"info","mode":"slow-sync","module":"analysis_service","msg":"processing block","ts":"2025-03-05T18:00:43.160965827Z"}
{"analyzer":"sapphire","caller":"block.go:425","err":"extract non-tx events: event 6: decode rofl: invalid rofl event code: 4; raw event: {Module:rofl Code:4 Value:[129 162 99 114 97 107 161 103 101 100 50 53 53 49 57 88 32 22 23 122 67 18 40 176 86 9 150 65 237 63 79 58 186 10 247 12 51 163 118 159 50 118 57 28 89 227 17 215 75 102 97 112 112 95 105 100 85 0 215 149 192 51 251 75 148 135 61 129 182 50 127 83 113 118 143 252 111 207] TxHash:41ba7d12683a75b590f72e33b16c9979d92ce9a3d5caf4c177e36e885b432dcb}","height":10653792,"level":"error","mode":"slow-sync","module":"analysis_service","msg":"error processing block","ts":"2025-03-05T18:00:43.161497176Z"}

After applying this hotfix the Nexus Sapphire Testnet analyzer works again.

CHANGELOG:

rofl: Fix support for Instance Registered event

api/runtime_transactions: Expose raw error message (#936) ±9 by ptrus @ 2025-03-28.

oasisprotocol/explorer#1847

CHANGELOG:

api/runtime/transactions: Include raw transaction error message

api/transactions: Limit number of methods provided in the filter (#919) ±7 by ptrus @ 2025-03-03.

Just a sanity filter.

CHANGELOG:

api/transactions: Limit number of methods provided in the filter

openapi: Document missing `success` field in two-step transactions (#923) ±3 by lukaw3d @ 2025-03-07.

Related to #820

CHANGELOG:

openapi: Document missing `success` field in two-step transactions

3 new releases of nexus were made this month: In total, 15 pull requests were merged in March.


Explorer

The Explorer team merged 44 PRs this month:

Remove Storybook (#1826) ±1547 by buberdds @ 2025-03-19.

Decision made during sync meeting

CHANGELOG:

Remove Storybook

ROFL apps list page (#1834) ±854 by buberdds @ 2025-03-24.

Extracted from #1777

API is not deployed yet, but we have almost everything to render ROFL apps list page (except last activity timestamp)

Screenshot from 2025-03-24 13-36-41

CHANGELOG:

Create ROFL apps list page

Create ROFL status badges component (#1819) ±425 by buberdds @ 2025-03-17.

Extracted from #1777

Storybook:
Screenshot from 2025-03-17 10-57-07

CHANGELOG:

Create ROFL status badges component

Toggle between 'age' and 'date' for table views (#1782) ±385 by lubej @ 2025-03-06.

Adds the ability to switch between distance(age) and date-time view on tables.

Closes #1700

CHANGELOG:

Toggle between 'age' and 'date' for table views

ROFL app instances card (#1837) ±381 by buberdds @ 2025-03-25.

Extracted from #1777

preview with mocked data
Screenshot from 2025-03-25 11-22-08

CHANGELOG:

Create ROFL app instances card

Generalize TableConfig as LocalSettings (#1793) ±187 by csillag @ 2025-03-13.

We might want to add other local options which are stored on LocalStorage, and changed based on used input.

The infrastructure added for TableConfig is perfect for all similar settings, just needs a more fitting name.

This provides the base for:

CHANGELOG:

Generalize TableConfig as LocalSettings

Create RoflAppLink component (#1827) ±180 by buberdds @ 2025-03-20.

Extracted from #1777

ROFL links in action
Screenshot from 2025-03-19 10-53-01

CHANGELOG:

Create RoflAppLink component

Introduce highlighting matching addresses (#1776) ±173 by csillag @ 2025-03-12.

Implements #1699 .

CHANGELOG:

Introduce highlighting matching addresses

Preserve tx_method query arg on block prev/next button (#1780) ±142 by csillag @ 2025-03-05.

Make it so that we preserve the tx method filtering setting when stepping between blocks.

Also fix some smaller issues and do some cleanup under the hood.

Fixes #1743
Fixes #1779

(I suggest review commit by commit.)

CHANGELOG:

Preserve tx_method query arg on block prev/next button

Small improvements on the validator page (#1815) ±140 by csillag @ 2025-03-18.

Changes:

Balance displayed on the validator page

image

Address link in the title

Before

image

After

image

Address displayed in details

Before

image

After

image

CHANGELOG:

Also show validator account balance on validator page

Also apply highlighting to validator links (#1814) ±97 by csillag @ 2025-03-13.

Also apply the highlighting feature introduced in #1776 to validator links.

This depends on #1813.

I suggest reviewing commit by commit.

CHANGELOG:

Also apply highlighting to validator links

Assemble changes for 1.17.0 release (#1798) ±84 by buberdds @ 2025-03-11.
Fix tracking referrer in matomo analytics (#1824) ±73 by lukaw3d @ 2025-03-19.

Fixes #1821

CHANGELOG:

Fix tracking referrer in matomo analytics

Offer ROFL tx types only for selected layers (#1786) ±62 by csillag @ 2025-03-05.

Solves #1744

CHANGELOG:

Offer ROFL tx types only for selected layers

Indicate self-professed nature of validator name (#1813) ±60 by csillag @ 2025-03-13.

When showing validator links with names, we need to indicate the source of the those names, just like we do with other names coming from a registry.

Before:

image

image

After:

image

image

CHANGELOG:

ndicate self-professed nature of validator name

Filter tokens list by a type (#1772) ±53 by buberdds @ 2025-03-18.

Add filter pills/buttons to tokens list

Closes #1770
Sync with oasisprotocol/nexus#914

note:

CHANGELOG:

Filter tokens list by a type

Use new API fields to detect empty accounts in Consensus search (#1785) ±42 by lukaw3d @ 2025-03-13.

CHANGELOG:

Use new API fields to detect empty accounts in Consensus search

When auto-redirecting from landing page, restore stored scope (#1794) ±40 by csillag @ 2025-03-13.

There are some network / layer configurations that (if configured in the .env) result in not showing the graph on the landing page, but instead immediately redirecting to the dashboard of a Runtime.

This change makes it so that if we change to a layer using the layer selector, that layer is preserved, and next time we redirect from the landing page, we go to this layer.

This was a feature request for the Pontus-X browser.

This implementation depends on:

(Hint for testing: uncomment REACT_APP_FIXED_LAYER in .env, or see this live in action on the pontus-x branch: https://pr-1355.oasis-explorer.pages.dev/)

CHANGELOG:

When auto-redirecting from landing page, restore stored scope

Fix address alignment issues (#1825) ±30 by csillag @ 2025-03-18.

Fixes #1822.

Before:

image

After:

image

CHANGELOG:

Fix address alignment issues

Handle new ROFL instance event (#1820) ±24 by buberdds @ 2025-03-17.

Extracted from #1777 and #1781

We are not handling new ROFL event (dev crash / prod warning)

CHANGELOG:

Handle new ROFL instance event

Tweak TableHeaderAge component (#1829) ±24 by buberdds @ 2025-03-20.

Extracted from #1777

CHANGELOG:

Tweak TableHeaderAge component

Update API bindings (#1781) ±20 by github-actions[bot] @ 2025-03-20.

Created by https://github.com/oasisprotocol/explorer/blob/master/.github/workflows/generate-openapi.yml

If CI actions and checks don't run in this PR: close it and reopen.
https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs

CHANGELOG:

Update API bindings

Prevent empty span from rendering in AccountLink on mobile (#1830) ±19 by kaja-osojnik @ 2025-03-24.

Fixes extra white space on mobile by removing an unnecessary empty in the "From" address field of the Transaction table.

Before:
Screenshot 2025-03-21 at 12 45 10

After:
Screenshot 2025-03-21 at 12 49 38

CHANGELOG:

Prevent empty span from rendering in AccountLink on mobile

Unify consensus tx fee handling (#1784) ±14 by lukaw3d @ 2025-03-06.

Unifies #1716 and #1783

CHANGELOG:

Unify consensus tx fee handling (6e07a9c and c86b1c1)

Use checksum capitalization for Emitting contract (#1828) ±14 by lukaw3d @ 2025-03-24.

CHANGELOG:

Use checksum capitalization for Emitting contract

Fix generate-openapi CI for node 20.19 (#1835) ±13 by lukaw3d @ 2025-03-24.

Fixes https://github.com/oasisprotocol/explorer/actions/runs/14038221239/job/39301496628

CHANGELOG:

Fix generate-openapi CI for node 20.19

Clean up name attribution by Oasis/deltaDAO (#1796) ±12 by csillag @ 2025-03-08.

Some account names come from Oasis, some from deltaDAO.
This commit makes the difference clear in the tooltips.

Built on (depends on):

Tooltip for Oasis identities:

image

Tooltip for pontus-x (deltaDAO) identities:

image

Tooltip for self-acclaimed names (not changed):

image

CHANGELOG:

Clean up name attribution by Oasis/deltaDAO

Fix transaction Storybook errors (#1823) ±11 by buberdds @ 2025-03-18.

Transaction Storybook is broken due to:

Error: [useLocalSettings] Component not wrapped within a Provider
    at useLocalSettings
TypeError: Cannot read properties of undefined (reading 'toLocaleString')

CHANGELOG:

Fix transaction Storybook errors

Update RAK label (#1838) ±10 by buberdds @ 2025-03-25.

#1820 (comment)
Should we keep RAK on mobile?

preview (at the bottom)
https://pr-1838.oasis-explorer.pages.dev/testnet/sapphire/tx/e1b96d2135b6b2bc2b13a46aa37db7bc0ac23803bd04ed407c271a0c30a0d0c1

CHANGELOG:

Update RAK label

Enable Oasis account name lookup on pontus-x runtimes (#1795) ±9 by csillag @ 2025-03-08.

On Pontus-X runtimes, we need to look for named accounts in two sources:

This commit re-enables the first source, which was somehow lost along the way. (The second source was always working properly. that's why we didn't notice earlier.)

Example for tx 0x12f2161e312ae060ab97a907a3a18e079712511e58b6320e7f374b42da84da92

Before:

image

After:

image

CHANGELOG:

Enable Oasis account name lookup on pontus-x runtimes

Fix detecting burning events (#1846) ±5 by lukaw3d @ 2025-03-28.

Fixes #1844

https://explorer.dev.oasis.io/mainnet/sapphire/tx/0xc78d5387868fd4f1991a35a39eff51366e2ba45e38c563c5c3f6724ba378d7a6

Before After
image image

CHANGELOG:

Fix detecting burning events

Un-Skip testing the testnet faucet link (#1810) ±3 by csillag @ 2025-03-13.

The settings on the test faucet links have been updated, so this should be OK again.

(This reverts #1807)

CHANGELOG:

Un-Skip testing the testnet faucet link

Fix consensus list view fees (#1783) ±2 by lubej @ 2025-03-04.

CHANGELOG:

Fix consensus list view fees

[Bug] Don't resolve name on token dashboard (#1797) ±2 by csillag @ 2025-03-08.

When showing token smart contract addresses, usually we are replacing it with the name of the token.

That is all good in transactions, but we should not do this in the title on the token dashboard page, when we explicitly want to see the address. (Showing the name would be redundant.)

Before

image

After

image

CHANGELOG:

Don't resolve contract name on token dashboard title

Skip testing the testnet faucet link (#1807) ±2 by csillag @ 2025-03-12.

There is a regression in our CI tests.
When testing the availability of faucet.testnet.oasis.io, we hit a problem because of an interactive challenge which had to be recently activated because of attacks.

So we just skip that link, in order not to fail the test.

CHANGELOG:

Skip testing the testnet faucet link

1 new releases of explorer were made this month: In total, 44 pull requests were merged in March.


Developer Platform and ParaTime Updates

Oasis Sdk

The Oasis Sdk team merged 10 PRs this month:

runtime-sdk: Add ROFL compute market (#2172) ±3454 by kostko @ 2025-03-19.

Closes #2150

docs/rofl: Update for new version of Oasis CLI (#2174) ±2017 by kostko @ 2025-03-14.

Should be merged shortly after a new CLI release which includes oasisprotocol/cli#391.

runtime-sdk: Implement ERC-20 compatibility (#2144) ±1984 by jberci @ 2025-03-17.

Implements #1856.

Minor updates to roflmarket module and Go Client SDK (#2181) ±733 by kostko @ 2025-03-29.
tools/orc: Add support for ephemeral signer key (#2168) ±163 by kostko @ 2025-03-05.

Fixes #2167

docs: Document App ID derivation (#2169) ±21 by matevz @ 2025-03-07.

Fixes #2047

docs: Add warning to use FQDN URLs for docker images (#2170) ±9 by matevz @ 2025-03-13.

Fixes #2163

rofl-containers: Add --no-build when bringing up containers (#2178) ±4 by kostko @ 2025-03-17.

Fixes #2176

docs: Fix echo command for storing secrets (#2175) ±2 by matevz @ 2025-03-14.

New line should not be captured inside the env variable.

docs: Fix 10,000 -> 100 TEST for rofl create command (#2177) ±2 by matevz @ 2025-03-17.

Followup to oasisprotocol/docs#1165

5 new releases of oasis-sdk were made this month: In total, 10 pull requests were merged in March.


Sapphire Paratime

The Sapphire Paratime team merged 15 PRs this month:

feat: Add Foundry toolkit that enables Sapphire precompile and decryption (#484) ±1783 by ZigaMr @ 2025-03-04.

This PR:

Enables local testing of Sapphire-compatible contracts without using forks.

runtime: Bump Oasis SDK to 0.12.0 and prepare 0.9.2-testnet (#530) ±533 by kostko @ 2025-03-01.
feat: Add statement and resources for SIWE authentication (#542) ±318 by rube-de @ 2025-03-18.

Enhancements to SiweAuth contract:

Test functions and cases:

docs: Add e2e testing with dappwright (#536) ±273 by aefhm @ 2025-03-18.

Description

Close #501. See related oasisprotocol/docs#1170 and preview.

docs: Update Quickstart to Use V2 Hardhat Example (#524) ±132 by aefhm @ 2025-03-18.

Description

Close #507 and replace #519

TODO

examples: Update Hardhat (#534) ±130 by aefhm @ 2025-03-07.

Description

#524 needs a separate bump in examples/ because Netlify doesn't include new changes.

runtime: Bump Oasis SDK to 0.13.0, add rofl-market module (#554) ±115 by kostko @ 2025-03-31.
contracts/auth/SiweAuth: Change _domain visibility to internal (#529) ±64 by matevz @ 2025-03-04.

I stumbled on this when deploying demo-rofl-chatbot contract on Testnet and as a test I set the initial domain to localhost. When I wanted to simply change it to playground.oasis.io, I realized it can't be done, because _domain is private in the super contract.

Preview

examples: Fix spelling and Hardhat private key reference (#537) ±18 by aefhm @ 2025-03-12.

Description

Fix older style comment sapphire-dev to sapphire-localnet. Fix spelling.

contracts: Prepare 0.2.13 release (#531) ±14 by matevz @ 2025-03-04.
runtime: Prepare 0.9.2 (#541) ±12 by kostko @ 2025-03-17.
contracts: Prepare 0.2.14 release (#543) ±9 by matevz @ 2025-03-19.
Ignore integrations Foundry docs and add soldeer token folder (#532) ±6 by ZigaMr @ 2025-03-05.

This PR:

docs: Fix typo (#544) ±2 by aefhm @ 2025-03-19.

Description

All the rebasing in #524 lost a change.

docs: Add dark mode CSS to Mermaid SVGs (#538) ±0 by aefhm @ 2025-03-17.

Description

Relates to oasisprotocol/docs#1070 and blocks oasisprotocol/docs#1172

Diagrams are here and here

TODO

1. Why does Mermaid cli create new wider SVGs? 🤔
My local generation was weird.

5 new releases of sapphire-paratime were made this month: In total, 15 pull requests were merged in March.


Cipher Paratime

The Cipher Paratime team merged 3 PRs this month:

runtime: Bump Oasis SDK to 0.13.0, add rofl-market module (#59) ±84 by kostko @ 2025-03-31.

Prepare new release to test out the new ROFL market module.

runtime: Prepare 3.2.2-testnet (#57) ±16 by kostko @ 2025-03-01.
runtime: Prepare 3.2.2 (#58) ±6 by kostko @ 2025-03-17.
3 new releases of cipher-paratime were made this month: In total, 3 pull requests were merged in March.


Oasis Web3 Gateway

The Oasis Web3 Gateway team merged 2 PRs this month:

feat: Bump Sapphire version to 0.9.2 (#716) ±12 by kostko @ 2025-03-18.
other: make function comment match function name (#715) ±2 by rubyisrust @ 2025-03-23.

make function comment match function name

In total, 2 pull requests were merged in March.


Docs

The Docs team merged 14 PRs this month:

Update browser extension docs (#997) ±613 by kaja-osojnik @ 2025-03-13.

Fixes: #912

Add tools/foundry subchapter (#1151) ±288 by ZigaMr @ 2025-03-11.

This PR adds foundry subchapter to tools.

docs: Add dark mode CSS to Mermaid SVGs (#1172) ±230 by aefhm @ 2025-03-19.

Description

Close #1070 and blocked by oasisprotocol/sapphire-paratime#538

Given that switching to Mermaid extension is also finicky with detecting dark mode, I'm continuing down the current path of overriding themeCSS through the usage of cli tool. It appears we do need to order the new media query at the end per specificity.

Reviewer should also review color choices.

Least pretty, this, this and better

TODO

docs: Reduce ROFL stake requirement from 10k to 100 (#1165) ±30 by matevz @ 2025-03-06.

Reduces ROFL stake requirement for ROFL creation on Testnet from 10k to 100 TEST.

docs/node/testnet: Add Sapphire 0.9.2-testnet, Cipher 3.2.2-testnet (#1163) ±4 by amela @ 2025-03-04.
docs: Add Sapphire e2e section on dappwright (#1170) ±3 by aefhm @ 2025-03-19.

Description

Blocked by oasisprotocol/sapphire-paratime#536

submodules: Bump external/oasis-sdk (#1179) ±2 by matevz @ 2025-03-17.
docs/node/mainnet: Add Sapphire 0.9.2, Cipher 3.2.2 (#1182) ±2 by kostko @ 2025-03-18.
In total, 14 pull requests were merged in March.


Playground

The Playground team merged 2 PRs this month:

scripts: Add projects importer (#91) ±1075 by matevz @ 2025-03-25.

Adds yarn projects command:

Available commands:
  add <url> [name]
    Import a new project living on url
    
  dump [-o output_file]
    Dump all projects to JSON format
    Default output is 'projects.json'
    Use -o flag to specify a different output file

Currently supported importers are:

projects: Add demo-rofl-chatbot (#110) ±41 by matevz @ 2025-03-07.

Adds https://github.com/oasisprotocol/demo-rofl-chatbot

In total, 2 pull requests were merged in March.


Demo Starter

The Demo Starter team merged 1 PRs this month:

e2e: Use dappwright test helpers (#29) ±19 by aefhm @ 2025-03-11.

Description

Do the todo. We currently test just with MetaMask, but I expect same helpers would work with Coinbase.

In total, 1 pull requests were merged in March.


Demo Quiz

The Demo Quiz team merged 1 PRs this month:

frontend/QuizView: Fix Reclaim reward disabled mode (#11) ±8 by matevz @ 2025-03-21.

Fixes claiming reward event typo.

In total, 1 pull requests were merged in March.


Demo Rofl Chatbot

The Demo Rofl Chatbot team merged 6 PRs this month:

README: Add screenshot and flow (#7) ±160 by matevz @ 2025-03-10.
frontend: on account change fetch conversation history (#8) ±154 by lubej @ 2025-03-10.

Closes #5

frontend: Add close button on faucet notification (#10) ±69 by lubej @ 2025-03-10.
frontend: Add testnet faucet notification (#9) ±51 by lubej @ 2025-03-10.

Closes #6

Resources

Desktop Mobile
localhost_5173_ (6) localhost_5173_(iPhone XR) (3)
frontend: Increase card size (#4) ±16 by lubej @ 2025-03-03.
frontend: Fix jazzicon types (#3) ±6 by lubej @ 2025-03-03.
In total, 6 pull requests were merged in March.


Core Platform Updates

Oasis Core

The Oasis Core team merged 18 PRs this month:

go/consensus/cometbft/roothash: Remove history from roothash service (#6089) ±1609 by peternose @ 2025-03-14.

The runtime history should be built on top of the roothash service, using observed blocks for block reindexing and round syncing. The roothash service should broadcast blocks as soon as they are finalized in consensus, whereas the block history should broadcast blocks only after they have been reindexed or synced.

Now, we have 3 ways to observe runtime blocks:

  1. Method consensus.RootHash().WatchBlocks returns blocks immediately once they are finalized in the consensus.
  2. Method rt.History().WatchCommittedBlocks returns blocks immediately once they are committed to local storage.
  3. Method rt.History().WatchBlocks returns blocks immediately once they are committed and synced to local storage.

Comparing methods to previous solution:

go/keymanager/api: Fix key manager client (#6078) ±1121 by peternose @ 2025-03-05.

Moving key manager backend from ServicesBackend to ClientBackend.

I also refactored clients, trying to follow these guidelines:

go/consensus: Clean light client interfaces (#6120) ±943 by peternose @ 2025-03-29.

I think our light client service implementation is not very useful and that the whole service can be removed:

Maybe I overlooked something. What am I missing?

go/consensus/cometbft/api: Remove genesis provider (#6113) ±688 by peternose @ 2025-03-18.
Improve e2e history reindex test (#6114) ±351 by martintomazic @ 2025-03-30.

Closes #6070

go/roothash: Remove RoundResults from history reindex (#6095) ±334 by martintomazic @ 2025-03-06.

RoundResults are now on-chain so there is no need to reindex them anymore. See thread for more context.

Related to #5738, I have confirmed this increases our history reindex ~30%, which is in line with what existing benchmarks predict.

go/runtime: Add support for simple per-component networking (#6123) ±233 by kostko @ 2025-03-29.

Fixes #5903

CHANGELOG:

Add support for simple per-component networking
One can now configure incoming connection forwarding to the guest for each component as follows:
```yaml runtime: runtimes: - id: 000000000000000000000000000000000000000000000000a6d1e3ebf60dff6c components: - id: rofl.rofl1... networking: incoming: - ip: 1.2.3.4 protocol: tcp src_port: 1234 dst_port: 5678 ```

changelog: Assemble changes for 25.1 release (#6127) ±230 by kostko @ 2025-03-31.
go/control: Show runtime block history indexer status (#6013) ±202 by martintomazic @ 2025-03-31.

Show block history indexer status, also closes #5998.

Rendexing:

      "indexer": {
        "status": "reindexing",
        "last_round": 3951368,
        "reindex_status": {
          "batch_size": 1000,
          "last_height": 18764680,
          "start_height": 18705681,
          "end_height": 25804727,
          "eta": "2025-03-28T19:30:00+01:00"
        }
      },

Indexing"

      "indexer": {
        "status": "indexing",
        "last_round": xxxxxxx,
      },
go/consensus/cometbft/config: Move light client config (#6115) ±188 by peternose @ 2025-03-21.

The consensus light client is currently used only for consensus state synchronization. However, in the future, stateless clients will also rely on it. Therefore, we have moved the trust root configuration to a dedicated section.

CHANGELOG:

go/consensus/cometbft/config: Move light client config
The consensus light client is currently used only for consensus state synchronization. However, in the future, stateless clients will also rely on it. Therefore, we have moved the trust root configuration to a dedicated section.
The following configuration options have been removed:
- `consensus.state_sync.trust_period`,
- `consensus.state_sync.trust_height`,
- `consensus.state_sync.trust_hash`.
The following configuration options have been added:
- `consensus.light_client.trust.period`,
- `consensus.light_client.trust.height`,
- `consensus.light_client.trust.hash`.

go/consensus/cometbft/roothash: Move prune handler (#6116) ±159 by peternose @ 2025-03-21.
go/runtime/registry: Order deployments before filtering versions (#6097) ±52 by peternose @ 2025-03-05.

CHANGELOG:

go/runtime/registry: Order deployments before filtering versions
Deployments need to be ordered first before filtering the active and upcoming versions, as consensus does not enforce chronological order.

changelog: Assemble changes for 20.10.2 release (#6128) ±24 by ptrus @ 2025-03-31.
changelog: Assemble changes for 20.12.8 release (#6129) ±24 by ptrus @ 2025-03-31.
docs: Fix environment variable quoting (#6107) ±22 by abukosek @ 2025-03-11.

I was going through the development environment setup instructions again when setting up my new workstation and noticed that we use unnecessary quotes when setting up the Oasis environment variables (export OASIS_...="1") -- there is no need to use quotes there, since we're setting the variable to a single word.

Fix type inference issues caused by deranged crate update (#6125) ±11 by kostko @ 2025-03-29.

The deranged deranged crate update has caused havoc in a lot of random crates due to overlapping PartialOrd trait implementations.

See jhpratt/deranged#18 and jhpratt/deranged#19.

Currently uses a fix from the fortanix/rust-sgx#726 branch which should be changed to a released version once it becomes available.

rust: Bump ring to 0.17.13 (#6104) ±2 by peternose @ 2025-03-10.
Crate:     protobuf
Version:   2.28.0
Title:     Crash due to uncontrolled recursion in protobuf crate
Date:      2024-12-12
ID:        RUSTSEC-2024-0437
URL:       https://rustsec.org/advisories/RUSTSEC-2024-0437
Solution:  No fixed upgrade is available!
Dependency tree:
protobuf 2.28.0
├── protoc-rust 2.28.0
│   └── aesm-client 0.6.0
│       └── oasis-core-runtime-loader 0.0.0
├── protobuf-codegen 2.28.0
│   └── protoc-rust 2.28.0
└── aesm-client 0.6.0
Crate:     ring
Version:   0.17.8
Title:     Some AES functions may panic when overflow checking is enabled.
Date:      2025-03-06
ID:        RUSTSEC-2025-0009
URL:       https://rustsec.org/advisories/RUSTSEC-2025-0009
Solution:  Upgrade to >=0.17.12
Dependency tree:
ring 0.17.8
└── rustls-webpki 0.102.8
    ├── rustls-mbedcrypto-provider 0.1.0
    │   └── simple-rofl 0.0.0
    └── rustls 0.23.18
        ├── simple-rofl 0.0.0
        ├── rustls-mbedtls-provider-utils 0.2.0
        │   ├── rustls-mbedpki-provider 0.2.0
        │   │   └── simple-rofl 0.0.0
        │   └── rustls-mbedcrypto-provider 0.1.0
        ├── rustls-mbedpki-provider 0.2.0
        └── rustls-mbedcrypto-provider 0.1.0

CHANGELOG:

rust: Bump ring to 0.17.13

3 new releases of oasis-core were made this month: In total, 18 pull requests were merged in March.