主页 > 苹果imtoken怎么下载 > 比特币的主根比你想象的要宽

比特币的主根比你想象的要宽

苹果imtoken怎么下载 2024-01-26 05:12:12

原标题:《主根比你想象的要宽》原作者:阿健

原创文章发表于橙皮书,原创文章标题来自Bitcoiner熊跃。

比特币的 Taproot 软分叉升级将在比特币区块高度 709632(预计 2021 年 11 月 15 日)激活。 此次升级包含了很多重要而精彩的内容,但在华人世界却缺乏足够的关注度。 本文将从技术角度简要介绍Taproot的升级内容,反映比特币的发展方向。

常见的说法是 Taproot 改善了比特币的隐私、智能合约功能、同质性等。 不过,要想了解Taproot升级的内容和想象空间,我们需要先了解一些比特币。

比特币智能合约

很多人不理解的是,比特币也支持编程智能合约2,但智能合约的类型与其他区块链(如以太坊)不同。 对这种区别的详细解释需要单独的一篇文章,这里并不重要。 这里仅列举几个比特币智能合约编程的常用模块3,方便大家了解其应用场景:

多重签名合约。 比特币支持多重签名授权使用资金:N个记录的公钥中,必须有M个公钥对应的私钥(针对同一操作)签名,才能使用资金。 比特币支持最多 15 个公钥的多重签名合约。 时间锁定。 用户可以使用两种类型的时间锁来指定资金可用的时间段:

(1) CLTV,绝对时间锁,由特定时间或特定区块高度定义,只能在该时间之后使用;

(2) CSV,相对于时间锁而言,例如资金只能在产生资金的链上交易1000个区块后才能使用。 多条件编程。 即在脚本中使用“IF ... ELSE ...”语句为同一资金设置多个解锁条件,满足任意一个条件即可使用该资金。 例如:“可以解锁A的公钥对应的私钥,或者,在区块高度XXXX之后,可以解锁B的公钥对应的私钥,或者,在A的链上YYYY块后transaction, A, B和C三个公钥中任意两个对应的私钥都可以解锁”

读者可以想象,这些模块看起来很简单,但是组合起来有很多可能:多重签名合约定义了不同主体的权限,可以适应极其丰富的应用场景,从公司运营到家庭金库; time 锁指定了不同主体在不同时间的权限。 多个条件显着放大了这些权限控制的综合效果。

你甚至可以制定一个支持社会恢复并具有继承分配效果的合约,只需要几个条件:“我(A 公钥)可以控制这笔资金;如果三个月没有人使用,我(B 公钥))和四个朋友,五分之三可以共同支配这笔资金;如果一年无人使用,我妻子可以支配这笔资金。”

然而,要使这些合约真正有用比特币公钥是什么,有两个因素不容忽视:效率和隐私。

效率是指比特币的交易手续费是按照交易量来计算的,条件越多的脚本占用的空间(字节)越多,交易手续费就越高。

隐私的考虑是脚本的暴露会让其他人知道一些公钥是相互关联的,更容易分析出公钥拥有者的真实身份。

比特币价值比特币最新_比特币分叉对比特币的影响_比特币公钥是什么

目前,比特币的合约体现为一个P2SH“地址”(实际上是一个哈希值)。 其特点是在生成合约时,脚本不能公开,必要时直接支付脚本的哈希值; 但是,当这些资金被花掉时,哈希值对应的脚本将被完全公开并放入交易中(否则无法验证该脚本的哈希值是否正是这个哈希值)。 以一个多签合约为例,其他人可以直接支付多签合约脚本的哈希值,但是当多签合约的参与者想要使用这些资金时,他们必须公开整个脚本3。

另外,在SegWit升级之前,单签名个人钱包和合约钱包有明显的区别。 前者是P2PKH地址,后者是P2SH地址。 单从地址就可以看出来,这又是一个不利于隐私的因素。 SegWit升级后,支持隔离见证的个人钱包也可以采用P2SH形式,但原有的隔离见证地址(P2WPKH)和合约地址(P2WSH)仍然不同4。

考虑到这一点,让我们看看 Taproot 升级的三个部分(MAST、Schnorr 签名、Taproot)如何做得更好。

Merkle 抽象语法树 (MAST)

Merklized Abstract Syntax Trees (MAST)5 的意义在于支持比特币脚本验证中Merkle证明的验证。

Merkle 树是一种将多个数据元素散列为单个散列值的加密方法。 它的结构和哈希函数的特点决定了可以提供一些证据(哈希值)来证明某个数据元素参与了哈希值的生成。 如下图所示:我们不断地对(相邻的)数据元素进行哈希运算,最终生成一个 Merkle 根。

比特币分叉对比特币的影响_比特币价值比特币最新_比特币公钥是什么

3个

