编者按:本文来自以太坊爱好者,作者: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”是不可能的。花费该输出
Web3游戏初创公司GRID完成230万美元种子轮融资:金色财经消息,Web3游戏初创公司Gaming RevolutionforInternational Development(GRID)宣布已完成230万美元种子轮融资,本轮融资分为两部分完成,最初募集到130万美元初始融资,由11 Tribes Ventures和Blockchain Founders Fund(BFF)领投,Zell Capital、Realist Ventures、Formless Capital和Mask Network参投,之后又募集到100万美元融资,主要战略投资者包括Bill Ackman、BFF、11Tribes、Argo's Quest和一批天使投资人。GRID计划在2022年第三季度发布Web3视频游戏平台Breshna.io,帮助Web3游戏制造商将他们的想象力变为现实并为NFT社区创造更多实用性。(Einnews)[2022/6/6 4:06:29]
假设我们刚才提到的输出属于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的操作
声音 | Grin++开发者:Mimblewimble可实现非交互式交易,莱特币、Grin等将受益:Grin++钱包开发者David Burkett提出了一种支持Mimblewimble非交互式交易的提案,其可适用于莱特币、Grin等区块链项目。一月份在开发方面,已经为libmw确定了构建过程;构建了一个具有交易处理功能的健壮数据库框架;在Grin++方面,已完成一个成功的计划硬分叉。二月份的任务是实施莱特币扩展区块(EB)的共识规则,完成后即可开始将LBMW集成到现有的莱特币代码库中。[2020/2/2]
当接收到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周报:测试网Floonet成功完成硬分叉升级:Grin近期发布上周周报(12月16日-12月22日),主要内容如下:一、开发:1. 目前,在Grin中有111个未解决问题,在Grin Wallet中有24个未解决的问题;2. Grin v3.0.0网络升级计划在2020年1月15日进行;3. Grin测试网Floonet成功完成硬分叉升级,到目前为止一切运行顺利;二、治理:1.开发和治理会议现在已经转移到Keybase,以提高Keybase社区在主网站上的可见性;2.lehnberg提出为2020年第一季度提供资金;在上周的治理会议上Yeastplume的资金申请被批准。[2019/12/25]
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。记住这个签名——你很快就知道它的意义了。交易完成
动态 | 武汉芯动科技将于今年夏天推出 Grin 矿机:中国的矿机生产商芯动科技宣布,将于今年夏天推出 Grin 矿机。芯动科技目前尚未说明该矿机的具体配置等信息,表示相关信息会在矿机预定之时发布。[2019/1/29]
数字货币需要“记忆”——也就是说,当你向某个人发送一笔钱的时候,你不能把同一笔钱发送给其他人。通过使用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在创建该交易的时候,都知道各自输出的致盲因子。这意味着新他们能够花费交易产生的新输出,使得该输出不被锁定。刚才我们用来验证交易的信息被放在交易内核当中。交易内核
Citadel创始人兼CEO Ken Griffin认为 比特币可能陷入了投机泡沫:投资资本280亿美元的Citadel创始人兼CEO Ken Griffin 本周一向CNBC表示:“比特币现在有很多郁金香狂热的因素,那种狂热我们可以追溯到几百年前的荷兰。”“我很担心,除了让它(比特币)不断上涨的头条新闻以及‘我想确定自己没有错过赚些钱的机会’以外,买比特币的人并没有真正了解自己在参与什么。这是局吗?不是。可这些泡沫往往以悲剧告终。我担心这个泡沫可能怎样收场。”[2017/11/28]
除了输出,交易内核是Grin交易生成的另一部分信息。每笔交易生成一个交易内核,但是无法通过查询Grin区块链上的某一输出找到与之关联的交易内核。每笔Grin交易都包含一个交易内核,以及没有凭空产生多余Grin的证明。以下信息将存储在交易内核中:交易签名(s,k?G)。与“过剩致盲因子”关联的公钥。如上所述,该公钥可以用于验证s。该交易的交易费与锁定高度。。总结
在完成所有这些操作之后,只有如下交易相关信息会广播到网络中:所花费的输入。新产生的输出。交易内核。内核偏移。上文所述的交易元数据不会被广播。更好的是,其中一些信息也可以丢弃——我们将在另一篇博客中讲述。希望本文能对了解Grin交易工作原理有所帮助。我刻意略去了范围证明、内核偏移以及交易费的内容。更多信息请阅读有关Grin中交易合并机制工作原理、多方参与交易原理以及一些实验性的博客。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。