by zilchers on 4/8/18, 12:49 PM with 75 comments
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.
by 0XAFFE on 4/8/18, 1:55 PM
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.
by rauljordan on 4/8/18, 1:52 PM
by indescions_2018 on 4/8/18, 2:39 PM
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:
by shpx on 4/8/18, 10:41 PM
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/
by petegordon on 4/8/18, 1:57 PM
But you definitely should checkout IPFS and Kademlia.
by mcjiggerlog on 4/8/18, 2:30 PM
by no_identd on 4/8/18, 3:06 PM
I'd strongly recommend going for GNUnet, nobody takes me serious when I say this, but it WILL surplant IP eventually.
by JamesLeonis on 4/8/18, 7:21 PM
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.
by jeswin on 4/9/18, 2:03 AM
What SSB gets right and the others don't, is the incentive to mirror or replicate. Virtual currency is a weak incentive in an early stage network - but friendship isn't; you mirror your friends' data.
The basic API to program the dapp can be seen here - http://scuttlebot.io/ But for more advanced uses see https://youtu.be/f_baWUW4R8Y
by alexmorley on 4/8/18, 6:25 PM
by DyslexicAtheist on 4/8/18, 1:56 PM
by Dowwie on 4/8/18, 1:17 PM
by povilasb on 4/9/18, 1:12 PM
It's a generic peer-to-peer networking library written in Rust.
* it connects two peers together
* various NAT traversal techniques are implemented: hole punching, UPnP/IGD, etc.
* it supports both TCP and UDP. In case of UDP it uses uTP: http://www.bittorrent.org/beps/bep_0029.html
* all messages are encrypted
* it implements automatic peer discovery on LAN
* it caches it's previous connections and is able to reuse them in the future
* etc.
by monocasa on 4/8/18, 7:23 PM
by billylo on 4/8/18, 1:26 PM
Pretty good for small payloads.
by wslh on 4/8/18, 2:47 PM
You can take a look at OpenBazaar and Particl for P2P implementations.
by sova on 4/9/18, 12:57 AM
by doomjunky on 4/9/18, 8:51 PM
- Developed by Microsoft
- Open Specification
- DHT-based
- IPv6 only
- Windows support since Windows XP SP 3
- .NET support since .NET Framework 3.5 (System.Net.PeerToPeer)
[1]: https://en.wikipedia.org/wiki/Peer_Name_Resolution_Protocol
[2]: https://msdn.microsoft.com/en-us/library/aa371699.aspx "PNRP Namespace Provider API"
[3]: https://msdn.microsoft.com/en-us/library/bb726971.aspx "Peer Name Resolution Protocol"
by hapnin on 4/8/18, 3:25 PM
https://github.com/blockstack/blockstack/blob/master/README....
by smaddock on 4/8/18, 4:59 PM
by devxpy on 4/9/18, 10:26 AM
While it does a lot of the connection and communication part, it lacks a way to bypass nat routers.
Here is a book on zyre http://zguide.zeromq.org/php:chapter8
I also found this thing called pwnat which bypasses nat routers without the need for UDP hole punching !
https://github.com/samyk/pwnat
I feel like if someone made a high level wrapper combining these two, we can have a very good framework.
by tribler on 4/8/18, 4:26 PM
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
by tomp2p on 4/9/18, 12:05 AM
by mayamatrix on 4/9/18, 1:12 AM
Depending on the application(s) you have in mind.
by mempko on 4/8/18, 5:43 PM
by martindale on 4/8/18, 3:36 PM
by dnomad on 4/8/18, 2:04 PM
by w3news on 4/9/18, 4:42 AM
by cjbprime on 4/8/18, 2:42 PM
by adamnemecek on 4/8/18, 1:21 PM