本文主要是介绍Qtum 量子链研究院:新型的隐私保护协议MimbleWimble,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2016年5月,一篇匿名白皮书介绍了一种隐私性加密实现方式并命名为MimbleWimble,其名源于《哈利波特》中一种防止人们泄露秘密的咒语。
* Harry Potter — Warner Bros
与大众所熟知的Zcash不同,MimbleWimble不需要可信的设置,所有交易都是默认隐私性,不需要进行选择设置。此篇文章主要讲述MimbleWimble如何做到隐私,以及分别比较MimbleWimble两个项目Grin和Beam有何独特的优势。
中本聪发布的白皮书中有名为“Privacy”章节中清楚的阐释了BTC隐私的局限,如果一旦发生网络攻击,黑客可以获取到BTC用户相关数据定位以及其他数据标签将用户“透明化”,这些数据侧面描写可以显示出:
-
发送者地址
-
发送BTC数量
-
接收者地址
BTC底层的UXTO模型使得在进行交易的时候避免了双花,保持交易平衡。为了验证BTC的底层系统满足第二个条件,给每一个地址的用户生成了相对应的私钥,其中公开地址持有BTC发送者通过使用对应私钥产生一个签名,并为他的交易签名。每个人都可以验证这个签名是由持有比特币的地址对应的私钥产生的;这样我们就验证了交易来自有权发起交易的人。
而Mimblewimble 可以在不泄露双方地址和交易数量进行完整交易。相较于比特币协议,Mimblewimble 的匿名性更强,并且更轻便。
什么是MimbleWimble 协议?
Mimblewimble 最初是被定义为一种对比特币的改进,因比特币创立之初的去中心原则的设计,如今能够运行完整节点的数量正在减少,单个节点承载区块链所有的历史记录使得记录成本越来越高。
MimbleWimble 基于椭圆曲线加密,通过为所有输入和输出创建一个多重签名来更改比特币模型。参与交易的各方创建一个可以验证交易的公共多重签名密钥。特别的是系统中没有地址,因为参与交易的双方分享 “致盲因子”信息,简单的来说就是只有交易双方才会知道相关交易信息,从而保护用户的网络隐私。
致盲因子(Blinding factor,缩写 BF):是一种用于电子钱币的造币技术。致盲因子的功能即是让此电子钱币的序号加盲,让电子钱币身份识别序号和金额利用顾客的私钥送给银行。银行使用顾客在网络上的公开金钥解开资料封包,确认身份识别和账号余额无误后,增加顾客的e-cash liability金额。接着在传送给顾客银行的私钥,顾客再以银行在网络上发行的公开金钥解开资料封包,顾客取得电子钱币签章后,以还原的方式去除致盲因子,即可取得经网络银行签章过后的原始电子钱币序号。
致盲因子帮助交易双方共享交易信息同时也屏蔽节点知道交易信息的可能,并且对特定事务中的输入和输出以及事务方的公钥和私钥也进行加密。在 MimbleWimble 使用了Pedersen 承诺方案,在该设计中,全节点从事务接收端加密的数量(输出)减去事务发送端加密的数量(输入)。
这个平衡的等式意味着不会凭空产生币,节点也永远不需要知道交易信息。
举一个简单的例子来说明致盲因子是如何工作的:
1 + 1 = 2 // 1 + 1-2 = 0
这只是一个简单的平衡方程式,表明没有创造新的资金(通过重新排列以显示余额为净零)。
1*5+ 1*5= 2*5
这里将需要加密的数字5乘以所有变量,就使原始值模糊不清。
5 + 5 = 10
因此得出,价值是恒定的,并且致盲因子也是被加密的。由此看出MimbleWimble 的创造性,其中致盲因子实际上是交易方私钥和公钥的组合,通过这个被模糊但相等的等式,我就可以证明交易数量相等,并且我是密钥的持有者。
在交易结束时,您将获得此交易的多重签名,并且在交易时的大多数输入被输出消耗,使得在更少的空间内(较与比特币)就可进行完整验证,上链的数据减少了并且摒除繁杂步骤剔除多余的数据,MimbleWimble 运行便很大程度上得益于只在区块链中存储少量数据。
Grin 和 BEAM 是基于 MimbleWimble 协议两种不同的加密方式,尽管表面上相似,但除了基于 MimbleWimble 协议之外,其他各个方面都不同。
GRIN
2016年11月以Grin为命名初次实现了MimbleWimble协议,由Ignotus Peverell在IRC发布,如今依然是Grin最活跃的代码贡献者。Grin主要编译语言是Rust,主网于今年1月15日上线,一经上线便吸引了大批资本矿池与矿工加入。
Grin使用了新的 Cuckoo Cycle,这是 John Tromp 在 2015 年开发的替代POW的证明。尽管该算法的设计初衷是抵抗 ASIC,但该团队长期以来一直认为 ASIC是不可避免的。2018 年 9 月出现了两种解决方案:一种优化为 ASIC 友好型( Cuckatoo31+);另一种优化为允许 GPU 竞争( Cuckaroo29 ), POW 每 24 小时平衡两种算法之间的挖掘奖励,从而抵抗像比特币的硬件武装竞赛现象出现。
除了令人印象深刻的Cuckoo算法之外,Grin还有一些有趣的特点:
-
SnRoR签名,也称为聚合签名,为ScriptlessScripts支持智能合约铺平道路。
-
蒲公英协议,这使得初始发送人的IP更难以追踪。在进行广播之前,所有的交易都在网络上徘徊。
-
防弹技术,它允许对更小的零知识证明的私密交易进行处理,不需要可信的设置。
-
flyclient,一个超轻量级客户端,它同步所有先前Block Header的默克尔根,而不是对前一块的引用。它允许通过存储Head来检查任何先前块的包含。
-
原子交换,Grin的第一个原子交换,Grin testnet3和Ethereum Ropsten testnet之间进行了第一次原子交换已经成功实现。
BEAM
2018年4月出现了另一个MimbleWimble尝试——Beam,编译语言为C++,在很短的时间内Beam发布了测试网,并且在近期推出兼容 Mimblewimble 协议的闪电网络( LN ),在链下价值快速转移的情况下实现第二层扩展解决方案,提高可用性便于商业支付场景。
Equihash是一种需要高内存的工作量证明,这意味你能挖到多少币主要取决于你的设备内存的大小。在短期内要创建一个低成本的挖矿定制硬件(专用集成电路)几乎不可能,所以Equihash被认为可以构造更去中心化的一种POW算法。
除了Equihash外,Beam的一些有趣的部分还包括:
-
在Stem阶段用混淆合并交易进一步改进蒲公英协议。
-
BatchBulletproofs签名。
-
超轻量级的flyclient实现。
-
安全的BBS,这就降低了发送者和接收者同时在线的需求。
-
可审核的钱包,能够为第三方发出一个或多个审计密钥。
-
视觉化设计移动钱包,全部充当完整节点,并与硬件钱包互相整合。
-
在钱包内通过P2P交易进行比特币的原子交换。
BEAM 和 Grin 之间的区别
闪电网络最初是用来解决比特币网络阻塞问题而提出的比特币网络改进方案。为什么要使用闪电网络?
回顾:Qtum量子链研究院:闪电网络(上)
Qtum量子链研究院:闪电网络(下)
首先,更快的出块时间并不一定意味着更快的支付确认。其次,考虑到更多的数字货币支付用例,例如在酒吧付啤酒钱又着急离开、在赶火车时买了一杯饮料等情境下都需要快速支付,实验表明,闪电网络能够实现使支付体验像信用卡支付一样快速、简单,这使其成为实现加密货币主流应用的基础之一。
Beam 和比特币的底层协议之间存在很多差异,因此引入兼容 Mimblewimble 协议的闪电网络存在一些挑战。
主要差异在于 Mimblewimble 协议中缺少脚本,引入闪电网络需要使用多个构建在彼此之上的交易,这些交易的支出需求将共同形成与比特币中的 HTLC(散列安全时间锁合约) 相同的结构,支付渠道的参与者将合作构建这些不同的交易,这将导致在通道参与者之间发送的消息增加,但 Beam 认为这是值得的。
另一方面,闪电网络的核心概念哈希时间锁合约的构造需要另外两种智能合约方案:哈希锁和相对时间锁。哈希锁是 Beam 基础协议的一部分,但目前 Beam 还没有实现相对时间锁。
目前,Qtum量子链已实现闪电网络测试:基于Qtum量子链的闪电网络功能简介及测试
参考资料
Conor O'Higgins,Mimblewimble explained like you’re 12
Mattia Franzoni,Grin: a lightweight implementation of the MimbleWimble protocol
Brian Curran ,What is Grin Coin & MimbleWimble? Complete Beginner’s Guide
Grin的网站:https://grin.mw/up/
Grin的Github: https://github.com/mimblewimble/grin
Beam的网站:https://www.beam-mw.com/
Beam的Github:https://github.com/beam-mw/beam
Arjun Balaji,From #reckless to Wumbology: Lightning Network’s Infrastructural Build Out
https://zh.wikipedia.org/wiki/%E7%9B%B2%E5%9B%A0%E5%AD%90
这篇关于Qtum 量子链研究院:新型的隐私保护协议MimbleWimble的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!