多重签名技术让比特币可以实现非常丰富的功能,例如支付通道和闪电网络,这个看似复杂的概念其实基本原理非常简单,下面来介绍一下。

何为多重签名

如果一个交易需要两个或者更多签名才能生效,那么这种情况就叫多重签名。

多重签名和单签名不同。标准的比特币交易只需要进行单签名,意思是只需要一个私钥签署交易就可以转账成功了。而多重签名就要求交易必须附上来自多方的多个签名。

多重签名交易有时候也被叫做 M-of-N 交易。M 指的是交易生效所需要的签名数量,N 指的是和本次交易相关的各方的总数量。例如:

  • 1-of-2:Alice 和 Bob 有一个共用的比特币地址,他们其中任意一个人的签名都能够花费掉地址中的钱。
  • 2-of-2:Alice 和 Bob 有一个共用的比特币地址,他们两个要共同签名才能花掉地址中的钱。

当然,N 的取值不局限于2,也可以是3、4 甚至更多,M 的值只要小于等于 N 的正整数即可,不同的 M 和 N 取值可以适合不同的应用场景。上面所说的各方共用的比特币地址就是一个多签名地址。

多重签名地址

多重签名地址是一种特殊类型的比特币地址,想要转出地址中的钱就需要执行多重签名交易。

Bitcoin Wiki https://en.bitcoin.it/wiki/Multisignature 上介绍了生成一个 2-of-3 的多重签名地址的过程。简单来讲,一个 M-of-N 的地址需要收集 N 方的地址信息来生成。币一旦转入这个地址就需要 M 方共同签名交易,才能把币转出。

多重签名地址是 P2SH 类型的地址。普通的比特币地址是由公钥做哈希后得到的,而多重签名地址基于脚本哈希,所以能够实现复杂的交易。关于 P2SH 的原理,这里我们就不展开了。

总之,多重签名地址是多重签名交易的前提。

2-of-3 第三方托管服务

多重签名的意义显然是防止有人单方面转走地址中的钱,从某种角度来提高地址中币的安全性。随着业务类型的不同,M 和 N 的各自取值也会不同,下面我们以支付宝那样的第三方托管服务为例,看一下多重签名的实际业务场景。

  • 第一步,生成一个 2-of-3 的多重签名地址,涉及到的三方分别是:买方、卖方和中间人。
  • 第二步,买家先把货款存入多重签名地址。
  • 第三步,卖家看到多重地址中的款项之后给买家发货。
  • 第四步,买家收到货之后发起一个多重签名交易把钱转给卖家,并附上自己的签名。
  • 第五步,卖家签署这个多重签名交易,拿到货款。

以上是一个理想条件下的操作过程,只需要买卖双方同时签署交易就可以把钱转给卖方了,无需第三方中间人的参与。

但是,如果买卖双方出现争执,就需要中间人的介入了。例如,卖方发货后,买方声称自己没有收到货,于是拒绝签署交易,这时中间人就可以参与仲裁了。中间人可以和买方共同签署交易,把钱退还给买方,或者和卖方共同签署交易,把钱转给卖方。但是,如果中间人签署一个把钱转给自己的交易,那么买卖双方都会拒绝在这个交易上签名,所以中间人想偷走地址中的钱也是不可能的。

以上就是基于 2-of-3 的多重签名来实现第三方托管服务的整个过程了。

总结

比特币的多重签名技术,我们就介绍到这里了。整个技术基于多重签名地址,一旦钱存入了比特币 M-of-N 多重签名地址,就需要 M 方签署交易才能将钱转出。多重签名地址给比特币的创新带来多种可能。

参考: