新年伊始,深冬的大地寒意渐浓,经历了萧条时期的区块链行业和通证市场也仍然处于冰封之中。但是,18 年末开始,隐私通证 Grin 成为了区块链社区久违的热点话题,得到了市场的广泛关注。在主网即将上线之际,我们将与大家一起走近 Grin,探讨它的本质与可能性。

原文标题:《Grin:哈利波特的神奇魔法?》

1 Grin:理想主义的隐私通证

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 的开发由社区而非企业驱动,未接受任何融资,仅接受捐赠。主网上线前,团队没有进行任何的通证分配和预挖矿,也声明不会主动寻求上交易所,商业化程度较低。这一方面降低了项目方损害社区和投资者的可能性,另一方面一定程度上也会对 Grin 的推广应用造成一定的阻碍。

1.2 线性供应,通胀逐渐降低

Grin 通证完全挖矿获得,每分钟出一个块,每个块有 60Grin 的区块奖励,产量不递减。Grin 是一种使用 PoW 共识机制的通证,全网平均每秒产出一个 Grin,年产量为 3153.6 万个,其总量为线性增长的状态,没有上限。这种机制与 BTC 等 PoW 通证存在的减产机制具有明显不同,是一种非通缩的经济模型。核心开发者 Michael Cordner「Yeastplume」解释道,他们这样设计主要是为了避免早期矿工获益显著高于后期矿工,并希望 Grin 真的能够成为交易媒介,而非价值储存或投机的工具。

系统早期具有较高的通胀率,后期会逐渐降低。Grin 的增长速度固定,因此系统的通胀率随总规模的增大而降低。从第二年开始,第 N 年的通胀率是 1/(n-1),这是一个反比例函数,当 N 足够大时,通胀率将趋近于 0。

Grin 的本质与可能性探索:通过密码学技术使交易变得「无声无息」

这种货币政策有利于 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,算法对专业矿工的阻碍作用有所降低,这一改变在社区也引起了巨大争议。

Grin 的本质与可能性探索:通过密码学技术使交易变得「无声无息」

算力相对非中心化,避免矿工势力话语权过大。早期的 ASIC 抗性和对存量显卡矿机的不兼容一定程度上防止了算力中心化的问题,社区发展早期矿工势力难以在算力上取得绝对优势。我们认为这对于早期的社区建设是非常有好处的,可以避免势力强大的矿工资本早期垄断话语权。随着社区的扩大和新产出 Grin 在系统中比例的减少,将逐步开放 ASIC 算法,引入专业矿工维持网络。这个时候社区已经相对稳固,社区成员持有的 Grin 市值也相对较高,可以有效制约矿工集团,避免发生 BTC 和 XMR 硬分叉的类似事件。

增加社区挖矿参与度,有助于提高 Grin 的市场认同。
算力的非中心化意味着可以有更多的普通社区成员参与到挖矿中来,仅仅需要电力和高性能的计算机。早期的 Grin 通证将会相对分散,有利于形成社区共识,提高 Grin 的市场认同。算力的分散化加上前期高通胀的经济模型,可以有效在社区相对薄弱的阶段遏制矿工资本和投机资本,保证社区对 Grin 项目的主导,帮助 Grin 实现开发团队和社区的愿景。

4 风险:初期价格波动,潜在监管压力

Grin 初期总量较低而增长较快,价格波动风险高,仅有场外交易渠道。不同于其他通证,Grin 主网上线时存量为 0,之后数量随挖矿的进行而线性增加,早期供应量少但增长快,这使得其价格波动的风险更大。建议投资者注意甄别炒作行为,不要以严重高于挖矿产出成本的价格购买。此外,Grin 初期没有场内交易的渠道,仅能在场外以点对点的形式进行流通,交易对手的信用风险也需要特别注意。

Grin 匿名性的特点使其面临潜在的监管压力。Grin 具有密码学层面的匿名性特点,这使得相关的交易信息难以在链上进行审查。匿名性的特点一方面会在一定程度上便利使用者,扩大应用场景,但另一方面也会催生非法交易活动的可能性。由于审查和监管存在高度的困难,部分国家的政府机构可能会通过封堵法币账户等手段限制 Grin 的流通,从而影响生态的发展。监管风险是值得 Grin 社区思考的问题,也是 Grin 走向公众的一大障碍。