SAFE Network Dev Update - July 23, 2020

Summary

Here are some of the main things to highlight since the last dev update:

  • We’ve updated the SAFE Browser with a new beta release.
  • We released a new RC MaidSafe.SafeApp NuGet package.
  • Work is underway to make the mobile Browser and Authenticator apps compatible with the latest Vault and CLI.
  • Message-based voting was successfully merged on Wednesday, and is a major step towards removing PARSEC.
  • Last week’s testnet iterations have helped us close in on memory leaks in two places - work is ongoing to find the exact source(s) and fix them.
  • We published the new safe-farming repository :tada: This is still an early stage library that we’re using as part of the AT2 changes in vaults.

Vaults Phase 2

Project plan

Last week we released a couple of testnets with some improvements that we have been working on since testnet iteration 1. The first testnet accepted up to 22 vaults that connected from home. The network received 2956 data chunks from 47 accounts, stored in 414 unique files containers.

After about 14 hours, the Elders of the network were killed by the operating system because of high memory usage. This seemed similar to the issues we identified in the previous testnet, so we restarted the testnet with memory profiling enabled. Thanks to the help of the community, we were able to collect meaningful results that have helped us identify the source of the issue. The reason behind this high memory usage is because of memory leaks in two places. We continue investigating this to identify the exact root cause - at the moment it doesn’t look like the memory leaks are as a result of our code, so we are also looking at some of our dependencies and their usage. We will keep you posted on any advancements on this front.

In parallel, to try to help us find bugs like the above earlier, before they reach the community, we are also looking at some options to help improve and expand our testing environment by automating churn using droplets and/or containers. We are still in the early stages of planning this, so we will share more information in due course as decisions are made.

SAFE Network App UX

A word of warning on the links in this section: there is currently a bug within Figma that is causing high memory usage, so they may become unresponsive, or fail to load entirely.

Feature Tracker / Screens, and User Flows

This week, on top of working through a micro-feature and snagging list too tedious to detail here, we’ve published the screens and flows for Notifications.

These may seem a little underwhelming by themselves, but when used alongside Permissions (and the use rules, and data labelling), are a powerful way of creating a user security model that balances fast and low friction workflows, user control, and permission fatigue.

Passive notification, for example, combined with Default Permissions set to allow a new app only to be used to access data with its own label, means we don’t have to interrupt a user with upfront decisions around what level of capability to grant an app. They can begin to use it, seamlessly, yet have their attention drawn only to actions they have not initiated.

More direct and up-front content models are available of course, with the flexibility that these levers provide. In fact, you’ll also notice that we’ve bundled the options together into two different security ‘profiles’ options that the user can quickly get started with during onboarding.

SAFE Browser (desktop)

Project Plan

We’ve updated the SAFE Browser with a new beta release atop the updated safe-nodejs.

There’s also the incorporation of a more permissive CORS headers here to help with fetches in JavaScript, an update to bring our Electron dependency to v8.4.0, and other smaller updates to the browser’s dependencies.

We managed to fix some broken CI tests in this release, getting our Ubuntu end-to-end tests working once more, which should allow us now to enable automated security updates via Dependabot, once we get these changes into master.

SAFE API

Project plan

We made a first experimental prototype of the tree CRDT mentioned last week in order to gain some familiarity and test out the concurrent move scenarios presented in the paper. The set-based algorithm is working as described, but is inefficient. Next steps will be to implement a vector clock and implement some optimisations described in the paper.

SAFE App C#

Project plan

Today we released a new RC MaidSafe.SafeApp NuGet package which includes updated authenticator APIs which are exposed from safe-api/safe-ffi where we previously were using safe-client-libs/safe-authenticator-ffi.

We have already started to refactor the authenticator mobile app to use this package. The authenticator app has its own FFI wrapper, while for the mock APIs safe_app_csharp has a separate copy of the same code. With the new package, we can easily remove the redundant code and reuse the authenticator APIs. The refactoring will also make the app compatible with the latest vaults and CLI.

In parallel, we are working on the mobile browser app so it can be used with the latest vaults and CLI. This will include supporting the updated File APIs which now uses CRDT based sequence data.

CRDT

This last week we’ve been adding some more unit tests to our Sequence implementation, but this time for some specific scenarios in which data mutation operations are sent concurrently with Policy mutation operations to different replicas. With the addition of these new tests, we’ve been able to explore a couple of different alternatives to the solution for these scenarios.

As mentioned in previous dev updates, supporting Access Control on top of CRDT data is a bit tricky and this is why we are exploring alternatives. We’ve been testing two different approaches so far which we don’t believe are optimal, or at least not in the way we defined them so far, so we continue trying to find a better approach and doing the necessary tweaks to either of the existing approaches to make it suit our needs. What we are after is not only supporting these scenarios but also with the simplest implementation possible. The latter is what needs some more effort.

