CryptoNote v2.0
本页面呈现的是 Nicolas van Saberhagen 于 2013 年发布的 CryptoNote v2.0 白皮书,该白皮书描述了 Monero 所基于的密码学基础。这并非 Monero 专属的白皮书——Monero 于 2014 年作为 CryptoNote 参考实现(Bytecoin)的分叉上线,此后已在原始协议基础上发展演进了许多。
介绍
“Bitcoin”[1]已经成功实现了p2p电子现金的概念。两者都 专业人士和公众已经开始欣赏这种便捷的组合 公共交易和 proof-of-work 作为信任模型。如今,电子现金的用户群 正在稳步增长;客户被低廉的费用和提供的匿名性所吸引 电子现金和商家对其预测和分散的排放进行评估。 Bitcoin 有 有效证明电子现金可以像纸币一样简单、像纸币一样方便 信用卡。 不幸的是,Bitcoin 有几个缺陷。例如,系统的分布式 本质上是不灵活的,在几乎所有网络用户更新其客户端之前,都会阻止新功能的实现。一些无法快速修复的关键缺陷阻碍了 Bitcoin 广泛传播。在这种不灵活的模式中,推出新项目会更有效率 而不是永久修复原来的项目。 在本文中,我们研究了Bitcoin的主要缺陷并提出了解决方案。我们相信 考虑到我们提出的解决方案的系统将带来良性竞争 不同的电子现金系统之间。我们还提出了我们自己的电子现金“CryptoNote”, 这个名字强调了电子现金的下一个突破。
Giới thiệu
“Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử.
Bitcoin 缺点和可能的解决方案
2 Bitcoin 缺点和一些可能的解决方案 2.1 交易可追溯 隐私和匿名是电子现金最重要的方面。点对点支付 寻求隐藏在第三方的视野之外,与传统的相比有明显的区别 银行业务。特别是,T. Okamoto 和 K. Ohta 描述了理想电子现金的六个标准, 其中包括“隐私:用户及其购买之间的关系必须无法追踪 任何人”[30]。从他们的描述中,我们得出了两个完全匿名的属性 电子现金模型必须满足冈本概述的要求 和太田: 不可追踪性:对于每笔传入交易,所有可能的发件人都是等概率的。 不可链接性:对于任何两个传出交易,无法证明它们被发送到 同一个人。 不幸的是,Bitcoin 不满足不可追踪性要求。由于网络参与者之间发生的所有交易都是公开的,因此任何交易都可以 1 加密笔记 v 2.0 尼古拉斯 \(\cdot\) 范 \(\cdot\) 萨伯哈根 2013 年 10 月 17 日 1 简介 “Bitcoin”[1]已经成功实现了p2p电子现金的概念。两者都 专业人士和公众已经开始欣赏这种便捷的组合 公共交易和 proof-of-work 作为信任模型。如今,电子现金的用户群 正在稳步增长;客户被低廉的费用和提供的匿名性所吸引 电子现金和商家对其预测和分散的排放进行评估。 Bitcoin 有 有效证明电子现金可以像纸币一样简单、像纸币一样方便 信用卡。 不幸的是,Bitcoin 有几个缺陷。例如,系统的分布式 本质上是不灵活的,在几乎所有网络用户更新其客户端之前,都会阻止新功能的实现。一些无法快速修复的关键缺陷阻碍了 Bitcoin 广泛传播。在这种不灵活的模式中,推出新项目会更有效率 而不是永久修复原来的项目。 在本文中,我们研究并提出了针对 Bitcoin 的主要缺陷的解决方案。我们相信 考虑到我们提出的解决方案的系统将带来良性竞争 不同的电子现金系统之间。我们还提出了我们自己的电子现金“CryptoNote”, 这个名字强调了电子现金的下一个突破。 2 Bitcoin 缺点和一些可能的解决方案 2.1 交易可追溯 隐私和匿名是电子现金最重要的方面。点对点支付 寻求隐藏在第三方的视野之外,与传统的相比有明显的区别 银行业务。特别是,T. Okamoto 和 K. Ohta 描述了理想电子现金的六个标准, 其中包括“隐私:用户及其购买之间的关系必须无法追踪 任何人”[30]。从他们的描述中,我们得出了两个完全匿名的属性 电子现金模型必须满足冈本概述的要求 和太田: 不可追踪性:对于每笔传入交易,所有可能的发件人都是等概率的。 不可链接性:对于任何两个传出交易,无法证明它们被发送到 同一个人。 不幸的是,Bitcoin 不满足不可追踪性要求。由于网络参与者之间发生的所有交易都是公开的,因此任何交易都可以 1 3 Bitcoin 绝对无法实现“不可追踪性”。当我向您发送 BTC 时,发送该钱包的钱包 不可撤销地印在 blockchain 上。毫无疑问谁发送了这些资金, 因为只有知道私钥的人才能发送它们。明确追踪到独特的来源和最终接收者。即使两个参与者交换 如果以间接方式筹集资金,适当设计的寻路方法将揭示资金的来源和 最终收件人。 还怀疑Bitcoin不满足第二个性质。 一些研究人员 指出 ([33, 35, 29, 31]) 仔细的 blockchain 分析可能会揭示之间的联系 Bitcoin 网络的用户及其交易。虽然有很多方法 争议[25],疑似可从中提取大量隐藏个人信息 公共数据库。 Bitcoin 未能满足上述两个属性使我们得出结论: 不是匿名的而是伪匿名的电子现金系统。用户发展很快 解决方案来规避这个缺点。两个直接解决方案是“洗钱服务”[2] 和 分布式方法的发展 [3, 4]。两种解决方案都基于混合的想法 一些公共交易并通过某个中间地址发送它们;反过来 存在需要可信第三方的缺点。 最近,I. Miers等人提出了一个更有创意的方案。 [28]:“零币”。零币 利用加密单向累加器和零知识证明,允许用户 将比特币“转换”为零币并使用匿名所有权证明而不是使用它们 基于显式公钥的数字签名。然而,这样的知识证明有一个常数 但大小不方便 - 大约 30kb(基于今天的 Bitcoin 限制),这使得该提案 不切实际的。作者承认该协议不太可能被大多数人接受 Bitcoin 用户 [5]。 2.2 proof-of-work 函数 Bitcoin 的创建者中本聪将多数决策算法描述为“oneCPU-one-vote”,并为他的 proof-of-work 使用了受 CPU 限制的定价函数(双 SHA-256) 计划。由于用户对单笔历史交易订单[1]进行投票,合理性和 这个过程的一致性是整个系统的关键条件。 该模型的安全性有两个缺点。首先,它需要51%的网络资源 挖矿权由诚实用户控制。其次,系统的进展(错误修复, 安全修复等...)需要绝大多数用户支持并同意 更改(当用户更新钱包软件时会发生这种情况)[6]。最后同样的投票 该机制还用于关于某些功能 [7] 的实现的集体民意调查。 这使我们能够推测 proof-of-work 必须满足的属性 定价功能。 此类功能不得使网络参与者拥有重大的 相对于其他参与者的优势;它需要普通硬件和高端硬件之间的平衡 定制设备的成本。从最近的示例 [8] 中,我们可以看到使用了 SHA-256 函数 在 Bitcoin 架构中不具备此属性,因为采矿变得更加高效 GPU 和 ASIC 设备与高端 CPU 相比。 因此,Bitcoin为投票权之间的巨大差距创造了有利条件 参与者,因为它违反了“单 CPU 一票”原则,因为 GPU 和 ASIC 所有者拥有 与 CPU 所有者相比,投票权要大得多。这是一个经典的例子 帕累托原则,即系统中 20% 的参与者控制超过 80% 的选票。 有人可能会争辩说,这种不平等与网络安全无关,因为它不是 少数参与者控制着大多数选票,但这些参与者的诚实性 重要的参与者。然而,这样的论点是有一定缺陷的,因为它实际上是 廉价专用硬件出现的可能性,而不是参与者的诚实度 构成威胁。为了证明这一点,让我们看下面的例子。假设有一个恶意 个人通过廉价的方式创建自己的矿场,从而获得显着的挖矿能力 2 明确追踪到独特的来源和最终接收者。即使两个参与者交换 如果以间接方式筹集资金,适当设计的寻路方法将揭示资金的来源和 最终收件人。 还怀疑Bitcoin不满足第二个性质。 一些研究人员 指出 ([33, 35, 29, 31]) 仔细的 blockchain 分析可能会揭示之间的联系 Bitcoin 网络的用户及其交易。虽然有很多方法 d疑似[25],疑似可提取大量隐藏个人信息 公共数据库。 Bitcoin 未能满足上述两个属性使我们得出结论: 不是匿名的而是伪匿名的电子现金系统。用户发展很快 解决方案来规避这个缺点。两个直接解决方案是“洗钱服务”[2] 和 分布式方法的发展 [3, 4]。两种解决方案都基于混合的想法 一些公共交易并通过某个中间地址发送它们;反过来 存在需要可信第三方的缺点。 最近,I. Miers等人提出了一个更有创意的方案。 [28]:“零币”。零币 利用加密单向累加器和零知识证明,允许用户 将比特币“转换”为零币并使用匿名所有权证明而不是使用它们 基于显式公钥的数字签名。然而,这样的知识证明有一个常数 但大小不方便 - 大约 30kb(基于今天的 Bitcoin 限制),这使得该提案 不切实际的。作者承认该协议不太可能被大多数人接受 Bitcoin 用户 [5]。 2.2 proof-of-work 函数 Bitcoin 的创建者中本聪将多数决策算法描述为“oneCPU-one-vote”,并为他的 proof-of-work 使用了受 CPU 限制的定价函数(双 SHA-256) 计划。由于用户对单笔历史交易订单[1]进行投票,合理性和 这个过程的一致性是整个系统的关键条件。 该模型的安全性有两个缺点。首先,它需要51%的网络资源 挖矿权由诚实用户控制。其次,系统的进展(错误修复, 安全修复等...)需要绝大多数用户支持并同意 更改(当用户更新钱包软件时会发生这种情况)[6]。最后同样的投票 该机制还用于关于某些功能 [7] 的实现的集体民意调查。 这允许我们推测 proof-of-work 必须满足的属性 定价功能。 此类功能不得使网络参与者拥有重大的 相对于其他参与者的优势;它需要普通硬件和高端硬件之间的平衡 定制设备的成本。从最近的示例 [8] 中,我们可以看到使用了 SHA-256 函数 在 Bitcoin 架构中不具备此属性,因为采矿变得更加高效 GPU 和 ASIC 设备与高端 CPU 相比。 因此,Bitcoin为投票权之间的巨大差距创造了有利条件 参与者,因为它违反了“单 CPU 一票”原则,因为 GPU 和 ASIC 所有者拥有 与 CPU 所有者相比,投票权要大得多。这是一个经典的例子 帕累托原则,即系统中 20% 的参与者控制超过 80% 的选票。 有人可能会争辩说,这种不平等与网络安全无关,因为它不是 少数参与者控制着大多数选票,但这些参与者的诚实性 重要的参与者。然而,这样的论点是有一定缺陷的,因为它实际上是 廉价专用硬件出现的可能性,而不是参与者的诚实度 构成威胁。为了证明这一点,让我们看下面的例子。假设有一个恶意 个人通过廉价的方式创建自己的矿场,从而获得显着的挖矿能力 2 4 据推测,如果每个用户总是通过生成新地址来帮助自己匿名 对于每笔收到的付款(这是荒谬的,但从技术上讲是“正确”的方法), 如果每个用户都坚持不发送资金来帮助其他人匿名 两次发送到同一个 BTC 地址,那么 Bitcoin 仍然只能偶尔通过 不可链接性测试。 为什么?消费者数据始终可以用来了解数量惊人的人们。 例如,参见 http://www.applieddatalabs.com/content/target-knows-it-shows 现在,想象一下这是 20 年后的未来,并进一步想象塔吉特不仅知道 关于您在 Target 的购买习惯,但他们一直在挖掘 blockchain 的所有内容 您过去使用 Coinbase 钱包进行的个人购买 十二年。 他们会说“嘿伙计,你今晚可能想买点止咳药,但你不会 明天感觉很好。” 如果正确利用多方排序,情况可能并非如此。例如,参见这个博客文章:http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ 我并不完全相信这一点的数学原理,但是......一次一篇论文,对吧? 需要引用。尽管 Zerocoin 协议(独立)可能还不够,但 Zerocash 协议似乎已经实现了 1kb 大小的事务。该项目由以下机构支持 当然,美国和以色列军队,所以谁知道它的坚固性。另一方面 另一方面,没有人比军方更希望能够在没有监督的情况下使用资金。 http://zerocash-project.org/ 我不相信......例如,参见 http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf 引用 Cryptonote 开发者 Maurice Planck(大概是化名)的话 论坛: “零币,零现金。 我必须承认,这是最先进的技术。 是的,报价 以上是对上一版本协议的分析。据我所知,这不是 288,但是384字节,但无论如何这是个好消息。 他们使用了一种名为 SNARK 的全新技术,该技术有一定的缺点:例如, 创建签名所需的公共参数的大型初始数据库(超过 1 GB)以及 创建交易所需的大量时间(超过一分钟)。最后,他们使用的是 年轻的加密货币,我提到这是一个有争议的想法:https://forum.cryptonote.org/viewtopic.php?f= ” - Maurice P. 2014 年 4 月 3 日星期四晚上 7:56 在CPU中执行的功能,不适合GPU、FPGA或ASIC 计算。 proof-of-work 中使用的“难题”被称为定价函数、成本函数或 拼图功能。
明确追踪到独特的来源和最终接收者。即使两个参与者交换 如果以间接方式筹集资金,适当设计的寻路方法将揭示资金的来源和 最终收件人。 还怀疑Bitcoin不满足第二个性质。 一些研究人员 指出 ([33, 35, 29, 31]) 仔细的 blockchain 分析可能会揭示之间的联系 Bitcoin 网络的用户及其交易。虽然有很多方法 争议[25],疑似可从中提取大量隐藏个人信息 公共数据库。 Bitcoin 未能满足上述两个属性使我们得出结论: 不是匿名的而是伪匿名的电子现金系统。用户发展很快 解决方案来规避这个缺点。两个直接解决方案是“洗钱服务”[2] 和 分布式方法的发展 [3, 4]。两种解决方案都基于混合的想法 一些公共交易并通过某个中间地址发送它们;反过来 存在需要可信第三方的缺点。 最近,I. Miers等人提出了一个更有创意的方案。 [28]:“零币”。零币 利用加密单向累加器和零知识证明,允许用户 将比特币“转换”为零币并使用匿名所有权证明而不是使用它们 基于显式公钥的数字签名。然而,这样的知识证明有一个常数 但大小不方便 - 大约 30kb(基于今天的 Bitcoin 限制),这使得该提案 不切实际的。作者承认该协议不太可能被大多数人接受 Bitcoin 用户 [5]。 2.2 proof-of-work 函数 Bitcoin 创建者中本聪将多数决策算法描述为“oneCPU-one-vote”,并为他的 proof-of-work 使用了 CPU 限制的定价函数(双 SHA-256) 计划。由于用户对单笔历史交易订单[1]进行投票,合理性和 这个过程的一致性是整个系统的关键条件。 该模型的安全性有两个缺点。首先,它需要51%的网络资源 挖矿权由诚实用户控制。其次,系统的进展(错误修复, 安全修复等...)需要绝大多数用户支持并同意 更改(当用户更新钱包软件时会发生这种情况)[6]。最后同样的投票 该机制还用于关于某些功能 [7] 的实现的集体民意调查。 这使我们能够推测 proof-of-work 必须满足的属性 定价功能。 此类功能不得使网络参与者拥有重大的 相对于其他参与者的优势;它需要普通硬件和高端硬件之间的平衡 定制设备的成本。从最近的示例 [8] 中,我们可以看到使用了 SHA-256 函数 在 Bitcoin 架构中不具备此属性,因为采矿变得更加高效 GPU 和 ASIC 设备与高端 CPU 相比。 因此,Bitcoin为投票权之间的巨大差距创造了有利条件 参与者,因为它违反了“单 CPU 一票”原则,因为 GPU 和 ASIC 所有者拥有 与 CPU 所有者相比,投票权要大得多。这是一个经典的例子 帕累托原则,即系统中 20% 的参与者控制超过 80% 的选票。 有人可能会争辩说,这种不平等与网络安全无关,因为它不是 少数参与者控制着大多数选票,但这些参与者的诚实性 重要的参与者。然而,这样的论点是有一定缺陷的,因为它实际上是 廉价专用硬件出现的可能性,而不是参与者的诚实度 构成威胁。为了证明这一点,让我们看下面的例子。假设有一个恶意 个人通过廉价的方式创建自己的矿场,从而获得显着的挖矿能力 2 明确追踪到独特的来源和最终接收者。即使两个参与者交换 如果以间接方式筹集资金,适当设计的寻路方法将揭示资金的来源和 最终收件人。 还怀疑Bitcoin不满足第二个性质。 一些研究人员 指出 ([33, 35, 29, 31]) 仔细的 blockchain 分析可能会揭示之间的联系 Bitcoin 网络的用户及其交易。虽然有很多方法 d疑似[25],疑似可提取大量隐藏个人信息 公共数据库。 Bitcoin 未能满足上述两个属性使我们得出结论: 不是匿名的而是伪匿名的电子现金系统。用户发展很快 解决方案来规避这个缺点。两个直接解决方案是“洗钱服务”[2] 和 分布式方法的发展 [3, 4]。两种解决方案都基于混合的想法 一些公共交易并通过某个中间地址发送它们;反过来 存在需要可信第三方的缺点。 最近,I. Miers等人提出了一个更有创意的方案。 [28]:“零币”。零币 利用加密单向累加器和零知识证明,允许用户 将比特币“转换”为零币并使用匿名所有权证明而不是使用它们 基于显式公钥的数字签名。然而,这样的知识证明有一个常数 但大小不便 - 大约 30kb(基于今天的 Bitcoin 限制),这使得该提案 不切实际的。作者承认该协议不太可能被大多数人接受 Bitcoin 用户 [5]。 2.2 proof-of-work 函数 Bitcoin 创建者中本聪将多数决策算法描述为“oneCPU-one-vote”,并为他的 proof-of-work 使用了 CPU 限制的定价函数(双 SHA-256) 计划。由于用户对单笔历史交易订单[1]进行投票,合理性和 这个过程的一致性是整个系统的关键条件。 该模型的安全性有两个缺点。首先,它需要51%的网络资源 挖矿权由诚实用户控制。其次,系统的进展(错误修复, 安全修复等...)需要绝大多数用户支持并同意 更改(当用户更新钱包软件时会发生这种情况)[6]。最后同样的投票 该机制还用于关于某些功能 [7] 的实现的集体民意调查。 这允许我们推测 proof-of-work 必须满足的属性 定价功能。 此类功能不得使网络参与者拥有重大的 相对于其他参与者的优势;它需要普通硬件和高端硬件之间的平衡 定制设备的成本。从最近的示例 [8] 中,我们可以看到使用了 SHA-256 函数 在 Bitcoin 架构中不具备此属性,因为采矿变得更加高效 GPU 和 ASIC 设备与高端 CPU 相比。 因此,Bitcoin为投票权之间的巨大差距创造了有利条件 参与者,因为它违反了“单 CPU 一票”原则,因为 GPU 和 ASIC 所有者拥有 与 CPU 所有者相比,投票权要大得多。这是一个经典的例子 帕累托原则,即系统中 20% 的参与者控制超过 80% 的选票。 有人可能会争辩说,这种不平等与网络安全无关,因为它不是 少数参与者控制着大多数选票,但这些参与者的诚实性 重要的参与者。然而,这样的论点是有一定缺陷的,因为它实际上是 廉价专用硬件出现的可能性,而不是参与者的诚实度 构成威胁。为了证明这一点,让我们看下面的例子。假设有一个恶意 个人通过廉价的方式创建自己的矿场,从而获得显着的挖矿能力 2 第 2 页的评论
Bitcoin Hạn chế và giải pháp khả thi
2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 CryptoNote v 2.0 Nicolas van Saberhagen Ngày 17 tháng 10 năm 2013 1 Giới thiệu “Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử. 2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 3 Bitcoin chắc chắn không đạt được "không thể theo dõi". Khi tôi gửi BTC cho bạn, ví tiền được gửi từ đó được đóng dấu không thể hủy ngang trên blockchain. Không có câu hỏi nào về việc ai đã gửi số tiền đó, bởi vì chỉ người biết khóa riêng mới có thể gửi chúng.được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 4 Có lẽ, nếu mỗi người dùng giúp họ ẩn danh bằng cách luôn tạo một địa chỉ mới đối với MỌI khoản thanh toán đã nhận được (điều này thật vô lý nhưng về mặt kỹ thuật là cách "chính xác" để thực hiện), và nếu mọi người dùng giúp đỡ những người khác ẩn danh bằng cách nhấn mạnh rằng họ không bao giờ gửi tiền đến cùng một địa chỉ BTC hai lần, thì Bitcoin vẫn sẽ chỉ tình cờ vượt qua kiểm tra khả năng không liên kết. Tại sao? Dữ liệu người tiêu dùng có thể được sử dụng để tìm hiểu một lượng thông tin đáng kinh ngạc về con người mọi lúc. Hãy xem, ví dụ http://www.applieddatalabs.com/content/target-knows-it-shows Bây giờ, hãy tưởng tượng đây là 20 năm sau và hãy tưởng tượng thêm rằng Target không chỉ biết về thói quen mua hàng của bạn tại Target nhưng họ đã khai thác blockchain cho TẤT CẢ MUA HÀNG CÁ NHÂN CỦA BẠN BẰNG VÍ COINBASE CỦA BẠN TRONG TRƯỚC ĐÂY MƯỜI HAI NĂM. Họ sẽ nói "Này anh bạn, tối nay anh có muốn mua thuốc ho không, anh sẽ không mua đâu." ngày mai sẽ khỏe." Điều này có thể không xảy ra nếu việc sắp xếp theo nhiều bên được khai thác đúng cách. Hãy xem, ví dụ, điều nàybài đăng trên blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Tôi không hoàn toàn bị thuyết phục về phép toán trên đó, nhưng ... từng bài một, phải không? Cần trích dẫn. Trong khi giao thức Zerocoin (độc lập) có thể không hiệu quả thì Zerocash giao thức dường như đã thực hiện một giao dịch có kích thước 1kb. Dự án đó được hỗ trợ bởi tất nhiên là quân đội Hoa Kỳ và Israel, vậy nên ai biết được sức mạnh của nó. Mặt khác Mặt khác, không ai muốn có thể chi tiêu mà không có sự giám sát hơn quân đội. http://zerocash-project.org/ Tôi không bị thuyết phục... xem, ví dụ: http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Trích dẫn lời của nhà phát triển tiền điện tử Maurice Planck (có lẽ là một bút danh) từ tiền điện tử diễn đàn: "Zerocoin, Zerocash. Tôi phải thừa nhận đây là công nghệ tiên tiến nhất. Vâng, trích dẫn ở trên là từ phân tích phiên bản trước của giao thức. Theo hiểu biết của tôi, nó không phải 288, nhưng 384 byte, nhưng dù sao đây cũng là tin tốt. Họ đã sử dụng một kỹ thuật hoàn toàn mới có tên là SNARK, kỹ thuật này có một số nhược điểm nhất định: ví dụ: cơ sở dữ liệu ban đầu lớn về các tham số công khai cần thiết để tạo chữ ký (hơn 1 GB) và thời gian đáng kể cần thiết để tạo một giao dịch (hơn một phút). Cuối cùng, họ đang sử dụng một tiền điện tử non trẻ, mà tôi đã đề cập là một ý tưởng đáng tranh cãi: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Thu 03/04/2014 7:56 chiều Một chức năng được thực hiện trong CPU và không phù hợp với GPU, FPGA hoặc ASIC tính toán. "Câu đố" được sử dụng trong proof-of-work được gọi là hàm định giá, hàm chi phí hoặc chức năng câu đố.
được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng có thể trích xuất nhiều thông tin cá nhân ẩn từ cơ sở dữ liệu công cộng. Việc Bitcoin không thỏa mãn hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin của ngày hôm nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định theo đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 Bình luận ở trang 2
CryptoNote 技术
现在我们已经涵盖了 Bitcoin 技术的局限性,我们将重点关注 介绍 CryptoNote 的功能。
Công nghệ CryptoNote
Bây giờ chúng ta đã đề cập đến những hạn chế của công nghệ Bitcoin, chúng ta sẽ tập trung vào trình bày các tính năng của CryptoNote.
交易无法追踪
在本节中,我们提出了一种完全匿名交易的方案,同时满足不可追溯性
和不可链接条件。我们解决方案的一个重要特点是它的自主性:发送者
不需要与其他用户或受信任的第三方合作进行交易;
因此,每个参与者都独立地产生掩护流量。
4.1
文献综述
我们的方案依赖于称为群签名的加密原语。首先提出者
D. Chaum 和 E. van Heyst [19],它允许用户代表组签署他的消息。
签署消息后,用户提供(出于验证目的)而不是他自己的单一公共信息
1这就是所谓的“软限制”——创建新块的参考客户端限制。硬最大值
可能的块大小为 1 MB
4
如有必要,它们会导致主要缺点。不幸的是,很难预测何时
常量可能需要改变,替换它们可能会导致可怕的后果。
硬编码限制更改导致灾难性后果的一个很好的例子是块
大小限制设置为 250kb1。这个限制足以容纳大约 10000 个标准交易。在
2013 年初,这一限制几乎已达到,并达成协议增加
限制。该更改在钱包版本 0.8 中实施,并以 24 块链分裂结束
以及成功的双花攻击[9]。虽然该错误不在 Bitcoin 协议中,但是
相反,在数据库引擎中,如果有的话,可以通过简单的压力测试轻松捕获它
没有人为引入的块大小限制。
常量也充当集中点的一种形式。
尽管具有点对点的性质
Bitcoin,绝大多数节点使用官方开发的参考客户端[10]
一小群人。该小组决定对协议进行更改
大多数人都会接受这些变化,无论它们的“正确性”如何。一些决定导致
激烈讨论甚至呼吁抵制[11],这表明社区和
开发人员可能在一些重要问题上存在分歧。因此,制定一项协议似乎是合乎逻辑的
使用用户可配置和自我调整的变量作为避免这些问题的可能方法。
2.5
庞大的脚本
Bitcoin 中的脚本系统是一个繁重且复杂的功能。它可能允许人们创建
复杂的交易[12],但由于安全问题和原因,其某些功能被禁用
有些甚至从未使用过[13]。脚本(包括发送者和接收者部分)
Bitcoin 中最受欢迎的交易如下所示:
key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 只提供一次性的:公钥可能出现在很多国外的验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 仅提供一次性的:公钥可能出现在许多国外验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择e 使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 8 环签名的工作原理如下:亚历克斯想要向维基解密泄露有关她雇主的信息。公司的每位员工都有一个私钥/公钥对(Ri、Ui)。她作曲 她的签名,输入设置为她的消息,m,她的私钥,Ri 和每个人的 公钥,(Ui;i=1...n)。任何人(不知道任何私钥)都可以轻松验证 某些对(Rj,Uj)必须已用于构建签名......工作的人 对于亚历克斯的雇主来说……但这本质上是一种随机猜测,以确定它可能是哪一个。 http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 请注意,此处描述的可链接环签名与“不可链接”相反 如上所述。这里我们截取两条消息,可以判断是否相同 一方发送了他们,尽管我们仍然无法确定该方是谁。 的 用于构造 Cryptonote 的“不可链接”的定义意味着我们无法确定是否 同一方正在接收它们。 因此,我们这里真正发生的是四件事。 系统可以是可链接的或 不可链接,取决于是否可以确定发送者是否 两条消息是相同的(无论这是否需要撤销匿名)。 并且 系统可以是不可链接的或不可不可链接的,具体取决于是否可以 判断两条消息的接收者是否相同(无论是否相同) 这需要撤销匿名)。 请不要因为这个可怕的术语而责怪我。 图论学家可能应该是 很高兴。你们中的一些人可能更喜欢“接收者可链接”而不是“发送者可链接”。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 当我读到这篇文章时,这似乎是一个愚蠢的功能。然后我读到这可能是一个功能 电子投票,这似乎是有道理的。从这个角度来看,有点酷。但我是 不完全确定是否有意实施可追踪的环签名。 http://search.ieice.org/bin/summary.php?id=e95-a_1_151
key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 仅提供一次性的:公钥可能出现在许多国外验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 仅提供一次性的:公钥可能出现在许多国外验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择e 使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 9 天哪,本白皮书的作者肯定可以用更好的措辞!假设一个 员工持股的公司想要就是否收购某些新产品进行投票 资产,Alex 和 Brenda 都是雇员。公司为每位员工提供 诸如“我对提案 A 投赞成票!”之类的消息其中存在元信息“问题”[PROP A] 如果他们支持该提议,则要求他们使用可追踪的环签名进行签名。 使用传统的环签名,不诚实的员工可以多次签署消息, 大概有不同的 nonce,以便可以随意投票。另一方面 另一方面,在可追踪的环签名方案中,Alex 将去投票,她的私钥将具有 已用于问题[PROP A]。如果亚历克斯试图签署类似“我,布伦达,同意 提议A!” “陷害”布伦达和双重投票,这条新消息也会有问题 [提案A]。由于 Alex 的私钥已经触发了 [PROP A] 问题,Alex 的身份 将立即被揭露为欺诈行为。 面对现实吧,这真是太酷了!密码学强制投票平等。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 这篇论文很有趣,本质上创建了一个临时环签名,但没有任何 其他参与者的同意。签名的结构可能不同;我没挖过 很深,我还没有看到它是否安全。 https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai 临时组签名是: 环签名,即没有组的群签名 经理,没有集中化,但允许特设小组中的成员可以证明地声称 它已(未)代表该团体发布匿名签名。 http://link.springer.com/chapter/10.1007/11908739_9 根据我的理解,这不太正确。我的理解可能会改变 我对这个项目有了更深入的了解。但根据我的理解,层次结构是这样的。 群组签名:群组管理员控制可追溯性以及添加或删除成员的能力 从成为签名者。 Ring sigs:没有组管理员的任意组形成。没有匿名撤销。 没有办法通过特定的签名来否定自己。带有可追踪和可链接的环 签名、匿名在某种程度上是可扩展的。 Ad-hoc 群签名:类似于环签名,但成员可以证明他们没有创建 一个特定的签名。当小组中的任何人都可以生成签名时,这一点很重要。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 藤崎和铃木的算法后来被作者调整以提供一次性性。所以 我们将同时分析 Fujisaki 和 Suzuki 的算法以及新算法 而不是在这里讨论它。
key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 仅提供一次性的:公钥可能出现在许多国外验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 key,而是他所在组的所有用户的密钥。验证者确信真正的签名者是 该组的成员,但不能唯一地识别签名者。 最初的协议需要一个可信的第三方(称为组经理),而他是 唯一可以追踪签名者的人。引入了称为环签名的下一个版本 作者:Rivest 等人。在 [34] 中,是一个没有组经理和匿名的自治计划 撤销。后来出现了该方案的各种修改:可链接环签名 [26, 27, 17]允许确定两个签名是否由同一组成员产生,可追踪 环签名 [24, 23] 通过提供追踪签名者的可能性来限制过度匿名 两条消息涉及相同的元信息(或 [24] 中的“标签”)。 类似的密码结构也称为临时组签名 [16, 38]。它 强调任意的组形成,而组/环签名方案则意味着 固定的成员集。 在很大程度上,我们的解决方案基于 E. Fujisaki 的作品“可追踪环签名” 和铃木 [24]。为了区分原始算法和我们的修改算法,我们将 将后者称为一次性环签名,强调用户仅产生一个有效的能力 在他的私钥下签名。我们弱化了可追溯性,保留了可链接性 仅提供一次性的:公钥可能出现在许多国外验证集中,并且 私钥可用于生成唯一的匿名签名。如果出现双重支出 尝试将这两个签名链接在一起,但不必透露签名者 为了我们的目的。 4.2 定义 4.2.1 椭圆曲线参数 作为我们的基本签名算法,我们选择e 使用快速方案 EdDSA,该方案是开发和 由 D.J. 实施伯恩斯坦等人。 [18]。与 Bitcoin 的 ECDSA 一样,它基于椭圆曲线 离散对数问题,因此我们的方案将来也可以应用于 Bitcoin 。 常用参数有: q:素数; q = 2255 -19; d:Fq的一个元素; d = −121665/121666; E:椭圆曲线方程; −x2 + y2 = 1 + dx2y2; G:基点; G = (x,−4/5); l:基点的素数阶; l = 2252 + 27742317777372353535851937790883648493; Hs:加密 hash 函数 \(\{0, 1\}^* \to \mathbb{F}_q\); Hp:确定性 hash 函数 \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\)。 4.2.2 术语 增强隐私需要新的术语,该术语不应与 Bitcoin 实体混淆。 private ec-key 是一个标准的椭圆曲线私钥:一个数字 \(a \in [1, l - 1]\); public ec-key 是标准椭圆曲线公钥:点A = aG; 一次性密钥对是一对私有和公共 ec 密钥; 5 10 “可链接环签名”意义上的可链接性意味着我们可以判断两个传出交易是否来自同一来源,而无需透露来源是谁。作者削弱了 可链接性,以便 (a) 保护隐私,但仍然 (b) 使用私钥发现任何交易 第二次为无效。 好的,这是一个事件顺序问题。 考虑以下场景。 我的挖矿 计算机将拥有当前的 blockchain,它将拥有自己调用的交易块 合法,它将在 proof-of-work 拼图中的该块上工作,并且它将有一个 要添加到下一个块的待处理交易列表。它还将发送任何新的 交易进入该待处理交易池。 如果我不解决下一个块,但是 其他人这样做了,我得到了 blockchain 的更新副本。我正在研究的区块和 我的待处理交易列表可能包含一些现已合并的交易 进入blockchain。 解开我的待处理块,将其与我的待处理交易列表结合起来,然后调用它 我的待处理交易池。删除现在正式位于 blockchain 中的所有内容。 现在,我该怎么办?我应该首先检查并“消除所有双花”吗?另一方面 另一方面,我是否应该搜索列表并确保每个私钥尚未被 使用过,如果它已经在我的列表中使用过,那么我首先收到第一个副本,因此 任何进一步的复制都是非法的。因此,我继续简单地删除第一个之后的所有实例 同一个私钥。 代数几何从来都不是我的强项。 http://en.wikipedia.org/wiki/EdDSA 这速度,太厉害了。这是代数几何的胜利。并不是说我什么都知道 关于那个。 不管有没有问题,离散日志变得非常快。量子计算机吃掉它们 早餐。 http://link.springer.com/article/10.1007/s13389-012-0027-1 这成为一个非常重要的数字,但没有解释或引用它是如何产生的 被选中了。简单地选择一个已知的大素数就可以了,但是如果有已知的 关于这个大质数的事实可能会影响我们的选择。加密货币的不同变体 可以选择不同的值 嗯,但是本文没有讨论如何做到这一点 选择将影响我们对第 5 页列出的其他全局参数的选择。 本文需要一个关于选择参数值的章节。
私有用户密钥是一对 (a, b) 两个不同的私有 ec-key; 跟踪密钥是一对 (a, B) 私有和公共 ec-key(其中 B = bG 且 a̸= b); 公共用户密钥是从 (a, b) 派生的两个公共 ec-key 的一对 (A, B); 标准地址是提供给人类友好字符串的公共用户密钥的表示 具有纠错功能; 截断的地址是给定的公共用户密钥的后半部分(B点)的表示 转换为人类友好的字符串并进行纠错。 交易结构仍然与Bitcoin中的结构类似:每个用户都可以选择 几个独立的收款(交易输出),用相应的签名 私钥并将它们发送到不同的目的地。 与 Bitcoin 的模型相反,用户拥有唯一的私钥和公钥,在 提出的模型发送者根据接收者的地址生成一次性公钥 一些随机数据。从这个意义上说,同一接收者的传入交易被发送到 一次性公钥(不直接发送到唯一地址)并且只有接收者才能恢复 相应的私人部分来赎回他的资金(使用他唯一的私钥)。收件人可以 使用环签名来支出资金,使他的所有权和实际支出保持匿名。 协议的详细信息将在接下来的小节中解释。 4.3 无法关联的付款 经典的 Bitcoin 地址一旦发布,就成为传入的明确标识符 付款,将它们链接在一起并与接收者的假名绑定。如果有人想要 收到“解绑”交易时,他应该通过私人渠道将其地址传达给发送者。 如果他想收到不同的交易,而这些交易不能被证明属于同一所有者 他应该生成所有不同的地址,并且永远不要以自己的笔名发布它们。 公共 私人 爱丽丝 卡罗尔 鲍勃的地址 1 鲍勃的地址 2 鲍勃的钥匙 1 鲍勃的钥匙 2 鲍勃 图 2. 传统的 Bitcoin 密钥/交易模型。 我们提出了一个解决方案,允许用户发布单个地址并无条件接收 无法链接的付款。每个 CryptoNote 输出的目的地(默认情况下)是一个公钥, 来自收件人的地址和发件人的随机数据。相对 Bitcoin 的主要优势 默认情况下,每个目标密钥都是唯一的(除非发送者对每个目标密钥使用相同的数据) 他的交易给同一个接收者)。因此,不存在“地址重用”的问题 设计,没有观察者可以确定是否有任何交易被发送到特定地址或链接 两个地址在一起。 6 私有用户密钥是一对 (a, b) 两个不同的私有 ec-key; 跟踪密钥是一对 (a, B) 私有和公共 ec-key(其中 B = bG 且 a̸= b); 公共用户密钥是从 (a, b) 派生的两个公共 ec-key 的一对 (A, B); 标准地址是提供给人类友好字符串的公共用户密钥的表示 具有纠错功能; 截断的地址是给定的公共用户密钥的后半部分(B点)的表示 转换为人类友好的字符串并进行纠错。 交易结构仍然与Bitcoin中的结构类似:每个用户都可以选择 几个独立的收款(交易输出),用相应的签名 私钥并将它们发送到不同的目的地。 与 Bitcoin 的模型相反,用户拥有唯一的私钥和公钥,在 提出的模型发送者根据接收者的地址生成一次性公钥 一些随机数据。从这个意义上说,同一接收者的传入交易被发送到 一次性公钥(不直接发送到唯一地址)并且只有接收者才能恢复 相应的私人部分来赎回他的资金(使用他唯一的私钥)。收件人可以 使用环签名来支出资金,使他的所有权和实际支出保持匿名。 协议的详细信息将在接下来的小节中解释。 4.3 无法关联的付款 经典的 Bitcoin 地址一旦发布,就成为传入的明确标识符 付款,将它们链接在一起并与接收者的假名绑定。如果有人想要 收到“解绑”交易时,他应该通过私人渠道将其地址传达给发送者。 如果他想收到不同的交易,而这些交易不能被证明属于同一所有者 他应该生成所有不同的地址,并且永远不要以自己的笔名发布它们。 公共 私人 爱丽丝 卡罗尔 鲍勃的地址 1 鲍勃的地址 2 鲍勃的钥匙 1 鲍勃的钥匙 2 鲍勃 图 2. 传统的 Bitcoin 密钥/交易模式埃尔。 我们提出了一个解决方案,允许用户发布单个地址并无条件接收 无法链接的付款。每个 CryptoNote 输出的目的地(默认情况下)是一个公钥, 来自收件人的地址和发件人的随机数据。相对 Bitcoin 的主要优势 默认情况下,每个目标密钥都是唯一的(除非发送者对每个目标密钥使用相同的数据) 他的交易给同一个接收者)。因此,不存在“地址重用”的问题 设计,没有观察者可以确定是否有任何交易被发送到特定地址或链接 两个地址在一起。 6 11 所以这就像 Bitcoin,但具有无限的匿名邮政信箱,只能由收件人兑换 生成与环签名一样匿名的私钥。 Bitcoin 就是这样工作的。 如果 Alex 刚刚从 Frank 收到的钱包里有 0.112 Bitcoin,那么她确实有一个签名 消息“我,[FRANK],发送 0.112 Bitcoin 至 [alex] + H0 + N0”,其中 1) Frank 已签署 用他的私钥 [FRANK] 发送消息,2) Frank 已用 Alex 的公钥签署了该消息 key,[alex],3) Frank 包含了某种形式的比特币历史,H0,以及 4) Frank 包括称为 nonce, N0 的随机数据位。 如果 Alex 然后想要发送 0.011 Bitcoin 给 Charlene,她会接受 Frank 的消息,并且她 将其设置为 H1,并签署两条消息:一条用于她的交易,一条用于更改。 H1=“我,[FRANK],发送 0.112 Bitcoin 至 [alex] + H0 + N” “我,[ALEX],发送 0.011 Bitcoin 至 [charlene] + H1 + N1" “我,[ALEX],发送 0.101 Bitcoin 作为对 [alex] + H1 + N2 的更改。” Alex 用她的私钥 [ALEX] 签署了两条消息,第一条消息是用 Charlene 的 公钥 [charlene],带有 Alex 公钥 [alex] 的第二条消息,包括 历史和一些随机生成的 nonces N1 和 N2 适当。 Cryptonote 的工作原理如下: 如果 Alex 在她刚刚从 Frank 收到的钱包里有 0.112 Cryptonote,那么她确实有一个签名的 消息“我,[临时组中的某个人],将 0.112 Cryptonote 发送到 [一次性地址] + H0 + N0。” Alex 通过检查她的私钥 [ALEX] 发现这是她的钱 每一条传递的消息的[一次性地址],如果她想花掉它,她会在 以下方式。 她选择了这笔钱的接收者,也许夏琳已经开始投票支持无人机袭击,所以 亚历克斯想汇款给布伦达。因此 Alex 查找 Brenda 的公钥 [brenda], 并使用她自己的私钥 [ALEX] 生成一次性地址 [ALEX+brenda]。她 然后从加密货币用户网络中选择一个任意集合 C 并构造 来自该临时组的环签名。 我们将历史记录设置为上一条消息,添加 nonces,然后照常进行吗? H1 =“我,[临时组中的某人],将 0.112 Cryptonote 发送到 [一次性地址] + H0 + N0。” “我,[集合 C 中的某个人],将 0.011 Cryptonote 发送至 [one-time-address-made-fromALEX+brenda] + H1 + N1” “我,[集合 C 中的某个人],将 0.101 Cryptonote 作为找零发送给 [one-time-address-madefrom-ALEX+alex] + H1 + N2” 现在,Alex 和 Brenda 都扫描所有传入消息,以查找曾经存在过的一次性地址。 使用他们的密钥创建。 如果他们找到任何消息,那么该消息就是他们自己的全新消息 加密货币! 即便如此,交易仍将达到 blockchain。如果硬币进入该地址 已知是由犯罪分子、政治捐助者或委员会和账户发送的 预算严格(即贪污),或者这些代币的新所有者犯了错误 并将这些硬币发送到一个与他已知拥有的硬币相同的地址,即匿名夹具 比特币上涨了。
私有用户密钥是一对 (a, b) 两个不同的私有 ec-key; 跟踪密钥是一对 (a, B) 私有和公共 ec-key(其中 B = bG 且 a̸= b); 公共用户密钥是从 (a, b) 派生的两个公共 ec-key 的一对 (A, B); 标准地址是提供给人类友好字符串的公共用户密钥的表示 具有纠错功能; 截断的地址是给定的公共用户密钥的后半部分(B点)的表示 转换为人类友好的字符串并进行纠错。 交易结构仍然与Bitcoin中的结构类似:每个用户都可以选择 几个独立的收款(交易输出),用相应的签名 私钥并将它们发送到不同的目的地。 与 Bitcoin 的模型相反,用户拥有唯一的私钥和公钥,在 提出的模型发送者根据接收者的地址生成一次性公钥 一些随机数据。从这个意义上说,同一接收者的传入交易被发送到 一次性公钥(不直接发送到唯一地址)并且只有接收者才能恢复 相应的私人部分来赎回他的资金(使用他唯一的私钥)。收件人可以 使用环签名来支出资金,使他的所有权和实际支出保持匿名。 协议的详细信息将在接下来的小节中解释。 4.3 无法关联的付款 经典的 Bitcoin 地址一旦发布,就成为传入的明确标识符 付款,将它们链接在一起并与接收者的假名绑定。如果有人想要 收到“解绑”交易时,他应该通过私人渠道将其地址传达给发送者。 如果他想收到不同的交易,而这些交易不能被证明属于同一所有者 他应该生成所有不同的地址,并且永远不要以自己的笔名发布它们。 公共 私人 爱丽丝 卡罗尔 鲍勃的地址 1 鲍勃的地址 2 鲍勃的钥匙 1 鲍勃的钥匙 2 鲍勃 图 2. 传统的 Bitcoin 密钥/交易模型。 我们提出了一个解决方案,允许用户发布单个地址并无条件接收 无法链接的付款。每个 CryptoNote 输出的目的地(默认情况下)是一个公钥, 来自收件人的地址和发件人的随机数据。对抗 Bitcoin 的主要优势 默认情况下,每个目标密钥都是唯一的(除非发送者对每个目标密钥使用相同的数据) 他的交易给同一个接收者)。因此,不存在“地址重用”的问题 设计,没有观察者可以确定是否有任何交易被发送到特定地址或链接 两个地址在一起。 6 私有用户密钥是一对 (a, b) 两个不同的私有 ec-key; 跟踪密钥是一对 (a, B) 私有和公共 ec-key(其中 B = bG 且 a̸= b); 公共用户密钥是从 (a, b) 派生的两个公共 ec-key 的一对 (A, B); 标准地址是提供给人类友好字符串的公共用户密钥的表示 具有纠错功能; 截断的地址是给定的公共用户密钥的后半部分(B点)的表示 转换为人类友好的字符串并进行纠错。 交易结构仍然与Bitcoin中的结构类似:每个用户都可以选择 几个独立的收款(交易输出),用相应的签名 私钥并将它们发送到不同的目的地。 与 Bitcoin 的模型相反,用户拥有唯一的私钥和公钥,在 提出的模型发送者根据接收者的地址生成一次性公钥 一些随机数据。从这个意义上说,同一接收者的传入交易被发送到 一次性公钥(不直接发送到唯一地址)并且只有接收者才能恢复 相应的私人部分来赎回他的资金(使用他唯一的私钥)。收件人可以 使用环签名来支出资金,使他的所有权和实际支出保持匿名。 协议的详细信息将在接下来的小节中解释。 4.3 无法关联的付款 经典的 Bitcoin 地址一旦发布,就成为传入的明确标识符 付款,将它们链接在一起并与接收者的假名绑定。如果有人想要 收到“解绑”交易时,他应该通过私人渠道将其地址传达给发送者。 如果他想收到不同的交易,而这些交易不能被证明属于同一所有者 他应该生成所有不同的地址,并且永远不要以自己的笔名发布它们。 公共 私人 爱丽丝 卡罗尔 鲍勃的地址 1 鲍勃的地址 2 鲍勃的钥匙 1 鲍勃的钥匙 2 鲍勃 图 2. 传统的 Bitcoin 密钥/交易模式埃尔。 我们提出了一个解决方案,允许用户发布单个地址并无条件接收 无法链接的付款。每个 CryptoNote 输出的目的地(默认情况下)是一个公钥, 来自收件人的地址和发件人的随机数据。相对 Bitcoin 的主要优势 默认情况下,每个目标密钥都是唯一的(除非发送者对每个目标密钥使用相同的数据) 他的交易给同一个接收者)。因此,不存在“地址重用”的问题 设计,没有观察者可以确定是否有任何交易被发送到特定地址或链接 两个地址在一起。 6 12 因此,用户不是从地址(实际上是公钥)发送硬币到地址 (另一个公钥)使用他们的私钥,用户从一次性邮政信箱发送硬币 (使用您朋友的公钥生成)到一次性邮政信箱(类似地)使用您的 自己的私钥。 从某种意义上说,我们是在说“好吧,每个人在钱被使用的时候把手拿开” 转来转去!只要知道我们的钥匙可以打开那个盒子就足够了 我们知道盒子里有多少钱。 切勿将指纹放在邮政信箱或 实际使用时,只需交易装满现金的盒子即可。这样我们就不知道是谁发的 什么,但是这些公共地址的内容仍然是无摩擦的、可替代的、可分割的,并且 仍然拥有我们想要的所有其他良好的货币品质,比如比特币。” 无限组邮政信箱。 你公布地址,我有私钥。我使用我的私钥和您的地址,并且 一些随机数据,以生成公钥。该算法的设计使得,由于您 地址用于生成公钥,只有您的私钥才能解锁 消息。 观察者 Eve 看到您发布了您的地址,并看到了我宣布的公钥。然而, 她不知道我是否根据你的地址或她的地址或布伦达的地址公布了我的公钥 或夏琳的,或任何人的。她根据我宣布的公钥检查她的私钥 并发现它不起作用;这不是她的钱。她不知道其他人的私钥,并且 只有消息的接收者才拥有可以解锁消息的私钥。所以没有人 倾听可以确定谁收到了钱,更不用说拿走了钱。
公共 私人 爱丽丝 卡罗尔 一次性钥匙 一次性钥匙 一次性钥匙 鲍勃 鲍勃的钥匙 鲍勃的地址 图 3. CryptoNote 密钥/交易模型。 首先,发送者执行 Diffie-Hellman 交换,从他的数据中获取共享秘密,并 收件人地址的一半。然后,他使用共享的密钥计算一次性目标密钥 秘密和地址的后半部分。收件人需要两个不同的 ec-key 对于这两个步骤,因此标准 CryptoNote 地址几乎是 Bitcoin 钱包的两倍 地址。 接收方还执行 Diffie-Hellman 交换以恢复相应的 秘密密钥。 标准交易顺序如下: 1. Alice 想要向 Bob 发送一笔付款,Bob 已经发布了他的标准地址。 她 解压地址并获取 Bob 的公钥 (A, B)。 2. Alice 生成一个随机 \(r \in [1, l - 1]\) 并计算一次性公钥 \(P = H_s(rA)G +\) B. 3. Alice 使用 P 作为输出的目标密钥,并且还打包值 R = rG(作为一部分) Dffie-Hellman 交换的一部分)进入交易的某个地方。请注意,她可以创建 具有唯一公钥的其他输出:不同接收者的密钥(Ai,Bi)意味着不同的 Pi 即使使用相同的 r。 交易 发送方公钥 发射输出 金额 目的地键 R=rG P = Hs(rA)G + B 接收者的 公钥 发送者的随机数据 r (甲、乙) 图 4. 标准交易结构。 4. Alice 发送交易。 5. Bob 用他的私钥 (a, b) 检查每笔通过的交易,并计算 P ′ = Hs(aR)G + B。 如果Alice与Bob作为接收者的交易也在其中, 则 aR = arG = rA 且 P ′ = P。 7 公共 私人 爱丽丝 卡罗尔 一次性钥匙 一次性钥匙 一次性钥匙 鲍勃 鲍勃的钥匙 鲍勃的地址 图 3. CryptoNote 密钥/交易模型。 首先,发送者执行 Diffie-Hellman 交换,从他的数据中获取共享秘密,并 收件人地址的一半。然后,他使用共享的密钥计算一次性目标密钥 秘密和地址的后半部分。收件人需要两个不同的 ec-key 对于这两个步骤,因此标准 CryptoNote 地址几乎是 Bitcoin 钱包的两倍 地址。 接收方还执行 Diffie-Hellman 交换以恢复相应的 秘密密钥。 标准交易顺序如下: 1. Alice 想要向 Bob 发送一笔付款,Bob 已经发布了他的标准地址。 她 解压地址并获取 Bob 的公钥 (A, B)。 2. Alice 生成一个随机 \(r \in [1, l - 1]\) 并计算一次性公钥 \(P = H_s(rA)G +\) B. 3. Alice 使用 P 作为输出的目标密钥,并且还打包值 R = rG(作为一部分) Dffie-Hellman 交换的一部分)进入交易的某个地方。请注意,她可以创建 具有唯一公钥的其他输出:不同接收者的密钥(Ai,Bi)意味着不同的 Pi 即使使用相同的 r。 交易 发送方公钥 发射输出 金额 目的地键 R=rG P = Hs(rA)G + B 接收者的 公钥 发送者的随机数据 r (甲、乙) 图 4. 标准交易结构。 4. Alice 发送交易。 5. Bob 用他的私钥 (a, b) 检查每笔通过的交易,并计算 P ′ = Hs(aR)G + B。 如果Alice与Bob作为接收者的交易也在其中, 则 aR = arG = rA 且 P ′ = P。 7 13 我想知道实施密码学的“选择”会带来多大的痛苦 计划。椭圆形或其他形状。因此,如果将来某个计划被破坏,货币就会转换 无需担心。可能是一个很大的痛苦。 好的,这正是我在之前的评论中所解释的。迪-赫尔曼型 交流很简单。假设 Alex 和 Brenda 各有一个秘密号码 A 和 B,以及一个号码 他们不关心保守秘密,a和b。他们希望生成一个共享秘密而无需 伊娃发现了它。迪耶和赫尔曼想出了一个方法,让亚历克斯和布伦达分享 公开号码a和b,但不是私人号码A和B,并生成共享秘密, K. 使用这个共享秘密 K,无需任何 Eva 监听即可生成相同的秘密 K、Alex 和 Brenda 现在可以使用 K 作为秘密加密密钥并传回秘密消息 等等。 以下是它 CAN 的工作原理,尽管它应该适用于比 100 大得多的数字。 我们将使用 100,因为对整数取模 100 相当于“扔掉所有 但数字的最后两位。” Alex 和 Brenda 各自选择 A、a、B 和 b。他们对 A 和 B 保密。 Alex 告诉 Brenda 她的模 100 的值(仅最后两位数字),Brenda 告诉 Alex 她的 b 值模 100。现在 Eva 知道 (a,b) 模 100。但是 Alex 知道 (a,b,A),所以她 可以计算 x=abA 模 100。亚历克斯砍掉了所有的东西,只留下最后一个数字,因为我们正在工作 再次以 100 为模的整数。同样,布伦达知道 (a,b,B),因此她可以计算 y=abB 模 100。Alex 现在可以发布 x,Brenda 可以发布 y。 但现在 Alex 可以计算 yA = abBA modulo 100,而 Brenda 可以计算 xB = abBA 模 100。 他们都知道同一个号码! 但伊娃听到的只是 (a,b,abA,abB)。她没有简单的方法来计算 abA*B。 现在,这是考虑 Diffie-Hellman 交换的最简单且最不安全的方式。 存在更安全的版本。但大多数版本都可以工作,因为整数分解和离散 对数很难,而这两个问题都可以通过量子计算机轻松解决。 我将研究是否存在任何抵抗量子的版本。 http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange 此处列出的“标准 txn 序列”缺少一大堆步骤,例如签名。 他们在这里被视为理所当然。这真的很糟糕,因为我们的顺序 签名内容、签名消息中包含的信息等等……所有这些都非常重要 对协议很重要。 在实施“ 标准交易序列”可能会使整个系统的安全性受到质疑。 此外,如果 它们工作的框架与本节一样松散地定义。
公共 私人 爱丽丝 卡罗尔 一次性钥匙 一次性钥匙 一次性钥匙 鲍勃 鲍勃的钥匙 鲍勃的地址 图 3. CryptoNote 密钥/交易模型。 首先,发送者执行 Diffie-Hellman 交换,从他的数据中获取共享秘密,并 收件人地址的一半。然后,他使用共享的密钥计算一次性目标密钥 秘密和地址的后半部分。收件人需要两个不同的 ec-key 对于这两个步骤,因此标准 CryptoNote 地址几乎是 Bitcoin 钱包的两倍 地址。 接收方还执行 Diffie-Hellman 交换以恢复相应的 秘密密钥。 标准交易顺序如下: 1. Alice 想要向 Bob 发送一笔付款,Bob 已经发布了他的标准地址。 她 解压地址并获取 Bob 的公钥 (A, B)。 2. Alice 生成一个随机 \(r \in [1, l - 1]\) 并计算一次性公钥 \(P = H_s(rA)G +\) B. 3. Alice 使用 P 作为输出的目标密钥,并且还打包值 R = rG(作为一部分) Dffie-Hellman 交换的一部分)进入交易的某个地方。请注意,她可以创建 具有唯一公钥的其他输出:不同接收者的密钥(Ai,Bi)意味着不同的 Pi 即使使用相同的 r。 交易 发送方公钥 发射输出 金额 目的地键 R=rG P = Hs(rA)G + B 接收者的 公钥 发送者的随机数据 r (甲、乙) 图 4. 标准交易结构。 4. Alice 发送交易。 5. Bob 用他的私钥 (a, b) 检查每笔通过的交易,并计算 P ′ = Hs(aR)G + B。 如果Alice与Bob作为接收者的交易也在其中, 则 aR = arG = rA 且 P ′ = P。 7 公共 私人 爱丽丝 卡罗尔 一次性钥匙 一次性钥匙 一次性钥匙 鲍勃 鲍勃的钥匙 鲍勃的地址 图 3. CryptoNote 密钥/交易模型。 首先,发送者执行 Diffie-Hellman 交换,从他的数据中获取共享秘密,并 收件人地址的一半。然后,他使用共享的密钥计算一次性目标密钥 秘密和地址的后半部分。收件人需要两个不同的 ec-key 对于这两个步骤,因此标准 CryptoNote 地址几乎是 Bitcoin 钱包的两倍 地址。 接收方还执行 Diffie-Hellman 交换以恢复相应的 秘密密钥。 标准交易顺序如下: 1. Alice 想要向 Bob 发送一笔付款,Bob 已经发布了他的标准地址。 她 解压地址并获取 Bob 的公钥 (A, B)。 2. Alice 生成一个随机 \(r \in [1, l - 1]\) 并计算一次性公钥 \(P = H_s(rA)G +\) B. 3. Alice 使用 P 作为输出的目标密钥,并且还打包值 R = rG(作为一部分) Dffie-Hellman 交换的一部分)进入交易的某个地方。请注意,她可以创建 具有唯一公钥的其他输出:不同接收者的密钥(Ai,Bi)意味着不同的 Pi 即使使用相同的 r。 交易 发送方公钥 发射输出 金额 目的地键 R=rG P = Hs(rA)G + B 接收者的 公钥 发送者的随机数据 r (甲、乙) 图 4. 标准交易结构。 4. Alice 发送交易。 5. Bob 用他的私钥 (a, b) 检查每笔通过的交易,并计算 P ′ = Hs(aR)G + B。 如果Alice与Bob作为接收者的交易也在其中, 则 aR = arG = rA 且 P ′ = P。 7 14 请注意,作者在保持术语简洁方面做得很糟糕 文本,但尤其是在接下来的部分。本文的下一个版本必然是 更加严格。 在文本中,他们将 P 称为他们的一次性公钥。在图中,他们将 R 称为 他们的“Tx 公钥”和 P 作为他们的“目标密钥”。如果我要重写这个,我会 在讨论这些部分之前,非常具体地列出一些术语。 这个井很大。参见第 5 页。 谁选择艾尔? 该图说明交易公钥 R = rG,它是随机选择的 由发送方发送,不是 Tx 输出的一部分。这是因为对于多个来说它可能是相同的 交易给多人,并且 稍后 不会用于支出。生成一个新的R 每次您想要广播新的 CryptoNote 交易时。此外,R仅用于 检查您是否是交易的接收者。这不是垃圾数据,但对任何人来说都是垃圾 没有与 (A,B) 关联的私钥。 另一方面,目的地密钥 P = Hs(rA)G + B 是 Tx 输出的一部分。大家 翻阅每笔经过的交易数据必须检查自己生成的 P* 这个 P 看看他们是否拥有这个传递的交易。任何拥有未使用交易输出的人 (UTXO) 将会有一堆这样的 P 并带有数量。为了度过d、他们 签署一些新消息,包括 P。 Alice 必须使用与未使用的交易输出目标密钥关联的一次性私钥来签署此交易。 Alice 拥有的每把目的地钥匙都配备有 具有(大概)爱丽丝也拥有的一次性私钥。每次爱丽丝想要的时候 将目标密钥的内容发送给我、鲍勃、布伦达、查理或夏琳,她 使用她的私钥来签署交易。收到交易后,我将收到新的 Tx 公钥,一个新的目标公钥,我将能够恢复一个新的一次性私钥 x。将我的一次性私钥 x 与新交易的公共目的地相结合 key(s) 是我们发送新交易的方式
- Bob 可以恢复相应的一次性私钥:x = Hs(aR) + b,因此 P = xG。 他可以随时通过与 x 签署交易来花费此输出。 交易 发送方公钥 发射输出 金额 目的地键 P ′ = Hs(aR)G + bG 一次性公钥 x = Hs(aR) + b 一次性私钥 接收者的 私钥 (一、二) 右 P′ ? = P 图 5. 传入交易检查。 结果,鲍勃收到了与一次性公钥相关的收款,该公钥是 对于观众来说是不可链接的。一些附加说明: • 当鲍勃“识别”他的交易时(参见步骤 5),他实际上只使用了他的一半交易 私人信息:(a,B)。这对也称为跟踪密钥,可以通过 给第三方(卡罗尔)。鲍勃可以委托她处理新交易。鲍勃 不需要明确信任 Carol,因为她无法恢复一次性密钥 p 没有 Bob 的完整私钥 (a, b)。当 Bob 缺乏带宽时,此方法很有用 或计算能力(智能手机、硬件钱包等)。 • 如果爱丽丝想证明她向鲍勃的地址发送了一笔交易,她可以披露 r 或使用任何类型的零知识协议来证明她知道 r (例如通过签名 与 r 的交易。 • 如果 Bob 希望拥有一个审计兼容地址,其中所有传入交易都在 可链接,他可以发布他的跟踪密钥或使用截断的地址。那个地址 只代表一个公共ec-key B,协议所需的剩余部分为 由此导出如下:a = Hs(B) 且 A = Hs(B)G。在这两种情况下,每个人都是 能够“识别”Bob 的所有传入交易,但是,当然,没有人可以花费 其中包含的资金没有密钥 b. 4.4 一次性环签名 一种基于一次性环签名的协议允许用户实现无条件的不可链接性。 不幸的是,普通类型的加密签名允许追踪交易到他们的 各自的发送者和接收者。我们解决这个缺陷的方法是使用不同的签名 类型不同于当前电子现金系统中使用的类型。 我们将首先提供我们算法的一般描述,没有明确引用 电子现金。 一次性环签名包含四种算法:(GEN、SIG、VER、LNK): GEN:采用公共参数并输出 ec 对 (P, x) 和公钥 I。 SIG:接受消息 m、一组公钥 {Pi}i̸=s、一对 (Ps, xs) \(S'\),并输出签名 \(\sigma\) 以及集合 \(S = \)S'\( \cup \{P_s\}\)。 8
-
Bob 可以恢复相应的一次性私钥:x = Hs(aR) + b,因此 P = xG。 他可以随时通过与 x 签署交易来花费此输出。 交易 发送方公钥 发射输出 金额 目的地键 P ′ = Hs(aR)G + bG 一次性公钥 x = Hs(aR) + b 一次性私钥 接收者的 私钥 (一、二) 右 P′ ? = P 图 5. 传入交易检查。 结果,鲍勃收到了与一次性公钥相关的收款,该公钥是 对于观众来说是不可链接的。一些附加说明: • 当鲍勃“识别”他的交易时(参见步骤 5),他实际上只使用了他的一半交易 私人信息:(a,B)。这对也称为跟踪密钥,可以通过 给第三方(卡罗尔)。鲍勃可以委托她处理新交易。鲍勃 不需要明确信任 Carol,因为她无法恢复一次性密钥 p 没有 Bob 的完整私钥 (a, b)。当 Bob 缺乏带宽时,此方法很有用 或计算能力(智能手机、硬件钱包等)。 • 如果爱丽丝想证明她向鲍勃的地址发送了一笔交易,她可以披露 r 或使用任何类型的零知识协议来证明她知道 r (例如通过签名 与 r 的交易。 • 如果 Bob 希望拥有一个审计兼容地址,其中所有传入交易都在 可链接,他可以发布他的跟踪密钥或使用截断的地址。那个地址 只代表一个公共ec-key B,协议所需的剩余部分为 由此导出如下:a = Hs(B) 且 A = Hs(B)G。在这两种情况下,每个人都是 能够“识别”Bob 的所有传入交易,但是,当然,没有人可以花费 其中包含的资金没有密钥 b. 4.4 一次性环签名 一种基于一次性环签名的协议允许用户实现无条件的不可链接性。 不幸的是,普通类型的加密签名允许追踪交易到他们的 各自的发送者和接收者。我们解决这个缺陷的方法是使用不同的签名 类型不同于当前电子现金系统中使用的类型。 我们首先提供一个gener我们算法的所有描述,没有明确引用 电子现金。 一次性环签名包含四种算法:(GEN、SIG、VER、LNK): GEN:采用公共参数并输出 ec 对 (P, x) 和公钥 I。 SIG:接受消息 m、一组公钥 {Pi}i̸=s、一对 (Ps, xs) \(S'\),并输出签名 \(\sigma\) 以及集合 \(S = \)S'\( \cup \{P_s\}\)。 8 15 这里未使用的交易输出是什么样的?该图表明交易输出仅包含两个数据点:金额和目的地键。但这不是 足够了,因为当我尝试使用这个“输出”时,我仍然需要知道 R=rG。请记住,r 由发送者选择,并且 R a) 用于将传入的加密货币识别为您的 拥有和 b) 用于生成用于“认领”您的加密货币的一次性私钥。 我不明白的部分是什么? 采取理论上的“好吧,我们有这些 签名和交易,我们将它们来回传递”到编程世界 “好吧,具体什么信息构成了个体UTXO?” 回答这个问题的最佳方法是深入研究完全未注释的代码主体。 一路走好,比特币团队。 回想一下:可链接性意味着“是同一个人发送的吗?”不可链接性意味着“做了同样的事情” 人收到吗?”。因此,系统可以是可链接的或不可链接的、不可链接的或不可不可链接的。 很烦人,我知道。 因此,当 Nic van Saberhagen 在这里说“……收到的付款[与]一次性相关” 观众无法链接的公钥”,让我们看看他的意思。 首先,考虑这样一种情况:Alice 向 Bob 发送来自同一交易的两个单独的交易。 地址到同一个地址。 在Bitcoin宇宙中,爱丽丝已经犯了错误 从同一地址发送,因此交易未能满足我们对有限的愿望 可链接性。而且,既然她把钱寄到了同一个地址,她就辜负了我们的愿望 为不可链接性。该比特币交易既是(完全)可链接又是不可链接的。 另一方面,在加密货币世界中,假设爱丽丝向鲍勃发送了一些加密货币, 使用鲍勃的公共地址。她选择所有已知的公共密钥作为她的混淆公共密钥集 华盛顿特区都会区的钥匙。 Alex 使用自己的公钥生成一次性公钥 信息和鲍勃的公开信息。她把钱寄出去,任何观察者都会 只能收集“来自华盛顿特区都会区的某人发送了 2.3 个加密货币到 一次性公共地址 XYZ123。” 我们在这里对可链接性进行概率控制,因此我们将其称为“几乎不可链接”。 我们也只看到一次性公钥资金被发送到的地方。即使我们怀疑接收者 是鲍勃,我们没有他的私钥,所以我们无法测试是否通过交易 属于鲍勃,更不用说生成他的一次性私钥来兑换他的加密货币了。所以这个 事实上,完全“无法链接”。 所以,这是所有技巧中最巧妙的。谁愿意真正信任另一个 MtGox?我们可能是 在 Coinbase 上存储一定数量的 BTC 很舒服,但比特币安全的终极目标是 实体钱包。这很不方便。 在这种情况下,您可以放心地泄露一半的私钥,而不会损害您的 自己花钱的能力。 执行此操作时,您所做的就是告诉某人如何打破不可链接性。另一个 CN 像货币一样的属性被保留,例如防止双重支出和 诸如此类的。
-
Bob 可以恢复相应的一次性私钥:x = Hs(aR) + b,因此 P = xG。 他可以随时通过与 x 签署交易来花费此输出。 交易 发送方公钥 发射输出 金额 目的地键 P ′ = Hs(aR)G + bG 一次性公钥 x = Hs(aR) + b 一次性私钥 接收者的 私钥 (一、二) 右 P′ ? = P 图 5. 传入交易检查。 结果,鲍勃收到了与一次性公钥相关的收款,该公钥是 对于观众来说是不可链接的。一些附加说明: • 当鲍勃“识别”他的交易时(参见步骤 5),他实际上只使用了他的一半交易 私人信息:(a,B)。这对也称为跟踪密钥,可以通过 给第三方(卡罗尔)。鲍勃可以委托她处理新交易。鲍勃 不需要明确信任 Carol,因为她无法恢复一次性密钥 p 没有 Bob 的完整私钥 (a, b)。当 Bob 缺乏带宽时,此方法很有用 或计算能力(智能手机、硬件钱包等)。 • 如果爱丽丝想证明她向鲍勃的地址发送了一笔交易,她可以披露 r 或使用任何类型的零知识协议来证明她知道 r (例如通过签名 与 r 的交易。 • 如果 Bob 希望拥有一个审计兼容地址,其中所有传入交易都在 可链接,他可以发布他的跟踪密钥或使用截断的地址。那个地址 只代表一个公共ec-key B,协议所需的剩余部分为 由此导出如下:a = Hs(B) 且 A = Hs(B)G。在这两种情况下,每个人都是 能够“识别”Bob 的所有传入交易,但是,当然,没有人可以花费 其中包含的资金没有密钥 b. 4.4 一次性环签名 一种基于一次性环签名的协议允许用户实现无条件的不可链接性。 不幸的是,普通类型的加密签名允许追踪交易到他们的 各自的发送者和接收者。我们解决这个缺陷的方法是使用不同的签名 类型不同于当前电子现金系统中使用的类型。 我们将首先提供我们算法的一般描述,没有明确引用 电子现金。 一次性环签名包含四种算法:(GEN、SIG、VER、LNK): GEN:采用公共参数并输出 ec 对 (P, x) 和公钥 I。 SIG:接受消息 m、一组公钥 {Pi}i̸=s、一对 (Ps, xs) \(S'\),并输出签名 \(\sigma\) 以及集合 \(S = \)S'\( \cup \{P_s\}\)。 8
- Bob 可以恢复相应的一次性私钥:x = Hs(aR) + b,因此 P = xG。 他可以随时通过与 x 签署交易来花费此输出。 交易 发送方公钥 发射输出 金额 目的地键 P ′ = Hs(aR)G + bG 一次性公钥 x = Hs(aR) + b 一次性私钥 接收者的 私钥 (一、二) 右 P′ ? = P 图 5. 传入交易检查。 结果,鲍勃收到了与一次性公钥相关的收款,该公钥是 对于观众来说是不可链接的。一些附加说明: • 当鲍勃“识别”他的交易时(参见步骤 5),他实际上只使用了他的一半交易 私人信息:(a,B)。这对也称为跟踪密钥,可以通过 给第三方(卡罗尔)。鲍勃可以委托她处理新交易。鲍勃 不需要明确信任 Carol,因为她无法恢复一次性密钥 p 没有 Bob 的完整私钥 (a, b)。当 Bob 缺乏带宽时,此方法很有用 或计算能力(智能手机、硬件钱包等)。 • 如果爱丽丝想证明她向鲍勃的地址发送了一笔交易,她可以披露 r 或使用任何类型的零知识协议来证明她知道 r (例如通过签名 与 r 的交易。 • 如果 Bob 希望拥有一个审计兼容地址,其中所有传入交易都在 可链接,他可以发布他的跟踪密钥或使用截断的地址。那个地址 只代表一个公共ec-key B,协议所需的剩余部分为 由此导出如下:a = Hs(B) 且 A = Hs(B)G。在这两种情况下,每个人都是 能够“识别”Bob 的所有传入交易,但是,当然,没有人可以花费 其中包含的资金没有密钥 b. 4.4 一次性环签名 一种基于一次性环签名的协议允许用户实现无条件的不可链接性。 不幸的是,普通类型的加密签名允许追踪交易到他们的 各自的发送者和接收者。我们解决这个缺陷的方法是使用不同的签名 类型不同于当前电子现金系统中使用的类型。 我们首先提供一个gener我们算法的所有描述,没有明确引用 电子现金。 一次性环签名包含四种算法:(GEN、SIG、VER、LNK): GEN:采用公共参数并输出 ec 对 (P, x) 和公钥 I。 SIG:接受消息 m、一组公钥 {Pi}i̸=s、一对 (Ps, xs) \(S'\),并输出签名 \(\sigma\) 以及集合 \(S = \)S'\( \cup \{P_s\}\)。 8 16 是的,现在我们有 a) 付款地址和 b) 付款 ID。 批评者可能会问“我们真的需要这样做吗?毕竟,如果商家收到 112.00678952 CN 完全正确,那是我的订单,我有屏幕截图或收据或其他什么,不是吗 疯狂的精确度足够了吗?”答案是“也许,大多数时候,在日常生活中, 面对面交易。” 然而,更常见的情况(尤其是在数字世界中)是这样的:商家出售 一组物品,每个物品都有固定的价格。假设对象 A 为 0.001 CN,对象 B 为 0.01 CN, 物体C是0.1 CN。现在,如果商家收到一个1.618 CN的订单,有很多很多 (很多!)为客户安排订单的方式。因此,如果没有某种付款 ID, 识别客户所谓的“独特”订单及其所谓的“独特”成本 秩序变得不可能。更有趣的是:如果我在线商店中的所有商品的价格都是 1.0 CN,我每天有 1000 个客户?并且您想证明您恰好购买了 3 件物品 两周前?没有付款ID?祝你好运,伙计。 长话短说:当鲍勃发布一个付款地址时,他最终可能还会发布一个 以及付款 ID(例如 Poloniex XMR 存款)。这与描述的不同 在此处的文本中,Alice 是生成付款 ID 的人。 Bob 也必须有某种方式来生成支付 ID。 (一、乙) 回想一下,跟踪密钥 (a,B) 可以被发布;失去“a”意志价值的秘密 不侵犯您的消费能力或允许人们从您那里偷窃(我认为......这会 有待证明),它只会让人们看到所有传入的交易。 如本段所述,截断的地址仅采用密钥的“私有”部分 并从“公共”部分生成它。显示“a”的值将消除不可链接性 但将保留其余交易。 作者的意思是“not unlinkable”,因为unlinkable指的是接收者而linkable 指发件人。 很明显,作者没有意识到可链接性有两个不同的方面。 毕竟,交易是图上的有向对象,因此会出现两个问题: “这两笔交易是同一个人进行的吗?”以及“这两笔交易即将到来吗? 来自同一个人?” 这是一个“不回头”的政策,在该政策下,CryptoNote 的不可链接性属性是 有条件的。也就是说,Bob 可以选择他传入的交易不是不可链接的 使用该政策。 这是他们在随机预言模型下证明的主张。我们会谈到这一点;随机的 甲骨文有优点也有缺点。
VER:接受消息 m、集合 S、签名 \(\sigma\) 并输出“真”或“假”。 LNK:采用集合 I = {Ii}、签名 \(\sigma\) 并输出“linked”或“indep”。 该协议背后的想法相当简单:用户生成一个签名,该签名可以是 通过一组公钥而不是唯一的公钥进行检查。签名者的身份是 与公钥在集合中的其他用户无法区分,直到所有者生成 使用相同密钥对的第二个签名。 私钥 x0 \(\cdots\) 希 \(\cdots\) xn 公钥 P0 \(\cdots\) 圆周率 \(\cdots\) PN 戒指 签名 标志 验证 图 6. 环签名匿名性。 GEN:签名者选择一个随机密钥 \(x \in [1, l - 1]\) 并计算相应的密钥 公钥 P = xG。此外,他还计算了另一个公钥 I = xHp(P),我们将其 称之为“关键图像”。 SIG:签名者生成具有非交互式零知识的一次性环签名 使用 [21] 中的技术进行证明。他从其他用户的 n 中随机选择子集 \(S'\) 公钥 Pi、他自己的密钥对 (x, P) 和密钥图像 I。令 \(0 \leq s \leq n\) 为签名者的秘密索引 在 S 中(因此他的公钥是 Ps)。 他随机选择一个{qi |我= 0 。 。 。 n} 和 {wi |我= 0 。 。 。 n, i ̸= s} 从 (1 . . . l) 并应用 以下转换: 李= ( qiG, 如果我=s qiG + wiPi, 如果 i ̸= s 里= ( qiHp(Pi), 如果我=s qiHp(Pi) + wiI, 如果 i ̸= s 下一步是接受非交互式挑战: c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最后签名者计算响应: ci = 无线, 如果 i ̸= s c - 正压 我=0 词 模l, 如果我=s 里= ( 气, 如果 i ̸= s qs-csx 模l, 如果我=s 所得签名为 \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\)。 9 VER:接受消息 m、集合 S、签名 \(\sigma\) 并输出“真”或“假”。 LNK:采用集合 I = {Ii}、签名 \(\sigma\) 并输出“linked”或“indep”。 该协议背后的想法相当简单:用户生成一个签名,该签名可以是 通过一组公钥而不是唯一的公钥进行检查。签名者的身份是 与公钥在集合中的其他用户无法区分,直到所有者生成 使用相同密钥对的第二个签名。 私钥 x0 \(\cdots\) 希 \(\cdots\) xn 公钥 P0 \(\cdots\) 圆周率 \(\cdots\) PN 戒指 签名 标志 验证 图 6. 环签名匿名性。 GEN:签名者选择一个随机密钥 \(x \in [1, l - 1]\) 并计算相应的密钥 公钥 P = xG。此外,他还计算了另一个公钥 I = xHp(P),我们将其 称之为“关键图像”。 SIG:签名者生成具有非交互式零知识的一次性环签名 使用 [21] 中的技术进行证明。他从其他用户的 n 中随机选择子集 \(S'\) 公钥 Pi、他自己的密钥对 (x, P) 和密钥图像 I。令 \(0 \leq s \leq n\) 为签名者的秘密索引 在 S 中(因此他的公钥是 Ps)。 他随机选择一个{qi |我= 0 。 。 。 n} 和 {wi |我= 0 。 。 。 n, i ̸= s} 从 (1 . . . l) 并应用 以下转换: 李= ( qiG, 如果我=s qiG + wiPi, 如果 i ̸= s 里= ( qiHp(Pi), 如果我=s qiHp(Pi) + wiI, 如果 i ̸= s 下一步是接受非交互式挑战: c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最后签名者计算响应: ci = 无线, 如果 i ̸= s c - 正压 我=0 词 模l, 如果我=s 里= ( 气, 如果 i ̸= s qs-csx 模l, 如果我=s 所得签名为 \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\)。 9 17 号 也许这很愚蠢,但是在联合 S 和 P_s 时必须小心。如果您只是附加 最后一个公钥,不可链接性被破坏,因为任何人都检查传递的交易 可以只检查每笔交易和繁荣中列出的最后一个公钥。这就是公钥 与发件人相关联。因此,联合后,伪随机数生成器必须是 用于排列所选的公钥。 “......直到所有者使用相同的密钥对生成第二个签名。”我希望作者(?) 将对此进行详细说明。 我相信这意味着“确保每次选择一组公钥来混淆 你自己选择一套全新的钥匙,没有两把钥匙是一样的。” 对不可链接性施加相当强的条件。也许“你从其中选择一个新的随机集 所有可能的键”的假设是,虽然非平凡的交叉点将不可避免地 发生,它们不会经常发生。 不管怎样,我需要更深入地研究这个陈述。 这正在生成环签名。 零知识证明太棒了:我挑战你向我证明你知道一个秘密 而不泄露秘密。例如,假设我们在一个甜甜圈形状的洞穴的入口处, 在洞穴的后面(从入口处看不到)有一个o你通往的新门 声称你有钥匙。如果你朝一个方向走,它总是会让你通过,但如果你朝另一方向走 其他方向,你需要一把钥匙。但你甚至不想给我看钥匙,更不用说 让我看看它能打开门。但你想向我证明你知道如何打开 门。 在互动环境中,我抛硬币。 左边是头,右边是尾,然后你沿着 甜甜圈形状的洞穴,无论硬币指向你的方向。在我的视线之外的后面,你 打开门绕到另一边回来。我们重复抛硬币实验 直到我确信你有钥匙为止。 但这显然是交互式零知识证明。有一些非交互式版本,您和我永远不需要交流;这样,窃听者就无法干扰。 http://en.wikipedia.org/wiki/Zero-knowledge_proof 这与之前的定义相反。
VER:接受消息 m、集合 S、签名 \(\sigma\) 并输出“真”或“假”。 LNK:采用集合 I = {Ii}、签名 \(\sigma\) 并输出“linked”或“indep”。 该协议背后的想法相当简单:用户生成一个签名,该签名可以是 通过一组公钥而不是唯一的公钥进行检查。签名者的身份是 与公钥在集合中的其他用户无法区分,直到所有者生成 使用相同密钥对的第二个签名。 私钥 x0 \(\cdots\) 希 \(\cdots\) xn 公钥 P0 \(\cdots\) 圆周率 \(\cdots\) PN 戒指 签名 标志 验证 图 6. 环签名匿名性。 GEN:签名者选择一个随机密钥 \(x \in [1, l - 1]\) 并计算相应的密钥 公钥 P = xG。此外,他还计算了另一个公钥 I = xHp(P),我们将其 称之为“关键图像”。 SIG:签名者生成具有非交互式零知识的一次性环签名 使用 [21] 中的技术进行证明。他从其他用户的 n 中随机选择子集 \(S'\) 公钥 Pi、他自己的密钥对 (x, P) 和密钥图像 I。令 \(0 \leq s \leq n\) 为签名者的秘密索引 在 S 中(因此他的公钥是 Ps)。 他随机选择一个{qi |我= 0 。 。 。 n} 和 {wi |我= 0 。 。 。 n, i ̸= s} 从 (1 . . . l) 并应用 以下转换: 李= ( qiG, 如果我=s qiG + wiPi, 如果 i ̸= s 里= ( qiHp(Pi), 如果我=s qiHp(Pi) + wiI, 如果 i ̸= s 下一步是接受非交互式挑战: c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最后签名者计算响应: ci = 无线, 如果 i ̸= s c - 正压 我=0 词 模l, 如果我=s 里= ( 气, 如果 i ̸= s qs-csx 模l, 如果我=s 所得签名为 \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\)。 9 VER:接受消息 m、集合 S、签名 \(\sigma\) 并输出“真”或“假”。 LNK:采用集合 I = {Ii}、签名 \(\sigma\) 并输出“linked”或“indep”。 该协议背后的想法相当简单:用户生成一个签名,该签名可以是 通过一组公钥而不是唯一的公钥进行检查。签名者的身份是 与公钥在集合中的其他用户无法区分,直到所有者生成 使用相同密钥对的第二个签名。 私钥 x0 \(\cdots\) 希 \(\cdots\) xn 公钥 P0 \(\cdots\) 圆周率 \(\cdots\) PN 戒指 签名 标志 验证 图 6. 环签名匿名性。 GEN:签名者选择一个随机密钥 \(x \in [1, l - 1]\) 并计算相应的密钥 公钥 P = xG。此外,他还计算了另一个公钥 I = xHp(P),我们将其 称之为“关键图像”。 SIG:签名者生成具有非交互式零知识的一次性环签名 使用 [21] 中的技术进行证明。他从其他用户的 n 中随机选择子集 \(S'\) 公钥 Pi、他自己的密钥对 (x, P) 和密钥图像 I。令 \(0 \leq s \leq n\) 为签名者的秘密索引 在 S 中(因此他的公钥是 Ps)。 他随机选择一个{qi |我= 0 。 。 。 n} 和 {wi |我= 0 。 。 。 n, i ̸= s} 从 (1 . . . l) 并应用 以下转换: 李= ( qiG, 如果我=s qiG + wiPi, 如果 i ̸= s 里= ( qiHp(Pi), 如果我=s qiHp(Pi) + wiI, 如果 i ̸= s 下一步是接受非交互式挑战: c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最后签名者计算响应: ci = 无线, 如果 i ̸= s c - 正压 我=0 词 模l, 如果我=s 里= ( 气, 如果 i ̸= s qs-csx 模l, 如果我=s 所得签名为 \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\)。 9 18 整个区域与加密货币无关,只是简单地描述环签名算法,而无需 参考货币。我怀疑某些符号与论文的其余部分一致, 不过。例如,x 是 GEN 中选择的“随机”密钥,它给出公钥 P 和公钥图像 I。x 的值是 Bob 在第 6 部分第 8 页中计算的值。所以这是 开始澄清之前描述中的一些混乱。 这有点酷;钱没有从“爱丽丝的公共地址转移到鲍勃的公共地址” 地址。”它正在从一次性地址转移到一次性地址。 所以,从某种意义上说,这就是这些东西的工作原理。如果亚历克斯有一些加密货币,因为有人 将它们发送给她,这意味着她拥有将它们发送给鲍勃所需的私钥。她用 使用 Bob 的公开信息生成新的一次性地址的 Diffie-Hellman 交换 并且加密货币将被转移到该地址。 现在,由于使用(大概是安全的)DH 交换来生成新的一次性地址 Alex 向其发送了 CN,Bob 是唯一拥有重复该操作所需私钥的人 上面。所以现在,鲍勃是亚历克斯。 http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation 求和应该在 j 而不是 i 上索引。每个 c_i 都是随机垃圾(因为 w_i 是随机的) 除了 c_i 屁股与此签名中涉及的实际密钥相关联。 c 的值为 先前信息的 hash。 我认为这可能包含比重新使用索引“i”更糟糕的拼写错误,因为 c_s 似乎 是隐含的,而不是明确的定义。 事实上,如果我们相信这个方程,那么我们可以确定 c_s = (1/2)c - (1/2) sum_i neq s c_i。也就是说,hash 减去一大堆随机数。 另一方面,如果要读取此求和“c_s = (c - sum_j neq s c_j) mod l”,然后我们取之前信息的hash,生成一堆随机数, 减去 hash 中的所有随机数,得到 c_s。这似乎是 根据我的直觉,“应该”发生什么,并且与第 10 页的验证步骤相匹配。 但直觉不是数学。我会更深入地探讨这一点。 和以前一样;除了与实际相关的之外,所有这些都将是随机垃圾 签名者的公钥 x。除了这一次,这更符合我对结构的期望: r_i 对于 i!=s 是随机的,并且 r_s 仅由秘密 x 和 s 索引值确定 q_i 和 c_i。
VER:验证者通过应用逆变换来检查签名: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI 最后,验证者检查是否 正压 我=0 词 ? = Hs(m, L′ 0,. 。 。 , L′ n,R′ 0,. 。 。 ,R′ n) 模 l 如果这个等式正确,验证器将运行 LNK 算法。否则验证者拒绝 签名。 LNK:验证器检查 I 是否已在过去的签名中使用过(这些值存储在 集 I)。多次使用意味着两个签名是在同一密钥下生成的。 协议的含义:通过应用 L 变换,签名者证明他知道 这样 x 至少有一个 Pi = xG。为了使这个证明不可重复,我们引入了关键图像 因为 I = xHp(P)。签名者使用相同的系数 (ri, ci) 来证明几乎相同的陈述: 他知道 x 至少有一个 \(H_p(P_i) = I \cdot x^{-1}\)。 如果映射 \(x \to I\) 是一个注入: 1. 任何人都无法从密钥图像中恢复公钥并识别签名者; 2. 签名者不能使用不同的 I 和相同的 x 进行两个签名。 附录 A 提供了完整的安全分析。 4.5 标准 CryptoNote 交易 通过结合这两种方法(不可链接的公钥和不可追踪的环签名),Bob 实现了 与原始 Bitcoin 方案相比,新的隐私级别。它只需要他存储 一个私钥(a,b)并发布(A,B)以开始接收和发送匿名交易。 在验证每笔交易时,Bob 仅对每个输出执行两次椭圆曲线乘法和一次加法,以检查交易是否属于他。为了他的每一个 输出 Bob 恢复一次性密钥对 (pi, Pi) 并将其存储在他的钱包中。任何输入都可以 仅当它们出现在一次交易中时,才能间接证明它们具有相同的所有者。在 事实上,由于一次性环签名,这种关系更难建立。 通过环签名,鲍勃可以有效地隐藏其他人的每个输入;一切皆有可能 消费者将是等概率的,即使是前任所有者(爱丽丝)也没有比 任何观察者。 当鲍勃签署他的交易时,指定了n个与他的金额相同的外国输出 输出,在没有其他用户参与的情况下混合所有这些。鲍勃本人(以及 其他人)不知道这些付款是否已被花费:可以使用输出 数以千计的签名作为一个模糊因素,而不是作为隐藏的目标。双 支出检查发生在 LNK 阶段,检查已使用的关键映像集。 Bob可以自己选择模糊度:n=1表示他有的概率 花费输出的概率为 50%,n = 99 给出 1%。生成的签名的大小增加 线性为 O(n+1),因此改进的匿名性会让 Bob 付出额外的交易费用。他也可以 设置 n = 0 并使他的环签名仅包含一个元素,但这将立即 揭露他是一个花钱的人。 10 VER:验证者通过应用逆变换来检查签名: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI 最后,验证者检查是否 正压 我=0 词 ? = Hs(m, L′ 0,. 。 。 , L′ n,R′ 0,. 。 。 ,R′ n) 模 l 如果这个等式正确,验证器将运行 LNK 算法。否则验证者拒绝 签名。 LNK:验证器检查 I 是否已在过去的签名中使用过(这些值存储在 集 I)。多次使用意味着两个签名是在同一密钥下生成的。 协议的含义:通过应用 L 变换,签名者证明他知道 这样 x 至少有一个 Pi = xG。为了使这个证明不可重复,我们引入了关键图像 因为 I = xHp(P)。签名者使用相同的系数 (ri, ci) 来证明几乎相同的陈述: 他知道 x 至少有一个 \(H_p(P_i) = I \cdot x^{-1}\)。 如果映射 \(x \to I\) 是一个注入: 1. 任何人都无法从密钥图像中恢复公钥并识别签名者; 2. 签名者不能使用不同的 I 和相同的 x 进行两个签名。 附录 A 提供了完整的安全分析。 4.5 标准 CryptoNote 交易 通过结合这两种方法(不可链接的公钥和不可追踪的环签名),Bob 实现了 与原始 Bitcoin 方案相比,新的隐私级别。它只需要他存储 一个私钥(a,b)并发布(A,B)以开始接收和发送匿名交易。 在验证每笔交易时,Bob 仅对每个输出执行两次椭圆曲线乘法和一次加法,以检查交易是否属于他。为了他的每一个 输出 Bob 恢复一次性密钥对 (pi, Pi) 和 st把它放在他的钱包里。任何输入都可以 仅当它们出现在一次交易中时,才能间接证明它们具有相同的所有者。在 事实上,由于一次性环签名,这种关系更难建立。 通过环签名,鲍勃可以有效地隐藏其他人的每个输入;一切皆有可能 消费者将是等概率的,即使是前任所有者(爱丽丝)也没有比 任何观察者。 当鲍勃签署他的交易时,指定了n个与他的金额相同的外国输出 输出,在没有其他用户参与的情况下混合所有这些。鲍勃本人(以及 其他人)不知道这些付款是否已被花费:可以使用输出 数以千计的签名作为一个模糊因素,而不是作为隐藏的目标。双 支出检查发生在 LNK 阶段,检查已使用的关键映像集。 Bob可以自己选择模糊度:n=1表示他有的概率 花费输出的概率为 50%,n = 99 给出 1%。生成的签名的大小增加 线性为 O(n+1),因此改进的匿名性会让 Bob 付出额外的交易费用。他也可以 设置 n = 0 并使他的环签名仅包含一个元素,但这将立即 揭露他是一个花钱的人。 10 19 此时,我非常困惑。 Alex 收到带有签名 (I,c_1, ..., c_n, r_1, ..., r_n) 和公共列表的消息 M 键 S.,她运行 VER。这将计算 L_i' 和 R_i' 这验证了上一页上的 c_s = c - sum_ineq s c_i。 一开始我很困惑。任何人都可以计算 L_i' 和 R_i'。事实上,每个 r_i 和 c_i 已在签名中发布 sigma 与 I 的值一起。集合 S = 所有公钥的 P_i 也已发布。所以任何看过 sigma 和集合的人 键 S = P_i 将获得相同的 L_i’ 和 R_i’ 值,从而检查签名。 但后来我想起这部分只是描述签名算法,而不是“检查” 如果签名了,请检查是否已发送给我,如果是,则去花钱。”这就是 游戏的签名部分。 当我最终到达那里时,我有兴趣阅读附录 A。 我希望看到 Cryptonote 与 Bitcoin 的全面逐个操作比较。 此外,还有电力/可持续性。 算法的哪些部分构成了这里的“输入”? 我相信,交易输入是一个金额和一组 UTXO,其总和大于 金额。 这还不清楚。 “隐藏的目标?”我已经想了几分钟了,但我仍然没有想到 最模糊的想法是它可能意味着什么。 双花攻击只能通过操纵节点感知的使用密钥来执行 图像集 \(I\)。 “模糊度” = n 但交易中包含的公钥总数为 n+1。也就是说,模糊度是“你想要多少其他人” 人群?” 默认情况下,答案可能是“尽可能多”。
VER:验证者通过应用逆变换来检查签名: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI 最后,验证者检查是否 正压 我=0 词 ? = Hs(m, L′ 0,. 。 。 , L′ n,R′ 0,. 。 。 ,R′ n) 模 l 如果这个等式正确,验证器将运行 LNK 算法。否则验证者拒绝 签名。 LNK:验证器检查 I 是否已在过去的签名中使用过(这些值存储在 集 I)。多次使用意味着两个签名是在同一密钥下生成的。 协议的含义:通过应用 L 变换,签名者证明他知道 这样 x 至少有一个 Pi = xG。为了使这个证明不可重复,我们引入了关键图像 因为 I = xHp(P)。签名者使用相同的系数 (ri, ci) 来证明几乎相同的陈述: 他知道 x 至少有一个 \(H_p(P_i) = I \cdot x^{-1}\)。 如果映射 \(x \to I\) 是一个注入: 1. 任何人都无法从密钥图像中恢复公钥并识别签名者; 2. 签名者不能使用不同的 I 和相同的 x 进行两个签名。 附录 A 提供了完整的安全分析。 4.5 标准 CryptoNote 交易 通过结合这两种方法(不可链接的公钥和不可追踪的环签名),Bob 实现了 与原始 Bitcoin 方案相比,新的隐私级别。它只需要他存储 一个私钥(a,b)并发布(A,B)以开始接收和发送匿名交易。 在验证每笔交易时,Bob 仅对每个输出执行两次椭圆曲线乘法和一次加法,以检查交易是否属于他。为了他的每一个 输出 Bob 恢复一次性密钥对 (pi, Pi) 并将其存储在他的钱包中。任何输入都可以 仅当它们出现在一次交易中时,才能间接证明它们具有相同的所有者。在 事实上,由于一次性环签名,这种关系更难建立。 通过环签名,鲍勃可以有效地隐藏其他人的每个输入;一切皆有可能 消费者将是等概率的,即使是前任所有者(爱丽丝)也没有比 任何观察者。 当鲍勃签署他的交易时,指定了n个与他的金额相同的外国输出 输出,在没有其他用户参与的情况下混合所有这些。鲍勃本人(以及 其他人)不知道这些付款是否已被花费:可以使用输出 数以千计的签名作为一个模糊因素,而不是作为隐藏的目标。双 支出检查发生在 LNK 阶段,检查已使用的关键映像集。 Bob可以自己选择模糊度:n=1表示他有的概率 花费输出的概率为 50%,n = 99 给出 1%。生成的签名的大小增加 线性为 O(n+1),因此改进的匿名性会让 Bob 付出额外的交易费用。他也可以 设置 n = 0 并使他的环签名仅包含一个元素,但这将立即 揭露他是一个花钱的人。 10 VER:验证者通过应用逆变换来检查签名: ( L′ i = riG + ciPi R′ i = riHp(Pi) + ciI 最后,验证者检查是否 正压 我=0 词 ? = Hs(m, L′ 0,. 。 。 , L′ n,R′ 0,. 。 。 ,R′ n) 模 l 如果这个等式正确,验证器将运行 LNK 算法。否则验证者拒绝 签名。 LNK:验证器检查 I 是否已在过去的签名中使用过(这些值存储在 集 I)。多次使用意味着两个签名是在同一密钥下生成的。 协议的含义:通过应用 L 变换,签名者证明他知道 这样 x 至少有一个 Pi = xG。为了使这个证明不可重复,我们引入了关键图像 因为 I = xHp(P)。签名者使用相同的系数 (ri, ci) 来证明几乎相同的陈述: 他知道 x 至少有一个 \(H_p(P_i) = I \cdot x^{-1}\)。 如果映射 \(x \to I\) 是一个注入: 1. 任何人都无法从密钥图像中恢复公钥并识别签名者; 2. 签名者不能使用不同的 I 和相同的 x 进行两个签名。 附录 A 提供了完整的安全分析。 4.5 标准 CryptoNote 交易 通过结合这两种方法(不可链接的公钥和不可追踪的环签名),Bob 实现了 与原始 Bitcoin 方案相比,新的隐私级别。它只需要他存储 一个私钥(a,b)并发布(A,B)以开始接收和发送匿名交易。 在验证每笔交易时,Bob 仅对每个输出执行两次椭圆曲线乘法和一次加法,以检查交易是否属于他。为了他的每一个 输出 Bob 恢复一次性密钥对 (pi, Pi) 和 st把它放在他的钱包里。任何输入都可以 仅当它们出现在一次交易中时,才能间接证明它们具有相同的所有者。在 事实上,由于一次性环签名,这种关系更难建立。 通过环签名,鲍勃可以有效地隐藏其他人的每个输入;一切皆有可能 消费者将是等概率的,即使是前任所有者(爱丽丝)也没有比 任何观察者。 当鲍勃签署他的交易时,指定了n个与他的金额相同的外国输出 输出,在没有其他用户参与的情况下混合所有这些。鲍勃本人(以及 其他人)不知道这些付款是否已被花费:可以使用输出 数以千计的签名作为一个模糊因素,而不是作为隐藏的目标。双 支出检查发生在 LNK 阶段,检查已使用的关键映像集。 Bob可以自己选择模糊度:n=1表示他有的概率 花费输出的概率为 50%,n = 99 给出 1%。生成的签名的大小增加 线性为 O(n+1),因此改进的匿名性会让 Bob 付出额外的交易费用。他也可以 设置 n = 0 并使他的环签名仅包含一个元素,但这将立即 揭露他是一个花钱的人。 10 20 这很有趣;早些时候,我们为接收者 Bob 提供了一种方法来使所有 INCOMING 通过确定性地选择一半的私钥或通过 将他一半的私钥公开。这是一种不走回头路的政策。在这里,我们看到 发送者 Alex 选择单个传出交易作为可链接的一种方式,但实际上这是 向整个网络显示 Alex 是发件人。这不是一种不走回头路的政策。 这是逐笔交易。 还有第三个政策吗?接收方 Bob 能否为 Alex 生成一个唯一的付款 ID? 永远不会改变,也许使用 Dffie-Hellman 交换? 如果有人包含该付款 ID 绑定在她的交易中的某个位置到 Bob 的地址,它一定来自 Alex。 这样,亚历克斯就不需要通过选择链接特定的网络来向整个网络暴露自己。 交易,但她仍然可以向收款人表明自己的身份。 这不是 Poloniex 所做的吗?
交易 发射输入 输出0 。 。 。 输出i 。 。 。 输出n 关键图像 签名 环签名 目的地键 输出1 目的地键 输出n 国外交易 发送者的输出 目的地键 一次性密钥对 一次性 私钥 I = xHp(P) , x 图 7. 标准交易中的环签名生成。 5 平等的工作量证明 在本节中,我们提出并基础了新的 proof-of-work 算法。 我们的首要目标 是缩小 CPU(多数)和 GPU/FPGA/ASIC(少数)矿工之间的差距。它是 适当的是,某些用户可以比其他用户拥有一定的优势,但他们的投资 应至少随功率线性增长。更一般地说,生产专用设备 必须尽可能降低利润。 5.1 相关作品 原始 Bitcoin proof-of-work 协议使用 CPU 密集型定价函数 SHA-256。 它主要由基本逻辑运算符组成,完全依赖于计算速度 因此,处理器非常适合多核/传送器实现。 然而,现代计算机并不仅限于每秒的操作次数, 还受内存大小的影响。虽然某些处理器可能比其他处理器快得多 [8], 机器之间的内存大小不太可能有所不同。 内存限制价格函数首先由 Abadi 等人提出,定义为 “计算时间主要由访问内存所花费的时间决定的函数”[15]。 主要思想是构建一个分配大数据块的算法(“scratchpad”) 在访问速度相对较慢的内存(例如 RAM)中并且“访问 其中不可预测的位置顺序”。一个块应该足够大以保存 数据比每次访问重新计算数据更有利。该算法还应该 防止内部并行,因此 N 个并发线程应该需要 N 倍的内存 立刻。 Dwork 等人 [22] 研究了这种方法并将其形式化,导致他们提出了另一种方法 定价函数的变体:“Mbound”。 另一件作品属于 F. Coelho [20],他 11 交易 发射输入 输出0 。 。 。 输出i 。 。 。 输出n 关键图像 签名 环签名 目的地键 输出1 目的地键 输出n 国外交易 发送者的输出 目的地键 一次性密钥对 一次性 私钥 I = xHp(P) , x 图 7. 标准交易中的环签名生成。 5 平等的工作量证明 在本节中,我们提出并基础了新的 proof-of-work 算法。 我们的首要目标 是缩小 CPU(多数)和 GPU/FPGA/ASIC(少数)矿工之间的差距。它是 适当的是,某些用户可以比其他用户拥有一定的优势,但他们的投资 应至少随功率线性增长。更一般地说,生产专用设备 必须尽可能降低利润。 5.1 相关作品 原始 Bitcoin proof-of-work 协议使用 CPU 密集型定价函数 SHA-256。 它主要由基本逻辑运算符组成,完全依赖于计算速度 因此,处理器非常适合多核/传送器实现。 然而,现代计算机并不仅限于每秒的操作次数, 还受内存大小的影响。虽然某些处理器可能比其他处理器快得多 [8], 机器之间的内存大小不太可能有所不同。 内存限制价格函数首先由 Abadi 等人提出,定义为 “计算时间主要由访问内存所花费的时间决定的函数”[15]。 主要思想是构建一个分配大数据块的算法(“scratchpad”) 在访问速度相对较慢的内存(例如 RAM)中并且“访问 其中不可预测的位置顺序”。一个块应该足够大以保存 数据比每次访问重新计算数据更有利。该算法还应该 防止内部并行,因此 N 个并发线程应该需要 N 倍的内存 立刻。 Dwork 等人 [22] 研究了这种方法并将其形式化,导致他们提出了另一种方法 定价函数的变体:“Mbound”。 另一件作品属于 F. Coelho [20],他 11 21 表面上,这些是我们的 UTXO:金额和目的地键。如果 Alex 是构建此标准交易并将其发送给 Bob 的人,那么 Alex 也拥有私钥 对于每一个。 我非常喜欢这张图,因为它回答了一些之前的问题。 Txn 输入包括 一组 Txn 输出和一个 key 图像。然后用环签名对其进行签名,包括所有 Alex 拥有该交易中所有外国交易的私钥。的 Txn 输出由金额和目标密钥组成。交易的接收者可以, 随意生成他们的一次性私钥,如本文前面所述,以便花费 钱。 很高兴知道这与实际代码有多少匹配...... 不,Nic van Saberhagen 松散地描述了工作量证明算法的一些属性, 没有实际描述该算法。 CryptoNight 算法本身需要深入分析。 当我读到这里时,我结巴了。投资是否应该至少与电力呈线性增长,或者应该 投资增长最多与功率呈线性关系? 然后我意识到;我作为一个矿工,或者一个投资者,通常会想到“我能得到多少算力” 为了投资?”不是“固定电量需要多少投资?” 当然,用 I 表示投资,用 P 表示功率。如果 I(P) 是作为功率函数的投资 P(I) 是作为投资函数的权力,它们将彼此相反(无论何时 逆可以存在)。如果 I(P) 比线性快,那么 P(I) 比线性慢。因此, 投资者的回报率将会降低。 也就是说,作者在这里所说的是:“当然,当你投入更多时,你会得到更多 权力。但我们应该努力降低回报率。” CPU 投资最终将呈次线性上限;问题是作者是否 我们设计了一种 POW 算法,迫使 ASIC 也这样做。 假设的“未来货币”是否应该总是用最慢/最有限的资源来开采? Abadi 等人(作者是一些 Google 和 Microsoft 工程师)的论文是: 本质上,利用在过去几年内存大小已经小得多的事实 机器之间的差异大于处理器速度,并且具有超过线性的投资功率比。 几年后,这可能需要重新评估!一切都是军备竞赛...... 构造 hash 函数很困难;构建满足这些约束的 hash 函数似乎更困难。这篇文章似乎没有解释实际情况 hashing 算法 CryptoNight。我认为这是 SHA-3 的内存困难实现,基于 在论坛帖子上,但我不知道......这就是重点。必须加以解释。
提出了最有效的解决方案:“北海道”。 据我们所知,基于大数组中伪随机搜索思想的最后一项工作是 C. Percival [32] 称为“scrypt”的算法。与之前的功能不同,它专注于 密钥派生,而不是 proof-of-work 系统。尽管如此,scrypt 仍然可以满足我们的目的: 它在部分 hash 转换问题中作为定价函数效果很好,例如 SHA-256 Bitcoin。 到目前为止,scrypt 已经应用于 Litecoin [14] 和其他一些 Bitcoin 分叉中。然而,它的实现并不是真正受内存限制:比率“内存访问时间/总体时间” time”不够大,因为每个实例仅使用 128 KB。这允许 GPU 矿工 大约提高 10 倍,并且继续留下相对创造的可能性 廉价但高效的采矿设备。 此外,scrypt 结构本身允许在内存大小和 CPU 速度是因为暂存器中的每个块都仅源自前一个块。 例如,您可以存储每隔一个块并以惰性方式重新计算其他块,即仅 当有必要时。假设伪随机索引是均匀分布的, 因此额外块重新计算的期望值为1 \(2 \cdot N\),其中N是数字 迭代次数。总体计算时间增加不到一半,因为还有 与时间无关(恒定时间)的操作,例如准备暂存器和 hashing 每次迭代。节省 2/3 的内存成本 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\)=N次额外重新计算; 9/10 结果 1 \(10 \cdot N\)+。 。 。 + 1 \(10 \cdot 9 \cdot N\)=4.5N。很容易证明只存储 1 所有块的 s 增加时间小于 s−1 倍 2.这反过来又意味着具有 CPU 的机器 比现代芯片快200倍,只能存储320字节的暂存器。 5.2 提出的算法 我们为 proof-of-work 定价函数提出了一种新的内存限制算法。它依赖于 随机访问慢速内存并强调延迟依赖性。与 scrypt every 相反 新块(长度为 64 字节)取决于所有先前的块。结果是一个假设的 “内存节省者”应该成倍地提高他的计算速度。 我们的算法每个实例大约需要 2 Mb,原因如下: 1.它适合现代处理器的L3缓存(每个核心),这应该成为主流 几年后; 2. 对于现代 ASIC 流水线来说,1MB 的内部存储器几乎是不可接受的大小; 3. GPU 可以运行数百个并发实例,但它们在其他方面受到限制: GDDR5 内存比 CPU L3 缓存慢,但带宽显着,而不是 随机访问速度。 4. 暂存器的显着扩展将需要增加迭代次数,这在 转向意味着总体时间增加。不信任的 p2p 网络中的“大量”调用可能会导致 严重漏洞,因为节点有义务检查每个新块的 proof-of-work。 如果节点在每次 hash 评估上花费大量时间,则可以轻松地 通过大量具有任意工作数据(nonce 值)的虚假对象进行 DDoS 攻击。 12 提出了最有效的解决方案:“北海道”。 据我们所知,基于大数组中伪随机搜索思想的最后一项工作是 C. Percival [32] 称为“scrypt”的算法。与之前的功能不同,它专注于 密钥派生,而不是 proof-of-work 系统。尽管如此,scrypt 仍然可以满足我们的目的: 它在部分 hash 转换问题中作为定价函数效果很好,例如 SHA-256 Bitcoin。 到目前为止,scrypt 已经应用于 Litecoin [14] 和其他一些 Bitcoin 分叉中。然而,它的实现并不是真正受内存限制:比率“内存访问时间/总体时间” time”不够大,因为每个实例仅使用 128 KB。这允许 GPU 矿工 大约提高 10 倍,并且继续留下相对创造的可能性 廉价但高效的采矿设备。 此外,scrypt 结构本身允许在内存大小和 CPU 速度是因为暂存器中的每个块都仅源自前一个块。 例如,您可以存储每隔一个块并以惰性方式重新计算其他块,即仅 当有必要时。假设伪随机索引是均匀分布的, 因此额外块重新计算的期望值为1 \(2 \cdot N\),其中N 是数字 迭代次数。总体计算时间增加不到一半,因为还有 与时间无关(恒定时间)的操作,例如准备暂存器和 hashing 每次迭代。节省 2/3 的内存成本 1 \(3 \cdot N\)+1 3 \(\cdot\) \(2 \cdot N\)=N次额外重新计算; 9/10 结果 1 \(10 \cdot N\)+。 。 。 + 1 \(10 \cdot 9 \cdot N\)=4.5N。很容易证明只存储 1 所有块的 s 增加时间小于 s−1 倍 2.这反过来又意味着具有 CPU 的机器 比现代芯片快200倍,只能存储320字节的暂存器。 5.2 提出的算法 我们为 proof-of-work 定价函数提出了一种新的内存限制算法。它依赖于 随机访问慢速内存并强调延迟依赖性。与 scrypt every 相反 新块(长度为 64 字节)取决于所有先前的块。结果是一个假设的 “内存节省者”应该成倍地提高他的计算速度。 我们的算法每个实例大约需要 2 Mb,原因如下: 1.它适合现代处理器的L3缓存(每个核心),这应该成为主流 几年后; 2. 对于现代 ASIC 流水线来说,1MB 的内部存储器几乎是不可接受的大小; 3. GPU 可以运行数百个并发实例,但它们在其他方面受到限制: GDDR5 内存比 CPU L3 缓存慢,但带宽显着,而不是 随机访问速度。 4. 暂存器的显着扩展将需要增加迭代次数,这在 转向意味着总体时间增加。不信任的 p2p 网络中的“大量”调用可能会导致 严重漏洞,因为节点有义务检查每个新块的 proof-of-work。 如果节点在每次 hash 评估上花费大量时间,则可以轻松地 通过大量具有任意工作数据(nonce 值)的虚假对象进行 DDoS 攻击。 12 22 没关系,这是一个加密货币? 算法在哪里?我看到的都是广告。 如果 Cryptonote 的 PoW 算法值得的话,这就是 Cryptonote 真正大放异彩的地方。这不是 真的SHA-256,它并不是真正的scrypt。它是新的、受内存限制且非递归的。
6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡成本和费用利润之间的权衡,并设定自己的 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡之间的权衡e 费用和利润,并自行设定 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 23 原子单位。我喜欢这样。这相当于中本聪吗? 如果是这样,那就意味着将有 1850 亿枚加密货币。 我知道这最终必须在几页中进行调整,或者可能存在拼写错误? 如果基本奖励是“所有剩余的硬币”,那么只有一个区块就足以获得所有硬币。 即时。 另一方面,如果这应该以某种方式与 现在与某个硬币生产终止日期之间的时间差? 那会 有道理。 另外,在我的世界里,像这样的两个大于符号意味着“远大于”。作者有没有 可能意味着别的什么? 如果每个区块都进行难度调整,那么攻击者可能会拥有一个非常大的农场 机器在精心选择的时间间隔内断断续续地挖矿。如果难度调整公式没有得到适当的抑制,这可能会导致难度的混乱爆炸(或崩溃到零)。 毫无疑问,Bitcoin的方法不适合快速重新计算,但惯性的思想 这些系统中的功能需要得到证明,而不是想当然。此外,振荡 网络困难不一定是问题,除非它导致表面上的振荡 硬币的供应 - 以及快速变化的难度可能会导致“过度修正”。 所花费的时间,特别是在几分钟之类的短时间内,将与“总时间”成正比。 网络上创建的块数。”比例常数本身会增长 随着时间的推移,如果 CN 起飞的话,可能会呈指数级增长。 简单地调整难度以保持“在网络上创建的总块数”可能是一个更好的主意。 自最后一个区块被添加到主链以来的网络”在某个恒定值内,或者 有界变化或类似的东西。如果自适应算法在计算上 可以确定容易实施,这样看来问题就解决了。 但是,如果我们使用这种方法,拥有大型矿场的人可能会关闭他们的矿场 几个小时,然后再次打开它。对于前几个街区,该农场将生产 银行。 所以,实际上,这种方法会提出一个有趣的观点:挖矿(平均而言)变成了 在没有投资回报的情况下输掉比赛,尤其是随着越来越多的人跳上网络。如果挖矿难度 非常密切跟踪的网络 hashrate,我以某种方式怀疑人们会像他们一样开采 目前正在做。 或者,另一方面,他们可能不会让矿场 24/7 持续运转,而是将其转变为 开启 6 小时,关闭 2 小时,开启 6 小时,关闭 2 小时,或类似的时间。只需换成另一种硬币即可 几个小时,等待难度下降,然后重新开始以获得额外的难度 随着网络的适应,盈利能力受到阻碍。你知道吗?这其实大概是 我全心投入的更好的采矿场景之一...... 这可能是循环的,但如果块创建时间平均约为一分钟,我们可以 使用块数作为“花费时间”的代理?
6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡成本和费用利润之间的权衡,并设定自己的 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡之间的权衡e 费用和利润,并自行设定 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 24 好的,我们有一个 blockchain,每个块都有时间戳 订购了。这显然是为了调整难度而插入的,因为时间戳是 如前所述,非常不可靠。我们是否允许链中存在相互矛盾的时间戳? 如果区块 A 在链中出现在区块 B 之前,并且在财务方面一切都是一致的, 但 A 区似乎是在 B 区之后创建的?因为,也许有人拥有 网络的很大一部分?可以吗? 可能是因为财务状况没有出现问题。 好吧,所以我讨厌这种任意的“只有 80% 的块对于主 blockchain 是合法的” 方法。它的目的是防止骗子调整他们的时间戳?但现在,它增加了 激励每个人谎报自己的时间戳并只选择中位数。 请定义。 意思是“对于这个区块,只包括费用更大的交易” 高于 p%,优先收取高于 2p% 的费用”或类似的费用? 他们说的假货是什么意思? 如果交易与过去的历史一致 blockchain,并且交易包含了让矿工满意的费用,这还不够吗?嗯, 不,不一定。如果不存在最大块大小,则没有什么可以阻止恶意用户 从简单地一次性上传大量交易给自己只是为了放慢速度 网络。 最大块大小的核心规则可以防止人们放入大量垃圾 一次性将 blockchain 上的数据全部删除,只是为了减慢速度。但这样的规则当然必须 具有适应性 - 例如,在圣诞节期间,我们预计流量会激增,并且 块大小变得非常大,然后立即块大小随后下降 再次。因此,我们需要 a) 某种自适应上限或 b) 足够大的上限,以便 99% 合理的圣诞节高峰不会突破上限。当然,第二个是不可能的 估计——谁知道某种货币是否会流行?最好让它适应而不用担心 关于它。但接下来我们有一个控制理论问题:如何在没有 容易受到攻击或疯狂的振荡? 请注意,自适应方法并不能阻止恶意用户积累少量资金 随着时间的推移,blockchain 上的垃圾数据会导致长期膨胀。这是一个不同的问题 总的来说,加密货币存在严重的问题。
6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡成本和费用利润之间的权衡,并设定自己的 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 6 更多优点 6.1 平稳发射 CryptoNote 数字货币总量的上限为:MSupply = 264 −1 原子单位。这是仅基于实现限制而不是直觉的自然限制 比如“N个币对任何人来说都应该足够了”。 为了保证发射过程的顺利,我们对块使用以下公式 奖励: 基础奖励 = (MSupply −A) ≫18, 其中 A 是先前生成的硬币数量。 6.2 可调参数 6.2.1 难度 CryptoNote 包含一个目标算法,可以改变每个块的难度。这个 当网络 hashrate 急剧增长或收缩时,减少系统的反应时间, 保持恒定的块率。原始的 Bitcoin 方法计算实际的关系 和最后 2016 个区块之间的目标时间跨度,并将其用作当前区块的乘数 困难。显然这不适合快速重新计算(因为惯性大)并且 导致振荡。 我们算法背后的总体思想是将节点完成的所有工作相加 除以他们花费的时间。工作量的衡量标准是相应的难度值 在每个块中。但由于时间戳不准确且不受信任,我们无法确定确切的时间 块之间的时间间隔。用户可以将他的时间戳转移到未来和下一个时间 间隔可能很小甚至是负值。估计会出现很少的情况 这种情况下,我们可以对时间戳进行排序并剔除异常值(即 20%)。范围为 其余值是 80% 的相应块所花费的时间。 6.2.2 尺寸限制 用户支付存储 blockchain 的费用,并有权对其大小进行投票。 每个矿工 处理平衡之间的权衡e 费用和利润,并自行设定 用于创建块的“软限制”。最大块大小的核心规则对于 防止 blockchain 被虚假交易淹没,但是该值应该 不要硬编码。 令 MN 为最后 N 个块大小的中值。然后是大小的“硬限制” 接受块的数量是2 \(\cdot\) MN。它可以避免 blockchain 膨胀,但仍然允许限制 如果有必要的话,会随着时间慢慢增长。 交易大小不需要明确限制。它受块大小的限制; 如果有人想创建一个具有数百个输入/输出(或具有 环签名的高度模糊性),他可以通过支付足够的费用来做到这一点。 6.2.3 尺寸过大的处罚 矿工仍然有能力将自己的零费用交易塞满区块,直至达到最大值 大小 \(2 \cdot M_b\)。尽管只有大多数矿工可以改变中值,但仍然存在 13 25 重新调整时间,使一个时间单位为 N 个块,理论上,平均块大小仍然可以按指数比例增长到 2ˆt。另一方面,更通用的上限 对于某个函数 f,下一个块将是 M_nf(M_n)。 f 有哪些性质 我们选择是为了保证区块大小的“合理增长”?的进展 块大小(重新调整时间后)将如下所示: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... 这里的目标是选择 f 使得该序列的增长速度不超过线性增长速度, 或者甚至可以作为 Log(t)。当然,如果 f(M_n) = a 对于某个常数 a,则该序列为 实际上 M_n aM_n a^2M_n a^3M_n ... 当然,限制至多线性增长的唯一方法是选择 a=1。 这当然是不可行的。它根本不允许生长。 另一方面,如果 f(M_n) 是一个非常数函数,那么情况就更复杂了 复杂,并且可以提供优雅的解决方案。我会考虑一下这个问题。 该费用必须足够大,才能抵消下一部分的超额罚款。 为什么一般用户被假定为男性,嗯?啊?
可能会使 blockchain 膨胀并在节点上产生额外的负载。劝阻 对于创建大区块的恶意参与者,我们引入了惩罚函数: 新奖励=基础奖励 \(\cdot\) 块大小 明尼苏达州 −1 2 仅当 BlkSize 大于最小空闲块大小时才应用此规则,而最小空闲块大小应 接近max(10kb, \(M_N \cdot 110\%\))。矿工可以创建“正常大小”的区块,甚至 当总费用超过罚款时,利润就超过了罚款。但费用不太可能增长 与惩罚值不同,是二次方,因此会存在平衡。 6.3 交易脚本 CryptoNote 有一个非常简约的脚本子系统。发送者指定一个表达式 Φ = f (x1, x2, ..., xn),其中 n 是目标公钥 {Pi}n 的数量 我=1。只有五个二进制 支持运算符:min、max、sum、mul 和 cmp。当收款人花掉这笔款项时, 他产生 \(0 \leq k \leq n\) 签名并将它们传递到交易输入。验证过程 只需使用 xi = 1 计算 Φ,以检查公钥 Pi 的有效签名,并且 xi = 0。 验证者在 iffΦ > 0 时接受该证明。 尽管很简单,但这种方法涵盖了所有可能的情况: • 多重/阈值签名。对于 Bitcoin 风格的“M-out-of-N”多重签名(即 接收方应提供至少 \(0 \leq M \leq N\) 个有效签名) Φ = x1+x2+。 。 .+xN\(\geq M\) (为了清楚起见,我们使用常见的代数符号)。加权阈值签名 (某些键可能比其他键更重要)可以表示为 Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\)+ . 。 。 + \(w_N \cdot x_N\) \(\geq wM\)。主密钥对应的场景 Φ = max(\(M \cdot x\), x1 + x2 + ... + xN) \(\geq M\)。很容易证明任何复杂的情况都可以 用这些运算符表示,即它们构成基础。 • 密码保护。拥有秘密密码 s 相当于知道 私钥,确定性地从密码导出:k = KDF(s)。因此,接收器 可以通过在密钥 k 下提供另一个签名来证明他知道密码。 发送者只需将相应的公钥添加到他自己的输出中即可。请注意,这 方法比 Bitcoin [13] 中使用的“交易谜题”安全得多,其中 密码在输入中显式传递。 • 退化的情况。 Φ = 1 意味着任何人都可以花这笔钱; Φ = 0 标志着 产出不能永远使用。 如果与公钥结合的输出脚本对于发送者来说太大,他 可以使用特殊的输出类型,这表明接收者会将这些数据放入他的输入中 而发件人仅提供其中的 hash 。这种方法类似于 Bitcoin 的“pay-to-hash” 功能,但我们没有添加新的脚本命令,而是在数据结构中处理这种情况 水平。 7 结论 我们调查了 Bitcoin 中的主要缺陷并提出了一些可能的解决方案。这些有利的功能和我们不断的开发使得新的电子现金系统 CryptoNote Bitcoin 的有力竞争对手,超越了它的所有叉子。 14 可能会使 blockchain 膨胀并在节点上产生额外的负载。劝阻 对于创建大区块的恶意参与者,我们引入了惩罚函数: 新奖励=基础奖励 \(\cdot\) 块大小 明尼苏达州 −1 2 仅当 BlkSize 大于最小空闲块大小时才应用此规则,而最小空闲块大小应 接近max(10kb, \(M_N \cdot 110\%\))。矿工可以创建“正常大小”的区块,甚至 当总费用超过罚款时,利润就超过了罚款。但费用不太可能增长 与惩罚值不同,是二次方,因此会存在平衡。 6.3 交易脚本 CryptoNote 有一个非常简约的脚本子系统。发送者指定一个表达式 Φ = f (x1, x2, ..., xn),其中 n 是目标公钥 {Pi}n 的数量 我=1。只有五个二进制 支持运算符:min、max、sum、mul 和 cmp。当收款人花掉这笔款项时, 他产生 \(0 \leq k \leq n\) 签名并将它们传递到交易输入。验证过程 只需使用 xi = 1 计算 Φ,以检查公钥 Pi 的有效签名,并且 xi = 0。 验证者在 iffΦ > 0 时接受该证明。 尽管很简单,但这种方法涵盖了所有可能的情况: • 多重/阈值签名。对于 Bitcoin 风格的“M-out-of-N”多重签名(即 接收方应提供至少 \(0 \leq M \leq N\) 个有效签名) Φ = x1+x2+。 。 .+xN\(\geq M\) (为了清楚起见,我们使用常见的代数符号)。加权阈值签名 (某些键可能比其他键更重要)可以表示为 Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\)+ . 。 。 + \(w_N \cdot x_N\) \(\geq wM\)。和场景io 其中主密钥对应于 Φ = max(\(M \cdot x\), x1 + x2 + ... + xN) \(\geq M\)。很容易证明任何复杂的情况都可以 用这些运算符表示,即它们构成基础。 • 密码保护。拥有秘密密码 s 相当于知道 私钥,确定性地从密码导出:k = KDF(s)。因此,接收器 可以通过在密钥 k 下提供另一个签名来证明他知道密码。 发送者只需将相应的公钥添加到他自己的输出中即可。请注意,这 方法比 Bitcoin [13] 中使用的“交易难题”安全得多,其中 密码在输入中显式传递。 • 退化的情况。 Φ = 1 意味着任何人都可以花这笔钱; Φ = 0 标志着 产出不能永远使用。 如果与公钥结合的输出脚本对于发送者来说太大,他 可以使用特殊的输出类型,这表明接收者会将这些数据放入他的输入中 而发件人仅提供其中的 hash 。这种方法类似于 Bitcoin 的“pay-to-hash” 功能,但我们没有添加新的脚本命令,而是在数据结构中处理这种情况 水平。 7 结论 我们调查了 Bitcoin 中的主要缺陷并提出了一些可能的解决方案。这些有利的功能和我们不断的开发使得新的电子现金系统 CryptoNote Bitcoin 的有力竞争对手,超越了它的所有叉子。 14 26 如果我们能找到一种随着时间的推移限制块大小的方法,这可能是不必要的...... 这也不可能是正确的。他们只是将“NewReward”设置为向上的抛物线,其中 块大小是自变量。所以新的奖励会增加到无穷大。如果,另一方面 手,新的奖励是Max(0,Base Reward(1-(BlkSize/Mn - 1)ˆ2)),那么新的奖励 将是一个向下的抛物线,其峰值位于块大小 = Mn,截距为 块大小 = 0 且块大小 = 2Mn。这似乎就是他们想要描述的。 然而,这并不
Giao dịch không thể theo dõi
Trong phần này, chúng tôi đề xuất một sơ đồ các giao dịch ẩn danh hoàn toàn thỏa mãn cả khả năng không thể theo dõi
và điều kiện không thể liên kết. Một tính năng quan trọng trong giải pháp của chúng tôi là tính tự chủ của nó: người gửi
không bắt buộc phải hợp tác với người dùng khác hoặc bên thứ ba đáng tin cậy để thực hiện các giao dịch của mình;
do đó mỗi người tham gia tạo ra một lưu lượng truy cập bìa một cách độc lập.
4.1
Bình luận văn học
Sơ đồ của chúng tôi dựa trên nguyên tắc mật mã được gọi là chữ ký nhóm. Lần đầu tiên được trình bày bởi
D. Chaum và E. van Heyst [19], nó cho phép người dùng ký vào tin nhắn của mình thay mặt cho nhóm.
Sau khi ký tin nhắn, người dùng cung cấp (vì mục đích xác minh) chứ không phải thông tin công khai của riêng mình
1Đây được gọi là “giới hạn mềm” — hạn chế máy khách tham chiếu để tạo khối mới. Tối đa cứng của
kích thước khối có thể là 1 MB
4
chúng nếu cần thiết sẽ gây ra những hạn chế chính. Thật không may, thật khó để dự đoán khi nào
các hằng số có thể cần phải được thay đổi và việc thay thế chúng có thể dẫn đến những hậu quả khủng khiếp.
Một ví dụ điển hình về thay đổi giới hạn được mã hóa cứng dẫn đến hậu quả tai hại là khối
giới hạn kích thước được đặt thành 250kb1. Giới hạn này đủ để chứa khoảng 10000 giao dịch tiêu chuẩn. trong
đầu năm 2013, giới hạn này gần như đã đạt được và đạt được thỏa thuận nhằm tăng
giới hạn. Thay đổi được triển khai trong phiên bản ví 0.8 và kết thúc bằng việc chia chuỗi 24 khối
và một cuộc tấn công chi tiêu gấp đôi thành công [9]. Mặc dù lỗi không nằm trong giao thức Bitcoin nhưng
đúng hơn là trong công cụ cơ sở dữ liệu, nó có thể dễ dàng bị phát hiện bằng một bài kiểm tra căng thẳng đơn giản nếu có
không có giới hạn kích thước khối được giới thiệu một cách giả tạo.
Các hằng số cũng hoạt động như một dạng điểm tập trung.
Bất chấp bản chất ngang hàng của
Bitcoin, phần lớn các nút sử dụng ứng dụng khách tham chiếu chính thức [10] được phát triển bởi
một nhóm nhỏ người Nhóm này đưa ra quyết định thực hiện các thay đổi đối với giao thức
và hầu hết mọi người đều chấp nhận những thay đổi này bất kể “tính đúng đắn” của chúng. Một số quyết định gây ra
các cuộc thảo luận sôi nổi và thậm chí còn kêu gọi tẩy chay [11], điều này cho thấy rằng cộng đồng và
các nhà phát triển có thể không đồng ý ở một số điểm quan trọng. Do đó, có vẻ hợp lý khi có một giao thức
với các biến do người dùng cấu hình và tự điều chỉnh như một cách có thể để tránh những vấn đề này.
2,5
Tập lệnh cồng kềnh
Hệ thống tập lệnh trong Bitcoin là một tính năng nặng nề và phức tạp. Nó có khả năng cho phép người ta tạo ra
các giao dịch phức tạp [12], nhưng một số tính năng của nó bị vô hiệu hóa do lo ngại về bảo mật và
một số thậm chí chưa bao giờ được sử dụng [13]. Kịch bản (bao gồm cả phần người gửi và người nhận)
đối với giao dịch phổ biến nhất trong Bitcoin trông như thế này:
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa chung có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 8 Chữ ký vòng hoạt động như thế này: Alex muốn tiết lộ một thông điệp tới WikiLeaks về chủ nhân của cô ấy. Mỗi nhân viên trong Công ty của cô đều có một cặp khóa riêng/chung (Ri, Ui). Cô ấy sáng tác chữ ký của cô ấy với thông tin đầu vào được đặt là tin nhắn của cô ấy, m, khóa riêng của cô ấy, Ri và MỌI NGƯỜI khóa công khai, (Ui;i=1...n). Bất kỳ ai (không biết bất kỳ khóa riêng nào) đều có thể xác minh dễ dàng rằng cặp some (Rj, Uj) phải được sử dụng để tạo chữ ký... ai đó làm việc cho người chủ của Alex... nhưng về cơ bản đó chỉ là phỏng đoán ngẫu nhiên để tìm ra đó có thể là ai. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Lưu ý rằng chữ ký vòng có thể liên kết được mô tả ở đây trái ngược với "không thể liên kết" được mô tả ở trên. Ở đây, chúng tôi chặn hai tin nhắn và chúng tôi có thể xác định xem liệu chúng có giống nhau không bên đã gửi chúng, mặc dù chúng tôi vẫn không thể xác định được bên đó là ai. các định nghĩa "không thể liên kết" được sử dụng để xây dựng Cryptonote có nghĩa là chúng tôi không thể xác định liệu cùng một bên đang nhận chúng. Do đó, những gì chúng ta thực sự có ở đây là BỐN điều đang diễn ra. Một hệ thống có thể được liên kết hoặc không thể liên kết được, tùy thuộc vào việc có thể xác định được người gửi của hai tin nhắn giống nhau (bất kể điều này có yêu cầu thu hồi tính ẩn danh hay không). Và một hệ thống có thể không thể liên kết được hoặc không thể hủy liên kết được, tùy thuộc vào việc có thể thực hiện được hay không. xác định xem người nhận hai tin nhắn có giống nhau hay không (bất kể có hay không điều này yêu cầu thu hồi ẩn danh). Xin đừng trách tôi vì thuật ngữ khủng khiếp này. Các nhà lý thuyết đồ thị có lẽ nên hài lòng. Một số bạn có thể cảm thấy thoải mái hơn với "có thể liên kết được với người nhận" so với "có thể liên kết được với người gửi". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Khi tôi đọc điều này, đây có vẻ là một tính năng ngớ ngẩn. Sau đó tôi đọc được rằng nó có thể là một tính năng dành cho bỏ phiếu điện tử, và điều đó có vẻ hợp lý. Thật tuyệt, từ quan điểm đó. Nhưng tôi không hoàn toàn chắc chắn về việc cố tình thực hiện chữ ký vòng có thể theo dõi. http://search.ieice.org/bin/summary.php?id=e95-a_1_151
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 9 Trời ơi, tác giả của sách trắng này chắc chắn có thể diễn đạt điều này tốt hơn! Hãy nói rằng một công ty do nhân viên sở hữu muốn bỏ phiếu về việc có nên mua một số sản phẩm mới hay không tài sản, Alex và Brenda đều là nhân viên. Công ty cung cấp cho mỗi nhân viên một thông báo như "Tôi bỏ phiếu đồng ý cho Dự luật A!" có "vấn đề" siêu thông tin [ĐỀ XUẤT A] và yêu cầu họ ký vào đó bằng chữ ký vòng có thể theo dõi được nếu họ ủng hộ đề xuất. Sử dụng chữ ký vòng truyền thống, một nhân viên không trung thực có thể ký tin nhắn nhiều lần, có lẽ là với nonce khác nhau, để bỏ phiếu bao nhiêu lần tùy thích. Mặt khác tay, trong sơ đồ chữ ký vòng có thể theo dõi, Alex sẽ bỏ phiếu và khóa riêng của cô ấy sẽ có đã được sử dụng trong vấn đề [ĐỀ XUẤT A]. Nếu Alex cố gắng ký một tin nhắn như "Tôi, Brenda, chấp thuận đề xuất A!” để "đóng khung" Brenda và bỏ phiếu kép, tin nhắn mới này cũng sẽ có vấn đề [ĐỀ XUẤT A]. Vì khóa riêng của Alex đã giải quyết được vấn đề [PROP A] nên danh tính của Alex sẽ ngay lập tức bị phát hiện là lừa đảo. Mà, đối mặt với nó, là khá tuyệt! Mật mã thực thi sự bình đẳng trong bỏ phiếu. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Bài viết này rất thú vị, về cơ bản là tạo ra một chữ ký vòng đặc biệt nhưng không có bất kỳ sự đồng ý của người tham gia khác. Cấu trúc chữ ký có thể khác nhau; Tôi chưa đào sâu và tôi chưa biết liệu nó có an toàn hay không. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Chữ ký nhóm đặc biệt là: chữ ký vòng, là chữ ký nhóm không có nhóm người quản lý, không tập trung hóa, nhưng cho phép một thành viên trong một nhóm đặc biệt tuyên bố một cách có căn cứ rằng nó đã (không) ban hành chữ ký ẩn danh thay mặt cho nhóm. http://link.springer.com/chapter/10.1007/11908739_9 Điều này không hoàn toàn chính xác, theo sự hiểu biết của tôi. Và sự hiểu biết của tôi có thể sẽ thay đổi khi Tôi hiểu sâu hơn về dự án này. Nhưng theo hiểu biết của tôi, hệ thống phân cấp trông như thế này. Dấu hiệu nhóm: người quản lý nhóm kiểm soát khả năng truy xuất nguồn gốc và khả năng thêm hoặc xóa thành viên từ việc trở thành người ký kết. Ring sigs: Thành lập nhóm tùy ý không có người quản lý nhóm. Không thu hồi ẩn danh. Không có cách nào để từ chối chính mình từ một chữ ký cụ thể. Với vòng có thể theo dõi và liên kết được chữ ký, tính ẩn danh có thể mở rộng được phần nào. Chữ ký nhóm đặc biệt: giống như chữ ký vòng, nhưng các thành viên có thể chứng minh rằng họ không tạo ra một chữ ký cụ thể. Điều này rất quan trọng khi bất kỳ ai trong nhóm đều có thể tạo ra chữ ký. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Thuật toán của Fujisaki và Suzuki sau đó được tác giả điều chỉnh để mang lại tính chất một lần. Vì vậy chúng ta sẽ phân tích thuật toán của Fujisaki và Suzuki đồng thời với thuật toán mới thay vì hơn là đi qua nó ở đây.
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 10 Khả năng liên kết theo nghĩa "chữ ký vòng có thể liên kết" có nghĩa là chúng tôi có thể biết liệu hai giao dịch gửi đi có đến từ cùng một nguồn hay không mà không tiết lộ nguồn đó là ai. Tác giả suy yếu khả năng liên kết để (a) bảo vệ quyền riêng tư nhưng vẫn (b) phát hiện bất kỳ giao dịch nào bằng khóa riêng lần thứ hai là không hợp lệ. Được rồi, đây là câu hỏi về thứ tự sự kiện. Hãy xem xét kịch bản sau đây. Khai thác của tôi máy tính sẽ có blockchain hiện tại, nó sẽ có khối giao dịch riêng mà nó gọi hợp pháp, nó sẽ hoạt động trên khối đó trong câu đố proof-of-work và nó sẽ có một danh sách các giao dịch đang chờ xử lý sẽ được thêm vào khối tiếp theo. Nó cũng sẽ gửi bất kỳ thông tin mới nào giao dịch vào nhóm giao dịch đang chờ xử lý đó. Nếu tôi không giải được khối tiếp theo, nhưng người khác làm vậy, tôi nhận được bản sao cập nhật của blockchain. Khối tôi đang làm việc và danh sách các giao dịch đang chờ xử lý của tôi đều có thể có một số giao dịch hiện đã được kết hợp vào blockchain. Làm sáng tỏ khối đang chờ xử lý của tôi, kết hợp khối đó với danh sách các giao dịch đang chờ xử lý của tôi và gọi đó là nhóm giao dịch đang chờ xử lý của tôi. Xóa mọi thứ hiện có chính thức trong blockchain. Bây giờ tôi phải làm gì? Trước tiên tôi có nên xem qua và "loại bỏ tất cả các khoản chi tiêu gấp đôi" không? Mặt khác tay, tôi có nên tìm kiếm trong danh sách và đảm bảo rằng mỗi khóa riêng tư đều chưa được được sử dụng và nếu nó đã được sử dụng trong danh sách của tôi thì tôi đã nhận được bản sao đầu tiên trước, và do đó bất kỳ bản sao nào nữa là bất hợp pháp. Vì vậy, tôi tiến hành xóa tất cả các phiên bản sau lần đầu tiên của cùng một khóa riêng. Hình học đại số chưa bao giờ là điểm mạnh của tôi. http://en.wikipedia.org/wiki/EdDSA Tốc độ như vậy, nhiều wow. ĐÂY là hình học đại số để giành chiến thắng. Không phải là tôi biết bất cứ điều gì về điều đó. Có vấn đề hay không, các nhật ký rời rạc đang hoạt động rất nhanh. Và máy tính lượng tử ăn chúng cho bữa sáng. http://link.springer.com/article/10.1007/s13389-012-0027-1 Đây trở thành một con số thực sự quan trọng, nhưng không có lời giải thích hay trích dẫn nào về việc nó đã được chọn. Đơn giản chỉ cần chọn một số nguyên tố lớn đã biết là được, nhưng nếu có sự thật về số nguyên tố lớn này, điều đó có thể ảnh hưởng đến sự lựa chọn của chúng ta. Các biến thể khác nhau của tiền điện tử có thể chọn các giá trị khác nhau của ồ, nhưng không có cuộc thảo luận nào trong bài viết này về cách điều đó sự lựa chọn sẽ ảnh hưởng đến sự lựa chọn của chúng ta về các thông số tổng thể khác được liệt kê ở trang 5. Bài viết này cần một phần về việc lựa chọn các giá trị tham số.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 11 Vì vậy, điều này giống như Bitcoin, nhưng với Hộp thư bưu điện ẩn danh, vô hạn, chỉ người nhận mới có thể đổi tạo khóa riêng ẩn danh như chữ ký vòng có thể. Bitcoin hoạt động theo cách này. Nếu Alex có 0,112 Bitcoin trong ví mà cô ấy vừa nhận được từ Frank thì cô ấy thực sự có chữ ký tin nhắn "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N0" trong đó 1) Frank đã ký vào tin nhắn bằng khóa riêng của anh ấy [FRANK], 2) Frank đã ký tin nhắn với công khai của Alex key, [alex], 3) Frank đã đưa vào một số dạng lịch sử của bitcoin, H0 và 4) Frank bao gồm một bit dữ liệu ngẫu nhiên được gọi là nonce, N0. Sau đó, nếu Alex muốn gửi 0,011 Bitcoin cho Charlene, cô ấy sẽ nhận tin nhắn của Frank và cô ấy sẽ đặt giá trị đó thành H1 và ký hai tin nhắn: một cho giao dịch của cô ấy và một cho thay đổi. H1= "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N" "Tôi, [ALEX], gửi 0,011 Bitcoin tới [charlene] + H1 + N1" "Tôi, [ALEX], gửi 0,101 Bitcoin khi thay đổi thành [alex] + H1 + N2." trong đó Alex ký cả hai tin nhắn bằng khóa riêng của cô ấy [ALEX], tin nhắn đầu tiên bằng khóa riêng của Charlene. khóa công khai [charlene], tin nhắn thứ hai có khóa công khai [alex] của Alex và bao gồm cả lịch sử và một số nonces N1 và N2 được tạo ngẫu nhiên một cách thích hợp. Tiền điện tử hoạt động theo cách này: Nếu Alex có 0,112 tiền điện tử trong ví mà cô ấy vừa nhận được từ Frank, thì cô ấy thực sự có một tờ tiền đã ký. tin nhắn "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 Cryptonote đến [địa chỉ một lần] + H0 + N0.” Alex phát hiện ra rằng đây là tiền của cô ấy bằng cách kiểm tra khóa riêng [ALEX] của cô ấy. [địa chỉ một lần] cho mỗi tin nhắn gửi đi và nếu cô ấy muốn sử dụng nó, cô ấy sẽ làm như vậy cách sau đây. Cô ấy chọn người nhận tiền, có lẽ Charlene đã bắt đầu bỏ phiếu cho các cuộc tấn công bằng máy bay không người lái nên Alex muốn gửi tiền cho Brenda. Vì vậy, Alex tra cứu khóa công khai của Brenda, [brenda], và sử dụng khóa riêng của cô ấy, [ALEX], để tạo địa chỉ một lần [ALEX+brenda]. Cô ấy sau đó chọn một bộ sưu tập C tùy ý từ mạng lưới người dùng tiền điện tử và cô ấy xây dựng một chữ ký vòng từ nhóm đặc biệt này. Chúng tôi đặt lịch sử của mình làm tin nhắn trước đó, thêm nonces và tiếp tục như bình thường? H1 = "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 tiền điện tử đến [địa chỉ một lần] + H0 + N0.” "Tôi, [ai đó trong bộ sưu tập C], gửi 0,011 Cryptonote tới [địa chỉ một lần được tạo từALEX+brenda] + H1 + N1" "Tôi, [ai đó trong bộ sưu tập C], gửi 0.101 Cryptonote dưới dạng thay đổi thành [địa chỉ một lần-madefrom-ALEX+alex] + H1 + N2" Bây giờ, Alex và Brenda đều quét tất cả các tin nhắn đến để tìm bất kỳ địa chỉ một lần nào đã được lưu trữ. được tạo bằng chìa khóa của họ. Nếu họ tìm thấy thì tin nhắn đó là tin nhắn hoàn toàn mới của họ. tiền điện tử! Và thậm chí sau đó, giao dịch vẫn sẽ đạt blockchain. Nếu đồng tiền nhập vào địa chỉ đó được biết là được gửi từ tội phạm, những người đóng góp chính trị hoặc từ các ủy ban và tài khoản với ngân sách nghiêm ngặt (tức là tham ô) hoặc nếu chủ sở hữu mới của những đồng tiền này mắc sai lầm và gửi những đồng tiền này đến một địa chỉ chung với những đồng tiền mà anh ta được biết là sở hữu, khuôn mẫu ẩn danh bitcoin tăng giá.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 12 Do đó, thay vì người dùng gửi tiền từ địa chỉ (thực sự là khóa công khai) đến địa chỉ (một khóa công khai khác) bằng cách sử dụng khóa riêng của họ, người dùng sẽ gửi tiền từ hộp thư bưu điện một lần (đang tạo bằng khóa chung của bạn bè bạn) tới hộp thư bưu điện một lần (tương tự) bằng cách sử dụng khóa riêng của mình. Theo một nghĩa nào đó, chúng tôi đang nói "Được rồi, mọi người hãy rút tiền ra khi nó đang diễn ra." chuyển xung quanh! Chỉ cần biết rằng chìa khóa của chúng ta có thể mở được chiếc hộp đó là đủ chúng ta biết trong hộp có bao nhiêu tiền. Đừng bao giờ để dấu vân tay của bạn trên Hộp thư bưu điện hoặc thực sự sử dụng nó, chỉ cần trao đổi chiếc hộp chứa đầy tiền mặt. Bằng cách đó chúng tôi không biết ai đã gửi cái gì, nhưng nội dung của những địa chỉ công cộng này vẫn không có ma sát, có thể thay thế được, có thể chia được và vẫn sở hữu tất cả những phẩm chất tốt đẹp khác của tiền mà chúng ta mong muốn như bitcoin.” Một tập hợp vô hạn các hộp PO. Bạn công bố địa chỉ, tôi có khóa riêng. Tôi sử dụng khóa riêng của tôi và địa chỉ của bạn, và một số dữ liệu ngẫu nhiên để tạo khóa công khai. Thuật toán được thiết kế sao cho, vì địa chỉ đã được sử dụng để tạo khóa chung, chỉ khóa riêng CỦA BẠN mới hoạt động để mở khóa tin nhắn. Một người quan sát, Eve, thấy bạn công bố địa chỉ của mình và thấy khóa công khai mà tôi công bố. Tuy nhiên, cô ấy không biết liệu tôi đã công bố khóa công khai của mình dựa trên địa chỉ của bạn hay của cô ấy, hay của Brenda hoặc của Charlene, hoặc của bất cứ ai. Cô ấy kiểm tra khóa riêng của mình với khóa chung mà tôi đã thông báo và thấy nó không hoạt động; đó không phải là tiền của cô ấy. Cô ấy không biết khóa riêng của người khác và chỉ người nhận tin nhắn mới có khóa riêng mới có thể mở khóa tin nhắn. Vì vậy không có ai lắng nghe có thể xác định ai đã nhận tiền ít hơn nhiều là lấy tiền.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 13 Tôi tự hỏi sẽ đau đầu đến thế nào khi thực hiện một lựa chọn mật mã kế hoạch. Hình elip hoặc cách khác. Vì vậy, nếu kế hoạch nào đó bị phá vỡ trong tương lai, tiền tệ sẽ chuyển đổi mà không cần quan tâm. Có lẽ là một cơn đau lớn ở mông. Được rồi, đây chính xác là những gì tôi vừa giải thích trong bình luận trước đó. Kiểu Diffie-Hellman trao đổi rất gọn gàng. Giả sử Alex và Brenda mỗi người có một số bí mật A và B và một số họ không quan tâm đến việc giữ bí mật, a và b. Họ mong muốn tạo ra một bí mật được chia sẻ mà không cần Eva phát hiện ra nó. Diffie và Hellman đã nghĩ ra cách để Alex và Brenda chia sẻ các số công khai a và b, nhưng không phải các số riêng tư A và B, và tạo ra một bí mật chung, K. Sử dụng bí mật được chia sẻ này, K, mà không có bất kỳ Eva nào lắng nghe để có thể tạo ra bí mật tương tự K, Alex và Brenda hiện có thể sử dụng K làm khóa mã hóa bí mật và gửi lại các tin nhắn bí mật trở đi. Đây là cách nó CÓ THỂ hoạt động, mặc dù nó sẽ hoạt động với các số lớn hơn 100. Chúng ta sẽ sử dụng 100 vì tính toán các số nguyên theo modulo 100 tương đương với việc "loại bỏ tất cả nhưng là hai chữ số cuối cùng của một số." Alex và Brenda mỗi người chọn A, a, B và b. Họ giữ bí mật cho A và B. Alex nói với Brenda giá trị của modulo 100 (chỉ hai chữ số cuối) và Brenda nói với Alex giá trị của cô ấy là b modulo 100. Bây giờ Eva biết (a,b) modulo 100. Nhưng Alex biết (a,b,A) nên cô ấy có thể tính x=abA modulo 100.Alex bỏ qua tất cả trừ chữ số cuối cùng vì chúng ta đang làm việc lại theo số nguyên modulo 100. Tương tự, Brenda biết (a,b,B) nên cô ấy có thể tính y=abB modulo 100. Bây giờ Alex có thể xuất bản x và Brenda có thể xuất bản y. Nhưng bây giờ Alex có thể tính yA = abBA modulo 100 và Brenda có thể tính xB = abBA modulo 100. Cả hai đều biết cùng một số! Nhưng tất cả những gì Eva đã nghe là (a,b,abA,abB). Cô ấy không có cách nào dễ dàng để tính abA*B. Bây giờ, đây là cách suy nghĩ dễ dàng và kém an toàn nhất về sàn giao dịch Diffi-Hellman. Có nhiều phiên bản an toàn hơn. Nhưng hầu hết các phiên bản đều hoạt động vì hệ số nguyên và rời rạc logarit rất khó và cả hai vấn đề đó đều được giải quyết dễ dàng bằng máy tính lượng tử. Tôi sẽ xem xét liệu có tồn tại phiên bản nào chống lại lượng tử hay không. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Chuỗi txn tiêu chuẩn" được liệt kê ở đây thiếu rất nhiều bước, chẳng hạn như CHỮ KÝ. Họ chỉ được coi là đương nhiên ở đây. Điều này thực sự tồi tệ, bởi vì thứ tự mà chúng ta nội dung ký tên, thông tin có trong tin nhắn đã ký, v.v.... tất cả những điều này cực kỳ quan trọng đối với giao thức. Thực hiện sai một hoặc hai bước, thậm chí hơi sai trật tự trong khi triển khai " trình tự giao dịch tiêu chuẩn" có thể khiến tính bảo mật của toàn bộ hệ thống bị nghi ngờ. Hơn nữa, các bằng chứng được trình bày sau trong bài báo có thể không đủ chặt chẽ nếu khuôn khổ mà chúng hoạt động được xác định một cách lỏng lẻo như trong phần này.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 14 Lưu ý rằng (các) tác giả đã làm rất tốt việc giữ cho thuật ngữ của họ rõ ràng xuyên suốt văn bản, nhưng đặc biệt là ở phần tiếp theo này. Sự tái sinh tiếp theo của bài viết này nhất thiết sẽ là khắt khe hơn rất nhiều. Trong văn bản họ gọi P là khóa công khai một lần của họ. Trong sơ đồ, họ gọi R là "Khóa công khai Tx" và P là "Khóa đích" của họ. Nếu tôi định viết lại điều này, tôi sẽ trình bày rất cụ thể một số thuật ngữ trước khi thảo luận về các phần này. Cái giếng này rất lớn. Xem trang 5. Ai chọn ell? Sơ đồ minh họa khóa công khai giao dịch R = rG, ngẫu nhiên và được chọn bởi người gửi, không phải là một phần của đầu ra Tx. Điều này là do nó có thể giống nhau đối với nhiều giao dịch cho nhiều người và không được sử dụng SAU ĐÓ để chi tiêu. Một R mới được tạo ra mỗi khi bạn muốn phát một giao dịch CryptoNote mới. Hơn nữa, R chỉ được sử dụng để kiểm tra xem bạn có phải là người nhận giao dịch hay không. Đó không phải là dữ liệu rác mà là rác đối với bất kỳ ai không có khóa riêng được liên kết với (A, B). Mặt khác, khóa Đích P = Hs(rA)G + B là một phần của đầu ra Tx. mọi người việc duyệt qua mọi dữ liệu của giao dịch đi qua phải kiểm tra P* được tạo bởi chính chúng với P này để xem liệu họ có sở hữu giao dịch chuyển tiếp này hay không. Bất kỳ ai có đầu ra giao dịch chưa chi tiêu (UTXO) sẽ có một loạt các chữ P này được sắp xếp với số lượng. Để chi tiêud, họ ký một số tin nhắn mới bao gồm P. Alice phải ký giao dịch này bằng (các) khóa riêng một lần được liên kết với (các) Khóa đích đầu ra giao dịch chưa được chi tiêu. Mỗi khóa đích do Alice sở hữu đều được trang bị với khóa riêng một lần cũng được sở hữu (có lẽ) bởi Alice. Mỗi lần Alice muốn gửi nội dung của khóa đích cho tôi, hoặc Bob, hoặc Brenda, hoặc Charlie hoặc Charlene, cô ấy sử dụng khóa riêng của mình để ký giao dịch. Khi nhận được giao dịch, tôi sẽ nhận được một giao dịch mới Khóa công khai Tx, khóa công khai Đích mới và tôi sẽ có thể khôi phục khóa riêng x một lần mới. Kết hợp khóa riêng một lần của tôi, x, với Đích công khai của giao dịch mới (các) khóa là cách chúng tôi gửi một giao dịch mới
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 15 Đầu ra giao dịch chưa chi tiêu ở đây trông như thế nào? Sơ đồ gợi ý rằng đầu ra giao dịch chỉ bao gồm hai điểm dữ liệu: số tiền và khóa đích. Nhưng đây không phải đủ vì khi tôi cố gắng sử dụng "đầu ra" này, tôi vẫn cần biết R=rG. Hãy nhớ rằng, r được người gửi chọn và R là a) được sử dụng để nhận dạng các ghi chú tiền điện tử đến là của bạn sở hữu và b) được sử dụng để tạo khóa riêng một lần được sử dụng để "yêu cầu" tiền điện tử của bạn. Phần này tôi không hiểu? Lấy lý thuyết "được rồi, chúng tôi có những thứ này chữ ký và giao dịch, và chúng tôi chuyển chúng qua lại" vào thế giới lập trình "được rồi, thông tin cụ thể nào tạo nên một cá nhân UTXO?" Cách tốt nhất để trả lời câu hỏi đó là đào sâu vào nội dung của mã hoàn toàn không có chú thích. Làm tốt lắm, nhóm bytecoin. Nhớ lại: khả năng liên kết có nghĩa là "có phải cùng một người đã gửi không?" và khả năng không liên kết có nghĩa là "đã làm như vậy người ta nhận được không?”. Vì vậy, một hệ thống có thể liên kết được hoặc không thể liên kết được, không thể liên kết được hoặc không thể liên kết được. Khó chịu, tôi biết. Vì vậy, khi Nic van Saberhagen ở đây nói "...các khoản thanh toán đến [được] liên kết với một lần các khóa công khai mà người xem không thể liên kết được", hãy xem ý anh ấy là gì. Đầu tiên, hãy xem xét tình huống trong đó Alice gửi cho Bob hai giao dịch riêng biệt từ cùng một địa chỉ đến cùng một địa chỉ. Trong vũ trụ Bitcoin, Alice đã phạm sai lầm rồi gửi từ cùng một địa chỉ và do đó giao dịch đã không đạt được mong muốn của chúng tôi về số lượng có hạn khả năng liên kết. Hơn nữa, vì cô ấy đã gửi tiền đến cùng một địa chỉ nên cô ấy đã thất bại trong mong muốn của chúng tôi. vì khả năng không liên kết được. Giao dịch bitcoin này vừa có thể (hoàn toàn) có thể liên kết vừa không thể hủy liên kết. Mặt khác, trong thế giới tiền điện tử, giả sử Alice gửi cho Bob một số tiền điện tử, sử dụng địa chỉ công cộng của Bob. Cô ấy chọn làm bộ khóa công khai khó hiểu của mình, tất cả đều được công khai chìa khóa trong khu vực tàu điện ngầm Washington DC. Alex tạo khóa công khai một lần bằng chính khóa của cô ấy thông tin và thông tin công khai của Bob. Cô ấy gửi tiền đi và bất kỳ người quan sát nào cũng sẽ chỉ có thể thu thập được "Ai đó từ khu vực đô thị Washington DC đã gửi 2,3 tiền điện tử tới địa chỉ công khai một lần XYZ123." Chúng tôi có quyền kiểm soát xác suất đối với khả năng liên kết ở đây, vì vậy chúng tôi sẽ gọi đây là "gần như không thể liên kết". Chúng tôi cũng chỉ thấy tiền khóa công khai một lần được gửi tới. Ngay cả khi chúng tôi nghi ngờ người nhận là Bob, chúng tôi không có khóa riêng của anh ấy và vì vậy chúng tôi không thể kiểm tra xem một giao dịch được chuyển thuộc về Bob chứ đừng nói đến việc tạo khóa riêng một lần của anh ấy để đổi tiền điện tử của anh ấy. Vậy cái này trên thực tế là hoàn toàn "không thể liên kết được". Vì vậy, đây là thủ thuật gọn gàng nhất trong tất cả. Ai muốn thực sự tin tưởng một MtGox khác? Chúng tôi có thể thoải mái lưu trữ một số lượng BTC trên Coinbase, nhưng bảo mật bitcoin cao nhất là một ví vật lý. Điều đó thật bất tiện. Trong trường hợp này, bạn có thể cho đi một nửa khóa riêng của mình một cách đáng tin cậy mà không ảnh hưởng đến tài khoản của bạn. khả năng tiêu tiền của bản thân. Khi làm điều này, tất cả những gì bạn đang làm là nói cho ai đó cách phá vỡ tính không liên kết. Cái khác các đặc tính của CN hoạt động giống như một loại tiền tệ được bảo toàn, như bằng chứng chống chi tiêu gấp đôi và không có gì.
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 16 Có, vậy là bây giờ chúng ta có a) địa chỉ thanh toán và b) ID thanh toán. Một nhà phê bình có thể hỏi "chúng ta có thực sự cần phải làm điều này không? Rốt cuộc, nếu một thương gia nhận được 112.00678952 CN chính xác, và đó là đơn đặt hàng của tôi, và tôi có ảnh chụp màn hình hoặc biên nhận hay bất cứ thứ gì, phải không? mức độ chính xác điên rồ có đủ không?" Câu trả lời là "có lẽ, hầu hết thời gian, hàng ngày, giao dịch trực tiếp." Tuy nhiên, tình huống phổ biến hơn (đặc biệt là trong thế giới kỹ thuật số) là: một thương gia bán một tập hợp các đối tượng, mỗi đối tượng có một mức giá cố định. Giả sử vật A là 0,001 CN, vật B là 0,01 CN và vật C là 0,1 CN. Bây giờ, nếu người bán nhận được đơn hàng với giá 1.618 CN thì có rất nhiều (nhiều!) cách để sắp xếp đơn hàng cho khách hàng. Và do đó, nếu không có loại ID thanh toán nào đó, xác định cái gọi là đơn hàng "duy nhất" của một khách hàng với cái gọi là chi phí "duy nhất" của họ trật tự trở nên không thể. Buồn cười hơn nữa: nếu mọi thứ trong cửa hàng trực tuyến của tôi có giá chính xác là 1,0 CN, và tôi có được 1000 khách hàng mỗi ngày? Và bạn muốn chứng minh rằng bạn đã mua đúng 3 đồ vật hai tuần trước? Không có ID thanh toán? Chúc may mắn, anh bạn. Tóm tắt câu chuyện: Khi Bob công bố một địa chỉ thanh toán, cuối cùng anh ấy cũng có thể công bố một địa chỉ thanh toán. ID thanh toán (xem ví dụ: tiền gửi Poloniex XMR). Điều này khác với những gì được mô tả trong văn bản ở đây Alice là người tạo ID thanh toán. Phải có cách nào đó để Bob tạo ID thanh toán. (a,B) Hãy nhớ lại rằng khóa theo dõi (a,B) có thể được công bố; mất đi tính bí mật về giá trị của ý chí 'a' không vi phạm khả năng chi tiêu của bạn hoặc cho phép người khác ăn trộm của bạn (tôi nghĩ... điều đó sẽ có được chứng minh), nó sẽ chỉ cho phép mọi người xem tất cả các giao dịch đến. Một địa chỉ bị cắt ngắn, như được mô tả trong đoạn này, chỉ cần lấy phần "riêng tư" của khóa và tạo ra nó từ phần "công khai". Tiết lộ giá trị cho 'a' sẽ loại bỏ khả năng không liên kết nhưng sẽ bảo toàn phần còn lại của giao dịch. Tác giả muốn nói là "không thể hủy liên kết" vì không thể liên kết được đề cập đến người nhận và có thể liên kết được đề cập đến người gửi. Cũng rõ ràng là tác giả đã không nhận ra rằng có hai khía cạnh khác nhau về khả năng liên kết. Vì xét cho cùng, giao dịch là một đối tượng được định hướng trên biểu đồ nên sẽ có hai câu hỏi: "hai giao dịch này có đến cùng một người không?" và "hai giao dịch này sắp diễn ra từ cùng một người?” Đây là chính sách "không quay lại", theo đó thuộc tính không thể liên kết của CryptoNote được có điều kiện. Điều đó có nghĩa là Bob có thể chọn các giao dịch đến của mình để không thể hủy liên kết được sử dụng chính sách này. Đây là một tuyên bố mà họ chứng minh theo Mô hình Oracle ngẫu nhiên. Chúng ta sẽ đạt được điều đó; sự ngẫu nhiên Oracle có ưu và nhược điểm.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 17 Có lẽ điều này thật ngu ngốc nhưng phải cẩn thận khi kết hợp S và P_s. Nếu bạn chỉ nối thêm khóa công khai cuối cùng đến cuối, khả năng không liên kết bị hỏng vì bất kỳ ai kiểm tra các giao dịch chuyển qua chỉ có thể kiểm tra khóa công khai cuối cùng được liệt kê trong mỗi giao dịch và bùng nổ. Đó là khóa công khai liên quan đến người gửi. Vì vậy, sau khi hợp nhất, một bộ tạo số giả ngẫu nhiên phải được được sử dụng để hoán vị các khóa công khai đã chọn. "...cho đến khi chủ sở hữu tạo ra chữ ký thứ hai bằng cách sử dụng cùng một cặp khóa." Tôi ước (các) tác giả? sẽ giải thích chi tiết về điều này. Tôi tin rằng điều này có nghĩa là "hãy đảm bảo rằng mỗi khi bạn chọn một bộ khóa công khai để làm xáo trộn với chính mình, bạn chọn một bộ chìa khóa hoàn toàn mới không có hai chiếc chìa khóa nào giống nhau." Điều này có vẻ giống như một điều kiện khá mạnh để đặt vào tình trạng không thể liên kết được. Có lẽ "bạn chọn một bộ ngẫu nhiên mới từ tất cả các khóa có thể" với giả định rằng, mặc dù các giao lộ không tầm thường chắc chắn sẽ xảy ra, chúng sẽ không xảy ra thường xuyên. Dù bằng cách nào, tôi cần phải tìm hiểu sâu hơn về tuyên bố này. Điều này đang tạo ra chữ ký vòng. Bằng chứng không có kiến thức thật tuyệt vời: Tôi thách bạn chứng minh cho tôi thấy rằng bạn biết một bí mật mà không tiết lộ bí mật. Ví dụ: giả sử chúng ta đang ở lối vào của một hang động hình bánh rán, và ở phía sau hang động (ngoài tầm nhìn từ lối vào) là một ocánh cửa mới mà bạn khẳng định bạn có chìa khóa. Nếu bạn đi một hướng, nó luôn cho phép bạn đi qua, nhưng nếu bạn đi hướng hướng khác, bạn cần một chìa khóa. Nhưng bạn thậm chí còn không muốn cho tôi xem chìa khóa chứ đừng nói đến cho tôi thấy rằng nó mở được cánh cửa. Nhưng bạn muốn chứng minh cho tôi thấy rằng bạn biết cách mở cửa. Trong cài đặt tương tác, tôi tung đồng xu. Đầu ở bên trái, đuôi ở bên phải và bạn đi xuống hang động hình bánh rán theo cách đồng xu hướng dẫn bạn. Ở phía sau, ngoài tầm nhìn của tôi, bạn mở cửa để quay lại phía bên kia. Chúng tôi lặp lại thí nghiệm tung đồng xu cho đến khi tôi hài lòng rằng bạn có chìa khóa. Nhưng đó rõ ràng là bằng chứng không có kiến thức TƯƠNG TÁC. Có những phiên bản không tương tác mà bạn và tôi không bao giờ phải giao tiếp; Bằng cách này, không kẻ nghe trộm nào có thể can thiệp được. http://en.wikipedia.org/wiki/Zero-knowledge_proof Điều này trái ngược với định nghĩa trước đó.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 18 Toàn bộ lĩnh vực này là bất khả tri về tiền điện tử, chỉ mô tả thuật toán chữ ký vòng mà không cần tham chiếu đến tiền tệ. Tôi nghi ngờ một số ký hiệu nhất quán với phần còn lại của bài báo, mặc dù. Ví dụ: x là khóa bí mật "ngẫu nhiên" được chọn trong GEN, cung cấp khóa chung P và hình ảnh khóa công khai I. Giá trị này của x là giá trị Bob tính toán ở phần 6 trang 8. Vậy đây là bắt đầu làm sáng tỏ một số nhầm lẫn từ mô tả trước đó. Điều này thật tuyệt vời; tiền không được chuyển từ "địa chỉ công cộng của Alice sang địa chỉ công cộng của Bob địa chỉ." Nó đang được chuyển từ địa chỉ một lần sang địa chỉ một lần. Vì vậy, theo một nghĩa nào đó, đây là cách mọi thứ hoạt động. Nếu Alex có một số tiền điện tử vì ai đó đã gửi chúng cho cô ấy, điều này có nghĩa là cô ấy có khóa riêng cần thiết để gửi chúng cho Bob. Cô ấy sử dụng trao đổi Diffie-Hellman sử dụng thông tin công khai của Bob để tạo địa chỉ một lần mới và các tiền điện tử được chuyển đến địa chỉ đó. Bây giờ, do trao đổi DH (có lẽ là an toàn) đã được sử dụng để tạo địa chỉ một lần mới mà Alex đã gửi CN của cô ấy tới, Bob là người duy nhất có khóa riêng cần thiết để lặp lại ở trên. Vậy bây giờ Bob là Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Tổng kết nên được lập chỉ mục trên j chứ không phải i. Mỗi c_i là rác ngẫu nhiên (vì w_i là ngẫu nhiên) ngoại trừ cái mông c_iđược liên kết với khóa thực tế liên quan đến chữ ký này. Giá trị của c là hash của thông tin trước đó. Tuy nhiên, tôi nghĩ rằng điều này có thể chứa một lỗi đánh máy tệ hơn việc sử dụng lại chỉ mục 'i', vì c_s dường như được xác định một cách ngầm định, không rõ ràng. Thật vậy, nếu chúng ta tin vào phương trình này thì chúng ta xác định được rằng c_s = (1/2)c - (1/2) tổng_i neq s c_i. Tức là hash trừ đi cả đống số ngẫu nhiên. Mặt khác, nếu phép tính tổng này được đọc là "c_s = (c - sum_j neq s c_j) mod l", sau đó chúng tôi lấy hash thông tin trước đó của chúng tôi, tạo ra một loạt các số ngẫu nhiên, trừ tất cả các số ngẫu nhiên đó khỏi hash và kết quả là c_s. Điều này có vẻ là điều gì "nên" xảy ra theo trực giác của tôi và phù hợp với bước xác minh ở trang 10. Nhưng trực giác không phải là toán học. Tôi sẽ tìm hiểu sâu hơn về điều này. Tương tự như trước; tất cả những thứ này sẽ là rác ngẫu nhiên ngoại trừ thứ liên quan đến thực tế khóa công khai của người ký x. Ngoại trừ lần này, đây là những gì tôi mong đợi hơn từ cấu trúc: r_i là ngẫu nhiên đối với i!=s và r_s chỉ được xác định bởi bí mật x và các giá trị được lập chỉ mục s của q_i và c_i.
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L’ i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 19 Lúc này, tôi vô cùng bối rối. Alex nhận được tin nhắn M có chữ ký (I,c_1, ..., c_n, r_1, ..., r_n) và danh sách công khai phím S. và cô ấy chạy VER. Điều này sẽ tính toán L_i’ và R_i’ Điều này xác minh rằng c_s = c - sum_i neq s c_i ở trang trước. Lúc đầu tôi RẤT (ha) bối rối. Bất kỳ ai cũng có thể tính L_i’ và R_i’. Thật vậy, mỗi r_i và c_i đã được công bố ở phần chữ ký sigma cùng với giá trị của I. Tập S = P_i của tất cả các khóa công khai cũng đã được công bố. Vì vậy, bất cứ ai đã nhìn thấy sigma và tập hợp khóa S = P_i sẽ nhận cùng giá trị cho L_i’ và R_i’ và do đó kiểm tra chữ ký. Nhưng rồi tôi nhớ ra phần này chỉ mô tả thuật toán chữ ký chứ không phải "kiểm tra nếu đã ký, hãy kiểm tra xem đã GỬI CHO TÔI chưa, và nếu vậy thì hãy tiêu tiền." Đây ĐƠN GIẢN là phần chữ ký của trò chơi. Tôi muốn đọc Phụ lục A khi tôi đến đó. Tôi muốn xem bản so sánh toàn diện giữa từng hoạt động của Cryptonote với Bitcoin. Ngoài ra, điện/sự bền vững. Những phần nào của thuật toán tạo thành "đầu vào" ở đây? Tôi tin rằng đầu vào giao dịch là Số tiền và tập hợp UTXO có tổng số tiền lớn hơn số tiền Số tiền. Điều này không rõ ràng. "Mục tiêu ẩn nấp?" Tôi đã nghĩ về điều này được vài phút rồi nhưng tôi vẫn chưa ý tưởng mù mờ nhất về ý nghĩa của nó. Một cuộc tấn công chi tiêu gấp đôi chỉ có thể được thực hiện bằng cách thao túng khóa đã sử dụng của nút bộ hình ảnh \(I\). "Mức độ mơ hồ" = n nhưng tổng số khóa công khai có trong giao dịch là n+1. Điều đó có nghĩa là, mức độ mơ hồ sẽ là "bạn muốn có bao nhiêu người KHÁC tham gia" đám đông à?" Theo mặc định, câu trả lời có thể sẽ là "càng nhiều càng tốt".
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ bảo mật mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 20 Điều này thật thú vị; trước đó, chúng tôi đã cung cấp một cách để người nhận, Bob, thực hiện tất cả việc THU NHẬP giao dịch không thể hủy liên kết bằng cách chọn một nửa số khóa riêng của anh ta một cách xác định hoặc bằng cách xuất bản một nửa khóa riêng của mình dưới dạng công khai. Đây là một loại chính sách không quay trở lại. Ở đây, chúng ta thấy một cách để người gửi, Alex, chọn một giao dịch gửi đi duy nhất có thể liên kết được, nhưng trên thực tế, điều này tiết lộ Alex là người gửi toàn bộ mạng lưới. Đây KHÔNG phải là một loại chính sách không thể quay lại. Đây là giao dịch theo giao dịch. Có chính sách thứ ba không? Người nhận, Bob, có thể tạo ID thanh toán duy nhất cho Alex không? không bao giờ thay đổi, có lẽ sử dụng trao đổi Diffie-Hellman? Nếu có ai bao gồm khoản thanh toán đó ID được gói ở đâu đó trong giao dịch của cô ấy tới địa chỉ của Bob, nó phải đến từ Alex. Bằng cách này, Alex không cần phải tiết lộ bản thân với toàn bộ mạng lưới bằng cách chọn liên kết một địa chỉ cụ thể giao dịch, nhưng cô ấy vẫn có thể nhận dạng chính mình với người mà cô ấy gửi tiền. Đây không phải là điều Poloniex làm sao?
Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa cách tiếp cận này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa phương pháp này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 21 Bề ngoài, đây là UTXO của chúng tôi: số tiền và khóa đích. Nếu Alex là người xây dựng giao dịch tiêu chuẩn này và gửi cho Bob thì Alex cũng có khóa riêng đến từng điều này. Tôi rất thích sơ đồ này vì nó trả lời một số câu hỏi trước đó. Một đầu vào Txn bao gồm của một tập hợp các đầu ra Txn và một kehình ảnh y. Sau đó nó được ký bằng chữ ký vòng, bao gồm tất cả trong số các khóa riêng mà Alex sở hữu đối với tất cả các giao dịch nước ngoài được gói gọn trong thỏa thuận. các Đầu ra Txn bao gồm một số tiền và một khóa đích. Người nhận giao dịch có thể, theo ý muốn, tạo khóa riêng một lần của họ như được mô tả trước đó trong bài viết để sử dụng tiền. Sẽ rất thú vị khi tìm hiểu xem mã này khớp với mã thực tế đến mức nào... Không, Nic van Saberhagen mô tả một cách lỏng lẻo một số thuộc tính của thuật toán bằng chứng công việc, mà không thực sự mô tả thuật toán đó. Bản thân thuật toán CryptoNight sẽ YÊU CẦU phân tích sâu. Khi tôi đọc điều này, tôi lắp bắp. Đầu tư có nên tăng trưởng ít nhất là tuyến tính với sức mạnh hay nên đầu tư tăng trưởng nhiều nhất tuyến tính với sức mạnh? Và rồi tôi nhận ra; Tôi, với tư cách là một thợ mỏ hoặc một nhà đầu tư, thường nghĩ "tôi có thể nhận được bao nhiêu năng lượng" để đầu tư à?" chứ không phải "cần đầu tư bao nhiêu cho một lượng điện năng cố định?" Tất nhiên, biểu thị đầu tư là I và lũy thừa là P. Nếu I(P) là đầu tư là hàm của lũy thừa và P(I) là quyền lực như một hàm của đầu tư, chúng sẽ nghịch đảo với nhau (bất cứ nơi nào có thể tồn tại nghịch đảo). Và nếu I(P) nhanh hơn tuyến tính thì P(I) chậm hơn tuyến tính. Do đó, sẽ có một tỷ lệ lợi nhuận giảm cho các nhà đầu tư. Điều đó có nghĩa là, điều tác giả muốn nói ở đây là: "chắc chắn rồi, khi bạn đầu tư nhiều hơn, bạn sẽ nhận được nhiều hơn." quyền lực. Nhưng chúng ta nên cố gắng làm cho tỷ lệ lợi nhuận giảm đi." Cuối cùng, các khoản đầu tư vào CPU sẽ đạt mức cận tuyến tính; câu hỏi đặt ra là liệu các tác giả đã thiết kế một thuật toán POW sẽ buộc ASIC cũng phải làm điều này. Liệu một "tiền tệ tương lai" giả định có nên luôn được khai thác với nguồn tài nguyên chậm nhất/hạn chế nhất không? Bài báo của Abadi và cộng sự (có một số kỹ sư của Google và Microsoft là tác giả) là, về cơ bản, sử dụng thực tế là trong vài năm qua kích thước bộ nhớ đã nhỏ hơn nhiều sự khác biệt giữa các máy so với tốc độ bộ xử lý và với tỷ lệ công suất đầu tư cao hơn tuyến tính. Trong một vài năm nữa, điều này có thể phải được đánh giá lại! Mọi thứ đều là một cuộc chạy đua vũ trang... Việc xây dựng hàm hash là khó; việc xây dựng hàm hash thỏa mãn các ràng buộc này có vẻ khó khăn hơn. Bài viết này dường như không có lời giải thích nào về thực tế hashing thuật toán CryptoNight. Tôi nghĩ đó là cách triển khai SHA-3 sử dụng bộ nhớ cứng, dựa trên trên các bài đăng trên diễn đàn nhưng tôi không biết... và đó chính là vấn đề. Nó phải được giải thích.
đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), trong đó N là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), ở đâuN là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 22 Đừng bận tâm, đó là một đồng tiền điện tử? Thuật toán ở đâu? Tất cả những gì tôi thấy là một quảng cáo. Đây là nơi Cryptonote, nếu thuật toán PoW của họ đáng giá, sẽ thực sự tỏa sáng. Nó không phải thực sự là SHA-256, nó không hẳn là mã hóa. Nó mới, bị ràng buộc về bộ nhớ và không đệ quy.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 23 Đơn vị nguyên tử. Tôi thích điều đó. Đây có phải là tương đương với Satoshi không? Nếu vậy thì điều đó có nghĩa là sẽ có 185 tỷ tiền điện tử. Tôi biết điều này cuối cùng phải được điều chỉnh trong một vài trang hoặc có thể có lỗi đánh máy? Nếu phần thưởng cơ bản là "tất cả các đồng xu còn lại" thì chỉ cần một khối là đủ để nhận được tất cả các đồng xu. Instamine. Mặt khác, nếu điều này được cho là tỷ lệ thuận theo một cách nào đó với sự khác biệt về thời gian giữa hiện tại và một số ngày chấm dứt sản xuất tiền xu? Điều đó sẽ có ý nghĩa. Ngoài ra, trong thế giới của tôi, hai dấu hiệu lớn hơn như thế này có nghĩa là "lớn hơn nhiều". Có phải tác giả có thể có ý nghĩa gì khác? Nếu việc điều chỉnh độ khó xảy ra ở mỗi khối thì kẻ tấn công có thể có một trang trại rất lớn máy móc khai thác và tắt trong những khoảng thời gian được lựa chọn cẩn thận. Điều này có thể gây ra một vụ nổ hỗn loạn (hoặc sụp đổ về 0) một cách khó khăn nếu các công thức điều chỉnh độ khó không được giảm bớt một cách thích hợp. Không còn nghi ngờ gì nữa, phương pháp của Bitcoin không phù hợp để tính toán lại nhanh chóng, nhưng ý tưởng về quán tính trong những hệ thống này cần phải được chứng minh chứ không phải được coi là đương nhiên. Hơn nữa, dao động trong mạng không nhất thiết là một vấn đề trừ khi nó dẫn đến sự dao động của giá trị bề ngoài nguồn cung tiền xu - và việc có độ khó thay đổi rất nhanh có thể gây ra "sự điều chỉnh quá mức". Thời gian sử dụng, đặc biệt là trong một khoảng thời gian ngắn như vài phút, sẽ tỷ lệ thuận với "tổng thời gian". số khối được tạo trên mạng." Hằng số tỷ lệ sẽ tự tăng lên theo thời gian, có lẽ sẽ tăng theo cấp số nhân nếu CN thành công. Có thể là một ý tưởng tốt hơn nếu bạn chỉ cần điều chỉnh độ khó để giữ “tổng số khối được tạo trên mạng kể từ khi khối cuối cùng được thêm vào chuỗi chính" trong một số giá trị không đổi hoặc với biến thể giới hạn hoặc một cái gì đó như thế. Nếu một thuật toán thích ứng được tính toán dễ thực hiện có thể được xác định, điều này dường như sẽ giải quyết được vấn đề. Nhưng sau đó, nếu chúng tôi sử dụng phương pháp đó, ai đó có trang trại khai thác lớn có thể đóng cửa trang trại của họ trong vài giờ và bật lại. Trong vài khối đầu tiên, trang trại đó sẽ tạo ra ngân hàng. Vì vậy, trên thực tế, phương pháp này sẽ đưa ra một điểm thú vị: việc khai thác trở thành (trung bình) một thua trò chơi mà không có ROI, đặc biệt khi có nhiều người truy cập mạng hơn. Nếu độ khó khai thác mạng được theo dõi rất chặt chẽ hashtỷ lệ, bằng cách nào đó tôi nghi ngờ mọi người sẽ khai thác nhiều như họ hiện tại làm. Hoặc mặt khác, thay vì giữ cho trang trại khai thác của họ hoạt động 24/7, họ có thể biến chúng thành bật trong 6 giờ, tắt trong 2 giờ, bật trong 6 giờ, tắt trong 2 giờ, hoặc tương tự. Chỉ cần chuyển sang đồng tiền khác trong vài giờ, đợi cho độ khó giảm xuống, sau đó nhảy trở lại để nhận thêm một ít các khối lợi nhuận khi mạng thích ứng. Và bạn biết gì không? Điều này thực sự có lẽ một trong những kịch bản khai thác tốt hơn mà tôi đã đặt tâm trí vào... Đây có thể là một vòng tròn, nhưng nếu thời gian tạo khối trung bình là khoảng một phút, chúng ta có thể sử dụng số khối làm đại diện cho "thời gian đã sử dụng?"
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 24 Được rồi, vậy là chúng ta có blockchain và mỗi khối có dấu thời gian NGOÀI RA để chỉ đơn giản là ra lệnh. Điều này rõ ràng được chèn vào đơn giản chỉ để điều chỉnh độ khó, bởi vì dấu thời gian được rất không đáng tin cậy, như đã đề cập. Chúng ta có được phép có dấu thời gian mâu thuẫn trong chuỗi không? Nếu Khối A xuất hiện trước Khối B trong chuỗi và mọi thứ đều nhất quán về mặt tài chính, nhưng Khối A dường như được tạo ra sau Khối B? Bởi vì, có lẽ, ai đó đã sở hữu một phần lớn của mạng? Thế có ổn không? Có lẽ là do tình hình tài chính không được cải thiện. Được rồi, vì vậy tôi ghét sự tùy tiện này "chỉ 80% khối là hợp pháp cho blockchain chính" cách tiếp cận. Nó nhằm mục đích ngăn chặn những kẻ nói dối điều chỉnh dấu thời gian của họ? Nhưng bây giờ, nó bổ sung thêm khuyến khích mọi người nói dối về dấu thời gian của họ và chỉ chọn mức trung bình. Hãy xác định. Có nghĩa là "đối với khối này, chỉ bao gồm các giao dịch bao gồm phí lớn hơn hơn p%, tốt nhất là với mức phí lớn hơn 2p%" hay đại loại như thế? Họ có ý gì khi nói không có thật? Nếu giao dịch nhất quán với lịch sử trong quá khứ của blockchain và giao dịch bao gồm các khoản phí làm hài lòng người khai thác, điều đó chưa đủ sao? Vâng, không, không nhất thiết. Nếu không tồn tại kích thước khối tối đa thì sẽ không có gì để giữ người dùng độc hại từ việc đơn giản tải lên một khối giao dịch khổng lồ cho chính mình cùng một lúc chỉ để làm chậm lại mạng lưới. Quy tắc cốt lõi về kích thước khối tối đa ngăn cản mọi người đưa một lượng lớn rác vào dữ liệu trên blockchain cùng một lúc chỉ để làm chậm quá trình. Nhưng một quy định như vậy chắc chắn phải hãy thích ứng - chẳng hạn như trong mùa Giáng sinh, chúng ta có thể dự kiến lưu lượng truy cập sẽ tăng đột biến và kích thước khối sẽ trở nên rất lớn và ngay sau đó, kích thước khối sẽ giảm xuống một lần nữa. Vì vậy, chúng ta cần a) một loại giới hạn thích ứng nào đó hoặc b) một giới hạn đủ lớn để 99% đỉnh Giáng sinh hợp lý không phá vỡ giới hạn. Tất nhiên, điều thứ hai là không thể ước tính - ai biết liệu một loại tiền tệ có được ưa chuộng hay không? Tốt hơn là hãy làm cho nó thích ứng và không phải lo lắng về nó. Nhưng sau đó chúng ta có một vấn đề về lý thuyết điều khiển: làm thế nào để điều này thích ứng mà không cần dễ bị tấn công hoặc dao động điên cuồng và điên cuồng? Lưu ý rằng phương pháp thích ứng không ngăn người dùng độc hại tích lũy số tiền nhỏ dữ liệu rác theo thời gian trên blockchain gây ra tình trạng phình to trong thời gian dài. Đây là một vấn đề khác hoàn toàn và một đồng tiền điện tử có vấn đề nghiêm trọng.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 25 Thay đổi tỷ lệ thời gian sao cho một đơn vị thời gian là N khối, về mặt lý thuyết, kích thước khối trung bình vẫn có thể tăng theo cấp số nhân thành 2ˆt. Mặt khác, một giới hạn tổng quát hơn trên khối tiếp theo sẽ là M_nf(M_n) cho một số hàm f. Những tính chất nào của f sẽ chúng tôi chọn để đảm bảo một số "tăng trưởng hợp lý" về kích thước khối? Sự tiến triển của kích thước khối (sau thời gian thay đổi tỷ lệ) sẽ như sau: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Và mục tiêu ở đây là chọn f sao cho chuỗi này tăng không nhanh hơn, chẳng hạn, tuyến tính, hoặc thậm chí có thể là Log(t). Tất nhiên, nếu f(M_n) = a với hằng số a nào đó thì chuỗi này là thực sự M_n aM_n aˆ2M_n aˆ3M_n ... Và tất nhiên, cách duy nhất có thể hạn chế điều này ở mức tăng trưởng tuyến tính tối đa là chọn a=1. Tất nhiên, điều này là không thể thực hiện được. Nó không cho phép tăng trưởng chút nào. Mặt khác, nếu f(M_n) là một hàm không hằng thì tình huống còn phức tạp hơn nhiều. phức tạp và có thể cho phép một giải pháp tao nhã. Tôi sẽ suy nghĩ về điều này một lúc. Khoản phí này sẽ phải đủ lớn để giảm bớt hình phạt vượt quá kích thước từ phần tiếp theo. Tại sao người dùng phổ thông lại được coi là nam giới nhỉ? Hả?
khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và kịch bản trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và bối cảnhio trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 26 Điều này có thể không cần thiết nếu chúng ta có thể tìm ra cách giới hạn kích thước khối theo thời gian... Điều này cũng không thể đúng được. Họ chỉ đặt "NewReward" thành một hình parabol hướng lên trong đó kích thước khối là biến độc lập. Vì vậy, phần thưởng mới sẽ tăng lên đến vô tận. Mặt khác, nếu tay, phần thưởng mới là Max(0,Phần thưởng cơ bản(1-(BlkSize/Mn - 1)ˆ2)), sau đó phần thưởng mới sẽ là một parabol hướng xuống dưới với đỉnh ở kích thước khối = Mn và có điểm chặn tại Kích thước khối = 0 và Kích thước khối = 2Mn. Và đó dường như là những gì họ đang cố gắng mô tả. Tuy nhiên, điều này không
分析

