New gossip-like protocol for digitally signed datasets

Posted by EternityForest 
This forum is currently read only. You can not log in or make any changes. This is a temporary situation.
Now, this forum is in read-only mode. You find details Details hereContinue on /r/PirateBox
New gossip-like protocol for digitally signed datasets
February 18, 2019 07:11AM
Hey guys!

So recently I've been working on a project called Drayer:

[github.com] alpha total mess repo), which is meant to efficiently publish updates to a set of records, which have a key, a value, and a type, so they can represent social media posts, files, config options for the stream itself, etc.

Each record is digitally signed and references the last modified record in the chain(Usually), so you don't get missing records, and anyone can mirror it and you always know the records are real.

The chain isn't a true immutable chain, you can freely delete and update stuff without keeping *any* old data, through garbage-collection like methods. We can "patch" the chain to get rid of old data, and we don't have to keep track of this patch as an update we need to tell everyone about, because the clients request it when they detect that a new record would break the chain. Fairly complicated, but seems to work reasonably well(There's more on how it works in the repo).

If you enable it, when you get a new record, you also announce it to the LAN, and you periodically poll for new records every few hours, plus I'm working on fixed update server URLs embedded in the stream itself, and Bittorent DHT discovery.

Oh yeah, and every node is an HTTP server, you can make a traditional site just by putting files in a stream and going to the URL for any node that has it.

Having just found out about Piratebox, I think it would be pretty cool to have something like this on one.

You have a stream you want to share(Acutally just a sqlite file), so you upload it to the piratebox. Piratebox now knows to listen for updates, and occasionally poll.

Someone else comes it with a newer version of that stream, and the piratebox asks for a copy of all the new stuff(And authenticates it against the streams public key).

Someone else comes by, wants to read a Wiki page(Or whatever is in the stream), so they go to pirateboxdomain/<pubkey of the stream>/webAccess/page.html.

Another person comes by with a traveling piratebox, puts it on the same network, and they can sync their copy with the new stuff.

I think this would be particularly useful for Wikipedia mirrors. It's like a sneakernet, but automated and authenticated.

Any opinions? Am I on the right track developing this?