tetsy-libp2p-relay

Implementation of the libp2p circuit relay specification.

Example

```rust

use tetsylibp2pcore::transport::memory::MemoryTransport;

use tetsylibp2prelay::{RelayConfig, newtransportand_behaviour};

use tetsylibp2pswarm::Swarm;

use tetsylibp2pcore::{identity, Multiaddr, multiaddr::Protocol, PeerId, upgrade, Transport};

use libp2p_remux::RemuxConfig;

use plaintext::PlainText2Config;

use std::convert::TryInto;

use std::str::FromStr;

#

let localkey = identity::Keypair::generateed25519();

let localpublickey = local_key.public();

let localpeerid = localpublickey.clone().intopeerid();

let plain = PlainText2Config {

localpublickey: localpublickey.clone(),

};

# let (relaytransport, relaybehaviour) = newtransportand_behaviour( RelayConfig::default(), MemoryTransport::default(), );

let transport = relay_transport .upgrade(upgrade::Version::V1) .authenticate(plain) .multiplex(RemuxConfig::default()) .boxed();

let mut swarm = Swarm::new(transport, relaybehaviour, localpeer_id);

let relayaddr = Multiaddr::fromstr("/memory/1234").unwrap() .with(Protocol::P2p(PeerId::random().into())) .with(Protocol::P2pCircuit); let dstaddr = relayaddr.clone().with(Protocol::Memory(5678));

// Listen for incoming connections via relay node (1234). Swarm::listenon(&mut swarm, relayaddr).unwrap();

// Dial node (5678) via relay node (1234). Swarm::dialaddr(&mut swarm, dstaddr).unwrap(); ```

Terminology

Entities

Messages