闪电网络介绍
比特币链下扩容方案,正在实施,截止2019年3月,闪电网络有超过 37,000 通道,通道内含有超过764 bitcoins 。
闪电网络白皮书《 lightning-network-paper 》
闪电网络包括两大部分,RSMC&HTLC
RSMC图示
RSMC(可撤序列成熟合约),两个单节点通过建立通道来进行链下交易。
1.建立通道
1.1 A,B双发各构建funding tx交易(两者的交易内容完全一样),交易输入为A 0.5 ,B 0.5,输出为A&B多重签名地址,但不签名。
1.2 然后,A ,B分别建立如下commitment tx合约,以A为例,构建交易前需要将自己的地址告诉对方 commitment tx的第一个交易的输入为funding tx中的 A&B多重签名地址,输出有两个,第一个为给B1,第二个为一个A1&B1多重签名地址(A与A1都属于A,但私钥不同),第二个交易里输入为A1&B1多重签名地址,输出为A1。
A将合约交给B,B对两个交易签名(B,B1),签完后发回给A,A进行签名(A,A1)。
B的操作和A对称。
1.3 完成上述交换签名后,A,B对funding tx进行交换签名,然后广播到比特币链上。
2.交易更新
A,B分别构建新的交易如下
A发给B让B签名(B,B3),收到后自己签名(A,A3),为了废除旧的交易,将旧交易的私钥A1发给B,代表自己放弃就交易。
B的操作和A对称。
3.通道关闭
可能的情况:
a)A在没有交换对commitment tx签名,先签的funding tx:
如果B怀有恶意,那么A在没有B配合签名下,无法将地址里的自己存入的钱转出,造成资金被挟持
b)A将旧的交易发布到比特币区块链中
B首先得到0.5个BTC,由于B拥有A1(A给了B)以及B1,他立即将A1&B1地址里的钱转到自己的地址里,这样,B获得了所有钱,A失去了所有钱作为惩罚。
c)如何验证A给B的私钥A1是真的
B拥有A1地址,可以通过私钥-公钥-地址进行验证。
d)签commitment tx时,A先签了再给B签可以吗?
不行,若B后签,他可以将这份交易保存,在更新交易后获得旧交易的秘钥,然后将旧交易广播出去,将钱偷光。签commitment tx 时,交给对方签然后再自己签。