想象一下,比特币的交易速度每秒只能处理2到7笔交易,这就像是在银行排队转账一样繁琐。一旦交易量激增,等待时间可能会非常长。这种支付方式显然难以满足人们的需求。
而闪电网络就像移动支付一样,你可以将一部分资金存入移动支付账户,然后与任何支持该服务的商家或个人快速进行转账。例如,在一个深夜,阿平和阿菜无聊至极,决定通过移动支付互相转账,每次转账一元,看谁转得更多。如果按照传统的银行模式,他们可能需要排队一整夜才能完成几次转账,还要支付手续费,这显然是不可行的。而通过移动支付,一个晚上他们可以进行上千次转账,最终阿菜因为手速更快,以微弱优势胜出。 在结算时,移动支付平台会代替他们去银行排队,对柜台说:“阿平账户余额减一,阿菜账户余额加一。”这样,我们就能大致理解闪电网络解决方案的基本逻辑了。 接下来,让我们探讨一下“闪电网络”如何在没有信任的情况下保证资产交易的安全性,并确保交易能够安全地返回比特币主链上确认。以下将介绍几项闪电网络的关键技术。 单向支付渠道(One-Directional Payment Channel) 在闪电网络出现之前,单向支付渠道的概念就已经存在,但其应用相对有限。例如,Alice可以向Bob开启一个单向支付渠道,其中Alice拥有10btC,Alice可以向Bob进行链下交易,但这个渠道是单向的,Bob不能通过相同的渠道向Alice支付。 如果Bob在收到1颗比特币后: - 可以选择关闭渠道,将交易广播到主链,矿工进行确认,从而从Alice那里获得1颗比特币。 - 或者,如果Bob预计Alice会继续支付,可以选择保持渠道开启。 问题在于,Bob拥有最后的签名和广播权,如果Bob不诚实,可以让渠道一直开启,这样Alice就永远无法结算,10btC就会被困在这个支付渠道中。因此,支付渠道通常会搭配一个配套措施——“时间锁”。 时间锁CheckSequenceVerify(CSV) 时间锁是指在创建通道时约定一个时间,一旦时间到达,通道就必须强制关闭,双方签署的交易将上链进行确认,没有签署的余额将被返回给原始持有人。 Alice和Bob在创建通道时,约定在1000个区块后通道必须关闭。因此,Bob必须在时间到达之前签署并广播交易,才能获得Alice给他的1颗比特币。如果Bob迟迟不签署广播,一旦约定时间到达,他将一毛钱也拿不到。 双向支付渠道(Bi-Directional Payment Channel) 单向支付渠道之所以简单,是因为交易是单向的,只允许两个人中的一方发送交易,另一方广播交易,不存在信任问题,但应用场景相对有限。 鉴于单向渠道在应用上的不足,闪电网络旨在打造无信任的双向支付渠道,让渠道的双方能够自由进行交易。那么,闪电网络如何避免交易双方产生信任问题,实现双向支付渠道呢? 信任问题包括: - 双向支付渠道代表双方都必须有部分资金在渠道中,那么资产是否会被卷走? - 如何确保最终结算不会出错? - 支付渠道是P2P网络,没有验证机制,谁来保护账本? 下面我们将介绍若要实现双向支付渠道所需的技术,这也是闪电网络的核心技术——RSMC和HTLCs。 RSMC 可撤销顺序成熟度合约(Revocable Sequence Maturity Contract) RSMC实际上是一个资金池,在打开支付渠道时,双方将资产放入这个资金池中,并用一把钥匙锁上,交易时不会真正动用该笔资金,而是通过合约的方式记录两人在资金池中的剩余资产,等到关闭通道时,才会打开资金池进行结算。 双向支付通道如何运作? 从头到尾,涉及的双方只需要与比特币区块链进行两次互动。一次是打开支付渠道,另一次是关闭渠道。在这之间发生的所有其他交易都不直接与主链接触,这意味着,只有在双方都同意并签署的状态下,交易才会被确认。 假设Alice和Bob打算频繁进行交易,双方同意开辟双向支付通道,并约定在1000个区块后强制结算。Alice和Bob必须先在链上开启一个多重签名钱包,才能开辟双向支付通道。 此时,双方会各自生成一组Secret Key(钥匙)和Hash(锁头),Hash会交给对方,Secret Key自行保管。在开辟双向支付渠道后,Alice和Bob每次支付都像签署一份合约,在签署新合约之前会废弃旧合约。需要注意的是,当旧合约作废的同时,彼此将取得对方旧合约的Secret Key,而合约的内容就是关于如何重新分配资金池的资产。 共同签名钱包里的钱只能在以下三个条件下解锁: - 锁定时间到了。 - 任何一方通过对方的Secret Key从他们设置的多重签名钱包中解锁资金。 - 合约有双方签名,且其中一方广播。 需要注意的是,如果一方决定关闭支付渠道并广播交易,广播的那一方将不得不等待到交易签名时设置的预定时间,才能收到他那部分的资金。 会不会有人作恶? 例如,闪电网络中的其中一位参与者广播对自己有利的旧合约,以便进一步谋取利益,而非按照正常程序广播最新的合约。 此时,上述的两个值得注意的点就派上了用场: - 当旧合约作废的同时,彼此将取得对方旧合约的Secret Key。 - 如果一方决定关闭支付渠道并广播交易,广播的那一方将不得不等待到交易签名时设置的预定时间,才能收到他那部分的资金。 假如Alice企图广播旧合约恶意结算关闭通道,根据上述闪电网络的机制,Bob和Alice都拥有对方旧合约的secret key,且Alice必须等到预定的时间到,才能拿到旧合约中Alice的那份btC。因此,Alice只要广播旧合约,Bob就可以在Alice等待的时间中使用旧合约的secret key将Alice的那份btC取走。这样一来,Alice不仅没有成功广播对他有利的旧合约,还为自己的恶意行为付出了代价。 到这里,我们就把双向支付通道的运作方式全都说完了。接下来要介绍的是,双向支付通道如何编织成为支付网络。 支付网络 现在,除了Alice和Bob之间有支付通道之外,Bob也和Carol开了支付通道。如果Alice要向Carol支付1颗比特币,她应该怎么做呢? Alice可以选择直接与Carol建立支付通道,但这需要对Alice和Carol来说在主链上建立多重签名钱包,还要打币,不仅麻烦,而且需要额外成本。相信大家已经想到了解决方案,Alice只需通过现有的支付通道,先把1btC打给Bob,然后Bob再将1btC打给Carol,这样就可以在不承担额外成本的情况下完成交易。但是,这也存在一些信任问题。 Bob可能不老实,拿到Alice的btC后私吞,不交给Carol。Carol拿到了钱,却跟Alice说他没有拿到钱。 如何解决这部分信任问题,就要依赖闪电网络的另一项核心技术——“HTLCs”。 HTLCs 哈希时间锁合约(Hash Time-Locked Contracts) 要解决上述的信任问题,必须做到以下两点: - Alice要确保Carol确实收到了比特币。 - 必须确保Bob不会拿走这笔比特币。 还记得我们之前介绍过的公钥与私钥吗?HTLCs就是用同样的概念来延伸的。我们把钥匙想成私钥,锁头就是公钥。假设Alice需要付给Carol 1个btC,收款方Carol会创建一个Value(钥匙)和对应的哈希值(锁头),然后把锁头交给Alice。 这里就是技术的精华。 “只要能拿出钥匙就代表他是Carol。” “只有Carol拥有钥匙,换言之,只有Carol能够打开锁头。” 在这个前提下,Alice和Bob提出一份合约,如果Bob在3天内(Lock time = 3 day)提供哈希值对应的Value,Alice就给Bob 1.0001 btC,超过3天,btC原路返回给Alice。 Carol也同样与Bob签订一个合约,只要Carol提供哈希值对应的Value,就必须给Carol 1 btC。 于是,Carol向Bob提供Value,从Bob那里获得了1 btC。Bob将这个Value交给Alice,从Alice那里获得了1.0001 btC,这其中的价差0.0001 btC就给Bob作为手续费。 闪电网络的优势 闪电网络致力于比特币可扩展性问题的链下解决方案。如果成功,可能会大幅减少比特币区块链的负载,增加比特币的实际应用可能性。 通过使用双向支付渠道,闪电网络可以实现近乎即时且极低成本的交易。 闪电网络的局限性 与链上交易不同,如果接收方处于离线状态,无法进行交易确认,无法进行支付。 网络的参与者可能需要定期监控支付渠道,以保证他们的资金安全。 闪电网络较难支持大额付款。闪电网络交易时有时需要依赖中间人,例如,在Alice、Bob和Carol三人之间,Alice要发送1 btC的交易给Carol,中间需要经过Bob。如果Bob的余额不足1 btC,这笔交易便无法顺利完成,因此交易金额会受限于中间人的资产余额。 闪电网络的实用性取决于网络大小,若使用人数不足,闪电网络便难以发挥其价值。越多的人加入,闪电网络才会更加健全且完善,流动性也才能随之提升。标签: 数字货币
文章来源: 酷玩网
版权声明: 本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任