门罗币的底层协议 CryptoNote

CryptoNote 是一门技术,允许你创建完全匿名的虚拟货币。十多年来,我们的一些社区成员一直专注于密码学相关研究与开发工作。我们的目标是改进当前金融衍生产品,影响当代经济学范式。

目前我们地球上的资源分配及经济状态,由少数人控制。几个世纪以来一直如此,当人类遭受瘟疫、战争、流血牺牲时,其恶果更加显著。尽管我们希望通过教育、通过国际化克服危机,但我们仍然不能自主决定我们的生活。

然而,随着计算机科学、数学和加密学的发展,极有可能改变这一现状。加密货币的出现是新世界即将到来的第一个迹象。充分利用现有技术手段,公众可以制定新的、更加透明的协议,利用加密算法保证其进行。

“突破性创新,自强不息”是我们的理念。让贫困的人员获得财务资源,让被压迫者获得优质教育、优质水源,以及更美好的生活。 CryptoNote 不仅仅一个数字货币,它所携带的思想和理念,是恢复自由及和平繁荣的第一步。

环签名  - 发送方,不可追踪

普通数字签名(例如(EC)DSA,Schnorr等)验证过程涉及签名者的公钥。 这是一个必要条件,并不是充分条件,因为签名实际上证明作者拥有相应的密钥。

 

门罗币的底层协议 CryptoNote_第1张图片

普通签名

 

环签名 是一个更复杂的方案,实际上可能需要几个不同的公钥进行验证。 在签名的情况下,参与签名的是一群人,每个人都有自己的私钥和公钥。 环签名证明的是给定消息的签名者是该组的成员。 与普通数字签名方案的主要区别在于,签名者需要一个密钥,但验证者无法确定签名者的确切身份。 因此,如果您遇到Alice,Bob和Carol公钥的环签名,您只能确定其中必定有一个人是签名者,但您无法确定具体是谁。

 

门罗币的底层协议 CryptoNote_第2张图片

环签名

 

 

这个概念可以用于通过使用环签名中的其他成员的公钥将数字交易发送到网络,不可追踪,这将用于交易。 这种方法证明,交易的创建者有资格花费在交易中指定的金额,但他的身份与他在其签名中使用的公钥的用户无法区分。

 

 

门罗币的底层协议 CryptoNote_第3张图片交易不可追踪

 

需要指出的是,在其它交易里出现你的公钥,并不会影响你花钱。 您的公钥可能会出现在其他数十个环形签名中,但只是作为混淆因子(即使您已经使用相应的秘钥来签署自己的交易),起到混淆作用。此外,即使两个用户创建具有相同公钥集的环形签名,签名也是不同的(因为他们私钥不同)。

混淆地址 - 接收方,不可链接

通常,当您发布公开地址时,任何人都可以检查所有交易的收入(审查接收方),即使它们隐藏在环签名之后。 为了避免交易链接,您可以需要创建数百个密钥,并将其发送给您的付款人私人,但这剥夺了您使用单个公开地址的便利。

门罗币的底层协议 CryptoNote_第4张图片

交易,可链接

 

CryptoNote 通过为每个 p2p 付款地址自动创建从单个公钥派生的多个唯一的一次性密钥来解决这一困境。 解决方案在于对修改过的 Diffie-Hellman交换协议。 最初它允许双方产生一个从他们的公共密钥派生出来的公共秘密密钥。 在我们的版本中,发件人使用接收者的公共地址(A,B)和他自己的随机数(r)来计算支付的一次性密钥。

发送者只能生成密钥的公共部分,而只有接收者可以计算私人部分;因此接收方是在交易发生后可以获得资金的唯一接收方。 他只需要对每个交易执行单一公式检查,以确定它是否属于他。 这个过程涉及他的私钥,因此没有第三方可以执行这个检查,并发现由发送者生成的一次性密钥与接收者的唯一公共地址之间的链接。...

门罗币的底层协议 CryptoNote_第5张图片

交易,不可链接

 

CryptoNote 协议的一个重要部分是发送者使用随机数据。 即使发件人和接收方对于所有交易都保持不变,这也总是导致不同的一次性密钥(这就是为什么密钥称为“一次性”)。 此外,即使这两个人是不变的,所有的一次性钥匙也将是绝对独一无二的(每次交易,都会生成新的一次性地址,即使交易双方之前已经有过交易)。

