zoukankan      html  css  js  c++  java
  • 学习状态通道,Part-3:多跳交易/中心辐射通道

    Part-1:支付通道
    Part-2:App 定制型状态通道


    在我们开始之前,如果你还没有读过我的第一篇博文——菜鸟学习状态通道,Part-1,你一定得看一下,因为本博文是基于第一篇的。对此感兴趣的人,这里有一个基于Metamask 和 IPFS Pubsub 实现的单向支付通道的实现以及演示。

    上一篇介绍的支付通道框架中包含两个实体之间单向和双向的支付通道,如果要与某一方进行交易的话,就直接在双方之间开一个通道。如果大规模的开通道的话,看起来就像下面这张图:

    -一个神秘的玫瑰——非常漂亮,对吧?

    尽管它美轮美奂,几何特征明显,但是效率非常非常低——我们可以做的更好。

    路由支付通道(Routed Payment Channels)

    进入路由网络,每个人都可以通过公共连接(中介器)互相交易。大量减少了网络中的连接:

    -看起来有点乱,但肯定更划算!-

    这样就很好了,因为我们不需要承担频繁开关链上通道的费用。 我们有了贯穿全网且一直打开的通道;其他人要使用也可以,我们可以收费。需注意的是,要在两个节点之间创建路由支付通道——必须要有一条路径,路径上每个节点的代币不小于传输的数量。 以下是想要在路由网络中传输 3ETH 的两个节点(A,E)之间的有效和无效路由的示例。

    -有效路由——最小通道大小为 4 ETH,大于我们所需的 3 ETH-

    -无效路由——该路由不支持任何大于 2 ETH 的传输-

    现在可能有人会说,这种路由支付通道的费用可能会超过直接与目的账户连接的支付通道费用——如果是这种情况的话,会有新的节点上线提供通道并以此牟利。随着时间的推移,网络会根据最佳路径进行自我优化,产生最低费用。

    这种路由方式当然是一种进步,但我们如何确保路径上的人不会偷走我们要他转发的钱?公认的做法是,用一种称作“哈希锁”的机制,缩写是“HLC”或“HTLC”。

    哈希锁

    让我们举一个简单的例子,Jerry 想发1 ETH 给 Kramer,而 Newman 是他们在支付通道中唯一的共同连接。在这个场景下,Newman 是一个“转移中介”,Jerry 是“发起者”,Kramer 是“目标接收者”。

    - Newman -

    如果你已经知道哈希函数是什么,你可以跳过这段。对于不熟悉哈希函数的,我简单介绍一下:哈希函数不像加密——对某个原始数据进行哈希运算之后可以得到它的哈希值,但你无法从哈希值反推得到原始数据。哈希函数是单向的,相同的数据会得到相同的哈希,这使得哈希比较适用于鉴别文件是否相同。人们经常举的一个不太好的例子就是——你可以把牛变成汉堡,但你无法用汉堡重新构造一头牛。说到这,你可以在这里了解更多关于 SHA256 的信息

    为了促进实现这种中介转移,我们将采取以下步骤(来自比特币维基):

    1. Kramer 生成一个随机数并生成这个数的 SHA256 哈希值,然后把这个哈希值给 Jerry。
    2. Jerry 用支付通道向 Newman 转 1 ETH,但他把 Kramer 给他的哈希值加到了支付条件里:Newman 要想收钱,就必须提供能够产生相同哈希值的数据。
    3. Newman 用支付通道向 Kramer 转 1 ETH,并且把 Jerry 给他的支付条件加到了他给 Kramer 的支付条件里。
    4. Kramer 有用于生成哈希的原始数据(称为原象),因此 Kramer 可以使用它来完成自己的支付并完全收到 Newman 的钱。这样做的话,Kramer 必然也将原象给了 Newman。
    5. Newman 使用原象来得到 Jerry 的钱。

    太长不看版 —— Jerry 给 Newman一个 IOU(欠条),Newman 把 IOU 给 Kramer,并且两者的兑换条件相同。一般来说,我们形成这种 IOU 链条,并且从目标接收者开始一个接一个向上家要求偿付,最终回溯到发送者那里,资金就这样在网络中完成了传递。

    因此,这些“哈希锁”能够让发起者通过一个或多个有一系列前向承诺的中介,给目标接收者转账。一旦前向承诺链创建成功,并且发起人已经支付,资金就会通过前向承诺路径到达目标接收者。这大致就是比特币闪电网络目前运作的方式。

    注意:出于示例的目的,此处没有给 Newman 任何作为中间人的交易费。 这是一个实现细节,可以包含到中介人的每个交易里,根据他们的偏好收费。

    随着路由支付网络的增长,我们可以预见到会有一些节点比其他节点更受欢迎,它们可以在各自的通道上支持更有价值的交易。 一个恰当的比喻就是在你家和朋友家之间旅行:

    1. 从附近的街道开始(道路窄#乘车,慢速)
    2. 上一条主干道(路宽适中#乘车,中速)
    3. 上高速公路(道路宽#乘车,最快)
    4. 下车到另一条主干道(路宽适中#乘车,中速)
    5. 在朋友的邻居街上结束(路宽小#乘车,慢速)

    类似的行为会激励形成我们所说的“中心辐射”网络(Hub-and-Spoke Payment Channels)。

    中心辐射支付通道

    在中心辐射支付通道,每个人都可以通过公共连接(hub)相互交易。这使我们从简单的路由网络中获得了更清晰的网络:

    人们通常会对中心辐射网络持不同意见,声称它们是中心化的。在无法绕过 hub 并依赖于它们的情况下,当然是中心化的。但在这个网络中,你可以随时向其它节点或其它 hub 打开通道——这就在网络中提供了可选择性。最后,网络会发展成这样一种情形:在整个网络中会有非常多的 hub:

    -截至 18 年 9 月 8 日的闪电网络 —— 图片来自 gaben.win -

    目前,SpankChainNathan GinneverFinality Labs)和 Arjun BhuptaniConnext)正在开发支付通道的中心辐射网络。

    Part-4:虚拟通道

    这几个章节列出来的技术,让我们称之为“虚拟通道”的网络成为可能。在本系列的第4部分中,我们将深入介绍虚拟通道,敬请期待!

    阅读材料

    -我把这张图放在下面,这样就能当文章封面啦~ -

    特别感谢 Nathan Ginnever和 Connext 团队,让我了解他们在这个领域的实践。


    Part-4:账本通道和虚拟通道
    Part-5:广义状态通道


    链接: https://medium.com/blockchannel/state-channels-for-dummies-part-3-10b25f6c08b

  • 相关阅读:
    Git使用感悟
    Just open sourced the JavaScript Inlay Hints Provider function in IDEA plugin React Native Console commercial version
    Flutter和React Native组件层级对比
    React Native 迁移到 Flutter 心得体会[持续更新中]
    IntelliJ IDEA 2020.3 EAP 新特性: 拖动分割编辑器,新欢迎窗口等
    Universal Abstract Syntax Tree (UAST)
    Creating your first Flutter project using WebStorm 2020
    WIN10系统跑流量,彻底杜绝win10更新程序后台下载
    linux centos7安装mysql5.7(安装版)教程
    VMware启动虚拟机一直处于黑屏且无反应
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312900.html
Copyright © 2011-2022 走看看