Grin:哈利波特的神奇魔法? | 区块链事件点评0110
事件
新年伊始,深冬的大地寒意渐浓,经历了萧条时期的区块链行业和通证市场也仍然处于冰封之中。但是,18年末开始,隐私通证Grin成为了区块链社区久违的热点话题,得到了市场的广泛关注。在主网即将上线之际,我们将与大家一起走近Grin,探讨它的本质与可能性。
正文
1Grin:理想主义的隐私通证
Grin是近期相对热门的隐私属性支付结算通证,致力于成为真正应用于日常交易的电子现金。该项目由社区团队开发,部分核心成员匿名,且通证完全通过挖矿产生,在项目方普遍套路深的区块链行业中着实是一股清流,让大家回想起当年BTC的理想主义色彩。Grin致力于实现BTC最初的目标,回归本原,通过隐私性、便利性和适当的通胀曲线为行业提供一种真正适合作为现金使用的资产。
1.1 返璞归真,隐私性的电子现金
Grin基于MimbleWimble底层协议,具有隐私性的特征。 Grin网络的底层协议MimbleWimble是一种新的加密协议,基于椭圆曲线,为所有输入和输出进行创建多重签名,通过分享“盲因子”进行交易,没有地址的概念,不会将具体的信息公开到全网,但保持了可验证的特性。“MimbleWimble”一词出自《哈利波特》中的禁言咒语,形象的反映了协议的本质。隐私性是现金的一个固有特点,而BTC等传统支付结算通证直接在链上保存付款方地址、收款方地址和金额,在很多场景下限制了其“电子现金”功能的发挥。
专注于支付结算,相对非中心化。 智能合约和公链是2017年的风口,产生了EOS这样的头部项目,ETH也迅速发展,很长一段时间区块链行业都在寻求实现更多的应用场景,甚至分叉自BTC的BCH也在向公链方向发展。然而,Grin却逆潮流而动,选择做纯粹的支付结算型通证。支付结算是区块链最初的功能,也是目前少数经受过验证的真需求,Grin的定位比较务实。但是,Grin的交易需要双方进行密码学上的交互,与BTC等只需付款方发起的模式有较大差异,也不符合人们的使用习惯,有一定的用户门槛,也限制了一些场景下的使用,如大范围收款、捐助等。开发团队表示他们不会限制Grin转账的实现方式,并将提供一个工具包,以方便开发者设计新的交换解决方案。同时,Grin网络将删除大部分交易数据,只保留总量等关键信息,极大的降低了完整节点的体积和运行负担,解决了BTC和ETH等PoW共识机制通证因完整节点运行者减少而导致的潜在中心化问题,并提供了较高的可扩展性。
Grin的火热,一定程度上是公链路线遭遇瓶颈情况下,社区回归本源的探索。 ETH引入了智能合约的概念,将区块链行业从1.0阶段引入2.0,应用场景也不再局限于支付结算,从业者开始在几乎所有可以想得到的领域进行尝试。但是,群体性的亢奋过后,公链技术至今尚未突破其瓶颈,众多领域的现实应用也遇到了挫折。经历了2018年持续的下行周期,一轮潮水已然退去,人们开始重新思考行业的本质与发展,传统的支付结算领域再次受到关注,ETH、EOS相对BTC的价格一定程度上就是这种转变的反映。支付结算类通证的回潮成为了2016年开始的Grin项目崛起的契机。
社区化开发,理想主义色彩浓厚,商业化程度低。 Grin的开发由社区而非企业驱动,未接受任何融资,仅接受捐赠。主网上线前,团队没有进行任何的通证分配和预挖矿,也声明不会主动寻求上交易所,商业化程度较低。这一方面降低了项目方损害社区和投资者的可能性,另一方面一定程度上也会对Grin的推广应用造成一定的阻碍。
1.2 线性供应,通胀逐渐降低
Grin通证完全挖矿获得,每分钟出一个块,每个块有60Grin的区块奖励,产量不递减。 Grin是一种使用PoW共识机制的通证,全网平均每秒产出一个Grin,年产量为3153.6万个,其总量为线性增长的状态,没有上限。这种机制与BTC等PoW通证存在的减产机制具有明显不同,是一种非通缩的经济模型。核心开发者Michael Cordner “Yeastplume”解释道,他们这样设计主要是为了避免早期矿工获益显著高于后期矿工,并希望Grin真的能够成为交易媒介,而非价值储存或投机的工具。
系统早期具有较高的通胀率,后期会逐渐降低。 Grin的增长速度固定,因此系统的通胀率随总规模的增大而降低。从第二年开始,第N年的通胀率是1/(n-1),这是一个反比例函数,当N足够大时,通胀率将趋近于0。
这种货币政策有利于Grin价值的稳定,可以帮助其更多作为交易媒介被应用。 BTC等传统数字通证普遍具有减产机制,早期产量高,但到后期增量将大幅减少。BTC的产量曲线非连续,到特定区块高度跳跃式减半,部分硬件可能被淘汰,算力会出现一定波动,BTC的价格周期更是与减产周期息息相关。此外,减产模式有内生的通缩性,会刺激人们将相应通证作为价值储藏的工具乃至投机筹码使用,不利于作为支付结算工具推广。Grin在系统规模增长较快早期具有较高的通胀率,随着系统规模的扩大和逐渐稳定,通胀率也趋于平缓,契合生态发展的规律,更有可能保持价值的稳定。此外,当产量减小到低于数据结构所允许的极限精度时,BTC的区块奖励将消失,矿工完全从交易手续费中获得收益,而这个过程究竟会使系统发生的改变既无迹可寻,更难以推算,不确定性会降低稳定性,而Grin通过高度稳定的收益预期避免了这个问题。
2技术:隐私协议与共识机制
Grin是一个实现了MimbleWimble隐私加密协议,使用抗ASIC的PoW算法——Cuckoo Cycle的开源区块链项目。
2.1 MimbleWimble隐私协议
MimbleWimble出自小说《哈利波特》里的“结舌咒”,施咒者通过此咒语使被施咒者的舌头“打结”从而阻止他准确地念出咒语或泄露秘密。MimbleWimble最初的白皮书由一位匿名开发者发布,在BTC的基础上通过 隐藏交易金额、不重复使用“地址”、合并区块交易 对交易匿名性进行改进。
BTC的每一笔交易都有三个关键的信息: 交易金额、交易发送方与接收方的地址 ,而网络中的监听节点可以监控交易播报方的IP,从而有可能将BTC地址与真实的物理地址关联起来。此外,一旦某个地址进行过交易,那么很容易通过区块链浏览器等工具获得此地址的交易历史以及余额信息,这样交易双方的隐私便很难得到保证。
MimbleWimble就像施加到网络交易上的结舌咒,通过密码学技术使每一次交易变得“无声无息”,不再透露出这些关键隐私信息。
在BTC网络中,记账节点判断一笔交易是否应该被放进即将被打包的区块的原则通常只有交易的 合法性 。在验证交易合法性的过程中,便暴露了以下信息:交易发送方的地址与公钥(用于验证发送方对UTXO的使用权)、交易金额(用于验证交易总输入是否等于总输出)、交易接收方的地址。
我们知道,BTC的私钥本质上是一个 随机生成的大整数 的字符串表示形式,而公钥是根据私钥通过椭圆曲线加密(ECC)计算得出的,并且在 椭圆曲线算法已知、公钥公开 的情况下,仍然 难以反解出私钥 。用私钥加密信息后可以得到一段信息签名,而在已知公钥、签名、原始信息的情况下,可以验证改签名是否由对应的私钥所生成。这构成了BTC进行转账、验证交易的密码学基础。
要理解这类加密方法的原理也很容易,素数乘法就是一个例子。假设a,b,c..是若干个非常大的素数,s=abc...是他们的乘积。如果知道了s,也很难找出它的素因子,但验证a或b,c是否是s的因子就很简单,因为分解大素数因子在当前的计算水平下是难以实现的。
椭圆曲线是一类方程在二维平面上的函数图像,这条曲线上的一部分点之间可以定义加法运算:P+Q=R,R是P、Q连线与椭圆曲线交点关于x轴的对称点,P+P则定义为过点P的切线与椭圆曲线交点关于x轴的对称点,并由此可以定义数乘运算kP,等于P与自身相加k-1次(k是整数)。这部分点组成的集合对于这样的加法运算是封闭的,也就是说集合中任意点之间进行加法、数乘运算后的结果仍然在这个集合当中。
虽然椭圆曲线点的“加法”P+Q和我们熟悉的加法并不相同,但我们可以通过整数加法去理解这一概念。如果k是一个非常大的整数,我们可以通过一些算法较快计算出kP=Q的值,但知道计算结果Q,以及P的值,想计算出k却是非常困难的。可以理解为点P经过k次“变换”成为点Q,但已知P、Q两点,要计算多少次变换可以将P变为Q是难以实现的。
上面例子里的k称为私钥,P是预先选好的特定椭圆曲线上的特定点,则Q=kP是私钥k在P上的公钥。椭圆曲线点对数乘运算满足分配律,即
(k+j)P=kP+jP
这种特性在密码学里又被称为“同态加密”,椭圆曲线群是满足加法同态的。
MimbleWimble使用了类似的思路处理交易信息,使用椭圆曲线加密的加法同态特性保证其在不知晓具体交易金额的情况下,仍然能够验证交易数额的合法性。
假设k和j分别是一笔交易的总输入和总输出,BTC通过明文交易额k和j,验证k+j=0的方式确保交易数额的合法,即不会凭空创造货币或使货币消失。而根据“椭圆曲线分配律”,只需要验证加密后的结果kP+jP=0,便可以在不知道具体数值的情况下证明k+j=0。
由于交易金额的取值范围较有限,攻击者可以通过穷举私钥的方式猜解实际交易值,为了保证安全性与隐私性,MimbleWimble还引入一个混淆因子,防止类似的穷举攻击。设r是发送(接收)方的私钥,v是交易的输入(输出),G,H是两个特定的椭圆曲线点,rG是r在G上的公钥,vH是v在H上的公钥。
rG+vH称为Pedersen承诺,它将是唯一被交易双方公开的内容。 即使G和H都是已知的,也很难推测出r和v的值。通过Pedersen承诺可以方便地验证交易的合法性,并通过范围证明(Range Proof)验证v的取值范围合法,即不能为负,不能超过账户余额。
MimbleWimble可以在不暴露交易双方公钥的情况下完成交易的验证。 BTC通过在交易中附加交易双方的地址以及发送方公钥的方式来验证发送方对UTXO的使用权以及完成使用权向接收方的转让。
一笔交易的输出是一个Pedersen承诺,如果想将这笔输入再次花费,需要同时知道r和v的值,否则无法还原出Pedersen承诺。而这笔输出的前一个发送者是知道v的值的,因此交易的双方必须各自持有不同的仅有自己知道的r值(私钥),也就是说, 私钥可以用来被证明Pedersen承诺中包含的一定数额货币的所有权 。
设交易发送方的私钥为r,发送方输入rG + vH,即证明发送方拥有数量为v的货币,接收方将(r+k)G+vH添加到自己的输出,以及公钥kG,其中r+k可以是一个随机生成的数字。这样接收方就生成了仅有自己才知道的私钥r+k,并且kG没有暴露任何关于双方私钥与公钥rG,(r+k)G的信息。kG被看作是这笔交易的签名,与一些额外数据一起被称为交易核。验证交易合法性只需要验证 ((r+k)G+vH)-(rG+vH)=kG就证明了以下信息:输入与输出金额相等、发送方拥有该Pedersen承诺包含的货币使用权、该数量货币的使用权已转让到接收方。
可以看出,一笔未花费交易的使用权是和特定私钥所绑定的,也就是说, MimbleWimble中没有地址的概念 ,每一笔交易都使用了不同的私钥。在交易创建到确认的过程中,交易的金额、双方的公钥都没有暴露给第三方,从而保证了交易的隐私性。
MimbleWimble还通过合并中间交易的方式,进一步隐藏交易双方的原始信息。 采用UTXO模型的BTC区块链信息记录了完整的每一笔交易,因此可以将每一笔UTXO都追溯到创世区块。攻击者可能通过分析大量历史区块,揭示出不同地址之间的交易关系,造成用户隐私信息的泄露。MimbleWimble将一个区块内的所有交易合并,仅保留交易核以证明其合法性,在能够进行验证的基础上减小了区块大小,增强了隐私性。
但这种方式仅在一个区块中包含多笔交易时才有效,其隐藏交易关系的能力弱于Monero等匿名通证。
2.2 Cuckoo Cycle共识算法
BTC采用的PoW算法要求记账节点通过重复性地求值Hash函数,证明自己花费了一定量的计算能力,并根据计算能力的多少竞争网络的区块生产权利(记账权)。但随着ASIC矿机的研发,普通用户的计算设备的算力无法与这些专业挖矿设备竞争,从而引发社区对于算力中心化、矿池中心化的担忧。
Cuckoo Cycle是一种由2014年提出的, 意图实现“更加平等”的抗ASIC矿机工作量证明算法,从而实现挖矿设备的“非中心化”。 由于DRAM的延迟相较于CPU速度的飞速提升相对稳定,并且成本也更加高昂,因此减弱对计算能力要求,以内存容量要求取而代之的Memory-hard算法通常是被认为可以抗ASIC的。Cuckoo Cycle就是一种在计算过程中要求存储大量中间状态的图论Memory-hard算法,主网上线后设备至少要6G显存才可进行挖矿。
Grin测试网目前运行着两种模式的PoW:ASIC友好的主要模式Cuckatoo31+,抗ASIC的次要模式Cuckatoo29。在初期挖矿时,主要算法将挖掘出10%的区块,其他区块由次要算法生产,而随着挖矿的进行,100%的区块将由主要算法生产。虽然主要算法是ASIC友好的,但目前的ASIC矿机都不支持该算法的挖矿,因此Grin的这种设计可能是为了激励芯片厂商针对其主要算法设计ASIC矿机。
3生态:社区驱动,算力非中心化
3.1 社区化开发,热度较高
Grin采取社区化的开发模式。 与当前阶段占主导地位的企业形式开发不同,Grin的开发由社区驱动,目前主要有一个核心委员会做发展决策,包括主要的开发者和社区成员。Grin是开源项目,不受任何商业机构的控制,其发展方向一定程度上体现了社区的集体意志。以下为主要开发者:
John Tromp:Cuckoo Cycle共识算法发明者,计算机和数学科学家,围棋中数学问题的知名研究者。
Ignotus Peverell:匿名开发者,名字源于《哈利波特》中隐形斗篷的主人,是Grin项目的发起者和代码最多的贡献者。
AntiochPeverellAnitioch:匿名开发者,在早期就参与了Grin项目,名字同样出自《哈利波特》,第二位的代码贡献者;
Michael Cordner:即@yeastplume,第三代码贡献者,非匿名核心开发者,核心团队与外界的交流常常通过他完成。
Daniel Lehnberg:在Grin团队中负责社区运营,很有个性的人,负责Grin的生态周报。
Quentin LeSceller:项目赞助商Blockcypher团队成员,Grin矿池Grinmint的开发者。
团队仅接受捐赠,未预先分配通证。 与Bitcoin相类似,Grin完全通过挖矿获得,没有任何预分配方案。开发团队坚持完全的社区驱动的模式,不接受投资,仅仅接受捐赠,对于捐助者团队只会在社交媒体上表示感谢。截至发稿,Grin已经发起国4次募捐,其中3次是项目的发展基金,1次是Michael Cordner募集的个人开发基金。项目的融资规模非常小,用途也相对透明。
Grin是近期的热门项目,社区的关注度整体较高。 Grin的Twitter有6159关注和258喜欢,共发布1531条推文,更新频率和关注度都比较高。Grin官网论坛中比较热门的帖子浏览量能达到4.3k,讨论活跃,内容技术化。Grin的中文社区也相对活跃,有多个500人的微信群,讨论内容主要是技术和挖矿方法等方面。整体来说,Grin的社区基础相对比较强,启动阶段可能会相对顺利。
3.2 初期抗ASIC,挖矿门槛高,算力相对非中心化
Grin的共识算法在初期具有ASIC抗性,且挖矿门槛较高。 Grin采取了Cuckoo Cycle共识算法,具有ASIC抗性,早期阶段厂商难以研制ASIC矿机,避免了专业矿工对使用个人电脑挖矿的用户产生过大优势。这种算法的ASIC抗性通过高存储器要求来实现,必须使用6G以上显存的Nvidia显卡进行挖矿,很大程度上提高了挖矿的成本。具体来讲,必须使用GTX1060 6GB及以上型号的显卡才能挖矿,排除了此前显卡矿机广泛使用的AMD显卡和P106低端型号。Grin的共识算法阻止了大批存量显卡矿机的迁移,一定程度防止了专业矿工的垄断。但是,相比此前的8GB显存门槛,现在的要求允许大量的专用卡P106-100挖Grin,算法对专业矿工的阻碍作用有所降低,这一改变在社区也引起了巨大争议。
算力相对非中心化,避免矿工势力话语权过大。 早期的ASIC抗性和对存量显卡矿机的不兼容一定程度上防止了算力中心化的问题,社区发展早期矿工势力难以在算力上取得绝对优势。我们认为这对于早期的社区建设是非常有好处的,可以避免势力强大的矿工资本早期垄断话语权。随着社区的扩大和新产出Grin在系统中比例的减少,将逐步开放ASIC算法,引入专业矿工维持网络。这个时候社区已经相对稳固,社区成员持有的Grin市值也相对较高,可以有效制约矿工集团,避免发生BTC和XMR硬分叉的类似事件。
增加社区挖矿参与度,有助于提高Grin的市场认同。 算力的非中心化意味着可以有更多的普通社区成员参与到挖矿中来,仅仅需要电力和高性能的计算机。早期的Grin通证将会相对分散,有利于形成社区共识,提高Grin的市场认同。算力的分散化加上前期高通胀的经济模型,可以有效在社区相对薄弱的阶段遏制矿工资本和投机资本,保证社区对Grin项目的主导,帮助Grin实现开发团队和社区的愿景。
4风险:初期价格波动,潜在监管压力
Grin初期总量较低而增长较快,价格波动风险高,仅有场外交易渠道。 不同于其他通证,Grin主网上线时存量为0,之后数量随挖矿的进行而线性增加,早期供应量少但增长快,这使得其价格波动的风险更大。建议投资者注意甄别炒作行为,不要以严重高于挖矿产出成本的价格购买。此外,Grin初期没有场内交易的渠道,仅能在场外以点对点的形式进行流通,交易对手的信用风险也需要特别注意。
Grin匿名性的特点使其面临潜在的监管压力。 Grin具有密码学层面的匿名性特点,这使得相关的交易信息难以在链上进行审查。匿名性的特点一方面会在一定程度上便利使用者,扩大应用场景,但另一方面也会催生非法交易活动的可能性。由于审查和监管存在高度的困难,部分国家的政府机构可能会通过封堵法币账户等手段限制Grin的流通,从而影响生态的发展。监管风险是值得Grin社区思考的问题,也是Grin走向公众的一大障碍。
附注:
因一些原因,本文中的一些名词标注并不是十分精准,主要如:通证、数字通证、数字currency、货币、token、Crowdsale等,读者如有疑问,可来电来函共同探讨。