首页 资讯 正文

引介 | 详解雷电服务包

以太坊爱好者 2019年09月09日 00:08

雷电服务(即监控和寻址服务)的引入旨在通过以下方式提升雷电网络的整体用户体验:

a) 在网络中寻找较短或成本较低的资金传输路径

b) 通过监视开放的支付通道,让用户能够安全地进入离线状态

目前,雷电服务包(Raiden Service Bundle,RSB)注册表计划列出所有提供监视和/或路径搜索服务的供应商。

本文将会介绍首套雷电服务实现的最新进展,详细阐述 RSB 注册表的设计以及功能构想,并讲解雷电服务将如何与 RSB 注册表进行交互。

雷电服务的开发进展

监控服务(MS)

监控服务(译者注:类似于 “瞭望塔服务”)能够在用户离线之时监控开放的支付通道。如果一方在另一方离线时关闭支付通道(或是在一方提出 关闭通道 的请求后,在超出结算时限 80% 之时另一方仍未作出响应),那么监视服务会将最新的账户余额证明发送给支付通道的智能合约,从而保证支付通道能够正确结算。

详解首个监视服务(MS)实现的工作步骤

  • 当 Alice 想让她的某个支付通道受到监控时,她可以将 RDN 代币存入 UserDeposit 合约。

  • 然后,她将余额证明(包括代币网络类型、通道 ID、nonce 、余额的哈希值,以及付给监视服务的报酬)发送至公共聊天室,MS 会读取聊天室里的余额证明。

  • 每当该支付通道的状态发生改变时,MS 都会收到更新通知,由于其收到的余额证明都是经过哈希计算的,因此不会泄露账户的实际余额。

  • MS 会接收上述信息并监听与该支付通道相关的链上活动。MS 可以选择仅接收奖励超过某个下限的监控请求。

  • 一旦通道关闭,MS 会给通道参与者一定的时间来自行更新通道状态,然后才会根据接收到的余额证明来调用 updateNonClosingBalanceProof 函数。

  • 接着可以调用 settleChannel 函数来计算两位通道参与者的正确代币分配情况。

  • 不管是 Alice 还是她的交易对手 Bob 都可以随时调用 settleChannel 函数来执行代币分配。只有用户所提交的余额数值与此前所提供的哈希值相匹配时,函数才会执行。

  • 该函数将根据链下转账完成后的余额情况来正确执行代币分配。

  • 在成功提交账户余额的哈希值之后,MS 可以向 Alice 存入 RDN 代币的智能合约索要链上付款。(详见 claimReward 函数)。

为了尽量避免监视同一支付通道的 MS 之间出现冲突,结算阶段分为三个部分:

  • 首先,只有未关闭通道的参与者可以更新通道状态。

  • 其次,每个 MS 都会收到一个伪随机数据块,然后它们就可以代表用户更新通道状态(详见 firstBlockAllowedToMonitor)。每个支付通道的指令都是独一无二的,因此从长远角度看,每个 MS 率先响应的概率都相同。

  • 最后,只要支付通道未结算完毕,所有 MS 都可以更新通道状态。

如果能降低不同 MS 之间发生冲突的概率,效率就会得到提高,进而降低用户在监视服务方面的总成本。更多关于 MS 的内容和答疑请参阅该文章。

寻路服务(PFS)

寻路服务可以帮助用户在网络中搜索成本最低或最短的付款路径。路径搜索服务依赖于网络中的智能合约以及调解节点所提供的信息等相关数据,如需要收取的调解费用以及可用通道容量。在当前的设计中,用户能选择最短或成本最低的路径。随着越来越多的调解节点分享它们的更新情况,路径搜索服务的质量将逐渐得到提升。

详解首个路径搜索服务(PFS)实现的工作步骤

  • 为了减少摩擦,雷电网络客户端的目标是在启动支付流程前先找到一条可行的付款路径。

  • 因此,必须大致了解整个网络的当前状态,即支付通道的当前容量以及节点分布情况。这就好比现实世界里的路线规划,你需要掌握这个街区的地图以及从你家到目的地的交通状况。

  • 智能合约内仅存储有关支付通道分布情况、存款和取款的信息。这就意味着,节点并不知道除己方通道以外的其它通道的容量。再打个比方,节点只知道这里有一条路,但它并不知道这条路是否足够宽,可以让我们的车通过。

  • 因此,首个 PFS 实现会追踪网络的当前状态(容量变化及通道分布)并提供路径,以此赚取以 RDN 代币支付的报酬。

  • 节点可以将容量的变化情况发送至一个公共的 matrix room ,后者会将当前状态告知 PFS 并为它们宣传支付通道。目前,这是默认选项。

  • 如果交易双方都将上述容量变化情况发送给那个公共 matrix room ,PFS 只会考虑一条支付通道,并将接收到的容量情况反映在路由算法中。

  • 如果一个节点想要保持私密性并且不想参与调解付款,其可以选择不发送容量变化情况。这样一来,该节点就可以避免参与调解,其容量也会被认为是 0。

  • 当前的设置是,节点可以从雷电服务包注册表上所列的服务提供商户中选择一位来提供 PFS 服务。

  • 为便于客户端向 PFS 请求路径,PFS 将通过 HTTP 提供一个 API。除了路径请求之外,雷电网络节点还会发送一个引用 UserDeposit 合约中 RDN 代币存款的签名欠条。

  • 同一节点的后续请求会增加欠条的数量,在此期间,PFS 可以一直保持等待状态,直到客户端要兑现不断增加的欠条余额为止。

PFS 实现在效率和隐私的权衡中偏向效率一方。节点可以选择退出并保持匿名状态,但这样一来就不能成为调解节点了。如果您想了解更多有关讯息,请查阅雷电网络路径搜索服务(Raiden Pathfinding Service)规范。

谁有资格提供雷电服务?

从技术上来说,任何人都可以提供雷电服务。只需一台运行速率较高的服务器即可。此外,服务提供者们需要一个用来收费的以太坊地址以及一个以太坊 RPC 端点。虽然从技术角度来说,不需要自己运行一个以太坊全节点,但是我们强烈建议,还是要跑一个全节点。此外,服务提供者们还需要在 RSB 注册表中质押 RDN。我们很快就会发布另一篇文章来详细讲解质押流程。

RSB 注册表有什么作用?

RSB 注册表列出了所有有资格在雷电网络上提供服务的地址。质押这种途径可以避免垃圾信息以及服务提供者零成本提供劣质服务等情况。

结语

请注意,对于 MS 和 PFS 而言,上述模型仅仅是其中一种可能的实现,服务提供者马上就可以用起来。我们也可以把其它策略、费用模型及算法纳入考虑范围内。我们期待看到在不久的将来,雷电服务能够集众家之所长,在各个领域大放异彩。

(完)

(文内提供了许多超链接,请点击阅读原文到 EthFans 网站上获取)


原文链接:

https://medium.com/raiden-network/raiden-service-bundle-explained-f9bd3f6f358d

作者: Raiden Network

翻译&校对: 周瑾 & 闵敏