CryptoNote v2.0

著 Nicolas van Saberhagen · 2013

ここに掲載されている論文は、Nicolas van Saberhagen(2013年)によるCryptoNote v2.0ホワイトペーパーであり、Moneroの基盤となる暗号的基礎を説明しています。これはMonero固有のホワイトペーパーではありません。Moneroは2014年にCryptoNoteのリファレンス実装(Bytecoin)のフォークとしてローンチされ、それ以来オリジナルプロトコルから大幅に発展しています。

導入

「Bitcoin」 [1] は、p2p 電子キャッシュの概念の実装に成功しました。両方 専門家も一般の人々も、これらの便利な組み合わせを高く評価するようになりました。 パブリック トランザクションと信頼モデルとしての proof-of-work。現在、電子マネーのユーザーベースは 着実なペースで成長しています。顧客は低料金と匿名性の提供に魅力を感じています 電子現金によるものであり、加盟店は予測された分散型排出量を重視しています。 Bitcoin は 電子マネーは紙幣と同じくらい簡単で、紙幣と同じくらい便利であることが効果的に証明されました。 クレジットカード。 残念ながら、Bitcoin にはいくつかの欠陥があります。たとえば、システムの分散型 性質は柔軟性が高く、ほぼすべてのネットワーク ユーザーがクライアントを更新するまで新しい機能を実装できません。修正できないいくつかの重大な欠陥は、Bitcoin の攻撃を迅速に阻止します。 広範な伝播。このような柔軟性のないモデルでは、新しいプロジェクトを展開する方が効率的です。 元のプロジェクトを永続的に修正するのではなく、 この文書では、Bitcoin の主な欠陥に対する解決策を研究し、提案します。私たちは信じています 私たちが提案するソリューションを考慮したシステムが健全な競争につながることを保証します さまざまな電子マネー システム間で。独自の電子マネー「CryptoNote」も提案しています。 電子マネーの次の進歩を強調する名前です。

介绍

“Bitcoin”[1]已经成功实现了p2p电子现金的概念。两者都 专业人士和公众已经开始欣赏这种便捷的组合 公共交易和 proof-of-work 作为信任模型。如今,电子现金的用户群 正在稳步增长;客户被低廉的费用和提供的匿名性所吸引 电子现金和商家对其预测和分散的排放进行评估。 Bitcoin 有 有效证明电子现金可以像纸币一样简单、像纸币一样方便 信用卡。 不幸的是,Bitcoin 有几个缺陷。例如,系统的分布式 本质上是不灵活的,在几乎所有网络用户更新其客户端之前,都会阻止新功能的实现。一些无法快速修复的关键缺陷阻碍了 Bitcoin 广泛传播。在这种不灵活的模式中,推出新项目会更有效率 而不是永久修复原来的项目。 在本文中,我们研究了Bitcoin的主要缺陷并提出了解决方案。我们相信 考虑到我们提出的解决方案的系统将带来良性竞争 不同的电子现金系统之间。我们还提出了我们自己的电子现金“CryptoNote”, 这个名字强调了电子现金的下一个突破。

Bitcoin 欠点と考えられる解決策

2 Bitcoin の欠点と考えられる解決策 2.1 取引のトレーサビリティ プライバシーと匿名性は、電子マネーの最も重要な側面です。ピアツーピア支払い 第三者の目から隠蔽されるよう努めますが、これは従来の方法と比較した場合の明らかな違いです。 銀行業。特に、T.okamoto と K.Ohta は、理想的な電子マネーの 6 つの基準を説明しました。 これには「プライバシー: ユーザーとその購入との関係は追跡不可能でなければなりません」が含まれます。 誰でも」[30]。それらの説明から、完全に匿名である 2 つのプロパティを導き出しました。 岡本氏が概説した要件に準拠するには、電子現金モデルが満たさなければなりません そして太田: 追跡不可能性: 受信トランザクションごとに、考えられるすべての送信者が等しい確率で存在します。 リンク不可能性: 2 つの送信トランザクションについて、それらが送信されたことを証明することは不可能です。 同じ人です。 残念ながら、Bitcoin は追跡不可能な要件を満たしていません。ネットワークの参加者間で行われるトランザクションはすべて公開されるため、あらゆるトランザクションが公開される可能性があります。 1 クリプトノート v 2.0 ニコラス・ファン・セイバーハーゲン 2013 年 10 月 17 日 1 はじめに 「Bitcoin」 [1] は、p2p 電子キャッシュの概念の実装に成功しました。両方 専門家も一般の人々も、これらの便利な組み合わせを高く評価するようになりました。 パブリック トランザクションと信頼モデルとしての proof-of-work。現在、電子マネーのユーザーベースは 着実なペースで成長しています。顧客は低料金と匿名性の提供に魅力を感じています 電子現金によるものであり、加盟店は予測された分散型排出量を重視しています。 Bitcoin は 電子マネーは紙幣と同じくらい簡単で、紙幣と同じくらい便利であることが効果的に証明されました。 クレジットカード。 残念ながら、Bitcoin にはいくつかの欠陥があります。たとえば、システムの分散型 性質は柔軟性が高く、ほぼすべてのネットワーク ユーザーがクライアントを更新するまで新しい機能を実装できません。修正できないいくつかの重大な欠陥により、Bitcoin の攻撃が阻止されます 広範な伝播。このような柔軟性のないモデルでは、新しいプロジェクトを展開する方が効率的です。 元のプロジェクトを永続的に修正するのではなく、 この文書では、Bitcoin の主な欠陥に対する解決策を研究し、提案します。私たちは信じています 私たちが提案するソリューションを考慮したシステムが健全な競争につながることを保証します さまざまな電子マネー システム間で。独自の電子マネー「CryptoNote」も提案しています。 電子マネーの次の進歩を強調する名前です。 2 Bitcoin の欠点と考えられる解決策 2.1 取引のトレーサビリティ プライバシーと匿名性は、電子マネーの最も重要な側面です。ピアツーピア支払い 第三者の目から隠蔽されるよう努めますが、これは従来の方法と比較した場合の明らかな違いです。 銀行業。特に、T.okamoto と K.Ohta は、理想的な電子マネーの 6 つの基準を説明しました。 これには「プライバシー: ユーザーとその購入との関係は追跡不可能でなければなりません」が含まれます。 誰でも」[30]。それらの説明から、完全に匿名である 2 つのプロパティを導き出しました。 岡本氏が概説した要件に準拠するには、電子現金モデルが満たさなければなりません そして太田: 追跡不可能性: 受信トランザクションごとに、考えられるすべての送信者が等しい確率で存在します。 リンク不可能性: 2 つの送信トランザクションについて、それらが送信されたことを証明することは不可能です。 同じ人です。 残念ながら、Bitcoin は追跡不可能な要件を満たしていません。ネットワークの参加者間で行われるトランザクションはすべて公開されるため、あらゆるトランザクションが公開される可能性があります。 1 3 Bitcoin は間違いなく「追跡不能」に失敗します。 BTCを送信する場合、送信元のウォレット blockchain には取り消し不能のスタンプが押されています。誰がその資金を送ったかについては疑問の余地はありませんが、 なぜなら、秘密鍵を知っている人だけが秘密鍵を送信できるからです。一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 [25] では、多くの隠された個人情報が抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後にこれと同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 d[25] と疑われており、隠された個人情報が大量に抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが約 30kb (今日の Bitcoin 制限に基づく) という不便なサイズであるため、この提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6]。最後にこれと同じ投票が行われます。 このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 4 おそらく、すべてのユーザーが常に新しいアドレスを生成することで自分自身の匿名性を保っているとしたら、 受け取ったすべての支払いに対して(これはばかげていますが、技術的には「正しい」方法です)、 そして、すべてのユーザーが決して資金を送金しないと主張して、他のユーザーの匿名性を助けたとしたら 同じBTCアドレスに2回送信した場合、Bitcoinは依然として状況的にのみ渡されます 非リンク性テスト。 なぜ?消費者データを使用すると、人々に関する驚くべき量の情報を常に把握できます。 たとえば、http://www.applieddatalabs.com/content/target-knows-it-shows を参照してください。 さて、これが 20 年後の未来であると想像してください。さらに、ターゲットが単に知っていたわけではないと想像してください。 Target でのあなたの購入習慣についてですが、彼らはすべての商品について blockchain をマイニングしていました 過去の Coinbase ウォレットでの個人購入 12年。 彼らはこう言うだろう、「ねえ、今夜は咳止め薬を買いたいかもしれないけど、そんなことはないよ」 明日は気分がいいよ。」 マルチパーティの並べ替えが正しく利用されている場合は、これは当てはまらない可能性があります。たとえば、これを参照してくださいブログ投稿: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ 私はその計算に完全に納得しているわけではありませんが、一度に 1 つの論文ですよね? 引用が必要です。 Zerocoin プロトコル (スタンドアロン) では不十分かもしれませんが、Zerocash このプロトコルは 1kb サイズのトランザクションを実装しているようです。そのプロジェクトを支援しているのは、 もちろん、アメリカ軍とイスラエル軍もそうなので、その堅牢性については誰にも分かりません。一方では 軍隊ほど、監視なしに資金を支出できることを望んでいる人はいないでしょう。 http://zerocash-project.org/ 納得できません...たとえば、http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf を参照してください。 暗号ノート開発者モーリス・プランク氏(おそらく仮名)の暗号ノートからの引用 フォーラム: 「ゼロコイン、ゼロキャッシュ。 これは最先端のテクノロジーであると認めざるを得ません。 はい、引用です 上記は、プロトコルの以前のバージョンの分析からのものです。私の知る限り、そうではありません 288 バイトですが 384 バイトですが、いずれにせよ、これは良いニュースです。 彼らは SNARK と呼ばれるまったく新しい技術を使用しましたが、これにはいくつかの欠点がありました。 署名の作成に必要な公開パラメーターの大規模な初期データベース (1 GB 以上) トランザクションの作成にかなりの時間がかかります (1 分以上)。最後に、彼らは 若い暗号通貨、これは議論の余地があるアイデアであると述べました: https://forum.cryptonote.org/viewtopic.php?f= " - モーリス・P. 2014年4月3日(木)午後7時56分 CPU で実行され、GPU、FPGA、または ASIC には適さない機能 計算。 proof-of-work で使用される「パズル」は、価格設定関数、コスト関数、または パズル機能。

一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 [25] では、多くの隠された個人情報が抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後に同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 一意の発信元と最終受信者まで明確に追跡されます。参加者2人が交換しても 間接的な方法で資金を調達する場合、適切に設計された経路探索手法により、その出所が明らかになり、 最終的な受取人。 また、Bitcoin が 2 番目の特性を満たしていない可能性もあります。 一部の研究者 は ([33, 35, 29, 31])、慎重な blockchain 分析により、 Bitcoin ネットワークのユーザーとそのトランザクション。方法はいくつかありますが、 d[25] と疑われており、隠された個人情報が大量に抽出される可能性があると疑われています。 パブリックデータベース。 Bitcoin は上記の 2 つの特性を満たしていないため、次のような結論に達します。 匿名ではなく、擬似匿名の電子現金システムです。ユーザーの開発は迅速でした この欠点を回避するためのソリューション。 2 つの直接的な解決策は、「ロンダリング サービス」[2] と 分散手法の開発 [3、4]。どちらのソリューションも、混合するという考えに基づいています。 いくつかのパブリック トランザクションと、それらを何らかの中間アドレス経由で送信する。それは順番に 信頼できる第三者を必要とするという欠点があります。 最近、より創造的なスキームが I. Miers らによって提案されました。 [28]: 「ゼロコイン」。ゼロコイン 暗号化された一方向アキュムレータとゼロ知識証明を利用して、ユーザーは次のことを行うことができます。 ビットコインをゼロコインに「変換」し、代わりに匿名の所有権証明を使用してそれらを使用します。 明示的な公開キーベースのデジタル署名。ただし、そのような知識証明には定数があります。 しかし、サイズが不便 - 約 30kb (今日の Bitcoin 制限に基づく) という提案が行われます。 非実用的。著者らは、このプロトコルが大多数の人たちに受け入れられる可能性は低いことを認めています。 Bitcoin ユーザー [5]。 2.2 proof-of-work 関数 Bitcoin の作成者であるサトシ ナカモトは、多数決の意思決定アルゴリズムを「1CPU 1 票」と表現し、proof-of-work では CPU に依存した価格設定関数 (SHA-256 の 2 倍) を使用しました。 スキーム。ユーザーは単一の取引履歴注文 [1] に投票するため、合理性と このプロセスの一貫性は、システム全体にとって重要な条件です。 このモデルのセキュリティには 2 つの欠点があります。まず、ネットワークの 51% が必要です。 マイニングパワーは誠実なユーザーの管理下に置かれます。第二に、システムの進歩(バグ修正、 セキュリティ修正など...) を実現するには、圧倒的多数のユーザーがサポートし、同意する必要があります。 変更 (これはユーザーがウォレット ソフトウェアを更新するときに発生します) [6].最後に同じ投票が行われます このメカニズムは、一部の機能 [7] の実装に関する集団投票にも使用されます。 これにより、proof-of-work が満たさなければならない特性を推測することができます。 価格設定機能。 このような機能により、ネットワーク参加者が重大な問題を引き起こす可能性があってはなりません。 他の参加者よりも有利。一般的なハードウェアと高度なハードウェアの間のパリティが必要です。 カスタムデバイスのコスト。最近の例 [8] から、SHA-256 関数が使用されていることがわかります。 Bitcoin アーキテクチャでは、マイニングの効率が向上するため、このプロパティはありません。 ハイエンド CPU と比較した場合の GPU および ASIC デバイス。 したがって、Bitcoin は、 GPU と ASIC の所有者が所有しているため、「1 CPU 1 票」の原則に違反するため、参加者は除外されます。 CPU 所有者と比較すると、はるかに大きな投票力を持ちます。それは古典的な例です システム参加者の 20% が投票の 80% 以上を支配するパレートの法則。 ネットワークのセキュリティは問題ではないため、そのような不平等はネットワークのセキュリティとは関係がないと主張する人もいるでしょう。 少数の参加者が投票の大部分を支配しているが、これらの参加者の誠実さ 大切な参加者たち。しかし、このような議論には多少の欠陥があります。 参加者の誠実さよりも、安価な専用ハードウェアが登場する可能性 脅威をもたらします。これを実証するために、次の例を見てみましょう。悪意のある人がいると仮定します 個人は、安価な方法で自分のマイニングファームを作成することで、大幅なマイニングパワーを獲得します。 2 2ページ目のコメント

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 テクノロジーの制限について説明したので、次は次の点に集中します。 CryptoNoteの機能を紹介します。