环机密交易 - 交易金额的隐匿

为了提高门罗币的可扩展性,可替代性,财务保密性和隐私性,不断有令人惊叹的计划和技术创新被创造和实施出来。其中就包括为提高安全性和隐私而提出的方案,环机密交易工具(简称Ring CT)。 为了提高Ring CT的能力,现在研究人员正在引入一种被称为“防弹技术”(Bulletproofs)的新型高效零知识证明协议,将在下次门罗币硬分叉时生效。

 

> 备注:环机密交易在 CryptoNote 白皮书和官网均没有介绍,但已由门罗币实现并运用。

 

钥匙镜像 - 解决双花问题

完全匿名是否会产生双花问题,发送方将同一款项花费了多次?当然不是这样的,这与任何支付系统原则都不相容,问题可以解决如下:

I = xHp(P)

 

环签名实际上是一类具有不同特征的密码算法。CryptoNote 使用修改过的“可追溯环签”。事实上,我们将可追溯性转化为可链接性。该属性限制签名者的匿名性,如下所示:如果他使用相同的私钥创建了多个环形签名(外部公钥的集合是无关紧要的),这些签名将链接在一起,这表示双重花费尝试。

为了支持可链接性,CryptoNote 在签名时引入了一个由用户创建的特殊标记,我们称之为密钥镜像。秘钥的密码单向函数的值,在数学上它实际上是这个钥匙镜像。单向性意味着只给出密钥镜像是不可能逆推出私钥的。另一方面,在计算上不可能发现碰撞(两个不同的私钥,其具有相同的密钥镜像)。使用任何公式,除了指定的公式,将导致无法验证的签名。所有考虑的事情,密钥镜像是不可避免的,明确的,而且是私钥的匿名标记。

门罗币的底层协议 CryptoNote_第6张图片

生成钥匙镜像

 

所有用户保留所使用的钥匙镜像(与所有有效交易的历史数据对比,它需要的存储量并不大),并立即拒绝具有重复密钥映像的任何新的环签名。 它不会识别不正常行为的用户,但它不会阻止由于恶意的意图或软件错误导致的双重支出尝试。

 

 

门罗币的底层协议 CryptoNote_第7张图片

双花检查

 

抵抗区块链交易数据分析

有很多学术论文致力于分析比特币区块链。作者跟踪货币流动,识别货币的所有者,确定钱包余额等。进行此类分析的能力是由于地址之间的所有交易都是透明的:交易中的每个输入都是唯一的输出。此外,用户经常重复使用旧地址,多次接收和发送货币,这简化了分析师的工作。它会无意中发生:如果您有公共地址(例如捐款),那么您一定会在许多输入和交易中使用这个地址。

CryptoNote 旨在减轻与密钥重用和单输入到单输出跟踪相关的风险。付款的每个地址都是唯一的一次性密钥,从发送方和收件人的数据派生。它可能出现两次256位哈希冲突的概率。一旦您在输入中使用环形签名,就会产生不确定性:哪个输出已经花费了?

尝试绘制边缘上的输出和交易中的地址的图形,将会获得一个树:没有任何周期的图形(因为没有使用键/地址两次)。此外,有数十亿可能的图形,因为每个环形签名都会产生歧义。因此,您不能确定哪个可能的发件人的交易路径来到地址。根据环的大小,您可以从“一分之二”到“一千”中猜到。每次下一次交易都会增加熵,并为分析师带来额外的障碍。

 

门罗币的底层协议 CryptoNote_第8张图片

抵抗数据分析

 

标准的 CryptoNote 交易

标准的 CryptoNote 交易是由白皮书中涵盖的以下顺序生成的。

鲍勃决定花费一个输出,发送到一次性公钥。 他需要 Extra(1),TxOutNumber(2)和他的账户私钥(3)来生成他的一次性私钥(4)。

当向 Carol 发送交易时,Bob 会随机生成其 Extra 值(5)。 他使用 Extra(6),TxOutNumber(7)和 Carol 的账户公钥(8)获取她的输出公钥(9)。

