SAFE Network Dev Update - October 3, 2019

Summary

Here are some of the main things to highlight this week:

  • We released SAFE Browser v0.15.1, which fixes some of the version browsing bugs that had been reported on the forum and sets the browser to use the provided mimetype from the new XOR-URLs.
  • We published a blog post on the new Perpetual Web browser.
  • In Vaults, we merged a PR which adds consensus to requests for data deletion and login packets storage.
  • In Routing, we merged a PR that simplifies the bootstrapping process.

Vaults Phase 2

Project plan

We’re making good progress with the Phase 2 project. We’ve merged the pull request which adds consensus to requests for data deletion and login packets storage, and we’re now moving towards adding consensus for the rest of requests (like coin transfers). We’ll continue to test different scenarios with multiple Vaults configurations - including mock Routing; real Routing with mock PARSEC; and eventually real Routing with real PARSEC (once the library interface is ready).

We’ve also fixed a bug that we found earlier: in storing Vault data in the temp dir, there could have been a risk of data loss caused by certain operating systems (like macOS) pruning that data at a certain interval, deleting the Vault chunks. This has been fixed by switching the default storage location to a local settings directory.

SAFE CLI (Command Line Interface)

Project plan

We’ve finalised the restructuring of the safe-cli repository with a workspace setup. We now have three folders: safe-api, safe-cli and safe-ffi, which helps us maintain these crates in isolation from each other. This allows us to publish them separately when we have some automation ready, e.g. safe-api will be published on crates.io for any Rust application developer to consume whilst safe-cli will be released in our GitHub releases page (as we’ve been doing so far). And the safe-ffi library and bindings could also be published in our GitHub releases page. There are still some minor things to work on before we can start doing this though, but we are not far away from it.

The safe-ffi crate has been taken to a state where it covers all the currently existing APIs exposed by the safe-api crate. A couple of minor issues were solved in the FFI, including one which was causing the C# bindings tests to fail, so this is good news for the effort we are putting in the development of the C# bindings.

We’ve also finalised the implementation for using specific Wallet's spendable balances in safe-cli wallet commands/operations as we commented last week, which will be part of the very next release of safe-cli (hopefully soon). We’ve added details about this Wallet feature in the User Guide if you want to learn a bit more about it.

Some research has also started with some good and encouraging initial results about having the Authenticator run as a daemon, and merging all the current safe_auth CLI commands into the $ safe CLI, which we believe will simplify things massively for users since there will be only a single CLI, but we expect this to also simplify maintenance of the code and release process. We are also considering using QUIC for the communication and transport of the authorisation requests and responses (currently being done through HTTP), so we can benefit from several features, like security, provided by this protocol. We are trying to get a first Proof of Concept ready ASAP to be able to share it with the community for testing and feedback.

SAFE Network App

Project plan

The app has had some cross-platform love during the last week, with several fixes in place for all three of our favourite platforms, aligning them much more closely and making some platforms (cough Windows cough) now useable on some level. So we’re happy to be handing this over to everyone’s favourite QA team now!

SAFE Desktop Browser

Project plan

This week we released a minor update to the SAFE Browser, fixing some of the version browsing bugs that had been reported on the forum, as well as setting the browser to use the provided mimetype from the new XOR-URLs, which should remove a bunch of content type errors folk were seeing with their sites / image rendering.

Check out the Medium piece on the new Perpetual Web browser that was released earlier today.

We’ve also updated the browser build process to remove some small hacks, which should make things both more reliable and faster, too.

SAFE App C#

Project plan

We finished the initial setup tasks required to start exposing the new C# API in the safe_app_csharp package last week but while running the unit tests we faced a blocker issue. Because of that we were not able to fetch the data from the vault. With the help of the SCL team, we were able to figure out the root cause of the issue during the weekend and implemented the fix.

Once the issue was fixed and we got a working solution along with some basic tests, we made good progress and successfully added new APIs for keys, wallet and files in safe_app_csharp :tada:

These APIs will enable developers to perform a whole range of different operations (if you think about the range of functionality that’s available via the SAFE CLI, you’ll get a good picture) when it comes to keys, wallet and files. Next week we will target NRS and finish adding tests to the fetch API.

Node Ageing

Project plan

One overdue change carried out in the last week is that node responsiveness and participation shouldn’t be determined at the network layer using timeouts etc. Instead it should be handled at the routing layer where a node that doesn’t participate in voting should be voted offline. In a fully asynchronous network nodes shouldn’t need to worry about being constantly connected to other nodes, only that they participate at the pace the network requires.

Apart from that, we continue to remove parts of Routing that cease to be useful. As a part of this work, we merged a PR that simplifies the bootstrapping process.

