Some good progress. Along the way we made a few bugs, but now all is testing well with the existing blockchain.
There are 4 changes I have asked for that will complete the core work needed from BTCDdev and now the builds should be much easier with Mac and even Windows, so the BTCD daemon is looking very close.
I drastically simplified the internal complexity by gutting the TCP totally and switching to a UDP only statemachine approach. Each node will have a separate state machine relative to every other node. So all the complexity will be the specific state differences. As long as each state machine is solid, then the entire peer to peer set of states will be solid.
The removal of TCP removes a Dos attack vector of tying up the sockets on a node. With UDP you will need to saturate its entire connection with junk traffic. Due to the strong nested onion encryption, this is really the only practical attack vector that I can think of. [Other than swat teams confiscating all the nodes!]
I also realized that since it is not possible to know when the final layer of the onion has been peeled, the fact that you are even talking to a specific privacyServer is actually the bigger info leak than anything the privacyServer can determine about you! So, I am switching to routing via randomly selected privacyServer for all traffic.
Over the months I had scrubbed all the info that can be gleaned from the privacyServer, so this actually simplifies things even more as there are no special privacyServers for each node.
James
P.S. If anybody is on a Mac, can you try to build following the instructions on
https://github.com/jl777/btcdIt is still a dev version and can be any state of bugginess, but the build process can be verified and this will help save time. So, the question is if it builds and links. you can run it too, but please dont keep it live as I am trying to keep a controlled test going