Expand description
WASI 0.2 sockets transport for rust-libp2p.
This crate implements libp2p_core::Transport over the wasi:sockets/tcp interface,
enabling rust-libp2p applications to run as Wasm Components on any WASI 0.2 host
(Wasmtime, Spin, jco, Wasmer) without modification to the rest of the libp2p stack.
§Supported multiaddrs
/ip4/<addr>/tcp/<port>/ip4/<addr>/tcp/<port>/p2p/<peer-id>/ip6/<addr>/tcp/<port>/ip6/<addr>/tcp/<port>/p2p/<peer-id>
§Not supported
/dns4,/dns6,/dnsaddr— DNS resolution viawasi:sockets/ip-name-lookupis a planned follow-up./quic-v1,/ws,/wss,/webrtc,/p2p-circuit— out of scope.- UDP — out of scope for v0.1.
§Quick start
use libp2p_wasi_sockets::WasiTcpTransport;
let transport = WasiTcpTransport::default();Build and run under Wasmtime:
cargo build --release --target wasm32-wasip2
wasmtime run -S inherit-network ./target/wasm32-wasip2/release/my_app.wasmIf you omit -S inherit-network, all dials will fail with
Error::AccessDenied — Wasmtime denies all outbound connections by default.
Structs§
- Config
- Configuration for
WasiTcpTransport. - Wasi
TcpStream - A bidirectional TCP byte-stream wrapping
wstd::net::TcpStream. - Wasi
TcpTransport - A libp2p transport backed by
wasi:sockets/tcp.