如何保证交换上一次交易的哈希密文过程的完整性

对于闪电网络技术,双方在进行下一次支付之前,需要先作废前一次的交易记录账本。

他们之间是通过互相发送前一次的哈希密文来作废交易记录账本的。

但是交换在物理上如果不是同时进行,如何解决,一方发送后,另一方却不发送的情况。我看了一下交易签名内容,如果不能在一次通讯中完成双方的密文交换,肯定是先给的一方吃亏,他相当于交出来主链上交易的主动权。

“建立第二笔交易B之前,两人会相互交换第一笔交易中的密文,即对方第一把锁的钥匙。这么做的目的在于作废第一笔交易记录A,使得两人都只能承认最新的交易记录B有效。
设想Bob在第一笔记录中拥有6个比特币,而第二笔记录变成了5个,那么如果他想作弊去签名并广播第一条记录呢?
结果是他将失去通道内所有的比特币!

Bob 在第一笔交易记录有6个比特币,第二笔交易后有5个,说明第二笔交易是 Bob 转1个比特币给 Alice。这时候 Bob 可以先问 Alice 要一个有 Alice 签名和 Bob 的新的哈希锁定值的用于关闭通道的交易,关闭的时候是两人各有5个比特币:Alice 直接收5个,Bob 延时收5个。拿到这笔交易后,如果 Bob 想完成转1个比特币给 Alice 的交易,需要主动把自己上一次的(按照 Alice 6个比特币,Bob 4个比特币关闭通道)交易中的哈希锁密文告诉 Alice,这样以后 Bob 就不能按照自己拿6个比特币的方式关闭通道了,只能按照新的交易中自己延时拿5个的方式去关闭。

但是此时 Alice 手里的关闭通道的交易还是 Alice 拿4个,Bob 拿6个,如果她选择用这笔交易关闭通道的话相当于最后一次 Bob 转给她1个比特币的交易没有完成。这时她需要选择一个新的哈希锁定值,做一笔对 Bob 有利的两人各拿5个比特币的关闭通道交易,然后让 Bob 签名。如果 Bob 不签名,则 Alice 可以认为转1个比特币的交易还没完成。Bob 签名并把这笔交易传给 Alice 以后实际上就已经完成了交易。

此时 Alice 手里有两个关闭通道的交易,一个是旧的先给 Bob 6个比特币的,一个是新的先给 Bob 5个比特币的,Bob 手里有一笔可以有效关闭通道的交易,是先给 Alice 5个比特币。实际上 Alice 并不会使用旧的那笔交易关闭通道,否则她自己吃亏,所以这个哈希密文交换的第二步可有可无。

那笔旧的关闭通道交易中 Alice 的哈希锁定的密文只要在以后使 Alice 余额低于 4个比特币的第一笔交易之前发给 Bob 都可以。

交易的全过程中两个人始终都有单方面关闭通道的能力。区别在于进行到一半的时候,Bob 关通道会确认最后转给 Alice 1个比特币的交易,Alice 关则不会确认这笔交易。

当全部完成后 Alice 拿到了新的关闭通道交易,这时候她才会在闪电通道内宣布确认最后一笔交易。如果她不承认,Bob 可以关通道并在闪电通道外确认这笔交易,因为 Bob 最新的关闭通道交易有 Alice 的签名。

杨博士,我现在担心的是,第一次交易之后,Alice和Bob开始进行第二次交易,他们俩为了完成第二次交易,需要先交换第一次交易里面的哈希密文,来作废第一次交易的内容。

这个没有问题的。

但是,如何保证交换上一次交易的哈希密文过程的完整性?

因为,如果Alice先发送上一次交易相关联的哈希密文给Bob,但是Bob却没有发送Bob的上次交易相关联的哈希密文给Alice,结果就是Alice非常被动,因为她已经失去了把交易提交给主网的主动权,因为只要她提交第一次交易的账本,她就可能损失所有的BTC,所以她只能选择不提交主网,那么她就可能永远拿不回主网合约里面的5 BTC

请看我发的第一条里面的过程。如果是 Bob 转账给 Alice,他必须先把自己的密文给 Alice,而 Alice 可以在交易确认后才把她的旧的密文给 Bob。

这个问题,其实也可以用密码学来保证交换密钥的完整性的,但是不知道闪电网络是怎么解决的?

在拿到新的关闭通道交易之前,永远不会先把之前的哈希密文告诉对方。

那这句话是不是有歧义了:

“建立第二笔交易B之前,两人会相互交换第一笔交易中的密文,即对方第一把锁的钥匙。”

这里写的是“之前”,是不是不太严谨。

“建立交易之前”的表述不严谨,准确说应该是“完成第二笔交易之前”。因为从建立交易到最终确认有很多步,交换是在这个过程中发生的。这个过程有点复杂,所以文章里省略了对建立和确认交易的过程的描述。

如果理解成最终在闪电网络的账本上“建立交易”的话也说得通。

感谢大佬解惑!