广告
首页   >    区块链   >    正文

比特币刚更新了自闪电网络后的最大技术拓展:Taproot和Schnorr

来源:二十三画生 2021-01-14 20:55:33

2021年1月14日,Bitcoin Core在GitHub上发布了0.21.0正式版源代码,距离上一个大版本0.20.0的发布接近6个月。在0.21.0版本中,最重要的变化是BitcoinCore已经植入了Schnorr Signature和Taproot相关提案的功能实现。Taproot/Schnorr概念在2019年5月由比特币核心开发人员Pieter Wuille提出采用。Taproot/Schnorr升级将是比特币自闪电网络上线后最大的技术拓展。那么什么是Schnorr Signature和Taproot?Schnorr 签名算法的优势是什么?Taproot是要解决什么问题?

2021年1月14日,Bitcoin Core在GitHub上发布了0.21.0正式版源代码,距离上一个大版本0.20.0的发布接近6个月。在0.21.0版本中,最重要的变化是BitcoinCore已经植入了Schnorr Signature和Taproot相关提案的功能实现。Taproot/Schnorr概念在2019年5月由比特币核心开发人员Pieter Wuille提出采用。Taproot/Schnorr升级将是比特币自闪电网络上线后最大的技术拓展。那么什么是Schnorr Signature和Taproot?Schnorr 签名算法的优势是什么?Taproot是要解决什么问题?
360截图20210114205549362.jpg
Schnorr 签名算法的诞生和落地

  外汇天眼APP讯 : 在现实工作和生活中,我们使用签名来表达对一份文件的认可,其他人可以识别出你的签名,且无法伪造你的签名。数字签名就是对现实签名的一种电子实现。

  Schnorr 签名机制最初由德国密码学家、数学家 Claus-Peter Schnorr 发明,Schnorr 数字签名也以他的名字命名。Schnorr 为他的签名注册了专利,因此这项技术虽好,但是很长一段时间内,一些应用无法直接使用它。直到 2008 年时,Schnorr 签名的专利过期。

  但由于业界没有广泛接受的具体实现方案,所以在同年发布比特币白皮书的中本聪,在当时并没有选择 Schnorr 签名方案,而是选择了当时更为成熟的 ECDSA 签名方案。

  随着 Schnorr 技术专利的过期,这项技术逐渐落地,在比特币社区 Pieter Wuille 等核心开发者的推动下,社区内开始认真考虑应用 Schnorr 签名替代现行的 ECDSA 签名,并以软分叉的方式进行升级。

Schnorr的优势

  比特币目前使用的 ECDSA 签名算法与Schnorr 签名算法,都属于椭圆曲线数字签名算法,它们使用同样的椭圆曲线 secp256k1 和哈希函数 SHA256,具有同样的安全性。Schnorr 签名算法主要有以下优点:

  第一,Schnorr 签名算法有可证明安全性。如果不知道 Schnorr 签名的私钥,即使有针对任意消息的有效 Schnorr 签名,也没法推导出其他有效 Schnorr 签名。而 ECDSA 签名算法的可证明安全性则依赖于更强的假设。

  第二,Schnorr 签名算法具有不可延展性(Non-malleability)。签名延展性的含义是,第三方在不知道私钥的情况下,能将针对某一公钥和消息的有效签名,改造成针对该公钥和信息的另一个有效签名。ECDSA 签名算法则有内在的可延展性,这是 BIP 62 和 BIP 146 针对的问题。

  第三,Schnorr 签名算法是线性的,使得多个合作方能生成对他们的公钥之和也有效的签名。这一特点对多重签名、批验证(Batch Verification)等应用非常重要,既能提高效率,也有助于保护隐私。而在 ECDSA 签名算法下,如无额外的见证数据,批验证相对逐个验证并无效率提升。

  第四,Schnorr 签名算法因为使用同样的椭圆曲线 secp256k1 和哈希函数 SHA256,能兼容目前的比特币公私钥生成机制。

Taproot的介绍和解决方案

  Taproot 升级可以视为默克抽象语言树(Merkelized Abstract Syntax Tree,简称 MAST)的一个应用。

  MAST 使用默克树来加密复杂的锁定脚本,其叶子是一系列相互不重叠的脚本(比如,多重签名或时间锁)。要支出时,只需披露相关脚本以及从该脚本通向默克树根的路径。MAST 又与支付到脚本哈希(Pay-to-Script-Hash,简称 P2SH)有关。但 P2SH 与常见的支付到公钥哈希(Pay-to-Public-Key-Hash,P2PKH)在表现上不一样,仍然有隐私保护问题。Taproot 要解决的问题就是让 P2SH 和 P2PKH 在链上看起来一样,以解决隐私保护问题。

  在介绍Taproot 的解决方案前,需要介绍下“协作式支出”和“非协作式支出”。涉及有限数量签名者的脚本,可以分解成两部分:第一部分是多重签名,所有签名者都同意某一支出结果,称为「协作式支出」;第二部分称为「非协作式支出」,可以有非常复杂的脚本结构。这两部分是「或」的关系。

  Taproot 的解决方案如下:

  (1)对“非协作式支出”脚本,采取MAST形式,用MerkleRoot表示默克树根;

  (2)对“协作式支出”脚本,采取基于Schnorr签名的多重签名算法。用Da和Db分别表示Alice和Bob的私钥,Pa和Pb分别表示Alice和Bob的私钥。因此,聚合公钥公钥是P=Pa+Pb,对应的私钥是Da+Db。

  (3)将“协作式支出”与“非协作式支出”合在一起表示成P2PKH形式,其公钥是:P=P+H(P||MerkleRoot)G;对应的私钥是Da+Db+H(P||MerkleRoot)。

  (4)当Alice和Bob同意“协作式支出”,他们用Da+Db+H(P||MerkleRoot)(只需他们中的一个人在自己的私钥上加上H(P||MerkleRoot))就行。在链上,这表现得如同P2PKH交易,有一个公钥和对应的私钥,而不需要披露底层的MAST。

  只有在“非协作式支出”时,才需要披露MAST的存在,但也只需披露被执行的那部分脚本。

【免责声明】中金网发布此信息目的在于传播更多信息,与本网站立场无关。中金网不保证该信息的准确性、真实性、完整性、有效性等。相关信息并未经过本网站证实,不构成任何投资建议,据此操作,风险自担。

广告