This week we’ve all hands on deck, filling holes, bashing in nails and replacing rotten timbers in the previous testnet so we can launch the thing of beauty that is the ReduceConnectionsNet, which thus far seems to be sailing along pretty nicely.
So what were those things? Well, we’d gone from requiring three verified spends to requiring five, which increased the verification time. In our small internal testnets nodes were tripping up because of some experimental limits we’d put in place a while ago, which meant they did not have enough network knowledge to perform certain tasks. Long waits for the nodes to act added to the verification slowness, which together caused trouble with the continuous integration (CI) workflow, as tokens from the faucet were stuck in limbo, and so on. In software development sometimes problems fall like dominos, other times they build on each other like barnacles and conspire to slow things right down.
Fortunately, once we’d realised what was going on, scraping the accreted crap from our hull was a simple matter of removing a bit of code here and there.
Part of this was reducing the number of node connections which has yielded a 10x decrease in memory leaks in early tests. We’ve also chopped down replication rates, which had gone a bit haywire, and added some verification that replication messages have come from a close node rather than just anyone, which seems to have calmed things considerably.
Thanks as always to everyone who gives us their time to put the thing through its paces. Special mention this week to @mav for his UX improvements including a more familiar download path and deduplicating cli flags. Also to danieleades who continues to tidy up our occasionally scraggly workflow. Cheers all!
@bzee has been digging into the testnet internals integrating
sn-node-manager with the testnet deployer.
Similarly engaged has been @chriso who has been working up changes to the sn-node-manager application that will allow updates to testnets on the fly. These include a remove command for – you guessed it – removing individual nodes from testnets.
In a busy week @roland pitched in with a PR to aggregate spends even if the
get_record process fails. Previously we were converting all the errors into a single variant which masked this issue. He also raised another PR to improve error handling in the get_spend verification process.
And @qi_ma has been busy bashing out replication errors and connection flooding. The genesis node was becoming overloaded with communications so he balanced the genesis node’s connection workload by replacing the bootstrap node when its
K-bucket (record of kad connections) is full. He also added a feature to the networking module that dials back when receiving an identify message from an incoming peer to ensure it is not a false friend hiding behind a NAT.
And @anselme has been exercising his considerable systems design braincells on ways that royalty payments, double-spend protection and auditing could be simplified and with the addition of audit DAGs. Still a conceptual work in progress, but you’ll definitely hear more if it works out.
Feel free to reply below with links to translations of this dev update and moderators will add 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!