显示包…

1 个不稳定版本

0.1.0 2021年3月12日
0.0.0 2021年3月11日

#6#tetsy-libp2p


用于 tetsy-libp2p

MIT 许可证

795KB
14K SLoC

tetsy-libp2p-relay

libp2p电路中继规范的实现。

示例

# use tetsy_libp2p_core::transport::memory::MemoryTransport;
# use tetsy_libp2p_relay::{RelayConfig, new_transport_and_behaviour};
# use tetsy_libp2p_swarm::Swarm;
# use tetsy_libp2p_core::{identity, Multiaddr, multiaddr::Protocol, PeerId, upgrade, Transport};
# use libp2p_remux::RemuxConfig;
# use plaintext::PlainText2Config;
# use std::convert::TryInto;
# use std::str::FromStr;
#
# let local_key = identity::Keypair::generate_ed25519();
# let local_public_key = local_key.public();
# let local_peer_id = local_public_key.clone().into_peer_id();
# let plain = PlainText2Config {
#     local_public_key: local_public_key.clone(),
# };
#
let (relay_transport, relay_behaviour) = new_transport_and_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, relay_behaviour, local_peer_id);

let relay_addr = Multiaddr::from_str("/memory/1234").unwrap()
    .with(Protocol::P2p(PeerId::random().into()))
    .with(Protocol::P2pCircuit);
let dst_addr = relay_addr.clone().with(Protocol::Memory(5678));

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

// Dial node (5678) via relay node (1234).
Swarm::dial_addr(&mut swarm, dst_addr).unwrap();

术语

实体

  • 来源:通过中继发起连接到目标的节点。

  • 中继:由源节点请求将其转发到目标的节点。

  • 目标:通过中继被源节点接触到的节点。

消息

  • 出站中继请求:源节点发送到中继的请求。

  • 入站中继请求:中继从源节点接收到的请求。

  • 出站目标请求:中继发送到目标的请求。

  • 入站目标请求:目标从中继接收到的请求。

依赖项

~10–15MB
~312K SLoC