在输入Bob中,将外部键(10)中的链接隐藏到他的输出。 为了防止双重花销,他还包含从他的一次性私钥(11)派生的密钥镜像。

最后,Bob使用他的一次性私钥(12),所有的公钥(13)和密钥映像(14)来签署交易。 他将结果的环签名附加到交易结束(15)。

 

门罗币的底层协议 CryptoNote_第9张图片

一个标准的交易流程

参数自我调整

分布式支付系统不能依赖于单个人的决策,即使这个人是核心开发者。代码中的硬编码和魔术数字阻止了系统的改进,因此应该被消除(或者至少被削减到最低限度)。每个关键限制(如最大块大小或最小费用金额)应根据系统以前的状态计算得出。因此,它总是自适应地自主地改变,允许网络自己开发。

CryptoNote 具有以下参数,可自动为每个新块调整:

1)挖矿难度。我们的算法的总体思路是总结节点在最后 720 个块中执行的所有工作,并将其除以它们花费的时间来完成它。工作的度量是每个块的相应难度值。时间计算如下:将所有 720 个时间戳(排除和所有离群值的 20%)排序。其余 600 个值的范围是对应于 80% 的相应块的时间。

2)区块大小。令MN为最后 N 个块大小的中值。那么接受块大小的“限制”是2 * MN。它避免了块状膨胀,但仍然允许极限随时间缓慢增长。交易大小不需要明确限制,它被块的大小限制。

> 备注:门罗币按两分钟出块计算,720 个块约等于两天时间会进行一次难度调整;区块大小调整,根据之前区块的中位数(约等于平均数)的两倍速进行调整,每个块都会重新计算。

 

平滑的发放曲线

所有数字货币总量的上限也是数字:

门罗币的底层协议 CryptoNote_第10张图片

这仅仅是基于实施限制的自然限制,而不是像“N 币对每个人都应该足够”这样的直觉。 为了使排放过程更流畅 CryptoNote 使用以下公式来获得积分奖励:

BaseReward = (MSupply − A) >> 18

其中 A 是先前产生的货币量。 它给了货币供应的可预测的增长,没有任何断点。

> 注意:门罗币(Monero)在挖出 1.8132 亿个 XMR 之后,每个区块仍然奖励 0.6 个 XMR,所以也可以说它的发行量是无限的。

 

拒绝矿霸,更加平等的挖矿

工作量证明机制实际上是一个投票制度。用户投票选择正确的交易顺序,以实现协议中的新功能和诚实的货币供应分配。因此,在表决过程中,所有参与者都有相同的投票权。 CryptoNote 使平等的平均工作定价功能完美适用于普通PC。它采用内置的 CPU 指令,这些指令在专用设备或具有低延迟的快速内存片上设备上实现非常困难且太昂贵。

我们提出了一个新的内存限制算法,用于工作定价功能。它依赖于随机访问缓慢的内存并强调延迟依赖性。与 scrypt 相反,每个新的块(长度为 64 个字节)取决于所有先前的块。因此,假设的“记忆保护”应该以指数级增加他的计算速度。

我们的算法需要大约 2 Mb 每个实例,原因如下:

1.它适合现代处理器的 L3 缓存(每核心),这几年应该成为主流;

2. 一兆字节的内部存储器对现代 ASIC 管道来说几乎是不可接受的尺寸;

3. GPU 可能会运行数百个并发实例,但是其他方面却受到限制:GDDR5 内存比 CPU L3 缓存慢,并且其带宽显著,而不是随机访问速度。

4. 暂存器的显著扩展将需要迭代次数的增加,这又意味着总体时间增加。在无信任的 p2p 网络中的“重”呼叫可能会导致严重的漏洞,因为节点有义务检查每个新的块的工作证明。如果一个节点在每个哈希评估中花费相当多的时间,那么可以通过大量具有任意工作数据(随机数值)的假对象来轻易地 DDoS。

符合我们命题的工作证明算法之一是 CryptoNight,由 Bytecoin 开发人员与我们的团队合作创建。它旨在使 CPU 和 GPU 挖掘大致相同的效率,并限制 ASIC 矿机挖矿。

你可能感兴趣的:(区块链,区块链隐私保护)