As mentioned in previous weeks, our work on the Mutable Data integration with a view to releasing the next testnet continues. About 50% of resource is focussed client-side, while the rest of the team work on supporting Alpha 3 (node ageing, data chains and increasing the scope for running Vaults from home).

SAFE Authenticator & API

Through the course of this week, we have been updating the APIs and testing them. Although the majority of the APIs are stable and tested, we did spot a couple of issues and inconsistencies in terms of API usage with Mutable Data. There is an issue with deleting keys from Mutable Data. Other than that, the private Mutable Data API expects the keys to be encrypted before fetching the data, but it is not the case while saving the key and value. We are discussing a better approach to maintain consistency in terms of the API usage. @nbaksalyar is helping out with these fixes from the Rust side and we will be updating the APIs to reflect the fixes. Basic crypto helper functions are now exposed from safe_app and the same must be exposed from safe_app_nodejs.

We have also been testing the applications using the mock network and it does seem to be far more stable than previous iterations, which is very reassuring. While some known issues are addressed, we will be carrying out some regression testing with the apps and we’ll update the API documentation once these issues are resolved.

@Kumar has been a lone warrior battling with JNI and JNR. JNI samples seem to work on desktop and also on Android. He is trying to troubleshoot the JNR issue with Android. If he finds some positive results with JNR in the upcoming week, it would be really helpful in terms of maintenance and integration.

SAFE Client Libs & Crust

The Mutable Data PR is undergoing more review. The dev branch of safe_client_libs has already implemented and tested Mutable Data against the mock routing and mock vaults. We decided to run the tests with actual routing and vault’s Mutable Data branch, and the extensive test cases in safe_client_libs helped us find a few inconsistencies and bugs in both vaults and safe_client_libs. Some bugs in safe_vault were caught by safe_client_libs tests and a few in safe_client_libs were caught by the corresponding correct code in vaults.

safe_client_libs and frontend integration continues smoothly. We have added a crypto module to help the frontend not have to go to sodium package integration as that could be less secure but more importantly was conflicting with the versions of libraries used. Tapping straight into libsodium via safe_app dynamic library is also not very friendly so we just added FFI interface and helpers to the Rust code itself.

Routing & Vault

The first part of simplifying the node names has been merged.

The missing checks to avoid adding unauthorised nodes to the routing table have been added.

Thanks to the fake clock, we are now able to do some cleanups in our test code and make it more realistic. No explicit “now assume everything timed out” anymore!

The next step of the data chains proposal is currently being internally discussed and it will be published when it’s ready, while the routing design team is also looking into the details of node ageing.