Despite our best efforts, the faucet has gone to meet its maker. Therefore, sooner rather than later we’ll be bringing BasicEconomyTweaks Net down, because it’s hard to test a network with no funds.
The update last week worked, more or less, but we had some problems with nodes joining and then sitting around with their wheels spinning doing nothing.
That fixed, we found an issue with nodes looping over storage, likely because nodes ended up responsible for more than they should do, filling up then making space then filling up and so on. We’ve put in a fix for this now to ensure stored data is closer than data being pruned when the node reaches that stage. Plus there’s another optimisation to stop replicating when looping starts and ensure the node only gets data closer than the furthest address. In this way we hope to regain a steady state. So far community testing on this front has shown a few graphs which all seem indicative of positive change here!
Speaking of which, we realise our naming convention has been confusing – partly cos it’s confused the hell out of us. We really want one stable network alongside one unstable one, plus the possibility for additional networks for testing out particular features. We’ll be using stable and staging depending on our confidence, and those will have releases and prereleases which we will label alpha or beta. More about that on this thread.
Thanks as always to all testers. You’re the best!
Special shout out to @wes this week for his valuable feedback on node behaviour, and to @traktion for his PR on self-encryption.
General progress
@anselme investigated how to get Genesis out of the faucet and implemented a first step with a faucet donation endpoint that allows users to send money to the faucet. He also provided a PR including multiple improvements in DAGs (stores for auditing transactions), such as adding double-spend fork detection to DAG verification and fixing issues with DAG edges. Plus, he wrapped up the double-spend branching detection test and gave a presentation on how it all fits together to the team.
@bzee worked on hole punching with @roland and tested out UPnP, which allows home nodes to automatically open ports. UPnP works fine with some setups but not others; it’s still a bit unreliable. However, they did manage to achieve limited hole punching runs on a local testnet, connecting up with nodes running from home, though clients are as yet not part of the party (and this is a requirement for proper functioning of the network for hole-punched nodes).
@jason_paul continues tidying up processes and documentation, as well as working with @chriso on a RPC call for restarting nodes. Meanwhile, @chriso added several other commands in response to community feedback, has been deep in GitHub Actions processes for creating testnets, and made some logging improvements.
Also responding to issues unearthed by community testers, @joshuef created a test to reproduce the looping issue in the testnets. He opened a PR intended to ensure that pruned data is further away (XOR-wise) than stored data (see above). And he and the team put their heads together, aiming for a more sensible alternative to the confusing beta, alpha nomenclature (ditto).
Finally, @qi_ma has been the main man looking into the looping issue and how to handle the flow when nodes get full. He’s been sifting through testnet logs, looking for the cause of crashes and failed replication, and implemented several tests designed to catch these issues during continuous integration.