Update 16 December, 2021

Progress doesn’t happen in a straight line, and that’s particularly true when breaking new ground. Sometimes that ground turns out to be a light, easily-tilled fertile loam and other times it’s thick clay. Which is a roundabout way of saying we’re still in sticky stuff and the testnet isn’t quite there yet.

This will be the last update this year although if we get something testnetty operational before the Christmas holidays we will of course let you know. (We are currently debugging some full adult issues, and wrestling github’s releases. Once we have those sorted we’re super keen to get something into folks hands to test out the latest CLI builds “soon” (as we say around these parts: YMMV :smiley: ) ).

In the meantime we’d like to take the opportunity to review the last 6 months of the team’s efforts and ideas, because the other thing about progress is that it’s easier to see when you’re looking back down the mountain.

With all hands busy on getting the testnet out, we’ll skip the General Progress section this week and jump straight into the review.

Six months of Safe development

In July we looked at Pedersen commitments and range proofs and their role in confidential transactions. Pedersen commitments are a form of zero-knowledge proof designed to hide the values in transactions while Range proofs make it cryptographically impossible for an output value to be outside of a certain range.

In August we were all knocked back severely by the sudden and tragic death of our office manager Sharon who had just given birth to a baby daughter. As David said: ‘Marsha will know her mum as we have known her, an absolute gem of a human being. Here’s to you Sharon, you made me a better person and will always be in my thoughts as will Marsha’ .

The month saw us moving functionality out of qp2p and into the Safe Network repository, to give us more control in handling connections.

Jim unveiled the results of some market research we’ve been conducting, including three significant categories of end users to target when the network’s ready. It also touched on the need to accommodate a healthy app ecosystem but not rely on it, and to offer immediate value to users while allowing the third party developer community time to mature.

September saw our first look at DBCs. DBCs are central to the design of Safe, providing a quick, safe, flexible way to make payments that is compatible with multisig/threshold signature cryptography and can be used online and offline. They simplify many aspects of the Safe Network economy. This post introduced concepts including ‘client writes spentbook’ and one-time keys, while a follow-up update stepped into unlinkability and fixed denominations.

Our implementation of DBCs is truly cutting edge, which means we’ve been trying different options in parallel to see which is the best fit. As such, some concepts including fixed denominations have been dropped in favour of Ring CT. We fully understand this can be difficult to follow (it’s tricky for us too!:crazy_face: ) but we’re always keen to explain progress as it happens rather than after the fact, even if that does involve stepping into a few blind alleys. Among other advantages it allows us to test out ideas with the community.

DBC mints are still very much with us although implementation details are still evolving. We looked at some key features including the Spentbook and DBC ownership. Once again, our work is pushing the boundaries of what’s possible so expect some more toing-and-froing here too.

@davidrusu lifted the lid on the mysterious world of Merkle Registers at the end of the month with some diagrammatic demonstrations of how the latest data types work.

October saw us consolidating all the crates into a single repository safe_network. Unfortunately this was one of those occasions where the going was tougher than expected. We were a little overoptimistic at the time in saying the API and CLI repositories were pretty much ready to go, which is one of the reasons for the delayed testnet rollout.

As we were busying ourselves bashing the wee blighters we thought a bug backgrounder would be in order, so at the end of the month @joshuef explained the types of glitches we’re seeing and how we are eliminating them.

The start of November saw some graphical fireworks from Jim, as he demonstrated the mobile UI/UX he’s working on in terms of designing secure, resilient and usable credentials for Safe.

Then we turned the floor over to @bochaco to explain how we’re representing network knowledge - the processes by which Elders keep track of the topology of the network in the form of a DAG and also took a look at distributed consensus and how Safe bridges the gap between the store-forever transactions of blockchains and the distributed data management of Paxos and Raft.

And with the nights drawing in (in the northern hemisphere at least!), we huddled around the fire as @lionel.faber explained how Anti-Entropy is being applied to distributed key generation (DKG), the way we manage the agreement process between nodes, in order to handle asynchronous messaging.

