Many of you will have seen that we have a new testnet release out, following successful poking at the recent alpha network. Thanks to all those who have tried it so far. There seems to be one or two teething problems and we’re currently (at time of writing) looking into the dead faucet and possible revival mechanisms.
We are pleased to say the node manager
is performing well now, so we advise that as the default way of deploying nodes as it provides several additional controls, particularly with regard to upgrading. However, the manual method (typing safenode to launch a node) will work too.
General progress
@roland has been making some improvements to the files upload process, including returning a summary after a successful upload, and controls over where the output is sent (print to screen or direct elsewhere). At a lower level, he’s made some changes to the sync process, updating the Rust libraries we use there. Plus he’s been working with @bzee on some AutoNAT/hole punching possibilities.
Indeed, @bzee has tested AutoNAT with TCP but the combination with the hole punching is problematic just now, so we’re seeing how we might work around this. For Quic, we’re still waiting for libp2p to provide a more mature Rust implementation of their Go library.
On the testnets, @chriso has been digging into issues with ARM builds and Fedora and Windows anomalies. He fixed an issue where faucet and testnet were mismatched, added a --safenode-manager-version
argument to testnet-deploy
, and is working on instructions to show how to upgrade nodes on beta without having to take anything down.
@anselme has been testing out the DAG code for auditing spends. He’s added tweaks for doublespend and poisoning. The latter means ensuring that spends identified as bad (i.e. doublespends) that come in much later do not poison the DAG (imagine you try and respend money you sent elsewhere a year ago by accident, the second spend will not work, but any child spends off of your initial spend will be fine). All is looking very nice here.
Meanwhile @bochaco has been testing a Sybil prevention algorithm based on a recent academic paper that investigates a potential attack on IPFS. When a Sybil attack is detected, nodes are permitted to widen their horizons and connect with others outside of the 20 closest, so that potentially corrupt close nodes can be overruled/ignored. Next step, implementation!
@jason_paul has implemented setup and deployment tasks for node upgrades involving test-net-deploy
and node manager
.
As well as orchestrating all the other activities, @joshuef has been further refining the process of releasing alpha networks based on internal testnets, and making those fully compatible with the beta net, so we can upgrade smoothly. He checked out the effect of adding extra nodes to the previous alpha as it filled up, but alas it was already too full to test the effects properly. We’ll try again on the next one. He did some refactor work to tweak how we choose replication distance and raised a PR so that a new wallet is generated if none exists, following a community suggestion.
And finally @qi_ma investigated failing data location verification tests, tweaked the store cost algorithm, and looked at logging anomalies. Connected peers
(reported by libp2p and currently collected by RPC call) shows how many peers currently are connected to/from our node, whereas RT (Routing Table) shows infrastructure health (i.e. how many nodes do we know of, but are not necessarily connected to right now). Plus, in response to a community discussion, Qi raised a PR to notify peers when a node has been flagged as bad: warn!("Peer {detected_by:?} consider us as BAD, due to {bad_behaviour:?}.")
.