其次,它还在效率上有所提升:用户只需提供需要用到的部分脚本,及其默克尔证据,在整个脚本比较庞大时,这种体积节约的效果会非常明显。 由此,未来的比特币用户可以编写条件非常多的合约,获得更好的控制效果而只需支付更少的手续费;甚至,可以有意包含一些垃圾条件来充实默克尔树,获得隐私提升的效果。 这也是本篇副标题 「哈希即银行」 的由来:比特币的脚本实际上全部围绕着资金的控制,实现这种控制的关键一环正是多条件,而有了 MAST,即使是极多条件的资产管理脚本,也可以压缩成一个哈希值,在使用时仅需暴露一部分。成本的降低可以打开非常多的可能性,等待钱包开发者去一探究竟。 Schnorr 签名Taproot 升级之后,比特币将不仅支持基于椭圆曲线的密码学签名,还支持 Schnorr 数字签名方案 6。 Schnorr 签名的构造方法在此不提,我们仅介绍其重要属性:签名 / 密钥 聚合 —— 多个私钥的签名,可以聚合成一个签名,看起来仿佛是一把私钥签出的。签名时,仍然是各私钥持有者各自签名的;验签时,却仿佛这些签名是一把对应于已知公钥(当然就是这些参与者的公钥聚合而成的公钥)的私钥签出的。 也就是说,有了 Schnorr 签名,其他人就无法分辨一个签名到底是单人签出的,还是多人共同签出的了;多签名的解锁条件,可以用一个聚合公钥来替代。所有 n-n 的多签名合约,都可以享受到 Schnorr 签名提供的隐私保护。其最显然的应用就是闪电网络通道,因为闪电网络通道是一个 2-2 的多签名合约;此后,其他人就无法凭借签名的数量来分辨支付通道和个人用户了。 至于 m-n 的多签名合约,也不用担心,别忘了我们有 MAST:我们可以把所有可能解锁的情形都化成一个分支,在使用某个分支时,所提供的签名也只需是聚合签名。例如,假设我们要做一个 2-3 的多签名合约,在公钥 A、B、C 中三取其二,这个多签名合约效果等同于 「要么(A、B)解锁、要么(B、C)解锁、要么(A、C)解锁」,这可以理解为一个多条件的脚本,每个条件都是一个 2-2 多签名,因此也都可以用相应的聚合公钥来定义解锁条件(而无需以多签名来定义)。所以,当我们需要以某种组合解锁资金时,只需用 MAST 暴露一个分支、提供一个签名,他人依然不知道这到底是一个人,还是两个人,还是多个人。 还没完呢。 Taproot按我们这种理解的路径,Taproot 升级的最后一个部分就是 Taproot,是其名字的由来。在提出这个概念时,Gregory Maxwell 写道 7: 「在讨论默克尔化脚本时,一个大家常常提起的问题是,我们能否实现一种精巧的合约,使其与最常见、最无聊的支付没有分别。不然的话,使用这些时髦技术的输出的匿名集,也就是另一个小众集合而已,在实践中没有多大的意义。」 (责任编辑:admin) |