Which brings us back to DBCs. As mentioned above, @danda and @davidrusu were working on alternative approaches and the one with the most workable benefits is building on RingCTs, the basics of which we described last week.


Useful Links

Feel free to reply below with links to translations of this dev update and moderators will add them here:

:russia: Russian ; :germany: German ; :spain: Spanish ; :france: French; :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!

59 Likes

Is this when people usually say first?

24 Likes

Yes - congratulations :slight_smile:

Thank you for the comprehensive round-up.
I hope we can get an official testnet before Xmas but if not I’m sure we will try to organise something amongst the community.

22 Likes

Thanks so much to the entire Maidsafe team for all of your hard work! :racehorse:

Looking forward to the next testnet as well. :racehorse:

20 Likes

Good to see that the “latest” sn_node (0.51.5) again correctly creates multiple nodes with run-baby-fleming
The last couple of releases only seemed to create a genesis node and then went no further. I will play with this locally and then perhaps put up a single node on AWS just to see if anyone can connect to it.

16 Likes

fantastic recap of the last 6 months and keep up the good progress.
can not wait to get a test run with it as soon as its out the oven :slight_smile: ??

16 Likes

Weirdness: when I wrote that last msg reporting success with run-baby-fleming I was still on sn_cli-0.38.0. I had initially not noticed the bump to 0.39.0.
So I download the sn_cli-0.39.0-x86_64-unknown-linux-musl.tar.gz, untar, chmod and symlink that to ~/.safe/cli/safe - then run safe node run-baby-fleming again - and I only get the genesis node…
Change the symlink back to 0.38.0, try again and still only a single genesis node.

Can someone else please check and see if you get the same or is it something daft Im doing this end?

Recap: Downloand and extract the relevant sn_cli and sn_node for your architecture, make the executable accessible for your ~/.safe/cli and ~/.safe/node dirs then try to run safe node run-baby-fleming and tel me how many nodes you get.

Oh and running safe node killall and rm -rf ~/.safe/node/baby-fleming-nodes/
may help prevent any confusion

EDIT - and now it seems to work OK with sn_cli-0.38.0

willie@gagarin:~$ safe node run-baby-fleming
Creating '/home/willie/.safe/node/baby-fleming-nodes' folder
Storing nodes' generated data at /home/willie/.safe/node/baby-fleming-nodes
Starting a node to join a Safe network...
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-genesis"
Node PID: 295542, prefix: Prefix(), name: 1a042c(00011010).., age: 255, connection info:
"127.0.0.1:33213"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-2"
Node PID: 295593, prefix: Prefix(), name: 8f6ddc(10001111).., age: 98, connection info:
"127.0.0.1:45637"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-3"
Node PID: 295643, prefix: Prefix(), name: 0e67ce(00001110).., age: 96, connection info:
"127.0.0.1:53776"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-4"
Node PID: 295695, prefix: Prefix(), name: f774d8(11110111).., age: 94, connection info:
"127.0.0.1:40302"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-5"
Node PID: 295746, prefix: Prefix(), name: 74532b(01110100).., age: 92, connection info:
"127.0.0.1:57301"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-6"
Node PID: 295796, prefix: Prefix(), name: b78963(10110111).., age: 90, connection info:
"127.0.0.1:37628"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-7"
Node PID: 295846, prefix: Prefix(), name: 35f280(00110101).., age: 88, connection info:
"127.0.0.1:53947"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-8"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-9"
Node PID: 295895, prefix: Prefix(), name: 64a7d1(01100100).., age: 76, connection info:
"127.0.0.1:55265"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-10"
Node PID: 295975, prefix: Prefix(), name: a51603(10100101).., age: 74, connection info:
"127.0.0.1:55025"
Starting logging to file: "/home/willie/.safe/node/baby-fleming-nodes/sn-node-11"
Node PID: 295925, prefix: Prefix(), name: 27120d(00100111).., age: 72, connection info:
"127.0.0.1:57310"
Node PID: 296026, prefix: Prefix(), name: c6a77b(11000110).., age: 70, connection info:
"127.0.0.1:44322"
Caching current network connection information into '/home/willie/.safe/cli/networks/baby-fleming_node_connection_info.config'
willie@gagarin:~$ safe files put 5MB.zip 
FilesContainer created at: "safe://hyryyryync59kija6hzzwcgra6ozrxesa7559msxizw4xyghftbdesd6z6ogoeuy?v=hbt3thxu3hifeb8txxzzie7yrmi11rnj1fom5apn9j84hx47ifj7y"
+  5MB.zip  safe://hyfenryybcj4nmrrycotxo9jyjkqb563rorqteq9945iuibj5e9xzbicpe5ky
9 Likes