CryptoNote 技术

现在我们已经涵盖了 Bitcoin 技术的局限性,我们将重点关注 介绍 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 で最も人気のあるトランザクションは次のようになります。 OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG。 スクリプトの長さは 164 バイトですが、その唯一の目的は、受信者が 彼の署名を検証するために必要な秘密鍵。 3 クリプトノートテクノロジー Bitcoin テクノロジーの制限について説明したので、次は次の点に集中します。 CryptoNoteの機能を紹介します。 4 追跡できない取引 このセクションでは、追跡不可能性と追跡不可能性の両方を満たす完全匿名トランザクションのスキームを提案します。 そしてリンク解除条件。私たちのソリューションの重要な特徴は、送信側の自律性です。 取引を行うために他のユーザーまたは信頼できる第三者と協力する必要はありません。 したがって、各参加者は独立してカバー トラフィックを生成します。 4.1 文献レビュー 私たちのスキームは、グループ署名と呼ばれる暗号化プリミティブに依存しています。最初に提示されたのは D. Chaum と E. van Heyst [19] では、ユーザーがグループを代表して自分のメッセージに署名できるようになります。 メッセージに署名した後、ユーザーは自分自身の単一の公開情報ではなく (検証目的で) 提供します。 1これはいわゆる「ソフトリミット」、つまり新しいブロックを作成するための参照クライアント制限です。ハード最大値 可能なブロックサイズは 1 MB でした 4 7 振り返ってみると、コード内でブロック サイズを固定制限にしたのは大きな間違いだったようです。 Visa と Mastercard は、数十万とは言わないまでも、数千の取引を処理できます 毎秒。ただし、トランザクションは確率的なプロセスで発生し、場合によっては大規模なバーストで発生します。 時には何時間も静かに過ごすこともあります。ビットコイン交換の量を考えてみましょう。 必要に応じてブロックサイズを動的に増加させるシステムを設計するという壮大なアイデアのように思えます トランザクション トラフィックの増加に対応し、必要に応じて動的にトラフィックを削減します。 帯域幅効率が向上します。 次に、その概念をすべてのシステム パラメーターに適用します。そして、私たちがそれを保つように注意している限り、 システムが制御不能になるのを防ぎます、これはうまくいくかもしれない。 https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki 前述したように、変数が自動調整される場合は、いくつかの制御を課す必要があります。 システムが制御不能になって暴走するのを防ぎます。それについては説明します。 これがウィキペディアの記事であれば、「STUB」というラベルが付けられます。確かにその中にいますが、 「Bitcoin の問題」を紹介するセクションで、ここでもう少し詳しく説明したいと思います。なぜですか 単純な「秘密鍵のチェック」タスクに 164 バイトは受け入れられませんか?どれくらい小さくできるか 合理的なスクリプト言語でしょうか?ただし、私はコンピューター科学者ではありません。 http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 説明したように、グループ署名にはグループ マネージャーが必要です。 グループマネージャーは有能です 署名者の匿名性を取り消すこと。したがって、グループ内には集中化が組み込まれています。 署名スキーム。

キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開鍵は多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 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 ここで説明するリンク可能なリング署名は、「リンク不可能」の反対のようなものであることに注意してください。 上で説明した。ここでは 2 つのメッセージを傍受し、同じメッセージかどうかを判断できます。 当事者がそれらを送信しましたが、その当事者が誰であるかをまだ特定できないはずです。 の Cryptonote の構築に使用される「リンク不可能」の定義は、次のいずれかを判断できないことを意味します。 同じ当事者がそれらを受信しています。 したがって、ここで実際に起こっているのは 4 つのことです。 システムはリンク可能であることも、 送信者であるかどうかを判断できるかどうかに応じて、リンク不可 2 つのメッセージは同じです (匿名性を取り消す必要があるかどうかに関係なく)。 そして システムは、次のことが可能かどうかに応じて、リンク不能または非リンク可能になります。 2 つのメッセージの受信者が同じかどうかを判断します (かどうかに関係なく) これには匿名性を取り消す必要があります)。 このひどい用語のせいで私を責めないでください。 グラフ理論家はおそらくそうあるべきです 満足です。 「送信者リンク可能」よりも「受信者リンク可能」の方が使いやすい人もいるかもしれません。 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

キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 EC キーのペアです。 5 9 ああ、このホワイトペーパーの著者なら、これをもっと適切に表現できたはずです。たとえば、 従業員所有の会社は、特定の新規企業を買収するかどうかについて投票を行いたいと考えています アレックスとブレンダは両方とも従業員です。会社は従業員一人ひとりに 「提案 A に賛成票を投じます!」のようなメッセージメタ情報「問題」を持つ [PROP A] そして、その提案を支持する場合は、追跡可能な指輪の署名で署名するように求めます。 従来のリング署名を使用すると、不正な従業員がメッセージに何度も署名する可能性があります。 おそらく、好きなだけ投票するために、さまざまな nonce を使用しているのでしょう。一方では 追跡可能なリング署名スキームで、アレックスは投票に行き、彼女の秘密鍵は 問題 [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: グループマネージャーのいない任意のグループ形成。匿名性の取り消しはありません。 特定の署名を拒否する方法はありません。追跡可能でリンク可能なリング付き 署名、匿名性はある程度拡張可能です。 アドホック グループ署名: リング署名と似ていますが、メンバーは自分が作成したものではないことを証明できます。 特定の署名。これは、グループ内の誰もが署名を作成できる場合に重要です。 http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 藤崎と鈴木のアルゴリズムは、一度限りのものを提供するために作者によって後で調整されます。それで 藤崎氏と鈴木氏のアルゴリズムを新しいアルゴリズムと並行して分析します。 ここでそれを検討するよりも。

キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本署名アルゴリズムとして、高速スキーム EdDSA を使用することを選択しました。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 EC キーのペアです。 5 キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [34] では、グループ マネージャーや匿名性のない自律的なスキームでした 取り消し。このスキームのさまざまな修正が後に現れました: リンク可能なリング署名 [26, 27, 17] 2 つの署名が同じグループ メンバーによって作成されたかどうかを判断でき、追跡可能 指輪の署名 [24, 23] は、署名者を追跡する可能性を提供することで過度の匿名性を制限しました。 同じメタ情報 ([24] の用語では「タグ」) に関する 2 つのメッセージ。 同様の暗号構造は、アドホック グループ署名としても知られています [16、38]。それ は、任意のグループ形成を強調しますが、グループ/リング署名スキームはむしろ、 メンバーの固定セット。 私たちのソリューションの大部分は、E. Fujisaki の著作「Traceable Ring Signature」に基づいています。 および K. スズキ [24]。元のアルゴリズムと変更を区別するために、 後者をワンタイム呼び出し署名と呼び、ユーザーが有効な呼び出し音を 1 つだけ作成できることを強調します。 彼の秘密鍵の下にある署名。トレーサビリティ性を弱め、リンク性を維持 ワンタイム性を提供するためだけに: 公開キーは多くの外部検証セットに現れる可能性があり、 秘密キーは、一意の匿名署名を生成するために使用できます。二重支払いの場合 これら 2 つの署名はリンクされますが、署名者を明らかにする必要はありません。 私たちの目的のために。 4.2 定義 4.2.1 楕円曲線パラメータ 基本的な署名アルゴリズムとして、e 開発された高速スキーム EdDSA を使用します。 DJによって実装されました。バーンスタインら。 [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; \(H_s\): 暗号 hash 関数 \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): 決定論的 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 キーと公開 EC キーのペアです。 5 10 「リンク可能なリング署名」という意味でのリンク可能性とは、ソースが誰であるかを明らかにすることなく、2 つの発信トランザクションが同じソースからのものであるかどうかを判断できることを意味します。作者は弱体化した (a) プライバシーを維持しながら、(b) 秘密キーを使用してトランザクションを特定するためのリンク性 2回目は無効です。 さて、これは順序立てての質問です。 次のシナリオを考えてみましょう。 私の採掘 コンピュータには現在の blockchain があり、それが呼び出す独自のトランザクション ブロックがあります。 正当な場合、proof-of-work パズルのそのブロックで動作し、 次のブロックに追加される保留中のトランザクションのリスト。新作も発信していきます トランザクションを保留中のトランザクションのプールに追加します。 次のブロックを解かなければ、 他の人がそうすれば、blockchain の更新されたコピーを入手できます。私が取り組んでいたブロックと 私の保留中のトランザクションのリストには、どちらにも現在組み込まれているトランザクションが含まれている可能性があります blockchain に入力します。 保留中のブロックを解明し、それを保留中のトランザクションのリストと組み合わせて、それを呼び出します 私の保留中のトランザクションのプール。現在正式に blockchain に含まれているものはすべて削除してください。 さて、どうすればいいでしょうか?まず「二重支出をすべて削除する」必要がありますか?一方では リストを検索して、各秘密鍵がまだ作成されていないことを確認する必要がありますか? 使用済みであり、リスト内ですでに使用されている場合は、最初のコピーを先に受け取ったため、 それ以上のコピーは違法です。したがって、最初のインスタンスの後のすべてのインスタンスを単純に削除します。 同じ秘密鍵の。 代数幾何学は私の得意分野ではありませんでした。 http://en.wikipedia.org/wiki/EdDSA このスピード、すごいですね。これは勝利のための代数幾何学です。何もわかるわけじゃないけど それについて。 問題があるかどうかにかかわらず、離散ログは非常に高速になっています。そして量子コンピューターはそれらを食べる 朝食に。 http://link.springer.com/article/10.1007/s13389-012-0027-1 これは非常に重要な数字になりますが、それがどのように行われるかについての説明や引用はありません。 が選ばれました。既知の大きな素数を 1 つ選択するだけなら問題ありませんが、既知の素数が存在する場合は、 この大きな素数に関する事実は、私たちの選択に影響を与える可能性があります。暗号通貨のさまざまな亜種 異なる値を選択することもできます まあ、しかし、それがどのようにして起こるかについては、この文書では議論されていません。 選択は、5 ページにリストされている他のグローバル パラメーターの選択に影響します。 この文書には、パラメーター値の選択に関するセクションが必要です。

ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション モデル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様のままです。すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション modエル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 11 つまり、これは Bitcoin に似ていますが、無限の匿名私書箱があり、受取人のみが引き換えることができます。 リング署名と同じくらい匿名性の高い秘密キーを生成します。 Bitcoin はこのように機能します。 アレックスがフランクから受け取ったばかりの財布に 0.112 Bitcoin が入っている場合、彼女は本当に署名を持っています。 メッセージ「私、[FRANK]、0.112 Bitcoin を [alex] + H0 + N0 に送信します」 ここで、1) フランクは メッセージに秘密鍵 [FRANK] を使用、2) フランクはアレックスの公開鍵でメッセージに署名しました key、[alex]、3) Frank にはビットコインの歴史の何らかの形式が含まれています、H0、および 4) Frank nonce、N0 と呼ばれるランダムなデータ ビットが含まれています。 アレックスが 0.011 Bitcoin をシャーリーンに送信したい場合、彼女はフランクのメッセージを受け取ります。 これを H1 に設定し、2 つのメッセージに署名します。1 つはトランザクション用、もう 1 つは変更用です。 H1= "私、[FRANK]、0.112 Bitcoin を [alex] に送信 + H0 + N" "私、[ALEX]、0.011 Bitcoin を [alex] に送信 [charlene] + H1 + N1" 「私、[ALEX]、[alex] + H1 + N2 への変更として 0.101 Bitcoin を送信します。」 ここで、Alex は両方のメッセージに彼女の秘密鍵 [ALEX] で署名し、最初のメッセージは Charlene の秘密鍵で署名します。 公開鍵 [charlene]、Alex の公開鍵 [alex] を含む 2 番目のメッセージ、および 履歴と、ランダムに生成されたいくつかの nonce N1 および N2 が適切に保存されます。 Cryptonote は次のように機能します。 アレックスがフランクから受け取ったばかりの 0.112 暗号通貨を財布の中に持っている場合、彼女は本当に署名された暗号を持っています。 メッセージ「私、[アドホック グループの誰か] は、[ワンタイム アドレス] + H0 に 0.112 暗号ノートを送信します +N0。」アレックスは、自分の秘密鍵 [ALEX] を照合して、これが自分のお金であることを発見しました。 通過するすべてのメッセージに対する [ワンタイム アドレス]。彼女がそれを使いたい場合は、 次の方法で。 彼女はお金の受取人を選択します。おそらくシャーリーンはドローン攻撃に投票し始めたので、 アレックスは代わりにブレンダに送金したいと考えています。そこで、アレックスはブレンダの公開鍵 [brenda] を調べます。 そして、彼女自身の秘密鍵 [ALEX] を使用して、ワンタイム アドレス [ALEX+brenda] を生成します。彼女 次に、暗号通貨ユーザーのネットワークから任意のコレクション C を選択し、次のように構築します。 このアドホック グループからのリング署名。 履歴を前のメッセージとして設定し、追加します nonces、通常どおり続行しますか? H1 = 「私、[アドホック グループの誰か]、0.112 暗号通貨を [ワンタイム アドレス] + H0 に送信します +N0。」 「私、[コレクション C の誰か] は、[ALEX+brenda から作成した 1 回限りのアドレス] + H1 + N1 に 0.011 暗号通貨を送信します」 「私、[コレクション C の誰か] は、[ALEX+alex から作成したワンタイム アドレス] + H1 + N2 への変更として 0.101 暗号通貨を送信します。」 現在、Alex と Brenda は両方とも、すべての受信メッセージをスキャンして、ワンタイム アドレスがないかどうかを確認します。 キーを使用して作成されます。 何かを見つけた場合、そのメッセージは彼ら自身の真新しいものになります。 暗号ノート! それでも、トランザクションは依然として blockchain に達します。そのアドレスにコインが入った場合 犯罪者、政治献金者、または委員会やアカウントから送信されたことが知られている 予算が厳しい場合(横領など)、またはこれらのコインの新しい所有者が間違いを犯した場合 そして、これらのコインを、彼が所有していることが知られているコイン、つまり匿名ジグと共通のアドレスに送信します。 ビットコインが上がっています。

ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション モデル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 ユーザー秘密キーは、2 つの異なる秘密 EC キーのペア (a、b) です。 追跡キーは秘密鍵と公開 EC 鍵のペア (a, B) です (B = bG および a ̸= b)。 公開ユーザー鍵は、(a, b) から派生した 2 つの公開 EC 鍵のペア (A, B) です。 標準アドレスは、人間にわかりやすい文字列で与えられた公開ユーザー キーの表現です。 エラー訂正あり。 切り詰められたアドレスは、指定された公開ユーザー キーの後半 (ポイント B) を表します。 エラー修正を行って人間に優しい文字列に変換します。 トランザクション構造は Bitcoin の構造と同様であり、すべてのユーザーが選択できます。 複数の独立した入金 (トランザクション出力) に対応する署名を付けます。 秘密鍵を取得して別の宛先に送信します。 ユーザーが一意の秘密鍵と公開鍵を所有する Bitcoin のモデルとは対照的に、 提案されたモデルでは、送信者は受信者のアドレスに基づいてワンタイム公開鍵を生成し、 ランダムなデータ。この意味で、同じ受信者に対する受信トランザクションは、 ワンタイム公開キー (一意のアドレスに直接ではない) であり、受信者のみがそのキーを回復できます。 彼の資金を償還するための対応するプライベート部分(彼の一意の秘密キーを使用)。受信者は次のことができます 指輪の署名を使用して資金を使い、所有権と実際の支出を匿名にします。 プロトコルの詳細については、次のサブセクションで説明します。 4.3 リンクできない支払い 従来の Bitcoin アドレスは、公開されると、受信者の明確な識別子になります。 支払いをリンクし、受取人の仮名に結び付ける。誰かがそうしたいなら 「結合されていない」トランザクションを受け取った場合、プライベート チャネルで自分のアドレスを送信者に伝える必要があります。 同じ所有者に属することが証明できない異なるトランザクションを受け取りたい場合 彼はさまざまなアドレスをすべて生成し、決して自分のペンネームで公開すべきではありません。 公共 プライベート アリス キャロル ボブのアドレス 1 ボブのアドレス 2 ボブの鍵 1 ボブの鍵 2 ボブ 図 2. 従来の Bitcoin キー/トランザクション modエル。 ユーザーが単一のアドレスを公開し、無条件で受信できるソリューションを提案します。 リンクできない支払い。各 CryptoNote 出力の宛先 (デフォルト) は公開キーです。 受信者のアドレスと送信者のランダムなデータから導き出されます。 Bitcoin に対する主な利点 すべての宛先キーはデフォルトで一意であるということです (送信者が各宛先キーに同じデータを使用しない限り) 同じ受信者に対する彼のトランザクションの内容)。したがって、「アドレスの再利用」などの問題は発生しません。 設計上、トランザクションが特定のアドレスまたはリンクに送信されたかどうかを監視者は判断できません。 2 つのアドレスを一緒にします。 6 12 したがって、ユーザーがアドレス(実際には公開鍵)からアドレスにコインを送信するのではなく、 (別の公開鍵) 秘密鍵を使用して、ユーザーはワンタイム私書箱からコインを送信します (友人の公開キーを使用して生成) を使用して (同様に) ワンタイム私書箱に送信します。 自分の秘密鍵。 ある意味、私たちは「わかった、みんなお金が動いている間は手を離してください」と言っているのです。 転勤しました!私たちの鍵があの箱を開けることができるということを知るだけで十分です。 私たちは箱の中にどれだけのお金が入っているかを知っています。 私書箱や郵便ポストには決して指紋を付けないでください。 実際に使ってみると、現金が入った箱そのものを取引するだけです。そうすれば誰が送ったか分からなくなります しかし、これらの公開演説の内容は依然として摩擦がなく、代替可能で、分割可能であり、 ビットコインのような、私たちが望むお金の他のすべての優れた性質をまだ持っています。」 私書箱の無限のセット。 あなたはアドレスを公開しています、私は秘密鍵を持っています。私は私の秘密鍵とあなたのアドレスを使用します、そして 公開鍵を生成するためのランダムなデータ。アルゴリズムは次のように設計されています。 アドレスは公開キーの生成に使用されました。あなたの秘密キーのみがロックを解除するために機能します。 メッセージ。 オブザーバーのイブは、あなたがアドレスを公開しているのを見て、私が発表した公開鍵を見ます。ただし、 彼女は、私があなたのアドレスに基づいて私の公開鍵を発表したのか、彼女のアドレスに基づいて発表したのか、それともブレンダのアドレスに基づいて発表したのか知りません。 シャーリーンのものでも、誰のものでも。彼女は私が発表した公開鍵と自分の秘密鍵を照合します そしてそれがうまくいかないことがわかります。それは彼女のお金ではありません。彼女は他人の秘密鍵を知りません。 メッセージの受信者だけがメッセージのロックを解除できる秘密キーを持っています。だから誰もいない 盗聴するだけで、誰がお金を受け取ったのかを特定することができ、ましてやお金を受け取ることはできません。

