一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

摘要       比特币在隐私性上存在着先天缺陷。除了门罗、达世、Zcash等项目外,近两年新诞生的Mimblewimble协议也致力于解决加密货币的隐私问题。Mimblewimble协议组合了保密交易、交易混合和蒲公英协议等多种隐私保护技术,隐去了交易金额,消除了交易地址的概念,而且中间状态可以合并,使其在保护交易隐私的同时简化了交易大小,拥有较好的可扩展性。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

摘要

       比特币在隐私性上存在着先天缺陷。除了门罗、达世、Zcash等项目外,近两年新诞生的Mimblewimble协议也致力于解决加密货币的隐私问题。Mimblewimble协议组合了保密交易、交易混合和蒲公英协议等多种隐私保护技术,隐去了交易金额,消除了交易地址的概念,而且中间状态可以合并,使其在保护交易隐私的同时简化了交易大小,拥有较好的可扩展性。

       基于Mimblewimble协议诞生了Grin和Beam两个项目。虽然底层协议相同,但二者在组织形式、货币政策和发展方向上都有很大差异。社区化运作的Grin更像是一个硬核的原教旨主义加密货币,而公司化运作的Beam通过降低用户门槛、设置隐私权限等方法,未来在商业化落地应用方面具有更大的潜力。

 

一、经典比特币所面临的隐私性问题

在比特币理念刚提出时,人们曾普遍认为比特币是一种强隐私保护的加密货币。虽然为了防止双花(同一笔钱被多次重复花费),所有交易都是公开的(需要全网节点验证),但公开的只是交易双方的地址和金额,地址背后现实世界中对应的人的身份是保密的,我们可以在网站上查到A与B地址之间发生了一笔转账,但却无法知道地址背后对应的到底是炒币的散户,还是交易所,亦或是丝绸之路网站上的商家。

       但实际上,这种隐私模式并不像理论上想的那样完美。因为在现实生活中无法保证攻击者和追踪者永远不能通过交易的模式和信息推断出比特币地址和现实身份之间的关联。如果仅给定一组比特币地址信息和一组现实世界人的信息,而不给任何涉及二者之间关系的信息,那么确定地址与人之间的映射关系是困难的。但一旦追踪者知道了任意一条映射关系(比如,A地址属于某某交易所或某某公司,通过它的交易记录),那就可以从这里为切入口不断定位出更多的比特币地址。只要追踪者长期对交易进行跟踪,他们就可以发现和A相关的大部分地址背后对应的真实个体。

       因为经典比特币模型面临着隐私泄露的问题,后续的诸多开发者和项目都将重心放在了改进隐私保护上,比较出名的项目包括使用了环签名(ring-signature)的门罗和使用了零知识证明(Zk-snark)的Z-Cash。而我们今天要介绍的是一个新的隐私保护协议:Mimblewimble。

 

二、Mimblewimble协议的解决方案

Mimblewinble 这个名字听起来很无厘头,但它是一种可以防止区块链泄露个人信息的技术。它的名字来源于《哈利波特》中一种防止人们泄露秘密的咒语。该协议最早于2016年8月被一个化名为Tom Elvis Jedusor(法国版伏地魔的名称)的开发者提出,最初的方案非常简洁,采用了比特币的主要架构、移除了比特币的script、增加了保密交易和交易合并机制(cut-through)。之后,诸多开发者、工程师和研究人员都以社区的形式参与完善了Mimblewimble协议及系统,该协议之上也诞生了两个时下最火热的项目,Beam和Grin。

 

1、经典比特币的UTXO模型

要理解Mimblewimble协议是如何保护隐私的,我们首先要理解经典比特币的记账方式,UTXO。

       经典比特币的账本设计中,每一笔交易都被分为了交易输入(Input,即交易前的账本状态)和交易输出(Output,即交易后的账本状态)两部分,记录了不同状态下每个系统参与者所拥有的未花费交易输出情况,也就是常说的UTXO(unspent transaction output)。由于交易是连续进行的,因此这一笔交易的输入可以看做上一笔或几笔交易的输出。通过这样的方式一环套一环,从而形成一个链条,将每个时刻的账本信息打包在不断产生的区块中,就是我们现在看到的比特币区块链。

       举例来说,A现在要转2个比特币给B,在区块链网络上我们可以看到这笔交易的输入是A有4个币,B有2个币,输出是A有2个币,B有4个币,实际上A和B显示的是一串他们的钱包地址。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

       一个稳定的货币系统必须要满足两个条件,其一是交易前后货币总量相等(即不能凭空多造钱也不能丢钱);其二是无论交易前后账户内的余额都需要大于等于0,且用户只能从自己的账户内转账(即我不能转超过我账户内余额的钱)。我们可以看到在上面的例子中,交易前A和B一共有6个比特币,交易后依然有6个比特币,因此满足了第一个条件。而比特币独特的公私钥体系允许用户对每笔交易使用自己的私钥进行签名,因而节点可以验证交易是由特点的发起人(与私钥对应的地址)发起,再结合其交易输入就可以判断交易后余额大于0,因此满足了第二个条件。

       虽然比特币的UTXO模型满足了货币系统的要求,但是它在隐私性方面却存在着上文所述的问题,即每一笔比特币交易的两点核心信息都是全网可见的:

Ø  发送方与接收方的地址

Ø  发送的比特币的数量

 

2、Mimblewimble协议的密码学原理

从前面的讨论中,我们已经知道,Mimblewimble需要解决的问题是:在不显示交易双方地址以及交易金额的前提下,验证交易前后货币总量相等;发出交易的用户持有对应的私钥,且交易前后账户余额都要大于等于0。

