Noise: An opinionated, P2P networking stack for decentralized protocols in Go.

This post is outdated! Go here for the latest updates on Noise: https://medium.com/perlin-network/noise-v1-1-2-fearless-decentralized-p2p-networking-in-go-bf3afdd77230

Peer-to-peer (P2P) networking is something that is just damn hard to get right.

The thing is, there has been no standardized solution to developing P2P applications that has been widely adopted by any community; with prior open-sourced attempts seeming like some mangled code pulled out of a poor magicians hat.

As a result, we see a lot of projects going for improper P2P networking solutions such as:

gRPC, which was intended to be used for micro-services. NOT as a networking stack for trustless P2P applications.

which was intended to be used for micro-services. as a networking stack for trustless P2P applications. Consul, Etcd, and even ZooKeeper, which was intended to be used for service discovery in a trusted, centralized network.

And on the other hand, we see hodgepodges of code such as:

libp2p, which feels oddly modular and far too verbose in all the wrong ways as though it was ripped out of IPFS.

In response, we now have a wide array of projects in the decentralized space, rolling out with their own immature networking stacks that are festered with bugs and low-level detail that is making the development of decentralized apps/cryptographic protocols just a huge conglomerated mess.

That is why we‘re releasing our own opinionated solution to this problem by open-sourcing our first project under Perlin called Noise.