美文网首页008一步登天二轮
被闪电劈过的比特币竟然焕发生机!

被闪电劈过的比特币竟然焕发生机!

作者: jungletomato | 来源:发表于2018-05-12 07:49 被阅读42次

    欢迎来到智识星球,在这里,我们将重塑你的思想。
    Here is Intellectual Planet, here we craft your mind.


    前不久,我们聊到了为比特币续命的方式,那里我们介绍了一个叫隔离见证的概念。

    忘记的朋友可以出门左转,左转,再左转...

    其实,除了隔离见证,比特币还有另外一种扩容方式——闪电网络

    怎么样?是不是听到这个名字就感受到了速度?

    确实如此,它也被认为是比特币创立以来最重要的革新。

    我看到了你好奇的目光,先系好安全带,然后我们一起来追逐闪电吧!

    迅雷不及掩耳的闪电网络

    闪电网络(Lightning Network)最早由Joseph Poon和Tadge Dryja提出,它利用了比特币的安全特性,在线下提供高速的实时交易处理能力。

    用户既可通过点对点的直接支付方式,也可以通过网络路由的方式实现间接支付。

    闪电网络并没有发明新的加密形式,也没有使用新奇的比特币脚本,却巧妙地实现了离线支付的功能。

    还记得欢喜买火车票的事情吗?多亏了互联网的普及,我们可以在网上轻松购票。

    然而在十几年前却并非如此,我们都需要去火车站排队购买。

    长长的队伍里,总会有一些神秘人穿梭其中,我们亲切的称他们为“黄牛”。

    黄牛提供了一种线下支付的场景,让很多着急买票的乘客无需排队等待,从一定程度上减少了拥堵。

    不过,闪电网络比这个过程要复杂的多。

    它的实现需要借助支付通道HTLC,让我们来深入理解一下。

    轻便的支付通道

    支付通道可由参与的双方共同发起一个交易来创建,实质上就是双方往一个多重签名(multisig)地址存入一定数量的比特币。

    小潮和欢喜在玩一个猜硬币的游戏(智识星球的传统游戏),谁猜错了,就要支付给对方1块钱。

    虽然他们每人都有一个存钱罐的零钱,但每次交付依然很麻烦。

    于是,他们便采用记账的方式,待游戏结束的时候统一结算。

    但问题是,万一游戏结束时,记账的金额大于存钱罐的钱呢?这意味着一方可能有欠账的风险。

    没关系,他们每人提前往桌上拍100元钱,一方的记账额度用光时,便停止游戏。

    这个过程有些类似于微信钱包。

    我们在群里抢到的红包并不是真正的金钱,只是腾讯公司在帮你记账。

    真正的交易出现在你体现到银行卡的时候。

    这便是支付通道的高效之处。由于比特币的线上交易拥堵,我们可以采用离线方式进行多次交易。

    这样规避了在线等待确认的时间,从而提高了交易效率。

    或许你希望深入了解整个实现过程。

    假定小潮打算给欢喜发送1个比特币,因为他刚猜错了硬币。

    小潮可直接在比特币的网络上广播一个交易,从他的地址转向欢喜的地址。

    但是考虑到他们要玩一个周末的游戏,等待的时间是难以忍受的。

    于是他们决定向同一个地址X各转入100个比特币,X拥有200个比特币的未花费输出(UTXO)

    而这个地址含有多重签名,需要两人同时签名才可以使用地址中的比特币。这个交易称为支付通道的“首次交易”(opening transaction)

    同时小潮和欢喜各自确定一个随机数作为密码,然后对密码进行哈希运算,把哈希值(hash)告诉对方(密码各自保留)。

    接下来就是小潮和欢喜各自创建离线交易,更改通道的离线余额。

    小潮把首次交易中的输出地址X作为输入地址,发送99个比特币给自己,101个比特币给一个新的多重签名地址Y。

    不过这个多重签名地址Y很特别,它有两种花费方式:

    一种方法是欢喜可以单独广播交易来解锁拿到101个比特币,但需要再等待一个周末的时间(从交易在区块链上确认后算起),这相当于一个时间锁;

    另一种方法是由小潮单独广播交易来解锁,前提是小潮得到了欢喜的哈希值对应的密码。

    欢喜可以随时广播,来获取自己的比特币,不过要等待一段时间;而与此同时,小潮也立即获得自己的99个比特币。

    欢喜也在进行相反的操作,把101个比特币发给自己,99个比特币给一个新的多重签名地址Z。

    他们又进行了一次游戏,而这次欢喜的手气不佳,需要支付给小潮一个比特币。

    第二次的交易过程与第一次类似,不过他们各自需要设定新的随机密码,并将上次的交易密码公布。

    还记得地址Y的两种花费方式吗?

    这里的精妙之处在于,如果欢喜单独广播第一次的交易(这对他有利),则需要等待一个周末的时间。而由于小潮得到了欢喜第一次的交易密码,可以立即取走里面的钱。

    这有效保障了双方各自的利益。

    支付通道的建立是基于双方进行多次交易的基础上的。

    但如果两个用户之间没有建立支付通道,他们怎样交易呢?

    这便需要用到HTLC。

    智能的时间锁

    闪电网络设计了一种中间人方案:若小潮希望发送1个比特币给欢喜,他们之间没有直接的支付通道,但他们分别和我有支付通道,于是可以通过我作为中间人来支付。

    这个过程采用了HTLC(Hashed Timelocked Contract,哈希时间锁合约),来保证交易能够畅通进行。

    又出现了一个晦涩的概念。但实际上我们每个人都用过这个类似的过程。

    回忆一下我们在淘宝买东西的过程,那些剁手的时刻都历历在目。

    实际上,你剁手的时候,账户里的钱并没有进入商家的口袋里,而是打到了支付宝的官方平台上。

    此时,一个倒计时的合约便启动了,一般默认是30天。

    你收到了宝贝,也确认没有问题,便可以确认收货,提前结束合约,卖家同时收到货款。

    然而当你收到的是一个空包裹时,你便可以怒气冲冲地向支付宝平台申请仲裁。卖家得不到货款,而钱也从平台推至你的账户。

    HTLC就是这样一个过程。

    小潮不是直接发送1个比特币给我,而是发送1个比特币给一个多重签名地址Q。

    地址Q有两种解锁方式:用我的签名加上欢喜设置的一个密码;

    或者小潮用本人签名解锁,但需要等待一段时间,例如30天。

    在30天内,我如果得到密码,就可以用签名拿走地址Q中的1个比特币;如果我在30天内没有得到密码,被认为超时,小潮可以从地址Q中拿回自己的1个比特币。

    同样的,我和欢喜也设立这样的HTLC,并且满足两个要求:

    采用之前HTLC相同的密码,以及稍短一些的超时设置,如29天。

    这样确保在我支付了欢喜之后,可以从小潮取回相应的比特币,而不会因为超时,被小潮拿走。

    在支付过程中,首先欢喜随机生成一个密码R,再把R 进行哈希运算后得到H(R),然后将H(R)发送给小潮。小潮用哈希值H(R)作为时间锁,创建和我的HTLC合同,包含1个比特币,有效期30天。

    我用同样的哈希值H(R)打开一个和欢喜的HTLC合同,也包含1个比特币,有效期29天。

    29天内,欢喜可以随时使用密码R,来解锁我的HTLC,从而得到1个比特币。

    与此同时,我也看到了密码R,可以去解锁和小潮的HTLC,也得到了1个比特币。

    这样就完成了从小潮到欢喜的支付。

    没错,你一定和我一样,感觉很辛苦,看起来一点都不轻松。

    但整个过程不需要反复地记账,省去了大量的等待时间。这使得即便需要多个中间节点实现转账,也可以畅通无阻,只要两个用户之间存在一条通路。

    结语

    闪电网络实现了在离线环境下提供比特币交易的方式,多可以离线发生任意数量的交易,而无须广播到比特币的网络上。

    这大大提高了交易速度,也减轻了比特币网络的压力,比特币似乎又能焕发新的活力。

    闪电网络是传统方式迁移到区块链的创新,核心思路便是迂回包抄。

    这也带给我们一些启示,一些智识的直接获取十分困难,不过我们可以在它的周边逐步建立认知网,待时机成熟后,一举获得智识的跃迁!

    (参考文献《区块链技术指南》)


    【智识星球】出品
    每个人都是各自轨道上的拓荒者,
    祝贺你又完成了一次思想跃迁!

    个人转载、留言和点赞,无需特别申请许可。

    相关文章

      网友评论

        本文标题:被闪电劈过的比特币竟然焕发生机!

        本文链接:https://www.haomeiwen.com/subject/xolcdftx.html