一个例子了解闪电网络的基本原理是什么?

文章出处:高维空间 责任编辑:一币刀 发布时间:2019-06-05

      闪电网络的基本原理本质上是哈希时间锁定智能合约(Hashed Time Lock Contract)安全地处理”0确认交易的一个机制,巧妙的设定智能协议,用户能在闪电网络上进行未确认的交易。

闪电网络支付通道是经过哈希时间锁定智能合约实现的——这实际上是一个限期转账,通过这一智能合约,双方约定转账方先将钱冻结,并提供哈希锁,锁定发起方的交易币。如果在规定时间内有人能够提供之前生成支付的加密证明,并且与之前约定的哈希值一致,交易即可完成。两人之间如果进行多次交易,可以脱离区块链进行链外交易,这是闪电网络的创新点。

但是,闪电网络时间哈希时间锁定智能合约真的像我们想象的那么完美吗? 首先,这里假设有爱丽丝(爱丽丝)、鲍勃(鲍勃)和卡罗尔(卡罗尔),通过三人之间的闪电网络交易,来说明哈希时间锁定智能合约的问题。

闪电通道可以看作是两人之间延伸的一串珠子(如图1 )


爱丽丝想支付鲍勃一笔费用,就相当于把自己的珠子推向鲍勃。 如果鲍勃和卡罗尔之间也有闪电通道,爱丽丝就可以通过鲍勃支付给卡罗尔。这相当于爱丽丝给鲍勃一个珠子,而鲍勃再给卡罗尔一个珠子。 这里可以发现闪电网络流动性的基本规则有一个问题,珠子可以从一侧移动到另一侧,但不能离开他们所依赖的那条绳索。

爱丽丝可以向卡罗尔发起支付,但需要通过鲍勃路由这个交易,这是因为珠子不能离开依附的“绳子”,鲍勃可以添加一颗珠子在和爱丽丝系在一起的“绳子”上,再和卡罗尔系在一起的“绳子”上减少一颗珠子。

这里就是闪电网络上的资金流动方式,但这种模式不告诉我们为什么通过闪电网络支付是安全可靠的。如果鲍勃一直拿着爱丽丝给他的珠子,不把珠子给卡罗尔,会怎么样呢?

事实上,到这里就有了一个目的——解密闪电网络的基本原理寻找"究竟是什么让闪电支付变得去信任(trustless’"?这个问题的答案就是哈希时间锁定智能合约(HTLCs

为了说明是什么阻止鲍勃持有爱丽丝给自己的珠子,并没有送给卡罗尔的理由,需要在闪电网络通道中导入物理模拟"锁(locks)"。 锁可以放在爱丽丝、鲍勃、卡罗尔一起依赖的那根"绳子"上并且限制珠子的移动,只有在满足特定条件的情况下才打开"锁"。 闪电网络支付中使用的哈希时间锁定智能合约包含以下两种类型的锁定(如图2 )

一个是在给出正确密码时打开的"锁",被称为哈希锁(hash-lock)。

另一个是经过一段时间延迟之后自动打开的,被称为时间锁"(time-lock

当哈希值达到指定的值(在这里为45f8)时,输入密码时哈希锁就可以被打开。时间锁需在指定的时间过后自动打开(在这里为48小时)

让我们回到爱丽丝通过鲍勃给卡罗尔付珠子的例子。 为了让这个支付交易是"去信任"的,爱丽丝、鲍勃、卡罗尔必须同时在线,还需以各当事人设定的方法参加交易。

首先爱丽丝必须向卡罗尔请求一个密码,并传达密码的哈希值给她。 如果此密码为bondooggle,对应的哈希值为”45f8“ 爱丽丝在她和鲍勃之间要设置一个哈希锁,在输入了哈希值为”45f8“的密码时,必须打开锁定。 因为爱丽丝和鲍勃都不知道密码,并且这个锁必须要在输入哈希值是”45f8“的密码时才能被打开。 这个时候爱丽丝和鲍勃都不能打开这个锁,他们都不知道密码。随后爱丽丝将一个珠子推到这个哈希锁上,最后把时间锁锁在自己的珠子上,设置48小时后才能打开(3 )

在知道了卡罗尔秘密设定的密码哈希值后,爱丽丝设定了一个哈希锁,可以保护传递给鲍勃的代币(这个代币会被路由到卡罗尔那 ) 爱丽丝用时间锁锁定代币,如果鲍勃不能在48小时内完成付款,她就要把那笔钱拿回来。 

如果能在48小时内找到卡罗尔设定的密码的话,鲍勃就能得到爱丽丝发出的珠子。 与此同时,鲍勃知道卡罗尔会发送密码给他交换珠子。 为了促使卡罗尔行动,鲍勃可以和卡罗尔放上同一个哈希锁,把自己的珠子放在上面锁定,鲍勃再设定另一个时间锁(4 )

  他知道卡罗尔要打开哈希锁拿珠子珠子,卡罗尔必须输入密码。 很明显,这个密码和爱丽丝给鲍勃设定的是一样的。

如果卡罗尔在48小时结束前发布了爱丽丝的密码,鲍勃会看到爱丽丝提供的代币。 鲍勃设定相同的哈希锁,然后推送一个代币给罗尔,并用一个时间锁锁定这个代币。 卡罗尔获得鲍勃这个代币的唯一方法是鲍勃宣布就是公布鲍勃从爱丽丝那里获取代币的哈希锁密码。

卡罗尔看到自己想要得到的珠子,在锁上输入了密码"bondooggle" (鲍勃可以看到并记住)。这个锁的 CUP确认了"bondooggle"的哈希值是45 f 8,锁就可以打开了。 然后卡罗尔沿着绳子把这珠子移到自己这里(5 )

这个过程基石卡罗尔公开了自己的密码,打开密码锁,取出代币。获得卡罗尔的密码后,鲍勃同样解开锁着爱丽丝的珠子的锁(6 ),完成了整个支付交易。

也许你想知道鲍勃为什么是第一个参加整个过程的人,因为卡罗尔不参与合作,鲍勃的珠子一直被冻结到时间锁过期。在实际交易中,爱丽丝给鲍勃的资金可能会比她给卡罗尔的资金要多。 因为爱丽丝想用这种方式作为鲍勃的工作费用,避免不必要的风险。 在付款交易完成后,鲍勃的账户馀额比这笔交易完成前稍多一些,这也鼓励他完成这笔交易(或类似交易)

当然,你可能想知道为什么要在闪电网络交易中使用时间锁。 实际上,如果支付交易由于各种各样的理由而没有成功的话,时间锁定可以让交易者收回自己的资金。 例如,如果爱丽丝把珠子转给鲍勃,也加入了哈希锁和时间锁,但是鲍勃没有处理这个交易,时间锁就能帮助爱丽丝找回寄给鲍勃的珠子。 因为她只要等着时间锁的期限到期就好了。 在这期间,鲍勃需要卡罗尔的密码,鲍勃必须将珠子交给卡罗尔才能获得密码,所以对鲍勃来说需要转出一个珠子,才可以取回一个珠子。

闪电网络的基本原理基本上就是这样。闪电网络能够帮助比特币实现其作为日常交易的支付方式的宏观前景实现。它很有可能将比特币转变成功能性货币。 但是,为了实现这一点,大部分的日常交易都需要通过闪电网络的支付路径来处理,区块链只会是作为“安全的退路”来确保交易的诚实而存在。


联系请扫码
活动会务
免费学习群
商务合作
13215946687