
Taproot是比特币历史上最重要的升级,历史上最纯粹的密码学货币——可能产生了密码学的终极、最轻、生命力最强的货币。
原文标题: 《打浦路(Taproot)比你想的宽预言家周报#143》写作:阿剑
比特币的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这三个公钥中的任意一个
正如读者所能想象的那样,这些模块看起来非常简单,但组合的可能性非常高。 多签名合同定义了不同主体的权限,可以应对从公司运营到家庭金库等极其丰富的APP场景。 时间锁定规定了不同主体在不同时间段的权限。 多条件增大了这些权限控制的组合效果。
只有在一些条件下,才能帮助社会恢复,制定具有遗产分配效果的合同。 “我(a公钥)可以控制这笔资金。 如果三个月没人用,我(b公钥)和四个朋友,五取其三可以一起控制这笔资金; 如果一年没有人使用的话,我妻子可以控制这笔资金”。
但是,要想这些合同真正起作用,效率和隐私性这两个因素是不可忽视的。
效率意味着比特币交易的手续费是根据交易的体积计算的,更多条件的脚本会占用更大的空间(字节数),交易费也会变高。
隐私考虑事项是,脚本发布后,其他人会发现公钥之间存在身份关联,从而更容易分析公钥所有者的真实身份。
目前,比特币的合约被体现为P2SH“地址”(实际上是哈希值)。 特征是在生成合同时,场景可以不公开,根据需要直接支付给场景的哈希值; 但是,在使用这些资金时,对应于该散列值的脚本必须完全公开地放入交易中。 如果不是,则无法验证该脚本的哈希值是否是该哈希值。 以多签名合同为例,其他人可以直接支付给该多签名合同脚本的哈希值,但多签名合同的参加者使用这些资金时,必须公开整个脚本3。
此外,在SegWit升级之前,单一签名的个人钱包和合同钱包很清晰。 前者是P2PKH地址,后者是P2SH地址,从地址可以看出,这也是不利于隐私的因素。 SegWit升级后,支持隔离证人的个人钱包仍可以采用P2SH的形式,但原生隔离证人的地址(与P2WPKH )签约的地址)仍然是明确的4。
了解这些之后,让我们来看看Taproot升级的三大部分(MAST、Schnorr符号、Taproot )是如何工作的。
默克尔抽象语法树(MAST)
默克尔化抽象语法树(Merklized Abstract Syntax Trees,MAST ) 5的意思是通过比特币的脚本验证来帮助验证默克尔的证据。默克尔树是将多个数据元素散列为一个哈希值的密码学方法。 根据其结构和散列函数的特性,可以提供证明一个数据元素参与散列值的产生的证据(散列值)。 如下图所示,我们持续散列(相邻)两个数据元素,最终生成默克尔的根。
同样,如下图所示,为了证明红色数据“Banana”参与了紫色哈希值(默克尔根)的生成,提供了红色数据和三个绿色哈希值,而不暴露实际上共同生成了默克尔根的剩余七个元素这就是默克尔和默克尔证据的作用。
inpi双重机械专业版,修补和拥挤
聪明的读者认为,如果有这个功能,合同的创建者一定可以将多个条件变为不同的数据元素,从而散列默克尔的根值,如果需要在某个条件下解锁比特币,则只需要证明这个条件在这个默克尔树上,其他所有条件都可以公开。
是的。 这就是MAST的绝佳用法。 如下图所示,该资金的解锁条件有两个,作者将它们分割,用默克尔树抽象为一个哈希值。 在任何条件下解锁使用时,都不需要再公开一个。
MAST在P2SH的基础上迈出了一大步,其提高效果首先体现在隐私性上。 原本在P2SH中,合同在使用时必须公开所有的脚本内容,无论这些内容是使用还是不使用都必须公开。 现在,有了MAST,用户只需要公开必要的解锁条件,不需要公开所有的内容; 同时,其他人不知道你还具备几个条件。
其次,如果用户只是提供所需脚本的一部分和默克尔的证据,而整个脚本却很庞大,那么这种体积节约的效果就非常明显。
这样,未来比特币用户可以制定非常多条件的合同,获得更好的控制效果,只需要支付更少的手续费,并且为了充实默克尔树,获得隐私提高的效果,会有意地满足一些垃圾条件
这也是本篇副标题“哈希就是银行”的由来。 比特币的脚本实际上全部以资金控制为中心,实现这种控制的关键是多条件的,但托MAST的福,即使是极多条件的理财脚本也可以压缩为一个哈希值,使用时只露出一部分削减成本开辟了非常多的可能性,可以等待钱包开发者去哪里。
Schnorr 签名
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以上,所以可以用某种组合来解锁资金
还没有结束。
Taproot
在我们理解的路径中,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也就是单签名也可以使用这种脚本编写方法。 重要的是:
这是附带定制合同的资金,但如果不使用合同而只使用n-n多签名,手续费成本与单签名解锁的资金没有区别
n-n多签名使用时,他人完全不知道这笔资金可以用其他方法解锁使用!
这样一来,个人用户和合同用户都可以统一为一个脚本模式(P2TR“地址”),个人用户可以放心地在自己的资金上追加合同,不用担心日常支付更高的手续费。 合同用户和个人用户使用相同的“地址”享受更大的匿名集,大多数情况下也无需暴露他们使用了合同。 大家都很高兴。
总之,在Taproot之后,由于其他人无法从地址形式中区分P2TR地址是个人用户还是合同用户的Schnorr签名的效果,如果这个地址的资金用单签名解锁,其他人就会知道它是一个人在使用,还是由于MAST的效果,用户通过自定义脚本使用资金时,只需要发布所需的脚本的一部分。 虽然别人知道这个地址有定制的脚本,但是还不知道整个脚本包含了什么条件。
因此,人们怀疑Taproot反而有可能损害比特币的隐私性7,但我完全不担心。 因为,Taproot的“地址”在便利性、隐私性、经济性方面,无疑是比特币历史上最好的,统一比特币的“地址”类型,有望形成比特币历史上最大的匿名集。
结语
对于了解密码学技术的人来说,学习比特币的开发和升级是一件快乐的事,进而是一件开阔眼界的事。 在那次升级中,我们可以看到人们孜孜不倦地使用密码学不断优化这个系统。 ——得益于这个系统本身的模块化特性,所有这些优化都可以感受到。 Taproot就是其中的代表。我相信学习比特币,特别是Taproot的过程会告诉读者什么是真正的“密码学货币”。
Taproot可能是比特币历史上最重要的升级。 史上最纯粹的密码学货币——将使密码学成为终极、最轻、生命力最强的货币。
致谢
@hou123,感谢@曾汨先生的有益反馈。引用
1 .比特币升级提案Taproot技术解读
2.bit coin维基智能合约
3 .熟悉比特币中译本第七章:高级交易和脚本
4.typesofbitcointransactions-partiisegwit
5 .什么是比特币默克尔化抽象语法树
6.Schnorr签名如何提升比特币
7.taproot :保密服务交换脚本
用白话解释Taproot对隐私的影响