5
当世界上十亿人的生活费低于一美元时,这并不重要。
一天,不希望参与任何类型的采矿网络......但经济
由一个 CPU 一票的 P2P 货币系统驱动的世界大概会更
比由部分准备金银行驱动的系统公平。
但 Cryptonote 的协议仍然需要 51% 的诚实用户……例如,参见 Cryptonote
开发人员之一 Pliskov 表示,传统的替换 blockchain 51% 上的数据的攻击仍然有效。 https://forum.cryptonote.org/viewtopic.php?f=2&t=198
请注意,您实际上并不需要 51% 的诚实用户。你真的需要“没有一个不诚实的人
拥有网络 hashing 力量 51% 以上的派系。”
我们将这种所谓的比特币问题称为“适应性刚性”。 Cryptonote 的自适应解决方案
刚性是协议参数值的自适应灵活性。如果您需要更大的块大小,
没问题,网络将一直在轻轻调整。
也就是说,
Bitcoin 随着时间的推移调整难度的方式可以在我们的所有协议中复制
参数,以便更新协议时不需要获得网络共识。
从表面上看,这似乎是个好主意,但如果没有仔细考虑,就会出现自我调整的情况。
系统可能变得相当不可预测和混乱。稍后我们将进一步研究这一点
机会出现。 “好”系统介于自适应刚性和自适应之间
灵活,也许甚至刚性本身也是适应性的。
如果我们真的拥有“一 CPU 一票”,那么就通过协作和开发池来达到 51%
会更困难。我们预计世界上的每个 CPU 都会从手机开始挖矿
充电时连接到 Tesla 的板载 CPU。
http://en.wikipedia.org/wiki/Pareto_principle
我认为帕累托均衡在某种程度上是不可避免的。系统的 20% 将
拥有 80% 的 CPU,或者 20% 的系统将拥有 80% 的 ASIC。我做出这样的假设是因为社会财富的基本分配已经呈现出帕累托分布,
随着新矿工的加入,他们是从底层分布中抽取的。
然而,我认为采用一 CPU 一投票的协议将会在硬件上带来投资回报。
块
每个节点的奖励将与网络中的节点数量更成正比,因为
节点之间的性能分布将更加紧密。另一方面,Bitcoin
另一方面,看到区块奖励(每个节点)与该节点的计算能力成正比
节点。也就是说,只有“大佬”还在挖矿游戏中。另一方面,
尽管帕累托原则仍然有效,但在一个 CPU 一票的世界中,每个人
参与网络安全并获得一点挖矿收益。
在 ASIC 世界中,让每台 Xbox 和手机都用于挖矿是不明智的。
在一个CPU一票的世界里,就挖矿奖励而言,这是非常明智的。作为一个令人高兴的结果,
当选票越来越多时,获得 51% 的选票会变得更加困难,从而产生可爱的结果
有利于网络安全..前面描述过的硬件。假设全局 hash 率显着下降,即使对于
一会儿,他现在可以利用自己的挖矿能力来分叉链条并进行双花。正如我们将看到的
在本文后面,前面描述的事件发生的可能性也不是很大。
2.3
不规则发射
Bitcoin 具有预定的排放率:每个解决的块都会产生固定数量的硬币。
大约每四年这一奖励就会减半。最初的目的是创建一个
具有指数衰减的有限平滑发射,但实际上我们有分段线性发射
其断点可能会导致 Bitcoin 基础设施出现问题的函数。
当断点发生时,矿工开始只收到先前价值的一半
奖励。 12.5 和 6.25 BTC 之间的绝对差异(预计 2020 年)可能会
看起来还可以忍受。然而,当检查 11 月份发生的 50 至 25 BTC 下跌时
2012 年 2 月 28 日,对于采矿界的相当一部分成员来说,这感觉不合适。图
图 1 显示了 11 月底网络的 hash 速率急剧下降,此时正是
减半发生了。对于恶意者来说,这一事件可能是完美的时刻
proof-of-work 函数部分中描述了执行双花攻击 [36] 的方法。
图 1. Bitcoin hash 费率图表
(来源:http://bitcoin.sipa.be)
2.4
硬编码常量
Bitcoin 有许多硬编码限制,其中一些是原始设计的自然元素(例如
区块频率、最大货币供应量、确认数量),而其他
似乎是人为的限制。与其说是限制,不如说是无法快速改变
3
前面描述过的硬件。假设全局 hash 率显着下降,即使对于
一会儿,他现在可以利用自己的挖矿能力来分叉链条并进行双花。正如我们将看到的
在本文后面,前面描述的事件发生的可能性也不是很大。
2.3
不规则发射
Bitcoin 具有预定的排放率:每个解决的块都会产生固定数量的硬币。
大约每四年这一奖励就会减半。最初的目的是创建一个
具有指数衰减的有限平滑发射,但实际上我们有分段线性发射
其断点可能会导致 Bitcoin 基础设施出现问题的函数。
当断点发生时,矿工开始只收到先前价值的一半
奖励。 12.5 和 6.25 BTC 之间的绝对差异(预计 2020 年)可能会
看起来还可以忍受。然而,当检查 11 月份发生的 50 至 25 BTC 下跌时
2012 年 2 月 28 日,对于采矿界的相当一部分成员来说,这感觉不合适。图
图 1 显示了 11 月底网络的 hash 速率急剧下降,此时正是
减半发生了。对于恶意者来说,这一事件可能是完美的时刻
proof-of-work 函数部分中描述了执行双花攻击 [36] 的方法。
图 1. Bitcoin hash 费率图表
(来源:http://bitcoin.sipa.be)
2.4
硬编码常量
Bitcoin 有许多硬编码限制,其中一些是原始设计的自然元素(例如
区块频率、最大货币供应量、确认数量),而其他
似乎是人为的限制。与其说是限制,不如说是无法快速改变
3
6
让我们称其为僵尸攻击。
让我们讨论一下如何连续发射
与僵尸攻击场景中的一CPU一票相关。
在一个CPU一票的世界里,每部手机和汽车只要闲置,就会进行挖矿。收集大量廉价硬件来创建矿场将非常非常容易,因为只需
几乎所有东西都有一个CPU。另一方面,此时 CPU 的数量
我认为发动 51% 攻击所需的时间是相当惊人的。
此外,
正是因为很容易收集廉价的硬件,我们可以合理地预期
很多人开始囤积任何带有 CPU 的东西。一CPU一票世界中的军备竞赛
必然比 ASIC 世界更加平等。
因此,网络不连续
在一个 CPU 一票的世界中,排放率带来的安全问题应该不是什么问题。
然而,有两个事实仍然存在:1)发射率的不连续性可能会导致口吃效应
经济和网络安全都不好,而且 2) 即使发生 51% 攻击
由收集廉价硬件的人执行的操作仍然可能发生在单 CPU 中-投票世界,
看来应该更难了。
据推测,防止这种情况发生的措施是“所有”不诚实的行为者都会尝试这样做
同时,我们又回到了 Bitcoin 之前的安全概念:“我们不需要不诚实的人
派别控制了超过 51% 的网络。”
作者在这里声称比特币的一个问题是硬币发行的不连续性
速率可能会导致网络参与度突然下降,从而导致网络安全性下降。因此,
连续的、可微的、平滑的硬币发行率是优选的。
作者没有错,一定是这样。网络参与度的任何形式的突然减少都可能导致
导致这样一个问题,如果我们能够消除它的一个根源,我们就应该这样做。话虽如此,这是
长期“相对稳定”的代币发行可能会被突然的变化所打断
从经济学的角度来看,这是理想的方法。我不是经济学家。所以,也许我们
我们必须决定是否要用网络安全来换取经济利益——这是什么?
http://arxiv.org/abs/1402.2009如有必要,它们会导致主要缺点。不幸的是,很难预测何时
常量可能需要改变,替换它们可能会导致可怕的后果。
硬编码限制更改导致灾难性后果的一个很好的例子是块
大小限制设置为 250kb1。这个限制足以容纳大约 10000 个标准交易。在
2013 年初,这一限制几乎已达到,并达成协议增加
限制。该更改在钱包版本 0.8 中实施,并以 24 块链分裂结束
以及成功的双花攻击[9]。虽然该错误不在 Bitcoin 协议中,但是
相反,在数据库引擎中,如果有的话,可以通过简单的压力测试轻松捕获它
没有人为引入的块大小限制。
常量也充当集中点的一种形式。
尽管具有点对点的性质
Bitcoin,绝大多数节点使用官方开发的参考客户端[10]
一小群人。该小组决定对协议进行更改
大多数人都会接受这些变化,无论它们的“正确性”如何。一些决定导致
激烈讨论甚至呼吁抵制[11],这表明社区和
开发人员可能在一些重要问题上存在分歧。因此,制定一项协议似乎是合乎逻辑的
使用用户可配置和自我调整的变量作为避免这些问题的可能方法。
2.5
庞大的脚本
Bitcoin 中的脚本系统是一个繁重且复杂的功能。它可能允许人们创建
复杂的交易[12],但由于安全问题和原因,其某些功能被禁用
有些甚至从未使用过[13]。脚本(包括发送者和接收者部分)
Bitcoin 中最受欢迎的交易如下所示:
Phân tích

