Mimble-Wimble:区块链的黑魔法

本文约2512字,阅读全文需要约4分钟
Mimblewimble的主要优点是在提供较强隐私性的同时,所需要的存储空间很小,可扩展性高。

编者按:本文来自哈希未来,作者:陈致佳 、蒙绎泽、江泽武,星球日报经授权发布。

报告摘要:

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

本文来自投稿,不代表Odaily立场。如若转载请注明出处。

ODAILY提醒,请广大读者树立正确的货币观念和投资理念,理性看待区块链,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。

推荐阅读
星球精选