CryptoNote v2.0
ここに掲載されている論文は、Nicolas van Saberhagen(2013年)によるCryptoNote v2.0ホワイトペーパーであり、Moneroの基盤となる暗号的基礎を説明しています。これはMonero固有のホワイトペーパーではありません。Moneroは2014年にCryptoNoteのリファレンス実装(Bytecoin)のフォークとしてローンチされ、それ以来オリジナルプロトコルから大幅に発展しています。
導入
「Bitcoin」 [1] は、p2p 電子キャッシュの概念の実装に成功しました。両方 専門家も一般の人々も、これらの便利な組み合わせを高く評価するようになりました。 パブリック トランザクションと信頼モデルとしての proof-of-work。現在、電子マネーのユーザーベースは 着実なペースで成長しています。顧客は低料金と匿名性の提供に魅力を感じています 電子現金によるものであり、加盟店は予測された分散型排出量を重視しています。 Bitcoin は 電子マネーは紙幣と同じくらい簡単で、紙幣と同じくらい便利であることが効果的に証明されました。 クレジットカード。 残念ながら、Bitcoin にはいくつかの欠陥があります。たとえば、システムの分散型 性質は柔軟性が高く、ほぼすべてのネットワーク ユーザーがクライアントを更新するまで新しい機能を実装できません。修正できないいくつかの重大な欠陥は、Bitcoin の攻撃を迅速に阻止します。 広範な伝播。このような柔軟性のないモデルでは、新しいプロジェクトを展開する方が効率的です。 元のプロジェクトを永続的に修正するのではなく、 この文書では、Bitcoin の主な欠陥に対する解決策を研究し、提案します。私たちは信じています 私たちが提案するソリューションを考慮したシステムが健全な競争につながることを保証します さまざまな電子マネー システム間で。独自の電子マネー「CryptoNote」も提案しています。 電子マネーの次の進歩を強調する名前です。
Giới thiệu
“Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử.
Bitcoin 欠点と考えられる解決策
2 Bitcoin の欠点と考えられる解決策 2.1 取引のトレーサビリティ プライバシーと匿名性は、電子マネーの最も重要な側面です。ピアツーピア支払い 第三者の目から隠蔽されるよう努めますが、これは従来の方法と比較した場合の明らかな違いです。 銀行業。特に、T.okamoto と K.Ohta は、理想的な電子マネーの 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 Hạn chế và giải pháp khả thi
2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 CryptoNote v 2.0 Nicolas van Saberhagen Ngày 17 tháng 10 năm 2013 1 Giới thiệu “Bitcoin” [1] đã triển khai thành công khái niệm tiền điện tử p2p. Cả hai các chuyên gia và công chúng nói chung đã đánh giá cao sự kết hợp thuận tiện của giao dịch công khai và proof-of-work làm mô hình tin cậy. Ngày nay, cơ sở người dùng tiền điện tử đang phát triển với tốc độ ổn định; khách hàng bị thu hút bởi mức phí thấp và tính ẩn danh được cung cấp bằng tiền điện tử và người bán đánh giá mức phát thải được dự đoán và phi tập trung của nó. Bitcoin có đã chứng minh một cách hiệu quả rằng tiền điện tử có thể đơn giản như tiền giấy và thuận tiện như thẻ tín dụng. Thật không may, Bitcoin mắc phải một số thiếu sót. Ví dụ: hệ thống được phân phối Bản chất là không linh hoạt, ngăn cản việc triển khai các tính năng mới cho đến khi gần như tất cả người dùng mạng cập nhật ứng dụng khách của họ. Một số lỗi nghiêm trọng không thể khắc phục nhanh chóng sẽ ngăn cản Bitcoin tuyên truyền rộng rãi. Trong những mô hình không linh hoạt như vậy, việc triển khai một dự án mới sẽ hiệu quả hơn thay vì liên tục sửa chữa dự án ban đầu. Trong bài báo này, chúng tôi nghiên cứu và đề xuất giải pháp khắc phục những thiếu sót chính của Bitcoin. Chúng tôi tin rằng một hệ thống có tính đến các giải pháp mà chúng tôi đề xuất sẽ dẫn đến sự cạnh tranh lành mạnh giữa các hệ thống tiền điện tử khác nhau. Chúng tôi cũng đề xuất tiền điện tử của riêng mình, “CryptoNote”, một cái tên nhấn mạnh bước đột phá tiếp theo của tiền điện tử. 2 Bitcoin nhược điểm và một số giải pháp khả thi 2.1 Truy xuất nguồn gốc của các giao dịch Quyền riêng tư và ẩn danh là những khía cạnh quan trọng nhất của tiền điện tử. Thanh toán ngang hàng tìm cách che giấu tầm nhìn của bên thứ ba, một sự khác biệt rõ rệt khi so sánh với truyền thống ngân hàng. Đặc biệt, T. Okamoto và K. Ohta đã mô tả sáu tiêu chí của tiền điện tử lý tưởng, trong đó bao gồm “quyền riêng tư: mối quan hệ giữa người dùng và giao dịch mua hàng của anh ta phải không thể theo dõi được bởi bất kỳ ai” [30]. Từ mô tả của họ, chúng tôi rút ra được hai thuộc tính ẩn danh hoàn toàn mô hình tiền điện tử phải đáp ứng để tuân thủ các yêu cầu do Okamoto nêu ra và Ohta: Không thể theo dõi: đối với mỗi giao dịch đến, tất cả những người gửi có thể đều có khả năng được trang bị. Không thể liên kết: đối với bất kỳ hai giao dịch gửi đi nào cũng không thể chứng minh được chúng đã được gửi đến cùng một người. Thật không may, Bitcoin không đáp ứng yêu cầu không thể theo dõi. Vì tất cả các giao dịch diễn ra giữa những người tham gia mạng đều công khai nên mọi giao dịch đều có thể được 1 3 Bitcoin chắc chắn không đạt được "không thể theo dõi". Khi tôi gửi BTC cho bạn, ví tiền được gửi từ đó được đóng dấu không thể hủy ngang trên blockchain. Không có câu hỏi nào về việc ai đã gửi số tiền đó, bởi vì chỉ người biết khóa riêng mới có thể gửi chúng.được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không có thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 4 Có lẽ, nếu mỗi người dùng giúp họ ẩn danh bằng cách luôn tạo một địa chỉ mới đối với MỌI khoản thanh toán đã nhận được (điều này thật vô lý nhưng về mặt kỹ thuật là cách "chính xác" để thực hiện), và nếu mọi người dùng giúp đỡ những người khác ẩn danh bằng cách nhấn mạnh rằng họ không bao giờ gửi tiền đến cùng một địa chỉ BTC hai lần, thì Bitcoin vẫn sẽ chỉ tình cờ vượt qua kiểm tra khả năng không liên kết. Tại sao? Dữ liệu người tiêu dùng có thể được sử dụng để tìm hiểu một lượng thông tin đáng kinh ngạc về con người mọi lúc. Hãy xem, ví dụ http://www.applieddatalabs.com/content/target-knows-it-shows Bây giờ, hãy tưởng tượng đây là 20 năm sau và hãy tưởng tượng thêm rằng Target không chỉ biết về thói quen mua hàng của bạn tại Target nhưng họ đã khai thác blockchain cho TẤT CẢ MUA HÀNG CÁ NHÂN CỦA BẠN BẰNG VÍ COINBASE CỦA BẠN TRONG TRƯỚC ĐÂY MƯỜI HAI NĂM. Họ sẽ nói "Này anh bạn, tối nay anh có muốn mua thuốc ho không, anh sẽ không mua đâu." ngày mai sẽ khỏe." Điều này có thể không xảy ra nếu việc sắp xếp theo nhiều bên được khai thác đúng cách. Hãy xem, ví dụ, điều nàybài đăng trên blog: http://blog.ezyang.com/2012/07/secure-multiparty-bitcoin-anonymization/ Tôi không hoàn toàn bị thuyết phục về phép toán trên đó, nhưng ... từng bài một, phải không? Cần trích dẫn. Trong khi giao thức Zerocoin (độc lập) có thể không hiệu quả thì Zerocash giao thức dường như đã thực hiện một giao dịch có kích thước 1kb. Dự án đó được hỗ trợ bởi tất nhiên là quân đội Hoa Kỳ và Israel, vậy nên ai biết được sức mạnh của nó. Mặt khác Mặt khác, không ai muốn có thể chi tiêu mà không có sự giám sát hơn quân đội. http://zerocash-project.org/ Tôi không bị thuyết phục... xem, ví dụ: http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_12.pdf Trích dẫn lời của nhà phát triển tiền điện tử Maurice Planck (có lẽ là một bút danh) từ tiền điện tử diễn đàn: "Zerocoin, Zerocash. Tôi phải thừa nhận đây là công nghệ tiên tiến nhất. Vâng, trích dẫn ở trên là từ phân tích phiên bản trước của giao thức. Theo hiểu biết của tôi, nó không phải 288, nhưng 384 byte, nhưng dù sao đây cũng là tin tốt. Họ đã sử dụng một kỹ thuật hoàn toàn mới có tên là SNARK, kỹ thuật này có một số nhược điểm nhất định: ví dụ: cơ sở dữ liệu ban đầu lớn về các tham số công khai cần thiết để tạo chữ ký (hơn 1 GB) và thời gian đáng kể cần thiết để tạo một giao dịch (hơn một phút). Cuối cùng, họ đang sử dụng một tiền điện tử non trẻ, mà tôi đã đề cập là một ý tưởng đáng tranh cãi: https://forum.cryptonote.org/viewtopic.php?f= " - Maurice P. Thu 03/04/2014 7:56 chiều Một chức năng được thực hiện trong CPU và không phù hợp với GPU, FPGA hoặc ASIC tính toán. "Câu đố" được sử dụng trong proof-of-work được gọi là hàm định giá, hàm chi phí hoặc chức năng câu đố.
được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được đang tranh chấp [25], người ta nghi ngờ rằng có thể trích xuất nhiều thông tin cá nhân ẩn từ cơ sở dữ liệu công cộng. Việc Bitcoin không thỏa mãn hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước không thuận tiện - khoảng 30kb (dựa trên giới hạn Bitcoin của ngày hôm nay), điều này đưa ra đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 được truy tìm rõ ràng về nguồn gốc duy nhất và người nhận cuối cùng. Ngay cả khi hai người tham gia trao đổi vốn theo cách gián tiếp, một phương pháp tìm đường được thiết kế phù hợp sẽ tiết lộ nguồn gốc và người nhận cuối cùng. Người ta cũng nghi ngờ rằng Bitcoin không đáp ứng thuộc tính thứ hai. Một số nhà nghiên cứu đã nêu ([33, 35, 29, 31]) rằng việc phân tích blockchain cẩn thận có thể tiết lộ mối liên hệ giữa người dùng mạng Bitcoin và các giao dịch của họ. Mặc dù một số phương pháp được dbị tranh cãi [25], người ta nghi ngờ rằng nhiều thông tin cá nhân ẩn có thể được trích xuất từ cơ sở dữ liệu công cộng. Việc Bitcoin không đáp ứng được hai thuộc tính được nêu ở trên khiến chúng tôi kết luận rằng đó là không phải là một hệ thống tiền điện tử ẩn danh mà là một hệ thống tiền điện tử giả ẩn danh. Người dùng đã nhanh chóng phát triển giải pháp khắc phục nhược điểm này. Hai giải pháp trực tiếp là “dịch vụ rửa tiền” [2] và sự phát triển của các phương pháp phân tán [3, 4]. Cả hai giải pháp đều dựa trên ý tưởng trộn một số giao dịch công khai và gửi chúng qua một số địa chỉ trung gian; đến lượt nó gặp phải nhược điểm là cần có bên thứ ba đáng tin cậy. Gần đây, một kế hoạch sáng tạo hơn đã được đề xuất bởi I. Miers et al. [28]: “Zerocoin”. Zerocoin sử dụng bộ tích lũy một chiều bằng mật mã và bằng chứng không có kiến thức cho phép người dùng “chuyển đổi” bitcoin thành zerocoin và chi tiêu chúng bằng cách sử dụng bằng chứng quyền sở hữu ẩn danh thay vì chữ ký số dựa trên khóa công khai rõ ràng. Tuy nhiên, những bằng chứng tri thức như vậy có một hằng số nhưng kích thước bất tiện - khoảng 30kb (dựa trên giới hạn Bitcoin ngày nay), điều này khiến đề xuất không thực tế. Các tác giả thừa nhận rằng giao thức này khó có thể được đa số chấp nhận Bitcoin người dùng [5]. 2.2 Hàm proof-of-work Bitcoin người sáng tạo Satoshi Nakamoto đã mô tả thuật toán ra quyết định theo đa số là “mộtCPU-một phiếu bầu” và sử dụng chức năng định giá giới hạn CPU (gấp đôi SHA-256) cho proof-of-work của mình kế hoạch. Vì người dùng bỏ phiếu cho lịch sử giao dịch duy nhất [1] nên tính hợp lý và tính nhất quán của quá trình này là điều kiện quan trọng cho toàn bộ hệ thống. Tính bảo mật của mô hình này có hai nhược điểm. Đầu tiên, nó yêu cầu 51% dung lượng mạng sức mạnh khai thác nằm dưới sự kiểm soát của người dùng trung thực. Thứ hai, tiến độ của hệ thống (sửa lỗi, sửa lỗi bảo mật, v.v...) yêu cầu đại đa số người dùng phải ủng hộ và đồng ý với thay đổi (điều này xảy ra khi người dùng cập nhật phần mềm ví của họ) [6].Cuối cùng, cuộc bỏ phiếu tương tự này cơ chế này cũng được sử dụng cho các cuộc thăm dò ý kiến tập thể về việc triển khai một số tính năng [7]. Điều này cho phép chúng ta phỏng đoán các tính chất phải được thỏa mãn bởi proof-of-work chức năng định giá. Chức năng như vậy không được cho phép người tham gia mạng có ảnh hưởng đáng kể lợi thế hơn người tham gia khác; nó đòi hỏi sự tương đương giữa phần cứng thông thường và cao chi phí của các thiết bị tùy chỉnh. Từ các ví dụ gần đây [8], chúng ta có thể thấy rằng hàm SHA-256 được sử dụng trong kiến trúc Bitcoin không sở hữu thuộc tính này khi việc khai thác trở nên hiệu quả hơn trên GPU và thiết bị ASIC khi so sánh với CPU cao cấp. Vì vậy, Bitcoin tạo điều kiện thuận lợi cho khoảng cách lớn giữa quyền biểu quyết của người tham gia vì nó vi phạm nguyên tắc “một CPU-một phiếu bầu” do chủ sở hữu GPU và ASIC sở hữu quyền biểu quyết lớn hơn nhiều khi so sánh với chủ sở hữu CPU. Đó là một ví dụ cổ điển về Nguyên tắc Pareto trong đó 20% người tham gia hệ thống kiểm soát hơn 80% số phiếu bầu. Người ta có thể lập luận rằng sự bất bình đẳng như vậy không liên quan đến an ninh mạng vì nó không số lượng nhỏ người tham gia kiểm soát đa số phiếu bầu nhưng tính trung thực của những điều này những người tham gia quan trọng. Tuy nhiên, lập luận như vậy có phần sai sót vì nó đúng hơn là khả năng phần cứng chuyên dụng giá rẻ xuất hiện thay vì sự trung thực của người tham gia đặt ra một mối đe dọa. Để chứng minh điều này, chúng ta hãy lấy ví dụ sau. Giả sử có ác tâm cá nhân đạt được sức mạnh khai thác đáng kể bằng cách tạo ra trang trại khai thác của riêng mình thông qua giá rẻ 2 Bình luận ở trang 2
クリプトノートテクノロジー
Bitcoin テクノロジーの制限について説明したので、次は次の点に集中します。 CryptoNoteの機能を紹介します。
Công nghệ CryptoNote
Bây giờ chúng ta đã đề cập đến những hạn chế của công nghệ Bitcoin, chúng ta sẽ tập trung vào trình bày các tính năng của CryptoNote.
追跡できない取引
このセクションでは、追跡不可能性と追跡不可能性の両方を満たす完全匿名トランザクションのスキームを提案します。
そしてリンク解除条件。私たちのソリューションの重要な特徴は、送信側の自律性です。
取引を行うために他のユーザーまたは信頼できる第三者と協力する必要はありません。
したがって、各参加者は独立してカバー トラフィックを生成します。
4.1
文献レビュー
私たちのスキームは、グループ署名と呼ばれる暗号化プリミティブに依存しています。最初に提示されたのは
D. Chaum と E. van Heyst [19] を使用すると、ユーザーがグループを代表して自分のメッセージに署名できるようになります。
メッセージに署名した後、ユーザーは自分自身の単一の公開情報ではなく (検証目的で) 提供します。
1これはいわゆる「ソフトリミット」、つまり新しいブロックを作成するための参照クライアント制限です。ハード最大値
可能なブロックサイズは 1 MB でした
4
必要に応じてそれらを使用すると、主な欠点が生じます。残念ながら、いつ起こるかを予測するのは困難です。
定数の変更が必要になる場合があり、定数を置き換えるとひどい結果につながる可能性があります。
悲惨な結果をもたらすハードコードされた制限変更の好例は、次のブロックです。
サイズ制限は 250kb1 に設定されています。この制限は、約 10000 件の標準トランザクションを保持するには十分です。で
2013 年の初めには、この制限にほぼ達していたので、上限を増やすことで合意に達しました。
限界。この変更はウォレットバージョン0.8で実装され、24ブロックのチェーン分割で終了しました。
そして二重支出攻撃[9]が成功しました。バグは Bitcoin プロトコルにはありませんでしたが、
むしろデータベース エンジンに問題があった場合、単純なストレス テストで簡単に検出できたはずです。
人為的に導入されたブロック サイズ制限はありません。
定数は、一元化ポイントの形式としても機能します。
ピアツーピアの性質にもかかわらず、
Bitcoin、圧倒的多数のノードは、によって開発された公式リファレンス クライアント [10] を使用しています。
少人数のグループ。このグループは、プロトコルへの変更を実装する決定を下します。
そしてほとんどの人は、その「正しさ」に関係なく、こうした変化を受け入れます。いくつかの決定が引き起こした
白熱した議論が行われ、ボイコット [11] さえ呼び掛けられています。これは、コミュニティと
開発者はいくつかの重要な点で意見が異なる場合があります。したがって、プロトコルを持つことは論理的であると思われます
これらの問題を回避する可能な方法として、ユーザーが構成可能で自己調整可能な変数を使用します。
2.5
かさばるスクリプト
Bitcoin のスクリプト システムは、重くて複雑な機能です。それは潜在的に人が作成することを可能にします
洗練されたトランザクション [12] ですが、セキュリティ上の懸念から一部の機能が無効になっています。
[13] は一度も使用されていないものもあります。スクリプト (送信側と受信側の両方の部分を含む)
Bitcoin で最も人気のあるトランザクションは次のようになります。
キーですが、彼のグループのすべてのユーザーのキーです。検証者は、本物の署名者が グループのメンバーですが、署名者を排他的に特定することはできません。 元のプロトコルでは、信頼できる第三者 (グループ マネージャーと呼ばれる) が必要であり、彼は 署名者を追跡できる唯一の人。リングシグネチャと呼ばれる次のバージョンが導入されました リベストらによる。 [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) は新しいトランザクションの送信方法です
- ボブは、対応するワンタイム秘密キーを復元できます: 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
-
ボブは、対応するワンタイム秘密キーを復元できます: 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 の特性は維持されます。 何でも。
-
ボブは、対応するワンタイム秘密キーを復元できます: 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
- ボブは、対応するワンタイム秘密キーを復元できます: 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。そしてそれが彼らが表現しようとしているもののようです。 ただし、これはそうではありません
Giao dịch không thể theo dõi
Trong phần này, chúng tôi đề xuất một sơ đồ các giao dịch ẩn danh hoàn toàn thỏa mãn cả khả năng không thể theo dõi
và điều kiện không thể liên kết. Một tính năng quan trọng trong giải pháp của chúng tôi là tính tự chủ của nó: người gửi
không bắt buộc phải hợp tác với người dùng khác hoặc bên thứ ba đáng tin cậy để thực hiện các giao dịch của mình;
do đó mỗi người tham gia tạo ra một lưu lượng truy cập bìa một cách độc lập.
4.1
Bình luận văn học
Sơ đồ của chúng tôi dựa trên nguyên tắc mật mã được gọi là chữ ký nhóm. Lần đầu tiên được trình bày bởi
D. Chaum và E. van Heyst [19], nó cho phép người dùng ký vào tin nhắn của mình thay mặt cho nhóm.
Sau khi ký tin nhắn, người dùng cung cấp (vì mục đích xác minh) chứ không phải thông tin công khai của riêng mình
1Đây được gọi là “giới hạn mềm” — hạn chế máy khách tham chiếu để tạo khối mới. Tối đa cứng của
kích thước khối có thể là 1 MB
4
chúng nếu cần thiết sẽ gây ra những hạn chế chính. Thật không may, thật khó để dự đoán khi nào
các hằng số có thể cần phải được thay đổi và việc thay thế chúng có thể dẫn đến những hậu quả khủng khiếp.
Một ví dụ điển hình về thay đổi giới hạn được mã hóa cứng dẫn đến hậu quả tai hại là khối
giới hạn kích thước được đặt thành 250kb1. Giới hạn này đủ để chứa khoảng 10000 giao dịch tiêu chuẩn. trong
đầu năm 2013, giới hạn này gần như đã đạt được và đạt được thỏa thuận nhằm tăng
giới hạn. Thay đổi được triển khai trong phiên bản ví 0.8 và kết thúc bằng việc chia chuỗi 24 khối
và một cuộc tấn công chi tiêu gấp đôi thành công [9]. Mặc dù lỗi không nằm trong giao thức Bitcoin nhưng
đúng hơn là trong công cụ cơ sở dữ liệu, nó có thể dễ dàng bị phát hiện bằng một bài kiểm tra căng thẳng đơn giản nếu có
không có giới hạn kích thước khối được giới thiệu một cách giả tạo.
Các hằng số cũng hoạt động như một dạng điểm tập trung.
Bất chấp bản chất ngang hàng của
Bitcoin, phần lớn các nút sử dụng ứng dụng khách tham chiếu chính thức [10] được phát triển bởi
một nhóm nhỏ người Nhóm này đưa ra quyết định thực hiện các thay đổi đối với giao thức
và hầu hết mọi người đều chấp nhận những thay đổi này bất kể “tính đúng đắn” của chúng. Một số quyết định gây ra
các cuộc thảo luận sôi nổi và thậm chí còn kêu gọi tẩy chay [11], điều này cho thấy rằng cộng đồng và
các nhà phát triển có thể không đồng ý ở một số điểm quan trọng. Do đó, có vẻ hợp lý khi có một giao thức
với các biến do người dùng cấu hình và tự điều chỉnh như một cách có thể để tránh những vấn đề này.
2,5
Tập lệnh cồng kềnh
Hệ thống tập lệnh trong Bitcoin là một tính năng nặng nề và phức tạp. Nó có khả năng cho phép người ta tạo ra
các giao dịch phức tạp [12], nhưng một số tính năng của nó bị vô hiệu hóa do lo ngại về bảo mật và
một số thậm chí chưa bao giờ được sử dụng [13]. Kịch bản (bao gồm cả phần người gửi và người nhận)
đối với giao dịch phổ biến nhất trong Bitcoin trông như thế này:
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa chung có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 8 Chữ ký vòng hoạt động như thế này: Alex muốn tiết lộ một thông điệp tới WikiLeaks về chủ nhân của cô ấy. Mỗi nhân viên trong Công ty của cô đều có một cặp khóa riêng/chung (Ri, Ui). Cô ấy sáng tác chữ ký của cô ấy với thông tin đầu vào được đặt là tin nhắn của cô ấy, m, khóa riêng của cô ấy, Ri và MỌI NGƯỜI khóa công khai, (Ui;i=1...n). Bất kỳ ai (không biết bất kỳ khóa riêng nào) đều có thể xác minh dễ dàng rằng cặp some (Rj, Uj) phải được sử dụng để tạo chữ ký... ai đó làm việc cho người chủ của Alex... nhưng về cơ bản đó chỉ là phỏng đoán ngẫu nhiên để tìm ra đó có thể là ai. http://en.wikipedia.org/wiki/Ring_signature#Crypto-currencies http://link.springer.com/chapter/10.1007/3-540-45682-1_32#page-1 http://link.springer.com/chapter/10.1007/11424826_65 http://link.springer.com/chapter/10.1007/978-3-540-27800-9_28 http://link.springer.com/chapter/10.1007%2F11774716_9 Lưu ý rằng chữ ký vòng có thể liên kết được mô tả ở đây trái ngược với "không thể liên kết" được mô tả ở trên. Ở đây, chúng tôi chặn hai tin nhắn và chúng tôi có thể xác định xem liệu chúng có giống nhau không bên đã gửi chúng, mặc dù chúng tôi vẫn không thể xác định được bên đó là ai. các định nghĩa "không thể liên kết" được sử dụng để xây dựng Cryptonote có nghĩa là chúng tôi không thể xác định liệu cùng một bên đang nhận chúng. Do đó, những gì chúng ta thực sự có ở đây là BỐN điều đang diễn ra. Một hệ thống có thể được liên kết hoặc không thể liên kết được, tùy thuộc vào việc có thể xác định được người gửi của hai tin nhắn giống nhau (bất kể điều này có yêu cầu thu hồi tính ẩn danh hay không). Và một hệ thống có thể không thể liên kết được hoặc không thể hủy liên kết được, tùy thuộc vào việc có thể thực hiện được hay không. xác định xem người nhận hai tin nhắn có giống nhau hay không (bất kể có hay không điều này yêu cầu thu hồi ẩn danh). Xin đừng trách tôi vì thuật ngữ khủng khiếp này. Các nhà lý thuyết đồ thị có lẽ nên hài lòng. Một số bạn có thể cảm thấy thoải mái hơn với "có thể liên kết được với người nhận" so với "có thể liên kết được với người gửi". http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Khi tôi đọc điều này, đây có vẻ là một tính năng ngớ ngẩn. Sau đó tôi đọc được rằng nó có thể là một tính năng dành cho bỏ phiếu điện tử, và điều đó có vẻ hợp lý. Thật tuyệt, từ quan điểm đó. Nhưng tôi không hoàn toàn chắc chắn về việc cố tình thực hiện chữ ký vòng có thể theo dõi. http://search.ieice.org/bin/summary.php?id=e95-a_1_151
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 9 Trời ơi, tác giả của sách trắng này chắc chắn có thể diễn đạt điều này tốt hơn! Hãy nói rằng một công ty do nhân viên sở hữu muốn bỏ phiếu về việc có nên mua một số sản phẩm mới hay không tài sản, Alex và Brenda đều là nhân viên. Công ty cung cấp cho mỗi nhân viên một thông báo như "Tôi bỏ phiếu đồng ý cho Dự luật A!" có "vấn đề" siêu thông tin [ĐỀ XUẤT A] và yêu cầu họ ký vào đó bằng chữ ký vòng có thể theo dõi được nếu họ ủng hộ đề xuất. Sử dụng chữ ký vòng truyền thống, một nhân viên không trung thực có thể ký tin nhắn nhiều lần, có lẽ là với nonce khác nhau, để bỏ phiếu bao nhiêu lần tùy thích. Mặt khác tay, trong sơ đồ chữ ký vòng có thể theo dõi, Alex sẽ bỏ phiếu và khóa riêng của cô ấy sẽ có đã được sử dụng trong vấn đề [ĐỀ XUẤT A]. Nếu Alex cố gắng ký một tin nhắn như "Tôi, Brenda, chấp thuận đề xuất A!” để "đóng khung" Brenda và bỏ phiếu kép, tin nhắn mới này cũng sẽ có vấn đề [ĐỀ XUẤT A]. Vì khóa riêng của Alex đã giải quyết được vấn đề [PROP A] nên danh tính của Alex sẽ ngay lập tức bị phát hiện là lừa đảo. Mà, đối mặt với nó, là khá tuyệt! Mật mã thực thi sự bình đẳng trong bỏ phiếu. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Bài viết này rất thú vị, về cơ bản là tạo ra một chữ ký vòng đặc biệt nhưng không có bất kỳ sự đồng ý của người tham gia khác. Cấu trúc chữ ký có thể khác nhau; Tôi chưa đào sâu và tôi chưa biết liệu nó có an toàn hay không. https://people.csail.mit.edu/rivest/AdidaHohenbergerRivest-AdHocGroupSignaturesFromHijackedKeypai Chữ ký nhóm đặc biệt là: chữ ký vòng, là chữ ký nhóm không có nhóm người quản lý, không tập trung hóa, nhưng cho phép một thành viên trong một nhóm đặc biệt tuyên bố một cách có căn cứ rằng nó đã (không) ban hành chữ ký ẩn danh thay mặt cho nhóm. http://link.springer.com/chapter/10.1007/11908739_9 Điều này không hoàn toàn chính xác, theo sự hiểu biết của tôi. Và sự hiểu biết của tôi có thể sẽ thay đổi khi Tôi hiểu sâu hơn về dự án này. Nhưng theo hiểu biết của tôi, hệ thống phân cấp trông như thế này. Dấu hiệu nhóm: người quản lý nhóm kiểm soát khả năng truy xuất nguồn gốc và khả năng thêm hoặc xóa thành viên từ việc trở thành người ký kết. Ring sigs: Thành lập nhóm tùy ý không có người quản lý nhóm. Không thu hồi ẩn danh. Không có cách nào để từ chối chính mình từ một chữ ký cụ thể. Với vòng có thể theo dõi và liên kết được chữ ký, tính ẩn danh có thể mở rộng được phần nào. Chữ ký nhóm đặc biệt: giống như chữ ký vòng, nhưng các thành viên có thể chứng minh rằng họ không tạo ra một chữ ký cụ thể. Điều này rất quan trọng khi bất kỳ ai trong nhóm đều có thể tạo ra chữ ký. http://link.springer.com/chapter/10.1007/978-3-540-71677-8_13 Thuật toán của Fujisaki và Suzuki sau đó được tác giả điều chỉnh để mang lại tính chất một lần. Vì vậy chúng ta sẽ phân tích thuật toán của Fujisaki và Suzuki đồng thời với thuật toán mới thay vì hơn là đi qua nó ở đây.
chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi đã chọn sử dụng lược đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 chìa khóa, mà là chìa khóa của tất cả người dùng trong nhóm của anh ấy. Người xác minh bị thuyết phục rằng người ký thực sự là một thành viên của nhóm, nhưng không thể xác định riêng người ký. Giao thức ban đầu yêu cầu một bên thứ ba đáng tin cậy (được gọi là Người quản lý nhóm) và anh ta người duy nhất có thể tìm ra người ký. Phiên bản tiếp theo được gọi là chữ ký vòng, được giới thiệu bởi Rivest và cộng sự. trong [34], là một chương trình tự trị không có Trình quản lý nhóm và ẩn danh thu hồi. Nhiều sửa đổi khác nhau của sơ đồ này xuất hiện sau đó: chữ ký vòng có thể liên kết [26, 27, 17] được phép xác định xem hai chữ ký có được tạo bởi cùng một thành viên nhóm hay không, có thể theo dõi được chữ ký vòng [24, 23] hạn chế tính ẩn danh quá mức bằng cách cung cấp khả năng theo dõi người ký hai thông báo liên quan đến cùng một siêu thông tin (hoặc “thẻ” theo thuật ngữ [24]). Một cấu trúc mật mã tương tự còn được gọi là chữ ký nhóm đặc biệt [16, 38]. Nó nhấn mạnh sự hình thành nhóm tùy ý, trong khi các sơ đồ chữ ký nhóm/vòng ngụ ý một tập hợp các thành viên cố định. Phần lớn giải pháp của chúng tôi dựa trên tác phẩm “Chữ ký vòng có thể theo dõi” của E. Fujisaki và K. Suzuki [24]. Để phân biệt thuật toán gốc và thuật toán sửa đổi của chúng tôi, chúng tôi sẽ gọi cái sau là chữ ký vòng một lần, nhấn mạnh khả năng của người dùng chỉ tạo ra một chữ ký hợp lệ chữ ký dưới khóa riêng của mình. Chúng tôi đã làm suy yếu đặc tính truy xuất nguồn gốc và giữ nguyên khả năng liên kết chỉ để cung cấp tính chất một lần: khóa công khai có thể xuất hiện trong nhiều bộ xác minh nước ngoài và khóa riêng có thể được sử dụng để tạo chữ ký ẩn danh duy nhất. Trường hợp chi tiêu gấp đôi thử 2 chữ ký này sẽ được liên kết với nhau nhưng việc tiết lộ người ký là không cần thiết cho mục đích của chúng tôi. 4.2 định nghĩa 4.2.1 Thông số đường cong elip Là thuật toán chữ ký cơ sở, chúng tôi chọne sử dụng sơ đồ nhanh EdDSA, được phát triển và được thực hiện bởi D.J. Bernstein và cộng sự. [18]. Giống như ECDSA của Bitcoin nó dựa trên đường cong elip vấn đề logarit rời rạc, do đó lược đồ của chúng tôi cũng có thể được áp dụng cho Bitcoin trong tương lai. Các thông số phổ biến là: q: số nguyên tố; q = 2255 −19; d: một phần tử của Fq; d = −121665/121666; E: phương trình đường cong elip; −x2 + y2 = 1 + dx2y2; G: điểm cơ sở; G = (x, −4/5); l: thứ tự nguyên tố của điểm cơ sở; l = 2252 + 27742317777372353535851937790883648493; \(H_s\): hàm mật mã hash \(\{0, 1\}^* \to \mathbb{F}_q\); \(H_p\): hàm hash tất định \(E(\mathbb{F}_q) \to E(\mathbb{F}_q)\). 4.2.2 Thuật ngữ Quyền riêng tư nâng cao yêu cầu thuật ngữ mới không được nhầm lẫn với các thực thể Bitcoin. khóa riêng ec-key là khóa riêng có đường cong elip tiêu chuẩn: một số \(a \in [1, l - 1]\); public ec-key là khóa công khai có đường cong elip tiêu chuẩn: a điểm A = aG; cặp khóa dùng một lần là một cặp khóa điện tử riêng tư và công khai; 5 10 Khả năng liên kết theo nghĩa "chữ ký vòng có thể liên kết" có nghĩa là chúng tôi có thể biết liệu hai giao dịch gửi đi có đến từ cùng một nguồn hay không mà không tiết lộ nguồn đó là ai. Tác giả suy yếu khả năng liên kết để (a) bảo vệ quyền riêng tư nhưng vẫn (b) phát hiện bất kỳ giao dịch nào bằng khóa riêng lần thứ hai là không hợp lệ. Được rồi, đây là câu hỏi về thứ tự sự kiện. Hãy xem xét kịch bản sau đây. Khai thác của tôi máy tính sẽ có blockchain hiện tại, nó sẽ có khối giao dịch riêng mà nó gọi hợp pháp, nó sẽ hoạt động trên khối đó trong câu đố proof-of-work và nó sẽ có một danh sách các giao dịch đang chờ xử lý sẽ được thêm vào khối tiếp theo. Nó cũng sẽ gửi bất kỳ thông tin mới nào giao dịch vào nhóm giao dịch đang chờ xử lý đó. Nếu tôi không giải được khối tiếp theo, nhưng người khác làm vậy, tôi nhận được bản sao cập nhật của blockchain. Khối tôi đang làm việc và danh sách các giao dịch đang chờ xử lý của tôi đều có thể có một số giao dịch hiện đã được kết hợp vào blockchain. Làm sáng tỏ khối đang chờ xử lý của tôi, kết hợp khối đó với danh sách các giao dịch đang chờ xử lý của tôi và gọi đó là nhóm giao dịch đang chờ xử lý của tôi. Xóa mọi thứ hiện có chính thức trong blockchain. Bây giờ tôi phải làm gì? Trước tiên tôi có nên xem qua và "loại bỏ tất cả các khoản chi tiêu gấp đôi" không? Mặt khác tay, tôi có nên tìm kiếm trong danh sách và đảm bảo rằng mỗi khóa riêng tư đều chưa được được sử dụng và nếu nó đã được sử dụng trong danh sách của tôi thì tôi đã nhận được bản sao đầu tiên trước, và do đó bất kỳ bản sao nào nữa là bất hợp pháp. Vì vậy, tôi tiến hành xóa tất cả các phiên bản sau lần đầu tiên của cùng một khóa riêng. Hình học đại số chưa bao giờ là điểm mạnh của tôi. http://en.wikipedia.org/wiki/EdDSA Tốc độ như vậy, nhiều wow. ĐÂY là hình học đại số để giành chiến thắng. Không phải là tôi biết bất cứ điều gì về điều đó. Có vấn đề hay không, các nhật ký rời rạc đang hoạt động rất nhanh. Và máy tính lượng tử ăn chúng cho bữa sáng. http://link.springer.com/article/10.1007/s13389-012-0027-1 Đây trở thành một con số thực sự quan trọng, nhưng không có lời giải thích hay trích dẫn nào về việc nó đã được chọn. Đơn giản chỉ cần chọn một số nguyên tố lớn đã biết là được, nhưng nếu có sự thật về số nguyên tố lớn này, điều đó có thể ảnh hưởng đến sự lựa chọn của chúng ta. Các biến thể khác nhau của tiền điện tử có thể chọn các giá trị khác nhau của ồ, nhưng không có cuộc thảo luận nào trong bài viết này về cách điều đó sự lựa chọn sẽ ảnh hưởng đến sự lựa chọn của chúng ta về các thông số tổng thể khác được liệt kê ở trang 5. Bài viết này cần một phần về việc lựa chọn các giá trị tham số.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 11 Vì vậy, điều này giống như Bitcoin, nhưng với Hộp thư bưu điện ẩn danh, vô hạn, chỉ người nhận mới có thể đổi tạo khóa riêng ẩn danh như chữ ký vòng có thể. Bitcoin hoạt động theo cách này. Nếu Alex có 0,112 Bitcoin trong ví mà cô ấy vừa nhận được từ Frank thì cô ấy thực sự có chữ ký tin nhắn "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N0" trong đó 1) Frank đã ký vào tin nhắn bằng khóa riêng của anh ấy [FRANK], 2) Frank đã ký tin nhắn với công khai của Alex key, [alex], 3) Frank đã đưa vào một số dạng lịch sử của bitcoin, H0 và 4) Frank bao gồm một bit dữ liệu ngẫu nhiên được gọi là nonce, N0. Sau đó, nếu Alex muốn gửi 0,011 Bitcoin cho Charlene, cô ấy sẽ nhận tin nhắn của Frank và cô ấy sẽ đặt giá trị đó thành H1 và ký hai tin nhắn: một cho giao dịch của cô ấy và một cho thay đổi. H1= "Tôi, [FRANK], gửi 0,112 Bitcoin tới [alex] + H0 + N" "Tôi, [ALEX], gửi 0,011 Bitcoin tới [charlene] + H1 + N1" "Tôi, [ALEX], gửi 0,101 Bitcoin khi thay đổi thành [alex] + H1 + N2." trong đó Alex ký cả hai tin nhắn bằng khóa riêng của cô ấy [ALEX], tin nhắn đầu tiên bằng khóa riêng của Charlene. khóa công khai [charlene], tin nhắn thứ hai có khóa công khai [alex] của Alex và bao gồm cả lịch sử và một số nonces N1 và N2 được tạo ngẫu nhiên một cách thích hợp. Tiền điện tử hoạt động theo cách này: Nếu Alex có 0,112 tiền điện tử trong ví mà cô ấy vừa nhận được từ Frank, thì cô ấy thực sự có một tờ tiền đã ký. tin nhắn "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 Cryptonote đến [địa chỉ một lần] + H0 + N0.” Alex phát hiện ra rằng đây là tiền của cô ấy bằng cách kiểm tra khóa riêng [ALEX] của cô ấy. [địa chỉ một lần] cho mỗi tin nhắn gửi đi và nếu cô ấy muốn sử dụng nó, cô ấy sẽ làm như vậy cách sau đây. Cô ấy chọn người nhận tiền, có lẽ Charlene đã bắt đầu bỏ phiếu cho các cuộc tấn công bằng máy bay không người lái nên Alex muốn gửi tiền cho Brenda. Vì vậy, Alex tra cứu khóa công khai của Brenda, [brenda], và sử dụng khóa riêng của cô ấy, [ALEX], để tạo địa chỉ một lần [ALEX+brenda]. Cô ấy sau đó chọn một bộ sưu tập C tùy ý từ mạng lưới người dùng tiền điện tử và cô ấy xây dựng một chữ ký vòng từ nhóm đặc biệt này. Chúng tôi đặt lịch sử của mình làm tin nhắn trước đó, thêm nonces và tiếp tục như bình thường? H1 = "Tôi, [ai đó trong nhóm đặc biệt], gửi 0,112 tiền điện tử đến [địa chỉ một lần] + H0 + N0.” "Tôi, [ai đó trong bộ sưu tập C], gửi 0,011 Cryptonote tới [địa chỉ một lần được tạo từALEX+brenda] + H1 + N1" "Tôi, [ai đó trong bộ sưu tập C], gửi 0.101 Cryptonote dưới dạng thay đổi thành [địa chỉ một lần-madefrom-ALEX+alex] + H1 + N2" Bây giờ, Alex và Brenda đều quét tất cả các tin nhắn đến để tìm bất kỳ địa chỉ một lần nào đã được lưu trữ. được tạo bằng chìa khóa của họ. Nếu họ tìm thấy thì tin nhắn đó là tin nhắn hoàn toàn mới của họ. tiền điện tử! Và thậm chí sau đó, giao dịch vẫn sẽ đạt blockchain. Nếu đồng tiền nhập vào địa chỉ đó được biết là được gửi từ tội phạm, những người đóng góp chính trị hoặc từ các ủy ban và tài khoản với ngân sách nghiêm ngặt (tức là tham ô) hoặc nếu chủ sở hữu mới của những đồng tiền này mắc sai lầm và gửi những đồng tiền này đến một địa chỉ chung với những đồng tiền mà anh ta được biết là sở hữu, khuôn mẫu ẩn danh bitcoin tăng giá.
khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mô hình khóa/giao dịch Bitcoin truyền thống. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 khóa người dùng riêng là một cặp (a, b) gồm hai khóa ec-key riêng khác nhau; khóa theo dõi là một cặp (a, B) khóa ec-key riêng và công khai (trong đó B = bG và a ̸= b); khóa người dùng chung là một cặp (A, B) gồm hai khóa ec-key công khai được dẫn xuất từ (a, b); địa chỉ tiêu chuẩn là sự thể hiện khóa người dùng công cộng được đưa vào chuỗi thân thiện với con người với việc sửa lỗi; địa chỉ bị cắt ngắn là sự thể hiện nửa sau (điểm B) của khóa người dùng công khai được cung cấp thành chuỗi thân thiện với con người có sửa lỗi. Cấu trúc giao dịch vẫn tương tự như cấu trúc trong Bitcoin: mọi người dùng đều có thể chọn một số khoản thanh toán đến độc lập (đầu ra giao dịch), ký chúng với các khóa riêng và gửi chúng đến các điểm đến khác nhau. Ngược lại với mô hình của Bitcoin, trong đó người dùng sở hữu khóa riêng và khóa chung duy nhất, trong mô hình mô hình đề xuất, người gửi tạo khóa công khai một lần dựa trên địa chỉ của người nhận và một số dữ liệu ngẫu nhiên Theo nghĩa này, một giao dịch đến cho cùng một người nhận sẽ được gửi đến một khóa chung một lần (không trực tiếp đến một địa chỉ duy nhất) và chỉ người nhận mới có thể khôi phục khóa phần riêng tư tương ứng để lấy lại tiền của anh ấy (sử dụng khóa riêng tư duy nhất của anh ấy). Người nhận có thể chi tiêu số tiền bằng cách sử dụng chữ ký vòng, giữ kín quyền sở hữu và chi tiêu thực tế của mình. Các chi tiết của giao thức được giải thích trong các phần phụ tiếp theo. 4.3 Thanh toán không thể liên kết Địa chỉ Bitcoin cổ điển, sau khi được xuất bản, sẽ trở thành mã nhận dạng rõ ràng cho các địa chỉ gửi đến các khoản thanh toán, liên kết chúng lại với nhau và gắn với bút danh của người nhận. Nếu ai đó muốn nhận được một giao dịch “không bị ràng buộc”, anh ta phải chuyển địa chỉ của mình đến người gửi bằng một kênh riêng. Nếu anh ta muốn nhận các giao dịch khác nhau mà không thể chứng minh được là thuộc về cùng một chủ sở hữu anh ta nên tạo ra tất cả các địa chỉ khác nhau và không bao giờ xuất bản chúng dưới bút danh của chính mình. công cộng Riêng tư Alice Carol Địa chỉ 1 của Bob Địa chỉ 2 của Bob Chìa khóa của Bob 1 Chìa khóa 2 của Bob Bob Hình 2. Mod khóa/giao dịch Bitcoin truyền thốngel. Chúng tôi đề xuất giải pháp cho phép người dùng xuất bản một địa chỉ duy nhất và nhận được vô điều kiện thanh toán không thể liên kết. Đích của mỗi đầu ra CryptoNote (theo mặc định) là khóa chung, bắt nguồn từ địa chỉ của người nhận và dữ liệu ngẫu nhiên của người gửi. Ưu điểm chính so với Bitcoin là mỗi khóa đích là duy nhất theo mặc định (trừ khi người gửi sử dụng cùng một dữ liệu cho mỗi khóa đích). giao dịch của mình cho cùng một người nhận). Do đó, không có vấn đề như “tái sử dụng địa chỉ” bởi thiết kế và không người quan sát nào có thể xác định liệu có bất kỳ giao dịch nào được gửi đến một địa chỉ hoặc liên kết cụ thể hay không hai địa chỉ với nhau. 6 12 Do đó, thay vì người dùng gửi tiền từ địa chỉ (thực sự là khóa công khai) đến địa chỉ (một khóa công khai khác) bằng cách sử dụng khóa riêng của họ, người dùng sẽ gửi tiền từ hộp thư bưu điện một lần (đang tạo bằng khóa chung của bạn bè bạn) tới hộp thư bưu điện một lần (tương tự) bằng cách sử dụng khóa riêng của mình. Theo một nghĩa nào đó, chúng tôi đang nói "Được rồi, mọi người hãy rút tiền ra khi nó đang diễn ra." chuyển xung quanh! Chỉ cần biết rằng chìa khóa của chúng ta có thể mở được chiếc hộp đó là đủ chúng ta biết trong hộp có bao nhiêu tiền. Đừng bao giờ để dấu vân tay của bạn trên Hộp thư bưu điện hoặc thực sự sử dụng nó, chỉ cần trao đổi chiếc hộp chứa đầy tiền mặt. Bằng cách đó chúng tôi không biết ai đã gửi cái gì, nhưng nội dung của những địa chỉ công cộng này vẫn không có ma sát, có thể thay thế được, có thể chia được và vẫn sở hữu tất cả những phẩm chất tốt đẹp khác của tiền mà chúng ta mong muốn như bitcoin.” Một tập hợp vô hạn các hộp PO. Bạn công bố địa chỉ, tôi có khóa riêng. Tôi sử dụng khóa riêng của tôi và địa chỉ của bạn, và một số dữ liệu ngẫu nhiên để tạo khóa công khai. Thuật toán được thiết kế sao cho, vì địa chỉ đã được sử dụng để tạo khóa chung, chỉ khóa riêng CỦA BẠN mới hoạt động để mở khóa tin nhắn. Một người quan sát, Eve, thấy bạn công bố địa chỉ của mình và thấy khóa công khai mà tôi công bố. Tuy nhiên, cô ấy không biết liệu tôi đã công bố khóa công khai của mình dựa trên địa chỉ của bạn hay của cô ấy, hay của Brenda hoặc của Charlene, hoặc của bất cứ ai. Cô ấy kiểm tra khóa riêng của mình với khóa chung mà tôi đã thông báo và thấy nó không hoạt động; đó không phải là tiền của cô ấy. Cô ấy không biết khóa riêng của người khác và chỉ người nhận tin nhắn mới có khóa riêng mới có thể mở khóa tin nhắn. Vì vậy không có ai lắng nghe có thể xác định ai đã nhận tiền ít hơn nhiều là lấy tiền.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 13 Tôi tự hỏi sẽ đau đầu đến thế nào khi thực hiện một lựa chọn mật mã kế hoạch. Hình elip hoặc cách khác. Vì vậy, nếu kế hoạch nào đó bị phá vỡ trong tương lai, tiền tệ sẽ chuyển đổi mà không cần quan tâm. Có lẽ là một cơn đau lớn ở mông. Được rồi, đây chính xác là những gì tôi vừa giải thích trong bình luận trước đó. Kiểu Diffie-Hellman trao đổi rất gọn gàng. Giả sử Alex và Brenda mỗi người có một số bí mật A và B và một số họ không quan tâm đến việc giữ bí mật, a và b. Họ mong muốn tạo ra một bí mật được chia sẻ mà không cần Eva phát hiện ra nó. Diffie và Hellman đã nghĩ ra cách để Alex và Brenda chia sẻ các số công khai a và b, nhưng không phải các số riêng tư A và B, và tạo ra một bí mật chung, K. Sử dụng bí mật được chia sẻ này, K, mà không có bất kỳ Eva nào lắng nghe để có thể tạo ra bí mật tương tự K, Alex và Brenda hiện có thể sử dụng K làm khóa mã hóa bí mật và gửi lại các tin nhắn bí mật trở đi. Đây là cách nó CÓ THỂ hoạt động, mặc dù nó sẽ hoạt động với các số lớn hơn 100. Chúng ta sẽ sử dụng 100 vì tính toán các số nguyên theo modulo 100 tương đương với việc "loại bỏ tất cả nhưng là hai chữ số cuối cùng của một số." Alex và Brenda mỗi người chọn A, a, B và b. Họ giữ bí mật cho A và B. Alex nói với Brenda giá trị của modulo 100 (chỉ hai chữ số cuối) và Brenda nói với Alex giá trị của cô ấy là b modulo 100. Bây giờ Eva biết (a,b) modulo 100. Nhưng Alex biết (a,b,A) nên cô ấy có thể tính x=abA modulo 100.Alex bỏ qua tất cả trừ chữ số cuối cùng vì chúng ta đang làm việc lại theo số nguyên modulo 100. Tương tự, Brenda biết (a,b,B) nên cô ấy có thể tính y=abB modulo 100. Bây giờ Alex có thể xuất bản x và Brenda có thể xuất bản y. Nhưng bây giờ Alex có thể tính yA = abBA modulo 100 và Brenda có thể tính xB = abBA modulo 100. Cả hai đều biết cùng một số! Nhưng tất cả những gì Eva đã nghe là (a,b,abA,abB). Cô ấy không có cách nào dễ dàng để tính abA*B. Bây giờ, đây là cách suy nghĩ dễ dàng và kém an toàn nhất về sàn giao dịch Diffi-Hellman. Có nhiều phiên bản an toàn hơn. Nhưng hầu hết các phiên bản đều hoạt động vì hệ số nguyên và rời rạc logarit rất khó và cả hai vấn đề đó đều được giải quyết dễ dàng bằng máy tính lượng tử. Tôi sẽ xem xét liệu có tồn tại phiên bản nào chống lại lượng tử hay không. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange "Chuỗi txn tiêu chuẩn" được liệt kê ở đây thiếu rất nhiều bước, chẳng hạn như CHỮ KÝ. Họ chỉ được coi là đương nhiên ở đây. Điều này thực sự tồi tệ, bởi vì thứ tự mà chúng ta nội dung ký tên, thông tin có trong tin nhắn đã ký, v.v.... tất cả những điều này cực kỳ quan trọng đối với giao thức. Thực hiện sai một hoặc hai bước, thậm chí hơi sai trật tự trong khi triển khai " trình tự giao dịch tiêu chuẩn" có thể khiến tính bảo mật của toàn bộ hệ thống bị nghi ngờ. Hơn nữa, các bằng chứng được trình bày sau trong bài báo có thể không đủ chặt chẽ nếu khuôn khổ mà chúng hoạt động được xác định một cách lỏng lẻo như trong phần này.
công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 công cộng Riêng tư Alice Carol Chìa khóa một lần Chìa khóa một lần Chìa khóa một lần Bob Chìa khóa của Bob Địa chỉ của Bob Hình 3. Mô hình khóa/giao dịch CryptoNote. Đầu tiên, người gửi thực hiện trao đổi Diffe-Hellman để lấy bí mật chung từ dữ liệu của mình và một nửa địa chỉ của người nhận. Sau đó, anh ta tính toán khóa đích một lần bằng cách sử dụng khóa chia sẻ bí mật và nửa sau của địa chỉ. Hai ec-key khác nhau được yêu cầu từ người nhận đối với hai bước này, do đó, địa chỉ CryptoNote tiêu chuẩn lớn gần gấp đôi so với ví Bitcoin địa chỉ. Người nhận cũng thực hiện trao đổi Diffe-Hellman để khôi phục thông tin tương ứng chìa khóa bí mật. Một chuỗi giao dịch tiêu chuẩn diễn ra như sau: 1. Alice muốn gửi thanh toán cho Bob, người đã công bố địa chỉ tiêu chuẩn của mình. Cô ấy giải nén địa chỉ và lấy khóa chung của Bob (A, B). 2. Alice tạo ra một \(r \in [1, l - 1]\) ngẫu nhiên và tính khóa công khai một lần \(P = H_s(rA)G +\) B. 3. Alice sử dụng P làm khóa đích cho đầu ra và cũng đóng gói giá trị R = rG (như một phần của sàn giao dịch Diffie-Hellman) ở đâu đó trong giao dịch. Lưu ý rằng cô ấy có thể tạo các đầu ra khác có khóa chung duy nhất: khóa của người nhận khác nhau (Ai, Bi) ngụ ý Pi khác nhau ngay cả với cùng một r. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích R = rG P = Hs(rA)G + B Người nhận khóa công khai Dữ liệu ngẫu nhiên của người gửi r (A, B) Hình 4. Cấu trúc giao dịch tiêu chuẩn. 4. Alice gửi giao dịch. 5. Bob kiểm tra mọi giao dịch được chuyển bằng khóa riêng của mình (a, b) và tính P ′ = Hs(aR)G + B. Nếu giao dịch của Alice với Bob là người nhận nằm trong số đó, thì aR = arG = rA và P ′ = P. 7 14 Lưu ý rằng (các) tác giả đã làm rất tốt việc giữ cho thuật ngữ của họ rõ ràng xuyên suốt văn bản, nhưng đặc biệt là ở phần tiếp theo này. Sự tái sinh tiếp theo của bài viết này nhất thiết sẽ là khắt khe hơn rất nhiều. Trong văn bản họ gọi P là khóa công khai một lần của họ. Trong sơ đồ, họ gọi R là "Khóa công khai Tx" và P là "Khóa đích" của họ. Nếu tôi định viết lại điều này, tôi sẽ trình bày rất cụ thể một số thuật ngữ trước khi thảo luận về các phần này. Cái giếng này rất lớn. Xem trang 5. Ai chọn ell? Sơ đồ minh họa khóa công khai giao dịch R = rG, ngẫu nhiên và được chọn bởi người gửi, không phải là một phần của đầu ra Tx. Điều này là do nó có thể giống nhau đối với nhiều giao dịch cho nhiều người và không được sử dụng SAU ĐÓ để chi tiêu. Một R mới được tạo ra mỗi khi bạn muốn phát một giao dịch CryptoNote mới. Hơn nữa, R chỉ được sử dụng để kiểm tra xem bạn có phải là người nhận giao dịch hay không. Đó không phải là dữ liệu rác mà là rác đối với bất kỳ ai không có khóa riêng được liên kết với (A, B). Mặt khác, khóa Đích P = Hs(rA)G + B là một phần của đầu ra Tx. mọi người việc duyệt qua mọi dữ liệu của giao dịch đi qua phải kiểm tra P* được tạo bởi chính chúng với P này để xem liệu họ có sở hữu giao dịch chuyển tiếp này hay không. Bất kỳ ai có đầu ra giao dịch chưa chi tiêu (UTXO) sẽ có một loạt các chữ P này được sắp xếp với số lượng. Để chi tiêud, họ ký một số tin nhắn mới bao gồm P. Alice phải ký giao dịch này bằng (các) khóa riêng một lần được liên kết với (các) Khóa đích đầu ra giao dịch chưa được chi tiêu. Mỗi khóa đích do Alice sở hữu đều được trang bị với khóa riêng một lần cũng được sở hữu (có lẽ) bởi Alice. Mỗi lần Alice muốn gửi nội dung của khóa đích cho tôi, hoặc Bob, hoặc Brenda, hoặc Charlie hoặc Charlene, cô ấy sử dụng khóa riêng của mình để ký giao dịch. Khi nhận được giao dịch, tôi sẽ nhận được một giao dịch mới Khóa công khai Tx, khóa công khai Đích mới và tôi sẽ có thể khôi phục khóa riêng x một lần mới. Kết hợp khóa riêng một lần của tôi, x, với Đích công khai của giao dịch mới (các) khóa là cách chúng tôi gửi một giao dịch mới
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 15 Đầu ra giao dịch chưa chi tiêu ở đây trông như thế nào? Sơ đồ gợi ý rằng đầu ra giao dịch chỉ bao gồm hai điểm dữ liệu: số tiền và khóa đích. Nhưng đây không phải đủ vì khi tôi cố gắng sử dụng "đầu ra" này, tôi vẫn cần biết R=rG. Hãy nhớ rằng, r được người gửi chọn và R là a) được sử dụng để nhận dạng các ghi chú tiền điện tử đến là của bạn sở hữu và b) được sử dụng để tạo khóa riêng một lần được sử dụng để "yêu cầu" tiền điện tử của bạn. Phần này tôi không hiểu? Lấy lý thuyết "được rồi, chúng tôi có những thứ này chữ ký và giao dịch, và chúng tôi chuyển chúng qua lại" vào thế giới lập trình "được rồi, thông tin cụ thể nào tạo nên một cá nhân UTXO?" Cách tốt nhất để trả lời câu hỏi đó là đào sâu vào nội dung của mã hoàn toàn không có chú thích. Làm tốt lắm, nhóm bytecoin. Nhớ lại: khả năng liên kết có nghĩa là "có phải cùng một người đã gửi không?" và khả năng không liên kết có nghĩa là "đã làm như vậy người ta nhận được không?”. Vì vậy, một hệ thống có thể liên kết được hoặc không thể liên kết được, không thể liên kết được hoặc không thể liên kết được. Khó chịu, tôi biết. Vì vậy, khi Nic van Saberhagen ở đây nói "...các khoản thanh toán đến [được] liên kết với một lần các khóa công khai mà người xem không thể liên kết được", hãy xem ý anh ấy là gì. Đầu tiên, hãy xem xét tình huống trong đó Alice gửi cho Bob hai giao dịch riêng biệt từ cùng một địa chỉ đến cùng một địa chỉ. Trong vũ trụ Bitcoin, Alice đã phạm sai lầm rồi gửi từ cùng một địa chỉ và do đó giao dịch đã không đạt được mong muốn của chúng tôi về số lượng có hạn khả năng liên kết. Hơn nữa, vì cô ấy đã gửi tiền đến cùng một địa chỉ nên cô ấy đã thất bại trong mong muốn của chúng tôi. vì khả năng không liên kết được. Giao dịch bitcoin này vừa có thể (hoàn toàn) có thể liên kết vừa không thể hủy liên kết. Mặt khác, trong thế giới tiền điện tử, giả sử Alice gửi cho Bob một số tiền điện tử, sử dụng địa chỉ công cộng của Bob. Cô ấy chọn làm bộ khóa công khai khó hiểu của mình, tất cả đều được công khai chìa khóa trong khu vực tàu điện ngầm Washington DC. Alex tạo khóa công khai một lần bằng chính khóa của cô ấy thông tin và thông tin công khai của Bob. Cô ấy gửi tiền đi và bất kỳ người quan sát nào cũng sẽ chỉ có thể thu thập được "Ai đó từ khu vực đô thị Washington DC đã gửi 2,3 tiền điện tử tới địa chỉ công khai một lần XYZ123." Chúng tôi có quyền kiểm soát xác suất đối với khả năng liên kết ở đây, vì vậy chúng tôi sẽ gọi đây là "gần như không thể liên kết". Chúng tôi cũng chỉ thấy tiền khóa công khai một lần được gửi tới. Ngay cả khi chúng tôi nghi ngờ người nhận là Bob, chúng tôi không có khóa riêng của anh ấy và vì vậy chúng tôi không thể kiểm tra xem một giao dịch được chuyển thuộc về Bob chứ đừng nói đến việc tạo khóa riêng một lần của anh ấy để đổi tiền điện tử của anh ấy. Vậy cái này trên thực tế là hoàn toàn "không thể liên kết được". Vì vậy, đây là thủ thuật gọn gàng nhất trong tất cả. Ai muốn thực sự tin tưởng một MtGox khác? Chúng tôi có thể thoải mái lưu trữ một số lượng BTC trên Coinbase, nhưng bảo mật bitcoin cao nhất là một ví vật lý. Điều đó thật bất tiện. Trong trường hợp này, bạn có thể cho đi một nửa khóa riêng của mình một cách đáng tin cậy mà không ảnh hưởng đến tài khoản của bạn. khả năng tiêu tiền của bản thân. Khi làm điều này, tất cả những gì bạn đang làm là nói cho ai đó cách phá vỡ tính không liên kết. Cái khác các đặc tính của CN hoạt động giống như một loại tiền tệ được bảo toàn, như bằng chứng chống chi tiêu gấp đôi và không có gì.
-
Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một mô tả chung về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8
- Bob có thể khôi phục khóa riêng một lần tương ứng: x = Hs(aR) + b, do đó P = xG. Anh ta có thể sử dụng sản lượng này bất cứ lúc nào bằng cách ký một giao dịch với x. Giao dịch Khóa công khai Tx Đầu ra Tx Số tiền Khóa đích P ′ = Hs(aR)G + bG khóa công khai một lần x = Hs(aR) + b khóa riêng một lần Người nhận khóa riêng (a, b) R P' ?= P Hình 5. Kiểm tra giao dịch đến. Kết quả là Bob nhận được các khoản thanh toán đến, được liên kết với các khóa công khai một lần. không thể liên kết được đối với người xem. Một số lưu ý bổ sung: • Khi Bob “nhận ra” các giao dịch của mình (xem bước 5), thực tế anh ấy chỉ sử dụng một nửa số tiền của mình thông tin cá nhân: (a, B). Cặp này còn được gọi là khóa theo dõi, có thể được chuyển qua cho bên thứ ba (Carol). Bob có thể ủy quyền cho cô ấy xử lý các giao dịch mới. Bob không cần phải tin tưởng Carol một cách rõ ràng, vì cô ấy không thể khôi phục được khóa bí mật một lần. không có khóa riêng đầy đủ của Bob (a, b). Cách tiếp cận này hữu ích khi Bob thiếu băng thông hoặc sức mạnh tính toán (điện thoại thông minh, ví phần cứng, v.v.). • Trong trường hợp Alice muốn chứng minh cô ấy đã gửi giao dịch đến địa chỉ của Bob, cô ấy có thể tiết lộ r hoặc sử dụng bất kỳ loại giao thức không có kiến thức nào để chứng minh rằng cô ấy biết r (ví dụ bằng cách ký giao dịch với r). • Nếu Bob muốn có một địa chỉ tương thích với việc kiểm tra, nơi tất cả các giao dịch đến đều được có thể liên kết được, anh ta có thể xuất bản khóa theo dõi của mình hoặc sử dụng địa chỉ bị cắt ngắn. Địa chỉ đó chỉ đại diện cho một khóa ec công khai B và phần còn lại mà giao thức yêu cầu là suy ra từ nó như sau: a = Hs(B) và A = Hs(B)G. Trong cả hai trường hợp, mỗi người đều có thể “nhận ra” tất cả giao dịch đến của Bob, nhưng tất nhiên, không ai có thể chi tiêu các khoản tiền được bao bọc bên trong chúng mà không có khóa bí mật b. 4.4 Chữ ký đổ chuông một lần Giao thức dựa trên chữ ký vòng một lần cho phép người dùng đạt được khả năng hủy liên kết vô điều kiện. Thật không may, các loại chữ ký mật mã thông thường cho phép theo dõi các giao dịch người gửi và người nhận tương ứng. Giải pháp của chúng tôi cho sự thiếu sót này nằm ở việc sử dụng một chữ ký khác hơn những loại hiện đang được sử dụng trong hệ thống tiền điện tử. Đầu tiên chúng tôi sẽ cung cấp một gentất cả mô tả về thuật toán của chúng tôi mà không có tham chiếu rõ ràng đến tiền điện tử. Chữ ký vòng một lần chứa bốn thuật toán: (GEN, SIG, VER, LNK): GEN: lấy tham số công khai và xuất ra cặp ec (P, x) và khóa chung I. SIG: nhận thông điệp m, tập \(S'\) khóa công khai {Pi}i̸=s, một cặp (Ps, xs) và xuất ra chữ ký \(\sigma\) và một tập hợp \(S = \)S'\( \cup \{P_s\}\). 8 16 Có, vậy là bây giờ chúng ta có a) địa chỉ thanh toán và b) ID thanh toán. Một nhà phê bình có thể hỏi "chúng ta có thực sự cần phải làm điều này không? Rốt cuộc, nếu một thương gia nhận được 112.00678952 CN chính xác, và đó là đơn đặt hàng của tôi, và tôi có ảnh chụp màn hình hoặc biên nhận hay bất cứ thứ gì, phải không? mức độ chính xác điên rồ có đủ không?" Câu trả lời là "có lẽ, hầu hết thời gian, hàng ngày, giao dịch trực tiếp." Tuy nhiên, tình huống phổ biến hơn (đặc biệt là trong thế giới kỹ thuật số) là: một thương gia bán một tập hợp các đối tượng, mỗi đối tượng có một mức giá cố định. Giả sử vật A là 0,001 CN, vật B là 0,01 CN và vật C là 0,1 CN. Bây giờ, nếu người bán nhận được đơn hàng với giá 1.618 CN thì có rất nhiều (nhiều!) cách để sắp xếp đơn hàng cho khách hàng. Và do đó, nếu không có loại ID thanh toán nào đó, xác định cái gọi là đơn hàng "duy nhất" của một khách hàng với cái gọi là chi phí "duy nhất" của họ trật tự trở nên không thể. Buồn cười hơn nữa: nếu mọi thứ trong cửa hàng trực tuyến của tôi có giá chính xác là 1,0 CN, và tôi có được 1000 khách hàng mỗi ngày? Và bạn muốn chứng minh rằng bạn đã mua đúng 3 đồ vật hai tuần trước? Không có ID thanh toán? Chúc may mắn, anh bạn. Tóm tắt câu chuyện: Khi Bob công bố một địa chỉ thanh toán, cuối cùng anh ấy cũng có thể công bố một địa chỉ thanh toán. ID thanh toán (xem ví dụ: tiền gửi Poloniex XMR). Điều này khác với những gì được mô tả trong văn bản ở đây Alice là người tạo ID thanh toán. Phải có cách nào đó để Bob tạo ID thanh toán. (a,B) Hãy nhớ lại rằng khóa theo dõi (a,B) có thể được công bố; mất đi tính bí mật về giá trị của ý chí 'a' không vi phạm khả năng chi tiêu của bạn hoặc cho phép người khác ăn trộm của bạn (tôi nghĩ... điều đó sẽ có được chứng minh), nó sẽ chỉ cho phép mọi người xem tất cả các giao dịch đến. Một địa chỉ bị cắt ngắn, như được mô tả trong đoạn này, chỉ cần lấy phần "riêng tư" của khóa và tạo ra nó từ phần "công khai". Tiết lộ giá trị cho 'a' sẽ loại bỏ khả năng không liên kết nhưng sẽ bảo toàn phần còn lại của giao dịch. Tác giả muốn nói là "không thể hủy liên kết" vì không thể liên kết được đề cập đến người nhận và có thể liên kết được đề cập đến người gửi. Cũng rõ ràng là tác giả đã không nhận ra rằng có hai khía cạnh khác nhau về khả năng liên kết. Vì xét cho cùng, giao dịch là một đối tượng được định hướng trên biểu đồ nên sẽ có hai câu hỏi: "hai giao dịch này có đến cùng một người không?" và "hai giao dịch này sắp diễn ra từ cùng một người?” Đây là chính sách "không quay lại", theo đó thuộc tính không thể liên kết của CryptoNote được có điều kiện. Điều đó có nghĩa là Bob có thể chọn các giao dịch đến của mình để không thể hủy liên kết được sử dụng chính sách này. Đây là một tuyên bố mà họ chứng minh theo Mô hình Oracle ngẫu nhiên. Chúng ta sẽ đạt được điều đó; sự ngẫu nhiên Oracle có ưu và nhược điểm.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 17 Có lẽ điều này thật ngu ngốc nhưng phải cẩn thận khi kết hợp S và P_s. Nếu bạn chỉ nối thêm khóa công khai cuối cùng đến cuối, khả năng không liên kết bị hỏng vì bất kỳ ai kiểm tra các giao dịch chuyển qua chỉ có thể kiểm tra khóa công khai cuối cùng được liệt kê trong mỗi giao dịch và bùng nổ. Đó là khóa công khai liên quan đến người gửi. Vì vậy, sau khi hợp nhất, một bộ tạo số giả ngẫu nhiên phải được được sử dụng để hoán vị các khóa công khai đã chọn. "...cho đến khi chủ sở hữu tạo ra chữ ký thứ hai bằng cách sử dụng cùng một cặp khóa." Tôi ước (các) tác giả? sẽ giải thích chi tiết về điều này. Tôi tin rằng điều này có nghĩa là "hãy đảm bảo rằng mỗi khi bạn chọn một bộ khóa công khai để làm xáo trộn với chính mình, bạn chọn một bộ chìa khóa hoàn toàn mới không có hai chiếc chìa khóa nào giống nhau." Điều này có vẻ giống như một điều kiện khá mạnh để đặt vào tình trạng không thể liên kết được. Có lẽ "bạn chọn một bộ ngẫu nhiên mới từ tất cả các khóa có thể" với giả định rằng, mặc dù các giao lộ không tầm thường chắc chắn sẽ xảy ra, chúng sẽ không xảy ra thường xuyên. Dù bằng cách nào, tôi cần phải tìm hiểu sâu hơn về tuyên bố này. Điều này đang tạo ra chữ ký vòng. Bằng chứng không có kiến thức thật tuyệt vời: Tôi thách bạn chứng minh cho tôi thấy rằng bạn biết một bí mật mà không tiết lộ bí mật. Ví dụ: giả sử chúng ta đang ở lối vào của một hang động hình bánh rán, và ở phía sau hang động (ngoài tầm nhìn từ lối vào) là một ocánh cửa mới mà bạn khẳng định bạn có chìa khóa. Nếu bạn đi một hướng, nó luôn cho phép bạn đi qua, nhưng nếu bạn đi hướng hướng khác, bạn cần một chìa khóa. Nhưng bạn thậm chí còn không muốn cho tôi xem chìa khóa chứ đừng nói đến cho tôi thấy rằng nó mở được cánh cửa. Nhưng bạn muốn chứng minh cho tôi thấy rằng bạn biết cách mở cửa. Trong cài đặt tương tác, tôi tung đồng xu. Đầu ở bên trái, đuôi ở bên phải và bạn đi xuống hang động hình bánh rán theo cách đồng xu hướng dẫn bạn. Ở phía sau, ngoài tầm nhìn của tôi, bạn mở cửa để quay lại phía bên kia. Chúng tôi lặp lại thí nghiệm tung đồng xu cho đến khi tôi hài lòng rằng bạn có chìa khóa. Nhưng đó rõ ràng là bằng chứng không có kiến thức TƯƠNG TÁC. Có những phiên bản không tương tác mà bạn và tôi không bao giờ phải giao tiếp; Bằng cách này, không kẻ nghe trộm nào có thể can thiệp được. http://en.wikipedia.org/wiki/Zero-knowledge_proof Điều này trái ngược với định nghĩa trước đó.
VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 VER: nhận thông điệp m, tập S, chữ ký \(\sigma\) và xuất ra “true” hoặc “false”. LNK: lấy tập I = {Ii}, chữ ký \(\sigma\) và xuất ra “được liên kết” hoặc “độc lập”. Ý tưởng đằng sau giao thức này khá đơn giản: người dùng tạo ra một chữ ký có thể được được kiểm tra bằng một bộ khóa công khai chứ không phải bằng một khóa chung duy nhất. Danh tính của người ký là không thể phân biệt được với những người dùng khác có khóa chung trong bộ cho đến khi chủ sở hữu tạo ra chữ ký thứ hai sử dụng cùng một cặp khóa. Khóa riêng x0 \(\cdots\) xi \(\cdots\) xn Khóa công khai P0 \(\cdots\) Pi \(\cdots\) Pn Nhẫn Chữ ký ký tên xác minh Hình 6. Ẩn danh chữ ký vòng. GEN: Người ký chọn một khóa bí mật ngẫu nhiên \(x \in [1, l - 1]\) và tính toán tương ứng khóa công khai P = xG. Ngoài ra, anh ta còn tính một khóa công khai khác I = xHp(P) mà chúng ta sẽ gọi là “hình ảnh quan trọng”. SIG: Người ký tạo chữ ký vòng một lần với kiến thức không tương tác chứng minh bằng cách sử dụng các kỹ thuật từ [21]. Anh ta chọn một tập con ngẫu nhiên \(S'\) của n từ những người dùng khác khóa công khai Pi, cặp khóa riêng của anh ta (x, P) và ảnh khóa I. Giả sử 0 n là chỉ số bí mật của người ký trong S (để khóa công khai của anh ta là Ps). Anh ấy chọn ngẫu nhiên một {qi | tôi = 0 . . . n} và {wi | tôi = 0 . . . n, i ̸= s} từ (1 . . . l) và áp dụng các phép biến đổi sau: Lý = ( khí công, nếu tôi = s qiG + wiPi, nếu tôi ̸= s Ri = ( qiHp(Pi), nếu tôi = s qiHp(Pi) + wiI, nếu tôi ̸= s Bước tiếp theo là nhận thử thách không tương tác: c = Hs(m, L1, . . , Ln, R1, . . . , Rn) Cuối cùng người ký tính toán phản hồi: ci = , nếu tôi ̸= s c − nP tôi=0 ci mod tôi, nếu tôi = s ri = ( khí, nếu tôi ̸= s qs −csx mod tôi, nếu tôi = s Chữ ký thu được là \(\sigma\) = (I, c1, . . , cn, r1, . . . , rn). 9 18 Toàn bộ lĩnh vực này là bất khả tri về tiền điện tử, chỉ mô tả thuật toán chữ ký vòng mà không cần tham chiếu đến tiền tệ. Tôi nghi ngờ một số ký hiệu nhất quán với phần còn lại của bài báo, mặc dù. Ví dụ: x là khóa bí mật "ngẫu nhiên" được chọn trong GEN, cung cấp khóa chung P và hình ảnh khóa công khai I. Giá trị này của x là giá trị Bob tính toán ở phần 6 trang 8. Vậy đây là bắt đầu làm sáng tỏ một số nhầm lẫn từ mô tả trước đó. Điều này thật tuyệt vời; tiền không được chuyển từ "địa chỉ công cộng của Alice sang địa chỉ công cộng của Bob địa chỉ." Nó đang được chuyển từ địa chỉ một lần sang địa chỉ một lần. Vì vậy, theo một nghĩa nào đó, đây là cách mọi thứ hoạt động. Nếu Alex có một số tiền điện tử vì ai đó đã gửi chúng cho cô ấy, điều này có nghĩa là cô ấy có khóa riêng cần thiết để gửi chúng cho Bob. Cô ấy sử dụng trao đổi Diffie-Hellman sử dụng thông tin công khai của Bob để tạo địa chỉ một lần mới và các tiền điện tử được chuyển đến địa chỉ đó. Bây giờ, do trao đổi DH (có lẽ là an toàn) đã được sử dụng để tạo địa chỉ một lần mới mà Alex đã gửi CN của cô ấy tới, Bob là người duy nhất có khóa riêng cần thiết để lặp lại ở trên. Vậy bây giờ Bob là Alex. http://en.wikipedia.org/wiki/Piecewise#Notation_and_interpretation Tổng kết nên được lập chỉ mục trên j chứ không phải i. Mỗi c_i là rác ngẫu nhiên (vì w_i là ngẫu nhiên) ngoại trừ cái mông c_iđược liên kết với khóa thực tế liên quan đến chữ ký này. Giá trị của c là hash của thông tin trước đó. Tuy nhiên, tôi nghĩ rằng điều này có thể chứa một lỗi đánh máy tệ hơn việc sử dụng lại chỉ mục 'i', vì c_s dường như được xác định một cách ngầm định, không rõ ràng. Thật vậy, nếu chúng ta tin vào phương trình này thì chúng ta xác định được rằng c_s = (1/2)c - (1/2) tổng_i neq s c_i. Tức là hash trừ đi cả đống số ngẫu nhiên. Mặt khác, nếu phép tính tổng này được đọc là "c_s = (c - sum_j neq s c_j) mod l", sau đó chúng tôi lấy hash thông tin trước đó của chúng tôi, tạo ra một loạt các số ngẫu nhiên, trừ tất cả các số ngẫu nhiên đó khỏi hash và kết quả là c_s. Điều này có vẻ là điều gì "nên" xảy ra theo trực giác của tôi và phù hợp với bước xác minh ở trang 10. Nhưng trực giác không phải là toán học. Tôi sẽ tìm hiểu sâu hơn về điều này. Tương tự như trước; tất cả những thứ này sẽ là rác ngẫu nhiên ngoại trừ thứ liên quan đến thực tế khóa công khai của người ký x. Ngoại trừ lần này, đây là những gì tôi mong đợi hơn từ cấu trúc: r_i là ngẫu nhiên đối với i!=s và r_s chỉ được xác định bởi bí mật x và các giá trị được lập chỉ mục s của q_i và c_i.
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L’ i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 19 Lúc này, tôi vô cùng bối rối. Alex nhận được tin nhắn M có chữ ký (I,c_1, ..., c_n, r_1, ..., r_n) và danh sách công khai phím S. và cô ấy chạy VER. Điều này sẽ tính toán L_i’ và R_i’ Điều này xác minh rằng c_s = c - sum_i neq s c_i ở trang trước. Lúc đầu tôi RẤT (ha) bối rối. Bất kỳ ai cũng có thể tính L_i’ và R_i’. Thật vậy, mỗi r_i và c_i đã được công bố ở phần chữ ký sigma cùng với giá trị của I. Tập S = P_i của tất cả các khóa công khai cũng đã được công bố. Vì vậy, bất cứ ai đã nhìn thấy sigma và tập hợp khóa S = P_i sẽ nhận cùng giá trị cho L_i’ và R_i’ và do đó kiểm tra chữ ký. Nhưng rồi tôi nhớ ra phần này chỉ mô tả thuật toán chữ ký chứ không phải "kiểm tra nếu đã ký, hãy kiểm tra xem đã GỬI CHO TÔI chưa, và nếu vậy thì hãy tiêu tiền." Đây ĐƠN GIẢN là phần chữ ký của trò chơi. Tôi muốn đọc Phụ lục A khi tôi đến đó. Tôi muốn xem bản so sánh toàn diện giữa từng hoạt động của Cryptonote với Bitcoin. Ngoài ra, điện/sự bền vững. Những phần nào của thuật toán tạo thành "đầu vào" ở đây? Tôi tin rằng đầu vào giao dịch là Số tiền và tập hợp UTXO có tổng số tiền lớn hơn số tiền Số tiền. Điều này không rõ ràng. "Mục tiêu ẩn nấp?" Tôi đã nghĩ về điều này được vài phút rồi nhưng tôi vẫn chưa ý tưởng mù mờ nhất về ý nghĩa của nó. Một cuộc tấn công chi tiêu gấp đôi chỉ có thể được thực hiện bằng cách thao túng khóa đã sử dụng của nút bộ hình ảnh \(I\). "Mức độ mơ hồ" = n nhưng tổng số khóa công khai có trong giao dịch là n+1. Điều đó có nghĩa là, mức độ mơ hồ sẽ là "bạn muốn có bao nhiêu người KHÁC tham gia" đám đông à?" Theo mặc định, câu trả lời có thể sẽ là "càng nhiều càng tốt".
VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ bảo mật mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa dùng một lần (pi, Pi) và lưu nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 VER: Người xác minh kiểm tra chữ ký bằng cách áp dụng các phép biến đổi nghịch đảo: ( L' i = riG + ciPi R’ i = riHp(Pi) + ciI Cuối cùng, người xác minh sẽ kiểm tra xem nP tôi=0 ci ?= Hs(m, L′ 0, . . . , L' n, R' 0, . . . , R′ n) mod l Nếu đẳng thức này đúng, trình xác minh sẽ chạy thuật toán LNK. Ngược lại, người xác minh sẽ từ chối chữ ký. LNK: Trình xác minh kiểm tra xem liệu tôi có được sử dụng trong các chữ ký trước đây hay không (các giá trị này được lưu trong tập I). Việc sử dụng nhiều lần ngụ ý rằng hai chữ ký được tạo ra dưới cùng một khóa bí mật. Ý nghĩa của giao thức: bằng cách áp dụng phép biến đổi L, người ký chứng minh rằng mình biết sao cho x có ít nhất một Pi = xG. Để làm cho bằng chứng này không thể lặp lại, chúng tôi giới thiệu hình ảnh chính vì I = xHp(P). Người ký sử dụng cùng các hệ số (ri, ci) để chứng minh gần như cùng một tuyên bố: anh ta biết x sao cho ít nhất một \(H_p(P_i) = I \cdot x^{-1}\). Nếu ánh xạ \(x \to I\) là một phép tiêm: 1. Không ai có thể khôi phục khóa chung từ hình ảnh khóa và xác định người ký; 2. Người ký không được phép ký hai chữ ký có chữ I khác nhau và cùng chữ x. Phân tích bảo mật đầy đủ được cung cấp trong Phụ lục A. 4,5 Giao dịch CryptoNote tiêu chuẩn Bằng cách kết hợp cả hai phương pháp (khóa công khai không thể liên kết và chữ ký vòng không thể theo dõi), Bob đạt được mức độ riêng tư mới so với sơ đồ Bitcoin ban đầu. Nó yêu cầu anh ta chỉ lưu trữ một khóa riêng (a, b) và xuất bản (A, B) để bắt đầu nhận và gửi các giao dịch ẩn danh. Trong khi xác thực mỗi giao dịch, Bob chỉ thực hiện thêm hai phép nhân đường cong elip và một phép cộng cho mỗi đầu ra để kiểm tra xem giao dịch có thuộc về anh ta hay không. Đối với mỗi anh ấy đầu ra Bob khôi phục cặp khóa một lần (pi, Pi) và stquặng nó vào ví của mình. Mọi đầu vào đều có thể được chứng minh một cách gián tiếp là có cùng một chủ sở hữu chỉ khi chúng xuất hiện trong một giao dịch duy nhất. trong trên thực tế, mối quan hệ này khó thiết lập hơn nhiều do chữ ký vòng một lần. Với chữ ký vòng Bob có thể ẩn mọi đầu vào của người khác một cách hiệu quả; tất cả có thể người chi tiêu sẽ có thể trang bị được, ngay cả chủ sở hữu trước đó (Alice) cũng không có nhiều thông tin hơn bất kỳ người quan sát nào. Khi ký giao dịch của mình, Bob chỉ định n đầu ra nước ngoài với số tiền tương đương với số tiền của anh ấy. đầu ra, trộn tất cả chúng mà không có sự tham gia của người dùng khác. Bản thân Bob (cũng như bất kỳ ai khác) không biết liệu bất kỳ khoản thanh toán nào trong số này đã được chi tiêu hay chưa: một đầu ra có thể được sử dụng trong hàng nghìn chữ ký như một yếu tố mơ hồ và không bao giờ là mục tiêu che giấu. gấp đôi kiểm tra chi tiêu xảy ra trong giai đoạn LNK khi kiểm tra bộ ảnh chính đã sử dụng. Bob có thể tự mình chọn mức độ mơ hồ: n = 1 nghĩa là xác suất anh ta có chi tiêu đầu ra có xác suất 50%, n = 99 cho 1%. Kích thước của chữ ký kết quả tăng lên tuyến tính như O(n+1), do đó, tính ẩn danh được cải thiện sẽ khiến Bob phải trả thêm phí giao dịch. Anh ấy cũng có thể đặt n = 0 và làm cho chữ ký vòng của anh ta chỉ bao gồm một phần tử, tuy nhiên điều này sẽ ngay lập tức tiết lộ anh ta là một người chi tiêu. 10 20 Điều này thật thú vị; trước đó, chúng tôi đã cung cấp một cách để người nhận, Bob, thực hiện tất cả việc THU NHẬP giao dịch không thể hủy liên kết bằng cách chọn một nửa số khóa riêng của anh ta một cách xác định hoặc bằng cách xuất bản một nửa khóa riêng của mình dưới dạng công khai. Đây là một loại chính sách không quay trở lại. Ở đây, chúng ta thấy một cách để người gửi, Alex, chọn một giao dịch gửi đi duy nhất có thể liên kết được, nhưng trên thực tế, điều này tiết lộ Alex là người gửi toàn bộ mạng lưới. Đây KHÔNG phải là một loại chính sách không thể quay lại. Đây là giao dịch theo giao dịch. Có chính sách thứ ba không? Người nhận, Bob, có thể tạo ID thanh toán duy nhất cho Alex không? không bao giờ thay đổi, có lẽ sử dụng trao đổi Diffie-Hellman? Nếu có ai bao gồm khoản thanh toán đó ID được gói ở đâu đó trong giao dịch của cô ấy tới địa chỉ của Bob, nó phải đến từ Alex. Bằng cách này, Alex không cần phải tiết lộ bản thân với toàn bộ mạng lưới bằng cách chọn liên kết một địa chỉ cụ thể giao dịch, nhưng cô ấy vẫn có thể nhận dạng chính mình với người mà cô ấy gửi tiền. Đây không phải là điều Poloniex làm sao?
Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa cách tiếp cận này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 Giao dịch đầu vào TX Đầu ra0 . . . đầu ra . . . đầu ra Hình ảnh chính Chữ ký Chữ ký nhẫn Khóa đích Đầu ra1 Khóa đích đầu ra Giao dịch nước ngoài Đầu ra của người gửi Khóa đích Cặp khóa dùng một lần Một lần khóa riêng Tôi = xHp(P) P, x Hình 7. Tạo chữ ký vòng trong một giao dịch tiêu chuẩn. 5 Bằng chứng công việc bình đẳng Trong phần này, chúng tôi đề xuất và xây dựng thuật toán proof-of-work mới. Mục tiêu chính của chúng tôi là thu hẹp khoảng cách giữa các công cụ khai thác CPU (đa số) và GPU/FPGA/ASIC (thiểu số). Đó là thích hợp là một số người dùng có thể có lợi thế nhất định so với những người khác, nhưng khoản đầu tư của họ ít nhất phải tăng trưởng tuyến tính với sức mạnh. Tổng quát hơn, sản xuất các thiết bị có mục đích đặc biệt phải càng ít lợi nhuận càng tốt. 5.1 Công trình liên quan Giao thức Bitcoin proof-of-work ban đầu sử dụng chức năng định giá sử dụng nhiều CPU SHA-256. Nó chủ yếu bao gồm các toán tử logic cơ bản và chỉ dựa vào tốc độ tính toán của do đó bộ xử lý hoàn toàn phù hợp cho việc triển khai đa lõi/băng tải. Tuy nhiên, máy tính hiện đại không bị giới hạn bởi số lượng thao tác mỗi giây, mà còn theo kích thước bộ nhớ. Mặc dù một số bộ xử lý có thể nhanh hơn đáng kể so với những bộ xử lý khác [8], kích thước bộ nhớ ít có khả năng khác nhau giữa các máy. Hàm giá giới hạn theo bộ nhớ lần đầu tiên được giới thiệu bởi Abadi và cộng sự và được định nghĩa là “các hàm có thời gian tính toán bị chi phối bởi thời gian truy cập bộ nhớ” [15]. Ý tưởng chính là xây dựng một thuật toán phân bổ một khối dữ liệu lớn (“scratchpad”) trong bộ nhớ có thể được truy cập tương đối chậm (ví dụ: RAM) và “truy cập vào chuỗi vị trí không thể đoán trước” bên trong nó. Một khối phải đủ lớn để bảo quản dữ liệu có lợi hơn việc tính toán lại nó cho mỗi lần truy cập. Thuật toán cũng nên ngăn chặn sự song song bên trong, do đó N luồng đồng thời sẽ cần bộ nhớ gấp N lần cùng một lúc. Dwork và cộng sự [22] đã nghiên cứu và chính thức hóa phương pháp này khiến họ đề xuất một phương pháp khác biến thể của hàm định giá: “Mbound”. Một tác phẩm nữa thuộc về F. Coelho [20], người 11 21 Bề ngoài, đây là UTXO của chúng tôi: số tiền và khóa đích. Nếu Alex là người xây dựng giao dịch tiêu chuẩn này và gửi cho Bob thì Alex cũng có khóa riêng đến từng điều này. Tôi rất thích sơ đồ này vì nó trả lời một số câu hỏi trước đó. Một đầu vào Txn bao gồm của một tập hợp các đầu ra Txn và một kehình ảnh y. Sau đó nó được ký bằng chữ ký vòng, bao gồm tất cả trong số các khóa riêng mà Alex sở hữu đối với tất cả các giao dịch nước ngoài được gói gọn trong thỏa thuận. các Đầu ra Txn bao gồm một số tiền và một khóa đích. Người nhận giao dịch có thể, theo ý muốn, tạo khóa riêng một lần của họ như được mô tả trước đó trong bài viết để sử dụng tiền. Sẽ rất thú vị khi tìm hiểu xem mã này khớp với mã thực tế đến mức nào... Không, Nic van Saberhagen mô tả một cách lỏng lẻo một số thuộc tính của thuật toán bằng chứng công việc, mà không thực sự mô tả thuật toán đó. Bản thân thuật toán CryptoNight sẽ YÊU CẦU phân tích sâu. Khi tôi đọc điều này, tôi lắp bắp. Đầu tư có nên tăng trưởng ít nhất là tuyến tính với sức mạnh hay nên đầu tư tăng trưởng nhiều nhất tuyến tính với sức mạnh? Và rồi tôi nhận ra; Tôi, với tư cách là một thợ mỏ hoặc một nhà đầu tư, thường nghĩ "tôi có thể nhận được bao nhiêu năng lượng" để đầu tư à?" chứ không phải "cần đầu tư bao nhiêu cho một lượng điện năng cố định?" Tất nhiên, biểu thị đầu tư là I và lũy thừa là P. Nếu I(P) là đầu tư là hàm của lũy thừa và P(I) là quyền lực như một hàm của đầu tư, chúng sẽ nghịch đảo với nhau (bất cứ nơi nào có thể tồn tại nghịch đảo). Và nếu I(P) nhanh hơn tuyến tính thì P(I) chậm hơn tuyến tính. Do đó, sẽ có một tỷ lệ lợi nhuận giảm cho các nhà đầu tư. Điều đó có nghĩa là, điều tác giả muốn nói ở đây là: "chắc chắn rồi, khi bạn đầu tư nhiều hơn, bạn sẽ nhận được nhiều hơn." quyền lực. Nhưng chúng ta nên cố gắng làm cho tỷ lệ lợi nhuận giảm đi." Cuối cùng, các khoản đầu tư vào CPU sẽ đạt mức cận tuyến tính; câu hỏi đặt ra là liệu các tác giả đã thiết kế một thuật toán POW sẽ buộc ASIC cũng phải làm điều này. Liệu một "tiền tệ tương lai" giả định có nên luôn được khai thác với nguồn tài nguyên chậm nhất/hạn chế nhất không? Bài báo của Abadi và cộng sự (có một số kỹ sư của Google và Microsoft là tác giả) là, về cơ bản, sử dụng thực tế là trong vài năm qua kích thước bộ nhớ đã nhỏ hơn nhiều sự khác biệt giữa các máy so với tốc độ bộ xử lý và với tỷ lệ công suất đầu tư cao hơn tuyến tính. Trong một vài năm nữa, điều này có thể phải được đánh giá lại! Mọi thứ đều là một cuộc chạy đua vũ trang... Việc xây dựng hàm hash là khó; việc xây dựng hàm hash thỏa mãn các ràng buộc này có vẻ khó khăn hơn. Bài viết này dường như không có lời giải thích nào về thực tế hashing thuật toán CryptoNight. Tôi nghĩ đó là cách triển khai SHA-3 sử dụng bộ nhớ cứng, dựa trên trên các bài đăng trên diễn đàn nhưng tôi không biết... và đó chính là vấn đề. Nó phải được giải thích.
đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), trong đó N là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 đề xuất giải pháp hiệu quả nhất: “Hokkaido”. Theo hiểu biết của chúng tôi, công việc cuối cùng dựa trên ý tưởng tìm kiếm giả ngẫu nhiên trong một mảng lớn là thuật toán được gọi là “mã hóa” của C. Percival [32]. Không giống như các chức năng trước đó, nó tập trung vào dẫn xuất khóa chứ không phải hệ thống proof-of-work. Bất chấp thực tế này, tiền điện tử có thể phục vụ mục đích của chúng tôi: nó hoạt động tốt như một hàm định giá trong bài toán chuyển đổi một phần hash chẳng hạn như SHA-256 trong Bitcoin. Hiện tại, tiền điện tử đã được áp dụng trong Litecoin [14] và một số nhánh Bitcoin khác. Tuy nhiên, việc triển khai nó không thực sự bị giới hạn về bộ nhớ: tỷ lệ “thời gian truy cập bộ nhớ/tổng thể time” không đủ lớn vì mỗi phiên bản chỉ sử dụng 128 KB. Điều này cho phép các công cụ khai thác GPU hiệu quả hơn khoảng 10 lần và tiếp tục để lại khả năng tạo ra tương đối thiết bị khai thác rẻ tiền nhưng hiệu quả cao. Hơn nữa, bản thân việc xây dựng mật mã cho phép trao đổi tuyến tính giữa kích thước bộ nhớ và Tốc độ CPU do thực tế là mọi khối trong bảng ghi nhớ chỉ bắt nguồn từ khối trước đó. Ví dụ: bạn có thể lưu trữ từng khối thứ hai và tính toán lại các khối khác một cách lười biếng, tức là chỉ khi nó trở nên cần thiết. Các chỉ mục giả ngẫu nhiên được giả định là phân bố đồng đều, do đó giá trị kỳ vọng của việc tính toán lại các khối bổ sung là 1 \(2 \cdot N\), ở đâuN là số của các lần lặp. Tổng thời gian tính toán tăng ít hơn một nửa vì cũng có các hoạt động độc lập với thời gian (thời gian không đổi) chẳng hạn như chuẩn bị bảng ghi nhớ và hash bật mỗi lần lặp. Tiết kiệm 2/3 chi phí bộ nhớ 1 \(3 \cdot N\) + 1 3 \(\cdot\) \(2 \cdot N\) = N phép tính lại bổ sung; Kết quả 10/9 1 \(10 \cdot N\)+ . . . + 1 \(10 \cdot 9 \cdot N\) = 4,5N. Dễ dàng chứng minh rằng chỉ lưu trữ 1 s của tất cả các khối tăng thời gian ít hơn hệ số s−1 2 . Điều này ngụ ý rằng một máy có CPU Nhanh hơn 200 lần so với các chip hiện đại, chỉ có thể lưu trữ 320 byte của bảng ghi nhớ. 5.2 Thuật toán đề xuất Chúng tôi đề xuất thuật toán giới hạn bộ nhớ mới cho hàm định giá proof-of-work. Nó dựa vào truy cập ngẫu nhiên vào bộ nhớ chậm và nhấn mạnh sự phụ thuộc vào độ trễ. Ngược lại với việc mã hóa mọi khối mới (dài 64 byte) phụ thuộc vào tất cả các khối trước đó. Kết quả là một giả thuyết “Trình tiết kiệm bộ nhớ” sẽ tăng tốc độ tính toán của anh ấy theo cấp số nhân. Thuật toán của chúng tôi yêu cầu khoảng 2 Mb cho mỗi phiên bản vì những lý do sau: 1. Nó phù hợp với bộ đệm L3 (mỗi lõi) của bộ xử lý hiện đại, sẽ trở thành xu hướng chủ đạo trong một vài năm nữa; 2. Một megabyte bộ nhớ trong là kích thước gần như không thể chấp nhận được đối với đường dẫn ASIC hiện đại; 3. GPU có thể chạy hàng trăm phiên bản đồng thời, nhưng chúng bị hạn chế theo những cách khác: Bộ nhớ GDDR5 chậm hơn bộ nhớ đệm CPU L3 và đáng chú ý về băng thông của nó, không phải tốc độ truy cập ngẫu nhiên 4. Việc mở rộng đáng kể bàn di chuột sẽ đòi hỏi phải tăng số lần lặp lại, trong đó lần lượt ngụ ý sự gia tăng thời gian tổng thể. Các cuộc gọi “nặng” trong mạng p2p không tin cậy có thể dẫn đến các lỗ hổng nghiêm trọng vì các nút có nghĩa vụ kiểm tra proof-of-work của mọi khối mới. Nếu một nút dành một lượng thời gian đáng kể cho mỗi lần đánh giá hash, nó có thể dễ dàng Bị tấn công DDoS bởi hàng loạt đối tượng giả mạo có dữ liệu công việc tùy ý (giá trị nonce). 12 22 Đừng bận tâm, đó là một đồng tiền điện tử? Thuật toán ở đâu? Tất cả những gì tôi thấy là một quảng cáo. Đây là nơi Cryptonote, nếu thuật toán PoW của họ đáng giá, sẽ thực sự tỏa sáng. Nó không phải thực sự là SHA-256, nó không hẳn là mã hóa. Nó mới, bị ràng buộc về bộ nhớ và không đệ quy.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 23 Đơn vị nguyên tử. Tôi thích điều đó. Đây có phải là tương đương với Satoshi không? Nếu vậy thì điều đó có nghĩa là sẽ có 185 tỷ tiền điện tử. Tôi biết điều này cuối cùng phải được điều chỉnh trong một vài trang hoặc có thể có lỗi đánh máy? Nếu phần thưởng cơ bản là "tất cả các đồng xu còn lại" thì chỉ cần một khối là đủ để nhận được tất cả các đồng xu. Instamine. Mặt khác, nếu điều này được cho là tỷ lệ thuận theo một cách nào đó với sự khác biệt về thời gian giữa hiện tại và một số ngày chấm dứt sản xuất tiền xu? Điều đó sẽ có ý nghĩa. Ngoài ra, trong thế giới của tôi, hai dấu hiệu lớn hơn như thế này có nghĩa là "lớn hơn nhiều". Có phải tác giả có thể có ý nghĩa gì khác? Nếu việc điều chỉnh độ khó xảy ra ở mỗi khối thì kẻ tấn công có thể có một trang trại rất lớn máy móc khai thác và tắt trong những khoảng thời gian được lựa chọn cẩn thận. Điều này có thể gây ra một vụ nổ hỗn loạn (hoặc sụp đổ về 0) một cách khó khăn nếu các công thức điều chỉnh độ khó không được giảm bớt một cách thích hợp. Không còn nghi ngờ gì nữa, phương pháp của Bitcoin không phù hợp để tính toán lại nhanh chóng, nhưng ý tưởng về quán tính trong những hệ thống này cần phải được chứng minh chứ không phải được coi là đương nhiên. Hơn nữa, dao động trong mạng không nhất thiết là một vấn đề trừ khi nó dẫn đến sự dao động của giá trị bề ngoài nguồn cung tiền xu - và việc có độ khó thay đổi rất nhanh có thể gây ra "sự điều chỉnh quá mức". Thời gian sử dụng, đặc biệt là trong một khoảng thời gian ngắn như vài phút, sẽ tỷ lệ thuận với "tổng thời gian". số khối được tạo trên mạng." Hằng số tỷ lệ sẽ tự tăng lên theo thời gian, có lẽ sẽ tăng theo cấp số nhân nếu CN thành công. Có thể là một ý tưởng tốt hơn nếu bạn chỉ cần điều chỉnh độ khó để giữ “tổng số khối được tạo trên mạng kể từ khi khối cuối cùng được thêm vào chuỗi chính" trong một số giá trị không đổi hoặc với biến thể giới hạn hoặc một cái gì đó như thế. Nếu một thuật toán thích ứng được tính toán dễ thực hiện có thể được xác định, điều này dường như sẽ giải quyết được vấn đề. Nhưng sau đó, nếu chúng tôi sử dụng phương pháp đó, ai đó có trang trại khai thác lớn có thể đóng cửa trang trại của họ trong vài giờ và bật lại. Trong vài khối đầu tiên, trang trại đó sẽ tạo ra ngân hàng. Vì vậy, trên thực tế, phương pháp này sẽ đưa ra một điểm thú vị: việc khai thác trở thành (trung bình) một thua trò chơi mà không có ROI, đặc biệt khi có nhiều người truy cập mạng hơn. Nếu độ khó khai thác mạng được theo dõi rất chặt chẽ hashtỷ lệ, bằng cách nào đó tôi nghi ngờ mọi người sẽ khai thác nhiều như họ hiện tại làm. Hoặc mặt khác, thay vì giữ cho trang trại khai thác của họ hoạt động 24/7, họ có thể biến chúng thành bật trong 6 giờ, tắt trong 2 giờ, bật trong 6 giờ, tắt trong 2 giờ, hoặc tương tự. Chỉ cần chuyển sang đồng tiền khác trong vài giờ, đợi cho độ khó giảm xuống, sau đó nhảy trở lại để nhận thêm một ít các khối lợi nhuận khi mạng thích ứng. Và bạn biết gì không? Điều này thực sự có lẽ một trong những kịch bản khai thác tốt hơn mà tôi đã đặt tâm trí vào... Đây có thể là một vòng tròn, nhưng nếu thời gian tạo khối trung bình là khoảng một phút, chúng ta có thể sử dụng số khối làm đại diện cho "thời gian đã sử dụng?"
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 24 Được rồi, vậy là chúng ta có blockchain và mỗi khối có dấu thời gian NGOÀI RA để chỉ đơn giản là ra lệnh. Điều này rõ ràng được chèn vào đơn giản chỉ để điều chỉnh độ khó, bởi vì dấu thời gian được rất không đáng tin cậy, như đã đề cập. Chúng ta có được phép có dấu thời gian mâu thuẫn trong chuỗi không? Nếu Khối A xuất hiện trước Khối B trong chuỗi và mọi thứ đều nhất quán về mặt tài chính, nhưng Khối A dường như được tạo ra sau Khối B? Bởi vì, có lẽ, ai đó đã sở hữu một phần lớn của mạng? Thế có ổn không? Có lẽ là do tình hình tài chính không được cải thiện. Được rồi, vì vậy tôi ghét sự tùy tiện này "chỉ 80% khối là hợp pháp cho blockchain chính" cách tiếp cận. Nó nhằm mục đích ngăn chặn những kẻ nói dối điều chỉnh dấu thời gian của họ? Nhưng bây giờ, nó bổ sung thêm khuyến khích mọi người nói dối về dấu thời gian của họ và chỉ chọn mức trung bình. Hãy xác định. Có nghĩa là "đối với khối này, chỉ bao gồm các giao dịch bao gồm phí lớn hơn hơn p%, tốt nhất là với mức phí lớn hơn 2p%" hay đại loại như thế? Họ có ý gì khi nói không có thật? Nếu giao dịch nhất quán với lịch sử trong quá khứ của blockchain và giao dịch bao gồm các khoản phí làm hài lòng người khai thác, điều đó chưa đủ sao? Vâng, không, không nhất thiết. Nếu không tồn tại kích thước khối tối đa thì sẽ không có gì để giữ người dùng độc hại từ việc đơn giản tải lên một khối giao dịch khổng lồ cho chính mình cùng một lúc chỉ để làm chậm lại mạng lưới. Quy tắc cốt lõi về kích thước khối tối đa ngăn cản mọi người đưa một lượng lớn rác vào dữ liệu trên blockchain cùng một lúc chỉ để làm chậm quá trình. Nhưng một quy định như vậy chắc chắn phải hãy thích ứng - chẳng hạn như trong mùa Giáng sinh, chúng ta có thể dự kiến lưu lượng truy cập sẽ tăng đột biến và kích thước khối sẽ trở nên rất lớn và ngay sau đó, kích thước khối sẽ giảm xuống một lần nữa. Vì vậy, chúng ta cần a) một loại giới hạn thích ứng nào đó hoặc b) một giới hạn đủ lớn để 99% đỉnh Giáng sinh hợp lý không phá vỡ giới hạn. Tất nhiên, điều thứ hai là không thể ước tính - ai biết liệu một loại tiền tệ có được ưa chuộng hay không? Tốt hơn là hãy làm cho nó thích ứng và không phải lo lắng về nó. Nhưng sau đó chúng ta có một vấn đề về lý thuyết điều khiển: làm thế nào để điều này thích ứng mà không cần dễ bị tấn công hoặc dao động điên cuồng và điên cuồng? Lưu ý rằng phương pháp thích ứng không ngăn người dùng độc hại tích lũy số tiền nhỏ dữ liệu rác theo thời gian trên blockchain gây ra tình trạng phình to trong thời gian dài. Đây là một vấn đề khác hoàn toàn và một đồng tiền điện tử có vấn đề nghiêm trọng.
6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ giải quyết vấn đề cân bằng giữa chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 6 Ưu điểm hơn nữa 6.1 Phát xạ trơn tru Giới hạn trên của tổng số tiền kỹ thuật số CryptoNote là: MSupply = 264 −1 đơn vị nguyên tử. Đây là hạn chế tự nhiên chỉ dựa trên giới hạn thực hiện chứ không dựa trên trực giác chẳng hạn như “N xu là đủ cho bất kỳ ai”. Để đảm bảo quá trình phát xạ diễn ra suôn sẻ chúng ta sử dụng công thức sau cho khối phần thưởng: Phần thưởng cơ bản = (MSupply −A) ≫18, Trong đó A là số lượng tiền được tạo ra trước đó. 6.2 Thông số điều chỉnh 6.2.1 khó khăn CryptoNote chứa thuật toán nhắm mục tiêu thay đổi độ khó của mọi khối. Cái này giảm thời gian phản ứng của hệ thống khi tốc độ mạng hash tăng hoặc giảm mạnh, duy trì tốc độ chặn không đổi. Phương thức Bitcoin ban đầu tính toán mối quan hệ của giá trị thực tế và khoảng thời gian mục tiêu giữa các khối cuối cùng của năm 2016 và sử dụng nó làm hệ số nhân cho khối hiện tại khó khăn. Rõ ràng điều này không phù hợp để tính toán lại nhanh chóng (vì quán tính lớn) và dẫn đến dao động. Ý tưởng chung đằng sau thuật toán của chúng tôi là tổng hợp tất cả công việc được hoàn thành bởi các nút và chia nó cho thời gian họ đã bỏ ra. Thước đo của công việc là các giá trị độ khó tương ứng trong mỗi khối. Nhưng do dấu thời gian không chính xác và không đáng tin cậy nên chúng tôi không thể xác định chính xác khoảng thời gian giữa các khối. Người dùng có thể chuyển dấu thời gian của mình sang tương lai và lần tiếp theo các khoảng có thể rất nhỏ hoặc thậm chí âm. Có lẽ sẽ có ít sự cố xảy ra loại này, vì vậy chúng tôi chỉ có thể sắp xếp các dấu thời gian và các giá trị ngoại lệ (tức là 20%). Phạm vi của các giá trị còn lại là thời gian dành cho 80% khối tương ứng. 6.2.2 Giới hạn kích thước Người dùng trả tiền để lưu trữ blockchain và có quyền bỏ phiếu cho kích thước của nó. Mỗi thợ mỏ đề cập đến sự đánh đổi giữa việc cân bằnge chi phí và lợi nhuận từ phí và tự đặt ra “giới hạn mềm” để tạo khối. Ngoài ra, quy tắc cốt lõi cho kích thước khối tối đa là cần thiết cho ngăn chặn blockchain tràn ngập giao dịch không có thật, tuy nhiên giá trị này sẽ không được mã hóa cứng. Gọi MN là giá trị trung bình của N kích thước khối cuối cùng. Sau đó là “giới hạn cứng” cho kích thước khối chấp nhận là \(2 \cdot M_N\). Nó giúp blockchain khỏi bị đầy hơi nhưng vẫn cho phép giới hạn từ từ phát triển theo thời gian nếu cần thiết. Quy mô giao dịch không cần phải bị giới hạn một cách rõ ràng. Nó được giới hạn bởi kích thước của một khối; và nếu ai đó muốn tạo một giao dịch lớn với hàng trăm đầu vào/đầu ra (hoặc với mức độ mơ hồ cao trong chữ ký vòng), anh ta có thể làm như vậy bằng cách trả đủ phí. 6.2.3 Hình phạt vượt quá kích thước Người khai thác vẫn có khả năng lưu trữ một khối chứa đầy các giao dịch không tính phí của riêng mình lên đến mức tối đa cỡ \(2 \cdot M_b\). Mặc dù chỉ có phần lớn các thợ mỏ có thể thay đổi giá trị trung bình, nhưng vẫn có một 13 25 Thay đổi tỷ lệ thời gian sao cho một đơn vị thời gian là N khối, về mặt lý thuyết, kích thước khối trung bình vẫn có thể tăng theo cấp số nhân thành 2ˆt. Mặt khác, một giới hạn tổng quát hơn trên khối tiếp theo sẽ là M_nf(M_n) cho một số hàm f. Những tính chất nào của f sẽ chúng tôi chọn để đảm bảo một số "tăng trưởng hợp lý" về kích thước khối? Sự tiến triển của kích thước khối (sau thời gian thay đổi tỷ lệ) sẽ như sau: M_n f(M_n)M_n f(f(M_n)M_n)f(M_n)M_n f(f(f(M_n)M_n)f(M_n)M_n)f(f(M_n)M_n)f( ... Và mục tiêu ở đây là chọn f sao cho chuỗi này tăng không nhanh hơn, chẳng hạn, tuyến tính, hoặc thậm chí có thể là Log(t). Tất nhiên, nếu f(M_n) = a với hằng số a nào đó thì chuỗi này là thực sự M_n aM_n aˆ2M_n aˆ3M_n ... Và tất nhiên, cách duy nhất có thể hạn chế điều này ở mức tăng trưởng tuyến tính tối đa là chọn a=1. Tất nhiên, điều này là không thể thực hiện được. Nó không cho phép tăng trưởng chút nào. Mặt khác, nếu f(M_n) là một hàm không hằng thì tình huống còn phức tạp hơn nhiều. phức tạp và có thể cho phép một giải pháp tao nhã. Tôi sẽ suy nghĩ về điều này một lúc. Khoản phí này sẽ phải đủ lớn để giảm bớt hình phạt vượt quá kích thước từ phần tiếp theo. Tại sao người dùng phổ thông lại được coi là nam giới nhỉ? Hả?
khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và kịch bản trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 khả năng làm tăng blockchain và tạo thêm tải cho các nút. Để ngăn cản những người tham gia ác ý tạo ra các khối lớn, chúng tôi giới thiệu một chức năng phạt: Phần thưởng mới = Phần thưởng cơ bản \(\cdot\) kích thước khối MN −1 2 Quy tắc này chỉ được áp dụng khi BlkSize lớn hơn kích thước khối trống tối thiểu cần thiết gần đạt mức tối đa(10kb, \(M_N \cdot 110\%\)). Người khai thác được phép tạo các khối có “kích thước thông thường” và thậm chí vượt quá nó với lợi nhuận khi tổng phí vượt quá mức phạt. Nhưng phí khó có thể tăng bậc hai không giống giá trị phạt nên sẽ có sự cân bằng. 6.3 Kịch bản giao dịch CryptoNote có một hệ thống con viết kịch bản rất tối giản. Người gửi chỉ định một biểu thức Φ = f (x1, x2, . . . , xn), trong đó n là số khóa công khai đích {Pi}n tôi = 1. Chỉ có năm nhị phân các toán tử được hỗ trợ: min, max, sum, mul và cmp. Khi người nhận chi tiêu khoản thanh toán này, anh ta tạo ra 0 k n chữ ký và chuyển chúng đến đầu vào giao dịch. Quá trình xác minh chỉ cần đánh giá Φ với xi = 1 để kiểm tra chữ ký hợp lệ cho khóa chung Pi và xi = 0. Người xác minh chấp nhận bằng chứng nếu ffΦ > 0. Mặc dù đơn giản, cách tiếp cận này bao gồm mọi trường hợp có thể xảy ra: • Chữ ký đa/ngưỡng. Đối với chữ ký đa chữ ký “M-out-of-N” kiểu Bitcoin (tức là người nhận phải cung cấp ít nhất 0 ∼M ∼N chữ ký hợp lệ) Φ = x1+x2+. . .+xN \(\geq M\) (để rõ ràng, chúng tôi đang sử dụng ký hiệu đại số chung). Chữ ký ngưỡng có trọng số (một số phím có thể quan trọng hơn các phím khác) có thể được biểu thị dưới dạng Φ = \(w_1 \cdot x_1\) + \(w_2 \cdot x_2\) + . . . + \(w_N \cdot x_N\) \(\geq wM\). Và bối cảnhio trong đó khóa chính tương ứng với Φ = max(\(M \cdot x\), x1 + x2 + . . . + xN) \(\geq M\). Dễ dàng chứng minh được rằng bất kỳ trường hợp phức tạp nào cũng có thể được biểu thị bằng các toán tử này, tức là chúng tạo thành cơ sở. • Bảo vệ bằng mật khẩu. Việc sở hữu mật khẩu bí mật s tương đương với kiến thức về một khóa riêng, được xác định từ mật khẩu: k = KDF(s). Do đó, một máy thu có thể chứng minh rằng mình biết mật khẩu bằng cách cung cấp một chữ ký khác dưới khóa k. Người gửi chỉ cần thêm khóa công khai tương ứng vào đầu ra của chính mình. Lưu ý rằng điều này phương pháp này an toàn hơn nhiều so với “câu đố giao dịch” được sử dụng trong Bitcoin [13], trong đó mật khẩu được chuyển rõ ràng trong đầu vào. • Các trường hợp thoái hóa. Φ = 1 có nghĩa là bất kỳ ai cũng có thể tiêu tiền; Φ = 0 đánh dấu đầu ra là không thể chi tiêu mãi mãi. Trong trường hợp tập lệnh đầu ra kết hợp với khóa chung quá lớn đối với người gửi, anh ta có thể sử dụng loại đầu ra đặc biệt, cho biết người nhận sẽ đưa dữ liệu này vào đầu vào của mình trong khi người gửi chỉ cung cấp hash trong số đó. Cách tiếp cận này tương tự như “trả tiền chohash” của Bitcoin tính năng này, nhưng thay vì thêm các lệnh script mới, chúng tôi xử lý trường hợp này ở cấu trúc dữ liệu cấp độ. 7 Kết luận Chúng tôi đã điều tra các lỗ hổng lớn trong Bitcoin và đề xuất một số giải pháp khả thi. Những tính năng thuận lợi này và sự phát triển không ngừng của chúng tôi tạo nên hệ thống tiền điện tử mới CryptoNote một đối thủ nặng ký của Bitcoin, vượt trội hơn tất cả các nhánh của nó. 14 26 Điều này có thể không cần thiết nếu chúng ta có thể tìm ra cách giới hạn kích thước khối theo thời gian... Điều này cũng không thể đúng được. Họ chỉ đặt "NewReward" thành một hình parabol hướng lên trong đó kích thước khối là biến độc lập. Vì vậy, phần thưởng mới sẽ tăng lên đến vô tận. Mặt khác, nếu tay, phần thưởng mới là Max(0,Phần thưởng cơ bản(1-(BlkSize/Mn - 1)ˆ2)), sau đó phần thưởng mới sẽ là một parabol hướng xuống dưới với đỉnh ở kích thước khối = Mn và có điểm chặn tại Kích thước khối = 0 và Kích thước khối = 2Mn. Và đó dường như là những gì họ đang cố gắng mô tả. Tuy nhiên, điều này không
分析

5
世界中の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 で最も人気のあるトランザクションは次のようになります。
Phân tích

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