更新时间:2021-10-28 17:48:02点击:193
作者:阿剑
原文标题: 《打浦路(Taproot)比你想的宽》,文章标题来自Bitcoiner熊越。
比特币的Taproot软叉升级将在比特币的区块高度709632 (预计2021年11月15日)激活。 这次升级包含了许多重要而精彩的内容,但在中文世界中缺乏足够的重视。 本文将从技术角度简要介绍Taproot的升级内容,指出比特币的发展方向。
常见的是,Taproot提高了比特币的隐私性、智能合约功能性和同质性,众说纷纭。 但是,要理解Taproot升级的内容和想象力,首先需要了解比特币。
很多人不知道的是,比特币也支持编程智能合约2,但智能合约的类型与以太坊等其他区块链不同。 详细说明这一区别需要特别的文章,这种区别在这篇文章中也不重要。 这里介绍了比特币集成编程的几个常用模块3,以便于理解其应用场景。
多重签名合同。 比特币支持多签名许可证使用资金。 n个记录的公钥中,如果没有与m个公钥相对应的私钥(对于同一操作)签名,则该资金将无法使用。 比特币最多支持15个公钥的多签名协议。 时代摇滚。 用户可以使用两种时间锁定: )1) CLTV、绝对时间锁定、具体时间或具体数据块的高度进行定义,规定了经过这一时间后才能使用的时间段。 2 ) CSV相对于时间是锁定的,例如,在生成该资金的交易链的1000个区块之后,该资金才可以移动。 多条件编程。 也就是说,在脚本中使用表达式“IF . ELSE .”为同一资金设置多个解锁条件,以便在满足任何条件时使用该资金。 例如,“能够解锁与a公钥相对应的私钥,能够解锁块的高度XXXX以后、与b公钥相对应的私钥,或者在通过该交易链式的YYYY个块以后,在a、b、c这三个公钥中多个签名协议定义了不同主体的权限时间锁定规定了不同主体在不同时间段的权限多条件增大了这些权限控制的组合效果。
只有在一些条件下,才能帮助社会恢复,制定具有遗产分配效果的合同。 “我(a公钥)可以控制这笔资金。 如果三个月没人用,我(b公钥)和四个朋友,五取其三可以一起控制这笔资金; 如果一年没有人使用的话,我妻子可以控制这笔资金”。
但是,要想这些合同真正起作用,效率和隐私性这两个因素是不可忽视的。
效率意味着比特币交易的手续费是根据交易的体积计算的,更多条件的脚本会占用更大的空间(字节数),交易费也会变高。
隐私考虑事项是,脚本发布后,其他人会发现公钥之间存在身份关联,从而更容易分析公钥所有者的真实身份。
目前,比特币的合约被体现为P2SH“地址”(实际上是哈希值)。 特征是在生成合同时,场景可以不公开,根据需要直接支付给场景的哈希值; 但是,在使用这些资金时,对应于该散列值的脚本必须完全公开地放入交易中。 如果不是,则无法验证该脚本的哈希值是否是该哈希值。 以多签名合同为例,其他人可以直接支付给该多签名合同脚本的哈希值,但多签名合同的参加者使用这些资金时,必须公开整个脚本3。
此外,在SegWit升级之前,单一签名的个人钱包和合同钱包很清晰。 前者是P2PKH地址,后者是P2SH地址,从地址可以看出,这也是不利于隐私的因素。 SegWit升级后,支持隔离证人的个人钱包仍可以采用P2SH的形式,但原生隔离证人的地址(与P2WPKH )签约的地址)仍然是明确的4。
了解这些之后,让我们来看看Taproot升级的三大部分(MAST、Schnorr签名、Taproot )是如何工作的。
默克尔化抽象语法树(Merklized Abstract Syntax Trees,MAST ) 5的意思是通过比特币的脚本验证来帮助验证默克尔的证据。
默克尔树是将多个数据元素散列为一个哈希值的密码学方法。 根据其结构和散列函数的特性,可以提供证明一个数据元素参与散列值的产生的证据(散列值)。 如下图所示,我们持续散列(相邻)两个数据元素,最终生成默克尔的根。
3
同样,如下图所示,为了证明红色数据“Banana”参与了紫色哈希值(默克尔根)的生成,提供了红色数据和三个绿色哈希值,而不暴露实际上共同生成了默克尔根的剩余七个元素这就是默克尔和默克尔证据的作用。
individualmerkleproofsforbanana,修补和伫列
聪明的读者认为,如果有这个功能,合同的创建者一定可以将多个条件变为不同的数据元素,从而散列默克尔的根值,如果需要在某个条件下解锁比特币,则只需要证明这个条件在这个默克尔树上,其他所有条件都可以公开。
是的。 这就是MAST的绝佳用法。 如下图所示,该资金的解锁条件有两个,作者将它们分割,用默克尔树抽象为一个哈希值。 在任何条件下解锁使用时,都不需要再公开一个。
005.png
MAST在P2SH的基础上迈出了一大步,其提高效果首先体现在隐私性上。 原本在P2SH中,合同在使用时必须公开所有的脚本内容,无论这些内容是使用还是不使用都必须公开。 现在,有了MAST,用户只需要公开必要的解锁条件,不需要公开所有的内容; 同时,其他人不知道你还具备几个条件。
其次,如果用户只是提供所需脚本的一部分和默克尔的证据,而整个脚本却很庞大,那么这种体积节约的效果就非常明显。
这样,未来比特币用户可以制定非常多条件的合同,获得更好的控制效果,只需要支付更少的手续费,并且为了充实默克尔树,获得隐私提高的效果,会有意地满足一些垃圾条件
这也是本篇副标题“哈希就是银行”的由来。 比特币的脚本实际上全部以资金控制为中心,实现这种控制的关键是多条件的,但根据MAST,即使是极多条件的理财脚本也可以压缩为一个哈希值,使用时只露出一部分。 削减成本开辟了非常多的可能性,可以等待钱包开发者去哪里。
Taproot升级后,比特币不仅支持基于椭圆曲线的密码学签名,还支持Schnorr数字签名方案6。
这里不谈Schnorr签名的构建方法,只介绍其重要的属性。 签名/密钥集合——中的多个私钥签名可以聚合到一个签名中,就好像私钥被签出一样。 如果是签名,当验证仍然是每个私钥持有人各自签名的签名时,这些签名将被检出,就好像它们是已知的公钥,当然也是这些参与者的公钥的集合。
也就是说,一旦有了Schnorr签名,其他人就分不清是一个签名是一个人签的还是多个人签的。 可以用聚合公钥替换多签名解锁条件。 所有n-n多签名协议都可以通过Schnorr签名获得隐私保护。 由于闪电网络信道是2-2多签名合同,所以最明显的应用是闪电网络信道; 之后,其他人无法通过签名的数量来区分支付通道和个人用户。
对于m-n的多签名合同,也不要担心。 别忘了有MAST。 所有可能解锁的情况都可以是一个分支,使用某个分支时提供的签名也只需要聚合签名。 例如,假设将公钥a、b和c中的三个创建2-3的多个签名合同。 的多重签名协议的效果与解锁“a、b、b、c或a、c”中的任一个一样,可以理解为每个条件都在2-2以上,因此,如果需要以某种组合解锁资金,可以用MAST暴露分歧,并通过
还没有结束。
在我们理解的路径中,Taproot升级的最后一部分是Taproot,是它名字的由来。 在提出这个概念时,Gregory Maxwell写道:7:
在讨论默克尔化的剧情时,很多人经常提出的一个问题是我们能否实现与最普通无聊的支付无异的精巧合同。 否则,只是使用这些流行技术的输出匿名集,也就是另一小群人聚集在一起,在实践中意义不大。 在这里,Maxwell敏锐地抓住了问题的要点。 比特币的隐私保障来自“大而模糊的城市”,希望所有资金单元(UTXO )看起来都一样。 这样的话,最难把握用户的真实身份、真实结构。 但是,在导入新功能时,无论如何都必须提出新的“地址”的类型,如果使用这样的功能的用户少,各用户表明真实身份的可能性就会大幅度增加,在这一点上这些新功能完全没有被使用,有可能失去意义
另外,虽然MAST对合同的隐私性起着很大的作用,但是如果像过去一样,一眼就能看出个人钱包是个人钱包,合同钱包是合同钱包的话,就不得不说这种隐私性依然存在瑕疵
人们迫切需要一种方法来结束这种个人钱包/合同钱包的区分,为比特币的隐私性添加一支专注的笔。 为此,最起码要实现的一点是,这个带合同的钱包在用户个人日常使用中,其代价与普通个人钱包没有区别(经济性)。
Taproot用这种方法,利用密钥聚合的特点,提出了一个具有两个使用路径的脚本模型。 一个是n-n的多重签名合同。 另一个是用户定制的合同脚本。
沿用Maxwell原文的例子:假设两个用户分别拥有公钥a、b,两个人聚合公钥A B=C,生成最终公钥p=ch(c||s ) g。 其中,s是定制的脚本。 用该最终公钥p定义资金的解锁条件。 假设两个用户都在线,如果其中一个在签名时给自己的私钥加h(c||s ),则共同使用该资金会变得容易。 在只有一方在线的情况下,例如s定义了b可以使用资金的条件的情况下,根据Taproot的规则,公钥b的用户可以通过公开聚合公钥p和h(c||s ),提供满足s的条件来使用资金。 虽然这里使用的是2-2多签名协议,但是如果用户可以使用密钥聚合技术,那么1-1也就是单签名也可以使用这种脚本编写方法。 重要的是,(1)尽管这是附定制合同的资金,但如果不使用合同,只使用n-n多签名的话,其手续费成本与单签名解除的资金没有区别)2) n-n多签名使用时,他人可以用其他方法解除锁定
这样一来,个人用户和合同用户都可以统一为一个脚本模式(P2TR“地址”),个人用户可以放心地在自己的资金上追加合同,不用担心日常支付更高的手续费。 合同用户和个人用户使用相同的“地址”享受更大的匿名集,大多数情况下也无需暴露他们使用了合同。 大家都很高兴。
总之,在Taproot之后,由于其他人无法从地址形式中区分P2TR地址是个人用户还是合同用户的Schnorr签名的效果,如果这个地址的资金用单签名解锁,其他人就会知道它是一个人在使用,还是由于MAST的效果,用户通过自定义脚本使用资金时,只需要发布所需的脚本的一部分。 虽然别人知道这个地址有定制的脚本,但是还不知道整个脚本包含了什么条件。
因此,人们怀疑Taproot反而有可能损害比特币的隐私性7,但我完全不担心。 因为,Taproot的“地址”在便利性、隐私性、经济性方面无疑是比特币历史上最好的,统一比特币的“地址”类型,有望形成比特币历史上最大的匿名集吗?
对了解密码学技术的人来说,学习比特币的开发和升级是一件快乐的事情,是一件开阔眼界的事。 在那次升级中,我们可以看到人们孜孜不倦地使用密码学不断优化这个系统。 ——得益于这个系统本身的模块化特性,所有这些优化都可以感受到。 Taproot就是其中的代表。
我相信学习比特币,特别是Taproot的过程会告诉读者什么是真正的“密码学货币”。
Taproot可能是比特币历史上最重要的升级。 史上最纯粹的密码学货币——将使密码学成为终极、最轻、生命力最强的货币。
感谢@hou123,@曾汨先生的有益反馈。
比特币升级提案Taproot技术解读,https://WWW.BTC study.org/2021/09/29/bit coin-taproot-a -技术-展开/比特熟悉smart_contract比特币中译本第七章:高级交易与脚本3359 Github.com/Tian Mingyun/Masterbitcoin 2cn/Blob/Master/Ch07.MDTyPesom 359 blog.Susanka.EU/types-of-bit coin-transactions-part-ii-seg wit /比特币默克尔化抽象语法树是指3359 www.BTC study.org 一对一合并系统树/条纹签名怎么样3359 WWW.BTC Study.org/2021/09/009/000 taproot 3360隐私服务3359列表. Linux基金. org/piper mail /比特连接/2018 -日本/015614.html是tapary