Substratum Dev Team Show & Tell — 21-June-19 (i33)

Apologies to the community for missing last week’s Show & Tell Summary

Show & Tell weekly sessions are an excellent insight into the challenges and triumphs facing the Substratum development team. Each week a set of slides is released and a group conference is held with dialogue and examples of work completed, tabled and planned on the horizon!

This week has a handful of exciting fixes, the most important being an extreme performance boost, showing very fast network speeds compared to previous code base!


Abram Cookson the CTO, begins the meeting in B.J’s absence. As always, the meeting beings by outlining the Strategic Goals of v1.0.0 Substratum Node:

Priority 1 — Make the Internet Free (as in Freedom) and Fair

Priority 2 — Earn Cryptocurrency. Change the World

Tactical Focus Items are outlined listed and briefly mentioned as Work-In-Progress



The ‘Show and Tell’ segment this week explores not one, but SIX achievements!

The team was noticeably in great spirits, and were all excited to explain various parts of the work completed for the week.

It was also very nice to hear from a few other team members this week, who had really shown amazing persistence and progress with their cards.


Outlined below are the major items to digest this week!

Tell — Proxy Client Timeout charges for 0-byte

This refers to when a failed request doesn’t make it past the proxy client to the server, the route is not charged to the user (basically the request drops on the floor and is not charged for sending bytes relating to the request itself).

Substratum Base Version Number

This allows the Node software to know if other Node users are using a different version, which can help compatibility as the network and software develops in future. This version number will be in the payload in CORES packets so software can identify this.


Node GUI IP address field shows HTML content when 503 error — Justin Hohman

The GUI has been tweaked to allow more usability. When Node is activated in the GUI, the setting prompts for information as before, but won’t stall if info needs to be changed. The “Save” button now is “Stop & Save”, which lets you change your configuration or neighbor descriptor without freezing the GUI.

When you change the State from Serving to Consuming and vice-versa, it saves your External IP details and neighbor descriptor.

A bug was also removed that leaked HTML error output text into the descriptor field

SHOW — Node performance ‘not good enough’ for v1 — Justin Hohman

Developer Justin Hohman showed a demo on-screen of a 7-node cluster hosted in Google Cloud, being created with TNT (Test Net Tools). Before using this test Sub Network, speed is normally 150Mb/s on their Wifi network.

On the test network demo’d live, the speed test shows 58 Mb/s, which is impressive considering the team were running the live Zoom meeting at same time.

Before, our community testers were only getting close to 10Mb on cloud instances!

To create this massive performance boost, the accountant process was running together with the other processes with node. By separating the accountant process into its own thread, this removed database calls, and can run on its own without blocking the rest of what is going on in the Node software


SHOW — 10th Node Error — Justin Hohman

Justin spun up another 10 node network, (which was cool as they have an Easter Egg that names each node after a Pokemon!), and showed a visual graph of all the nodes connected successfully to each other.

There was a major bug that was causing issues when a 10th node was trying to connect to a single descriptor.

Now the testing shows this fix has prevented issues with the node network scaling out from a single node descriptor!

SHOW — Support HD Wallet addresses — Steve Swing

In a previous Show & Tell, it was demonstrated that a wallet mnemonic seed can be created using Node (the 12 words that generate public wallet addresses using BIP32). Now the Node software knows how to generate the mnemonic phrase and use this to derive both Consuming and Earning wallets addresses, for use immediately within the Node.

The consuming wallet will need a private key, as this is used to sign the transactions when you consume on the network.

Using the command line, Steve showed this process, and also how to encrypt the wallet with an additional password.

Basically, earning and consuming wallets can be created, encrypted and stored within the Node from inside the software, making this process streamlined for users who want to start fresh with new wallets to hold and spend their SUB tokens from running Node!



Its quite amazing how the trajectory is steady, with target of only 2 weeks for completion of Node v1.0.0 Release Candidate 1!

Abram spoke so proudly of the team and how they went full steam ahead, pumping out the completed work this week like a well oiled machine.



“6.99 cards completed” — Abram Cookson

6 cards were completed (almost seven!) this week, with 3 being bug cards and 3 planned cards.

Solid utilization with the team being equally productive on both bug cards and planned work/feature cards.


