币灵灵财经
首页 > 币圈新闻 > 文章正文

闪电网络中的 “洋葱路由” 是什么 及其工作原理

币灵灵财经 2024-11-25 19:59 324

为什么要使用洋葱路由?

概述洋葱路由

Alice → Bob → Chan → Dina

闪电网络中的 “洋葱路由” 是什么  及其工作原理

Alice 把最终的洋葱(包裹)发给路径上的第一个中间人,Bob。Bob 使用自己的密钥解锁自己的包裹,然后看到下一个包裹是发送给 Chan 的。于是他把包裹转发给 Chan。Chan 也一样,解开包裹之后,把里面那个包裹转发给 Dina。最后,Dina 打开属于自己的包裹,发现其中的支付消息。

组装洋葱

建构跳的负载

需要转发的数额;

闪电网络中的 “洋葱路由” 是什么  及其工作原理

闪电网络中的 “洋葱路由” 是什么  及其工作原理

Alice 从最终节点 Dina 开始。她在包裹中包含转发数额、时间锁时长数值、支付秘密值以及支付数额。注意,她不需要再加入通道 ID,因为 Dina 就是最终节点,不需要再将支付转发给其他人。

共享秘密值与密钥生成

闪电网络中的 “洋葱路由” 是什么  及其工作原理

闪电网络中的 “洋葱路由” 是什么  及其工作原理

Bob、Chan 和 Dina,都需要跟 Alice 得到相同的秘密值,因此,他们需要知晓用在自己的会话中的临时密钥。Alice 只将第一个密钥放到洋葱中,以节约消息的体积。每一跳都计算下一个临时密钥,并将它嵌在给下一个节点的洋葱中。各跳可以使用自己的公钥和共享秘密值计算出 Alice 所用的盲化因子,从而确定下一个临时密钥。

Rho key

Rho key 被 Alice 用来加密一层洋葱;这样会混淆负载的内容,使外人无法解读。只有 rho key 的主人可以解密负载。这就是收到洋葱的节点要做的事:使用跟 Alice 的共享秘密值推导出 rho key,然后解密洋葱、阅读内容。

Mu key

Alice 使用 mu key 来为每一个负载创建一个校验和。她也会把校验和交给接收洋葱的那一跳。反过来,这一跳会使用 mu key 生成所收到的负载的校验和,检查是否与 Alice 给出的相匹配。这是为了检查负载的完整性,验证它没有被篡改过。

Pad key

Um key

封装洋葱层

闪电网络中的 “洋葱路由” 是什么  及其工作原理

闪电网络中的 “洋葱路由” 是什么  及其工作原理

闪电网络中的 “洋葱路由” 是什么  及其工作原理

转发洋葱

通道 ID:这个消息所关乎的具体通道。

ID:这个 HTLC 的标识符。

额外的数据:用来指定额外的数据。

闪电网络中的 “洋葱路由” 是什么  及其工作原理

Bob 解开混淆的负载中包括了他这一跳的负载数据以及一个指纹。Bob 保存这个指纹,以便将它添加到发送给 Chan 的洋葱包裹中。在 Bob 将属于自己的负载从洋葱消息中分离出来后,他将洋葱包裹转回 1300 字节的原始大小,并跟 Alice 一样随机化自己的会话密钥。最后,Bob 加上版本字节、会话密钥以及他准备放在洋葱负载中的指纹,就通过 update_add_htlc 消息将洋葱包裹转发给 Chan。

故障处理

错误可能由洋葱包裹、节点或通道引起。如果你经常使用闪电网络,你可能遇到过这样的错误,比如 “通道不可用” 或 “手续费不足”。

Mastering the Lightning Network

BOLT #4: Onion Routing Protocol