Libp2p is a network layer framework that allows you to write decentralized peer-to-peer applications. It's being used for P2P communication on various projects such as Eth2.0, Polkadot, and IPFS. It is expected that libp2p will play a fundamental role in the future of web3.

What it does

go-libp2p-noise extends the go-libp2p networking stack to enable secure channel handshakes built with the Noise Protocol Framework. This enables a new, lightweight way for peers in Eth2.0 and other networks to securely communicate.

The Noise Protocol Framework is a lightweight cryptographic framework that was tentatively picked by Ethereum 2.0 for its cryptographic handshakes on mainnet (see Ethereum 2.0 networking spec). The framework allows for customizable Diffie-Hellman key exchanges, using the crypto primitives that make sense for a given user.

How we built it

We studied the Noise Protocol spec and implemented the Libp2p Noise Spec. We then generated implementation code for specific handshake patterns from noise explorer, and wrote the implementation and tests in Golang. Our module conforms to the existing go-libp2p SecureTransport interface, making it easily swappable with other secure transport modules.

Challenges we ran into

  • Existing libraries are not written to specification, lacking many features

Accomplishments that we're proud of

  • Contributing to Libp2p <3

What we learned

  • The Noise Protocol! XX, IK, XXfallback... e, s, es, se. Diffie-hellman key exchange.
  • libp2p team is really generous with their time.

Presentation link

Built With

  • go
  • libp2p
  • noise
Share this project: