Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

Taproot:比特币下一阶段的重要技术

是鹅好甜
288 0 0
不久之后,比特币用户们可能会从一种名为 “Taproot”的技术中获益。该技术首先是由Bitcoin Core贡献者兼Blockstream前CTO Gregory Maxwell所提出的,它将扩展比特币智能合约的灵活性,同时提供更多的隐私性。2 r- C& R& a" ?% ?
4 H+ c( E$ T' a, Y9 D8 f
虽然这是一项非常大的工程,但它不仅仅是理论。几位最多产的比特币代码贡献者,包括Pieter Wuille、Anthony Towns、Johnson Lau、Jonas Nick、Andrew Poelstra、Tim Ruffing、Rusty Russell以及Gregory Maxwell,他们正在研究一种称为Schnorr签名的方案,该方案将纳入Taproot,据悉,这些升级内容都会在下一次协议更新中展现。
2 @5 m% j& w! Z3 v: R
* [& b' B2 p3 k6 C' R% e" x: R本文会简单介绍一下 Taproot是什么,以及它的工作原理。
+ T( M# o9 o* l# E& B
* d8 a* U0 C4 F! T6 I; d2 {; ?5 `MAST: ]7 c' I/ O4 i& Z( Z5 B' n, x

3 m3 g- x$ p5 N. G所有比特币基本上都是“锁定”在脚本当中的:其定义了币在下一笔交易中的使用方式。花费条件通常提供一个签名,以证明币的所有权。而其他众所周知的条件,包括时间锁(币只能在特定的区块高度或日期后使用)或多重签名(币只能在一组私钥中的一些私钥提供签名时才能使用)。
1 Q8 l* Q+ R" ?( w& ?% l0 M  Z+ z9 d2 D$ M2 c9 j3 o) S& \
不同的条件可以进行混合和匹配,以创建复杂类型的智能合约。这种合约的一个例子是,如果艾丽丝(Alice)和鲍勃(Bob)都签了字,或者艾丽丝一周后单独签了字,或者鲍勃单独签了字,同时还提供了一个秘密号码,那么币就可以被使用。这三个条件中的哪一个先得到满足,其使用的方式就会是相对应的那种。
5 P" H8 T8 {/ q: F4 j: G6 f* @
1 c  w2 c1 [: X8 q# R, c自2012年以来,脚本(条件)一开始是不公开的,只有币的新owner知道如何使用。这是通过一个称为P2SH(支付到脚本哈希)的技巧来完成的,最初只有脚本哈希包含在区块链当中。这个看似随机的数字负责保管币。当拥有者花费这些币时,它会同时展示整个脚本以及脚本的“解决方案”。然后,任何人都可以使用初始哈希来检查所提供的脚本,是否确实是锁定币的原始脚本,并可以立即得出满足脚本要求的结论。
* g* K$ |$ e- m
1 M( j$ Y0 ], B7 E尽管如此,当币用完时,目前有必要揭示所有可能的条件,包括不满足的条件。这有两个主要缺点。第一,它的数据量很大,特别是在有很多条件的情况下。第二,这不利于隐私。每个人都会学习各种不同的资金使用方法,例如,这些方法可以揭示使用了什么样的钱包,甚至更多的内容。# N  r, l; N* h) M
. L8 E1 V7 n2 M1 w' t5 D6 g
MAST(默克尔化抽象语法树)是一种提议解决方案,其使用了默克尔树(一种由密码学家拉尔夫·默克尔发明的紧凑数据结构)来解决这些缺点。简言之,所有可让资金可使用的不同条件,都单独进行了哈希(而不是组合成单个哈希),并包含在一棵默克尔树当中,最终生成单个哈希:Merkle根,这个Merkle根“锁定”了币。$ u5 M1 l& H$ e6 y9 B- M9 [
6 {9 j! p3 F" s* H9 j' N) r% M
唯一的好处是,如果显示了默克尔树中的任何数据,则可使用Merkle根和一些附加数据(称为Merkle路径)来验证特定数据是否包含在默克尔树中。其余的默克尔树仍然是经哈希和隐藏的。4 [  ~$ W  K# j3 C& _

2 K9 {2 C; y3 t9 ?0 H0 i# x! \有了MAST,这意味着只有满足的条件才需要被揭示。如果在上面的第一个例子中,爱丽丝在一周之后花费了这些资金,她只是揭示了这个条件(和默克尔路径)。没人知道这笔钱具体是怎样花的,它可能是爱丽丝和鲍勃一起花的,如果鲍勃加上一个秘密号码,在也可能是他一个人花的。这使得MAST比复杂的P2SH智能合约在数据处理上更具效率,同时增加了隐私性。
) ]5 }' I1 A+ y4 `7 C5 S0 W
+ K; N% }: q8 Q1 i" o然而,使用 Schnorr签名方案的情况下,Taproot能够做得更好:因为交易可以隐藏MAST结构。2 c+ J' g3 @3 I% \7 ]" y0 C
. M% a+ _* j4 S* E9 N0 N( n2 C/ n
Schnorr签名方案+ j4 r2 r- y0 c7 z' x. m  r5 P

' j8 Y. S: Y. ]! i  J1 Y* Z# hSchnorr签名方案一直是比特币开发者的关注焦点,目前他们正在开发这一方案,根据计划,该方案将通过软分叉的方式进行部署。在很多密码学家看来,Schnorr签名方案在这一领域是最好的,因为它提供了很强的数学正确性,其不具交易延展性,它的验证速度也相对较快。
$ l9 H: \, I' k$ ?# a4 I: I# r6 o" Q! P& E/ u: I
在比特币的背景下,Schnorr签名方案的最显著优点是允许签名聚合:即同一笔交易中的几个签名可以组合成一个。类似的技巧也可以用于多签交易。将公钥和签名组合成“阈值公钥”和“阈值签名”,这就可使多签交易和任何常规交易变得无法区分。
  a( G: I' v" ^3 E" W7 d# Y  n, p3 d
这种签名方案也可以有更多有趣的使用方式。例如,可以使用数据来“调整”私钥和公钥。作为一个简化的例子,一个私钥及其对应的公钥可通过将两者相乘来进行调整。“私钥x 2”和“公钥x 2”仍然对应,“私钥x 2”仍然可签署可用“公钥x 2”验证的消息。任何对密钥对发生调整不知情的人,都不会看出异常。而被调整过的密钥,看起来和任何其他密钥对没有区别。
" c  ]8 ~$ f* j2 U& D$ Q) }' p; J7 b9 `
这就是启用TapRoot的原因。; c* N9 t4 A8 f. H! u  n$ t. h
* v8 F4 D8 `5 K: J
Taproot
: `4 ?% ]: K2 n$ c: w; ^6 g9 ~1 u/ @1 V
TapRoot基于一个有趣的认识:无论多么复杂,几乎所有的MAST结构都可以(或应该)包含一个条件,其允许所有参与者就结果达成一致,并简单地一起签署一笔结算交易。在前面的例子中,如果鲍勃知道艾丽丝下周可以自己拿走所有的资金,他最好现在就与她一起签字。(在很多典型的智能合约设置中,如果他不这样做,他甚至会受到惩罚。这种复杂性,目的就是让每个人保持诚实。)
2 q$ O8 N' f* B  H3 w7 P; Q1 S7 c- g# {6 j! K
Tabroot类似于MAST,它总是会包含一个条件,这使得所有参与者都可以合作来花费资金。4 M' R+ |) {! c; @' k+ J; A$ e9 c
% o( ~1 f: i6 w! t9 o( c& F
而通过使用Schnorr签名,它会变得非常有趣。
# }0 Y: \" d0 |2 U/ T" s$ t2 @, T2 o6 o$ |# L- }  n
首先,合作结算将利用Schnorr方案的阈值技巧,使它看起来像一笔正常的交易。因此,所有参与者的公钥被叠加到一起,从而导致“阈值公钥”。与这种阈值公钥相对应的是,所有参与者签名的组合(他们的“阈值签名”)允许他们花费资金。  U6 U( t8 ]- V+ z2 A

$ U9 O+ J+ g0 _/ k; C到目前为止还不错,但把这些资金当作正常交易来花掉,是它们唯一能做的事(在没有MAST结构的情况下)。这就是Schnorr签名方案的另一个把戏。
, M+ t) b: Z& q- ?9 z/ }0 P: c9 W! I9 G2 P7 v) j5 B
所有可供选择的资金使用方式(非合作输出)被合并到不同的脚本。然后,这个脚本经哈希并用于调整阈值公钥。与前面示例中使用的“公钥x 2”不同,这将导致“阈值公钥x脚本”(我们仍在简化)。此“阈值公钥x脚本”当然与“阈值签名x脚本”对应。
8 Y$ L" b' @9 p3 p+ ~: R0 Q/ U8 _2 U) I. M  u
现在,如果资金是合作使用的,所有参与者都将他们的签名组合成“阈值签名”,并用脚本对其进行调整。产生的“阈值签名x脚本”允许他们花费资金。然而,重要的是,对于外部世界而言,所有的这些,看起来仍然像一个普通的公钥和一个常规的签名,即一笔常规的交易。
( C# v* X$ r& J8 g' t
- r2 s/ j0 w& R1 U$ q2 X只有在合作结束(cooperative close)证明是不可能的情况下,才可以显示阈值公钥的实际情况:调整。' B; y( ^! N7 T0 x  v& I. y
. }7 o1 X* i. q5 B
在这种情况下,将显示原始阈值公钥和脚本。这证明“阈值公钥X脚本”是用这个特定脚本进行调整的。因此,就像P2SH中的哈希值一样,这种调整向全世界证明了,如果满足脚本中指定的其他条件,资金就应该是可花费的。( l9 m. ~( n9 u) h5 M6 N
; l8 V) L# k9 E
或者,可使用默克尔树的Merkle根来调整阈值公钥,而不是使用脚本来调整阈值公钥,该Merkle根包含了可以使用资金的所有不同条件:即MAST结构。那么,要花掉这些资金,只需要揭示已满足的支出条件。4 N! N- P3 V% N) d) ^9 H

6 y- m7 v7 H* V6 {# J! F* z- ]因此,Taproot提供了MAST的所有好处,而在正常情况下,没有人会知道一笔常规交易隐藏了如此复杂的智能合约。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

是鹅好甜 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    25