闪电网络的原理有点复杂,容易烧到脑,要小心了。
闪电网络由闪电通道构成,闪电通道就是一条条地用于点对点转账的通道,而建立闪电通道的前提是必须先有一个资金池。所以,本篇我们就以A和B之间的闪电通道为例,先拿“构建资金池”来做开胃菜。
所谓的资金池构建,其实就是A和B各将一些比特币(此例是各转2个)转到一个由他俩控制的2-2多重签名地址。可以把这个2-2多重签名地址看做第三方,A和B在这个第三方存一些比特币做保证金,为以后的相互转账提供基础。
如果A和B是互相信任的,那这事就好办,各自将比特币转到那个多重签名地址就可以了。但如果双方不信任,事情就麻烦一些。比如A担心将自己这份比特币转到多重签名地址后,B不转了,而且也不提供签名协助A将多重签名地址上的币转回给A,那这时候,A的这些比特币就永远卡死在那个多重签名地址了。虽然B这么做对自己也没半毛钱好处,但也不排除有人就是要干这种损人不利己的事。
那么,如何在A和B互不信任的情况下,构建起一个资金池呢?
如图:
第一步:A用A1的公钥和B用B1的公钥生成两个2-2多重签名地址,咱们暂且称它为“A1B1多重地址”(后面都沿用这种格式)和“B1A1多重地址”。多重签名地址咱们上篇详细讲了,稍微复习一下:所谓2-2就是指该多重签名地址是通过2个普通地址的公钥构建的,而且发起交易时需要2方的私钥同时签名才能生效。所以,这个多重地址既然是A和B创建的,自然也只受A和B控制。
注:这两个多重签名地址虽然都是由A1和B1生成,但是在生成的过程中,把A1放在前面,还是把B1放在前面,生成的是完全不一样的地址,所以,我们把A1放在前面生成的多重签名地址称为“A1B1多重地址”,把B1放在前面的称为“B1A1多重地址”。
第二步:A构造一笔交易,转账给B1A1多重地址2个比特币,但A仅仅是构造这笔交易而已,既没有对它签名,更没有广播到比特币网络