编者按:本文来自以太坊爱好者,作者:BrandonArvanaghi,翻译&校对:stormpang&闵敏,星球日报经授权发布。编者注:Grin是一种基于MimbleWimble协议建立的新型密码学货币。本文是一个详细的教程,逐步解释了MimbleWimble协议中交易是如何构造出来,又如何运用密码学,在不泄露交易双方地址和交易额的条件下,保证货币没有双花,保证只有货币所有者才能花费货币。Grin是一种基于MimbleWimble协议建立的新型密码学货币。但是,Grin的教程又是出了名的晦涩难懂。本文旨在分享Grin交易的运行原理,帮助大家理解Grin交易是如何实际运行的。Grin交易的输出是一个Pederson承诺,采用如下形式:-一个Grin输出就是一个Pedersen承诺。-Perdersen承诺是一种隐藏信息的好方法。如果你是第一次听到Perdersen承诺的概念,那么每当你看到这个词的时候,就想想“屏蔽值”的概念。以下这段文字摘自Grin的wiki。假设咱们选择一个非常大的数字k当做私钥,将k*H作为对应公钥。即便有人知道了公钥k*H的值,要据此推导出k的值也是近乎不可能的……r是被用作致盲因子的私钥,G是椭圆曲线上的一个固定点,它们的乘积r*G就是r在这条曲线上的公钥。v是输入值或输出值,H是椭圆曲线上的另一个固定点……已知私钥k和私钥j,则(k+j)*H=k*H+j*H,即两个私钥之和与固定点H相乘产生的公钥等于两个私钥分别与固定点H相乘产生的两个公钥之和k*H+j*H。若想更深入地研究密码学可以阅读ECCprimer这篇博客。简而言之,要花费一笔Grin输出,必须同时知道致盲因子(r)以及Grin交易金额(v)。这两个值是不可能通过破解承诺倒推得出的。因此,只有提前知道这些数值才能花费Grin的输出。Grin之所以设置致盲因子,是因为Grin的发送者是知道v的值的。但是该输出的致盲因子只有你知道,因此只有你能够花费该输出。假设这个输出包含40Grin,使用的致盲因子为20。:-在该输出中,致盲因子是20,Grin数量是40。-在Grin浏览器上查看Grin交易的输出,我们会发现实际的输出并非像上图那样通过清晰的公式呈现。下面才是Grin输出真正的样子:-Grin输出。-再强调一遍,从该输出推出“20”或“40”是不可能的。花费该输出
V神呼吁纽约法院宽大处理Virgil Griffith:金色财经报道,以太坊联合创始人Vitalik Buterin加入了要求纽约法院在即将对前以太坊开发者Virgil Griffith进行判决时给予宽大处理的阵营中。Griffith于2019年11月被捕,此前他于当年4月在朝鲜的一个加密货币会议上做了关于加密货币和区块链技术的演讲。他被指控违反美国制裁法,并于2021年9月在与联邦检察官达成的协议中认罪,他可能会在监狱中服刑长达6.5年。(Coindesk)[2022/3/11 13:49:58]
假设我们刚才提到的输出属于Alice。现在,Alice想要将这些40个Grin中的25个发送给Bob。为了简单起见,咱们先忽略给矿工的交易手续费。如果你有一张5美元的钞票,买了3美元的东西,会得到2美元的找零。比特币系统中的交易就是这样运作的,Grin也不例外。如果Alice想从她的未花费交易输出40Grin中拿出25Grin发送给Bob,她在这笔交易中还要创建一个新的未花费交易输出,将余下的15Grin打回自己的地址。-Alice知道她发送给Bob的Grin数量,以及找零数量。-这笔交易中有15Grin将回到Alice手中,意味着只有她能够控制并且再次花费这15Grin。换句话说,必须杜绝Bob花费Alice零钱的可能性。为此,Alice必须为她的找零输出创建一个新的致盲因子。假设Alice选了34。Alice同时知道r和v,就拥有了创建零钱输出所需的一切信息,而且将作为一个输出记录在区块链上。Alice即将向Bob发送的25Grin输出也是如此。-Alice的找零输出。-正如我前面所提到的,只有知道了输出使用的致盲因子,才能花费这个输出。Alice知道她想花费的输出的致盲因子(20),但是她需要通过一种方式向Grin系统中的其他人证明她知道。这就是为什么她需要创建一个完全独立的计算,求解她的致盲因子总数。这就要把Alice刚刚为她的找零输出创建的致盲因子,减去她想要花费的输出的致盲因子(20)。-Alice的致盲因子总数。-rs代表Alice的致盲因子总数,在这个例子里是14。。)最后,Alice需要创建一个随机nonceks。她将使用该随机nonce值,帮助她对这个交易进行签名。Alice不会将实际的nonce值发送给Bob,而是发送ks·G。如前所述,通过将该nonce值乘以生成点G,Alice隐藏了实际的nonce值。Alice将以下信息发送给Bob。实际上,Grin数据并不会被分为“元数据”和"数据”字段,但是为了清晰起见,本文特意将二者区分开来。-Alice在Grin交易第一步需要发送给Bob的所有信息。-元数据字段:发送数量:Alice想要发送给Bob的Grin数量。交易唯一ID:Alice和Bob在来回发送数据时使用的唯一标识符,用于标识此交易。交易费:交易费。锁定高度:交易生效的区块号。数据字段:交易输入:Alice将单个或多个未花费输出用作发送给Bob的交易的输入。找零输出:Alice的找零输出ks?G:Alice的nonceks与生成点G相乘,得到的值就是这个nonce的Pedersen承诺。rs?G:Alice的致盲因子总数rs与生成点G相乘,得到的值就是这个rs的Pedersen承诺。Alice将以上信息发送给Bob,由Bob来完成下一步操作。Bob的操作
音乐家Grimes以超600万美元出售NFT收藏品:音乐家和视觉艺术家Grimes以超过600万美元的价格出售了一系列NFT收藏品。(Decrypt)[2021/3/2 18:05:40]
当接收到Alice发送的信息后,Bob将TXfee和lock_height这两个变量连起来产生M”)。-交易“消息”。-Bob为他将要从Alice处接收的25Grin选择一个致盲因子rr。假设他选择了11。与此同时,他也选择了自己的随机noncekr。与Alice的操作相同,Bob将rr和kr两个值分别与生成点G相乘,创建了一个Pedersen承诺。有了这些数据之后,Bob就可以生成本交易对应的Schnorr挑战,用变量e表示:-交易的Schnorr挑战。-Schnorr挑战按照顺序对以下信息进行了SHA256哈希运算:交易消息。Alice和Bob所选的nonce对应的Pedersen承诺之和。Bob的致盲因子对应的承诺与Alice的致盲因子总数对应的承诺之和。Bob通过e为该交易生成自己的Schnoor签名,即sr。虽然sr是Bob的完整签名,但是我们称其为Bob的部分签名,因为该签名最终要与Alice的部分签名一同创建整个交易的签名。-该交易中Bob的部分签名。-当Alice最终收到sr时,是无法倒推出kr或rr的实际数值的。Bob将以下内容发送给Alice:-Bob将自己的部分签名、nonce对应的承诺,以及25Grin的致盲因子对应的承诺发送给Alice。-按照顺序,发送的内容包括:sr:Bob的部分签名。kr?G:Bob所选的nonce对应的承诺。rr?G:Bob即将收到的25Grin的致盲因子所对应的承诺。最后一步:发送回Alice
Grin开发者:莱特币MW测试网预计将于9月启动:由莱特币基金会资助,负责将MimbleWimble协议集成至莱特币的Grin开发者David Burkett更新了五月开发进展。
David Burkett表示,他已经完成了MW模块逻辑的实现,同时开始了mempool逻辑的研究,这是将MimbleWimble集成到莱特币网络的重要一步。在谈及未来计划时,David Burkett提到,初步预测9月份为测试网启动日期。[2020/6/3]
Alice现在有了计算e以及该交易的Schnorr挑战所需的一切信息。在本地计算完e之后,Alice就能够验证Bob的部分签名。相信你还记得,Bob的部分签名sr包括以下内容:-该交易中Bob的部分签名。-基于我们先前描述的椭圆曲线的性质,Alice在等式两边同时乘以生成点G后,该等式依旧成立。-Alice在等式两边同时乘以生成点G。-因为Alice等于已经从Bob处收到了kr?G与rr?G,并且已经在本地计算出了e,她只需要简单地将sr乘以生成点G,确保与等式右边的值相等,就能够验证Bob的部分签名了。通过完成以上操作,Alice能够证明:Bob知道他将收到的Grin数量。Bob知道他的nonce值。Bob知道他为这25Grin选取的致盲因子。……至此,Alice在不知道Bob选择的nonce和致盲因子的情况下验证了Bob的部分签名。之后,Alice生成她自己的部分签名:-该交易中Alice的部分签名。-Alice现在可以生成该交易的签名,其中包含她和Bob的部分签名:交易签名由Alice和Bob的部分签名之和以及他们各自的nonce所对应的承诺之和组成。按照顺序,签名包含:Alice和Bob的部分签名之和。Alice和Bob的nonce所对应的承诺之和。合并之后,交易签名可以表示成如下形式:-交易签名-其中,s=ss+sr,k=ks+kr。记住这个签名——你很快就知道它的意义了。交易完成
动态 | BitcoinTalk论坛接受Grin支付 为该论坛以此类方式认可的首个“山寨币”:BitcoinTalk论坛发声明称,现在接受Grin支付,并自称可能是除交易所以外第一个这样做的网站。“眼镜蛇”Cobra发推称,这是BitcoinTalk论坛以这种方式认可的首个“山寨币”,即使是比特币闪电网络支付都还没被接受。[2019/1/18]
数字货币需要“记忆”——也就是说,当你向某个人发送一笔钱的时候,你不能把同一笔钱发送给其他人。通过使用Grin,我们隐藏了Grin的发送数量以及接收方。那么,我们怎么证明这笔钱没有被“双花”或凭空造出来的呢?在一笔Grin交易中,从输入中减去所有输出之后,剩余Grin的数量应该等于0。再以5美元钞票举例:3美元给收银员+2美元找零返还给我-5美元钞票=0同理,一笔合法的Grin交易也符合上述等式。那么,在不暴露具体值的情况下,我们可以如何验证呢?来了解一下Alice和Bob之间交易的输入和输出情况:(34?G)+(15?H)+(11?G)+(25?H)-(20?G)-(40?H)=(25?G)+(0?H)这里的巧妙之处在于,当Grin数量抵消时,用输入减去输出后剩余的是“过剩致盲因子”或“过剩内核”所对应的承诺。在我们现在的例子中,过剩致盲因子对应的承诺为25?G,即椭圆曲线上的一个公钥。如果一笔Grin交易的输出之和减去输入之和后能够产生一个有效的椭圆曲线公钥,那么你就能知道v值一定被抵消了。如果等式右侧不是某些已知数值n的n?G+0?H形式,你就能知道这笔交易是非法的了。这意味着,要么输出总量大于输入总量,要么输入总量大于输出总量。还记得上文得出的签名么?-交易签名-该签名实际上签署了我刚才提到过的过剩致盲因子对应的承诺,下面我们来解释一下。还记得吧,当你把Bob的部分签名的等式两边同时乘以G后,会得到如下等式。-等式两边同时乘以生成点G后Bob的部分签名-同样,当你把Alice的部分签名的等式两边同时乘以G后,会得到如下等式。-等式两边同时乘以生成点G后Alice的部分签名。-如果把两个等式相加会发生什么呢?你将得到:sr?G+ss?G=(kr?G)+(ks?G)+(e?(rr?G+rs?G))其中,rr是Bob的致盲因子,rs是Alice的致盲因子总数,rr?G+rs?G等于(rr+rs)?G。Bob的致盲因子对应的承诺是11?G。Alice的致盲因子总数对应的承诺是14?G,两者相加之后得到25?G。因此,sr和ss相加之和若等于过剩致盲因子对应的承诺,即可证明整个交易是合法的。进一步简化这个等式,我们会得到:sr?G+ss?G=(k?G)+(e?(r?G))或:sr?G+ss?G=(k?G)+(e?(25?G))那么接下来只需检验等式两边是否相等就行了。记住,等式中的所有变量对于所有人都是可见的,因此任何人都能进行验证。我们可以在既不知道Alice的致盲因子也不知道Bob的致盲因子的情况下验证该交易。通过将他们的部分签名相加,并验证其总和是否等于过剩致盲因子对应的承诺,我们能够证明:Alice花费的输入中没有凭空产生多余的Grin。Alice和Bob在创建该交易的时候,都知道各自输出的致盲因子。这意味着新他们能够花费交易产生的新输出,使得该输出不被锁定。刚才我们用来验证交易的信息被放在交易内核当中。交易内核
声音 | Primitive联合创始人:全球有1亿美元的资金已经投入到Grin挖矿设备:据ChainNews消息,Primitive Ventures联合创始人Eric Meltzer在新闻通讯Proof of Work中披露,据保守估计,全球已经有1亿美元的资金投入到了专门针对Grin的挖矿设备中,其中主要是来自风险投资机构的资金。Grin是一种基于Mimblewimble协议的隐私币,北京时间1月15日晚间正式主网上线。[2019/1/16]
除了输出,交易内核是Grin交易生成的另一部分信息。每笔交易生成一个交易内核,但是无法通过查询Grin区块链上的某一输出找到与之关联的交易内核。每笔Grin交易都包含一个交易内核,以及没有凭空产生多余Grin的证明。以下信息将存储在交易内核中:交易签名(s,k?G)。与“过剩致盲因子”关联的公钥。如上所述,该公钥可以用于验证s。该交易的交易费与锁定高度。。总结
在完成所有这些操作之后,只有如下交易相关信息会广播到网络中:所花费的输入。新产生的输出。交易内核。内核偏移。上文所述的交易元数据不会被广播。更好的是,其中一些信息也可以丢弃——我们将在另一篇博客中讲述。希望本文能对了解Grin交易工作原理有所帮助。我刻意略去了范围证明、内核偏移以及交易费的内容。更多信息请阅读有关Grin中交易合并机制工作原理、多方参与交易原理以及一些实验性的博客。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。