硬核丨一份关于支付网络中路由问题的全面研究( 三 )


SilentWhispers 与 SpeedyMurmurs
SilentWhisper 的协议本身并不考虑支付网路的动态性 , 文章中的方案没有考虑额度分片 , 因而 一次支付仅利用 个灯塔节点。 当然 , 这个方案可以被扩展到 的分片支付方案 , 不过这个方案的通讯复杂度随着支付所用灯塔节点的数量平方线性增长 。 假设现需要处理一笔从 到 的支付 , 总金额为。 支付者将支付金额分为 份, 第 的路由交由 协助完成 。 对于每一个 :

  • 首先 , 通过双向 BFS 寻找 到 和 到 的最短路径 ,
  • 随后 , 通过与路径上各个节点的通讯 , 确定可以在这条路径上通过的支付金额数量 , 即这条路径上的最小余量 。 这一步可以通过安全多方计算(secure multiparty computation, MPC)来完成以保证隐私性 。
SpeedyMurmurs 直接采用了分片支付的方案 。 除此以外 , 与 SilentWhispers 的一大不同是 , SpeedyMurmurs 中灯塔节点利用树基图嵌入的方式提供支付路径 , 其出发点针对 SilentWhispers(1)双向 BFS 树在动态网络环境下维护的困难性 , (2)即使是拓扑距离非常靠近的两个节点间路由也要经过 Landmark 节点 , (3)以及极差可并发性的问题 。
每一个 Landmark 都根据现有支付通道维护一棵以自己为根节点的 叉树 。 并以此维护对每个视野中节点的编号 。 假设现需要处理一笔从 到 的支付 , 总金额为, 利用 个灯塔节点。 支付者将支付金额分为 份, 第 的路由交由 协助完成 。 对于每一个,通过两个节点的编号寻找 的树上 到 的树上路径 , 完成对应的支付 。
3
基于数据网络方法的路由协议由于以上的路由方案都没有充分考虑实际支付网路的动态性 。 所以部分来自计算机网络背景的学者提出了将数据网络中的路由办法直接用到支付网络中的若干方案 。 由于数据网络的路由理论已经在计算机网路领域非常成熟 , 这一类方案具有较高的可靠性 。 动态性也给这类方案提供了非常可观的效率 。 其中最为经典的是 Spider 协议 。
Spider 将支付网络类比为数据传输层 , 使用数据网络的方法进行动态路由 。 为了和数据网络的模型匹配 , 在此方案中 , 我们依旧假设所有的通道都是双向的 。 类似于数据网络中的数据包 , 每一笔交易被拆分为若干金额包通过不同路径寻路 。 每个金额包被直接通过支付网路通道传输并最终抵达收款者 , 其转发过程中的节点都锁定了相应额度 。 在完成了寻路后 , 根据各个金额包的转发路径完成最终支付 。
然而 , 支付网路和数据网络的一大区别在于通量限制的存在 。 因此 , 每个通道都会对应一个队列(pending list)保存所有还没能以当前通量完成传输的金额包 。 只有当有足够的通量从通道的另一侧传来(等价于本方向的余量增加) , 这个队列中的金额包才能继续传输 。 值得注意的是 , 虽然我们用一个金额包的传输过程来描述动态路由过程 , 其实质是一 个寻路与锁定的过程 , 倘若不加注意会把这个路由过程误以为是支付过程 。
4 混合路由协议
通过对 Ripple 和 Bitcoin 支付网络的实际分析 , 最新的调研(Flash的论文中)发现:
  • 支付网路有必要支持大额交易(这一点曾经被质疑过);
  • 大额交易需要更加侧重支付成功率 , 小额交易应该更加注重效率 。

硬核丨一份关于支付网络中路由问题的全面研究文章插图
基于这一发现 , Flash 协议用基于最大流的路由方案来完成大额金额的支付 , 用基于数据网络的路由方法进行小额金额的支付 。 由此 , 大额交易的支付成功率和小额交易的效率得以两全 。
各类路由方案的对比与分析
笔者在以上表格 Tab.1 中 , 列举了各类非混合路由协议的优势与劣势 。 由于难以量化 , 具有一定的主观色彩 。