tldr: solid steps forward this year. Perpetually amazed the quality of the devs delivery. The idea of what Safe Network can achieve deserves the very best.

Have a well deserved break when it comes.

:christmas_tree:

17 Likes

Awesome work. It has been a heck of a year but confidence is building with every well reasoned choice and implementation.

Hope everyone takes time to rest your minds and be well and with family over the holidays. Best of the season to all.

17 Likes

Merry Christmas / Happy Holidays team Maidsafe it has been a fantastic year for sure. Were it not for this project I feel my days would be significantly understimulated, due this project I “try” to understand things I’d never otherwise entertain.
Thanks for that :slightly_smiling_face:

ps. will attempt a community test in a few hours.

18 Likes

Thx 4 the review Maidsafe

All the best wishes Maidsafe devs/community :partying_face:

Eagerly waiting for a testnet

Keep Hacking Super Ants

13 Likes

Status: moist

12 Likes

Great many thanks to the team, it’s been quite a year! :heartpulse: Almost like a two-in-one, the first half pushing to the testnets in the summer and the other half continuing from there.

I’ll repeat that, except that I don’t “try” I mostly “”“”“try”“”“”. :sweat_smile:

In reality I’m quite like a slot machine addict, watching the PR test tags getting three greens in a row more and more often. And I feel like the big win is very very close, always “maybe the next roll”, but what actually happens inside the machine… I have no clue. :rofl:

But it always feels nice to see :four_leaf_clover: :four_leaf_clover: :four_leaf_clover:

16 Likes

And now it seems to work fine with 0.39.0 and 0.51.1


willie@gagarin:~/.safe/node/baby-fleming-nodes$ safe --version
sn_cli 0.39.0
willie@gagarin:~/.safe/node/baby-fleming-nodes$ safe node bin-version
safe_network 0.51.1
willie@gagarin:~$ ll foo
-rw-rw-r-- 1 willie willie 20971520 Dec 16 18:56 foo
willie@gagarin:~$ time safe files put foo
FilesContainer created at: "safe://hyryyryynxkqe8j1sxzxn4qu86ycy8iy73k3dn9uimrqb1xgzd7u7a73dhd6oeuy?v=hotjnpqgkwyug9wdw8b1kf7etp9iuq81gag1cgk5s3i949uuocziy"
+  foo  safe://hyryyyyybofm7x6xgfnxc5uy41fc9p45zhu4e4qhxssu81dbt6snhcr6m384y 

real	2m2.014s
user	0m1.051s
sys	0m0.508s

which is nice.

16 Likes

Thanks for another productive year team! 2022 will be the big one, my Tarot reader told me so. Cheers!

She broke it down like this: the Safe Network will be the third pillar.

Pillars:

  1. BTC: digital gold
  2. ETH: decentralized finance
  3. SAFE: decentralized Internet

Then again, none of us here need a fortuneteller to tell us this.

19 Likes

Very thanks for the six months development summary of SN. Thx @maidsafe

7 Likes

Keep hydrated, most likely tomorrow :slight_smile:

14 Likes

Been a good productive year so far.

14 Likes

Thank you for the heavy work team MaidSafe! I add the translations in the first post :dragon:


Privacy. Security. Freedom

7 Likes