4

Mimble-Wimble:区块链的优化黑魔法

 5 years ago
source link: http://www.chaindd.com/3112418.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

报告摘要:

Mimble-Wimble提供了一种对比特币进行显著优化的方法。它能节省存储空间,同时还提供了很强的交易隐私性。在Mimble-Wimble中,不存在交易地址,交易金额也是隐藏的,同时中间状态的交易可以得到合并。这种“一石二鸟“的效果通过精妙的设计来达到,相当于在比特币的基础上提高了区块链的可扩展性。但是由于其删除了比特币的脚本,所以时间锁和原子交换等功能需要通过另外的方式实现,而且由于其设计的原因,在交易过程中双方需要通过外部渠道(例如通过邮件或者电报群等方式)进行交互,不像比特币一样知道地址就可以转账,由于技术较新,需要经过测试网的验证才能保证安全。比特币是非常鲁棒的,但是技术经过了10年的发展,目前的比特币应该可以有较大的提升空间,Mimble-Wimble保留了POW的优点,从UTXO集合的优化上做文章,并且理论上的存储空间优化非常显著,带来了在保留去中心化前提下提高可扩展性的新思路,值得关注。

在比特币中,全节点需要下载完整的约160GB的历史账本数据,来给未花费的交易输出UTXO集合做担保,确保每笔交易中的输出地址中有足够的UTXO来满足交易条件。它们需要检查提交至区块链的接近15000万笔交易,以得到接近400万个未花费的交易输出。正是由于需要检查所有历史交易数据的这个步骤,使得成为比特币全节点的门槛大大提高,而降低全节点的门槛对于保证区块链的去中心化至关重要,况且历史账本随着时间的推移大小还会不断增大,在较短期的未来,普通个人电脑难以支撑比特币全节点的运行。是否存在一种方法,使得让全节点不需要下载全部的历史账本数据,但仍然能够保证UTXO集合的合法性和区块链的安全?

除此以外,现有的比特币的隐私匿名性也并不如想象中的好,采用基于UTXO的模型,记录未花费的交易输出的转移,由于地址和转账金额是公开的,通过复杂的数据分析技术,有可能根据这些转账历史分析出地址对应的交易双方身份,用户的隐私性和交易的匿名性因此可能受到威胁。

事实上比特币的这些缺点的确存在着优化的办法,不仅可以使得原本需要下载160GB的历史账本缩小为50GB,显著减少存储空间和带宽使用,而且还可以提供更强的隐私性,这个强大的技术就是Mimble-Wimble。

它最初的白皮书在2016年发布,技术名称和作者都充满了魔幻的色彩,Mimble-Wimble是《哈利波特》中的一个咒语,和中本聪一样,作者采用了化名Tom ElvisJedusor(伏地魔在《哈利波特》中的法语名称),在扔下白皮书后销声匿迹。白皮书发布后不久,名为Ignotus Peverell(也是哈利波特中的人物)的开发者开始在Github上尝试用代码实现Mimble-Wimble,来自Blockstream的数学家也在国际会议上对此技术进行了探讨,目前开发者们发布了几个测试网络。

在Mimble-Wimble中,隐私性和可扩展性得到保证的原因来自于以下三点:

1. 区块链中没有地址,每次转账中接收方都要构建新的交易见证。

2. 交易金额也是隐藏的。

3. 中间状态的交易可以合并,更少的信息使得追踪更加困难,合并是指如果在要打包到区块的所有交易中,先有A转给B钱,后又有B转给C一定的钱,那么不需要全部记录这两笔交易,只需要记录A转给C多少钱,合并交易的中间状态,同时附上B的签名,就可以既保证交易的安全又确保不双花的同时减小UTXO集合大小,显著减少区块存储所需空间。

Mimble-Wimble依赖于椭圆曲线密码学(ECC),在ECC中,通常选择一个非常大的数字k作为私钥,如果H是椭圆曲线上的一个点,那么k*H则作为相应的公钥,椭圆曲线的性质保证了难以从公钥推导出私钥k,因为曲线点的除法非常困难。基于这个属性,可以在交易中隐藏实际交易金额,方法如下:

假设交易的金额是v,节点在验证交易的输出等于输入时等价于要验证v1+v2=v3,该式子等价于在等式左右两边乘上椭圆曲线上的点H,即需要验证:

v1*H+v2*H=v3*H,

虽然这样已经难以反推出实际交易金额,但是由于可以尝试的集合有限,攻击者仍有可能反推出v1的值。因此,引入第二个椭圆曲线G点和私钥r,将交易中的任意一笔输入输出值用r*G+v*H表示,由于椭圆曲线的性质,r和v都不能推导出来,那么需要验证的等式变成了:

r1G+v1H+r2G+v2H=r3G+v3H,

并且要求r1+r2=r3,这样交易的实际金额就得到了很好的隐藏。在实际的交易中,交易的金额只有双方知道,区块链的节点看到的信息是经过加密后的数字,而私钥r只有自己知道。为了验证交易的输出等于输出,而又要保护发送人的私钥不被接收人破解,需要发送者选择一个额外值excess value,加到自己的私钥上,在接收者视角只看到两者的和,而只有自己知道真正的私钥值,在验证时只需要验证,交易输出的和等于输入,且交易者知道excess value即可(证明自己知道的方法就是用其来构建ECDSA签名)。因此,excess value的作用就相当于一笔交易的私钥,通过UTXO的验证即可防止双花。

在合并交易时,执行的验证过程类似,因为单笔交易需要验证的内容是输出等于输入,那么经过合并(包括混合以及删减中间状态)后的交易本质上要验证的也是总/最终的输出等于输入,中间状态的交易则只需要验证它的签名即可。如果出现了双花,那么和比特币一样节点很容易可以验证出总的交易输出不等于输入。在Mimble-wimble中,节点可以将采矿所产生的所有资金的总和与持有的总金额进行比较,以检查总货币供应的正确性。通过范围证明可以用来确保交易中没有滥发货币。

总结:

综上,Mimblewimble的主要优点是在提供较强隐私性的同时,所需要的存储空间很小,可扩展性高。由于不需要存储整个交易历史的区块链,通过合并中间状态的交易,只需要存储某个币的来源和现在的状态,每个历史交易只需要存储约100字节的核(transaction kernel), 相比其它区块链节省了大量空间,也使得新节点需要加入网络时,需要同步以及传输的信息量也非常小。但其删除了比特币的脚本,且加密过程中计算需要一定时间,因此其出块时间大约在1分钟。同时在交易验证时也需要双方进行一些信息的交互,使得某些交易功能可能有所限制。

作为一项较新的且富有前景的技术,它的安全性需要经过时间的考验,也需要大量的开发者来帮忙参与测试与验证。比特币是非常棒的,但是技术经过了10年的发展,的确应该有较大的优化,Mimble-Wimble保留了POW的优点,从UTXO集合的优化上做文章,并且理论上的存储空间优化非常显著,带来了在保留去中心化前提下提高可扩展性的新思路,值得关注。

参考文献:

[1] 区块链那点事,《UTXO Commitment有望彻底解决大区块存储问题》http://t.cj.sina.com.cn/articles/view/2696852533/a0beb43500100agcv

[2] 安东尼奥马德拉,《什么是Mimble-Wimble》,https://www.cryptocompare.com/coins/guides/what-is-mimblewimble/

[3]Mimble-Wimble白皮书,https://download.wpsoftware.net/bitcoin/wizardry/mimblewimble.txt

[4]Gary Yu,《Mimble-Wimble和Grin简介》,https://github.com/mimblewimble/grin/blob/master/doc/intro.zh-cn.md#transaction-conclusion

文章版权为哈希未来所有,如需转载,请联系哈希未来工作人员。

(作者:哈希未来 | 陈致佳 、蒙绎泽、江泽武,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK