首页
要闻详情
图标图标

Plain交易所表示锁定高度为0 ECC入门中有对密码学更深入的研究

2020-06-10 13:10:41
1127
Grin,一种使用MimbleWimble协议的新型加密货币,连日来让整个市场为之兴奋。但其相关教程却乏善可陈。

Grin,一种使用MimbleWimble协议的新型加密货币,连日来让整个市场为之兴奋。但其相关教程却乏善可陈。

Plain交易所表示锁定高度为0 ECC入门中有对密码学更深入的研究

Grin输出采用了PedersenCommitment。输出形式如下:

新型加密货币Grin交易的具体原理解析

Grin输出——PedersenCommitment方案。

PedersenCommitment是一种隐藏信息的巧妙方式。如果这是你第一次听到Commitment,那么再看到这个词语的时候你就可以将其理解为“隐藏价值”。

如果我们选择一个非常大的数字k作为私钥,则k*H被认为是相应的公钥。即知道公钥k*H的值,要推导出k的值也几乎是不可能的。..

•r是私钥,用作盲因子,G是椭圆曲线上的不动点,他们的乘积r*G是曲线上r的公钥。

•v是输入或输出值,H是椭圆曲线上的另一个不动点。

在公式(k+j)*H=k*H+j*H中,k和j都是私钥,说明两个私钥和获取的公钥(k+j)*H,等于每个私钥的对应公钥和(k*H+j*H)。

在ECC入门中有对密码学更深入的研究,但简而言之,要花费Grin,就必须要知道盲因子(r)和Grin的数量(v)。而要解构commitment来推断这些值是不可能的。我们必须提前知道这些值。

盲因子之所以存在是因为向你支付Grin的人也知道v的值是多少(他们向你发送了多少Grin)。但只有你(而非Grin的发出方)知道该输出的盲因子,因此,只有你能够花掉这笔输出。

与其他加密货币不同,Grin不使用地址。要发送或接收Grin,发送方和接收方必须在彼此之间来回发送信息。

一种方法是通过文件。此文件可以在几秒、几天、几年或任何其他时间内共享。

在传递这个Grin交易文件时检查它的内容。

在阅读本文之前,我建议阅读“Grin的详细交易解读”来理解其中的一些词汇。

image.png

查看Grin的交易文件

假设您想向Bob发送10.25Grin,并且您俩想通过一个文件交换此交易所需的信息。你可以运行:

image.png

这将生成一个名为my_grin_transaction.tx(我的Grin交易文件)的文件,将其发送给Bob,以便他提供响应文件。

让我们打开这个my_grin_transaction.tx文件。

image.png

image.png

按顺序,我们有:

·num_participants:参与此交易的人数。Alice对Bob意味着2个参与者。Alice对Bob和Charlie意味是3个。

·id:该笔交易的唯一身份标识。以便我们在收到Bob返回的文件时跟踪交易。

接下来,我们有一个tx(交易的缩写)对象。它包括:

1.内核偏移量(这里称为偏移量)。

2.一个主体对象,包含要在此交易交易中使用的输入、此交易的输出(当前,只是我们的更改)和交易内核。

让我们深入研究一下。

·偏移量(offset):内核偏移量。这是一个随机值,从盲因中减去这个值,以使任何人更难跟踪区块链上的这个交易。

tx对象的下一个对象是输入对象。这个对象包含我们在这个交易中花费的输出信息。

image.png

·特性:在本例中,设置我们正在花费的输出的特性(此交易的输入)为“Plain”。特性变量可以是“Plain”,也可以是“Coinbase”。

Coinbase输出是由挖矿奖励产生的输出。Plain输出只是意味着它不是一个Coinbase输出。

·承诺:我们试图花费的输出。Grin中的输出是彼泽森承诺(PedersenCommitment)。要了解它如何工作,可阅读Grinwiki。

仍然在tx对象中,我们移到输出数列。

image.png

可以看到,这个输出数列已经为交易提供了一个更改输出。如果我们花费10.25个Grin,并且在这个交易中只使用一个输入(就像这里的情况),那么该输入至少会包含10.25个Grin。例如,如果这个输入包含20个Grin,那么这个交易还需要一个输出将9.75Grin发回给我们!

Grin具有唯一性,Bob需要创建一个输出返回给自己,由于我们还未真正将文件发送给Bob,因此还未构建好交易这一部分。更改输出与Bob无关,因此我们能计算出更改输出。

除了特性和提交之外,这个输出还包含一个证明。这是输出的范围证明,它证明了输出中的Grin的数量非负。范围证明允许我们以加密方式证明输出非负,而无需揭示输出的实际内容。

该交易文件的下一部分是内核数列。

image.png

交易内核也从特征变量(featuresvariable)开始。这部分可能有点令人困惑:正如我前面解释的,您看到的任何输出的特性变量都是“Plain”或“Coinbase”。但是在交易内核中,特征变量可以是“Plain”、“Coinbase”或“HeightLocked”。

image.png

交易内核的三种不同“特性”:Coinbase、Plain和HeightLocked

“Plain”交易表示锁定高度为0。换句话说,一旦将该交易广播到网络,就会立即被挖出。只要挖出任何Grin交易,就可以使用它的输出。相反,HeightLocked的交易意味着直到某个区块号才可以挖出该交易。

一旦被挖出,输出将具有“Plain”或“Coinbase”的特征,正如我们在上面看到的,在被挖出之前,它与被高度锁定的事实不再相关。

交易内核还包含费用和锁定高度、内核剩余(这里表示为excess)和交易签名(这里表示为excess-sig)。

在收到Bob返回的响应文件之前,我们还不能计算剩余和剩余签名。这就是这些数列都为0的原因。

风险提示及免责声明

文章来源于中亿财经网,转载注明原文出处,此文观点与指股网无关,理性阅读,版权属于原作者若无意侵犯媒体或个人知识产权,请联系我们,本站将在第一时间删掉 ,指股网仅提供信息存储空间服务。

可信网站身份验证经营性网站备案信息工商网监电子标识网站安全证书
指股网浙ICP备17010029号-4
广播电视节目制作经营许可证:(浙)字第04719号
许可证图标网络文化经营许可证:浙网文(2018)9043-734号
备案图标浙公网安备:33010902002276号

本站郑重声明:指股网所有栏目频道仅提供信息存储空间服务。所载文章、数据仅供参考,风险自担!版权属于原作者若无意侵犯媒体或个人知识产权,请联系我们,本站将在第一时间处理。