TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Recommendations for Peer to Peer Frameworks?

276 pointsby zilchersabout 7 years ago
I&#x27;m looking for peer to peer framework recommendations to build a distributed app. In particular, a framework that supports seeds and peer discovery, message passing, maybe firewall &#x2F; UPNP support, etc.<p>I&#x27;m not particular about language (Java, Go, Javascript, etc), since it&#x27;s for a new project. I found this thread from 2016 (https:&#x2F;&#x2F;news.ycombinator.com&#x2F;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.<p>Some of the solutions form the other thread or that I&#x27;ve found:<p>- Smokesignal (Javascript &#x2F; Node, not updated in &gt;10 months) https:&#x2F;&#x2F;github.com&#x2F;marcelklehr&#x2F;smokesignal<p>- ZeroTier: https:&#x2F;&#x2F;www.zerotier.com&#x2F;product-netcon.shtml<p>- Maki: https:&#x2F;&#x2F;maki.io<p>- Telehash: http:&#x2F;&#x2F;telehash.org&#x2F;<p>- A whole host of blockchain projects, Bitcoin, Ethereum, HyperLedger, Scorex (Scala blockchain)<p>Bitcoin is an interesting option, it certainly has a large user base and is well tested and secure code, but forking it has it&#x27;s own set of issues.

30 comments

