0.0.13 • Published 4 months ago

libp2p-ts v0.0.13

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

libp2p-ts

Simple libp2p client/relay typescript library with messaging based on šŸ‘‰ https://github.com/libp2p/universal-connectivity

Universal-connectivity

Realtime highly decentralised chat app.

libp2p topology

Showcasing libp2p's superpowers in establishing ubiquitous peer-to-peer connectivity in modern programming languages (Go, Rust, TypeScript) and runtimes (Web, native binary).

On top of this strong foundation, it layers a GossipSub: A Secure PubSub Protocol for Unstructured Decentralised P2P Overlays. By analogy, an event broker with distributed brokering, or a distributed PubSub protocol.

This is the gossip event protocol that powers Filecoin and Post-Merge Ethereum.

Some of the cool and cutting-edge transport protocols used by this app are:

  • WebTransport
  • WebRTC
  • WebRTC-direct
  • QUIC
  • TCP

Packages

PackageDescriptionWebTransportWebRTCWebRTC-directQUICTCP
js-peerBrowser Chat Peer in TypeScriptāœ…āœ…āœ…āŒāŒ
go-peerChat peer implemented in Goāœ…āŒāœ…āœ…āœ…
rust-peerChat peer implemented in RustāŒāŒāœ…āœ…āŒ

āœ… - Protocol supported āŒ - Protocol not supported

  • Uses the GossipSub PubSub protocol for decentralised messaging

Connecting to a peer

There are two ways to connect to a peer:

  • With a PeerID using peer routing (adds a step to resolve the multiaddr for the PeerID), using the IPFS/Libp2p DHT, e.g. 12D3KooWLMySi3eEWscUnKmMCYRSXL3obYJ4KNimpShJK6shUy2M
  • With a multiaddr directly (skips the peer routing step), e.g. /ip4/127.0.0.1/udp/64434/webrtc/certhash/uEiA_tkndZQWf7jyFqgCiwH_CqsS7FTWFTb6Px8MPxxT9gQ/p2p/12D3KooWLMySi3eEWscUnKmMCYRSXL3obYJ4KNimpShJK6shUy2M

Using a multiaddr

Load the UI, and enter the multiaddr into the UI. Ensure that it includes the peerID, e.g./ip4/192.168.178.21/udp/61838/quic-v1/webtransport/certhash/uEiCQCALYac4V3LJ2ourLdauXOswIXpIuJ_JNT-8Wavmxyw/certhash/uEiCdYghq5FlXGkVONQXT07CteA16BDyMPI23-0GjA9Ej_w/p2p/12D3KooWF7ovRNBKPxERf6GtUbFdiqJsQviKUb7Z8a2Uuuo6MrDX

Getting started: JS

1. Install dependencies

Run npm install:

cd js-peer
npm i

2. Start Next.js dev server

Start the dev server:

npm run dev

Getting started: Rust

cd rust-peer
cargo run

This will automatically connect you to the bootstrap node running on fly.io.

To explore more advanced configurations if you e.g. want to set up our own network, try:

cargo run -- --help

Getting started: Go

cd go-peer
go run .