当前位置:首页 > 比特币新闻 > 正文

如何最大程度提高比特币的弹性、延展性和隐私性?答案就在这个全新的改进协议MAST中

来源: 互联网时间:2016-10-14 14:53:00

即将到来的隔离验证(SegWit)软分叉能够从多方面挖掘比特币的潜力。隔离验证带来的其中一个潜在创新就是MASTMerkelized Abstract Syntax Trees,尚未有统一翻译方法,欢迎读者去论坛贡献词条)。MAST的主要目标是提高智能合约的弹性(flexibility)、延展性(scalability)和隐私度。

MAST方案由Blockstream开发者拉塞尔•奥康纳(Russell O’Connor)、Blockstream兼Core开发者彼得•乌莱(Pieter Wuille)以及Core开发者彼得•托德(Peter Todd)共同提出。近期,MAST草案已经由Core开发者约翰逊•劳(Johnson Lau)写入比特币改进协议(BIP)。

MAST的潜力无穷。

比特币交易

P2SH

要了解MAST,首先要明白脚本哈希支付方式(P2SH,Pay to script hash)。P2SH在比特币交易中已经运作多年。

所有的比特币交易归根结底就是在输出(output)时“锁定比特币”到某个地址。这些被锁定的比特币在后续交易中会被解锁(然后又被锁定);这就是比特币在各个地址之间的转移过程(也就是交易过程)。

这个锁定过程由一段脚本语言(script)完成,也就是几行代码。标准交易中,输出时会包含这段脚本语言,以此来规定后续交易中比特币的转移方式。

而采用多重签名(multisig)CheckLockTimeVerify的非标准比特币交易则需要一种相对比较复杂的机制,也就是P2SH。在这种模式下,比特币仍然由一段脚本语言锁定。但这段脚本语言不会出现在交易输出中。这段脚本语言会被哈希(hash),以乱序的形式出现,并且缩短了长度,看起来就是一串随机的数字。这串随机的数字不能用于复制初始脚本,但只要有了初始脚本之后,这串随机数可以通过再次哈希进行复制。而交易输出中出现的仅仅是这段脚本语言的哈希。

要在后续交易中解锁P2SH输出,单单符合脚本语言规定的要求是不够的。毕竟,网络中的比特币节点看到的只是哈希后的脚本,并不是初始脚本。因此,节点无法验证及确认交易。

因此,下一笔交易必须包含整个脚本及其规定的转移方式,即负责锁定(脚本语言)和负责解锁的关键(转移方式)。

哈希正确的脚本之后,比特币节点就能验证这个脚本是否与上一笔输出中的脚本哈希匹配。如果匹配的话,节点就知道这笔比特币确实锁定在某段具体的脚本之中。然后他们就能验证该交易是否符合脚本规定的转移方式,最终交易才能被确认。

梅克尔树

解开MAST之谜的另一个关键是梅克尔树(Merkle tree,也可称为二进制哈希树)。

从本质上说,梅克尔树是一种数学结构,能够将不同的几组数据哈希成一种单一的紧凑哈希:梅克尔树根(Merkle root,二进制哈希树根)。跟其他哈希一样,梅克尔树根不能用于再造梅克尔树上的数据。

不过梅克尔树有一个独特的优势。如果梅克尔树中的任意数据是已知的,只要通过梅克尔树根就能确认该数据在其中的具体位置。

举一个简单的例子。小红创建了一个梅克尔树,将数据组“123”和“456”组合在一起,得出的梅克尔树根是“789”。然后小红告诉小明,数据“123” 在梅克尔树的某个位置。通过梅克尔树根(“789”),小明就能验证“123”是否真的在小红所说的位置,就算他不知道“456”的存在也不会有什么影响。事实上,尽管他知道梅克尔树中可能存在成千上万个数据组,他也不可能破译其中的任何一个。

MAST= P2SH +梅克尔树

MAST实际上结合了P2SH 和梅克尔树的优势。

MAST不会把比特币锁定在单一的脚本中,而是把同样的比特币锁定在不同的脚本中。也就是说,相同的比特币可以在一连串不同的,甚至是互相排斥的条件中锁定。哪个交易条件先匹配成功,就能优先使用这笔比特币。

举个例子,如果交易条件可以是需要小红的签名,或者需要小明和小华两个人的签名,又或者是过了特定的时间之后,要求小华的签名等等。假设小红是第一个签名的,然后就会生成输出,接着交易生效。如果小明和小华赶在小红之前签了名,那么它们的交易就生效了。以此类推。

和P2SH一样,以上交易涉及的脚本都经过了哈希。但同时又存在在梅克尔树中。而相应的梅克尔树根又在交易输出中,可以进行最终锁定。

要创建一笔交易来解锁梅克尔树根中的交易,整段脚本和相应的解锁要求都必须包含在这笔新交易之中(相当于锁和钥匙)。

但重要的是:该笔交易不必包含所有潜在脚本。只需要留下有用的那段。回到上述例子中,如果小红要先使用这笔比特币,那么她的交易中不用包含小明或小华需要的脚本。事实上,小红根本没必要知道其他人的脚本。

有了MAST,比特币节点可以使用梅克尔树来验证脚本。他们可以用输出包含的梅克尔树根来检查某段脚本是否真的存在在对应的梅克尔树中。如果结果是肯定的,这笔交易就能被确认。

优势

MAST可以从三个主要方面改进比特币网络:提高智能合约的弹性、延展性和隐私性

MAST所能实现的智能合约弹性其实并不完全是新概念。P2SH中早就存在一些可用的“either/or”指令了(比如说,需要小红的签名小明和小华的签名)。但在应对DoS攻击方面,P2SH的指令却存在协议层面的局限性。

而MAST可以在提高智能合约弹性的同时摆脱这种局限性。是否存在两种可行的方法来使用20个或1000个比特币?这个问题对网络来说没有差别,无论如何,某段脚本总会对应特定的交易需求。这同时会带来新的以及更加复杂的可能性,比如说 1-of-1000多重签名交易(目前的系统无法适应这么大的容量),或者列出一长串用户地址,设定不同的时间发送比特币。

另外,P2SH的这种“either/or”指令只有在所有脚本都出现之后才能成功解锁。这样很容易造成交易信息过大和手续费过高的问题。而MAST则只需用户提供对其有效的脚本,从而达到提高延展性的目的。因此,MAST能够减少全网节点转移、确认和存储的数据。

通过隐藏不可用的脚本(即他人交易涉及的脚本),MAST还能提高隐私度。比如说,在某笔交易没有生效的前提下,用户就无法知晓其中信息。MAST还能隐藏一些从未使用过的、已经超时的安全改进。

作者注:MAST方案仍处于不断研发中,后续改进可能会和本文内容有出入。
译者注:因译者不是专业开发者,翻译中若理解有误,欢迎指正。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。