本节的接下来会用尽可能通俗易懂的语言来解释Mimblewimble背后的密码学原理。

       首先需要简单的介绍一下椭圆加密曲线(ECC),这也是比特币所依赖的加密算法。简单来说,密码学上的椭圆曲线是一组点集,该集合最大的特点是可以进行我们熟悉的加、减、乘运算,但除法非常难运算。在比特币加密算法中,私钥是在一个大的集合中随机选取的整数(标量),协议选择椭圆曲线上的任意一点称为生成点,将私钥与生成点相乘可以得到公钥。由于除法非常难运算,而外界并不知道生成点,因此就很难从公钥逆推得到私钥。

注:关于乘法难以被逆运算的问题,我们可以这么理解,让任何一个8岁以上的小学生计算23*19=?都是一道送分题,但是反过来,如果要人计算??*??=437,那么难度就大大增加了(即便23和19都是质数,不能再被分解)

       我们需要利用椭圆加密函数的另一个性质是同态加密,同态加密的定义是对原文进行一定运算后再进行加密得到的值,和先对原文加密后再对密文进行一定计算得到的值相等,如果满足加法运算就是加法同态,满足乘法运算就是乘法同态。举个例子来说,如果aH+bH=(a+b)H,那么我们就说它是满足加法同态的。而恰好我们知道,椭圆加密算法满足加法和乘法同态。

 

保密交易与Pedersen承诺

       我们首先要做的是确认交易输入和输出的余额是相等的。假设交易的输入值是v1和v2,输出值是v3,那么我们只需要验证v1+v2=v3,而不用像比特币账本一样清楚的知道上面每个值。进一步,我们引入椭圆曲线上的发生器H,根据同态加密原理,我们只需证明:

v1H+v2H=v3H                            (1)

验证每笔交易的这个属性允许协议验证交易不会凭空创造出金钱,而无需了解实际的交易值是多少。为了增强保密性,协议引入了椭圆曲线上第二个发生器G,并引入了私钥r作为致盲因子。这样一来,交易的输入或输出值就变为了

vH+rG                                 (2)

其中r是私钥,作为致盲因子;v是交易的输入或输出值;H和G分别是两个椭圆曲线点。在一笔交易中,交易的发送方和接收方需要分别给出这个数字,这个数字被称为Pedersen承诺,它代表着加密后的交易金额和私钥。这样,我们将输入和输出值分别放在等式两边,并把上面的等式的每个输入值生成一个私钥作为致盲因子,并将等式中每个值都置换为他们的Pedersen承诺,就得到了

(v1H+r1G)+(v2H+r2G)=(v3H+r3G)                    (3)

并要求

v1+v2=v3

即在不知道任何实际交易值的情况下验证交易的算术运算。这个想法被称为保密交易(或机密交易),最早由Blockstreem的前Cto Greg Maxwell提出。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam 

所有权证明

利用同态加密可以验证交易前后的货币总量相等,但除此之外,另一个任务是需要证明交易者确实拥有交易输出的所有权。我们假设一笔交易输入的Pedersen承诺是X=v1H+r1G,输出的Pedersen承诺是Y=v2H+r2G,将输出与输入值相减,得到

Y-X=(v2H-v1H)+(r2G-r1G)=(v2-v1)H+(r2-r1)G

如果输入金额与输出金额相等,那么上式简化为

Y-X=0*H+(r2-r1)G=(r2-r1)G

此时,输出与输入之间的差值成为了椭圆曲线G上的一个有效公钥,当且仅当输入金额与输出金额相等时。

       因此,对Mimblewimble协议来说,需要验证的就是:

Ø  Y-X是椭圆曲线G上的一个有效公钥,进而证明输入金额与输出金额相等

Ø  使用(r2-r1)G作为公钥对交易签名,并证明交易者知道该交易输出的私钥(r2-r1)

需要注意的是私钥r在这里起到的是致盲因子的作用,和比特币中地址甚至身份的概念完全不同。但该致盲因子在实质上起到了身份验证的作用,即交易方必须持有该致盲因子才能授权花费交易输出。

       而这个关联到每笔交易的交易签名(r2-r1)G,就被称为交易核(transaction Kernel)。

 

范围证明

       范围证明(rangeproof)要解决的是另一个问题:交易前后的余额必须都大于0,即交易值始终为正值。因为如果在交易中引入负值,比如输入为3和1,输出为-2和6,虽然按照我们上文的计算依然是平衡的,但实际上凭空创造了新的金钱。

       范围要做的是在不泄露具体数字的前提下证明该数字落在给定范围内,换句话说,对于任何r.G + v.H都可以创建一个证明,证明 v 大于零且不会溢出。由于本文篇幅及精力有限,具体的证明推导就不在此展开,读者只需要知道Mimblewimble协议通过使用范围证明消除了交易值可能为负的问题。

 

交易混合与交易合并

交易混合(Coinjoin)也是GregMaxwell发明的一项新技术。我们在第一节提到过,比特币网络中有心人可以通过观察交易图谱来分析不同地址之间的关系和比特币的交易过程,从而对隐私性造成破坏。交易混合的目的就在于通过将多个用户的输入以匿名形式组合在一起,从而让交易图谱更难分辨和追踪。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

CoinJoin图,Artncase提供

       目前已经有一些第三方钱包使用Coinjoin技术来进行隐私保护,但这些产品受限于自身用户规模,每笔交易只有少数参与者,因此混合效果不佳。Mimblewimble 通过将CoinJoin作为协议的核心部分,而不是由第三方钱包进行事务层的隐私改进,从而解决了这个问题。在Mimblewimble中,每个块中的全部交易都被自动压缩成一笔交易,并且大多数中间事务信息都是隐藏的。

 

       由于Mimblewimble将每个区块内的全部交易都压缩为一笔交易,因此如果一个块内发生了连续交易,或是使用了一个新的(尚未确认)的输入,那么就可能删除中间状态的输出而不影响交易验证。但要注意的是,交易合并并不会删除对应的交易记录,每笔交易的交易核依然会被保存以对交易进行验证。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam 

蒲公英协议

在经典比特币框架下,即便交易金额、交易双方的地址都被隐藏,交易图也被混合,依然有被有心人追踪到的潜在风险。一个节点(计算机)开始一笔交易时,它都会在网络上公开通知其他节点,这也创建了一个可以追溯到通知或初始节点的链条。当转账沿着链接的节点发送时,接收到数据的各个节点都可以立即查询(转账消息),尽管最初发送节点的IP地址是隐藏的,但通过监视网络上的转账路径可以很容易地追踪到它。这正是蒲公英协议试图改进的地方,该协议通过两步隐私程序来混淆加密货币交易的IP地址。

       主干阶段。此阶段目的在于避免追溯到原始交易。节点通过隐私图将数据传递给随机节点,而不是将交易信息向全部节点公开,从而使交易信息与其他公共节点分开。随着交易信息继续在链上发送,除了直接接收信息的节点以外,它仍然保持匿名性。直到它达到某一个节点,该节点向网络的其余部分进行广播。

绒毛阶段。扩散过程是绒毛阶段的开始,此阶段虽然交易信息当前公共领域,但由于初始阶段与其他随机节点发送的数据进行了混淆,因此将它映射回原始节点变得非常困难。正常的交易传输途径是从单一点公开向其他连接点分散;而使用蒲公英协议后,交易信息在随机节点之间采取一种安静路径,再最终通过多个节点扩散到整个网络。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

Giulia Fanti在里斯本的展示的“蒲公英”示意图

 

Mimblewimble协议总结

       Mimblewimble协议综合了保密交易、Coinjoin、蒲公英协议等多种隐私保护技术,将余额以加密承诺的形式存储,不需要公开交易的具体金额。更精巧的是,其整个系统完全消除了地址的概念,因此相比于比特币实现了更强的隐私性。换句话说,该协议实现了在不公开交易双方的地址及交易金额的前提下,验证了交易前后货币总量相等,以及交易是由私钥持有者所发出的。

       另一方面,由于不存储全部的账本信息,只存储UTXO的交易核(Transaction Kernel),每笔交易只需要存储大约100字节的数据,因此相比其他区块链省去了大量的存储空间。而且在新节点加入网络时需要同步和传输的信息量也相对较小。因此Mimblewimble协议被认为拥有较好的可扩展性。

       不过,相比于目前的比特币及以太坊,Mimblewimble在交易吞吐量(TPS)上并没有太多显著的改进。由于加密过程中的计算需要一定时间,因此其出块时间大约在1分钟左右。

 

三、Beam&Grin:MW协议的双生花

目前,基于Mimblewimble协议已经诞生了两个加密货币项目:Beam和Grin。在过去的短短三个月时间里,这两个基于Mimblewimble协议的项目,从默默无闻一跃成为加密货币圈无人不知的当红炸子鸡。我们将Grin和Beam的主要差别总结为了下面的表格。

Grin

Beam

区块间隔

1分钟

1分钟

组织形态

社区化

公司制

货币政策

稳定增长,无上限

通缩,有上限

通胀率

每个区块产生 60 grin

总量2.63亿,产出速率逐渐下降

创始人奖励

前五年挖矿收益的20%

挖矿算法

PoW:Cuckoo Cycle

PoW:Equihash

实现语言

Rust

C++

主网上线

2019年1月15日

2019年1月 4日

钱包

需要自己配置

开发了ios、安卓、windows钱包

发展方向

原教旨主义加密货币

和现实世界应用场景紧密结合

 

Beam和Grin能够迅速被炒起来,原因不仅在于他们创新的隐私性,也和二者采用的PoW算法一定程度上抗Asic有关。在主流加密货币价格一路走低时,矿工的收益受到极大影响,而两个主打新概念,采用抗Asic-Pow算法,又没有预挖的新项目,无疑会成为诸多显卡矿机矿工眼中的香饽饽。而这两者之间除了Pow算法和实现语言等技术细节差异外,主要的差别在于组织形式、货币政策和发展方向上。

Grin在组织形态上类似于比特币,没有公司实体,完全靠社区进行开发和运作,资金主要来源于社区捐款(Beam的公司也给Grin捐过款)。而且没有ICO和预挖,所有币都在主网上线后由矿工挖出。从这点上看,Grin更像一个纯粹的加密货币项目,这也是它被很多人认为是下一个比特币的原因。但另一方面,Grin采用的是稳定增发,通证率基本为0的货币政策,即每秒钟产生一个新的Grin,无论已经挖出了多少,这和比特币的通缩机制完全不同。这点上看,团队似乎希望把Grin变成一种流通货币,而非储藏资产。但tricky的点在于,任何一种资产想成为流通货币,必须的前提是足够多的使用人群和足够大的应用场景,而这与Grin针对硬核加密货币爱好者及投资者的特点是相悖的。

       相比于Grin而言,Beam是一个完全商业化开发的项目。首先,Beam是公司化运作的,有全职的研发和运营团队。CEO AlexZaidelson毕业于以色列特拉维夫大学,拥有连续创业经验并曾经管理过自己的风投基金。技术团队多为以色列的开发工程师,大多数毕业于名校。

而Beam虽然也没有预挖,但其在前五年会从矿工的挖矿收入中抽取20%作为团队奖励即实际上的变相预挖,名为BeamTreasury(举例来说,第一年Beam的出块奖励是100个/块,那么BeamTreasury就会抽20个/块)。其次,Beam采用的是通缩的货币政策(类似于比特币),第一年出块奖励为100个Beam,第二到五年奖励会降为50个Beam,其后奖励逐渐降低,总量上限为2.63亿个Beam。在项目早期,挖矿产出的代币远远大于存量,通缩特性并不会很明显,更多体现在减半周期对币价的刺激方面。

 一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

Beam代币释放时间轴,来源:金色财经

 

Beam的公司化运作带来的最大好处是团队在提高项目易用性和拓展实际应用场景方面进行了不断的尝试和努力。首先,在Mimblewimble协议中,交易双方必须同时在线以交换彼此的Pedersen承诺,交易才能完成。但Beam包含了一个和区块链分开的、去中心化的SBBS系统(安全公告板系统,我们可以把它想象成一个独立于区块链的分布式网络),这样当用户之间发送信息时,发送方可以先使用接收方公钥加密消息,并发送到SBBS系统中,消息会被存储2个小时,只要接收方在2小时内上线并接收信息,交易就可以被成功执行。这样做大大放宽了原协议要求双方必须同时在线的要求,提高了项目的可用性。

其次,Beam已经开发了针对ios、安卓、windows的钱包,从而让用户可以更便捷的使用他们持有的代币。相比之下Grin目前只有命令行钱包,需要自己配置,对普通用户来说使用门槛极高。

第三,Beam一直在商业化应用场景落地方面进行尝试。Beam团队意识到,很多时候我们确实需要对交易信息进行隐私保护,但对商业企业来说,有时候他们又必须要向指定的第三方开放交易审查权限,比如会计师、审计机构、税务机关或是银行等等。因此,Beam引入了可选的审计功能,Beam用户可以创建一个或多个审计员密钥,而审计方持有这些密钥就可以查看区块链上完整的交易记录。这也就意味着,在Beam网络发展的更为成熟之后,一些对业务流隐私性非常看重的核心企业可以选择让自己的业务跑在Beam网络上,既保护了自身隐私又可以满足监管审计的要求。当然这个场景目前还过早,具体模式还需要完善,但Beam确实为其在商业场景中的落地应用提供了一种可能性。

  

四、现有的隐私加密货币项目对比

众所周知,Beam和Grin并不是第一批关注到隐私性和匿名性的加密货币项目。目前加密货币市值前20的项目中,就有门罗(Xmr)和Zcash(Zec)以匿名为核心卖点(dash并不主打匿名)。我们将这几个项目与Beam/Grin的主要特点进行了对比:

隐私性

门罗采用的是环签名(ring-CTs)+匿名地址技术,环签名只要求交易的输入和输出相等,匿名地址是为发送方创建随机生成的单用途地址,这样让交易双方之外的人无从判断地址背后的身份。该技术和Zcash的零知识证明一样,是最高级别的隐私保护。

       Zcash使用的是零知识证明中的非交互知识证明(zk-snark),该技术的原理是验证某些东西为真但不需验证导致它为真的过程。该技术匿名性也较好,但由于zk-snarks的运算量较大,耗时较长,因此Zcash网络中只有不到10%的交易使用了该技术,其余交易都是未加密的。

       Beam和Grin所采用的Mimblewimble协议,背后是秘密交易、Coinjoin和蒲公英协议的综合,但在纯隐私性上不如门罗和Zcash。

 

可扩展性

       由于采用了环形签名(在交易中增加许多无效和虚假交易来进行混淆),交易大小增加了很多。期初门罗的平均交易大小是比特币的25倍,即便改进后目前门罗的交易大小仍然是比特币的5倍。

       Zcash的单笔交易大小平均为5.3Kb,体量大约是门罗的接近2倍,是比特币的9倍。

       而对使用了Mimblewimble的Beam和Grin而言,算法中的交易合并使得UTXO的中间状态被消除,只留下了未使用的输出的交易核,根据估算Beam区块链大小大约为比特币的30%。可见其相对而言要轻很多,扩展性也更好。

 

       除了隐私性和可扩展性这两个方面,在审计性方面,门罗和Zcash目前都支持查看输入的交易,但无法查看输出交易,这点上不如Beam的权限设置机制。

 

五、总结

       虽然当下Mimblewimble的两个项目大火,但从技术上说,其在最核心的隐私保密性上相比门罗和Zcash并无明显的优势,其优势更多体现在削减了交易大小,从而让区块链更轻上。我们认为Beam和Grin的短期火爆,更多是由于熊市下大家需要热点和爆点,炒作的成分居多。之前门罗和Zcash刚上线时也经历过暴涨和暴跌,这与Beam和Grin正在经历的如出一辙。矿工是短期逐利的,长期能支撑起币价的还是技术开发的推进程度和落地场景的推广。

       长期来看,我们认为隐私加密货币的用途主要在两块。一块是完全隐私,包括一些个人或企业的暗网交易、私密转账,甚至涉及到走私、洗钱等,对这部分需求,Grin和Beam相比于目前已有的门罗、达世、zcash等属于挑战者的角色,想要后发先至,难度不小,重点关注其市场推广情况。另一块则是现实商业场景中的隐私保护,典型场景为核心企业将其部分日常交易跑在链上,但需要高度隐私以防其他企业看到,针对这部分需求我们更看好公司化组织的Zcash和Beam,相对而言Beam的可审计性要更好一些,在针对非币圈用户的入门上也有更多降低门槛的动作(比如开发了更易用的钱包等),因此值得关注Beam在企业级应用和合作上的进展。

 一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam 

 