公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 13 暗号化の 選択 を実装するのは、どれほど面倒なことだろうか スキーム。楕円形でもそれ以外でも。したがって、将来何らかの計画が破られた場合、通貨は切り替わります 心配することなく。おそらく大きなお尻の痛みでしょう。 さて、これはまさに前のコメントで説明したことです。ディフィー・ヘルマンタイプ 交換はニートです。アレックスとブレンダはそれぞれ秘密の番号 A と B、そして数字を持っているとします。 彼らは秘密を守ることを気にしません、aとb。彼らは、共有シークレットを生成することを望んでいます。 それを発見したエヴァ。ディフィーとヘルマンは、アレックスとブレンダが情報を共有する方法を考え出しました。 公開番号 a と b を使用しますが、非公開番号 A と B は使用せず、共有秘密を生成します。 K. この共有秘密 K を使用すると、Eva がリッスンすることなく、同じものを生成できます。 K、アレックス、ブレンダは、K を秘密暗号化キーとして使用し、秘密メッセージを送り返すことができるようになりました。 そして先へ。 100 よりもはるかに大きな数値でも動作するはずですが、可能な動作は次のとおりです。 100 を使用するのは、100 を法とする整数を処理することは「すべてを破棄する」ことと同じであるためです。 ただし、数字の下 2 桁です。」 アレックスとブレンダはそれぞれ A、a、B、b を選択します。彼らはAとBを秘密にします。 アレックスはブレンダにモジュロ 100 の値 (下 2 桁だけ) を伝え、ブレンダはアレックスに伝えます。 彼女の b モジュロ 100 の値。今、エヴァは (a,b) モジュロ 100 を知っています。しかし、アレックスは (a,b,A) を知っているので、彼女は x=abA モジュロ 100 を計算できます。アレックスは仕事中なので最後の一桁を除いて全部切ります 再び 100 を法とする整数の下で計算します。同様に、ブレンダは (a,b,B) を知っているので計算できます。 y=abB modulo 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 シーケンス」には、SIGNATURES などの一連のステップが欠落しています。 ここではそれらは当然のこととして受け入れられています。これは本当に悪いことです。 署名内容、署名メッセージに含まれる情報など...これらすべてが非常に重要です プロトコルにとって重要です。 「 「標準トランザクション シーケンス」は、システム全体のセキュリティに疑問を投げかける可能性があります。 さらに、この論文の後半で示される証明は、次のような場合には十分に厳密ではない可能性があります。 それらが動作するフレームワークは、このセクションと同様に大まかに定義されています。

