It has been a while since I made a post about the work that occupies the centre of my mind and the majority of my days, the month of May was pretty rough for me mentally, and progress was a bit slow.
I am part way into integrating the use of libp2p to handle all the peer to peer connections and such, and I now need to have a distributed database that peers use to share information about their addresses, services, and hidden services they can intermediate to start a hidden service connection.
I was completely oblivious to the way one implements these things, even though I had several times previously looked at parts of the things, I wasn't applying them in code so I didn't remember.
Fortunately it's pretty simple. Libp2p has a very nice, advanced gossip system that forms sparsely connected graphs with low latency and high message volume efficiency, and there is a simple framework for setting up these gossip networks that basically hides all the complexity and your code simply reads and writes to it as though it was a serial console same as printing to the terminal or sending data over the network. Go is pretty sweet like this, almost every kind of connection in code can be addressed in the same way - open, read, write, close.
I have got all the other pieces ready, the message types, some of the relay logic related to these messages (from the hidden service protocol prototype), I just needed the mechanism for propagation, and the chat examples in the libp2p Github repository are short, sweet and appear to be the exact thing I need, each node writes a message, and every other node eventually receives it.
With the database working, the gates open up to replicating all the protocol tests from their channel simulator form to a localhost-only, and then with all the protocols proven, setting up the app to launch, much of this part is sketched out pretty well by my colleague and sponsor.
So, I think realistically I will have finally made two separate computers connect via this way by the end of this month, and maybe by the end of august the testnet will be running.
Support the Project:
I am on a very minimal income and extra funds will help a lot with some of the infrastructure and keeping all the workers healthy. If you want to send some sats, you can always send them to this account or you can use my Wallet of Satoshi LNURL firstname.lastname@example.org - thanks in advance.
If you have skills in some area of p2p and LN programming, in Golang, and are looking for something interesting to contribute to, you are most welcome to pop into our telegram https://t.me/+lMrozLWIho1mYWY0 - I expect I will need to explain some things, give a primer on the layout and of course critique and analyse any of the original algorithms in it for security and performance problems.
Thanks to everyone who has supported this project so far.
Hope to see you in the Telegram chat soon!