0XAFFEabout 7 years ago
Maybe Scuttlebutt? <a href="https:&#x2F;&#x2F;www.scuttlebutt.nz&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.scuttlebutt.nz&#x2F;</a><p>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.
评论 #16788555 未加载
评论 #16787277 未加载
rauljordanabout 7 years ago
Look into libp2p created by the Protocol Labs team (created IPFS). We&#x27;re thinking of moving to this framework internally at Ethereum.
评论 #16786433 未加载
评论 #16786403 未加载
评论 #16789335 未加载
indescions_2018about 7 years ago
Awesome List of P2P resources:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;kgryte&#x2F;awesome-peer-to-peer" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;kgryte&#x2F;awesome-peer-to-peer</a><p>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:<p><a href="https:&#x2F;&#x2F;www.peer5.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.peer5.com&#x2F;</a>
评论 #16786376 未加载
shpxabout 7 years ago
<a href="https:&#x2F;&#x2F;urbit.org&#x2F;docs&#x2F;" rel="nofollow">https:&#x2F;&#x2F;urbit.org&#x2F;docs&#x2F;</a><p>The idea with urbit (amongst others, it&#x27;s a big system) is for everyone to have a personal server that&#x27;s easier to administrate than a linux server. It&#x27;s been posted a bunch of times <a href="https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=urbit&amp;sort=byPopularity&amp;prefix&amp;page=0&amp;dateRange=all&amp;type=all" rel="nofollow">https:&#x2F;&#x2F;hn.algolia.com&#x2F;?query=urbit&amp;sort=byPopularity&amp;prefix...</a><p>I&#x27;ve also heard about <a href="https:&#x2F;&#x2F;zeronet.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;zeronet.io&#x2F;</a> and <a href="https:&#x2F;&#x2F;beakerbrowser.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;beakerbrowser.com&#x2F;</a>
petegordonabout 7 years ago
I’m curious what your goal is. Do you want the complete immutability of transactions like bitcoin&#x2F;blockchain; or do you want the peer&#x2F;seed capability like BitTorrent and IPFS with a DHT (Kademlia)? I’d be interested in seeing a good list of the technology choices that can make up a P2P project if anyone knows of one, please share.<p>But you definitely should checkout IPFS and Kademlia.
mcjiggerlogabout 7 years ago
Maybe check out Dat[0] - especially useful if you need some kind of distributed data store. The main implementation is in Javascript.<p>[0] <a href="https:&#x2F;&#x2F;datproject.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;datproject.org&#x2F;</a>
评论 #16789151 未加载
no_identdabout 7 years ago
The 181 pages long GNUnet dissertation very recently got released: <a href="https:&#x2F;&#x2F;grothoff.org&#x2F;christian&#x2F;habil.pdf" rel="nofollow">https:&#x2F;&#x2F;grothoff.org&#x2F;christian&#x2F;habil.pdf</a><p>I&#x27;d strongly recommend going for GNUnet, nobody takes me serious when I say this, but it WILL surplant IP eventually.
评论 #16790783 未加载
评论 #16786637 未加载
评论 #16789089 未加载
评论 #16786590 未加载
JamesLeonisabout 7 years ago
The WebTorrent Project [1] has a whole suite of tools for decentralized applications based around BitTorrent. It&#x27;s not a framework per-se, but it breaks up the protocol into libraries for your use.<p>If you&#x27;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&#x27;m using the latter functionality for a demo to replace password as the security mechanism.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;webtorrent" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;webtorrent</a>
jeswinabout 7 years ago
Secure Scuttlebutt. It&#x27;s probably the only one seeing everyday use to get things done. Patchwork, the flagship app is as good as Facebook&#x2F;Twitter. Scuttlers often use git over SSB, even.<p>What SSB gets right and the others don&#x27;t, is the incentive to mirror or replicate. Virtual currency is a weak incentive in an early stage network - but friendship isn&#x27;t; you mirror your friends&#x27; data.<p>The basic API to program the dapp can be seen here - <a href="http:&#x2F;&#x2F;scuttlebot.io&#x2F;" rel="nofollow">http:&#x2F;&#x2F;scuttlebot.io&#x2F;</a> But for more advanced uses see <a href="https:&#x2F;&#x2F;youtu.be&#x2F;f_baWUW4R8Y" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;f_baWUW4R8Y</a>
alexmorleyabout 7 years ago
Maybe checkout the dat project <a href="https:&#x2F;&#x2F;datproject.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;datproject.org&#x2F;</a> which is whats used by BeakerBroswer etc.
DyslexicAtheistabout 7 years ago
Kademlia DHT:<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kademlia" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Kademlia</a><p><a href="https:&#x2F;&#x2F;pdos.csail.mit.edu&#x2F;~petar&#x2F;papers&#x2F;maymounkov-kademlia-lncs.pdf" rel="nofollow">https:&#x2F;&#x2F;pdos.csail.mit.edu&#x2F;~petar&#x2F;papers&#x2F;maymounkov-kademlia...</a>
Dowwieabout 7 years ago
How about IPFS? OpenBazaar is an IPFS case study. They recently released a revamped v2 built with Go.
评论 #16786094 未加载
评论 #16786028 未加载
评论 #16786379 未加载
povilasbabout 7 years ago
Another project you might find useful, that we at <a href="https:&#x2F;&#x2F;www.maidsafe.net" rel="nofollow">https:&#x2F;&#x2F;www.maidsafe.net</a> are actively working on, is <a href="https:&#x2F;&#x2F;github.com&#x2F;maidsafe&#x2F;crust&#x2F;" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;maidsafe&#x2F;crust&#x2F;</a>.<p>It&#x27;s a generic peer-to-peer networking library written in Rust.<p><pre><code> * it connects two peers together * various NAT traversal techniques are implemented: hole punching, UPnP&#x2F;IGD, etc. * it supports both TCP and UDP. In case of UDP it uses uTP: http:&#x2F;&#x2F;www.bittorrent.org&#x2F;beps&#x2F;bep_0029.html * all messages are encrypted * it implements automatic peer discovery on LAN * it caches it&#x27;s previous connections and is able to reuse them in the future * etc.</code></pre>
monocasaabout 7 years ago
The virtual synchrony protocols don&#x27;t get enough love. Conceptually, they&#x27;re sort of like if you performed PAXOS to determine ordering for a distributed finite state machine. Let&#x27;s you build all sorts of distributed applications where you trust the nodes.<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Virtual_synchrony" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Virtual_synchrony</a><p><a href="http:&#x2F;&#x2F;www.jgroups.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.jgroups.org&#x2F;</a><p><a href="https:&#x2F;&#x2F;archive.codeplex.com&#x2F;?p=vsync" rel="nofollow">https:&#x2F;&#x2F;archive.codeplex.com&#x2F;?p=vsync</a>
billyloabout 7 years ago
I am using <a href="https:&#x2F;&#x2F;hypelabs.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;hypelabs.io&#x2F;</a><p>Pretty good for small payloads.
wslhabout 7 years ago
Re blockchain technologies: while there is an obvious intersection between the world of blockchain and P2P, blockchain technologies are slow because BFT adds many requirements to the game. Basically blockchain technologies use P2P to reach a common state and this could not be necessary in your use case.<p>You can take a look at OpenBazaar and Particl for P2P implementations.
sovaabout 7 years ago
ZeroMQ <a href="http:&#x2F;&#x2F;zguide.zeromq.org&#x2F;py:all" rel="nofollow">http:&#x2F;&#x2F;zguide.zeromq.org&#x2F;py:all</a> ... &quot;In One Hundred Words: ZeroMQ (also known as ØMQ, 0MQ, or zmq) looks like an embeddable networking library but acts like a concurrency framework. It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply. It&#x27;s fast enough to be the fabric for clustered products. Its asynchronous I&#x2F;O model gives you scalable multicore applications, built as asynchronous message-processing tasks. It has a score of language APIs and runs on most operating systems. ZeroMQ is from iMatix and is LGPLv3 open source.&quot;
doomjunkyabout 7 years ago
Peer Name Resolution Protocol (PNRP)<p>- Developed by Microsoft<p>- Open Specification<p>- DHT-based<p>- IPv6 only<p>- Windows support since Windows XP SP 3<p>- .NET support since .NET Framework 3.5 (System.Net.PeerToPeer)<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Peer_Name_Resolution_Protocol" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Peer_Name_Resolution_Protocol</a><p>[2]: <a href="https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;aa371699.aspx" rel="nofollow">https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;aa371699.aspx</a> &quot;PNRP Namespace Provider API&quot;<p>[3]: <a href="https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;bb726971.aspx" rel="nofollow">https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;bb726971.aspx</a> &quot;Peer Name Resolution Protocol&quot;
评论 #16798033 未加载
hapninabout 7 years ago
Blockstack looks like it would fit here:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;blockstack&#x2F;blockstack&#x2F;blob&#x2F;master&#x2F;README.md" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;blockstack&#x2F;blockstack&#x2F;blob&#x2F;master&#x2F;README....</a>
评论 #16787909 未加载
smaddockabout 7 years ago
If you plan on having any collaborative editing features, Yjs [1] is a p2p framework utilizing CRDTs with support for IPFS.<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;y-js&#x2F;yjs" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;y-js&#x2F;yjs</a>
devxpyabout 7 years ago
I recently discovered zyre. Its from the same guy that brought us the wonderful zeromq library<p>While it does a lot of the connection and communication part, it lacks a way to bypass nat routers.<p>Here is a book on zyre <a href="http:&#x2F;&#x2F;zguide.zeromq.org&#x2F;php:chapter8" rel="nofollow">http:&#x2F;&#x2F;zguide.zeromq.org&#x2F;php:chapter8</a><p>I also found this thing called pwnat which bypasses nat routers without the need for UDP hole punching !<p><a href="https:&#x2F;&#x2F;github.com&#x2F;samyk&#x2F;pwnat" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;samyk&#x2F;pwnat</a><p>I feel like if someone made a high level wrapper combining these two, we can have a very good framework.
triblerabout 7 years ago
&gt; supports seeds and peer discovery, message passing, maybe firewall &#x2F; UPNP support, etc.<p>Our audacious &#x27;IPv8&#x27; work is now deployed live. Might fit you needs. Includes above features in a low-complexity approach. <a href="https:&#x2F;&#x2F;github.com&#x2F;Tribler&#x2F;py-ipv8" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Tribler&#x2F;py-ipv8</a> Our fresh IETF Internet Standard draft of this work: <a href="https:&#x2F;&#x2F;tools.ietf.org&#x2F;html&#x2F;draft-pouwelse-trustchain-00" rel="nofollow">https:&#x2F;&#x2F;tools.ietf.org&#x2F;html&#x2F;draft-pouwelse-trustchain-00</a>
tomp2pabout 7 years ago
TomP2P (<a href="https:&#x2F;&#x2F;tomp2p.net&#x2F;" rel="nofollow">https:&#x2F;&#x2F;tomp2p.net&#x2F;</a>) is a library handling firewall &#x2F; UPNP support, however, the focus is academic&#x2F;experimental.
mayamatrixabout 7 years ago
Worth having a look into the Holochain framework:<p><a href="https:&#x2F;&#x2F;holochain.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;holochain.org&#x2F;</a><p>Depending on the application(s) you have in mind.
评论 #16792144 未加载
mempkoabout 7 years ago
How about something [completely different](<a href="http:&#x2F;&#x2F;firestr.com" rel="nofollow">http:&#x2F;&#x2F;firestr.com</a>)
martindaleabout 7 years ago
Maki 0.3 will include components from Fabric: <a href="https:&#x2F;&#x2F;fabric.fm" rel="nofollow">https:&#x2F;&#x2F;fabric.fm</a> — automatically available to anyone upgrading from 0.2. :)
dnomadabout 7 years ago
I2P works well enough.
w3newsabout 7 years ago
Check this great talk: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;izQFMADw70w" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;izQFMADw70w</a>
cjbprimeabout 7 years ago
WebTorrent.
adamnemecekabout 7 years ago
Look into crdt it’s the shit for collaborative editing (idk if that’s what you ares looking for tho).
评论 #16786045 未加载
评论 #16786016 未加载