Here are some of the main things to highlight since the last dev update:
sn_clientv0.44.0 has been released this week, the client’s first release since July.
- We have completed and merged the implementation of the duplication of Blob chunks when an Adult leaves the network - now release in sn_node v0.25.9.
- Our consultant has come up with a coded, tested and working algorithm for dynamic membership.
A quick general update of our progress towards the upcoming testnet.
We are all heads down pulling all the pieces together for the upcoming testnet. As expected, there is some bug hunting and some last minute additions. One thing that we won’t have time to include in this testnet is the new BRB (Byzantine Reliable Broadcast) membership. BRB membership is a really important step, but for now we are looking to test so many other moving parts that we’ve agreed the focus should be to launch this phase I ASAP, then we can fully focus on BRB.
Safe Client, Nodes and qp2p
This week saw the first release and publish of
sn_client since July. This repository previously consisted of various crates together under the
Safe Client Libs banner, but as regular readers here will no doubt be aware, we heavily refactored which led to us stripping out many thousands of lines of code that we felt was inefficient, buggy or unnecessary. This is now a single
sn_client crate, released under this name for the first time. This joins
sn_routing in new significant crate releases over the last 2 weeks, and so we hope demonstrates the progress we are making as the major pieces begin to fall in place. This release doesn’t mean we are finished with
sn_client, it just means that we consider it stable enough to introduce a Continuous Delivery pipeline. Development continues at pace, and now each merged PR will result in a further automatically generated new release.
This week we’ve been trying to track down the source of a stack overflow issue which has surfaced in
sn_node. It initially seems there is no specific source, but that stack usage has simply grown over time. This was originally only happening on Windows, where we discovered the default stack size is 1 megabyte, which is low when compared to Ubuntu, which has 8 MB. Lowering the stack size on Ubuntu does allow us to replicate this, which is good. So with that, we’ve been investigating this further and options to prevent this from happening.
We have completed the implementation of the duplication of Blob chunks when an Adult leaves the network. This feature, which was temporarily disabled during some of the refactors in the
sn_node repo to bring in farming and rewards, is now compatible with the new structure of the code, tested and merged. This implementation also lays the foundation for the next tasks on our cards - distribution of data on Elder churn, promotion events and network splits. We have a few ideas in mind already and will start implementation soon.
BRB - Byzantine Reliable Broadcast
Good news! Our consultant has come up with a working algorithm for dynamic membership. This is original work that utilises a Generation Clock with one join or leave operation permitted per actor, per generation. This algorithm has already been coded up along with a test suite, and all tests are passing.
The next step will be to integrate it with the existing DSB implementation. So in the end we will have a protocol for negotiating dynamic membership that is distinct but complementary to the DSB protocol for BFT transmission of regular operations/data.
This week, to bolster our logging and aid with debugging, we decided to switch routing to use
tracing, instead of the
log crate. This enables us to use structured logging and spans. The PR for this switch has now been merged. Our intention is to switch to use
tracing in other crates over the coming weeks.
After further discussion on how and when resource proofing is used, we decided that relocated nodes should be trusted and so there would be no need for them to undergo the resource proofing procedure again. The PR Do not require resource proof from relocated nodes has now been merged to refactor such behaviour. In the same PR, we also fixed a couple of bugs and test failures which we tracked down thanks to the improved logging provided by the aforementioned
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!