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是要解决什么问题?
Schnorr 签名算法的诞生和落地
在现实工作和生活中,我们使用签名来表达对一份文件的认可,其他人可以识别出你的签名,且无法伪造你的签名。数字签名就是对现实签名的一种电子实现。
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的存在,但也只需披露被执行的那部分脚本。
免责声明:
本文观点仅代表作者个人观点,不构成本平台的投资建议,本平台不对文章信息准确性、完整性和及时性作出任何保证,亦不对因使用或信赖文章信息引发的任何损失承担责任
区块链的下一个十年:商业化才能带来影响?
白话区块链早报:曾领导加密货币打击行动的 SEC 主任将离职
比特币与加密货币之间最重要的区别
DeFi 的破局时刻:Aave、Maker 等头部协议如何转型
云存储pk区块链_区块链搭配云计算是什么
白话区块链早报:Apollo Crypto:美联储降息、中国信贷扩张和DeFi基础设施改善或将驱动DeFi迎来第二轮增长
PayFi 正当时,速览 PayFi Summit 12 个演示项目
白话区块链早报:10x Research:本次下跌是牛市超买后的典型回调,仍然看好Q4市场表现
一览 2024 年接受加密货币的公司和商店
白话区块链早报:摩根大通分析师表示地缘冲突或将吸引投资者青睐黄金和比特币
0.00