生成图片
5

发表评论

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

星期日 2019-03-24 17:59:05

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

摘要

       比特币在隐私性上存在着先天缺陷。除了门罗、达世、Zcash等项目外,近两年新诞生的Mimblewimble协议也致力于解决加密货币的隐私问题。Mimblewimble协议组合了保密交易、交易混合和蒲公英协议等多种隐私保护技术,隐去了交易金额,消除了交易地址的概念,而且中间状态可以合并,使其在保护交易隐私的同时简化了交易大小,拥有较好的可扩展性。

       基于Mimblewimble协议诞生了Grin和Beam两个项目。虽然底层协议相同,但二者在组织形式、货币政策和发展方向上都有很大差异。社区化运作的Grin更像是一个硬核的原教旨主义加密货币,而公司化运作的Beam通过降低用户门槛、设置隐私权限等方法,未来在商业化落地应用方面具有更大的潜力。

 

一、经典比特币所面临的隐私性问题

在比特币理念刚提出时,人们曾普遍认为比特币是一种强隐私保护的加密货币。虽然为了防止双花(同一笔钱被多次重复花费),所有交易都是公开的(需要全网节点验证),但公开的只是交易双方的地址和金额,地址背后现实世界中对应的人的身份是保密的,我们可以在网站上查到A与B地址之间发生了一笔转账,但却无法知道地址背后对应的到底是炒币的散户,还是交易所,亦或是丝绸之路网站上的商家。

       但实际上,这种隐私模式并不像理论上想的那样完美。因为在现实生活中无法保证攻击者和追踪者永远不能通过交易的模式和信息推断出比特币地址和现实身份之间的关联。如果仅给定一组比特币地址信息和一组现实世界人的信息,而不给任何涉及二者之间关系的信息,那么确定地址与人之间的映射关系是困难的。但一旦追踪者知道了任意一条映射关系(比如,A地址属于某某交易所或某某公司,通过它的交易记录),那就可以从这里为切入口不断定位出更多的比特币地址。只要追踪者长期对交易进行跟踪,他们就可以发现和A相关的大部分地址背后对应的真实个体。

       因为经典比特币模型面临着隐私泄露的问题,后续的诸多开发者和项目都将重心放在了改进隐私保护上,比较出名的项目包括使用了环签名(ring-signature)的门罗和使用了零知识证明(Zk-snark)的Z-Cash。而我们今天要介绍的是一个新的隐私保护协议:Mimblewimble。

 

二、Mimblewimble协议的解决方案

Mimblewinble 这个名字听起来很无厘头,但它是一种可以防止区块链泄露个人信息的技术。它的名字来源于《哈利波特》中一种防止人们泄露秘密的咒语。该协议最早于2016年8月被一个化名为Tom Elvis Jedusor(法国版伏地魔的名称)的开发者提出,最初的方案非常简洁,采用了比特币的主要架构、移除了比特币的script、增加了保密交易和交易合并机制(cut-through)。之后,诸多开发者、工程师和研究人员都以社区的形式参与完善了Mimblewimble协议及系统,该协议之上也诞生了两个时下最火热的项目,Beam和Grin。

 

1、经典比特币的UTXO模型

要理解Mimblewimble协议是如何保护隐私的,我们首先要理解经典比特币的记账方式,UTXO。

       经典比特币的账本设计中,每一笔交易都被分为了交易输入(Input,即交易前的账本状态)和交易输出(Output,即交易后的账本状态)两部分,记录了不同状态下每个系统参与者所拥有的未花费交易输出情况,也就是常说的UTXO(unspent transaction output)。由于交易是连续进行的,因此这一笔交易的输入可以看做上一笔或几笔交易的输出。通过这样的方式一环套一环,从而形成一个链条,将每个时刻的账本信息打包在不断产生的区块中,就是我们现在看到的比特币区块链。

       举例来说,A现在要转2个比特币给B,在区块链网络上我们可以看到这笔交易的输入是A有4个币,B有2个币,输出是A有2个币,B有4个币,实际上A和B显示的是一串他们的钱包地址。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

       一个稳定的货币系统必须要满足两个条件,其一是交易前后货币总量相等(即不能凭空多造钱也不能丢钱);其二是无论交易前后账户内的余额都需要大于等于0,且用户只能从自己的账户内转账(即我不能转超过我账户内余额的钱)。我们可以看到在上面的例子中,交易前A和B一共有6个比特币,交易后依然有6个比特币,因此满足了第一个条件。而比特币独特的公私钥体系允许用户对每笔交易使用自己的私钥进行签名,因而节点可以验证交易是由特点的发起人(与私钥对应的地址)发起,再结合其交易输入就可以判断交易后余额大于0,因此满足了第二个条件。

       虽然比特币的UTXO模型满足了货币系统的要求,但是它在隐私性方面却存在着上文所述的问题,即每一笔比特币交易的两点核心信息都是全网可见的:

Ø  发送方与接收方的地址

Ø  发送的比特币的数量

 

2、Mimblewimble协议的密码学原理

从前面的讨论中,我们已经知道,Mimblewimble需要解决的问题是:在不显示交易双方地址以及交易金额的前提下,验证交易前后货币总量相等;发出交易的用户持有对应的私钥,且交易前后账户余额都要大于等于0。

