Today, we had hoped to release Test 15. We had fixed and patched the crust bug we had found in 12c, but decided on much more rigorous testing. We have found an issue that we could not reproduce, it showed up after several thousand iterations of testing and is related to section updates whilst two sections concurrently require to merge. There is a very small error window in that message flow. So we have decided that rather than put out Test 15, we will delay another few days to also fix this very rare, but damaging bug. The code is written and we are preparing the patch for review tomorrow and will run many testnets ourselves over the weekend and early next week. All things going well, we will release Test 15 at that time.
While this is not us saying we wish to be 100% bug free, we do feel that now, as we put out testnets, they should all be more feature complete, but importantly more stable. Such a bug is just not acceptable anymore. We understand there will be disappointment, but please bear with us as we continue the steady tested progress to Beta and beyond. We still feel Alpha 2 is very close. So we are all very encouraged by the results we are seeing in our internal testing.
On a bigger picture view, we have almost 70% of the routing team in design meetings with 2 current threads, one of these is comparisons of our consensus algorithms with respect to disjoint sections and comparisons with others such as PBFT and Tangaroa, to name a few. These meetings are producing results that are all very good and we're hoping to get the discussions, once matured, moved over to the Dev forum while initial implementation can occur in parallel. We have not one way to proceed here, but several, and now will focus on the design that allows secure data republish and all that brings. It's a busy time there, but a good time.
Much of the current code paths in routing are complex and we see these designs will simplify this a lot, leading to more efficient and more secure networks. In parallel, there are a couple of obvious simplifications we can make in production at the moment. This is also a process which again allows us to look at simplifying the system and hopefully be able to explain the details to interested parties in a much simpler way than we currently can.
@dirvine and @viv were at Glasgow University to promote SAFE to the 2nd year Computer Engineering students. The lecture went well and a further event will take place there in the next two weeks with some industry partners of the University.
Also, here's Krishna's presentation from the Jakarta conference. The sound is shaky, but it's as good as we can get for now. We'll make sure we coordinate with our partners in the future to ensure we get better quality. Enjoy!
SAFE Authenticator & API
The DOM API for SAFE Browser is now implemented. The safe_app beaker plugin will be injecting the DOM API into the browser, just like safe-js previously did. @bochaco and @shankar will be creating simple web applications to test the APIs and eventually publish the samples. We are also planning to port the existing examples to the new APIs. We picked the markdown editor sample as the first example to port to showcase the usage of the DOM API.
@lightyear is porting the email example to the latest APIs. Also, we pushed minor improvements to the build process of the safe_app_nodejs library.
We've got a few new team members starting soon here. One of them is experienced with Android and should help with taking the Authenticator and clients libs over to mobile (don't worry if you don't use Android, we're also going to be covering other mobile OS soon). We've also got @Shona joining the team again very soon. Most of you might already know Shona as the front-end designer who was away for a while, so we should be seeing some UI & UX updates in Authenticator and the client apps coming soon
SAFE Client Libs & Crust
The MutableData implementation in vaults is progressing and we have a WIP PR. There were many potential test cases missing so those have been added for ImmutableData, covering churn scenarios too. MutableData handling under churn is ongoing and there is a simple test for that added too although it requires more functions in data_manager.rs to compile. There are also broken integration tests because of the changes which will be fixed once module-level code is ready and tested.
safe_client_libs has had a couple of updates, one of which is adding some public APIs to list the content of
access_container as demanded by the front-end team.
A new version of crust (v0.22.1) including the patch for the bug from Test-12c has now been published to crates.io.
Routing & Vault
While a lot of routing-related work is currently going into planning and design, we also fixed several issues in preparation of Test 15:
- For historical reasons, routing was using several different hash functions in different places. We replaced them all with the secure SHA3: #1376
- Routing now tries re-establishing lost direct connections before looking for a tunnel: #1389
- More fixes related to tunnel nodes: #1391, #1392
Two patches, one which is already in a PR and another to fix two stages of the issue described in the intro section, are also being worked on which should hopefully address the merge issue rarely putting merged sections out of sync between the members of the new prefix.