Skip to main content

Crate pkarr

Crate pkarr 

Source
Expand description

§Pkarr

Rust implementation of Pkarr for publishing and resolving DNS packets over Mainline DHT.

§Documentation

§Features

§Runtime Support

  • Asynchronous by Default: Built on async/await for optimal performance
  • Runtime Agnostic: Compatible with non-Tokio runtimes via async_compat

§WebAssembly

  • Browser Environment: Designed for JavaScript/Wasm integration
  • Relay Communication: Uses browser’s Fetch API for relay calls
  • Limitations:
    • Not compatible with WASI
    • Cannot use WASI bindings for direct DHT access

§Feature flags

  • dht (enabled by default) — Enable the Client with mainline support.

  • relays (enabled by default) — Enables Client with Relays.

  • lmdb-cache — Use the LmdbCache implementation.

  • endpoints — Enables endpoints spec.

    Only available if the client module is enabled.

  • tls — Enables tls spec.

    Only available if the client module is enabled.

  • reqwest-resolve — Use reqwest::dns::Resolve trait implementation for Client.

    Only available if the client module is enabled.

  • reqwest-builder — Create a reqwest::ClientBuilder from Client.

    Only available if the client module is enabled.

  • full-client (enabled by default) — Use all features

  • extra — Extra features that might benefit most but not all developers building apps using Pkarr.

    Only available if the client module is enabled.

  • full — Use all features including the full-client and extra features.

  • __client (enabled by default) — Enable client dependencies.

    Does not enable anything on its own you need to enable either dht and/or relays to enable the Client.

    Except in WASM where you have to enable relays, while dht does not do anything.

Re-exports§

pub use mainline;
pub use simple_dns as dns;
pub use types::*;

Modules§

dht
Mainline DHT integration.
errors
Exported errors
extra
Extra features that might benefit most but not all developers building apps using Pkarr.
relay_client
Single-relay HTTP client.
types
Protocol data types.

Structs§

Client
Pkarr client for publishing and resolving SignedPackets over the configured networks.
ClientBuilder
A builder for constructing a Client with custom configuration.
InMemoryCache
A thread-safe wrapper around lru::LruCache.
Timestamp
Strictly monotonic timestamp since SystemTime::UNIX_EPOCH in microseconds.

Constants§

DEFAULT_CACHE_SIZE
Default cache size: 1000
DEFAULT_MAXIMUM_TTL
Default maximum TTL: 24 hours.
DEFAULT_MINIMUM_TTL
Default minimum TTL: 5 minutes.
DEFAULT_RELAYS
Default Relays.
DEFAULT_REQUEST_TIMEOUT
Default request timeout for DHT and relay requests.
PKARR_DHT_STORED_NODES
Relay response header carrying the number of DHT nodes that acknowledged storing a published packet.
PKARR_INVALID_SIGNED_PACKET_SEQ
Relay response header carrying the mutable item sequence number when the DHT has a newer mutable item that is not a valid signed packet for a key.

Traits§

Cache
A cache for SignedPackets used by a Pkarr crate::Client.

Type Aliases§

CacheKey
The SHA-1 hash of the crate::PublicKey used as the key in Cache.