本节的接下来会用尽可能通俗易懂的语言来解释Mimblewimble背后的密码学原理。

       首先需要简单的介绍一下椭圆加密曲线(ECC),这也是比特币所依赖的加密算法。简单来说,密码学上的椭圆曲线是一组点集,该集合最大的特点是可以进行我们熟悉的加、减、乘运算,但除法非常难运算。在比特币加密算法中,私钥是在一个大的集合中随机选取的整数(标量),协议选择椭圆曲线上的任意一点称为生成点,将私钥与生成点相乘可以得到公钥。由于除法非常难运算,而外界并不知道生成点,因此就很难从公钥逆推得到私钥。

注:关于乘法难以被逆运算的问题,我们可以这么理解,让任何一个8岁以上的小学生计算23*19=?都是一道送分题,但是反过来,如果要人计算??*??=437,那么难度就大大增加了(即便23和19都是质数,不能再被分解)

       我们需要利用椭圆加密函数的另一个性质是同态加密,同态加密的定义是对原文进行一定运算后再进行加密得到的值,和先对原文加密后再对密文进行一定计算得到的值相等,如果满足加法运算就是加法同态,满足乘法运算就是乘法同态。举个例子来说,如果aH+bH=(a+b)H,那么我们就说它是满足加法同态的。而恰好我们知道,椭圆加密算法满足加法和乘法同态。

 

保密交易与Pedersen承诺

       我们首先要做的是确认交易输入和输出的余额是相等的。假设交易的输入值是v1和v2,输出值是v3,那么我们只需要验证v1+v2=v3,而不用像比特币账本一样清楚的知道上面每个值。进一步,我们引入椭圆曲线上的发生器H,根据同态加密原理,我们只需证明:

v1H+v2H=v3H                            (1)

验证每笔交易的这个属性允许协议验证交易不会凭空创造出金钱,而无需了解实际的交易值是多少。为了增强保密性,协议引入了椭圆曲线上第二个发生器G,并引入了私钥r作为致盲因子。这样一来,交易的输入或输出值就变为了

vH+rG                                 (2)

其中r是私钥,作为致盲因子;v是交易的输入或输出值;H和G分别是两个椭圆曲线点。在一笔交易中,交易的发送方和接收方需要分别给出这个数字,这个数字被称为Pedersen承诺,它代表着加密后的交易金额和私钥。这样,我们将输入和输出值分别放在等式两边,并把上面的等式的每个输入值生成一个私钥作为致盲因子,并将等式中每个值都置换为他们的Pedersen承诺,就得到了

(v1H+r1G)+(v2H+r2G)=(v3H+r3G)                    (3)

并要求

v1+v2=v3

即在不知道任何实际交易值的情况下验证交易的算术运算。这个想法被称为保密交易(或机密交易),最早由Blockstreem的前Cto Greg Maxwell提出。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam 

所有权证明

利用同态加密可以验证交易前后的货币总量相等,但除此之外,另一个任务是需要证明交易者确实拥有交易输出的所有权。我们假设一笔交易输入的Pedersen承诺是X=v1H+r1G,输出的Pedersen承诺是Y=v2H+r2G,将输出与输入值相减,得到

Y-X=(v2H-v1H)+(r2G-r1G)=(v2-v1)H+(r2-r1)G

如果输入金额与输出金额相等,那么上式简化为

Y-X=0*H+(r2-r1)G=(r2-r1)G

此时,输出与输入之间的差值成为了椭圆曲线G上的一个有效公钥,当且仅当输入金额与输出金额相等时。

       因此,对Mimblewimble协议来说,需要验证的就是:

Ø  Y-X是椭圆曲线G上的一个有效公钥,进而证明输入金额与输出金额相等

Ø  使用(r2-r1)G作为公钥对交易签名,并证明交易者知道该交易输出的私钥(r2-r1)

需要注意的是私钥r在这里起到的是致盲因子的作用,和比特币中地址甚至身份的概念完全不同。但该致盲因子在实质上起到了身份验证的作用,即交易方必须持有该致盲因子才能授权花费交易输出。

       而这个关联到每笔交易的交易签名(r2-r1)G,就被称为交易核(transaction Kernel)。

 

范围证明

       范围证明(rangeproof)要解决的是另一个问题:交易前后的余额必须都大于0,即交易值始终为正值。因为如果在交易中引入负值,比如输入为3和1,输出为-2和6,虽然按照我们上文的计算依然是平衡的,但实际上凭空创造了新的金钱。

       范围要做的是在不泄露具体数字的前提下证明该数字落在给定范围内,换句话说,对于任何r.G + v.H都可以创建一个证明,证明 v 大于零且不会溢出。由于本文篇幅及精力有限,具体的证明推导就不在此展开,读者只需要知道Mimblewimble协议通过使用范围证明消除了交易值可能为负的问题。

 

交易混合与交易合并

交易混合(Coinjoin)也是GregMaxwell发明的一项新技术。我们在第一节提到过,比特币网络中有心人可以通过观察交易图谱来分析不同地址之间的关系和比特币的交易过程,从而对隐私性造成破坏。交易混合的目的就在于通过将多个用户的输入以匿名形式组合在一起,从而让交易图谱更难分辨和追踪。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

CoinJoin图,Artncase提供

       目前已经有一些第三方钱包使用Coinjoin技术来进行隐私保护,但这些产品受限于自身用户规模,每笔交易只有少数参与者,因此混合效果不佳。Mimblewimble 通过将CoinJoin作为协议的核心部分,而不是由第三方钱包进行事务层的隐私改进,从而解决了这个问题。在Mimblewimble中,每个块中的全部交易都被自动压缩成一笔交易,并且大多数中间事务信息都是隐藏的。

 

       由于Mimblewimble将每个区块内的全部交易都压缩为一笔交易,因此如果一个块内发生了连续交易,或是使用了一个新的(尚未确认)的输入,那么就可能删除中间状态的输出而不影响交易验证。但要注意的是,交易合并并不会删除对应的交易记录,每笔交易的交易核依然会被保存以对交易进行验证。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam 

