闪电网络属于状态通道技术范畴,是区块链技术的一个发展方向之一,其核心思想是将本来在链上结算的交易在链下通过状态通道维护中间态,并且在发生纠纷时回到链上仲裁。链上仲裁的公平性和安全性在博弈论上保证了链下交易的对手不会作恶。通过这种方式实现扩容。下面是闪电网络技术概要。
一、闪电网络——链下扩容方案 【1】当前比特币网络的问题?我们都知道比特币系统的交易吞吐量是非常之低的,为了解决比特币系统交易吞吐量低的问题,闪电网络被提出,它并不是通过增加区块大小等链上扩容方案,而是一种通过离线交易形式的链下扩容方案。
【2】闪电网络解决问题的思路——针对微支付场景要提升比特币系统的交易吞吐量,直接在链上广播大量的交易是不可行的,吞吐量是有限的,解决的办法是压缩交易。在微支付应用场景下,如果交易双方之间会进行大量的微支付交易,那么将所有这些微支付交易都上链是没有绝对必要的,那些中间状态其实可以不用上链,只要最终所有的微支付交易的最终状态上链就可以了,因为即使所有微支付交易上链,最后的状态也还是最终状态。所以,在链下,记录大量的微支付交易状态信息,而在链上,只对创建状态及最终状态上链。将大量的微支付交易压缩为少量链上交易。这样就大大提升了交易吞吐量。简要概括就是:将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。
【3】支付通道具体的是通过支付通道完成大量微支付交易。在支付通道打开后,参与方可离线发送任何数量的交易,无需广播到比特币的网络上。除了最开始创建支付通道(funding交易)和关闭支付通道是需要广播上链,其中间的交易过程是由一系列交易记录构成。创建支付通道类似于双发各自建立一个账本用来记录双发的交易记录,当不想再与对方交易时,可以关闭通道,根据账本中的交易记录进行最终结算,上链。
闪电网络中需要交易双发建立支付通道,但每次与不同的人进行交易都要新建立支付通道是很低效的(占用你大量的资金成本+时间成本)。例如A->C进行交易,可以是双发直接创立新的支付通道(A->C),但如果A->B,B->C已建立通道,此时可以通过A->B->C的方式进行交易。即,可以用已有的通道进行交易。
这样,随着新创立的支付通道越来越多,最终,所有的支付通道会形成一个巨大的网络,此时,只要你有一条与有这个巨大网络的支付通道,你就可以通过这个巨大的网络与任何人通过支付通道进行交易。
为了维护这个巨大的通道网络,需要激励人们贡献自己的支付通道,就像矿工可以获取手续费一样,如果有人用了你的支付通道,你可以收取一定的费用。当然,你也可以把费用设为负值,即使如果有人使用你的支付通道,你可以给他一笔钱。
到这里,闪电网络就形成了。
二、闪电网络主要工作机制闪电网络怎么保证链下可信交易?主要依靠RSMC和HTLC,RSMC保障了两个人之间的直接交易可以在链下完成,HTLC保障了任意两个人之间的转账都可以通过一条支付通道来完成。闪电网络整合这两种机制,就可以实现任意两个人之间的交易都在链下完成了。
【1】RSMCRecoverable Sequence Maturity Contract,序列到期可撤销合约。其主要原理类似资金池机制。
首先假定交易双方之间存在一个“微支付通道”(资金池)。交易双方先预存一部分资金到“微支付通道”里,初始情况下双方的分配方案等于预存的金额。每次发生交易(不能超过预存金额),需要对交易后产生资金分配结果共同进行确认,同时签字把旧版本的分配方案作废掉。 任何一方需要提现时,可以将他手里双方签署过的交易结果写到区块链网络中,从而被确认。从这个过程中可以看到,只有在提现时候才需要通过区块链。
任何一个版本的方案都需要经过双方的签名认证才合法。任何一方在任何时候都可以提出提现,提现时需要提供一个双方都签名过的资金分配方案(意味着肯定是某次交易后的结果,被双方确认过,但未必是最新的结果)。在一定时间内,如果另外一方拿出证明表明这个方案其实之前被作废了(非最新的交易结果),则资金罚没给质疑方;否则按照提出方的结果进行分配。罚没机制可以确保了没人会故意拿一个旧的交易结果来提现。