Hi Guest

More contents, please log on!

Bitmere.com 区块链前沿 Content
不久之后,比特币用户们可能会从一种名为 “Taproot”的技术中获益。该技术首先是由Bitcoin Core贡献者兼Blockstream前CTO Gregory Maxwell所提出的,它将扩展比特币智能合约的灵活性,同时提供更多的隐私性。

虽然这是一项非常大的工程,但它不仅仅是理论。几位最多产的比特币代码贡献者,包括Pieter Wuille、Anthony Towns、Johnson Lau、Jonas Nick、Andrew Poelstra、Tim Ruffing、Rusty Russell以及Gregory Maxwell,他们正在研究一种称为Schnorr签名的方案,该方案将纳入Taproot,据悉,这些升级内容都会在下一次协议更新中展现。

本文会简单介绍一下 Taproot是什么,以及它的工作原理。

MAST

所有比特币基本上都是“锁定”在脚本当中的:其定义了币在下一笔交易中的使用方式。花费条件通常提供一个签名,以证明币的所有权。而其他众所周知的条件,包括时间锁(币只能在特定的区块高度或日期后使用)或多重签名(币只能在一组私钥中的一些私钥提供签名时才能使用)。

不同的条件可以进行混合和匹配,以创建复杂类型的智能合约。这种合约的一个例子是,如果艾丽丝(Alice)和鲍勃(Bob)都签了字,或者艾丽丝一周后单独签了字,或者鲍勃单独签了字,同时还提供了一个秘密号码,那么币就可以被使用。这三个条件中的哪一个先得到满足,其使用的方式就会是相对应的那种。

自2012年以来,脚本(条件)一开始是不公开的,只有币的新owner知道如何使用。这是通过一个称为P2SH(支付到脚本哈希)的技巧来完成的,最初只有脚本哈希包含在区块链当中。这个看似随机的数字负责保管币。当拥有者花费这些币时,它会同时展示整个脚本以及脚本的“解决方案”。然后,任何人都可以使用初始哈希来检查所提供的脚本,是否确实是锁定币的原始脚本,并可以立即得出满足脚本要求的结论。

尽管如此,当币用完时,目前有必要揭示所有可能的条件,包括不满足的条件。这有两个主要缺点。第一,它的数据量很大,特别是在有很多条件的情况下。第二,这不利于隐私。每个人都会学习各种不同的资金使用方法,例如,这些方法可以揭示使用了什么样的钱包,甚至更多的内容。

MAST(默克尔化抽象语法树)是一种提议解决方案,其使用了默克尔树(一种由密码学家拉尔夫·默克尔发明的紧凑数据结构)来解决这些缺点。简言之,所有可让资金可使用的不同条件,都单独进行了哈希(而不是组合成单个哈希),并包含在一棵默克尔树当中,最终生成单个哈希:Merkle根,这个Merkle根“锁定”了币。

唯一的好处是,如果显示了默克尔树中的任何数据,则可使用Merkle根和一些附加数据(称为Merkle路径)来验证特定数据是否包含在默克尔树中。其余的默克尔树仍然是经哈希和隐藏的。

有了MAST,这意味着只有满足的条件才需要被揭示。如果在上面的第一个例子中,爱丽丝在一周之后花费了这些资金,她只是揭示了这个条件(和默克尔路径)。没人知道这笔钱具体是怎样花的,它可能是爱丽丝和鲍勃一起花的,如果鲍勃加上一个秘密号码,在也可能是他一个人花的。这使得MAST比复杂的P2SH智能合约在数据处理上更具效率,同时增加了隐私性。

然而,使用 Schnorr签名方案的情况下,Taproot能够做得更好:因为交易可以隐藏MAST结构。

Schnorr签名方案

Schnorr签名方案一直是比特币开发者的关注焦点,目前他们正在开发这一方案,根据计划,该方案将通过软分叉的方式进行部署。在很多密码学家看来,Schnorr签名方案在这一领域是最好的,因为它提供了很强的数学正确性,其不具交易延展性,它的验证速度也相对较快。

在比特币的背景下,Schnorr签名方案的最显著优点是允许签名聚合:即同一笔交易中的几个签名可以组合成一个。类似的技巧也可以用于多签交易。将公钥和签名组合成“阈值公钥”和“阈值签名”,这就可使多签交易和任何常规交易变得无法区分。

这种签名方案也可以有更多有趣的使用方式。例如,可以使用数据来“调整”私钥和公钥。作为一个简化的例子,一个私钥及其对应的公钥可通过将两者相乘来进行调整。“私钥x 2”和“公钥x 2”仍然对应,“私钥x 2”仍然可签署可用“公钥x 2”验证的消息。任何对密钥对发生调整不知情的人,都不会看出异常。而被调整过的密钥,看起来和任何其他密钥对没有区别。

这就是启用TapRoot的原因。

Taproot

TapRoot基于一个有趣的认识:无论多么复杂,几乎所有的MAST结构都可以(或应该)包含一个条件,其允许所有参与者就结果达成一致,并简单地一起签署一笔结算交易。在前面的例子中,如果鲍勃知道艾丽丝下周可以自己拿走所有的资金,他最好现在就与她一起签字。(在很多典型的智能合约设置中,如果他不这样做,他甚至会受到惩罚。这种复杂性,目的就是让每个人保持诚实。)

Tabroot类似于MAST,它总是会包含一个条件,这使得所有参与者都可以合作来花费资金。

而通过使用Schnorr签名,它会变得非常有趣。

首先,合作结算将利用Schnorr方案的阈值技巧,使它看起来像一笔正常的交易。因此,所有参与者的公钥被叠加到一起,从而导致“阈值公钥”。与这种阈值公钥相对应的是,所有参与者签名的组合(他们的“阈值签名”)允许他们花费资金。

到目前为止还不错,但把这些资金当作正常交易来花掉,是它们唯一能做的事(在没有MAST结构的情况下)。这就是Schnorr签名方案的另一个把戏。

所有可供选择的资金使用方式(非合作输出)被合并到不同的脚本。然后,这个脚本经哈希并用于调整阈值公钥。与前面示例中使用的“公钥x 2”不同,这将导致“阈值公钥x脚本”(我们仍在简化)。此“阈值公钥x脚本”当然与“阈值签名x脚本”对应。

现在,如果资金是合作使用的,所有参与者都将他们的签名组合成“阈值签名”,并用脚本对其进行调整。产生的“阈值签名x脚本”允许他们花费资金。然而,重要的是,对于外部世界而言,所有的这些,看起来仍然像一个普通的公钥和一个常规的签名,即一笔常规的交易。

只有在合作结束(cooperative close)证明是不可能的情况下,才可以显示阈值公钥的实际情况:调整。

在这种情况下,将显示原始阈值公钥和脚本。这证明“阈值公钥X脚本”是用这个特定脚本进行调整的。因此,就像P2SH中的哈希值一样,这种调整向全世界证明了,如果满足脚本中指定的其他条件,资金就应该是可花费的。

或者,可使用默克尔树的Merkle根来调整阈值公钥,而不是使用脚本来调整阈值公钥,该Merkle根包含了可以使用资金的所有不同条件:即MAST结构。那么,要花掉这些资金,只需要揭示已满足的支出条件。

因此,Taproot提供了MAST的所有好处,而在正常情况下,没有人会知道一笔常规交易隐藏了如此复杂的智能合约。
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

是鹅好甜 初中生
  • Follow

    0

  • Following

    0

  • Articles

    17

59600
Promoted