zoukankan      html  css  js  c++  java
  • 闪电网络与以太坊结合建立支付渠道的构想及其前景

    讨论在以太坊上建立支付渠道(就如在比特币的基础上建立的闪电网络)的构想。 我想介绍下建立支付渠道的原因,并对比特币闪电网络进行非技术性的简述,以及讨论在以太坊上建立支付渠道的巨大优势和潜力。这篇文章更多是写给大众读者,而不是资深技术客。

    比特币支付渠道

    初始动机

    要向某人发送比特币,你就要创建一笔交易,对它进行加密签名(证明你是创建者),并通过比特币网络广播这笔交易。网络上的节点被称为“矿工”,它确认你的交易,把它打包成块,并在剩余的比特币网络上进行广播,从而确认和完成你的交易。矿工在这过程中可获得比特币作为奖励。部分奖励是来自你发起交易时需要支付的小额手续费。小额手续费和区块奖励是保证网络安全运行的经济动力。

    随着比特币被逐渐接受,区块链记录的交易数也随之增长。目前,一个区块最多可容纳1Mb的交易,在理想情况下比特币可以支持每秒约10笔的交易。但现实的上限是每秒5到7笔,而目前网络的平均负载大概是每秒3笔交易(其实上限就是实际上的平均值,因为区块创建是有概率的,它更多的是遵循泊松分布,而不是刚性的10分钟的间隔,根据所选比特币的时间间隔可以看看能够支持更高的数字)。

    如果增加区块大小,每秒的交易数上限就会提高(这要么修改比特币核心版本,要么采用XT版本),但区块扩容是有限度的。Visa在2013年时每秒峰值达47000笔交易,这远超过比特币4个数量级。Visa之所以能做到这一点,因为它是中心化的系统。去中心化或许是赋予比特币优势和变革潜力的属性之一,但也令它难以处理大规模的交易。

    除了规模化交易有阻碍外,还有小额支付的问题。由于交易成本的存在,以往进行小额支付是不可能的。这就是信用卡存在最低消费金额的原因。你不能使用Visa发送一分钱给别人,单独一分钱的花费是不被支持的。而小额支付具有很大的潜力,很多人都认为比特币可以发挥这方面的潜能。但问题是,根据目前的价格比特币的交易手续费是约2到3美分,这远远低于现有金融系统的费用,但仍然没低到可以实现小额支付(比特币交易手续费是基于交易笔数的,而不是转账金额,这从根本上不同于现有的金融系统)。

    比特币要面临的最后一个问题是零确认(或即时支付)的问题。比特币交易在数秒内传至整个全球网络,但它们在打包进块后才获得确认。由于区块创建和矿工确认的随机性,这个过程有时需要花一个小时左右(但通常平均约10分钟)。

    没有必要去解决零确认问题,因为使用信用卡完成了一笔交易,在数月后仍可被撤销,而且交易运营商有办法迅速地检测出极为罕见的双花尝试。虽然这不是必要,但能解决仍是有价值的。小额支付也并不是必须解决的问题,因为还没有其它系统能把小额支付变成现实,所以这里没有相互竞争的必要。但是实现小额支付将能开辟许多新的市场并创造价值,所以解决这个问题又是有好处的。但规模化交易问题是必须要解决的。如果比特币无法做到这点,那么它就是失败的、毫无用处的。

    比特币和支付渠道的概述

    支付渠道是解决比特币的可扩展性、小额支付和零确认问题的一种可行途径。这个想法是让参与者之间直接进行交易,并不是通过区块链发送交易和使用它加密来确保信息安全,只是在需要结算机制时才使用区块链。现在已经有极少数关于建立支付渠道的想法,最广为人知的就是闪电网络。

    比特币闪电网络的想法是受目前电子金融系统运作原理的启发。我们的目标是借鉴一切了解到的成果,并将其有意义的部分应用到比特币中。因为这篇不是技术类文章,为了让大家了解在以太坊上建立支付渠道的好处,我们至少要对比特币闪电网络有个高层次的认知。

    目前支付的授权过程

    一笔比特币交易涵盖几个部分,我们作简要讨论:

    1. 指向先前某人向你发送比特币的一笔交易(你拥有对应私钥的地址)

    2. 你发送到的比特币地址(实际上是锁定脚本)

    3. 加密签名证明你“拥有”已被花费的比特币和你创建了交易

    直接向接受者发送这笔签名交易,而不是对它进行广播,这就和(传统)支付本身一样便捷。唯一的问题是,只要交易不是发生在区块链上,你就可以选择把这些比特币发送给别人。

    比特币交易是极其灵活的。两个人可以决定各自把一些比特币整合到一笔单独交易,只有他们同时进行加密签名,这笔交易才能对外发送。这是所谓的多重签名或pay-to-script-hash,也是支付渠道建立的依据。

    如果Alice和Bob希望在他们之间建立支付渠道,他们中的一人或两人要把比特币整合到一笔特殊的多重签名交易,并在网络进行广播。然后,他们创建和签名一笔新交易,但原始的资金会最后回到他们手上,而且直至之后的某天才能使用(例如未来的30天)。当他们彼此需要发送资金时,各自的资金余额随之更新,同时会缩短交易可花费的时间(29天,28天,等…),最后,最新的交易变化会被广播到网络。

    支付渠道的创建和形成过程

    因为这些信息只会在Alice和Bob之间传送,它们有助减少发生在区块链上的交易数,从而让区块链能大规模处理交易。它们也可视为即时支付,同时解决零确认问题,因为没有任何手续费,他们可进行任意面额的小额支付。唯一要考虑的是交易被广播到网络的时间,这取决于Alice和Bob什么时候关闭渠道,或者如果他们中的一个要停止交易(此时其他人会等待最新的可被花费的交易被广播到网络,再向他们发送合适的比特币数额)。

    但这只是发生在两者之间。真正让支付渠道有用武之地的是比特币能将它们链接在一起。 如果Alice和Bob有渠道,Bob和Carol有渠道,然后Alice可通过Bob支付给Carol。Bob或许收取小的手续费,但这比区块链的手续费要小得多。这里我们不会细谈,但在不必信任Bob的情况下可以实现这一切,只需添加一些规则就可确保交易的完成。这些新规则在比特币里尚不存在,但比特币有一天可能会用到。

    通过链接渠道发送交易

    如果有些参与者是渠道的“中转站”,他们和其他人建立了渠道(想想Visa,银行和金融机构),那么我们会开始看到一个完整的支付网络,它允许某人通过此网络支付资金给任何人,而不必每次都要广播交易或者要在交易者间建立新渠道。

    链接渠道创建支付网络

    区块链解决方案:可审查、防欺诈

    这系统把比特币区块链转变为定义金融关系规则的机制,然后作为程序化的审查和最终解决方案,最终减少对人为机构的依赖。区块链开始成为程序化的的社会契约,在非常低的成本下维持双方之间的信任和金融互动。

    支付渠道并不适合所有交易。对于大型的、一次性的交易,例如买房字或买汽车,使用正常的比特币交易就可以了。但对于来回频繁转移资金的实体,如银行和金融机构,支付渠道就可展现其魅力。当你通过多渠道允许支付时,可让消费者与银行建立支付渠道,而不再需要银行账户,给商家的支付也是通过多渠道和直接的信息传送,这样的系统一旦建成,就会像我们今天的金融体系。现有的金融系统依赖于信任,他们必须受到严格监管,以保障消费者的合法权益(今天我们的系统非常糟糕,想象一下如果没有监管,那将会怎样)。但依靠比特币的支付渠道,监管职责可以转移到区块链上,这会是一个更加完善和透明的审查和防欺诈系统。

    Joseph和Thaddeus Dryja在比特币闪电网络会议上的演讲

    以太坊的支付渠道

    比特币闪电网络极具前瞻性,但今天在比特币上还不能建立,因为还存在一些未解决的困难(如交易延展性),还要添加一些附加功能到协议上。以太坊是下一代加密货币,它使用账户余额,而不是采用视为基本对象的交易,而且它可以建立智能合约(这并不需要通过链接交易建立)。 这不仅意味着我们可以在以太坊的平台上建立闪电网络支付渠道,也意味着我们可以在此基础上开发出更强大的功能。

    我们可以使用以太坊建立闪电网络、制定智能合约的规则。如果Alice和Bob希望在他们之间创建支付渠道,一方建立渠道和规则,另一方就可随之“加入”。包含渠道最新状态的信息会被创建、签名,并在他们之间直接传送。如果Alice需要关闭渠道,她会调用可加密状态信息的智能合约的功能,这将启动结算期,此时Bob既可以确认状态,发送一个更新的签名状态信息,或等待结算期结束。最后渠道会被关闭,他们的资金会被返还。

    在比特币闪电网络中,通过多渠道发送支付时,在所有参与者完成同步前,这些消息都会保存在他们渠道之间,这对支付网络的中心“枢纽”是不利的。Visa每秒处理数以万计笔交易,因此如果这些交易每秒多耗点时间,整体的速度就慢多了。大户通过在彼此之间开辟多个渠道可以改善这情况,但这开始时就显得极其复杂,而且增加了区块链上的交易数。

    而以太坊,通过允许没更新至渠道最新状态的特殊累赘信息停留在渠道,从而实现利用多渠道完成支付的过程。这些累赘消息以渠道状态的变化量写入。这意味着,在许多累赘信息待解决的情况下,渠道可以自行更新。当一条累赘消息被解决了,它可以被整合到下一状态的更新信息,从而证明已生效。当渠道被关闭,任何还没处理的累赘消息在结算阶段再被处理。 这种方法有些危险,例如用户有意的话,其账户会变成负数,这原来是一个特性,而不是一个错误(见下文)。

    比特币的闪电网络是基于比特币网络之上,而不是被囊括在内。这意味着闪电网络需要比特币自身的基础结构和协议。要向与你没有直接建立支付渠道的某人支付资金,就要寻求途径发现“中转站”和与他们的连接,就像在互联网上已经使用的路由协议。硬件脱机将是一个永远存在的问题。而以太坊的寻求过程可能完全已嵌入到自身。智能合约可以列出现有的中转站、渠道,以及它们的连接和手续费。这可能不是最终解决此问题的最好途径,但会是一条更快捷的途径来引导比特币这极其复杂的部分。这样的智能合约也能成为一系列的中转站,同时指向资源托管的其他地方(IPFS、AWS、你的家庭服务器或加密节点)。使用这种路由有效发挥作用的地方还有很多,因此使用以太坊可减少复杂性,这是一个巨大的优势。

    以太坊的奖励特性

    往现有渠道增加资金

    当我们尝试去看比特币闪电网络的最前沿时,我们看到的东西类似于现在的银行账户。所以现在我们使用Alice和Bank,不再是Alice和Bob。Alice和Bank之间可以创建一个支付渠道,在这里只有Alice把钱存进来,然后她使用线下信息来“发送”她的比特币到Bank,并通过更多渠道连接到Credit Union,和最终(将比特币支付)到Alice刚购物的百货商店。

    只要Alice可以通过她的Bank收到“支付”,这套机制就能很好地运作,但前提是她曾经的支付少于她的Bank那“边”渠道的余额。此外,如果她曾经通过一些其他实体途径得到比特币,她不能在没有创建新渠道的情况下存放这些比特币。但有了以太坊,Alice就可以这样做了。这仍然需要一个交易,让Alice可以直接发送资金到她那“边”的渠道,增加这个渠道的总资金。她将在下一条签名中包括这些信息,而且Bank可以检查智能合约,以确认她的新增资金确实在那里。

    当资金被清空后但渠道保持开放是有问题的,不过,如果这真的很必要,可能会有几种途径来实现这种功能。但我认为最安全的途径是将(旧的)渠道关闭并开通新的渠道,而不是单纯保留这样的功能。

    存款VS信贷渠道

    以太坊可让我们创建Alice和Bank之间存款用的渠道,这更加像是传统银行账户,允许Alice(或者Bank)在渠道保持开放时往渠道中添加资金。但我们大多数在发达国家的人也有信用卡,允许我们没有“存款”时花钱(当然,那是将来的钱)。而银行可让人们取回的钱比他们原本拥有的要多(通常在这个过程中会有可怕的费用)。

    如果双方同意的话,以太坊支付渠道的余额可允许为负值。这样的支付渠道相比于银行关系更像是模仿信用卡关系。这不会创造资金,渠道上只会存在应有的东西,但它会以Alice的身份通过支付网路来追踪交易流向。如果Alice在她的余额为0之前突然消失,无论他们以她名义发送任何东西到这个网络中的其他参与者,Bank都会退出。类似Bank的机构会以银行账户与信用卡的混合方式对待这些支付渠道。当Alice的存款为正值时,Bank会向她发送利息支付。当Alice的存款为负值时,Bank会向她收取利息。

    竞争币也包含在内

    以太坊可让你轻易建立自己的加密数字货币(竞争币)。这也可以使用智能合约来实现。这样做的好处是,竞争币从整个以太坊网络获得安全性,而不需运行他们自己的区块链、节点和矿工。闪电网络可以为以太币(以太坊的内置代币token)而创建,也可以嵌入在创建任意竞争币的智能合约中。万一被需要,支付渠道网络可以被“备份”。

    多方渠道

    到目前为止,我们只是谈到了存在于两个参与者之间的渠道,但创建三个或更多参与者之间的渠道也是可以的。这在比特币中也是可行的,所以这种功能不只是适用于以太坊的,但在以太坊中会更容易实现。这些多方渠道可以被建立,而且所有参与者必须为每次底层状态的更新进行签名,或者让部分参与者(n个中的m个)签名来获得一个有效的新状态。

    多方渠道可以用来做什么呢?Blockstream 最近发布他们的首个侧链产品——Liquid。Liquid是私有区块链,参与者(目前只集中在比特币交易所)可以使用它向其他人来即时发送比特币,从而解决他们的零确认问题。不过,侧链是一种极其复杂和未经测试的解决方案,而且在Blockstream的完全双向挂载侧链技术得以实现之前,比特币协议仍需要更多的更改。大型金融机构都在探索私有区块链技术来解决类似的问题。多方渠道可为 Liquid 的私有侧链提供许多功能,并只需更少的复杂性来实现,而且会由本地区块链提供安全保障。

    不考虑财务问题的情况下,在智能合约下运行一个游戏将会是有趣的,但对于游戏进程而言,即使是使用以太坊的短区块,时间还是太长了。同时,为了每个操作而支付很少量的货币,(成本)也会是过分昂贵。但是有了多方渠道的话,这将变得可行。开始游戏状态信息可以被记录在智能合约中,然后游戏进程将通过参与者直接传递信息。根据预期来检查信息内容和不断地对信息加密签名,这会密集调用CPU(CPU大量运算工作),但是在良好的游戏设计的情况下,可以在足够低的(运算水平下)达到游戏的要求。

    这为支付渠道开拓更多的用途。事实上,称它们为支付渠道可能不太恰当。以太坊白皮书讨论了比特币作为一种状态转换系统和解释了以太坊对这种观点的态度。我们在这里看到以太坊上的支付渠道也可视为状态转换,所以称它们为“多方线下状态网络”之类的可能更加准确。

    多种资产渠道

    如今,纳斯达克正在使用区块链技术进行资产交易之类的操作,Overstock推出区块链股票交易平台TØ。支付渠道(或者“多方线下状态网络”)不仅可以为任何代表着智能合约的数字资产而运作,还可以为支持多种数字资产的合约而服务。换言之,一种智能合约可以同时支持货币(以太币或者其他数字货币)和代表公司股份的加密代币。拥有多种资产的渠道或网络是基于智能合约的金融交易的成功因素。

    区块链对于任何领域都是非常棒的技术,在这些领域中你会看到很多参与者需要共享可信数据库,但在真正实现之前还需要克服一个由来已久的巨大障碍,就是交易的速度和波动性(或者被称为“挖矿”的区块创建)。多方线下状态网络对这个问题提供了一种解决方法,为更好的区块链应用打开大门。

    注意事项

    在处理比特币闪电网络和以太坊上其它类似的东西时,仍需克服许多障碍。对于比特币闪电网络,当他们更新余额时,渠道中的参与者能缩短交易同步到区块链上的时间。这确保旧的交易在最新的交易之前不会被广播。但是如果一个参与者不能够在关闭渠道前及时地广播最新的交易,(他的)资金会丢失。这可能是技术方面的问题,或者是区块链相关的问题,例如一大堆交易等待被同步(这在当区块容量被占满或者大量交易涌入时会发生)。

    以太坊上在结算期也可能发生同样的问题,但因为结算期的窗口可由渠道设定,而不是刚性的限期,所以以太坊的处理能力更加强大。恶意的参与者可以使用对他们有利的过时信息和垃圾交易在以太坊网络中发起一个结算期,阻碍其他参与者提交最新的信息。这种威胁可以通过足够长的结算期(其可以由创建渠道的人设置)来减轻。

    支付渠道已经被提议作为最终实现小额支付的途径,我认为它们是到目前为止除使用中心化服务以外最好的方法,但我仍很怀疑它们是否真的能做到这一点。转移价值毕竟是有成本的。像黄金之类的物质商品,成本与转移量是成比例的,但是对于价值数字表示,成本在每次转移中或多或少是固定的,与金额大小无关。这意味着一笔交易的成本多少,可能有一个更低的极限,但我不知道能多接近那个极限。中心化服务似乎能非常接近零成本,但是代价是必须信任这个服务。为了用比特币闪电网络向任何人支付,你必须通过一些“枢纽”,这些“枢纽”可能是纯粹收取费用而存在的。这些费用会比比特币交易费用便宜多少呢?

    这抛出一个问题:究竟小额支付是什么?难道是发送subdollar(小于一美元)?还是发送25美分?还是发送一分钱(便士)?或者说更小?要按什么比例收取我们认为可行的交易手续费?对于这些问题,每个人似乎都有不同的答案。但是无论答案是什么,我认为即使有了支付渠道,也无法达成比几分钱便宜得多的交易。另一种建议是,可能会存在一个中心机构来收集用户数据并从中获取利润。如果是这样的话,那么小额支付也许能够实现。

    发展状态

    ConsenSys是以太坊的动力室,它正在开发我们可以想象到的每一件产品,所以对于他们正在研究线下交易的事情,也并不令人吃惊。我不想在一篇短文中介绍太多东西,但他们正在顺着想法开发可容纳超过两个参与者的单渠道,他们似乎都集中努力做出针对闪电网络的OP_CHECKLOCKTIMEVERIFY和OP_RELATIVECHECKLOCKTIMEVERIFY或者OP_DEPTHLESSTHANVERIFY的一个更好解决方案(他们称之为一个“挑战期”)。他们还提到了一个有趣的想法,在挑战期,如果某个参与者比其他人稍晚提交一份最新的状态,那么他将接受奖金损失的惩罚。由于ConsenSys资金充足,可以投入所有的时间来开发,所以我希望他们可以比较快地做出一些成效。我看到了其他的几个人也提到正在为类似的想法而工作。

    这篇文章要说明的一点是,比特币支付渠道和以太坊支付渠道之间有很大的区别。建立在比特币之上的各种支付渠道解决方案之间必定会互相竞争,他们的唯一目的都是帮助比特币实现更好的价值转移。而建立在以太坊之上的支付渠道解决方案可以转移自身货币“以太币”,相对于其他方案,这会是它的优势之一。多方线下状态网络将通过整合数字货币、游戏、金融网络等的智能合约来发挥它们最大的影响力。在以太坊上,这些网络可以成为Dapps(去中心化应用)技术标准的组成部分,这些Dapps是建立在智能合约之上的。每个完成品的属性将决定它们需要的智能合约。支付渠道中不会有哪个是市场“赢家”,但相反,它们将会营造一个充满活力的氛围,有助于扩大多方线下状态网络的用途和功能。

    结论

    虽然闪电网络主要是为了解决比特币的可扩展性问题而提出的一种支付渠道解决方案,但这局限了它的使用范围。如果把它与以太坊的智能合约技术结合起来,那么闪电网络支付渠道的概念就可以扩展为“多方线下状态网络”(或者“线下状态网络”)的方案。这方案远远超出本来可应用的领域,我们可能会看到它成为去中心化应用的标准组件和服务,并从数字货币和游戏扩展到金融领域。

  • 相关阅读:
    javascript:void(0) 和 href="#"的区别
    Subverion仓库迁移知识点整理
    EasyUI出现多条边框重合的问题
    EasyUI相关知识点整理
    EasyUI添加进度条
    yum配置文件中baseurl和mirrorlist的区别
    xshell中出现的绿色背景的文件夹
    Docker相关知识整理
    mysql 实验论证 innodb表级锁与行级锁
    MySQL索引优化实例说明
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313007.html
Copyright © 2011-2022 走看看