Summary
Here are some of the main things to highlight since the last dev update:
- v0.4.0 of the MaidSafe.SafeApp NuGet package has been released, bringing the C# APIs in sync with
safe-api
. - We released a 1.0 version of the xor-name crate, which was recently extracted from Routing.
- The Sequence CRDT is now considered ready for inclusion in the next iteration of the vaults-from-home testnet.
- After another week of great progress, we are very much closer to an integrated AT2 implementation between SCL and Vault.
- Some further SAFE Network App UX updates and details are shared via Figma.
- Support for storing
Private Sequence
has been added and appending data to it using the API and the CLI. This will be available in the next release.
Vaults Phase 2
We’ve been making progress with a number of improvements in Vaults. The introduction of signature accumulation in Vaults (previously done internally by Routing) has reduced the amount of memory used by the Vault binary since it can now directly validate requests approved by the section. We have already seen good results with a bare-bones signature accumulator that was implemented last week. We have now migrated this to use a generic signature accumulator exposed by Routing. There are a couple of failing tests that need to be fixed before this update is pushed to master.
We are also making a few changes to the test suite in Vaults for continuous integration and testing with the real version of Routing instead of using the mock version. This will give us a more realistic measure of performance when compared to the tests run in a mocked environment that is useful during development iterations. This shift away from testing mocks, towards testing production code is something we have been discussing as a team this week - this is a strategy we intend to apply, where possible and practical, across all our repos.
SAFE Network App UX
SAFE Network App: Screens, Flows and Feature Tracker (Figma)
A short update, but plenty to look at: we’ve added more screens and details to the Figma file. You’ll notice detail on the Settings Screens, we’ve laid out the Invite creation process, and we’ve also added to the Security options during onboarding.
SAFE API
Experimental glob support, as discussed in last week’s update, has been implemented this week, though some final integration test cases are still to be written before submitting a PR.
We also noticed some strange behaviour with symlinks on Windows CI which merited further investigation - this turned out to be down to us having to jump through the hoop of configuring Git for symlinks on Windows CI boxes. You can read a bit more about @danda’s findings when digging into this here.
During the last few days we were able to also add support for storing Private Sequence
and appending data to it using the API and the CLI. For example, a new Private Sequence
can be stored on the network with $ safe seq store "my private note" --private
, the command for appending to it is exactly the same as the one for appending to a Public Sequence
. We’ve updated the CLI User Guide with an example of this.
SAFE App C#
We released a new version of the MaidSafe.SafeApp NuGet package to bring the C# APIs in sync with safe-api
. The updated package delivers a few new APIs (create/get/append) to work with Sequence Data APIs, and includes a symlink resolution option in the Files APIs. Check the changelog file to read about all the new features/enhancements.
CRDT
Last week we finished with the implementation of the Sequence CRDT, so over the last few days we have been putting it through its paces with E2E tests. Everything is looking good, so this is now considered ready for a first release so the community can start playing with it. This will be part of the very next iteration of the vaults-from-home testnet.
We’ve started looking at the options we have for migrating the existing MutableData
type to CRDT, which is expected to support not only private data, but also a public version of it which was not available with current MutableData
type. This will still be a key-value data type but implemented as a CRDT. We don’t have much more to share at this point but we’ll keep you up to date as we advance.
Transfers
SAFE Transfers Project plan
SAFE Client Libs Project plan
SAFE Vault Project plan
This week we’ve been working on getting Vault code and SAFE Client Libs in sync. In doing so we’ve uncovered and fixed a few bugs (to do with section PublicKey handling, in Vaults, and some safe-transfers related bugs), and added more tests to the respective repos for the same. Replicas will now make use of SectionProofChain
(a chain of old PublicKeys of a section) from Routing, to validate transfers signed with an earlier section key. We’ve also been rebasing code atop the latest and main repo code, and refactoring the SAFE Client Libs code into something much easier to digest.
There are still some small issues to be straightened out, but it feels like we’re very much closer to an integrated AT2 implementation between SCL and Vault.
After evaluating a few different alternatives for payment flow, we’ve picked one and started to align the Request
structure to support it. This gives a better categorisation of the request types, which makes it clearer when, where and for what a payment is supposed to be handled. (Down the line there’s also a clean up of the request types, as we have types that are not necessary to implement on the network side.) After this is in place, we’ll be able to continue the work on the distributed AT2 Actor run by a Section, which then allows for the safe-farming
repo to be integrated into safe-vault
, and earning of rewards can be included in a testnet.
Routing
This week we merged the new SignatureAccumulator
after addressing some additional requirements from the Vault team who originally requested it. We also ticked off a couple of tasks from the big remove parsec list which were mostly about removing some no longer needed components
The work on the DKG replacement is still ongoing, due to some unforeseen complications. But it seems like all test failures have been resolved now and most of the review points addressed, so it should not take much longer for it to be merged.
We also made some changes to the internal Message
type to make it immutable and correct by construction which should hopefully make the code more resilient to accidental misuse.
We then fixed a rather embarrassing issue where the test suite would hang when run without any feature flags. This went unnoticed for a long time because we always run the tests with the mock
flag. This came up in a discussion about the role of mocking in our tests, with the resolution agreed that we should try to use less of them, to increase our confidence in the tests.
Finally, we released a 1.0 version of the xor-name crate which was extracted from Routing two weeks ago, after polishing it up a bit. We even made the crate no-std
compliant, which means it can now be used in the largest possible set of environments and platforms, including some very restricted embedded devices.
Useful Links
Feel free to send us translations of this dev update and we’ll list them here:
As an open source project, we’re always looking for feedback, comments and community contributions - so don’t be shy, join in and let’s create the SAFE Network together