feat!: factor DHT rendezvous into iroh-gossip-rendezvous 0.1
The partition-healing / DHT-rendezvous algorithm that used to live in `src/gossip.rs` is now its own crate, published as `iroh-gossip-rendezvous` 0.1.0. Bridge depends on it for swarm discovery; the 760-line gossip module shrinks to ~75 lines of glue. `dht-partition-healing.md` is reduced to a pointer at the new crate's `PROTOCOL.md` — the normative spec moved with the code. ### Dependency changes - **New:** `iroh-gossip-rendezvous = "0.1"` (path + version for local dev; publish strips the path). - **Bumped:** `iroh` and `iroh-gossip` 0.97 → 0.98 (major). - **Removed:** direct deps on `mainline`, `sha2`, `zeroize` — all now transitive via `iroh-gossip-rendezvous`. - `donglora-client` spec loosened from `"1.0.0"` to `"1"` so patch and minor releases of the client propagate automatically. BREAKING CHANGE: any direct users of `bridge::gossip` internals relied on the in-bridge partition-healing types that have moved. Import from `iroh_gossip_rendezvous::…` instead.
This commit is contained in:
7 files changed
+813
-1032
No files matched your search
+4
-8
@@ -10,7 +10,6 @@ use tokio::sync::mpsc;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
use tracing::{info, warn};
|
||||
|
||||
use crate::gossip::PassphraseKeys;
|
||||
use crate::rate_limit::RateLimiter;
|
||||
use crate::router::Stats;
|
||||
|
||||
@@ -66,7 +65,7 @@ async fn main() -> Result<()> {
|
||||
setup_logging(cli.log_only, &cfg);
|
||||
|
||||
// Ephemeral identity — fresh keypair each launch.
|
||||
let secret_key = SecretKey::generate(&mut rand::rng());
|
||||
let secret_key = SecretKey::generate();
|
||||
let node_id = secret_key.public();
|
||||
info!("donglora-bridge starting, ephemeral id: {}", node_id.fmt_short());
|
||||
|
||||
@@ -74,10 +73,6 @@ async fn main() -> Result<()> {
|
||||
let radio_config = cfg.radio.to_lora_config()?;
|
||||
let retry_policy = cfg.tx.to_retry_policy()?;
|
||||
|
||||
// Derive passphrase keys.
|
||||
let keys = PassphraseKeys::derive(&cfg.bridge.passphrase);
|
||||
info!("topic: {}", hex::encode(&keys.topic_id.as_bytes()[..8]));
|
||||
|
||||
// Create rate limiter.
|
||||
let cr_denom: u8 = match radio_config.cr {
|
||||
donglora_client::LoRaCodingRate::Cr4_5 => 5,
|
||||
@@ -94,8 +89,9 @@ async fn main() -> Result<()> {
|
||||
);
|
||||
info!("rate limiter: {:.1} pps", rate_limiter.rate_pps());
|
||||
|
||||
// Create gossip network.
|
||||
let (swarm, gossip_event_rx, gossip_frame_tx) = gossip::Gossip::new(secret_key, &keys).await?;
|
||||
// Create gossip network + DHT rendezvous.
|
||||
let (swarm, gossip_event_rx, gossip_frame_tx) =
|
||||
gossip::Gossip::new(secret_key, &cfg.bridge.passphrase).await?;
|
||||
let swarm = Arc::new(swarm);
|
||||
|
||||
// Start radio.
|
||||
|
||||
Reference in new issue
Block a user