In the old approach, a joining node had to contact a bootstrap node who would serve as a proxy in all communications between the node and the network. The node would then introduce itself, ask for relocation, receive relocation information from the proxy’s section, contact a new section and pass their resource proof challenge, before it was promoted to a full node. This required the network to perform quite a bit of work for every joining node: the initial section would have to reach consensus about where to relocate the node, the target section would have to be informed that they are to expect a new node, and finally the target section’s bandwidth would be used to perform the resource proof.

In the new approach, we aim to offload most of the work onto the joining node. Instead of the Network negotiating where to relocate the node between themselves, the node is being directed by the nodes it contacts to connect to the right section directly. All communication is happening between the joining node and the nodes it connects to. If the section it connected to isn’t the right one, it will receive the Network addresses of some nodes closer to the proper destination. Once it connects to the right section, it will become an Infant or Adult right away. Then the section is free to perform any necessary checks, but that will be an issue for future tasks.

Marketing

Due to various holidays/travel, there are no major updates from the Marketing Team this week - simply business as usual (plus of course the Medium piece on the new Perpetual Web browser that was released earlier today).

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 :tada:

77 Likes

That’s unexpected, I don’t know what to say.

edit: I mean me being first, of course.

edit 2: I had a few days off recently and I did some “research” on other “crypto” projects.
I’ve been places, I’ve seen things.
And I mean all kinds of things: forums, reddits, 4chans.

Boy, am I glad to be back here to this weekly updates. You (we) are the best community out there.

53 Likes

Second!!!

17 Likes

This sounds interesting!

More progress. Keep chipping away @maidsafe! Things are really shaping up. Looking forward to the JS bindings getting further along and more data types exposed but in due course. :slightly_smiling_face:

26 Likes

This is smart. Users love simple. Great work team, you’re killing it!

27 Likes

Thanks so much to the entire team for all of their hard work. Remember to take some days off too!

20 Likes

Lucky 7 + 20 random chars

11 Likes

This is it. These are the base functionalities—all ants accounted for, starting to build/colonize the new Internet—being implemented. Fun to visualize it with what’s been done so far. Many will join, gradually.

25 Likes

Solid progress on many fronts in the update today! really exciting to see it all coming together!

13 Likes

Many recent updates have been filled with “this makes it simpler and easier” kind of things - both for the developers and users. Sounds like things coming together. Really really nice to hear! Huge thanks to Maidsafe team and other contributors!

12 Likes

Great update and progress with the browser and all of the other parts. Recently watched the previous videos with @joshuef and @hunterlester on the Maidsafe youtube channel. Very interesting videos that gave me similar feelings to when I tested the alpha network for the first time, it kind of takes me back to the 90’s when I first discovered netscape on a 56k modem or first times when discovering google, a new exciting world with new possibilities.

Looking forward trying to develop some sites/apps. This kind of exciting technology comes about maybe once or twice in a decade, thanks @dirvine for the journey so far, it is a blessing to witness and be a part of.

20 Likes

Another week of strong progress! Great work team - the rewards are coming!

11 Likes

Hope your luck is better than your counting …

12 Likes

I was using base9 , OK?

10 Likes

Yeah it’s quite an eye opener isn’t it? And you’re right of course.

10 Likes

According to the SAFE Network App plan there is only one Linux bug to fix and it’s ready. Is this correct?

6 Likes

I can confirm the Windows browser bug is fixed. Nice.

16 Likes

Yes, all these will be lost in (the probably not so far future) time like tears in rain. Hopefully that won’t be the case for the Safe Network :wink:

7 Likes

Good progress ! :slight_smile:

Keep going!

8 Likes

Hello everyone.

Just got around to signing up.

Been around since the crowd sale!

So, what I always hope for each week is some kind of an idea of where the project is at.

I know various efforts have been made at illustrating this over the years, even very recently.

I work in science communication, explaining difficult subjects to lay people. I feel that maidsafe has some way to go on this front.

I follow this forum weekly, it’s been a few years now. I still have no idea realistically of where it is at.

Does anybody else feel like there is a need to focus more on shedding serious light on this topic?

As a non programmer, the language used is, while often vaguely comprehensible, generally quite impenetrable.

We can all agree that the project, or something like it, is much needed, and the global situation only continues to deepen that need.

I’m well aware of the history of the debate on avoiding setting specific targets dates and so forth. Even mentioning the topic can be taboo, but would anyone care to paint a picture of where we are at in simple language without references to github or such like? Maybe using a comparison to some other major complex project from the past?

Go easy, it’s my first post.

I want to believe :expressionless:

21 Likes