本文是我们的直接后续报道 Taproot解释器. 如果您尚未阅读该文章,则可能应该先阅读. 如果将Taproot部署在比特币上,许多智能合约的构造将看起来像区块链上的常规交易。只要所有参与者都同意合同的结果(“合作完成”),Schnorr和MAST的巧妙结合就可以提高数据效率和隐私性. 但是,如果Taproot智能合约足够复杂(也就是说,如果有很多潜在结果),那么在不合作关闭的情况下需要揭示的Merkle路径仍然是繁重的数据. 一种 后续建议 由Bitcoin核心贡献者Gregory Maxwell撰写的“ Graftroot”可以提供与Taproot类似的好处,但是没有不利的一面,提供了更智能的合同灵活性. 嫁接根 使用Taproot,智能合约中的所有参与者都可以将其公钥组合在一起,以创建一个“阈值公钥”,他们可以在其中使用“阈值签名”来消费。对于Graftroot,所有参与者也都创建这样的阈值公钥。但是这一次,他们不调整此阈值公钥. 参与者确实创建了不同的脚本:可以花钱的替代条件。但是,使用Graftroot,它们都对不同的脚本进行签名,以创建与这些脚本相对应的阈值签名。希望使用特定脚本作为后备的任何参与者都将获取并存储该脚本和相应的阈值签名。这些签名以后可以向世人证明该脚本是所有参与者都同意的有效替代方案,即“委托”。. 因此,假设爱丽丝和鲍勃建立了一个智能合约,他们俩可以一起花钱, 或者 一个星期后让爱丽丝独自度过, 或者 让鲍勃独自一人将其与一个秘密号码结合使用。在这种情况下,Alice和Bob组合了他们的公共密钥以创建阈值公共密钥,如果他们提供了阈值签名,则可以从中花费资金。 (他们尚未创建此阈值签名-仅在花费资金时才创建。) 然后,他们还创建并立即签署备用脚本。爱丽丝保持与一周后允许她消费硬币的脚本相对应的阈值签名,而鲍勃保持与允许他与秘密号码结合使用硬币的脚本的对应阈值签名。 (请注意,仅阈值签名和相应的脚本不足以花费硬币;它们只是证明脚本已得到Alice和Bob的同意。花费脚本仍然需要满足脚本中指定的条件。 ) 第二天,当需要解决合同时,爱丽丝和鲍勃可能会同意签署和解协议。他们共同创建了一个阈值签名,以便从阈值公钥进行支出,没有其他人知道替代性支出条件,甚至没有一个人参与其中。看起来像是常规交易. 但是,如果合作社关闭由于某种原因而失败,则可以满足替代条件的任何人都可以独自花费硬币。如果Bob拥有密码,他将显示“他的”替代脚本以及与该脚本相对应的阈值签名。世界其他地区可以对照阈值公钥检查阈值签名,并得出结论,智能合约的所有参与者都同意替代脚本。因此,鲍勃可以正确地用带有秘密号码的硬币来花钱。或者,如果一周过去了,爱丽丝可以展示“她的”替代脚本以及该脚本的阈值签名,并花费硬币。无论哪种情况,都没有人了解备用备份脚本. Graftroot的主要好处是,它不再关系到智能合约的复杂程度,或更准确地说,有多少可能的结果。尽管上面的示例仅包含两个备用脚本,但Graftroot构造可能包含数百个脚本,并且没有任何区别。在最初的智能合约构建之后,爱丽丝和鲍勃甚至可以添加更多条件! 但是,缺点是Graftroot是交互式的。参与者必须相互交流以签署替代脚本,甚至在花费硬币之前也必须如此。此外,参与者将需要存储替代脚本的阈值签名;如果他们失去这个签名,他们就会失去后备. Graftroot的发展 因此,比特币用户何时才能使用这项技术? 好消息是,通过“隔离见证”,一个称为“脚本版本控制”的功能可以以向后兼容的方式相对容易地推出这些类型的更改(Schnorr签名,Taproot,Graftroot). 不过,理想情况下,致力于此类升级的比特币核心贡献者(包括Pieter Wuille,Anthony Towns,Johnson Lau,Jonas Nick,Andrew Poelstra,Tim Ruffing,Rusty Russell和Gregory Maxwell)将更愿意在一次。尽管脚本版本控制使升级变得容易,但确实需要事务显示正在使用的协议升级。因此,尽管Graftroot可以完美地隐藏其他脚本可用,但脚本版本仍可以显示事务正在使用Graftroot。一次部署多个协议升级可以在一定程度上避免这种情况,因为它们都使用相同的脚本版本。最重要的是,一次部署多个升级有利于软件兼容性. 另一方面,当要对运行于24/7的安全关键协议进行共识变更时,“相对容易的部署”仍然是一项艰巨的任务,有时在升级时会有不同的兴趣和偏好。每个潜在功能都有其自身的取舍,因此,一次组合许多功能也可能导致更多反对意见。而且,当然,将更多功能组合到一个升级中也不会使开发过程变得更容易. 因此,目前,将Schnorr签名和Taproot放在优先位置,以单个软件包的形式提出。 Graftroot可能会在此之后迈出一步. 这是Graftroot概念的概述。具体实施方式可能会有所不同。有关更多详细信息,请阅读 最初的Graftroot建议 通过格雷戈里·麦克斯韦(Gregory Maxwell)或观看 这个演讲 彼得·乌耶尔(Pieter Wuille).
隐私与安全,智能合约,技术
Taproot即将来临:它是什么,以及它将如何使比特币受益
不久之后,比特币用户也许可以从名为“ Taproot”的技巧中受益。第一的 建议的 由比特币核心贡献者和前Blockstream首席技术官格雷戈里·麦克斯韦(Gregory Maxwell)共同开发,Taproot将扩展比特币的智能合约灵活性,同时提供更多的隐私权。即使是最复杂的智能合约,在区块链上也通常无法与常规交易区分开. 尽管这是一项艰巨的任务,但这不只是理论上的。几个最丰富的比特币核心贡献者—包括Pieter Wuille,Anthony Towns,Johnson Lau,Jonas Nick,Andrew Poelstra,Tim Ruffing,Rusty Russell以及事实上的Gregory Maxwell —都在研究Schnorr签名提案,其中包括Taproot,所有一次协议升级. 这是Taproot及其作用方式. P2SH 所有的比特币本质上都是“锁定”在脚本中的:嵌入在区块链中包含的交易中的几行代码,定义了如何在下一次交易中花费这些代币。消费条件通常涉及提供签名以证明硬币的所有权。但是其他众所周知的条件例如包括时间锁定(硬币只能在特定的块高度或特定日期之后使用)或多重签名(只有在一组私钥中有一定数量的私钥提供签名时才可以使用硬币). 可以混合和匹配不同的条件,以创建复杂类型的智能合约。这样的合同的一个例子是,如果爱丽丝和鲍勃都签了字,就可以用硬币, 或者 如果一个星期后爱丽丝一个人签字, 或者 如果鲍勃一个人签名,同时还提供了一个秘密号码。首先满足这三个条件中的哪一个,是如何使用硬币的. 自2012年以来,脚本(条件)一开始通常是不公开的;只有新的代币所有者知道如何使用它们。这是通过称为P2SH(按脚本哈希付费)的技巧完成的,最初,区块链中仅包含脚本的哈希。这个看似随机的数字保存着硬币。当所有者花费硬币时,他会揭示整个脚本 也 脚本的“解决方案”。然后,任何人都可以使用初始哈希值来检查提供的脚本是否确实是锁定硬币的原始脚本,并且可以立即得出结论,满足了脚本的要求. 尽管如此,当硬币用完后,当前仍需要显示所有可能满足的条件,包括不满足的条件。这有两个主要缺点。第一,它的数据量很大,尤其是在有很多条件的情况下。第二,对隐私不利。每个人都可以了解花钱的所有不同方式,例如,可以揭示使用了哪种钱包,甚至更多。. 桅杆 MAST(Merkelized抽象语法树)是一种建议的解决方案,它使用Merkle树(密码学家Ralph Merkle发明了数十年的紧凑数据结构)来解决这两个缺点。简而言之,可以使用这些资金的所有不同条件是 个别地 散列(而不是合并为单个散列)并包含在Merkle树中,该树最终产生一个散列:Merkle根。默克尔(Merkle)的根部“锁定”了硬币. 独特的好处是,如果 任何 在显示Merkle树中的数据中,可以使用Merkle根和一些其他数据(称为Merkle路径)来验证Merkle树中是否包含特定数据。默克尔树的其余部分仍被散列并隐藏. 使用MAST,这意味着只需要显示所满足的条件。如果在上面的第一个示例中,爱丽丝一个星期后独自花掉了这笔资金,那么她只是揭示了这种情况(以及默克尔路径)。没有人知道这笔钱也可能是爱丽丝和鲍勃一起花的,或者如果鲍勃添加了一个秘密号码,也可能是鲍勃一个人花的。与复杂的P2SH智能合约相比,这使MAST的数据效率更高,并增加了启动时的私密性。. 但是使用Schnorr,Taproot可以做得更好:交易可以掩盖一个MAST结构的存在. 施诺尔 长期以来,Schnorr签名方案一直是许多比特币开发人员的心愿单,目前正在开发中,以作为软叉协议升级进行部署。许多密码学家认为Schnorr签名方案是该领域中最好的,因为它的数学特性提供了很强的正确性,它没有延展性,并且可以相对快速地进行验证。. Schnorr的“线性数学”是在比特币环境中最著名的优势,它可以进行签名汇总:同一笔交易中的多个签名可以合并为一个。类似的技巧可以应用于多重签名交易。将公钥和签名都组合为“阈值公钥”和“阈值签名”,可以使多重签名交易与任何常规交易都没有区别. 签名方案可以更有趣的方式使用。例如,可以使用数据“调整”私钥和公钥。作为简化示例,可以通过将私钥及其对应的公钥乘以2来进行调整。 “私钥x 2”和“公钥x 2”仍将对应,并且“私钥x 2”仍可以签署可以用“公钥x 2”验证的消息。任何不知道原始密钥对已被调整的人甚至都不会发现任何区别。调整后的键看起来像其他任何键对一样. 这就是启用Taproot的原因. 直根 Taproot基于一个有趣的认识:无论多么复杂,几乎任何MAST构造都可以(或应该)包含一个条件,该条件允许所有参与者就结果达成一致,并简单地共同签署和解交易。在较早的示例中,如果Bob知道Alice可以独自下周领取所有资金,那么他现在最好与她合作以共同签字。 (在许多典型的智能合约设置中,如果不这样做,他甚至会受到惩罚。复杂性的确可以使每个人保持诚实。) Taproot类似于MAST, 总是 包括所有参与者都可以合作花费资金的条件:“合作结束”。 通过使用Schnorr签名,这才变得有趣. 首先,合作社关闭将利用Schnorr的门槛技巧使它看起来像是从一个人到另一个人的常规交易。因此,将所有参与者的公共密钥加在一起,从而得到“阈值公共密钥”。与此阈值公用密钥相对应,所有参与者的签名(即他们的“阈值签名”)的组合使他们可以花费资金. […]