We’ve also made a small refactor in the Policy management implementation in terms of making the owner of the data part of the Policy itself, instead of having separate pieces of content for owner and users permissions linked to the data. This is mainly to avoid having to face another challenge when it comes to supporting concurrent mutations for data, permissions and ownership. Thus we are making the Policy self-contained, holding not only users permissions but also ownership information, which means that changing ownership simply means mutating the Policy.

Transfers

SAFE Transfers Project plan
SAFE Client Libs Project plan
SAFE Vault Project plan
SAFE Farming Project plan

We have mentioned over recent weeks that work was ongoing on the farming aspect of the SAFE Network economy - we can now share this work with you with the publication of the new safe-farming repository :tada: This is still an early stage library that we’re using as part of the AT2 changes in vaults, providing some logic for calculating rewards and allowing vaults to utilise this to generate payouts from their section wallet.

In wait for remaining tweaks on messaging, half of the team working on transfers went over to other tasks this week.

Most of the second iteration of the messaging refactor was completed, and with that the last bigger pieces of section payouts (i.e. farming) have also been put in place. This allows us to now go into the finer details of the logic, and to work on the end-to-end testing over these changes as well.

Routing

Project Plan

As mentioned in last week’s dev update, we were working on implementing message-based voting this week. This work was superseded by PR 2161, which was merged on Wednesday, and is a major step towards removing PARSEC. It refactors the consensus events & mechanism into two parts (ordered and unordered) and implements the framework of message-based voting using BLS Signature aggregation, moving the events that do not require ordered consensus away from PARSEC to use BLS.

Also as a requirement from the testnet team, vaults were in need of an event to notify them that they were promoted to an Adult, hence so they can distinguish themselves between Infants and Adults nodes. PR 2162 solves this by firing an event when Infants age into Adults during churns. We’ve also begun work on solidifying the crate by adding more non-mock tests that keep a check on the logic of these fast-moving parts during the overhaul. Up next we’re looking into #2122 which moves intra-section message signature accumulation away from PARSEC.

Useful Links


Feel free to send us translations of this dev update and we’ll list them here:

:bulgaria: Bulgarian

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!

:love:

68 Likes

Incredible update !! Keep it up TEAM !!! Thank you for making it possible!!! Brutal!!!

28 Likes

Second…

10 Likes

Thanks so much to the entire Maidsafe team for all of your hard work! The world really needs this project now more than ever. :racehorse:

:secretariat415:

20 Likes

Soo… you were needed 1.5 months to start searching of memory leak.
Hope you will fix it faster :slight_smile:
Great project anyway :slight_smile:

4 Likes

Imagine about their development speed, It’s very good project, just tasks too big for such small team

2 Likes

Nice picture
… looks like bacon snacks! … tastier than that four legged dolphin at least.

Good progress… glad to see that memory leak is getting focus… look forward to next testnet.
:+1:

14 Likes

Will be great to see that memory issue get licked so we can keep the next test net up until the natural sequential iteration.

safe-farming is here! Safecoin and farming have been such long awaited items that are here being tested right now, that is extremely positive.

The CRDT policy stuff sounds like the envelope is being pushed. I have faith the bright minds @maidsafe can solve it though. Some unique and elegant solution will pop up soon.

It’s nice some tangible user facing components are catching up again. Great work everyone! Cheers

23 Likes

image

15 Likes

Fantastic update! Super excited about the beta browser release as well as the farming repository. We’re so close, I can taste it :smile:
:sotros25:

22 Likes

Thx for the update Maidsafe devs.

:clap: for the community also, hang in there super ants.
One day we’ll have sucha big smile on our faces when this SAFE Network is up and running.

Cheers, I’m itching for a new test net…

19 Likes

Nice!
:drehb:

16 Likes

gogogo team!!

11 Likes

Thanks for the hard work all! Good luck on the road ahead…

12 Likes

It is from the Bulgarian mountains, friend. :secretariat415:

8 Likes

Another exciting update—many thanks to all :ant: :ant: :heart: :ant: :ant:

8 Likes

Does this mean that we are officially in Beta now or is this just another testnet?

Also I tried running the beta safe browser and not only did it freak out all my antivirus software but it didn’t launch at all on windows (I’m running Win 10). Nothing. So after all that hassle to install it I can’t even run it and take a look at it. At this point I’m having issues using it at all. Also how do you farm test safecoin and what not?

2 Likes

They are currently working towards the Alpha 3 release of the SAFE Network.

5 Likes

Cool, so long as they fix the install/app running issues.

2 Likes

Did you let the it run 5 minuters or so. When I made PoloMAID the antivirus would process the ap around 5 minutes or so before it opened, got better after a few times. After sending the app to the antivirus company for testing then it opened instant.

1 Like