蒲公英协议

在经典比特币框架下,即便交易金额、交易双方的地址都被隐藏,交易图也被混合,依然有被有心人追踪到的潜在风险。一个节点(计算机)开始一笔交易时,它都会在网络上公开通知其他节点,这也创建了一个可以追溯到通知或初始节点的链条。当转账沿着链接的节点发送时,接收到数据的各个节点都可以立即查询(转账消息),尽管最初发送节点的IP地址是隐藏的,但通过监视网络上的转账路径可以很容易地追踪到它。这正是蒲公英协议试图改进的地方,该协议通过两步隐私程序来混淆加密货币交易的IP地址。

       主干阶段。此阶段目的在于避免追溯到原始交易。节点通过隐私图将数据传递给随机节点,而不是将交易信息向全部节点公开,从而使交易信息与其他公共节点分开。随着交易信息继续在链上发送,除了直接接收信息的节点以外,它仍然保持匿名性。直到它达到某一个节点,该节点向网络的其余部分进行广播。

绒毛阶段。扩散过程是绒毛阶段的开始,此阶段虽然交易信息当前公共领域,但由于初始阶段与其他随机节点发送的数据进行了混淆,因此将它映射回原始节点变得非常困难。正常的交易传输途径是从单一点公开向其他连接点分散;而使用蒲公英协议后,交易信息在随机节点之间采取一种安静路径,再最终通过多个节点扩散到整个网络。

一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

Giulia Fanti在里斯本的展示的“蒲公英”示意图

 

Mimblewimble协议总结

       Mimblewimble协议综合了保密交易、Coinjoin、蒲公英协议等多种隐私保护技术,将余额以加密承诺的形式存储,不需要公开交易的具体金额。更精巧的是,其整个系统完全消除了地址的概念,因此相比于比特币实现了更强的隐私性。换句话说,该协议实现了在不公开交易双方的地址及交易金额的前提下,验证了交易前后货币总量相等,以及交易是由私钥持有者所发出的。

       另一方面,由于不存储全部的账本信息,只存储UTXO的交易核(Transaction Kernel),每笔交易只需要存储大约100字节的数据,因此相比其他区块链省去了大量的存储空间。而且在新节点加入网络时需要同步和传输的信息量也相对较小。因此Mimblewimble协议被认为拥有较好的可扩展性。

       不过,相比于目前的比特币及以太坊,Mimblewimble在交易吞吐量(TPS)上并没有太多显著的改进。由于加密过程中的计算需要一定时间,因此其出块时间大约在1分钟左右。

 

三、Beam&Grin:MW协议的双生花

目前,基于Mimblewimble协议已经诞生了两个加密货币项目:Beam和Grin。在过去的短短三个月时间里,这两个基于Mimblewimble协议的项目,从默默无闻一跃成为加密货币圈无人不知的当红炸子鸡。我们将Grin和Beam的主要差别总结为了下面的表格。

Grin

Beam

区块间隔

1分钟

1分钟

组织形态

社区化

公司制

货币政策

稳定增长,无上限

通缩,有上限

通胀率

每个区块产生 60 grin

总量2.63亿,产出速率逐渐下降

创始人奖励

前五年挖矿收益的20%

挖矿算法

PoW:Cuckoo Cycle

PoW:Equihash

实现语言

Rust

C++

主网上线

2019年1月15日

2019年1月 4日

钱包

需要自己配置

开发了ios、安卓、windows钱包

发展方向

原教旨主义加密货币

和现实世界应用场景紧密结合

 

Beam和Grin能够迅速被炒起来,原因不仅在于他们创新的隐私性,也和二者采用的PoW算法一定程度上抗Asic有关。在主流加密货币价格一路走低时,矿工的收益受到极大影响,而两个主打新概念,采用抗Asic-Pow算法,又没有预挖的新项目,无疑会成为诸多显卡矿机矿工眼中的香饽饽。而这两者之间除了Pow算法和实现语言等技术细节差异外,主要的差别在于组织形式、货币政策和发展方向上。

Grin在组织形态上类似于比特币,没有公司实体,完全靠社区进行开发和运作,资金主要来源于社区捐款(Beam的公司也给Grin捐过款)。而且没有ICO和预挖,所有币都在主网上线后由矿工挖出。从这点上看,Grin更像一个纯粹的加密货币项目,这也是它被很多人认为是下一个比特币的原因。但另一方面,Grin采用的是稳定增发,通证率基本为0的货币政策,即每秒钟产生一个新的Grin,无论已经挖出了多少,这和比特币的通缩机制完全不同。这点上看,团队似乎希望把Grin变成一种流通货币,而非储藏资产。但tricky的点在于,任何一种资产想成为流通货币,必须的前提是足够多的使用人群和足够大的应用场景,而这与Grin针对硬核加密货币爱好者及投资者的特点是相悖的。

       相比于Grin而言,Beam是一个完全商业化开发的项目。首先,Beam是公司化运作的,有全职的研发和运营团队。CEO AlexZaidelson毕业于以色列特拉维夫大学,拥有连续创业经验并曾经管理过自己的风投基金。技术团队多为以色列的开发工程师,大多数毕业于名校。