Overall it was an amazing week! Not only did the team achieve some important fixes that were hindering the Node network expansion, but also a critical performance fix that now helps users see great speeds across the network in testing. Other comments from them hinted at even further performance tweaks that will see even more boosts.

Stay tuned for another Show & Tell next week with the Substratum Developers!

For those who want more technical insight, I tried to capture most of the Guest Open Space chatter that was really interesting. If you don’t want to ‘geek out’, you can stop reading here!



Guest Questions/Comments during meeting (paraphrased!):

Cuba had an emergency BBQ — he gently reminded us which is rich baritone voice that he only gets to enjoy 3 days of sun a year where he lives!

Guest: Is next week the ‘payout week’ for node?

Steve: Payout card is being worked on now

We have the current ability to detect payouts, but not blockchain confirmations right now.

Hope that it will be completed quickly.

Crypt0_Kiwi: Is 10th node bug truly fixed? In Brian’s honour can we see a demo of 10 nodes?


Justin spun up 25 nodes immediately

Showed the visual digraph of the nodes — all nodes were connected!

Further testing needed with Node dropping old and rejoining etc. As opposed to all nodes being started at same time.

Cuba: big shout out to the testing group for all their work!

Team: Agree! Internal Testing group praised!

Dan Wiebe: Preach brother!

Abram Cookson: I feel like the ‘feedback loop’ is the best out of any company I have been part of.

Maybe because of the open source nature, but it’s quite awesome, unlike how it can be in a corporate environment or conference

T: How are you dealing with wallet addresses?

Only ones created within node can be used?

Steve: for now we are just dealing with mnemonic seed.

We have a RC2 card — so you can recover a wallet

We have designed node in order of what a user would use with running the software.

ETH addresses are compatible with Ropsten and mainnet, so we assumed users wouldn’t be using their real SUB and SUB wallets as the version roll-out.

In the next few updates, users should be able to import wallets with a json key store.

It may also be possible for users using MEW type wallets and not hardware wallets.

We will have a way to do this with CLI or a config setting in the .toml file, and use password to decrypt it

Another input to be developed would be to recover mnemonic phrase (same as the one on HD wallet), to initialize the wallet and derive the wallet within node using the passphrase (13th word)

Crypt0_Kiwi: If a large HTML download fails, will the partial request have a zero charge?

Dan: we are charging by CORES package. So large files are not packed into one cores packet

If a large file of 10gb aborted after 2gb for example, the CORES packets were routed and the other nodes routing have no idea that things failed.

So they are charging for routing.

At moment, no — if someone routes or transmits to you, you get charged for it.

Steve: bytes are charged as transferred, if browser doesn’t save it then that’s that. ISP is the same with data caps. If your computer drops the data after it has been recieved, ISP still counts it.

Question from Microoo on Telegram:

What happens when originate node makes a request of downloading a huge file and then cancels or disconnects? Do hoppers and exit node get notified of the cancellation?

Dan — working on that card now with Kevin.

If one end of connection gets closed, the originating node will translate that closure into a CORES package and transmit it to the exit node, informing it to close this stream on the transmitting end. So it will interrupt the data stream.

So the books should be kept in sync in terms of payments for routing and requests sent.

Kevin brought up another large node cluster and showed it on visual digraph

Same test but did daisy chain of connecting nodes (one connected to each one in sequence as they join)

Bridge bearer structure looks good. No errors could be seen.

Previous demo in the Show was all the nodes connecting to the same single node on startup.

Marcel: Wanted brief explanation of the problem with the 10th node failure

Kevin: Issue was that once you got to 10 nodes, the new guy was being introduced kind-of in a chain.

It would debut to 1st node who says “Well I’m full, but here is this other guy.”

The other guy would connect and say well you need another neighbour, then in a chain this kept continuing.

But the Node was connected, but did not inform the others that they were connected. So introduction gossip kept happening

When passes were happening, that situation wasn’t being detected.

Crypt0_Kiwi: It seems that nodes with 5 neighbors are rare to see in the new visuals

Abram: It’s like a rare pokemon! X-D

Get your masterball out!


Disclaimer: I am not an official Substratum team member — I am a community moderator. This write-up is interpretation of the Show & Tell meeting and data released from the team. None of this is to be taken or construed as investment-related or as financial advice.