同样的,如下图,当我要证明红色数据“Banana”参与生成紫色哈希值(默克尔根)时,只需要提供红色数据和三个绿色哈希值即可。 曝光实际上共同生成了 Merkle 根的其余 7 个元素。 这就是 Merkle 树和 Merkle 证明所做的。

香蕉、桃子和金桔的单独 Merkle 证明

聪明的读者一定想到了,通过这个功能,合约的编写者可以将多个条件划分为不同的数据元素,并哈希出一个Merkle根值; 当解锁比特币需要满足某个条件时,只需要证明这个条件在这棵默克尔树上即可,不需要公开其他所有条件。

是的,这正是 MAST 所做的。 如下图所示,这个基金有两个解锁条件,作者把他们分开,用Merkle树抽象成一个hash值。 在解锁和使用其中任何一个条件时,不得公开另一个。

比特币公钥是什么_比特币价值比特币最新_比特币分叉对比特币的影响

比特币公钥是什么_比特币分叉对比特币的影响_比特币价值比特币最新

005.png

MAST在P2SH的基础上迈出了一大步,它的改进作用首先体现在隐私方面:原本在P2SH中,合约在使用时必须公开所有脚本内容,无论内容是否被使用。 必须全部披露; 现在有了MAST,用户只需要公开需要使用的解锁条件,不需要公开所有的内容; 同时,别人不知道你还有多少条件。

其次,它也提高了效率:用户只需要提供一些需要使用的脚本和他们的Merkle证据。 当整个脚本比较大时,节省体积的效果会非常明显。

这样一来,未来的比特币用户可以编写条件很多的合约,以获得更好的控制效果,只需要支付更少的手续费; 甚至,他们可以故意包含一些垃圾条件来丰富 Merkle 树并获得隐私改进的效果。

这也是本文副标题《哈希就是银行》的由来:比特币的剧本其实是围绕着资金的把控展开的。 实现这种控制的关键是多重条件。 有了MAST,即使有很多条件 的资产管理脚本,也可以压缩成一个哈希值,使用时只需要暴露一部分。 成本的降低可以开启很多可能性,等待钱包开发者去发现。

Schnorr 签名

Taproot 升级后,比特币不仅支持基于椭圆曲线的密码签名,还支持 Schnorr 数字签名方案6。

Schnorr 签名的构造方法这里不多说,我们只介绍它的重要性质: 签名/密钥聚合——可以将多个私钥的签名聚合成一个签名,看起来就像是用一个私钥签出的一样。 签名时,仍然由每个私钥持有者签名; 在验证签名时,这些签名似乎是一个私钥对应一个已知的公钥(当然是这些参与者的公钥聚合而成的公钥)。 密钥退出。

也就是说比特币公钥是什么,有了Schnorr签名,其他人无法分辨一个签名是一个人签名还是多人签名; 多重签名的解锁条件可以用聚合公钥代替。 所有 nn 多重签名合约都可以享受 Schnorr 签名提供的隐私保护。 它最明显的应用是闪电网络通道,因为闪电网络通道是一个 2-2 多重签名合约; 之后,其他人将无法根据签名数量区分支付渠道和个人用户。

至于mn的多重签名合约,不用着急,别忘了我们有MAST:我们可以把所有可能解锁的情况都变成一个分支,使用分支时,提供的签名只需要是聚合签名即可。 例如,假设我们要制作一个2-3的多重签名合约,选择公钥A、B、C中的两个。这个多重签名合约的效果相当于“(A,B)解锁, or (B, C ) unlock, or (A, C) unlock”,可以理解为多条件脚本,每个条件是一个2-2的多重签名,所以也可以使用对应的聚合公钥定义解锁条件(并且不需要根据多重签名来定义)。 因此,当我们需要解锁某个组合的资金时,只需要使用MAST暴露一个分支并提供签名,其他人仍然不知道是一个人,两个人,还是多人。

还没结束。

比特币分叉对比特币的影响_比特币价值比特币最新_比特币公钥是什么

直根

按照我们理解的路径,Taproot升级的最后一部分是Taproot,这就是它名字的由来。 在提出这个概念时,格雷戈里·麦克斯韦 (Gregory Maxwell) 写道 7:

在讨论 Merkleized 脚本时经常出现的一个问题是,我们是否可以实现一个与最常见和无聊的支付没有区别的智能合约。 否则,使用这些流行技术的匿名输出集(只是另一个小众集)在实践中没有多大意义。

在这里,麦克斯韦敏锐地抓住了问题的要点:比特币的隐私保护来自于“大隐于市”。 这是最难掌握的。 但是,在引入新功能的时候,总是免不了要提出一种新型的“地址”。 如果使用这个功能的用户非常少,每个用户的真实身份被暴露的可能性就会大大增加,而这可能会导致这些新功能根本不会被使用,从而失去它的意义。

而且,虽然MAST在合约隐私方面起到了重要的作用,但如果还是和过去一样,个人钱包就是个人钱包,合约钱包就是合约钱包。 如果一目了然,不得不说这样的隐私还是有漏洞的。 .

