iroh؛ اتصال مستقیم بین دستگاهها با کلید عمومی
خلاصهٔ کاملتر
iroh یه کتابخونهٔ متنباز (به زبان Rust) برای شبکهسازیه که یه ایدهٔ ساده رو پیاده میکنه: بهجای اینکه آدرس شبکه رو بدونی، با کلید عمومیِ یه دستگاه بهش وصل میشی. تو میگی «به اون گوشی وصل شو» و iroh خودش سریعترین اتصال رو پیدا و حفظ میکنه، مستقل از اینکه اون دستگاه کجا باشه.
سریعترین مسیر یه اتصال مستقیمه، برای همین iroh اول سعی میکنه با تکنیک hole-punching مستقیم وصل شه؛ اگه نشد، به یه اکوسیستم بازِ سرورهای relay عمومی برمیگرده. این اتصالها روی QUIC ساخته میشن، پس رمزنگاریِ احرازهویتشده، استریمهای همزمان و ترنسپورت datagram رو بهصورت پیشفرض داری و درگیر head-of-line-blocking نمیشی.
استفاده از iroh تو Rust سادهست؛ با cargo add iroh نصبش میکنی و سمت اتصالدهنده تقریباً اینشکلیه:
let endpoint = Endpoint::bind().await?;
let conn = endpoint.connect(addr, ALPN).await?;
let (mut send, mut recv) = conn.open_bi().await?;
send.write_all(b"Hello, world!").await?;
send.finish()?;
let response = recv.read_to_end(1000).await?;اینجا یه endpoint میسازی، با آدرس و ALPN وصل میشی، یه استریم دوطرفهٔ QUIC باز میکنی و داده میفرستی؛ سمت پذیرنده هم یه Router با یه ProtocolHandler ساده داده رو echo میکنه.
بهجای نوشتن پروتکل از صفر، میتونی از پروتکلهای آمادهٔ روی iroh استفاده کنی: iroh-blobs برای انتقال محتوامحورِ داده بر پایهٔ BLAKE3 (از چند کیلوبایت تا چند ترابایت)، iroh-gossip برای شبکههای pub/sub که رو یه گوشیِ معمولی هم مقیاس میگیرن، و iroh-docs برای یه key-value store با سازگاریِ نهایی.
مخزن iroh چند crate رو کنار هم داره: خودِ iroh برای hole-punching و ارتباط با relayها، iroh-relay که همون کدِ production سرورهای relay عمومیه، iroh-base برای تایپهای پایه، و iroh-dns-server برای lookup آدرسِ EndpointIdها. برای زبانهای دیگه هم iroh-ffi باندینگ FFI رو فراهم میکنه و کل پروژه تحت لایسنس دوگانهٔ MIT/Apache-2.0 هست.
نکات کلیدی:
- iroh بهت اجازه میده با کلید عمومی به یه دستگاه وصل شی، نه با آدرس شبکه.
- اول hole-punching برای اتصال مستقیم، بعد fallback به relayهای عمومی.
- روی QUIC ساخته شده: رمزنگاری، استریم همزمان و بدون head-of-line-blocking.
- پروتکلهای آماده مثل iroh-blobs، iroh-gossip و iroh-docs روش سوارن.




