Ask HN: Recommendations for Peer to Peer Frameworks?
I'm not particular about language (Java, Go, Javascript, etc), since it's for a new project. I found this thread from 2016 (https://news.ycombinator.com/item?id=11145691), it had some interesting recommendations, but quite a few were out of date, and with the big push to distributed apps nowadays, I thought it might be a good time to readdress the topic.
Some of the solutions form the other thread or that I've found:
- Smokesignal (Javascript / Node, not updated in >10 months) https://github.com/marcelklehr/smokesignal
- ZeroTier: https://www.zerotier.com/product-netcon.shtml
- Maki: https://maki.io
- Telehash: http://telehash.org/
- A whole host of blockchain projects, Bitcoin, Ethereum, HyperLedger, Scorex (Scala blockchain)
Bitcoin is an interesting option, it certainly has a large user base and is well tested and secure code, but forking it has it's own set of issues.
77 comments
[ 3.0 ms ] story [ 149 ms ] threadWe found IPFS in general to be awesome software that just wasn't quite ready for production.
There's IPFS-cluster[0] but that's still in capital-letters ALPHA.
https://github.com/ipfs/ipfs-cluster
EDIT: I'm referring to the JS version here.
We've switched the default browser-to-browser transport in js-libp2p to a websockets relay recently, so you should give it another try.
There were extra scripts and setup. Overall moving off simplified our stack, so it was probably a good move despite libp2p's crashing.
Could be totally fixed by now for all I know.
That said, it was believed that most Protocol Labs resources were/would be devoted to Filecoin, which is probably a safe bet.
Pretty good for small payloads.
If you end up rolling your own, I found js to have the most building blocks (pmp and upnp libraries).
Why not GNUnet? Check the recently released 181 pages long dissertation on it:
https://grothoff.org/christian/habil.pdf
https://pdfs.semanticscholar.org/153d/578869863450766a870727...
Previous Hacker News discussion here: https://news.ycombinator.com/item?id=15877908
> The core of Ethereum will be released under the most liberal of licenses. This reflects our desire to have Ethereum used in as many diverse environments as possible, even those which, for various reasons can require modifications or augmentations to the software which cannot be released to the public.
https://github.com/ethereum/wiki/wiki/Licensing
Scuttlebutt is advertised as a social network, but in core it is an eternal distributed log. You can pass either public or private messages and assets around.
https://en.wikipedia.org/wiki/Kademlia
https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia...
But you definitely should checkout IPFS and Kademlia.
[0] https://datproject.org/
https://github.com/kgryte/awesome-peer-to-peer
Personal bias tilts to web tech. WebRTC will require you to centrally implement all your peer broker and logic. But take a look at something like Peer5 Video CDN to appreciate scalability:
https://www.peer5.com/
We solve the problem of distributing HLS/DASH delivery over large p2p swarms and scaling video. Doesn't sound like it could work for OP.
Thanks a lot for keeping us in mind though :)
You can take a look at OpenBazaar and Particl for P2P implementations.
I'd strongly recommend going for GNUnet, nobody takes me serious when I say this, but it WILL surplant IP eventually.
Previous Hacker News discussion here: https://news.ycombinator.com/item?id=15877908
The painful move from IPv4 to IPv6 suggests that this is unlikely. More likely is an overlay over IP, TCP, or even HTTPS.
GNUnet can function as an overlay and an _underlay_ simultaneously, quoting from the dissertation:
> GNUnet is an overlay network, as it is initially supposed to primarily operate over the existing Internet network. However, GNUnet does not assume that this is always the case. For example, GNUnet can also operate directly over WLAN or Bluetooth to create an ad-hoc wireless mesh network, and with the GNUnet “PT/VPN” subsystems we can run TCP/IP over GNUnet. So in this configuration, GNUnet would be an underlay network, a bit like MPLS or B.A.T.M.A.N. [NAL07]. In reality, we in fact expect to see both at the same time: some peers will run over the existing Internet, while others may connect to GNUnet on Layer 2.
https://github.com/blockstack/blockstack/blob/master/README....
Our audacious 'IPv8' work is now deployed live. Might fit you needs. Includes above features in a low-complexity approach. https://github.com/Tribler/py-ipv8 Our fresh IETF Internet Standard draft of this work: https://tools.ietf.org/html/draft-pouwelse-trustchain-00
[1] https://github.com/y-js/yjs
If you're interested in Ethereum, it has other non-blockchain technologies that you can use for your apps. It has the Swarm network for storing bits of data, the Whisper network for chat and messaging, as well as Public-Key signing to verify messages. I'm using the latter functionality for a demo to replace password as the security mechanism.
[1]: https://github.com/webtorrent
https://en.wikipedia.org/wiki/Virtual_synchrony
http://www.jgroups.org/
https://archive.codeplex.com/?p=vsync
The idea with urbit (amongst others, it's a big system) is for everyone to have a personal server that's easier to administrate than a linux server. It's been posted a bunch of times https://hn.algolia.com/?query=urbit&sort=byPopularity&prefix...
I've also heard about https://zeronet.io/ and https://beakerbrowser.com/