编者按:本文来自以太坊爱好者,作者: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”是不可能的。花费该输出
Cardano生态稳定币Djed预计将很快上线该生态DEX Wingriders:1月21日消息,Cardano生态去中心化交易所Wingriders发布了与该生态去中心化稳定币项目COTI的合作推称,并称即将有“重要”公告宣布,社区预测COTI的稳定币Djed将很快上线Wingriders。(The Crypto Basis)[2023/1/21 11:25:13]
假设我们刚才提到的输出属于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的操作
英特尔Block、Argo和Griid签约成为他们新的比特币挖矿ASIC的客户:金色财经报道,Bitcoin Archive发推称,英特尔已经与Jack Dorsey的Block、Argo和Griid签约,成为他们新的比特币挖矿ASIC的客户。此前金色财经报道,英特尔计划在2月底发布一款比特币挖矿ASIC芯片。[2022/2/13 9:48:30]
当接收到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
Runtime Verification创始人 Grigore?Rosu出任PlatON技术顾问:金色财经消息,伊利诺伊大学厄巴纳-香槟分校计算机科学教授Grigore?Rosu正式出任PlatON技术顾问,将在协议建模和智能合约的形式化验证等领域为PlatON提供助力,帮助团队更好地构建PlatON Network技术生态。
Rosu教授是科技企业Runtime Verification的创始人兼首席执行官。曾任美国国家航空航天局(NASA)研究科学家,期间与同事一起开创了“运行时验证”这一前沿理念。2010年,创立Runtime Verification,企业拥有世界顶尖的形式化验证团队,专注于区块链领域提供软件测试和验证方面的产品与服务,运用独特的动态验证技术来审核虚拟机和公链上的智能合约,全面提升区块链软件系统的安全稳定性。[2021/4/1 19:36:29]
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。记住这个签名——你很快就知道它的意义了。交易完成
公告 | Poloniex再次向Grin General Fund进行捐赠:据Poloniex交易所官方推特,Poloniex交易所再次向Grin General Fund进行捐赠,此次金额为价值0.03747 BTC,作为交易所致力于促进生态系统开源开发的一部分。截至目前,Poloniex已向Grin General Fund捐赠了3.86946 BTC。[2019/11/24]
数字货币需要“记忆”——也就是说,当你向某个人发送一笔钱的时候,你不能把同一笔钱发送给其他人。通过使用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在创建该交易的时候,都知道各自输出的致盲因子。这意味着新他们能够花费交易产生的新输出,使得该输出不被锁定。刚才我们用来验证交易的信息被放在交易内核当中。交易内核
声音 | Grin 开发者:“攻破 Mimblewimble 协议隐私模型”的说法存在误导,该问题已知并在改善:匿名币古灵币 Grin 核心开发者 Daniel Lehnberg 针对区块链投资基金 Dragonfly Capital 研究员 Ivan Bogatyy 发表的关于 Mimblewimble 协议存在隐私缺陷的文章进行反驳,指出 Mimblewimble 协议的隐私性并不存在“根本性的缺陷”,Ivan Bogatyy 在文章中描述的对 Mimblewimble / Grin 的攻击是对已知限制的误解。Daniel Lehnberg 表示,“尽管该文章提供了一些有关网络分析的有趣数字,但给出的结果实际上并不构成攻击,也不能支持其提出的耸人听闻的主张”。Daniel Lehnberg 称,文中提出的问题对 Grin 团队或研究 Mimblewimble 协议的人来说都不新鲜,Grin 开发团队早在很多文件中已经阐述了该问题,并且通过各种途径改善该问题并提高该协议的隐私性。他还指出,文章的标题“攻破 Mimblewimble 协议的隐私模型”不准确,有误导嫌疑。[2019/11/19]
除了输出,交易内核是Grin交易生成的另一部分信息。每笔交易生成一个交易内核,但是无法通过查询Grin区块链上的某一输出找到与之关联的交易内核。每笔Grin交易都包含一个交易内核,以及没有凭空产生多余Grin的证明。以下信息将存储在交易内核中:交易签名(s,k?G)。与“过剩致盲因子”关联的公钥。如上所述,该公钥可以用于验证s。该交易的交易费与锁定高度。。总结
在完成所有这些操作之后,只有如下交易相关信息会广播到网络中:所花费的输入。新产生的输出。交易内核。内核偏移。上文所述的交易元数据不会被广播。更好的是,其中一些信息也可以丢弃——我们将在另一篇博客中讲述。希望本文能对了解Grin交易工作原理有所帮助。我刻意略去了范围证明、内核偏移以及交易费的内容。更多信息请阅读有关Grin中交易合并机制工作原理、多方参与交易原理以及一些实验性的博客。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。