Iroh 走到 1.0:四年重写与那些没做进版本里的功能
来源:iroh.computer — 2026-10-15
📋 概述
Iroh 团队用一篇复盘讲完四年从 IPFS 兼容实现到 1.0 的取舍过程。项目最初是 Rust 版 IPFS,目标设备是手机这类资源受限终端;但因为一个很窄的真实需求——为新设备迁移 DeltaChat 聊天记录——他们发现基于 IPFS 的实现根本做不到:性能不佳且依赖树极大。于是转向只做两件事:QUIC 负责网络、BLAKE3 的可验证流式传输负责大 blob,端点用 Ed25519 公钥标识,功能变薄但性能接近理论极限,也因此被 DeltaChat 真的收进代码库。此后为让点对点可靠连接,他们实现打洞并在打不通时退回中继;为避免每条流都做协议协商,改用 TLS 的 ALPN 扩展;最后为了做多路径而 fork quinn,维护自己的 QUIC 实现 noq。文章还专门列了没进 1.0 的东西:可配置密钥算法、后量子签名、加密 ClientHello。
🔑 核心要点
- 项目的第一个硬教训来自一个极窄的真实需求:用 IPFS 版 iroh 迁移 DeltaChat 聊天记录根本做不到,性能不佳且依赖树庞大
- 转向后只剩两件事:QUIC 负责传输、BLAKE3 可验证流式传输负责大 blob,端点由 Ed25519 公钥标识
- 功能变薄换来的是接近理论极限的性能,以及足以让 DeltaChat 把它收进自家 Rust 代码库的依赖体积
- 没有退回 Noise 而坚持 TLS,理由是不用 TLS 就不是真正的 QUIC,只是借用它的零件;后来靠 TLS 的裸公钥支持去掉了自签证书这层绕路
- 为避免每条流都加一层协商握手,协议协商改用 ALPN,在 QUIC 握手中一次完成、几乎没有额外开销
- 为做多路径而分叉 quinn 自维护 QUIC 实现 noq;明确没做进 1.0 的有可配置密钥算法、后量子签名与加密 ClientHello
💡 金句
我们写掉了大量代码,也几乎丢掉了同样多的代码。留下来的,是一个极少依赖既有标准之上的小库:给你到任意端点的、经认证与加密的直接连接,而寻址只用它的公钥。
👍 0
👎 0
← 返回 Lobsters 首页