5
Điều đó không quá quan trọng khi một tỷ người trên thế giới sống với mức thu nhập dưới một đô la mỗi năm.
ngày và không có hy vọng tham gia vào bất kỳ loại mạng lưới khai thác nào... ngoại trừ một nền kinh tế
thế giới được thúc đẩy bởi hệ thống tiền tệ p2p với một CPU-một phiếu bầu, có lẽ sẽ còn hơn thế nữa
công bằng hơn một hệ thống được thúc đẩy bởi ngân hàng dự trữ một phần.
Nhưng giao thức của Cryptonote vẫn yêu cầu 51% người dùng trung thực... xem ví dụ: Cryptonote
diễn đàn nơi một trong những nhà phát triển, Pliskov, nói rằng một cuộc tấn công 51% thay thế dữ liệu trên blockchain truyền thống vẫn có thể hoạt động. https://forum.cryptonote.org/viewtopic.php?f=2&t=198
Lưu ý rằng bạn không thực sự cần 51% người dùng trung thực. Bạn chỉ thực sự cần "không một lời gian dối nào
phe có hơn 51% sức mạnh hash của mạng."
Hãy gọi vấn đề này của bitcoin là “sự cứng nhắc thích ứng”. Giải pháp thích ứng của Cryptonote
độ cứng nhắc là tính linh hoạt thích ứng trong các giá trị tham số giao thức. Nếu bạn cần kích thước khối lớn hơn,
không vấn đề gì, mạng sẽ được điều chỉnh nhẹ nhàng trong suốt thời gian qua.
Tức là,
cách Bitcoin điều chỉnh độ khó theo thời gian có thể được sao chép trên tất cả giao thức của chúng tôi
các tham số để không cần phải đạt được sự đồng thuận của mạng để cập nhật giao thức.
Nhìn bề ngoài thì đây có vẻ là một ý tưởng hay, nhưng nếu không có sự suy tính cẩn thận, nó sẽ tự điều chỉnh.
hệ thống có thể trở nên khá khó lường và hỗn loạn. Chúng ta sẽ xem xét sâu hơn về vấn đề này sau vì
cơ hội phát sinh. Các hệ thống "tốt" nằm ở đâu đó giữa tính cứng nhắc về mặt thích ứng và tính thích ứng
linh hoạt, và có lẽ ngay cả sự cứng nhắc cũng có tính thích ứng.
Nếu chúng tôi thực sự có "một CPU-một phiếu bầu", thì hãy hợp tác và phát triển các nhóm để đạt được 51%
sẽ khó khăn hơn. Chúng tôi kỳ vọng mọi CPU trên thế giới đều có thể khai thác, từ điện thoại
tới CPU tích hợp trong chiếc Tesla của bạn trong khi nó đang sạc.
http://en.wikipedia.org/wiki/Pareto_principle
Tôi khẳng định rằng trạng thái cân bằng Pareto là điều không thể tránh khỏi. 20% hệ thống sẽ
sở hữu 80% số CPU hoặc 20% hệ thống sẽ sở hữu 80% số ASIC. Tôi đưa ra giả thuyết này bởi vì sự phân bổ của cải cơ bản trong xã hội đã thể hiện sự phân phối Pareto,
và khi những người khai thác mới tham gia, họ sẽ được rút ra từ sự phân phối cơ bản đó.
Tuy nhiên, tôi lập luận rằng các giao thức với một CPU-một phiếu bầu sẽ thấy ROI trên phần cứng.
Chặn
phần thưởng cho mỗi nút sẽ tỷ lệ chặt chẽ hơn với số lượng nút trong mạng vì
phân phối hiệu suất giữa các nút sẽ chặt chẽ hơn nhiều. Bitcoin, mặt khác
trong tay, sẽ thấy phần thưởng khối (trên mỗi nút) tỷ lệ thuận hơn với khả năng tính toán của khối đó
nút. Nghĩa là, chỉ còn những “ông lớn” mới tham gia trò chơi khai thác. Mặt khác,
mặc dù nguyên tắc Pareto vẫn được áp dụng, nhưng trong thế giới một CPU một phiếu bầu, mọi người
tham gia vào an ninh mạng và kiếm được một chút thu nhập từ khai thác.
Trong thế giới ASIC, việc khai thác mọi XBox và điện thoại di động là không hợp lý.
Trong thế giới onecpu-one-vote, việc thưởng khai thác là rất hợp lý. Như một kết quả thú vị,
việc giành được 51% phiếu bầu càng khó khăn hơn khi số phiếu bầu ngày càng nhiều, mang lại một kết quả đáng yêu
có lợi cho an ninh mạng..phần cứng được mô tả trước đó. Giả sử rằng tỷ lệ hash toàn cầu giảm đáng kể, ngay cả đối với
trong giây lát, giờ anh ta có thể sử dụng sức mạnh khai thác của mình để phân nhánh chuỗi và chi tiêu gấp đôi. Như chúng ta sẽ thấy
ở phần sau của bài viết này, không có khả năng xảy ra sự kiện được mô tả trước đó.
2.3
Phát thải không đều
Bitcoin có tốc độ phát thải được xác định trước: mỗi khối được giải sẽ tạo ra một lượng xu cố định.
Khoảng bốn năm một lần phần thưởng này sẽ giảm đi một nửa. Mục đích ban đầu là tạo ra một
phát xạ trơn tru hạn chế với sự phân rã theo cấp số nhân, nhưng trên thực tế, chúng ta có phát xạ tuyến tính từng phần
chức năng có điểm dừng có thể gây ra sự cố cho cơ sở hạ tầng Bitcoin.
Khi điểm dừng xảy ra, người khai thác bắt đầu chỉ nhận được một nửa giá trị trước đó của họ
phần thưởng. Sự khác biệt tuyệt đối giữa 12,5 và 6,25 BTC (dự kiến cho năm 2020) có thể
có vẻ có thể chịu đựng được. Tuy nhiên, khi kiểm tra mức giảm 50 đến 25 BTC diễn ra vào tháng 11
28 năm 2012, cảm thấy không phù hợp với một số lượng đáng kể thành viên của cộng đồng khai thác mỏ. Hình
Hình 1 cho thấy tốc độ hash của mạng giảm đáng kể vào cuối tháng 11, chính xác là khi
việc giảm một nửa đã diễn ra. Sự kiện này có thể là thời điểm hoàn hảo cho cá nhân độc ác
được mô tả trong phần chức năng proof-of-work để thực hiện cuộc tấn công chi tiêu gấp đôi [36].
Hình 1. Bitcoin hash biểu đồ tỷ lệ
(nguồn: http://bitcoin.sipa.be)
2.4
Hằng số được mã hóa cứng
Bitcoin có nhiều giới hạn được mã hóa cứng, trong đó một số là yếu tố tự nhiên của thiết kế ban đầu (ví dụ:
tần suất chặn, lượng cung tiền tối đa, số lượng xác nhận) trong khi các yếu tố khác
dường như là những hạn chế nhân tạo. Đó không phải là những giới hạn mà là việc không có khả năng thay đổi nhanh chóng
3
phần cứng được mô tả trước đó. Giả sử rằng tỷ lệ hash toàn cầu giảm đáng kể, ngay cả đối với
trong giây lát, giờ anh ta có thể sử dụng sức mạnh khai thác của mình để phân nhánh chuỗi và chi tiêu gấp đôi. Như chúng ta sẽ thấy
ở phần sau của bài viết này, không có khả năng xảy ra sự kiện được mô tả trước đó.
2.3
Phát thải không đều
Bitcoin có tốc độ phát thải được xác định trước: mỗi khối được giải sẽ tạo ra một lượng xu cố định.
Khoảng bốn năm một lần phần thưởng này sẽ giảm đi một nửa. Mục đích ban đầu là tạo ra một
phát xạ trơn tru hạn chế với sự phân rã theo cấp số nhân, nhưng trên thực tế, chúng ta có phát xạ tuyến tính từng phần
chức năng có điểm dừng có thể gây ra sự cố cho cơ sở hạ tầng Bitcoin.
Khi điểm dừng xảy ra, người khai thác bắt đầu chỉ nhận được một nửa giá trị trước đó của họ
phần thưởng. Sự khác biệt tuyệt đối giữa 12,5 và 6,25 BTC (dự kiến cho năm 2020) có thể
có vẻ có thể chịu đựng được. Tuy nhiên, khi kiểm tra mức giảm 50 đến 25 BTC diễn ra vào tháng 11
28 năm 2012, cảm thấy không phù hợp với một số lượng đáng kể thành viên của cộng đồng khai thác mỏ. Hình
Hình 1 cho thấy tỷ lệ hash của mạng giảm đáng kể vào cuối tháng 11, chính xác là khi
việc giảm một nửa đã diễn ra. Sự kiện này có thể là thời điểm hoàn hảo cho cá nhân độc ác
được mô tả trong phần chức năng proof-of-work để thực hiện cuộc tấn công chi tiêu gấp đôi [36].
Hình 1. Bitcoin hash biểu đồ tỷ lệ
(nguồn: http://bitcoin.sipa.be)
2.4
Hằng số được mã hóa cứng
Bitcoin có nhiều giới hạn được mã hóa cứng, trong đó một số là yếu tố tự nhiên của thiết kế ban đầu (ví dụ:
tần suất chặn, lượng cung tiền tối đa, số lượng xác nhận) trong khi các yếu tố khác
dường như là những hạn chế nhân tạo. Đó không phải là những giới hạn mà là việc không có khả năng thay đổi nhanh chóng
3
6
Hãy gọi đây là cuộc tấn công của zombie.
Hãy cùng thảo luận về việc phát xạ liên tục có thể xảy ra như thế nào
liên quan đến một CPU-một phiếu bầu trong kịch bản tấn công zombie.
Trong thế giới một CPU-một phiếu bầu, mọi điện thoại di động và ô tô, bất cứ khi nào không hoạt động, đều sẽ được khai thác. Việc thu thập hàng đống phần cứng giá rẻ để tạo ra một trang trại khai thác sẽ rất dễ dàng, bởi vì chỉ cần
về mọi thứ đều có CPU trong đó. Mặt khác, tại thời điểm đó, số lượng CPU
Tôi nghĩ yêu cầu cần thiết để thực hiện một cuộc tấn công 51% sẽ khá đáng kinh ngạc.
Hơn nữa,
chính xác là bởi vì sẽ dễ dàng thu thập phần cứng giá rẻ nên chúng ta có thể mong đợi một cách hợp lý
rất nhiều người bắt đầu tích trữ bất cứ thứ gì có CPU. Cuộc chạy đua vũ trang trong thế giới một CPU một phiếu bầu
nhất thiết phải bình đẳng hơn trong thế giới ASIC.
Do đó, sự gián đoạn trong mạng
an ninh do tỷ lệ phát thải sẽ ÍT hơn một vấn đề trong thế giới một CPU-một phiếu bầu.
Tuy nhiên, vẫn còn hai sự thật: 1) sự gián đoạn về tốc độ phát thải có thể dẫn đến hiệu ứng lắp bắp trong
cả nền kinh tế và an ninh mạng, điều này đều tệ và 2) mặc dù một cuộc tấn công 51%
được thực hiện bởi ai đó thu thập phần cứng giá rẻ vẫn có thể xảy ra trong một CPU-bầu chọn thế giới,
có vẻ như nó sẽ khó hơn.
Có lẽ, biện pháp bảo vệ chống lại điều này là tất cả những kẻ không trung thực sẽ thử điều này
đồng thời và chúng tôi quay trở lại khái niệm bảo mật trước đó của Bitcoin: "chúng tôi không yêu cầu sự thiếu trung thực
phe kiểm soát hơn 51% mạng lưới."
Tác giả khẳng định ở đây rằng một vấn đề với bitcoin là sự gián đoạn trong việc phát hành tiền xu.
tỷ lệ này có thể dẫn đến sự sụt giảm đột ngột trong việc tham gia mạng và do đó dẫn đến an ninh mạng. Như vậy,
thích hợp hơn là tốc độ phát thải đồng xu trơn tru, khác biệt và liên tục.
Chắc chắn là tác giả không sai. Bất kỳ sự giảm đột ngột nào về mức độ tham gia mạng lưới đều có thể
dẫn đến một vấn đề như vậy, và nếu chúng ta có thể loại bỏ một nguồn của nó thì chúng ta nên làm như vậy. Nói xong, đó là
có thể là thời gian phát thải tiền xu "tương đối ổn định" bị ngắt quãng bởi những thay đổi đột ngột
là cách lý tưởng để đi từ quan điểm kinh tế. Tôi không phải là một nhà kinh tế. Vì vậy, có lẽ chúng ta
phải quyết định xem liệu chúng ta có định đánh đổi an ninh mạng để lấy kinh tế hay không - đây là cái gì vậy?
http://arxiv.org/abs/1402.2009chúng nếu cần thiết sẽ gây ra những hạn chế chính. Thật không may, thật khó để dự đoán khi nào
các hằng số có thể cần phải được thay đổi và việc thay thế chúng có thể dẫn đến những hậu quả khủng khiếp.
Một ví dụ điển hình về thay đổi giới hạn được mã hóa cứng dẫn đến hậu quả tai hại là khối
giới hạn kích thước được đặt thành 250kb1. Giới hạn này đủ để chứa khoảng 10000 giao dịch tiêu chuẩn. trong
đầu năm 2013, giới hạn này gần như đã đạt được và đạt được thỏa thuận nhằm tăng
giới hạn. Thay đổi được triển khai trong phiên bản ví 0.8 và kết thúc bằng việc chia chuỗi 24 khối
và một cuộc tấn công chi tiêu gấp đôi thành công [9]. Mặc dù lỗi không nằm trong giao thức Bitcoin nhưng
đúng hơn là trong công cụ cơ sở dữ liệu, nó có thể dễ dàng bị phát hiện bằng một bài kiểm tra căng thẳng đơn giản nếu có
không có giới hạn kích thước khối được giới thiệu một cách giả tạo.
Các hằng số cũng hoạt động như một dạng điểm tập trung.
Bất chấp bản chất ngang hàng của
Bitcoin, phần lớn các nút sử dụng ứng dụng khách tham chiếu chính thức [10] được phát triển bởi
một nhóm nhỏ người Nhóm này đưa ra quyết định thực hiện các thay đổi đối với giao thức
và hầu hết mọi người đều chấp nhận những thay đổi này bất kể “tính đúng đắn” của chúng. Một số quyết định gây ra
các cuộc thảo luận sôi nổi và thậm chí còn kêu gọi tẩy chay [11], điều này cho thấy rằng cộng đồng và
các nhà phát triển có thể không đồng ý ở một số điểm quan trọng. Do đó, có vẻ hợp lý khi có một giao thức
với các biến do người dùng cấu hình và tự điều chỉnh như một cách có thể để tránh những vấn đề này.
2,5
Tập lệnh cồng kềnh
Hệ thống tập lệnh trong Bitcoin là một tính năng nặng nề và phức tạp. Nó có khả năng cho phép người ta tạo ra
các giao dịch phức tạp [12], nhưng một số tính năng của nó bị vô hiệu hóa do lo ngại về bảo mật và
một số thậm chí chưa bao giờ được sử dụng [13]. Kịch bản (bao gồm cả phần người gửi và người nhận)
đối với giao dịch phổ biến nhất trong Bitcoin trông như thế này: