feat(dht): Phase 2 engine — real iroh-blobs provider behind iroh-swarm
Pulls iroh 1.0 + iroh-blobs 0.103 as OPTIONAL deps under the iroh-swarm feature and implements a real BlobProvider over them. Verified: the full iroh QUIC dep tree (260 pkgs) resolves and compiles against the pinned bitcoin/nostr-sdk/reqwest-rustls stack; the provider compiles against the 0.103/1.0 API. - swarm/iroh_provider.rs: IrohProvider::new binds a QUIC Endpoint, opens a persistent FsStore (data_dir/iroh-blobs), and serves blobs via the iroh-blobs protocol/Router — a node that fetches also SEEDS. try_fetch maps ContentDigest -> iroh Hash, asks discovery for seed EndpointIds, then downloader.download(hash, providers) (range-verified) + export to staging. - ProviderDiscovery trait: the seam Phase 3 (signed Nostr advertisement events) fills. discovery=None -> no seeds -> origin-only, so enabling the feature is never worse than today. - Default build untouched: iroh is optional, the module is cfg-gated, and providers() stays empty until Phase 3 wires discovery in. Build: cargo build --features iroh-swarm succeeds (dev). Default build + 44 swarm/update/content_hash/blobs tests unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2523c9e3dd
commit
082946aa30
@@ -17,7 +17,7 @@ default = []
|
||||
# is empty and every fetch goes straight to the origin HTTP path (today's
|
||||
# behaviour). Attach the optional iroh / iroh-blobs deps to this feature when
|
||||
# wiring the IrohProvider.
|
||||
iroh-swarm = []
|
||||
iroh-swarm = ["dep:iroh", "dep:iroh-blobs"]
|
||||
|
||||
[dependencies]
|
||||
# Core dependencies
|
||||
@@ -117,6 +117,12 @@ sd-notify = "0.4"
|
||||
# Trait objects for async methods (container orchestrator trait, Step 4)
|
||||
async-trait = "0.1"
|
||||
|
||||
# DHT Phase 2: iroh-blobs peer swarm engine. OPTIONAL — only pulled in by the
|
||||
# `iroh-swarm` feature (off by default). Heavy QUIC dep tree; kept behind the
|
||||
# flag so the default fleet build is unaffected until the PoC is measured.
|
||||
iroh = { version = "1", optional = true }
|
||||
iroh-blobs = { version = "0.103", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tokio-test = "0.4"
|
||||
tempfile = "3.10"
|
||||
|
||||
Reference in New Issue
Block a user