隔离见证在进入比特币网络之前已经进入了最终测试阶段。这是个好消息,最重要的是,由于创新引入了容量增加以允许网络上更多的交易,同时还解决了交易延展性.

并且,它引入了脚本版本控制-比特币协议的扩展,可以实现全新的创新类别.

这些迫在眉睫的创新之一已经在一些比特币开发人员的愿望清单上占据了一段时间:Schnorr签名.

随着即将发布的隔离见证,Schnorr加密签名算法的实施可能会在不久之后实施,从而有可能一口气提高比特币的可扩展性,效率和隐私性。.

这是如何做.

签名

首先,简要回顾一下:什么是签名?

比特币的核心是称为“公钥密码术”的数学技巧,该密码系统使用两种“密钥”(实际上是数字字符串):私钥和公钥.

私钥和公钥在数学上是链接的。但是,从私钥生成公钥很容易,但实际上从公钥生成私钥几乎是不可能的。这是一条“单向街”。

为了从某个特定的比特币地址上花费比特币,必须证明私钥的“所有权”(或知识),私钥是指与该地址相关联的公钥。为了证明私钥的所有权,而不必透露私钥,使用了加密签名.

通过使用交易数据和私钥执行计算来创建签名。这就是公开密钥密码术的神奇之处:知道了公开密钥,任何人都可以看到是否使用了正确的私有密钥来创建签名。无需知道私钥本身.

因此,私钥的“所有者”可以签署交易并花费比特币,而不必担心其他人可以使用该私钥并窃取比特币;私有密钥永远不会公开,并且签名仅对特定交易有效.

(有关比特币中公共密钥密码学的更详细说明,请参见本文。或者,请继续阅读。尽管基本签名概念很重要,但细节对于本文的目的并不关键。)

施诺尔

那么,Schnorr签名是什么??

Schnorr以其发明人Claus-Peter Schnorr的名字命名,是一种签名方案:将私钥,公钥和签名链接在一起的一系列数学规则。许多密码学家认为Schnorr签名是本领域中最好的,因为它们提供了很强的正确性,没有延展性,相对较快地进行了验证,并且(重要的是)支持多重签名:可以将多个签名合并为一个新的签名.

但是,到目前为止,尚不可能在比特币中使用Schnorr。另一种签名方案,椭圆曲线数字签名算法(ECDSA),已植入到比特币协议中,要进行更改,将需要硬分叉.

那就是“隔离证人”进来的地方.

使用隔离见证,所有签名数据都移至交易的单独部分:见证人,该见证人未嵌入“旧的”比特币协议中。而且由于脚本版本控制,证人中几乎所有应用的规则都可以通过软分叉进行更改。包括使用的签名方案的类型.

这为施诺尔打开了大门.

容量

最有利于比特币的Schnorr属性是多重签名聚合.

许多比特币交易都包含多个输入,指的是发送比特币的地址。 (这可以与现金支付通常由多个较小的钞票和硬币组成以支付较大的金额的方式进行比较。)现在,所有这些输入都需要具有自己的签名,这意味着所有这些签名都必须包含在交易中,所有必须通过网络传输,并且必须全部包含在一个块中.

但是,对于Schnorr,所有输入将只需要一个组合的签名即可代表所有这些不同的签名。这提供了明显的数据优势,因为在事务中必须仅包含一个签名,必须在网络上传输仅一个签名,并且在块中必须仅包含一个签名。这意味着还有更多的交易空间.

例如:

比特币核心(Bitcoin Core)提出的隔离证人(separated Witness)对见证人中包含的所有数据(而非原始数据块)提供(大约)75%的折扣。因此,将1兆字节的见证数据“称重”为25兆字节,这将为原始块中的75兆字节交易数据留出空间,总共1兆字节.

如果聚集的Schnorr签名将见证方数据的总大小从1兆字节减少到5兆字节,则将这5兆字节折算为0.125兆字节,从而在原始块中最多保留0.875兆字节的空间。 (容量增加了约17%。)

增加空间的确切数量取决于区块中包含的交易类型。但是,比特币核心开发人员埃里克·隆布罗佐(Eric Lombrozo)的粗略估计表明,施诺尔签名最终可能会将总容量增加40%或更多–这是“隔离见证”已提供的增加60%到100%的基础.

多重信号

如上所述的容量增加对于常规交易是正确的,因为许多交易包括一个以上的输入。但是,在多重签名交易‒单个输入本身需要多个签名(通常来自不同人员)的交易的情况下,该优势可能会更大。.

与普通交易一样,任何多重签名交易中都只需要包含一个签名即可。无论需要多少签名,无论涉及多少人.

这为通常需要的一小部分数据打开了更为复杂的智能合约构造之门。无论是三笔交易中的三笔交易,三笔交易中的三笔交易或一百笔类型的一百笔交易,都将携带与典型的单签名交易相同数量的签名数据.

隐私

第三,Schnorr签名可以提供另一个有趣的好处:激励性隐私.

如前所述,一个事务可以包括多个输入。最常见的是,这些输入是指全部由同一个人控制的地址。 (以多个纸币和硬币为例。)

但是比特币核心开发人员格雷戈里·麦克斯韦(Gregory Maxwell)发明了一种增强隐私的技巧,  投币, 允许不同的用户将其所有交易合并为一个交易。一笔交易将包括来自不同付款人的多个输入,这些输入将钱发送到属于不同收款人的多个输出.

(这可以比作是一群人将他们的钞票和硬币扔到篮子里,他们用来在不同的商店购物来购买他们想要的所有产品。每个人都会得到该人支付的商品,但是不太可能由任何人的“自己的”账单来为该人购买的产品付款。)

如果操作正确,CoinJoin是改善比特币协议隐私的好方法,因为不清楚哪些输入确切地支付了哪个输出,更不用说哪个人支付了哪个人。.

CoinJoin不是一个新概念。但是直到现在,CoinJoin通常还是有点麻烦。因此,大多数人都不会打扰。而且由于大多数人都不会打扰,因此打扰者会自动被标记为可疑;首先可能会破坏使用CoinJoin的目的.

但是Schnorr签名可以为CoinJoin添加新的优势。它使CoinJoin交易中的所有参与者不仅可以合并他们的交易,而且还可以合并他们的签名。这样做意味着事务的大小实际上将小于所有单个事务的总和。反过来,这意味着矿工通常会收取较小的费用来处理交易.

因此,有了Schnorr,CoinJoin不仅会增加隐私,而且-重要的是-会降低所有参与人员的成本。确实,使用最私密的选项会产生成本优势,这可能会使它成为每个人的首选–大大增加了所有人的比特币隐私.

注意:在比特币中实现Schnorr签名的过程仍处于概念阶段。虽然大多数比特币核心开发人员似乎都认为Schnorr签名可以安全地部署在比特币中,但现在断言还为时过早.

感谢Bitcoin Core开发人员和  区块流 联合创始人Pieter Wuille博士(提供信息)以及Bitcoin Core开发人员和  西弗雷克斯 首席执行官Eric Lombrozo进行了校对和其他建议.