硬核:闪电网络技术分析
-
闪电网络,Lightening Network —— LN
BTC主网之外的链下网络。
目的:解决比特币BTC扩容,交易即时确认和手续费高的问题。
方法:下载闪电网络客户端到本地,安装部署,登录即成为网络节点。
浏览器:
-
https://1ml.com/ 数据Chart类
-
https://explorer.acinq.co/ 可视化拓扑图(基于全球地图)
-
-
传统BTC转账方式 vs 闪电网络转账
传统:在BTC客户端上发起交易,广播,矿工记账,6个区块后确认,耗时基本为1个小时。
闪电网络:网络由无数双向通道构成,通道内交易即时确认且无手续费,通道关闭时,同步最后一笔交易记录上主网,即BTC链上。
-
使用双向通道交易的步骤:
-
Step1. 建立通道 Build Channel
Alice 和 Bob 之间想要互相转账BTC,他们先各自在BTC主网上发起一笔交易,转账一定数目的BTC到一个需要多重签名的地址(满足2/2模式,即该地址需要他俩共同签名才可以转移地址内的BTC),锁定两人的交易总量。如果Alice发了5个,Bob发了5个,那该地址就存在至少10个BTC,那10个就是A和B可以在闪电网络中交易的总量。
-
Step2. 通道内交易 Inner Trade
开启通道后,双方可以进行交易,各自创建在通道内的交易,双方共同记账。
tx1. (Alice:5,Bob:5)
tx2. (Alice:6,Bob:4)
tx3. (Alice:3,Bob:7)
txN .......P.S. 主网只能看到Alice和Bob共同的多签地址上的BTC总量变化。
-
Step3. 关闭通道 Shutdown Channel
方法一:Alice和Bob达成一致,在BTC主网共同的多签地址上,发起两笔交易,转账属于各自的BTC到各自的账户,然后关闭通道。——“和平分手”方法二:Alice或Bob有权单方面解约关闭通道,并广播最后闪电网络中最新的一笔交易状态,但是因为通道拥有惩罚机制,即在交易中会设置一段脚本代码,在一定的时间后(代码中会设置,比如:1000个Block之后),才可以获得交易中的BTC,即延迟获得。
-
-
双向通道中的记账原理
——Alice和Bob各自在闪电网络的客户端上创建一笔不可能完成的交易。
举例:
Alice和Bob的共同账户有10BTC,Alice和Bob分别占有一半。
共同账户地址,简写Addr。第一笔记录即(Alice:5,Bob:5)
如果第二笔为(Alice:4,Bob:6)
Alice端记账:
Alice用客户端创建两笔交易,遵循UTXO- Addr -> Alice,数量:4个BTC
- Addr -> 多签地址2 ,数量:6个BTC
Bob端记账:
Bob用客户端创建两笔交易,遵循UTXO- Addr -> Bob,数量:6个BTC
- Addr -> 多签地址2 ,数量:4个BTC
多签地址2满足(1/2)的模式,即单方有权利控制资产的转移,
但是因为创建的交易只用于记账,所以记账的一方会问另一方要一个经过哈希的值作为哈希锁来防止交易的发生。例如:Alice创建的交易记录,多签地址2中需要自己的私钥签名+Bob的密文(用来产生哈希锁的输入)才可以解锁,或者Bob可以通过使用自己的私钥签名提出单方面的解约,但是需要等待一段时间,可能是比如1000个区块之后(上文我们提到的非和平分手模式的惩罚机制)。
同样在Bob创建的交易记录中,Bob也需要向Alice索要哈希锁,Alice也有权力提出“非和平分手”。总结:【未完成的TX的集合】= 【账本Ledger】
账本结构图:
-
如何保证记账中的一方不作恶?
每次要创建新交易记录,即新一轮记账时,双方互换上一轮交易记录哈希锁的密文。
如果不交换密文,Alice和Bob中任意一方都可以选择对自己有利的交易记录(比如自己持有更多BTC的记录)提出解约关闭通道。
交换密文的好处是,如果有一方想要作恶,广播了之前的交易记录,那另外一方可以立刻获得属于自己的资产,同时因为知道过去交易记录中对方的密文,就可以赶在惩罚机制设置的必要等待时间前去解锁对方的资产,让对方一个BTC都拿不到。
-
闪电网络中,跨多人交易如何进行?
例如:Alice和Bob有通道,Bob和Carol有通道,这样Alice就可以直接给Carol转移BTC。
通过Bob作路由,详细路径和方法如下:
-
Carol和Alice确定BTC数量,Carol给Alice一个哈希锁,且只有Carl知道哈希锁的密文Input。
-
然后Alice发起一个转账请求给Bob,基于HTLC(哈希时间锁),即在一段时间内,如果Bob无法提供准确的密文来解锁,则Alice转账的Token将原封不动的还给他自己。
-
Bob发起跟Alice一样数量Token的哈希锁的转账请求给Carol,Carol通过自己的密文解锁Bob的交易,获得和Alice发起的交易等额的BTC,并将密文传递给Bob。
-
Bob拿着Carol给的密文找Alice解锁Alice的BTC,同时还可以赚取Alice给的路由费。
过程2的HTLC设置的时间长一定要大于过程3的,因为Bob必须拿到密文之后才可以解锁Alice的费用。
-
-