而Beam虽然也没有预挖,但其在前五年会从矿工的挖矿收入中抽取20%作为团队奖励即实际上的变相预挖,名为BeamTreasury(举例来说,第一年Beam的出块奖励是100个/块,那么BeamTreasury就会抽20个/块)。其次,Beam采用的是通缩的货币政策(类似于比特币),第一年出块奖励为100个Beam,第二到五年奖励会降为50个Beam,其后奖励逐渐降低,总量上限为2.63亿个Beam。在项目早期,挖矿产出的代币远远大于存量,通缩特性并不会很明显,更多体现在减半周期对币价的刺激方面。

 一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam

Beam代币释放时间轴,来源:金色财经

 

Beam的公司化运作带来的最大好处是团队在提高项目易用性和拓展实际应用场景方面进行了不断的尝试和努力。首先,在Mimblewimble协议中,交易双方必须同时在线以交换彼此的Pedersen承诺,交易才能完成。但Beam包含了一个和区块链分开的、去中心化的SBBS系统(安全公告板系统,我们可以把它想象成一个独立于区块链的分布式网络),这样当用户之间发送信息时,发送方可以先使用接收方公钥加密消息,并发送到SBBS系统中,消息会被存储2个小时,只要接收方在2小时内上线并接收信息,交易就可以被成功执行。这样做大大放宽了原协议要求双方必须同时在线的要求,提高了项目的可用性。

其次,Beam已经开发了针对ios、安卓、windows的钱包,从而让用户可以更便捷的使用他们持有的代币。相比之下Grin目前只有命令行钱包,需要自己配置,对普通用户来说使用门槛极高。

第三,Beam一直在商业化应用场景落地方面进行尝试。Beam团队意识到,很多时候我们确实需要对交易信息进行隐私保护,但对商业企业来说,有时候他们又必须要向指定的第三方开放交易审查权限,比如会计师、审计机构、税务机关或是银行等等。因此,Beam引入了可选的审计功能,Beam用户可以创建一个或多个审计员密钥,而审计方持有这些密钥就可以查看区块链上完整的交易记录。这也就意味着,在Beam网络发展的更为成熟之后,一些对业务流隐私性非常看重的核心企业可以选择让自己的业务跑在Beam网络上,既保护了自身隐私又可以满足监管审计的要求。当然这个场景目前还过早,具体模式还需要完善,但Beam确实为其在商业场景中的落地应用提供了一种可能性。

  

四、现有的隐私加密货币项目对比

众所周知,Beam和Grin并不是第一批关注到隐私性和匿名性的加密货币项目。目前加密货币市值前20的项目中,就有门罗(Xmr)和Zcash(Zec)以匿名为核心卖点(dash并不主打匿名)。我们将这几个项目与Beam/Grin的主要特点进行了对比:

隐私性

门罗采用的是环签名(ring-CTs)+匿名地址技术,环签名只要求交易的输入和输出相等,匿名地址是为发送方创建随机生成的单用途地址,这样让交易双方之外的人无从判断地址背后的身份。该技术和Zcash的零知识证明一样,是最高级别的隐私保护。

       Zcash使用的是零知识证明中的非交互知识证明(zk-snark),该技术的原理是验证某些东西为真但不需验证导致它为真的过程。该技术匿名性也较好,但由于zk-snarks的运算量较大,耗时较长,因此Zcash网络中只有不到10%的交易使用了该技术,其余交易都是未加密的。

       Beam和Grin所采用的Mimblewimble协议,背后是秘密交易、Coinjoin和蒲公英协议的综合,但在纯隐私性上不如门罗和Zcash。

 

可扩展性

       由于采用了环形签名(在交易中增加许多无效和虚假交易来进行混淆),交易大小增加了很多。期初门罗的平均交易大小是比特币的25倍,即便改进后目前门罗的交易大小仍然是比特币的5倍。

       Zcash的单笔交易大小平均为5.3Kb,体量大约是门罗的接近2倍,是比特币的9倍。

       而对使用了Mimblewimble的Beam和Grin而言,算法中的交易合并使得UTXO的中间状态被消除,只留下了未使用的输出的交易核,根据估算Beam区块链大小大约为比特币的30%。可见其相对而言要轻很多,扩展性也更好。

 

       除了隐私性和可扩展性这两个方面,在审计性方面,门罗和Zcash目前都支持查看输入的交易,但无法查看输出交易,这点上不如Beam的权限设置机制。

 

五、总结

       虽然当下Mimblewimble的两个项目大火,但从技术上说,其在最核心的隐私保密性上相比门罗和Zcash并无明显的优势,其优势更多体现在削减了交易大小,从而让区块链更轻上。我们认为Beam和Grin的短期火爆,更多是由于熊市下大家需要热点和爆点,炒作的成分居多。之前门罗和Zcash刚上线时也经历过暴涨和暴跌,这与Beam和Grin正在经历的如出一辙。矿工是短期逐利的,长期能支撑起币价的还是技术开发的推进程度和落地场景的推广。

       长期来看,我们认为隐私加密货币的用途主要在两块。一块是完全隐私,包括一些个人或企业的暗网交易、私密转账,甚至涉及到走私、洗钱等,对这部分需求,Grin和Beam相比于目前已有的门罗、达世、zcash等属于挑战者的角色,想要后发先至,难度不小,重点关注其市场推广情况。另一块则是现实商业场景中的隐私保护,典型场景为核心企业将其部分日常交易跑在链上,但需要高度隐私以防其他企业看到,针对这部分需求我们更看好公司化组织的Zcash和Beam,相对而言Beam的可审计性要更好一些,在针对非币圈用户的入门上也有更多降低门槛的动作(比如开发了更易用的钱包等),因此值得关注Beam在企业级应用和合作上的进展。

 一场泡沫还是熊市之光?——从Mimblewimble协议谈谈Grin和Beam