Introduction:
Several people reported to us that LOG transactions were slow to be included or were not showing up on the block chain.
Hypothesis:
Four main causes were suggested as the cause of the problem:
1) Malicious actors (miners or node relayers operating DDOS)
2) Geographical isolation issues
3) Incompatible versions of network node and wallet software
4) Miners rejecting transactions mistakenly
Methodology:
Several nodes were set up on servers in different areas, given some LOG, and attempted to push transactions on the network. Nodes were operated in China, Hong Kong, S. Korea, Seychelles, Denmark and the United States.
Nodes built and ran one of several full-node wallet versions, eventually focusing on these two repositories:
funkshelper/woodcoin.git
funkshelper/woodcore.git
No windows or mac binaries were tested, though some linux binaries previously released from above repositories were tested.
Findings:
While we cannot categorically eliminate option 1 (malicious actors) the behavior of the network seemed to not agree with this hypothesis. There are always some transactions going through, so its not a full DDOS attack nor is there any clear pattern of rational malicious behavior.
We can also eliminate hypothesis 3, because we were able to push transactions to the network from all of the nodes tested, at least sometimes. This was our primary concern in conducting this thorough test program, as incompatibilities between nodes can lead to chain splits, which fortunately have not been seen here.
We are left with a combination of (2) and (4), which means that we have a not-well-connected network with some nodes suffering geographic isolation (most notably in China), as well as problems with miners blocking low-fee transactions or over-filtering the mempool.
Recommendations:
To improve the network connectivity it is recommended that more LOG users run full nodes. Those who do have full nodes, miners or otherwise, should add the following lines to the woodcoin.conf file, to ensure connectivity in and around mainland China:
addnode=150.109.126.117
addnode=139.186.21.23
addnode=110.10.176.94
addnode=5.9.233.99
Tests showed somewhat better connectivity from the woodcore nodes. It is recommended that network operateos use the code from the
funkshelper/woodcore.git
repository.
Transactions were also dropped which had a low fee. It is recommended to set the min fee at 0.001 LOG while current conditions continue:
./woodcoin-cli settxfee 0.001
Above all, more miners are needed on the network. Despite all time high difficulty, the number of miners is quite small and this makes the network both less secure and more geographically isolated.
Further work:
New versions of the woodcoin node and wallet have been issued by a few people but continued work is necessary in debugging, especially from the mining side where even fewer people are reviewing the code which is running the network. The golang version is still not released, nor are more recent projects forking existing litecoin and bitcoin node projects. More robust and reliable nodes and wallets will improve the network.
Comments:
The extreme decentralization of the woodcoin network makes it a great challenge to know what software is being operated by the participants and how it behaves. These challenges provide a valuable test of such decentralization, and while the problems are annoying for users there is no loss of consensus nor of funds reported. Users are advised that this is an experimental network and transactions might be slow to go through, though there is no danger of funds being lost.
Recovery:
If a node or wallet becomes confused because published transactions did not appear in the longest block chain, the chain can be rescanned to restore an up-to-date wallet reflecting blanaces on the chain. This can be done in several ways, the simplest being perhaps to delete all the files in the .woodcoin directory except wallet.dat and woodcoin.conf. A restart of the node will then rescan the chain to determine the actual balance of the keys in the wallet.dat file