闪电网络(一):多重签名交易

比特币的转账慢一直是一个令人诟病的问题。正常情况下,一笔转账需要6个区块的确认,也就是大概60分钟。但这还只是在正常情况下,如果遇上交易拥堵,要等待的时间也许超过几天。

本身的慢加拥堵,大大降低了比特币的可用性。之前我们讲过的大区块扩容和隔离见证,对拥堵有一定疗效,但治标不治本。而闪电网络,才是真正解决比特币慢和拥堵的特效药。

我们今天先学习闪电网络的预备知识:多重签名交易。

虽然我们之前花大篇幅对比特币的交易原理进行了介绍,但其实只讲了最普遍的那一种交易类型,而比特币的交易类型一共有5种:P2PKH、P2PK、MS、P2SH、OP_Return。其中:
P2PKH(Pay-to-Public-Key-Hash)就是我们前面详细介绍的类型;

P2PK(Pay-to-Public-Key)是P2PKH的简化,锁定脚本只有一个公钥,解锁脚本只有一个签名;

OP_Return在0704那篇讲元币的文章有提到过,它类似于以太坊用于合约布署的交易;

MS(Multiple Signatures)和P2SH(Pay-to-Script-Hash)则是多重签名交易,后者是前者的简化版本。

当然,如果再加上隔离见证的话,这些又都有一个隔离见证版本的交易类型。

我们知道,一笔普通的交易由A转给B,A用自己的私钥签名就可以。但多重签名交易不同,一笔交易需要多方签名才能生效。

根据参与方和需签名数的不同,多重签名交易可以分成很多种类型,比如:2-of-2多重签名交易,是指有2个参与方,且双方同时签名才有效;2-of-3多重签名交易,是指有3个参与方,且只需3方中的任意两方签名,交易便有效。

能够进行多重签名交易的地址叫多重签名地址,多重签名地址与普通地址不同,普通的比特币地址通常是“1”开头,而多重签名地址是“3”开头(用于隔离见证交易的地址也是“3”开头)。

但是,多重签名地址就是通过普通地址生成的,比如,2-of-3多重签名地址,就是通过参与三方的公钥地址,根据一定算法生成的,而且生成时要设定好“参与方(3)”和“需签名数(2)”两个参数。

从多重签名地址的生成方式来看,它没有对应的私钥,这是与普通地址相比的一个很大的不同。从这一点来看,是不是非常类似于以太坊里的合约地址?

好,假如现在由A、B、C三个普通地址构造了一个2-3(2-of-3)的多重签名地址,用于收发比特币。首先,如果这个多重签名地址是做为交易的目的地址,也就是做为比特币的接收方来说的话,跟普通地址是没区别的。

但是,当它做为发起方,要发起一笔交易时,会有些不同,比如A和B要发起一笔交易,从这个多重签名地址转比特币给另一个地址H(H是普通地址还是多重签名地址都没关系,对于发起方来说无区别)。

首先,这笔交易的解锁脚本与普通交易不同,它会将A、B、C三个地址的公钥写进去,同时将参与方“3”和需签名数“2”也写进去。同时,解锁脚本里的数字签名是这么来的:1、构造交易;2、A(或B)用自己的私钥先对整个交易签名,然后将签名填入交易;3、B(或A)用自己的私钥再对第2步生成的交易进行签名。

交易广播后,其他节点首先会检查这个地址是什么类型的多重签名地址,然后再用解锁脚本里的那些公钥对这笔交易进行验证,如果能满足2-of-3这个条件,交易便算通过。

下一篇,我们来看看如何利用多重签名交易来构建闪电网络。

你可能感兴趣的:(闪电网络(一):多重签名交易)