人们迫切需要一种方法来结束这种个人钱包/合约钱包的区分,为比特币的隐私画龙点睛。 为此,最起码要认识到,这种合约钱包在用户日常使用中的成本与普通个人钱包(经济型)没有区别。

Taproot 就是这样一种方法。 它利用密钥聚合的特点,提出了一种脚本模式,有两种使用路径:一种是nn多签合约; 另一种是用户自定义合约脚本。

沿用Maxwell原文中的例子:假设两个用户有公钥A和B,两个聚合公钥A+B=C,然后生成最终的公钥P=C+H(C||S)*G ,其中 S 是自定义脚本。 最终公钥P用于定义资金的解锁条件。 假设两个用户都在线,他们可以很容易地一起使用资金,只要其中一个用户在签名时将 H(C||S) 添加到他的私钥中; 如果其中只有一个在线,例如,S 定义了 B 可以花费资金的条件,Taproot 的规则允许公钥 B 的用户通过公开聚合公钥 P 和 H(C||S) 并提供S 可以满足的条件。

这里使用的是2-2多重签名合约,但是用户可以想象,只要有密钥聚合技术,1-1,即单签名,也可以使用这种写脚本的方式。 重要的是要:

(1)虽然这是一个自定义合约的基金,但是当不使用合约,只使用nn个多重签名时,它的手续费成本和单签名解锁的基金没有区别!

(2) 在使用nn多重签名的时候,其他人完全不知道这笔资金可以解锁使用其他方式!

这样一来,个人用户和合约用户都可以统一在一个脚本模式下(P2TR“地址”),个人用户可以安全地将合约添加到自己的资金中,而不用担心每天支付更高的手续费; 合约用户个人用户享有更大的匿名性,因为他们使用相同的“地址”,甚至在大多数情况下都可以在不暴露自己的情况下使用合约。 每个人都很开心。

比特币价值比特币最新_比特币分叉对比特币的影响_比特币公钥是什么

总而言之,在Taproot之后,其他人将无法从地址形式判断一个P2TR地址是个人用户还是合约用户; 由于Schnorr签名的作用,当该地址的资金被单次签名解锁后,其他人将分不清是个人用户还是合约用户。 无论是一个人使用还是n个人一起使用,无法得知该地址是否有自定义脚本; 由于MAST的作用,当用户使用自定义脚本花费资金时,只需要暴露需要使用的部分脚本; 虽然其他人知道这个地址有自定义脚本,但仍然不知道整个脚本包括什么条件。

因此,虽然有人质疑 Taproot 可能会反过来损害比特币的隐私7,但我一点也不担心。 因为Taproot“地址”在便捷性、隐私性、经济性方面无疑是比特币历史上最好的,完全有希望统一比特币的“地址”类型,形成比特币历史上最大的匿名集合。

结语

对于了解一些密码学技术的人来说,学习比特币的发展和升级是非常愉快的,甚至是大开眼界的。 在它的升级中,你可以看到人们不知疲倦地使用密码学来不断优化这个系统——得益于系统本身的模块化特性,这些优化是真实存在的。 主根就是其中之一。

相信在学习比特币(尤其是 Taproot)的过程中,会告诉读者什么是真正的“加密货币”。

Taproot 可能是比特币历史上最重要的一次升级,它将创造出史上最纯粹的加密货币——将密码学运用到极致、最轻盈、生命力最顽强的货币。

谢谢你

感谢@hou123、@曾米对本文的宝贵意见。

脚注:

1、比特币升级提案Taproot技术解读,

2.比特币维基智能合约,

3、精通比特币中文翻译·第七章:高级交易与脚本,

比特币分叉对比特币的影响_比特币价值比特币最新_比特币公钥是什么

4. 比特币交易的类型——第二部分 Segwit,

5. 什么是比特币 Merkelized 抽象语法树,

6. Schnorr 签名如何提升比特币,

7. Taproot:隐私保护可切换脚本,

8.用通俗易懂的语言解释Taproot对隐私的影响,

值得一读的文章

国家事务:比特币和美国的财政清算:

@Bruce:对于美国货币政策恶性循环的灰犀牛,一些美国政界精英已经意识到,比特币是摆脱美元松散价值的一种选择,以便为民众和企业做好准备美国金融清算的最坏可能,文章呼吁美国政策制定者全面开放对比特币和数字资产的监管,甚至建议财政部考虑将其持有的一小部分黄金换成比特币

各位忠实信徒:

@大麦:《加密与宗教》100x小黑哥

欺诈证明和虚拟机@cpbuckland88/fraud-proofs-and-virtual-machines-2826a3412​​099

@郭宇:这篇文章比较了Arbitrum和Optimism使用欺诈证明实现Rollup的不同机制。

伟大的在线游戏:

@Leon:全人类在互联网上的活动已经成为一个巨大的元游戏,是不是“元宇宙”都无所谓。

原文链接