改善比特币可替换性、可扩展性和隐私保护的下阶段——MAST

2016-10-14 07:19:13

改善比特币可替换性、可扩展性和隐私保护的下阶段——MAST

即将实现的隔离见证会通过不同的方式来扩展比特币的潜力,其中一种方式叫做MAST,这是“默克尔抽象语法树(Merkelized Abstract Syntax Trees)”的简称。MAST在改善了比特币智能合约灵活性的同时,还提高了比特币的可扩展性和隐私保护。

MAST的原始概念由Blockstream开发者和Core开发者Russel o`Conner、Dr.Pieter Wuille、Peter Todd提出。最近有比特币Core开发者Dr.Johnson Lau起草了一份MAST比特币改善提案(BIP)。

MAST对于改善比特币的扩展潜力来说,非常的直截了当。

P2SH:简介

MAST的一部分实现要基于P2SH(Pay to script hash 脚本哈希地址支付),这种比特币交易类型已经被使用了好几年了。

每一笔比特币交易实际上是“把比特币锁定在”一个输出中,这个输出指定一个比特币地址。这些比特币在之后的交易中从被锁定到解除被锁(然后再次锁定),这是比特币在地址间有效移动的过程。

这种锁定是由脚本完成的——两行代码,对于标准的比特币交易来说,这种脚本包含在输出中,定义了之后的比特币交易要满足的条件。

大部分的非标准比特币交易,如多重签名交易和时间锁定验证交易(CheckLockTimeVerify或 CLTV),这些交易相对的比较复杂一些,叫做“P2SH”交易。使用这种交易方式进行交易时,比特币依然被锁定在一个脚本中,但,这个脚本本身没有包含在这个交易输出中,而且,这个脚本是被哈希处理过的,它被压缩进一个短的貌似随机的字符串中,这个字符串不能被转换成原始脚本,但是对原始脚本进行哈希处理可以得到这个字符串。这种交易输出包含了这个脚本的哈希值。

由于无法满足这个脚本定义的需求,所以无法在之后的交易中对P2SH输出解锁,毕竟此时比特币网络中的节点值只知道这个脚本的哈希值,而不是真正的脚本。因此,这些节点不能确定一个交易是否满足脚本定义的需求。因此不能对这个交易进行确认。

这也是为什么之后的交易必须必须包含整个脚本,这个脚本中包含了完成交易需求:(锁定)脚本本身、解锁钥匙(脚本定义的要求)。

通过哈希处理这个实际的脚本,比特币节点可以验证这个脚本哈希值是否与之前输出中的脚本哈希值一致。如果一致,那么节点就会知道,这些比特币可以被锁定在这个特殊的脚本中,然后验证这个脚本定义的要求,这个交易就可以被确认生效了。

默克尔树(Merkle Trees 二叉哈希树):简介

MAST的实现还和默克尔树相关,这是一种加密技巧。

默克尔树是一种数学结构,它把不同的数据集压缩成一个紧凑的哈希值中:默克尔根(Merkle root)。跟其它哈希过程一样,默克尔根不能重建默克尔树上的数据。

但是,默克尔树有一个优点,就是如果默克尔树上的一个数据是已知的,那么默克尔根可以被用来验证这个数据是否存在于这个默克尔树上——无需知道默克尔树上的所有数据。

我们举个例子,假如小明用数据集“123”和“456”生成了一个默克尔树,这个默克尔根是“789”,然后小明对小花说数据集“123”在这个默克尔树中,此时,小花可以使用这个默克尔根(“789”)验证“123”确实在这个默克尔树上,即便是他不知道“456”是否存在这个默克尔树上。事实上,就算他知道这默克尔树上有上千个数据集,他也无法解码它们中的任何一个。

MAST:P2SH + 默克尔树

MAST本质上是把P2SH和默克尔树进行了整合。

使用MAST,比特币不是被锁定在单一脚本中,而是锁定在一系列不同的脚本中。换句话说就是,相同的比特币可以被锁定在不同且互斥的条件中,(例如,只需要小明的密钥签名,或小花和小丽共同的签名,或者是只要小丽一人的签名但要等一段时间,等等。)

不管哪种情况,首先被触发的情况决定了这些比特币的结局。(如果小明第一个签名花掉这些比特币,那么这个交易是有效的;如果小花和小丽两人比小明先行动花了这些比特币,这个交易也是有效的。或者如果过了一段时间后小丽首先对这些比特币进行了签名交易,那么这样的交易也是有效的。)

很像P2SH,所有这些脚本都经过哈希处理。这里不同的是,它们被整合近了一个默克尔树中。而且这个默克尔根被包含进了一个交易输出中,为这个交易上锁。

花掉这些比特币的过程也和P2SH交易过程类似,为了从这个默克尔根中把这些比特币解锁后进行交易,这个新交易必须包含一个脚本和解锁这个脚本的要求(锁和钥匙)。

重要的是:并不需要包含所有潜在的脚本(锁定),只要使用一个就行。(如果小明第一个要花掉这些比特币,那么他并不需要包含小花和小丽的脚本,事实上,小明甚至可能不知道小花和小丽也可以花掉这些比特币。)

比特币节点可以通过默克尔树验证这个包含脚本的交易。通过这个输出中的默克尔根可以验证这个被使用的脚本是否真的存在于这个默克尔树上。如果是真的存在,那么节点就是可以认为这个脚本是可以花掉这些比特币的选项之一,可以验证这个新交易使之生效。

好处

MAST从三个方面改善了比特币:扩展了智能合约的灵活性;改善了可扩展性;加强了隐私保护。

MAST所提供的智能合约的这种灵活性并不是全新的,当前只用P2SH也可以实现一些“非此即彼(either/or)”的结构(只要小明签名,或者小花和小丽的共同签名等。)但,当前为了避免DoS攻击,对不同的选项有一个协议强加的体积限制。

MSAT通过消除这样的限制扩展了智能合约的灵活性,不管花掉比特币的充要条件有2个还是20个或者是1000个,都是没有区别的,这个交易只需包含一个脚本就可以了。这样一来就可以进行更复杂的交易了,如1:1000的多重签名交易,对当前的多重签名脚本来说,这个数量是太大的;或者可以指定一大批的用户在不同时间花掉特定的比特币等。

还有就是,通过P2SH实现的“非此即彼(either/or)”结构,只有在所有的脚本公布后才能解锁比特币,而不是只用要用的那一个就行。这将导致交易体积过大,而且交易费用增加。MAST只需最终使用的脚本就可以了,这样改善了可扩展性。同时,减少了节点要在整个网络中传输、验证、存储的数据量。

另外附加好处就是,MAST通过隐藏未用到的脚本信息,加强了隐私保护,例如,如果在一个三方交易中,第三方仲裁者如果没有参与这个交易,他就会被隐藏起来(因为参与双方使用的是2:2多重签名脚本,而不是之前的2:3版本)。或者它可以保护从未使用过、过期的安保措施不被公众所知。

原文链接:The Next Step to Improve Bitcoin’s Flexibility, Scalability and Privacy Is Called MAST

原文作者:Aaron van Wirdum

媒体来源:BitcoinMagazine

郑重声明:本文内容为BTC.com团队翻译,未经授权不得转载,如需转载请联系QQ843586524。

OKEX下载欧易下载OKX下载

okex交易平台app下载

下五篇