什么是比特币默克尔化抽象语法树?

时间:2024-11-29  分类:电子
虽然一开始MAST交易的体积会比没有MAST的同条件交易更大,比如我们的两个子脚本的条件,但非MAST的交易体积会(随子脚本的数量)线性增大,而MAST交易的体积则只会对数增大。


如果节省数据量是主要目标,我们还可以进一步优化。对于许多财产条件来说,花费者可能更高频地使用其中某个条件。比如,Alice希望自己高寿,所以她建构的默克尔树把自己花费的条件放在离顶端更近的地方,而所有其它条件都放在树的底部:


这样设计的话,不同情况下的MAST默克尔证据的体积是不一样的,在最理想的情况下,Alice活着,自己花自己的钱;而另一种情况下,Alice身故,她的受益人来花这些钱。我们把这些因素呈现到图上。


可以看出,Alice使用时,其交易的数据量一直是最优的情形,无论她的财产条件中的受益人有多少个;而在她的受益人使用这笔资金时,交易的数据量也只比前述标准构造的默克尔树多用几个字节。


无论Alice选择什么安排,可以看出MAST可以让多子脚本的财产条件交易体积更小,因此用户可以少付一些手续费,而区块里可以装入更多的高级交易。


好处#2更强的隐私性


我们在上文的讲解中,把Alice的财产脚本全部曝光了出来,但你可以设想,如果在Alice花费自己的比特币时,你在区块链上仅仅看到了下图左边的数据:


只有这些信息,你是没法知道Alice以外是否还有人能花费这里的资金、以及他们花费是需要面对什么约束条件的。你可以从MAST中猜测可能有一些别的条件,但也仅限于猜测而已Alice可能只是假装她的默克尔树还有其它可以花费的部分。


对应地,如果你看到的是另一个分支(也就是上图的右边的子脚本),你不会知道这笔资金在超时之前是否能花费,也不知道是不是只需一把私钥就能花费它。你同样可以猜测存在其它的花费条件,但你没法在区块链上确证这一点。


保证未使用的财产条件不曝光在某些时候非常有用,比如某些商人可能希望自己的智能合约尽可能保密,不要被潜在的竞争对手看到。这一点与某些标榜自己是专为智能合约设计、但实际上又不能为这些合约提供隐私性的山寨币恰好相反。


隐私性也可以为所有的比特币用户提供额外的好处,即使某些用户根本不在乎财产条件的隐私性。假设从本文一开始,Alice就是唯一一个使用非MAST条件模板的人。因为所有条件都是公开的,那么任何人都可以跟踪Alice的花费行为,只需在区块链上观察这个模板被使用的情形即可,这样Alice的隐私就荡然无存。


任何让识别特定用户更容易的设计,也会让人们可以更容易地区别对待他们的比特币和别人的比特币,这叫做同质性的缺失。如果某些人知道了Alice的财产条件长什么样,他们就可以贿赂或者强迫矿工不要打包这些人的交易,以此阻止Alice使用自己的比特币。


MAST不能完全解决这个问题,因为Alice(或者Bob和Charlie)仍然需要揭示部分的产权负担,但是许多别的复杂财产条件可以解析成少量的简单MAST类型条件。


举个例子,Alice的默认花费行为看起来就像其它只需提供单签名的普通支付行为,所以Alice的基于MAST的交易跟其它基于MAST的单签名交易就没有任何分别。这反过来提高了Alice的隐私性,也提高了她的资金的同质性,以及所有使用基于MAST的单签名条件的用户的货币同质性。


MAST的这一好处还很有可能与其他提高比特币隐私性和同质性的提议结合在一起。有些提议是让某些复杂的财产条件可以用单签名来使用,比如PieterWuille和GregoryMaxwell的通用门限树、AndrewPoelstra的无脚本式脚本,还用ThaddeusDryja的离散对数合约;MAST就可以和这些方案相结合。


但即使这些方案都不能在比特币上实现,MAST自身也能为复杂财产条件的用户提供更多的隐私性和可互换性,不论是与当前相比,还是与支持用户自定义智能合约的山寨币相比。


好处#3更大的智能合约


比特币现在为单个脚本设置了三种不同的体积限制:裸露脚本大小不能超过1万字节,在2010年7月引入;P2SH脚本不能超过520字节;segwit脚本不能超过1万字节。我们把这几个大小在上面的图中展示出来:


可以看出来,即使是极端的无限延长的例子,MAST也比当前所有的机制支持更多的条件分支。实际上,MAST的扩展性非常之好,以至于即使你拥有现在可观测的宇宙中所有的能量,若是只用来创建一棵标准(平衡)的默克尔树,其默克尔证据也只有8448字节。即使是这么大的默克尔证据,任何现在的笔记本电脑,都能在1毫秒之内完成验证。


因为免去了全节点处理未使用的子脚本的任务,MAST还能帮比特币脚本绕过别的一些硬性限制。在这一方面,MAST很好地保存和延伸了比特币智能合约长期的设计目标,也就是合约的负担应尽可能由合约的参与者承担,而节点付出了带宽、内存和处理能力,却无法得到补偿,因此应尽可能少承担。


所以,MAST的真正成就不是让比特币用户可以创建(比以往)更加高级的合约,而是它打开了这种可能性,还不会给比特币的节点增加新的负担。


实现MAST:现有的多种提议


迄今为止,bitcoin-dev邮件组里提出了两种方法在比特币协议中启用MAST,两种方法都仍在草案阶段,可能会有所变更。


第一种提议是JohnsonLau(化名jl2012)提出的BIP114,使用了一个基于隔离见证的延伸特性,使得原生的隔离见证地址(bech32)可以成为对MAST财产条件的默克尔根的承诺。花费交易因此可以从树上选择一个子脚本。


第二种提议是MarkFriedenbach(化名maaku)提出的两个未命名的BIP(1、2),它提高了脚本语言的灵活性,使得编程者可以编写脚本来验证基于MAST的财产条件。如果用Friedenbach更喜欢的方式来实现,那会让比特币现在支持的三种脚本类型(裸露脚本、P2SH和隔离见证脚本)都可以使用默克尔证据。


这几种提议互有短长,但都提供了上文所说的MAST的好处(字节数可能有加有减)。每一个都可以用软分叉来激活。


结论:我们什么时候才能用上MAST?


上文我们讲解了MAST的好处,也简要提及了两种在比特币上实现MAST的提案,你可能也好奇,什么时候我们能用上MAST。遗憾的是,我也不知道。


从理念,到提案,到完整的实现,到提议软分叉,到激活软分叉,道阻且长。围绕隔离见证升级,为期两年的大戏已经很清楚地展现了这一点。


但从我的角度看,MAST背后的基本理念已经在比特币技术社区中获得了广泛的支持,而对MAST最感兴趣的开发者也会继续开发,除非有人能证明这种技术完全不靠谱。有朝一日这些开发者成功提出可供同行审议的软分叉代码,就轮到读者你们和其他比特币用户,来决定MAST是否能成为比特币协议的一部分了。



-->> 2/2 文章结束,返回第一页

以上就是什么是比特币默克尔化抽象语法树?的全部内容,望能这篇什么是比特币默克尔化抽象语法树?可以帮助您解决问题,能够解决大家的实际问题是非常好学习网一直努力的方向和目标。