公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 公共 プライベート アリス キャロル ワンタイムキー ワンタイムキー ワンタイムキー ボブ ボブの鍵 ボブの住所 図 3. CryptoNote のキー/トランザクション モデル。 まず、送信者はディフィー・ヘルマン交換を実行してデータから共有秘密を取得し、 受信者の住所の半分。次に、共有されたキーを使用して、ワンタイム宛先キーを計算します。 秘密とアドレスの後半。受信者には 2 つの異なる EC キーが必要です これら 2 つのステップのため、標準の CryptoNote アドレスは Bitcoin ウォレットのほぼ 2 倍の大きさになります。 住所。 受信者はまた、ディフィー・ヘルマン交換を実行して、対応するデータを回復します。 秘密鍵。 標準的なトランザクション シーケンスは次のようになります。 1. アリスは、標準住所を公開しているボブに支払いを送金したいと考えています。 彼女 アドレスを解凍し、ボブの公開鍵 (A、B) を取得します。 2. アリスはランダムな \(r \in [1, l - 1]\) を生成し、ワンタイム公開鍵 \(P = H_s(rA)G +\) を計算します。 B. 3. アリスは、出力の宛先キーとして P を使用し、値 R = rG も (一部として) パックします。 Diffie-Hellman 交換の) トランザクションのどこかに。彼女は作成できることに注意してください 一意の公開鍵を含む他の出力: 異なる受信者の鍵 (Ai、Bi) は異なる Pi を意味します 同じrでも。 トランザクション 送信公開鍵 送信出力 金額 宛先キー R = rG P = Hs(rA)G + B 受信者の 公開鍵 送信者のランダムデータ r (A、B) 図 4. 標準的なトランザクション構造。 4. アリスはトランザクションを送信します。 5. ボブは、通過するすべてのトランザクションを自分の秘密鍵 (a, b) でチェックし、P ' = を計算します。 Hs(aR)G + B. ボブを受取人とするアリスの取引がその中にあったとしたら、 この場合、aR = arG = rA および P ' = P となります。 7 14 著者は、用語を一貫して正確に保つというひどい仕事をしていることに注意してください。 本文もそうですが、特に次の部分で。この文書の次回の発行は必ず次のとおりです。 はるかに厳格です。 本文中では、P をワンタイム公開鍵と呼んでいます。図では、R を次のように呼んでいます。 「送信公開キー」と「宛先キー」としての P。これをもう一度書くとしたら、 これらのセクションについて説明する前に、いくつかの用語を非常に具体的に説明します。 このエルは巨大です。 5 ページを参照してください。 エルを選ぶのは誰ですか? 図は、トランザクション公開キー R = rG (ランダムに選択される) を示しています。 送信者によるものであり、Tx 出力の一部ではありません。複数で同じになる可能性があるためです 複数の人へのトランザクションであり、「後で」使用されることはありません。新しい R が生成される 新しい CryptoNote トランザクションをブロードキャストするたびに。なお、Rはのみ使用されます あなたが取引の受取人であるかどうかを確認します。ジャンクデータではありませんが、誰にとってもジャンクです (A,B) に関連付けられた秘密キーなし。 一方、Destination キー、P = Hs(rA)G + B は Tx 出力の一部です。みんな 通過するすべてのトランザクションのデータをざっと調べて、独自に生成された P* を照合する必要があります。 この P を使用して、この通過トランザクションを所有しているかどうかを確認します。未使用のトランザクション出力がある人 (UTXO) には、大量の P が金額とともに転がっているでしょう。過ごすためにd、彼らは P を含む新しいメッセージに署名します。 アリスは、未使用のトランザクション出力の宛先キーに関連付けられたワンタイム秘密キーを使用して、このトランザクションに署名する必要があります。アリスが所有する各宛先キーが装備されています ワンタイム秘密鍵も (おそらく) アリスが所有しているものです。アリスが望むたびに 宛先キーの内容を私、またはボブ、ブレンダ、チャーリー、またはシャーリーンに送ってください、彼女は 彼女の秘密鍵を使用してトランザクションに署名します。取引を受領次第、新しいものを受け取ります 送信公開キー、新しい宛先公開キー、そして新しいワンタイム秘密キー x を回復できるようになります。ワンタイム秘密キー x と新しいトランザクションの公開宛先を組み合わせる key(s) は新しいトランザクションの送信方法です

  1. ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まず、明示的な言及はせずに、アルゴリズムの一般的な説明を行います。 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8
  2. ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まずジェネレーターを提供します明示的な言及のないアルゴリズムの説明 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8 15 未使用のトランザクション出力はどのようになりますか?この図は、トランザクション出力が金額と宛先キーの 2 つのデータ ポイントのみで構成されていることを示しています。しかし、これはそうではありません この「アウトプット」を使おうとするとき、やはり R=rG を知る必要があるので、これで十分です。 r は送信者によって選択され、R は a) 受信した暗号通貨をあなたのものとして認識するために使用されることを覚えておいてください。 b) 暗号ノートを「要求」するために使用されるワンタイム秘密キーの生成に使用されます。 これについて私が理解できない部分は何ですか? 理論的には「よし、これはある」 署名とトランザクションをプログラミングの世界にやり取りします。 「それでは、個人 UTXO を具体的に構成する情報は何ですか?」 この質問に答える最善の方法は、完全にコメントされていないコードの本体を詳しく調べることです。 頑張れ、バイトコインチーム。 思い出してください: リンク可能性とは、「同じ人が送信したか?」ということを意味します。リンク解除可能性は、「同じことをした」ことを意味します 人は受け取りますか?」したがって、システムはリンク可能または非リンク可能、またはリンク可能または非リンク可能です。 迷惑です、私は知っています。 したがって、ニック・ヴァン・セイバーハーゲンがここで「...受信した支払いは1回限りの支払いに関連付けられています」と言うと、 観客にとってリンクできない公開鍵」という言葉が何を意味するのか見てみましょう。 まず、アリスが同じトランザクションから 2 つの別々のトランザクションをボブに送信する状況を考えてみましょう。 同じアドレスに送信します。 Bitcoin の世界では、アリスはすでに間違いを犯しています 同じアドレスから送信したため、取引は制限付きでの私たちの希望に応えられませんでした。 リンク可能性。しかも彼女は同じ住所に送金したので、我々の望みは裏切られたことになる。 リンク解除不可のため。このビットコイントランザクションは、(完全に) リンク可能であり、リンク解除不可能でもありました。 一方、暗号ノートの世界では、アリスがボブに暗号ノートを送ったとします。 ボブの公開アドレスを使用します。彼女は、難読化する公開鍵のセットとして、既知の公開鍵をすべて選択します。 ワシントン DC メトロエリアのキー。 Alex は自分の独自の公開鍵を使用してワンタイム公開鍵を生成します 情報とボブの公開情報。彼女はお金を送金します、そして、観察者は誰でもそうします 収集できるのは「ワシントン DC 都市圏の誰かが 2.3 枚の暗号通貨を送信した」 1 回限りのパブリック アドレス XYZ123。」 ここではリンク可能性を確率的に制御できるため、これを「ほぼリンク不可能」と呼びます。 また、送金先の 1 回限りの公開鍵のみが表示されます。たとえ受信者を疑っても はボブでした。私たちは彼の秘密鍵を持っていないので、トランザクションが成功したかどうかをテストできません 暗号通貨を引き換えるためのワンタイム秘密鍵を生成することは言うまでもなく、ボブのものです。それでこれ 実際、完全に「リンク不可能」です。 したがって、これはすべての中で最も巧妙なトリックです。他のMtGoxを本当に信頼したい人がいるでしょうか?私たちはそうかもしれない Coinbase にある程度の BTC を保管するのは快適ですが、ビットコインの究極のセキュリティは 物理的な財布。それは不便です。 この場合、あなたの秘密鍵の半分を信頼性を損なうことなく渡すことができます。 自分自身のお金の使い方の能力。 これを行うとき、あなたがしていることは、リンク解除を解除する方法を誰かに伝えることだけです。もう一つは 二重支出に対する証拠など、通貨のように機能する CN の特性は維持されます。 何でも。

  3. ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まず、明示的な言及はせずに、アルゴリズムの一般的な説明を行います。 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\sigma\) を出力します。 集合 \(S = \)S'\( \cup \{P_s\}\)。 8

  4. ボブは、対応するワンタイム秘密キーを復元できます: x = Hs(aR) + b、つまり P = xG。 x でトランザクションに署名することで、いつでもこの出力を使用できます。 トランザクション 送信公開鍵 送信出力 金額 宛先キー P ' = Hs(aR)G + bG ワンタイム公開鍵 x = Hs(aR) + b ワンタイム秘密鍵 受信者の 秘密鍵 (a、b) R P' ?= P 図 5. 受信トランザクションのチェック。 その結果、ボブは、ワンタイム公開鍵に関連付けられた支払いを受け取ります。 観客にとってはリンク不可能です。追加の注意事項: • ボブが自分のトランザクションを「認識」したとき (ステップ 5 を参照)、実際にはトランザクションの半分しか使用しません。 個人情報: (a、B)。このペアは追跡キーとも呼ばれ、渡すことができます。 第三者(キャロル)に。ボブは彼女に新しいトランザクションの処理を委任できます。ボブ キャロルはワンタイム秘密鍵 p を回復できないため、明示的に信頼する必要はありません。 ボブの完全な秘密鍵 (a、b) はありません。このアプローチは、Bob に帯域幅がない場合に役立ちます。 または計算能力(スマートフォン、ハードウェアウォレットなど)。 • アリスがボブのアドレスにトランザクションを送信したことを証明したい場合は、次のいずれかを開示することができます。 または、あらゆる種類のゼロ知識プロトコルを使用して、彼女が r を知っていることを証明します(たとえば、署名することによって) rとのトランザクション)。 • ボブが、すべての受信トランザクションが保存される監査互換アドレスを取得したい場合。 リンク可能であれば、追跡キーを公開するか、切り捨てられたアドレスを使用することができます。その住所 1 つの公開 EC キー B のみを表し、プロトコルで必要な残りの部分は次のとおりです。 そこから次のように導出されます: a = Hs(B) および A = Hs(B)G。どちらの場合でも、すべての人は ボブの受信トランザクションをすべて「認識」することはできますが、もちろん、誰もそのトランザクションを費やすことはできません。 秘密鍵のない資金がその中に封入されているb. 4.4 ワンタイムリングサイン ワンタイムリング署名に基づくプロトコルにより、ユーザーは無条件のリンク解除を実現できます。 残念ながら、通常のタイプの暗号署名では、トランザクションを追跡することができます。 それぞれの送信者と受信者。この欠陥に対する私たちの解決策は、別の署名を使用することにあります。 現在電子マネーシステムで使用されているものよりも優れたタイプです。 まずジェネレーターを提供します明示的な言及のないアルゴリズムの説明 電子現金。 ワンタイム リング署名には 4 つのアルゴリズム (GEN、SIG、VER、LNK) が含まれています。 GEN: 公開パラメータを受け取り、ec-pair (P, x) と公開鍵 I を出力します。 SIG: メッセージ m、公開鍵の集合 \(S'\) {Pi}i̸=s、ペア (Ps, xs) を受け取り、署名 \(\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、1 日に 1000 人の顧客が来るのですか?そして、正確に 3 つのオブジェクトを購入したことを証明したいとします。 2週間前?支払い ID をお持ちでない場合は、頑張れ、相棒。 簡単に言うと、ボブが支払い住所を公開すると、最終的には 支払い ID も同様です (たとえば、Poloniex XMR デポジットを参照)。これは説明されているものとは異なります ここのテキストでは、Alice が支払い ID を生成します。 ボブが支払い ID を生成する何らかの方法も必要です。 (a、B) 追跡キー (a、B) は公開できることを思い出してください。 「a」の値の秘密が失われると、 自分の支出能力を侵害したり、他人があなたから盗むことを許可したりしないでください(そうすればよいと思います...) 証明される必要があります)、これにより、ユーザーは受信したすべてのトランザクションを確認できるようになります。 この段落で説明されているように、切り捨てられたアドレスは、単にキーの「プライベート」部分を取得します。 そしてそれを「パブリック」部分から生成します。 「a」の値を明らかにすると、リンク不可能性が解消されます ただし、残りのトランザクションは保存されます。 リンク不可能とは受信者を指し、リンク可能なものはリンク可能であるため、著者は「リンク不可能ではない」ことを意味します。 送信者を指します。 また、作成者が、リンク可能性には 2 つの異なる側面があることに気づいていなかったことも明らかです。 結局のところ、トランザクションはグラフ上の有向オブジェクトであるため、次の 2 つの質問があります。 「これら 2 つの取引は同じ人物に行われますか?」そして、「これら 2 つのトランザクションは来ますか?」 同じ人からですか?」 これは、CryptoNote の非リンク性プロパティが適用される「後戻り禁止」ポリシーです。 条件付き。つまり、ボブは受信トランザクションをリンク解除不可にしないように選択できます。 このポリシーを使用して。 これは彼らがランダムオラクルモデルに基づいて証明した主張です。それについてはこれから説明します。ランダム オラクルには長所と短所があります。

VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\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 | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci =    ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\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 | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci =    ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 17 おそらくこれは愚かなことですが、S と P_ を結合するときは注意が必要です。単に追加する場合は、 最後の公開鍵を最後まで保持すると、通過するトランザクションを誰かがチェックするため、リンク不可能になります。 各トランザクションとブームにリストされている最後の公開キーを確認するだけです。それが公開鍵です 送信者に関連付けられています。したがって、結合後、擬似乱数生成器は次のようにする必要があります。 選択した公開鍵を並べ替えるのに使用されます。 「...所有者が同じ鍵ペアを使用して 2 番目の署名を作成するまで。」著者(たち?)にお願いします これについて詳しく説明します。 これは、「難読化する公開鍵のセットを選択するたびに、 つまり、同じキーが 2 つもないまったく新しいセットを選択することになります。」 リンク解除の際に課されるかなり強力な条件。おそらく、「次から新しいランダムなセットを選択します」 すべての可能なキー」を前提として、自明ではない交差は避けられないものの、 起こりますが、頻繁には起こりません。 いずれにせよ、この発言をさらに深く掘り下げる必要があります。 これはリング署名を生成しています。 ゼロ知識証明は素晴らしいです。あなたが秘密を知っていることを証明してください。 秘密を明かさずに。たとえば、ドーナツ型の洞窟の入り口にいるとします。 そして洞窟の奥(入り口からは見えないところ)には、あなたが向かう一方通行のドア あなたが鍵を持っていると主張します。一方向に行けば必ず通してもらえますが、一方の方向に行けば、 他の方向にはキーが必要です。でもあなたは私に鍵さえ見せたくありません、ましてや それがドアを開けることを見せてください。でもあなたは私に、その扉を開ける方法を知っていることを証明したいのですね。 ドア。 インタラクティブな設定では、コインを投げます。 表が左、裏が右、そしてあなたは下に進みます コインがどの方向に進んでも、ドーナツの形をした洞窟に行くことができます。視界の向こうの奥にはあなたが ドアを開けて反対側に戻ります。コイン投げの実験を繰り返す あなたが鍵を持っていることに満足するまで。 しかし、それは明らかに INTERACTIVE のゼロ知識の証明です。あなたと私がコミュニケーションする必要がない非対話型バージョンもあります。こうすることで、盗聴者が妨害することはできなくなります。 http://en.wikipedia.org/wiki/Zero-knowledge_proof これは前の定義とは逆になります。

VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\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 | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci =    ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 VER: メッセージ m、集合 S、署名 \(\sigma\) を受け取り、「true」または「false」を出力します。 LNK: 集合 I = {Ii}、署名 \(\sigma\) を受け取り、「linked」または「indep」を出力します。 プロトコルの背後にある考え方は非常に単純です。ユーザーは署名を作成します。 一意の公開キーではなく、一連の公開キーによってチェックされます。署名者の身元は、 所有者が作成するまで、公開鍵がセットに含まれている他のユーザーと区別できません。 同じ鍵ペアを使用した 2 番目の署名。 秘密鍵 \(\times\)0 \(\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 | を選びます。 i = 0 。 。 。 n} と {wi | i = 0 。 。 。 n, i ̸= s} (1 . . . l) から次の式を適用します。 次の変換: 李= ( キグ、 i = s の場合 qiG + wiPi、 私が ̸= s の場合 リ= ( qiHp(Pi)、 i = s の場合 qiHp(Pi) + wiI、 私が ̸= s の場合 次のステップは、非インタラクティブなチャレンジを取得することです。 c = Hs(m, L1, ..., Ln, R1, ..., Rn) 最後に、署名者は応答を計算します。 ci =    ウィ、 私が ̸= s の場合 c − nP i=0 シ モジュール l、 i = s の場合 り= ( 気、 私が ̸= s の場合 qs -csx モジュール l、 i = s の場合 結果の署名は \(\sigma = (I, c_1, \ldots, c_n, r_1, \ldots, r_n)\) です。 9 18 この領域全体は暗号通貨にとらわれず、単にリング署名アルゴリズムを説明するだけです。 通貨への言及。一部の表記は論文の残りの部分と一致していると思いますが、 でも。たとえば、x は GEN で選択された「ランダムな」秘密鍵であり、公開鍵 P が得られます。 この x の値は、パート 6 の 8 ページでボブが計算した値です。つまり、これは次のようになります。 前の説明からの混乱の一部が解消され始めています。 これはちょっとクールですね。お金は「アリスの公開アドレスからボブの公開アドレスに送金されていない」 ワンタイムアドレスからワンタイムアドレスに転送されます。 つまり、ある意味、これが物事の仕組みです。もしアレックスが誰かのせいで暗号通貨を持っているとしたら それらを彼女に送信したということは、彼女がボブにそれらを送信するために必要な秘密鍵を持っていることを意味します。彼女は使っています ボブの公開情報を使用して新しいワンタイムアドレスを生成するディフィー・ヘルマン交換 そして暗号通貨はそのアドレスに転送されます。 さて、(おそらく安全な) DH 交換が新しいワンタイム アドレスの生成に使用されたため、 アレックスが自分の CN を送信した宛先に、ボブは、このメッセージを繰り返すために必要な秘密鍵を持っている唯一の人物です。 上。さて、ボブはアレックスです。 http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation 合計は i ではなく j にインデックス付けされる必要があります。各 c_i はランダムなジャンクです (w_i はランダムなので) c_iのお尻を除いてこの署名に含まれる実際のキーで割り当てられます。 cの値は 前の情報の hash。 ただし、これにはインデックス「i」を再利用するよりも悪いタイプミスが含まれている可能性があると思います。 明示的ではなく暗黙的に定義されます。 実際、この方程式を信仰に基づいて当てはめると、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 = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 ボブはワンタイム キーペア (pi, Pi) を回復し、それをウォレットに保存します。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 Bob はワンタイム キーペア (pi, Pi) を回復し、st彼の財布の中にそれが入っています。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 19 この時点で、私はひどく混乱しています。 Alex は、署名 (I,c_1, ..., c_n, r_1, ..., r_n) と公開リスト付きのメッセージ M を受信します。 S キーを押すと、VER が実行されます。これにより、L_i’ と R_i’ が計算されます これは、前のページの c_s = c - sum_i が s c_i であることを検証します。 最初はとても(笑)混乱しました。 L_i’ と R_i’ は誰でも計算できます。実際、各 r_i と c_i が署名で公開されました シグマと I の値。セット S = すべての公開鍵の P_i も公開されています。シグマとそのセットを見た人は誰でも キー S = P_i は L_i’ と R_i’ に同じ値を取得するため、署名をチェックします。 しかし、このセクションは単に署名アルゴリズムについて説明しているだけであり、「チェック」ではないことを思い出しました。 署名されている場合は、私に送られてきたかどうかを確認し、送られてきた場合は、お金を使いましょう。」これは単純に、 ゲームの特徴的な部分。 最終的に付録 A に到達したら、ぜひ読んでみたいと思っています。 Cryptonote と Bitcoin のオペレーションごとの本格的な比較を見てみたいと思います。 また、電力/持続可能性。 ここで「入力」を構成するアルゴリズムは何ですか? トランザクション入力は、金額と、合計が金額よりも大きい UTXO のセットであると思います。 金額。 これは不明です。 「潜伏対象?」これについて数分間考えましたが、まだ考えていません それが何を意味するのか、最も曖昧な考え。 二重支出攻撃は、ノードが認識した使用済みキーを操作することによってのみ実行できます。 画像は \(I\) に設定されています。 「あいまいさの度合い」 = n ですが、トランザクションに含まれる公開鍵の総数は n+1。つまり、曖昧度は「他に何人欲しいですか?」 群衆は?」 おそらくデフォルトでは、答えは「できるだけ多く」となるでしょう。

VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 ボブはワンタイム キーペア (pi, Pi) を回復し、それをウォレットに保存します。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 VER: 検証者は逆変換を適用して署名をチェックします。 ( L' i = リグ + ciPi R' i = riHp(Pi) + ciI 最後に、検証者は次のことを確認します。 nP i=0 シ ?= Hs(m, L' 0、. 。 。 、L' n、R' 0、. 。 。 、R' n) mod l この等価性が正しい場合、検証者はアルゴリズム LNK を実行します。それ以外の場合、検証者は拒否します 署名。 LNK: 検証者は、I が過去の署名で使用されているかどうかを確認します (これらの値は、 セットI)。複数の使用は、2 つの署名が同じ秘密鍵の下で生成されたことを意味します。 プロトコルの意味: L 変換を適用することで、署名者は自分が知っていることを証明します。 少なくとも 1 つの Pi = xG となる x です。この証明を再現不可能にするために、キー画像を導入します。 I = xHp(P) となります。署名者は、同じ係数 (ri、ci) を使用して、ほぼ同じステートメントを証明します。 彼は、少なくとも 1 つの \(H_p(P_i) = I \cdot x^{-1}\) となるような x を知っています。 マッピング \(x \to I\) が注入の場合: 1. 誰も鍵イメージから公開鍵を回復して署名者を特定することはできません。 2. 署名者は、異なる I と同じ x を使用して 2 つの署名を行うことはできません。 完全なセキュリティ分析は付録 A に記載されています。 4.5 標準の CryptoNote トランザクション 両方の方法 (リンク不可能な公開鍵と追跡不可能なリング署名) を組み合わせることで、ボブは次のことを達成しました。 元の Bitcoin スキームと比較して、新しいレベルのプライバシー。それは彼にただ保管することだけを要求します 1 つの秘密キー (a、b) と公開 (A、B) を実行して、匿名トランザクションの送受信を開始します。 各トランザクションを検証する際、ボブはさらに、出力ごとに 2 つの楕円曲線乗算と 1 つの加算だけを実行して、トランザクションが自分のものであるかどうかを確認します。彼のすべてのために 出力 Bob はワンタイム キーペア (pi, Pi) を回復し、st彼の財布の中にそれが入っています。任意の入力が可能です 単一のトランザクションに出現した場合にのみ、同じ所有者であることが状況的に証明されます。で 実際、一度きりの指輪の署名のせいで、この関係を確立するのははるかに困難です。 リング署名を使用すると、ボブはすべての入力を他の人の入力の中に効果的に隠すことができます。あらゆる可能性 前の所有者 (アリス) でさえ、それ以上の情報を持っていません。 どの観察者でも。 トランザクションに署名するとき、ボブは自分のトランザクションと同じ金額の n 個の外国産出物を指定します。 他のユーザーの参加なしにそれらすべてを混合して出力します。ボブ自身(そして 他の人)これらの支払いのいずれかが使用されたかどうかはわかりません。出力は使用できます。 何千もの署名では曖昧さの要因として扱われ、決して隠蔽の対象としては扱われません。ダブル 支出チェックは、使用されているキー イメージ セットに対してチェックするときに、LNK フェーズで行われます。 ボブは曖昧さの度合いを自分で選択できます。n = 1 は、ボブが持つ確率を意味します。 出力が消費される確率は 50%、n = 99 では 1% になります。生成される署名のサイズが大きくなる O(n+1) として直線的に増加するため、匿名性の向上により、Bob には追加のトランザクション手数料がかかります。彼もできます n = 0 に設定し、指輪の署名を 1 つの要素だけで構成しますが、これは即座に 彼が浪費家であることを明らかにします。 10 20 これは興味深いですね。先ほど、受信者であるボブがすべての受信を受信できるようにする方法を提供しました。 秘密鍵の半分を決定論的に選択するか、 彼の秘密鍵の半分を公開鍵として公開します。これは後戻りできない一種の政策です。ここでわかります。 送信者アレックスが単一の送信トランザクションをリンク可能として選択する方法ですが、実際にはこれ アレックスがネットワーク全体への送信者であることを明らかにします。これは後戻りできない政策ではありません。 これはトランザクションごとです。 3番目のポリシーはありますか?受取人であるボブは、アレックスに固有の支払い ID を生成できますか? おそらくディフィー・ヘルマン交換を使用して変更されることはありませんか? 誰かがその支払いを含めた場合 ID はボブのアドレスへの取引のどこかにバンドルされており、アレックスから送られたものに違いありません。 このようにして、アレックスは特定のリンクを選択することでネットワーク全体に自分自身を明らかにする必要がなくなります。 取引が終了しても、彼女は送金先の相手に自分自身を特定することができます。 これがポロニエックスのやっていることではないでしょうか?

トランザクション 送信入力 出力0 。 。 。 出力 。 。 。 出力 キー画像 署名 リングサイン 宛先キー 出力1 宛先キー 出力 外国取引 送信者の出力 宛先キー ワンタイムキーペア ワンタイム 秘密鍵 I = xHp(P) P、\(\times\) 図 7. 標準トランザクションにおけるリング署名の生成。 5 平等主義的証明 このセクションでは、新しい proof-of-work アルゴリズムを提案し、基礎にします。 私たちの主な目標 CPU (多数派) マイナーと GPU/FPGA/ASIC (少数派) マイナーの間のギャップを埋めることです。それは 一部のユーザーが他のユーザーよりも一定の利点を持つことは適切ですが、その投資は 電力に応じて少なくとも直線的に増加するはずです。より一般的には、特殊用途のデバイスの製造 利益はできるだけ少なくする必要があります。 5.1 関連作品 元の Bitcoin proof-of-work プロトコルは、CPU を大量に使用する価格設定関数 SHA-256 を使用します。 主に基本的な論理演算子で構成され、演算速度のみに依存します。 したがって、マルチコア/コンベアの実装に最適です。 ただし、現代のコンピューターは 1 秒あたりの操作数だけによって制限されるわけではありません。 メモリサイズによっても異なります。一部のプロセッサは他のプロセッサよりも大幅に高速になる可能性があります[8]、 メモリ サイズはマシン間で異なる可能性が低くなります。 メモリバウンド価格関数は、Abadi らによって最初に導入され、次のように定義されました。 「メモリへのアクセスに費やされる時間によって計算時間が支配される関数」 [15]。 主なアイデアは、大きなデータ ブロック (「スクラッチパッド」) を割り当てるアルゴリズムを構築することです。 比較的ゆっくりとアクセスできるメモリ (RAM など) 内で、「 その中には予測不可能な場所の連続があります。ブロックは保存するのに十分な大きさでなければなりません データは、アクセスごとに再計算するよりも有利です。アルゴリズムはまた、 内部並列処理を防ぐため、N 個の同時スレッドには N 倍のメモリが必要になります すぐに。 Dwork ら [22] は、このアプローチを調査して形式化し、別のアプローチを提案しました。 価格設定関数のバリエーション:「Mbound」。 もう 1 つの作品は F. Coelho [20] のものです。 11 トランザクション 送信入力 出力0 。 。 。 出力 。 。 。 出力 キー画像 署名 リングサイン 宛先キー 出力1 宛先キー 出力 外国取引 送信者の出力 宛先キー ワンタイムキーペア ワンタイム 秘密鍵 I = xHp(P) P、\(\times\) 図 7. 標準トランザクションにおけるリング署名の生成。 5 平等主義的証明 このセクションでは、新しい proof-of-work アルゴリズムを提案し、基礎にします。 私たちの主な目標 CPU (多数派) マイナーと GPU/FPGA/ASIC (少数派) マイナーの間のギャップを埋めることです。それは 一部のユーザーが他のユーザーよりも一定の利点を持つことは適切ですが、その投資は 電力に応じて少なくとも直線的に増加するはずです。より一般的には、特殊用途のデバイスの製造 利益はできるだけ少なくする必要があります。 5.1 関連作品 元の Bitcoin proof-of-work プロトコルは、CPU を大量に使用する価格設定関数 SHA-256 を使用します。 主に基本的な論理演算子で構成され、演算速度のみに依存します。 したがって、マルチコア/コンベアの実装に最適です。 ただし、現代のコンピューターは 1 秒あたりの操作数だけによって制限されるわけではありません。 メモリサイズによっても異なります。一部のプロセッサは他のプロセッサよりも大幅に高速になる可能性があります[8]、 メモリ サイズはマシン間で異なる可能性が低くなります。 メモリバウンド価格関数は、Abadi らによって最初に導入され、次のように定義されました。 「メモリへのアクセスに費やされる時間によって計算時間が支配される関数」 [15]。 主なアイデアは、大きなデータ ブロック (「スクラッチパッド」) を割り当てるアルゴリズムを構築することです。 比較的ゆっくりとアクセスできるメモリ (RAM など) 内で、「 その中には予測不可能な場所の連続があります。ブロックは保存するのに十分な大きさでなければなりません データは、アクセスごとに再計算するよりも有利です。アルゴリズムはまた、 内部並列処理を防ぐため、N 個の同時スレッドには N 倍のメモリが必要になります すぐに。 Dwork ら [22] は、このアプローチを調査して形式化し、別のアプローチを提案しました。 価格設定関数のバリエーション:「Mbound」。 もう 1 つの作品は F. Coelho [20] のものです。 11 21 これらは、表向き、UTXO の金額と宛先キーです。 Alex がこの標準トランザクションを構築し、Bob に送信している場合、Alex は秘密鍵も持っています。 これらのそれぞれに。 この図は以前の質問のいくつかに答えているので、とても気に入っています。 Txn入力の構成 一連の Txn 出力と keyのイメージ。その後、すべての内容を含むリング署名で署名されます。 アレックスが契約に含まれるすべての外国取引に対して所有する秘密鍵。の Txn 出力は金額と宛先キーで構成されます。トランザクションの受信者は、 必要に応じて、この文書で前述したようにワンタイム秘密キーを生成して、 お金。 これが実際のコードとどの程度一致するかを知るのは楽しいことでしょう... いいえ、Nic van Saberhagen は、プルーフ・オブ・ワーク・アルゴリズムのいくつかの特性について大まかに説明しています。 実際にそのアルゴリズムを説明することはありません。 CryptoNight アルゴリズム自体には詳細な分析が必要です。 これを読んだとき、私はどもってしまいました。投資は電力に応じて少なくとも直線的に増加する必要があります。 投資は電力に応じて最大でも直線的に成長しますか? そして私は気づきました。採掘者または投資家としての私は、通常、「どれだけの電力を得ることができるか」を考えます。 投資のためですか?」 「一定量の電力を得るためにどれくらいの投資が必要か?」ではありません。 もちろん、投資を I、電力を P で表します。I(P) が電力の関数としての投資である場合、 P(I) は投資の関数としての電力であり、それらは互いに逆数になります (どこにいても 逆も存在する可能性があります)。そして、I(P) が線形より速い場合、P(I) は線形より遅いです。したがって、 投資家にとっての収益率は低下します。 つまり、著者がここで言いたいのは、「確かに、投資すればするほど、より多くの利益が得られるでしょう」 力。しかし、私たちはそれを収益率の低下につながるように努めるべきです。」 CPU への投資は、最終的には線形に近い形で頭打ちになってしまいます。問題は著者かどうかです。 は、ASIC にもこれを強制する POW アルゴリズムを設計しました。 仮想の「将来通貨」は常に最も遅い/最も限られたリソースで採掘されるべきでしょうか? Abadi らの論文 (Google と Microsoft のエンジニアが著者となっている) は次のとおりです。 基本的に、過去数年間 メモリ サイズが大幅に小さくなったという事実を利用します。 プロセッサ速度よりもマシン間の差異が少なく、電力に対する投資の比率が線形以上になります。 数年後には再評価が必要になるかも知れません!すべては軍拡競争だ… hash 関数の構築は困難です。これらの制約を満たす hash 関数を構築するのはさらに難しいようです。この論文には実際の説明はないようです hashアルゴリズム CryptoNight。これはメモリを必要とする SHA-3 の実装だと思います。 フォーラムの投稿に書いてありますが、わかりません...そしてそれが重要です。それは説明されなければなりません。

最も効果的な解決策として「北海道」を提案しました。 私たちの知る限り、大きな配列での擬似ランダム検索のアイデアに基づいた最後の作品は次のとおりです。 C. Percival [32] によって「scrypt」として知られるアルゴリズム。これまでの機能とは異なり、重点を置いています proof-of-work システムではなく、キー導出。この事実にもかかわらず、scrypt は私たちの目的を果たすことができます。 これは、 Bitcoin。 これまでに、scrypt はすでに Litecoin [14] およびその他の Bitcoin フォークに適用されています。ただし、その実装は実際にはメモリに依存しません。つまり、「メモリ アクセス時間 / 全体」の比率 各インスタンスは 128 KB しか使用しないため、「time」は十分な大きさではありません。これにより GPU マイナーが許可されます 効果は約 10 倍であり、相対的に 安価だが高効率のマイニングデバイス。 さらに、暗号化構造自体により、メモリ サイズとメモリ サイズの間の線形トレードオフが可能になります。 スクラッチパッド内のすべてのブロックが前のブロックからのみ派生するという事実による CPU 速度。 たとえば、2 つおきのブロックを保存し、他のブロックを遅延的な方法で再計算することができます。 必要になったとき。擬似ランダムインデックスは一様に分布していると仮定されます。 したがって、追加ブロックの再計算の期待値は 1 です。 \(2 \cdot N\)、N は数値です 反復の。全体の計算時間の増加は半分未満です。 スクラッチパッドの準備や hash などの、時間に依存しない (一定時間) 操作 すべての反復。メモリコストの 2/3 を節約 1 3・N+1 3 \(\cdot\) \(2 \cdot N\) = N 回の追加の再計算。 9/10 の結果は次のとおりです 1 10・N+。 。 。 +1 10・9・N=4.5N。 1 つだけ保存していることを示すのは簡単です すべてのブロックの 時間の増加は s−1 倍未満です 2.これは、CPU を搭載したマシンが 最新のチップよりも 200 倍高速で、スクラッチパッドを 320 バイトしか保存できません。 5.2 提案されたアルゴリズム proof-of-work 価格設定関数用の新しいメモリ制限アルゴリズムを提案します。依存しているのは 遅いメモリへのランダム アクセスであり、レイテンシの依存性が強調されます。毎に暗号化するのとは対照的に、 新しいブロック (長さ 64 バイト) は、以前のすべてのブロックに依存します。その結果、仮説としては 「メモリセーバー」を使用すると、計算速度が飛躍的に向上するはずです。 私たちのアルゴリズムでは、次の理由により、インスタンスごとに約 2 Mb が必要です。 1. 主流になるはずの最新プロセッサの L3 キャッシュ (コアごと) に適合します 数年以内に。 2. メガバイトの内部メモリは、最新の ASIC パイプラインではほとんど許容できないサイズです。 3. GPU は数百の同時インスタンスを実行できますが、他の方法で制限されます。 GDDR5 メモリは CPU L3 キャッシュよりも遅く、その帯域幅では注目に値しますが、 ランダムアクセス速度。 4. スクラッチパッドを大幅に拡張するには、反復回数を増やす必要があります。 ターンは全体的な時間の増加を意味します。トラストレス P2P ネットワークでの「重い」通話は、次のような問題を引き起こす可能性があります。 ノードはすべての新しいブロックの proof-of-work をチェックする義務があるため、深刻な脆弱性が存在します。 ノードが各 hash 評価にかなりの時間を費やすと、簡単に 任意の作業データ (nonce 値) を含む偽のオブジェクトの大量による DDoSed。 12 最も効果的な解決策として「北海道」を提案しました。 私たちの知る限り、大きな配列での擬似ランダム検索のアイデアに基づいた最後の作品は次のとおりです。 C. Percival [32] によって「scrypt」として知られるアルゴリズム。これまでの機能とは異なり、重点を置いています proof-of-work システムではなく、キー導出。この事実にもかかわらず、scrypt は私たちの目的を果たすことができます。 これは、 Bitcoin。 これまでに、scrypt はすでに Litecoin [14] およびその他の Bitcoin フォークに適用されています。ただし、その実装は実際にはメモリに依存しません。つまり、「メモリ アクセス時間 / 全体」の比率 各インスタンスは 128 KB しか使用しないため、「time」は十分な大きさではありません。これにより GPU マイナーが許可されます 効果は約 10 倍であり、相対的に 安価だが高効率のマイニングデバイス。 さらに、暗号化構造自体により、メモリ サイズとメモリ サイズの間の線形トレードオフが可能になります。 スクラッチパッド内のすべてのブロックが前のブロックからのみ派生するという事実による CPU 速度。 たとえば、2 つおきのブロックを保存し、他のブロックを遅延的な方法で再計算することができます。 必要になったとき。擬似ランダムインデックスは一様に分布していると仮定されます。 したがって、追加ブロックの再計算の期待値は 1 です。 2・N、ここでNは数字です 反復の。全体の計算時間の増加は半分未満です。 スクラッチパッドの準備や hash などの、時間に依存しない (一定時間) 操作 すべての反復。メモリコストの 2/3 を節約 1 3・N+1 3 \(\cdot\) \(2 \cdot N\) = N 回の追加の再計算。 9/10 の結果は次のとおりです 1 10・N+。 。 。 +1 10・9・N=4.5N。 1 つだけ保存していることを示すのは簡単です すべてのブロックの 時間の増加は s−1 倍未満です 2.これは、CPU を搭載したマシンが 最新のチップよりも 200 倍高速で、スクラッチパッドを 320 バイトしか保存できません。 5.2 提案されたアルゴリズム proof-of-work 価格設定関数用の新しいメモリ制限アルゴリズムを提案します。依存しているのは 遅いメモリへのランダム アクセスであり、レイテンシの依存性が強調されます。毎に暗号化するのとは対照的に、 新しいブロック (長さ 64 バイト) は、以前のすべてのブロックに依存します。その結果、仮説としては 「メモリセーバー」を使用すると、計算速度が飛躍的に向上するはずです。 私たちのアルゴリズムでは、次の理由により、インスタンスごとに約 2 Mb が必要です。 1. 主流になるはずの最新プロセッサの L3 キャッシュ (コアごと) に適合します 数年以内に。 2. メガバイトの内部メモリは、最新の ASIC パイプラインではほとんど許容できないサイズです。 3. GPU は数百の同時インスタンスを実行できますが、他の方法で制限されます。 GDDR5 メモリは CPU L3 キャッシュよりも遅く、その帯域幅では注目に値しますが、 ランダムアクセス速度。 4. スクラッチパッドを大幅に拡張するには、反復回数を増やす必要があります。 ターンは全体的な時間の増加を意味します。トラストレス P2P ネットワークでの「重い」通話は、次のような問題を引き起こす可能性があります。 ノードはすべての新しいブロックの proof-of-work をチェックする義務があるため、深刻な脆弱性が存在します。 ノードが各 hash 評価にかなりの時間を費やした場合、簡単に 任意の作業データ (nonce 値) を含む偽のオブジェクトの大量による DDoSed。 12 22 気にしないでください、それは暗号コインですか? アルゴリズムはどこにあるのでしょうか?私が見るのは広告だけです。 Cryptonote の PoW アルゴリズムが価値があるのであれば、これが真に輝くところです。そうではありません 実際には SHA-256 ですが、実際には暗号ではありません。これは新しく、メモリに依存し、再帰的ではありません。

6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化は回避されますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 23 原子単位。私はそれが好きです。これはサトシに相当するのでしょうか? もしそうなら、それは1,850億の暗号通貨が存在することを意味します。 これは最終的には数ページで調整する必要があることはわかっていますが、それともタイプミスがあるのでしょうか? 基本報酬が「残りのすべてのコイン」である場合、すべてのコインを取得するには 1 つのブロックだけで十分です。 インスタミン。 一方、これが何らかの形で比例すると仮定すると、 現在とコインの生産終了日との時間差はあるのでしょうか? そうすれば 意味が分かる。 また、私の世界では、このような「より大きい」記号が 2 つあると、「より大きい」という意味になります。著者がやったのか おそらく何か別の意味でしょうか? ブロックごとに難易度の調整が行われる場合、攻撃者は非常に大規模なファームを所有する可能性があります。 マシンは慎重に選択された時間間隔で断続的にマイニングを行います。難易度調整式が適切に抑制されていない場合、これにより難易度が混沌とした爆発 (またはゼロへのクラッシュ) を引き起こす可能性があります。 Bitcoin の方法が迅速な再計算には適していないことは間違いありませんが、慣性の考え方は これらのシステムでは、当然のこととみなされるのではなく、証明される必要があります。さらに、振動 ネットワークの問題は、表向きの変動を引き起こさない限り、必ずしも問題ではありません コインの供給量が非常に急速に変化するため、「過剰修正」が発生する可能性があります。 費やされる時間、特に数分間のような短い期間では、「合計」に比例します。 ネットワーク上に作成されたブロックの数。」比例定数自体が大きくなる 時間の経過とともに、CN が発生するとおそらく指数関数的に増加します。 「上に作成されるブロックの総数」を維持するために、単純に難易度を調整する方が良いかもしれません。 最後のブロックがメインチェーンに追加されてからのネットワーク」を何らかの定数値内で、または 限界変動とかそういうもの。計算上の適応アルゴリズムの場合、 実装が簡単であることが判断できれば、これで問題は解決すると思われます。 しかし、その方法を使用すると、大規模なマイニング農場を所有する誰かがその農場を閉鎖する可能性があります。 数時間放置してから、再度電源を入れます。最初の数ブロックでは、その農場は 銀行。 したがって、実際、この方法は興味深い点をもたらします。つまり、マイニングは(平均して) 特にネットワークに接続する人が増えると、ROI が得られずに負けてしまいます。採掘の難易度が高い場合 非常に厳重に追跡されたネットワークhashレート、人々が彼らと同じくらい採掘するのではないかと私はどういうわけか疑っています 現在はそうしています。 あるいは、その一方で、マイニング ファームを 24 時間 365 日稼働させ続ける代わりに、 6 時間オン、2 時間オフ、6 時間オン、2 時間オフなど。別のコインに切り替えるだけです 数時間待って、難易度が下がるのを待ってから、追加のいくつかを獲得するために再び飛び乗ります ネットワークが適応するにつれて収益性が低下します。そして、あなたは何を知っていますか?これは実はおそらく これは私が考えた中で最も優れた採掘シナリオの 1 つです... これは循環する可能性がありますが、ブロックの作成時間が平均約 1 分である場合、 「費やした時間」の代用としてブロック数を使用します。

6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 24 さて、blockchain があり、各ブロックには単純にタイムスタンプが追加されています。 注文した。これは明らかに、単に難易度を調整するために挿入されたものです。 前述したように、非常に信頼性が低いです。チェーン内に矛盾するタイムスタンプを含めることはできますか? チェーン内でブロック A がブロック B より前にあり、財務面ですべてが一貫している場合、 しかし、ブロック A はブロック B の後に作成されたように見えますか?おそらく誰かが所有していたので、 ネットワークの大部分?それでいいですか? おそらく財政が破綻していないからでしょう。 そうですね、私はこの恣意的な「メイン blockchain にとって正当なブロックは 80% だけです」というのが大嫌いです。 アプローチする。嘘つきがタイムスタンプを改ざんするのを防ぐことが目的だったのでしょうか?しかし今では、こう付け加えます 誰もが自分のタイムスタンプについて嘘をつき、中央値だけを選ぶ動機になります。 定義してください。 意味「このブロックには、それ以上の手数料を含むトランザクションのみを含める」 p% よりも、優先的に 2p% を超える手数料」とか、そのようなものですか? 偽物とはどういう意味ですか? 取引が過去の履歴と一致している場合 blockchain、トランザクションにはマイナーが満足できる手数料が含まれていますが、それだけでは十分ではありませんか?さて、 いいえ、必ずしもそうではありません。最大ブロック サイズが存在しない場合、悪意のあるユーザーを留めておくものは何もありません。 単に速度を低下させるために、大量のトランザクションのブロックを自分自身に一度にアップロードするだけではありません。 ネットワーク。 最大ブロックサイズに関する基本ルールにより、人々が大量のジャンクを置くことを防止します 速度を低下させるためだけに、blockchain 上のデータを一度にすべて削除します。しかし、そのようなルールは間違いなくそうしなければなりません 適応的であること - たとえば、クリスマス シーズン中はトラフィックが急増することが予想されます。 ブロック サイズが非常に大きくなり、その直後にブロック サイズがその後減少する またまた。したがって、a) 何らかの適応キャップ、または b) 99% の 妥当なクリスマスのピークは上限を突破しません。もちろん、2番目のものは不可能です 推定 - 通貨が普及するかどうかは誰にもわかりません。適応的にして心配しないほうがいいです それについて。しかし、制御理論の問題があります。それは、これをどのように適応させるかということです。 攻撃に対する脆弱性、または乱暴でクレイジーな振動? 適応型の方法では、悪意のあるユーザーが少額を蓄積するのを阻止できないことに注意してください。 blockchain 上にジャンク データが時間の経過とともに増加し、長期的な肥大化を引き起こします。これは別の問題です これは、暗号通貨コインが深刻な問題を抱えていることを意味します。

6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 コストと手数料による利益のバランスを考慮し、独自の設定を行います。 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 6 さらなる利点 6.1 スムーズな発光 CryptoNote デジタル コインの総量の上限は次のとおりです: MSupply = 264 −1 原子単位。これは、直感ではなく、実装の制限のみに基づいた自然な制限です。 「N コインは誰にとっても十分なはずです」など。 放出プロセスのスムーズさを確保するために、ブロックに次の式を使用します。 報酬: BaseReward = (MSsupply −A) ≫18、 ここで、A は以前に生成されたコインの量です。 6.2 調整可能なパラメータ 6.2.1 難易度 CryptoNote には、ブロックごとの難易度を変更するターゲティング アルゴリズムが含まれています。これ ネットワークのhashレートが急激に増加または縮小している場合、システムの反応時間を短縮します。 一定のブロックレートを維持します。オリジナルの Bitcoin メソッドは、実際の 最後の 2016 ブロック間の目標タイムスパンを設定し、それを現在のブロックの乗数として使用します。 難しさ。明らかに、これは (慣性が大きいため) 迅速な再計算には適していません。 発振の原因となります。 私たちのアルゴリズムの背後にある一般的な考え方は、ノードによって完了したすべての作業を合計し、 それを費やした時間で割ります。仕事の尺度は、対応する難易度の値です 各ブロックにあります。しかし、タイムスタンプが不正確で信頼できないため、正確なタイムスタンプを判断することはできません。 ブロック間の時間間隔。ユーザーは自分のタイムスタンプを将来および次回にシフトできます。 間隔はありえないほど小さいか、マイナスになる可能性さえあります。おそらく事件も少なくなるでしょう このようなものなので、タイムスタンプを並べ替えて外れ値 (つまり 20%) を切り捨てるだけです。の範囲 残りの値は、対応するブロックの 80% に費やされた時間です。 6.2.2 サイズ制限 ユーザーは blockchain を保存するために料金を支払い、そのサイズについて投票する権利を有するものとします。 すべての鉱夫 バランシング間のトレードオフを扱います。費用と手数料からの利益を自分で設定し、 ブロックを作成するための「ソフトリミット」。最大ブロック サイズに関するコア ルールも必要です。 blockchain が偽のトランザクションで溢れかえるのを防ぎますが、この値は ハードコーディングしないでください。 MN を最後の N 個のブロック サイズの中央値とする。次に、サイズの「ハードリミット」 受け入れられるブロックの数は \(2 \cdot M_N\) です。 blockchain の肥大化を回避しますが、それでも制限は許容されます。 必要に応じて、時間の経過とともにゆっくりと成長します。 トランザクション サイズを明示的に制限する必要はありません。これはブロックのサイズによって制限されます。 そして、誰かが何百もの入出力(または リング署名のあいまいさの度合いが高い)、十分な料金を支払うことでそれを行うことができます。 6.2.3 サイズ超過ペナルティ マイナーは、自分自身のゼロ手数料トランザクションを最大限までブロックに詰め込むことができます。 サイズ2・MB。大多数のマイナーのみが中央値を移動できるとしても、依然として 13 25 時間の 1 単位が 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) としても使用できます。もちろん、ある定数 a に対して f(M_n) = a の場合、このシーケンスは次のようになります。 実は M_n aM_n a^2M_n a^3M_n ... そしてもちろん、これを最大線形成長に制限できる唯一の方法は、a=1 を選択することです。 もちろん、これは実現不可能です。それはまったく成長を許しません。 一方、f(M_n) が非定数関数の場合、状況はさらに複雑になります。 複雑であり、洗練された解決策が可能になる可能性があります。これについてはしばらく考えてみます。 この料金は、次のセクションで超過サイズのペナルティを割り引くのに十分な大きさにする必要があります。 なんで一般ユーザーが男性だと思われてるの?え?

blockchain が肥大化し、ノードに追加の負荷が発生する可能性があります。落胆させるため 悪意のある参加者が大きなブロックを作成できないように、ペナルティ関数を導入します。 新しい報酬 = 基本報酬 \(\cdot\) ブロックサイズ ミネソタ州 −1 2 このルールは、BlkSize が最小空きブロック サイズより大きい場合にのみ適用されます。 最大(10kb、\(M_N \cdot 110\%\))に近いこと。マイナーは「通常のサイズ」のブロックを作成することが許可されており、 全体の手数料が違約金を上回った場合、利益を伴ってそれを超えます。しかし手数料は上がらない可能性が高い ペナルティ値とは二次的に異なるため、均衡が生じます。 6.3 トランザクションスクリプト CryptoNote には、非常に最小限のスクリプト サブシステムがあります。送信者は式 Φ = を指定します。 f (x1, x2, ..., xn)、n は宛先公開鍵の数 {Pi}n i=1。バイナリは 5 つだけ min、max、sum、mul、cmp の演算子がサポートされています。受取人がこの支払いを使用すると、 \(0 \leq k \leq n\) の署名を生成し、それらをトランザクション入力に渡します。検証プロセス 公開鍵 Pi の有効な署名をチェックするために xi = 1 で Φ を評価するだけであり、xi = 0 です。 検証者はΦ > 0 の場合に証明を受け入れます。 その単純さにもかかわらず、このアプローチは考えられるすべてのケースをカバーします。 • マルチ/しきい値署名。 Bitcoin スタイルの「M-out-of-N」マルチ署名の場合 (つまり、 受信者は少なくとも \(0 \leq M \leq N\) の有効な署名を提供する必要があります (Φ = x1+x2+)。 。 .+xN \(\geq M\) (明確にするために、一般的な代数表記を使用しています)。重み付けされたしきい値署名 (一部のキーは他のキーよりも重要になる可能性があります) は、Φ = \(w_1 \cdot x_1\) + として表すことができます。 w2・x2+. 。 。 + \(w_N \cdot x_N\) ≧ wM。マスターキーが Φ = に対応するシナリオ max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\)。あらゆる洗練されたケースが可能であることを示すのは簡単です。 これらの演算子で表現されます。つまり、基底を形成します。 • パスワード保護。秘密のパスワードを所有していることは、次のことを知っていることと同等です。 パスワードから決定論的に導出される秘密キー: k = KDF(s)。したがって、受信機は、 キー k で別の署名を提供することで、パスワードを知っていることを証明できます。 送信者は、対応する公開キーを自分の出力に追加するだけです。これに注意してください この方法は、Bitcoin [13] で使用される「トランザクション パズル」よりもはるかに安全です。 パスワードは入力で明示的に渡されます。 • 劣化したケース。 Φ = 1 は誰でもお金を使うことができることを意味します。 Φ = 0 は、 永久に消費できないものとして出力されます。 公開鍵と組み合わせた出力スクリプトが送信者にとって大きすぎる場合、送信者は 受信者がこのデータを入力に入れることを示す特別な出力タイプを使用できます。 一方、送信者はその hash だけを提供します。このアプローチは、Bitcoin の「hash に支払う」と似ています。 機能ですが、新しいスクリプト コマンドを追加する代わりに、データ構造でこのケースを処理します。 レベル。 7 結論 私たちは Bitcoin の主な欠陥を調査し、考えられる解決策をいくつか提案しました。これらの有利な機能と継続的な開発により、新しい電子マネー システム CryptoNote が誕生します。 Bitcoin の深刻なライバルであり、そのすべてのフォークを上回っています。 14 blockchain が肥大化し、ノードに追加の負荷が発生する可能性があります。落胆させるため 悪意のある参加者が大きなブロックを作成できないように、ペナルティ関数を導入します。 新しい報酬 = 基本報酬 \(\cdot\) ブロックサイズ ミネソタ州 −1 2 このルールは、BlkSize が最小空きブロック サイズより大きい場合にのみ適用されます。 最大(10kb、\(M_N \cdot 110\%\))に近いこと。マイナーは「通常のサイズ」のブロックを作成することが許可されており、 全体の手数料が違約金を上回った場合、利益を伴ってそれを超えます。しかし手数料は上がらない可能性が高い ペナルティ値とは二次的に異なるため、均衡が生じます。 6.3 トランザクションスクリプト CryptoNote には、非常に最小限のスクリプト サブシステムがあります。送信者は式 Φ = を指定します。 f (x1, x2, ..., xn)、n は宛先公開鍵の数 {Pi}n i=1。バイナリは 5 つだけ min、max、sum、mul、cmp の演算子がサポートされています。受取人がこの支払いを使用すると、 \(0 \leq k \leq n\) の署名を生成し、それらをトランザクション入力に渡します。検証プロセス 公開鍵 Pi の有効な署名をチェックするために xi = 1 で Φ を評価するだけであり、xi = 0 です。 検証者はΦ > 0 の場合に証明を受け入れます。 その単純さにもかかわらず、このアプローチは考えられるすべてのケースをカバーします。 • マルチ/しきい値署名。 Bitcoin スタイルの「M-out-of-N」マルチ署名の場合 (つまり、 受信者は少なくとも \(0 \leq M \leq N\) の有効な署名を提供する必要があります (Φ = x1+x2+)。 。 .+xN \(\geq M\) (明確にするために、一般的な代数表記を使用しています)。重み付けされたしきい値署名 (一部のキーは他のキーよりも重要になる可能性があります) は、Φ = \(w_1 \cdot x_1\) + として表すことができます。 w2・x2+. 。 。 + \(w_N \cdot x_N\) ≧ wM。そしてシナリオio ここで、マスターキーは Φ = に対応します。 max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\)。あらゆる洗練されたケースが可能であることを示すのは簡単です。 これらの演算子で表現されます。つまり、基底を形成します。 • パスワード保護。秘密のパスワードを所有していることは、次のことを知っていることと同等です。 パスワードから決定論的に導出される秘密キー: k = KDF(s)。したがって、受信機は、 キー k で別の署名を提供することで、パスワードを知っていることを証明できます。 送信者は、対応する公開キーを自分の出力に追加するだけです。これに注意してください この方法は、Bitcoin [13] で使用される「トランザクション パズル」よりもはるかに安全です。 パスワードは入力で明示的に渡されます。 • 劣化したケース。 Φ = 1 は誰でもお金を使うことができることを意味します。 Φ = 0 は、 永久に消費できないものとして出力されます。 公開鍵と組み合わせた出力スクリプトが送信者にとって大きすぎる場合、送信者は 受信者がこのデータを入力に入れることを示す特別な出力タイプを使用できます。 一方、送信者はその hash だけを提供します。このアプローチは、Bitcoin の「hash に支払う」と似ています。 機能ですが、新しいスクリプト コマンドを追加する代わりに、データ構造でこのケースを処理します。 レベル。 7 結論 私たちは Bitcoin の主な欠陥を調査し、考えられる解決策をいくつか提案しました。これらの有利な機能と継続的な開発により、新しい電子マネー システム CryptoNote が誕生します。 Bitcoin の深刻なライバルであり、そのすべてのフォークを上回っています。 14 26 時間の経過とともにブロックサイズを制限する方法を見つけ出すことができれば、これは不要になるかもしれません... これも正解とは言えません。 「NewReward」を上向きの放物線に設定するだけです。 ブロック サイズは独立変数です。したがって、新しい報酬は無限に膨れ上がります。一方、もし、 新しい報酬は Max(0,Base Reward(1-(BlkSize/Mn - 1)^2)) で、新しい報酬は は、ブロックサイズ = Mn にピークがあり、次のように切片がある下向きの放物線になります。 ブロックサイズ = 0 およびブロックサイズ = 2Mn。そしてそれが彼らが表現しようとしているもののようです。 ただし、これはそうではありません

交易无法追踪

在本节中,我们提出了一种完全匿名交易的方案,同时满足不可追溯性 和不可链接条件。我们解决方案的一个重要特点是它的自主性:发送者 不需要与其他用户或受信任的第三方合作进行交易; 因此,每个参与者都独立地产生掩护流量。 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 中最受欢迎的交易如下所示: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG。 该脚本长 164 字节,其唯一目的是检查接收者是否拥有 验证他的签名所需的密钥。 3 CryptoNote 技术 现在我们已经涵盖了 Bitcoin 技术的局限性,我们将重点关注 介绍 CryptoNote 的功能。 4 交易无法追踪 在本节中,我们提出了一种完全匿名交易的方案,同时满足不可追溯性 和不可链接条件。我们解决方案的一个重要特点是它的自主性:发送者 不需要与其他用户或受信任的第三方合作进行交易; 因此,每个参与者都独立地产生掩护流量。 4.1 文献综述 我们的方案依赖于称为群签名的加密原语。首先提出者 D. Chaum 和 E. van Heyst [19],它允许用户代表组签署他的消息。 签署消息后,用户提供(出于验证目的)而不是他自己的单一公共信息 1这就是所谓的“软限制”——创建新块的参考客户端限制。硬最大值 可能的块大小为 1 MB 4 7 回想起来,在代码中将块大小设置为固定限制似乎是一个很大的错误。 Visa 和 Mastercard 可以处理数千甚至数十万笔交易 每秒。然而,交易是一个随机过程,有时是大规模爆发, 有时会安静几个小时。想想比特币交易量。 设计一个在必要时动态增加块大小的系统似乎是一个伟大的想法 以适应增加的交易流量,并在必要时动态减少交易流量 提高带宽效率。 现在,将该概念应用于所有系统参数。只要我们小心翼翼地保持 系统从鱼尾失控,这效果会很好。 https://github.com/bitcoin/bips/blob/master/bip-0050.mediawiki 如前所述,如果变量能够自我调整,则必须施加一些控制,以便 防止系统疯狂失控。我们会解决这个问题的。 如果这是一篇维基百科文章,它会被标记为“STUB”。尽管我们确实处于 在介绍“Bitcoin的问题”的部分中,我想在这里进行一些阐述。为什么是 164 字节对于一个简单的“检查密钥”任务来说是不可接受的?他们能得到多小的 合理的脚本语言?不过,我不是计算机科学家。 http://download.springer.com/static/pdf/412/chp%253A10.1007%252F3-540-46416-6_22.pdf?auth66=140 如上所述,群组签名需要群组管理员。 群主有能力 撤销任何签名者的匿名性。因此,团体中存在着内在的集中化 签名方案。

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) 是我们发送新交易的方式

  1. 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
  2. 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 像货币一样的属性被保留,例如防止双重支出和 诸如此类的。

  3. 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

  4. 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。这似乎就是他们想要描述的。 然而,这并不

分析

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

5 世界中の10億人が1ドル未満で暮らしているとしても、それはそれほど重要ではない 一日中、どんな種類のマイニングネットワークにも参加する希望はありません...しかし経済的 1 CPU 1 票の P2P 通貨システムによって駆動される世界は、おそらく、さらに大きくなるでしょう。 部分準備銀行業務によって推進されるシステムよりも公平です。 しかし、Cryptonote のプロトコルでは依然として 51% の正直なユーザーが必要です...たとえば、Cryptonote を参照してください。 フォーラムでは、開発者の 1 人である Pliskov が、従来のblockchain 51% のデータを置き換える攻撃はまだ機能する可能性があると述べています。 https://forum.cryptonote.org/viewtopic.php?f=2&t=198 51% の正直なユーザーは実際には必要ないことに注意してください。本当に必要なのは「不正は一切ない」 ネットワークのhash力の51%以上を握る派閥です。」 このいわゆるビットコインの問題を「適応的硬直性」と呼びましょう。 Cryptonote の適応型ソリューション 剛性とは、プロトコル パラメーター値の適応的な柔軟性です。より大きなブロックサイズが必要な場合は、 問題ありません。ネットワークは常に緩やかに調整されています。 つまり、 Bitcoin が時間の経過とともに難易度を調整する方法は、すべてのプロトコルで再現できます。 パラメータを変更することで、プロトコルを更新するためにネットワークの合意を得る必要がなくなります。 表面的には、これは良いアイデアのように見えますが、注意深く事前に検討しないと、自動的に調整されてしまいます。 システムは非常に予測不能で混沌としたものになる可能性があります。これについては後ほどさらに詳しく見ていきますので、 チャンスが生まれます。 「優れた」システムは、適応的に剛性が高いシステムと適応的に剛性が高いシステムの間のどこかにあります。 柔軟性があり、おそらく剛性自体も適応可能です。 本当に「1 CPU 1 票」であれば、共同でプールを開発して 51% を達成することになります。 もっと難しいでしょう。私たちは、世界中のすべての CPU が携帯電話からマイニングされることを期待しています。 充電中に Tesla のオンボード CPU に接続します。 http://en.wikipedia.org/wiki/Pareto_principle 私は、パレート均衡はある程度避けられないと主張します。システムの 20% が CPU の 80% を所有するか、システムの 20% が ASIC の 80% を所有します。私がこのような仮説を立てるのは、社会における富の根本的な分布がすでにパレート分布を示しているからです。 そして、新しいマイナーが参加すると、その基礎となるディストリビューションから抽出されます。 ただし、1 CPU 1 票のプロトコルではハードウェアの ROI が見られると私は主張します。 ブロック ノードあたりの報酬は、ネットワーク内のノード数により密接に比例します。 ノード間のパフォーマンスの分散はより厳密になります。一方、Bitcoin 一方、ブロック報酬 (ノードごと) はその計算能力に比例すると考えられます。 ノード。つまり、まだ「大手」だけがマイニング ゲームに参加しているのです。一方、 たとえパレートの法則がまだ機能しているとしても、1 CPU 1 票の世界では、全員 ネットワークセキュリティに参加し、少しのマイニング収入を獲得します。 ASIC の世界では、すべての XBox や携帯電話をマイニング用に装備するのは賢明ではありません。 onecpu-one-vote の世界では、マイニング報酬の観点からは非常に賢明です。嬉しい結果として、 投票数が増えると、投票の 51% を獲得するのが難しくなり、素晴らしい結果が得られます。 ネットワーク セキュリティにメリットがあります。前述したハードウェア。世界全体のhash率が、たとえ 一瞬にして、彼は自分のマイニングパワーを利用してチェーンをフォークし、二重に使うことができるようになります。これから見るように この記事の後半で説明しますが、前述のイベントが発生する可能性は低くありません。 2.3 不規則発光 Bitcoin には所定の排出率があり、解決された各ブロックは固定量のコインを生成します。 この報酬は約 4 年ごとに半分になります。当初の目的は、 指数関数的な減衰を伴う限られた滑らかな放射ですが、実際には区分的に線形な放射があります。 ブレークポイントが Bitcoin インフラストラクチャに問題を引き起こす可能性のある関数。 ブレークポイントが発生すると、マイナーは以前の値の半分だけを受け取り始めます。 報酬。 12.5 BTC と 6.25 BTC (2020 年の予測) の絶対差は、 耐えられるようです。しかし、11月に起こった50から25BTCの下落を調べると、 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 には所定の排出率があり、解決された各ブロックは固定量のコインを生成します。 この報酬は約 4 年ごとに半分になります。当初の目的は、 指数関数的な減衰を伴う限られた滑らかな放射ですが、実際には区分的に線形な放射があります。 ブレークポイントが Bitcoin インフラストラクチャに問題を引き起こす可能性のある関数。 ブレークポイントが発生すると、マイナーは以前の値の半分だけを受け取り始めます。 報酬。 12.5 BTC と 6.25 BTC (2020 年の予測) の絶対差は、 耐えられるようです。しかし、11月に起こった50から25BTCの下落を調べると、 2012 年 2 月 28 日、鉱山コミュニティの相当数のメンバーにとって不適切であると感じました。図 1 は、11 月末にネットワークの hash レートが劇的に減少したことを示しています。 半減が起こった。この出来事は悪意のある人物にとって完璧な瞬間だったかもしれない proof-of-work 関数セクションで説明されているように、二重支出攻撃 [36] を実行します。 図 1. Bitcoin hash レート チャート (出典: http://bitcoin.sipa.be) 2.4 ハードコードされた定数 Bitcoin には多くのハードコーディングされた制限があり、その一部は元の設計の自然な要素です (例: ブロック頻度、通貨供給量の最大値、確認の数)、その他 人為的な制約のようです。それは限界というよりも、すぐに変化することができないことです。 3 6 これを何というか、ゾンビ攻撃と呼びましょう。 継続的な放出がどのように行われるかを議論しましょう ゾンビ攻撃シナリオにおける 1 CPU 1 票に関連します。 1 CPU 1 票の世界では、すべての携帯電話と自動車は、アイドル状態のときは常にマイニングを行っていることになります。大量の安価なハードウェアを集めてマイニング ファームを作成するのは非常に簡単です。 ほぼすべてのものにCPUが搭載されています。一方、その時点でのCPUの数は、 51% 攻撃を開始するのに必要なコストは非常に驚くべきものであると私は思います。 さらに、 まさに「安価なハードウェアを集めるのが簡単だから」、 多くの人が CPU を使って何でもため込み始めます。 1 CPU 1 票の世界における軍備競争 ASIC の世界よりも必然的に平等主義的です。 したがって、ネットワークの不連続性が発生します 1 CPU 1 票の世界では、排出率によるセキュリティはそれほど問題ではないはずです。 ただし、次の 2 つの事実が残ります: 1) 放出速度の不連続性は、音の途切れ効果を引き起こす可能性があります。 経済とネットワーク セキュリティの両方に悪影響を及ぼします。2) たとえ 51% の攻撃があったとしても 安価なハードウェアを収集する誰かによって実行される場合でも、1 CPU 1 で発生する可能性があります。-投票の世界、 もっと難しいはずのようです。 おそらく、これに対する安全策は、「すべての」不正行為者がこれを試みることです。 同時に、Bitcoin の以前のセキュリティ概念に戻ります。「不正行為は要求しません」 ネットワークの51%以上を支配する派閥。」 著者はここで、ビットコインの問題の一つはコイン発行の不連続性であると主張している。 速度が低下すると、ネットワークへの参加が突然低下し、ネットワークのセキュリティが低下する可能性があります。したがって、 継続的で微分可能でスムーズなコイン排出率が望ましいです。 著者は必ずしも間違っていません。ネットワークへの参加が突然減少すると、 このような問題が発生する可能性があり、その原因を 1 つ取り除くことができるのであれば、そうすべきです。そうは言っても、それは 長期にわたって「比較的一定した」コイン発行が突然の変化によって中断される可能性 経済学の観点からは理想的な方法です。私は経済学者ではありません。それで、おそらく私たちは、 ネットワーク セキュリティを経済的なものと引き換えにするかどうかを決定する必要があります。ここには何があるでしょうか? http://arxiv.org/abs/1402.2009必要に応じてそれらを使用すると、主な欠点が生じます。残念ながら、いつ起こるかを予測するのは困難です。 定数の変更が必要になる場合があり、定数を置き換えるとひどい結果につながる可能性があります。 悲惨な結果をもたらすハードコードされた制限変更の好例は、次のブロックです。 サイズ制限は 250kb1 に設定されています。この制限は、約 10000 件の標準トランザクションを保持するには十分です。で 2013 年の初めには、この制限にほぼ達していたので、上限を増やすことで合意に達しました。 限界。この変更はウォレットバージョン0.8で実装され、24ブロックのチェーン分割で終了しました。 そして二重支出攻撃[9]が成功しました。このバグは Bitcoin プロトコルにはありませんでしたが、 むしろデータベース エンジンに問題があった場合、単純なストレス テストで簡単に検出できたはずです。 人為的に導入されたブロック サイズ制限はありません。 定数は、一元化ポイントの形式としても機能します。 ピアツーピアの性質にもかかわらず、 Bitcoin、圧倒的多数のノードは、によって開発された公式リファレンス クライアント [10] を使用しています。 少人数のグループ。このグループは、プロトコルへの変更を実装する決定を下します。 そしてほとんどの人は、その「正しさ」に関係なく、こうした変化を受け入れます。いくつかの決定が引き起こした 白熱した議論が行われ、ボイコット [11] さえ呼び掛けられています。これは、コミュニティと 開発者はいくつかの重要な点で意見が異なる場合があります。したがって、プロトコルを持つことは論理的であると思われます これらの問題を回避する可能な方法として、ユーザーが構成可能で自己調整可能な変数を使用します。 2.5 かさばるスクリプト Bitcoin のスクリプト システムは、重くて複雑な機能です。それは潜在的に人が作成することを可能にします 洗練されたトランザクション [12] ですが、セキュリティ上の懸念から一部の機能が無効になっています。 [13] は一度も使用されていないものもあります。スクリプト (送信側と受信側の両方の部分を含む) Bitcoin で最も人気のあるトランザクションは次のようになります。 OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG。 スクリプトの長さは 164 バイトですが、その唯一の目的は、受信者が 彼の署名を検証するために必要な秘密鍵。

分析

Bitcoin network total computation speed chart showing hashrate and difficulty from 2012 to 2013

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 中最受欢迎的交易如下所示: OP DUP OP HASH160 OP EQUALVERIFY OP CHECKSIG。 该脚本长 164 字节,其唯一目的是检查接收者是否拥有 验证他的签名所需的密钥。