リスク警告:「仮想通貨」「ブロックチェーン」の名のもとでの違法な資金調達のリスクに注意してください。—銀行保険監督管理委員会など5部門
検索
ログイン
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
View Market
MimbleWimbleを総合的に分析するためのZhang Ligament
Nervos
特邀专栏作者
2019-03-14 07:00
この記事は約9485文字で、全文を読むには約14分かかります
最近では、Grin というプロジェクトと、その背後にあるプロトコルである MimbleWimble があり、中国で非常に人気があります。実際、Nervos & Cryptape の研究者であり、ルーヴェン大学の COSIC

以下のトランスクリプトは Fork It Issue 4 から編集されたものですLet’s Talk About MimbleWimble 、読書の完全性を確保するために、私たちは張仁を最初の視点として取り上げ、内容の一部を整理し、プログラム内の技術的な詳細を補足しました(ポッドキャストの内容と矛盾がある場合、内容はこの条項の規定が優先されます)。さらに、完全なポッドキャストプログラムのさまざまな細かい詳細も非常に興味深いので、リンクをクリックして聞いてください。

MimbleWimble について他にもアイデアがある場合は、コメント欄で私たちと話し合ってください。

仕上げ: Xiao Jie、Jin Xiaojia、校正: Wan Cenchen、Zhang Ren

ミンブルウィンブルを知る

私は約 2 年前に MimbleWimble プロトコルを発見しましたが、当時は非常に興味深い、謎に満ちたプロトコルだと思いました。

この合意書はビットコインのIRCチャンネルに匿名で投稿されており、ペンネームの著者名はヴォルデモートの名前で、フランス語版「ハリー・ポッター」のヴォルデモートの名前であるトム・エルヴィス・ジェデュソールと呼ばれている。著者は Tor ネットワークに Dot Onion を配置しましたLinkBlockstreamAndrew Poelstra詳細研究MimbleWimble システムの安全性を証明する、このプロトコルの真の完成形です。したがって、この契約の提案者がアイデアの功績を取得することができ、Andrew Poelstra がその功績の半分を取得する必要があります。

暗号学者の観点からすると、すべての取引金額をブロックチェーン上に平文で保存することは非常に不合理です。さらに、プロトコル自体のセキュリティを確保するために、費やされたすべてのトランザクションをハードディスクに永続的に保存することも無駄です。

そして、MimbleWimble は、これら 2 つの問題を解決するために、以前のデザインのいくつかを巧みに組み合わせて、人々に非常にエレガントな感覚を与えました。

ミンブルウィンブルの定義¶

MimbleWimble を理解するには、まずその位置付けを理解する必要があります。その位置付けはPrivacy Coですプライバシーを非常によくサポートできる暗号通貨。 MimbleWimble の前には、プライバシー コインは 2 つしかなかったと思います。1 つは Zcash と呼ばれ、もう 1 つは Monero と呼ばれます。プライバシー コインを名乗る他の企業は、テクノロジーの面で十分な力を持っていません。

しかし、Zcash と Monero には同じ問題があります。独自のプライバシーのため、どちらも使用されたすべてのトランザクション出力を保存するセットを維持する必要があり、それは「無効なリスト」として理解できます。

新しいトランザクションが有効なトランザクションであるかどうかを確認するには、まず、新しいトランザクションのトランザクション入力が「無効リスト」にあるかどうかを確認する必要があります。トランザクション入力がすでに「無効リスト」に含まれている場合は、それが証明されます。トランザクション入力の有効期限が切れており、それが「void リスト」にない場合は、トランザクション入力が有効であることが証明され、トランザクションはマイナーによって認識され、マイナーはトランザクション入力を「void リスト」に入れます。リスト"。

したがって、Zcash と Monero は、どちらも非常に深刻な問題に直面しています。トランザクションの出力は常に増加しています。パブリック ネットワークのフル ノードが新しいトランザクションが有効かどうかを確認したい場合は、トランザクション データの完全なセットを保存する必要があります。トランザクション数が増えるとデータ量がどんどん大きくなり、非常に使いにくくなってしまいます。

MimbleWimble プロトコルにはこの問題はなく、Zcash や Monero よりも拡張性が高く、状態の増大の問題にも対処できます。

たとえば、MimbleWimble プロトコルを使用する Grin Coin は、ハードディスク容量をほとんど占有せず、使用済みのトランザクション出力が占めるハードディスク容量を大幅に圧縮できます。

使用済みトランザクション出力を単に削除した場合、ブロックの有効性を検証するときに、ブロックが有効であるかどうかを検証することも、トランザクション署名を検証することもできません。しかし、この問題は MimbleWimble プロトコルには存在しません。

MimbleWimble の場合、使用済みトランザクション出力と対応するトランザクション入力を削除した後も、トランザクション グラフ全体の検証はまったく影響を受けず、残っているすべての署名は依然として有効です。また、使用されたトランザクション出力を削除した後も、署名とワークロードによってブロックチェーン全体を検証できます。

これは、マークル ツリーに少し似た、過去の多くの暗号プルーフを小さなプルーフに圧縮できるアキュムレータのようなものであると簡単に理解できますが、マークル ツリーよりも効率的でパフォーマンスが高くなります。

ミンブルウィンブルに関する 3 つの誤解

誤解 1: 圧縮された空間 = プライバシーが向上する?

多くの人が、MimbleWimble の圧縮されたハードディスク ストレージ スペースの機能をプライバシーの向上として宣伝していますが、実際には、プライバシーの向上は実現されていません。あなたがハードディスク領域を圧縮することを選択し、他の人が圧縮しないことを選択した場合でも、完全なトランザクション グラフを取得でき、そこからトランザクションのトランザクション関係を掘り出すことができます。

もちろん、ハードディスクの記憶領域を削除する場合でも、フォークや二重支払い攻撃などが行われるかどうかは不明であるため、最新数日間の元のブロック データを保持する必要があります。チェーンが十分に長く、データが変更されないと判断された場合、変更されないと判断されたハードディスクのスペースを圧縮することができます。

ネットワーク内のフル ノードは通常、デフォルトでストレージ領域を削減しますが、削減しないようにソース コードを変更することもできます。

誤解 2: 単一の当事者が取引を否認できるのか?

MimbleWimbleプロトコルは、トランザクション構築方法が対話型であるという特徴があり、トランザクションは双方の参加によって完了する必要があり、ビットコインやイーサリアムとは大きく異なります。

MimbleWimble プロトコルを実装する Grin を例に挙げると、取引所に金額を渡しても取引所が何もしなければ、そのお金は受け取れません。私と対話するプロトコルに参加し、法的な取引を完了した場合にのみ、お金を受け取ることができます。

もしこの法的取引を私との間で成立させれば、その取引の存在を知っていることの証明になるので、私にお金を渡す交換がなければ断ってもいいのですが、これも外部からのミンブルウィンブルに対する誤解です。

誤解 3: トランザクションでは、双方が同時にオンラインである必要がありますか?

この対話型トランザクションでは、トランザクションの両当事者がオンラインである必要はなく、トランザクションの両当事者は電子メールを完全に送信してトランザクション構造を完了できます。

先日、Grin Confのウォレットデモを見に行ったのですが、ウォレットはトランザクション構築過程の中間データをファイルとして保存します。入力者はファイルを生成し、このファイルをトランザクションの受信者に送信できます。トランザクションの受信者はファイルを受信した後、そのファイルをウォレットクライアントにドラッグし、クライアント内でトランザクション全体を構築し、それをファイルとしてトランザクションの送信者に送り返してトランザクションの構築を完了します。したがって、両方の当事者が参加する必要がありますが、両方の当事者が同時にオンラインである必要があるという意味ではなく、非同期プロセスにすることもできます。

ミンブルウィンブルの技術詳細

ここで、MimbleWimble の技術的な詳細について詳しく説明します。

MimbleWimble には 3 つの基本コンポーネントがあり、1 つ目は CT (Confidential Transaction)、2 つ目は Coin Join、3 つ目は OWAS (One Way Aggregate Signatures) と呼ばれます。

今話した内容は OWAS の一部です。ここでは、CT から始めて簡単に概要を説明します。 CT は最も複雑で、残りの 2 つは比較的単純です。

Confidential Transaction

CT のアイデアは、Blockstream CEO の Adam Back によって最初に提案されました。アダム・バックは、マイニングアルゴリズムHashcashの発明者であるため、ビットコインのゴッドファーザーとして知られており、論文の中でサトシ・ナカモトによって引用されています。

マイナーまたはパブリック ネットワーク ノードにとって、特定のトランザクションが有効なトランザクションであるかどうか、またそのトランザクションがシステム内でインフレを引き起こさないかどうか (新しいお金が作成されない、たとえば、送信者が 50 ビットコインを使用し、受信者は 51 ではなく 50 を受信しました)。それ以外は、取引の正確な金額は気にしません。

したがって、Confidential Transaction の本来の考え方は、取引の正当性が影響を受けないようにしながら、取引金額を暗号文に変換できるかどうかということです。

グレゴリー・マクスウェルは、Blockstream のもう一人の共同創設者であり、ビットコインの最初の 5 人のコア開発者の 1 人であり、トランザクションの金額をある方法で暗号化するが、トランザクションの有効性にはまったく影響を与えない、このようなプロトコルを実際に設計しました。セックス。

このプロトコルは、各トランザクションの入力または出力を次の形式で表現できます: (Pedersen コミットメントとも呼ばれます)。

  • v*G+r*H

(v は量、r はブラインド係数を表す乱数、G はジェネレーター 1、H はジェネレーター 2)

これは取引金額のブラインド化とも呼ばれ、取引の「金額」が分かりやすくなります。ジェネレーター 1 とジェネレーター 2 は、楕円曲線暗号の 2 つのジェネレーターであり、ジェネレーターで値を乗算する前は平文ですが、ジェネレーターで乗算した後は、単純な暗号化された暗号術として理解できます。この操作は一方向であり、生成元が何であるかは誰もが知っていますが、一度乗算すると元に戻すことはできず、元の平文が何であるかは誰も知りません。この問題は「離散対数問題」と呼ばれます。

ブラインディング ファクターは、トランザクションの入力または出力のコンストラクターによって選択される乱数です。この乱数は自分だけが知っており、他の人に教えることはできません。

各取引金額をブラインド化する利点は、「」を維持できることです。加法準同型性」の場合、式は次のようになります。

  • (v1*G + r1*H)+(v2*G + r2*H)=(v1 + v2)*G+(r1 + r2)*H

(v1 と v2 は取引金額 1 と取引金額 2、r1 と r2 はブラインディング ファクター 1 とブラインディング ファクター 2、G はジェネレーター 1、H はジェネレーター 2)

簡単に言うと、暗号化された番号を追加することは、暗号化される前に暗号化された番号を追加することと同じです。

これまでで最も重要なことは、加法準同型性とは何かを理解することです。つまり、最初に加算してから暗号化する場合と、最初に暗号化してから加算する場合、2 つの異なる演算シーケンスによって得られる結果は同じになります。具体的な金額が分からない人でも、取引の正当性を検証でき、2 つの金額の合計が正しいことを確認できます。

取引に取引手数料を追加する必要がある場合、それは平文でマイナーに渡されるため、取引手数料に対して追加の複雑な暗号化および復号化操作を行う必要はありません。マイナーは、トランザクション出力の Pedersen コミットメントに f*G を追加して、トランザクション入力の Pedersen コミットメントのバランスが取れているかどうかを検証します (f はトランザクション手数料の金額を表します)。

ナレッジポイント: Pedersen コミットメント: プレーンテキストで表現された未使用トランザクション出力 (UTXO) 値を暗号化されたコミットメントに置き換えます。つまり、トランザクション値を明らかにすることなくトランザクションの正当性を検証できるようにします。

加法準同型のメリットを簡単にまとめると、復号する必要がなく、具体的な取引金額が分からなくても取引の正当性を検証できること、もう一つは単純に取引手数料を直接計算できることです。テキストが作成され、マイナーは自分の収入を直接確認できるため、この方程式が有効であることが検証できます。

もう 1 つのポイントは、トランザクションの送信者とトランザクションの受信者がお互いのブラインド要因を知らないことです。つまり、トランザクションの入力者は出力者のブラインド要因を知らず、トランザクションの出力者も知りません。入力者の盲目要因はわかりませんが、取引金額はわかっています。

この結果、方程式の両側の取引金額はバランスをとることで相殺できますが、ブラインド要因は相殺できないということになります。入力から出力を引くと、次の 1 つの項が得られます。

  • (ro-ri)*H

(ro はトランザクション出力のブラインド係数の合計、ri はトランザクション入力のブラインド係数の合計、H はジェネレータ 2)

それを「残り」と呼ぶことができます。

注: (ro-ri)*H または (ri-ro)*H が剰余に等しいかどうかは、プロジェクト固有の選択に応じて重要ではありません。

MimbleWimble の機密トランザクションでは、このトランザクションが無差別に構築されていないこと (トランザクションの輸出者と輸入者はどちらも独自の盲点要因を知っており、他人のトランザクション出力を使用して独自のトランザクションを構築していない) を証明するために、次の方法が必要です。解決する。

ビットコインではこれは比較的簡単で、自分の秘密鍵を使用してトランザクション全体に直接署名し、トランザクションに参加して構築したことを証明します。

しかし、MimbleWimble のアプローチは斬新です。必要なのは、盲点となる要因の違いを知っていることを証明するだけです。
(注: ここでのブラインディング係数の差は、「トランザクション出力のブラインディング係数の合計 - トランザクション入力のブラインディング係数の合計」であり、これは以下と同じ概念です)

輸入者と輸出者は自分たちのブラインディング・ファクターのみを知っており、相手方のブラインディング・ファクターは知らないため、ブラインディング・ファクターの差が2人の知識を合計することによって計算できることを共同で証明するための合意が必要です。これはトランザクション全体に直接署名することと同等であり、トランザクションを無差別に構築していないことを証明できます。

言い換えると、ブラインド要因の違いを知っていることを証明できれば、入力された秘密鍵でトランザクションに署名することなく、トランザクションの承認された署名も完了することになります。

実際、MimbleWimble では、ブラインド係数の違いを使用して 0 などの固定文字列に署名し、ブラインド係数の違いを知っていることを証明し、残りのアイテムを同時に公開します。

上の段落の核心は、ブラインドファクターの違いを知ることで、従来のビットコイン取引における秘密鍵を置き換えることができるということです。

追加のポイントがあります。Range Proof が必要です。

金額部分については、金額部分に負の数値がないことを証明する必要があります。トランザクション入力が 1、トランザクション出力が 2 と -1 であるトランザクションを誰かに構築してほしくないからです。何もないところからお金が生まれる。

このトランザクションのすべての出力に負の数値がないことを証明するには、各トランザクション出力に範囲証明、つまり短いゼロ知識証明が必要です。ポジティブ。

直感的に概念を説明すると、各トランザクション出力の暗号化された暗号文は約 33 バイトですが、範囲証明は約 5 KB になり、これはすでに最適化された結果です。範囲証明はゼロ知識証明と同等であるため、短くするのは難しい。

グレゴリー・マクスウェルが最初のバージョンを作成しましたConfidential Transaction彼はレンジ プルーフを完成させ、スタンフォード大学の学生であるベネディクト ブンツは、オリジナルのグレゴリーのレンジ プルーフよりも短く、検証速度が速い改良版のレンジ プルーフを提案しました。 Range Proof の改良版は次のように呼ばれます。Bulletproofs、情報セキュリティ分野のトップ 1 ミーティングに掲載されました。 Bulletproofs により、RangeProof のサイズははるかに小さくなり、約 700 バイトになります。

Pieter Wuille と Gregory Maxwell はどちらもこの記事の著者であり、Benedikt による Bulletproofs の実装とテストの完了を支援しましたが、これは最新の暗号化の進歩が MimbleWimble の Confidential Transaction 構造に直接適用されていることも意味します。

最初の部分を簡単におさらいしましょう。MimbleWimble には 3 つの基本コンポーネントがあります。最初の 1 つは機密トランザクションで、金額の暗号化を実現し、ブラインド係数の差を直接使用して秘密鍵に署名し、残りの項目に関する知識を証明します。従来、入力された秘密キーは直接署名に使用され、範囲証明も機密トランザクションに添付されます。

Coin Join

ここで、MimbleWimble の 2 番目のコンポーネントである Coin Join について話始めます。

Coin Join の考え方は非常にシンプルで、2 つのトランザクションがある場合、各トランザクション方程式の左辺と右辺のバランスを取ることができます。2 つのトランザクション方程式の左辺と右辺を加算しても、依然として合法的なトランザクションです。。あるトランザクションには入力 1 と出力 1 があり、別のトランザクションには入力 2 と出力 2 があるとします。 2 つの入力 (入力 1 と入力 2) と 2 つの出力 (出力 1 と出力 2) を持つ新しいトランザクションを構築します。これも正当なトランザクションです。

Coin Join は、Gregory Maxwell によって最初に提案されたもので、ビットコインの初期にプライバシーを向上させるためのソリューションです。

しかし、Gregory Maxwell が Coin Join プロトコルを提案したとき、誰もが大きな疑問を抱きました。それは、トランザクションの各入力と各出力に対してバランシング方法が 1 つしかないということです。たとえば、トランザクションの入力が 8 BTC、出力が 3 と 5、別のトランザクションの入力が 20 BTC、出力が 10 と 10 である場合、これら 2 つのトランザクションの入力と出力をまとめると、次のようになります。まだどの出力がどの入力に最初に対応しているかがわかるため、Coin Join 自体はあまりプライバシーを提供しません

しかし、これを Confidential Transaction と組み合わせてすべてのトランザクションの入出力を暗号化すると、非常に優れたプライバシーを提供できます。

Coin Joinプロトコルは非常にシンプルですが、従来の署名方式(各トランザクションの有効性をトランザクションに入力された公開鍵に対応する秘密鍵で署名する)を使用した場合、CTと直接接続する場合に問題が発生します。署名に使用されたアドレスに基づいて、どの入力がどの出力に対応するかを判断することは完全に可能です。

したがって、Coin Join plus Confidential Transaction では、当然のことながら、残りの項目を公開鍵として直接使用し、ブラインド要素の差分を秘密鍵として使用し、この公開鍵と秘密鍵のペアを使用して、別の署名方法を選択する必要があります。符号0。これにより、トランザクションの署名を通じて入力と出力を直接リンクできる状況が解決されます。

将来的には、Zcash がゼロ知識証明用のスマート コントラクトを実装する可能性がありますが、非常に時間がかかります。キャッシュシナリオでは、ビットコインにはいくつかの基本的な検証機能が備わっており、これらの機能をアレンジして組み合わせることで、現実世界の多くのスマートコントラクトに必要な検証タスクを完了できるため、ビットコインのスマートコントラクトのサポートで十分だと個人的には考えています。

Grin Coin の設計時のスマート コントラクト サポート能力は、Bitcoin や Zcash よりも劣っています。しかし、このことは、研究者がアドレス識別子がなく、多くのトランザクションが削除されるシステムにスマートコントラクトを実装する方法を考える動機にもなります。

Coin Join にはもう 1 つ問題があり、0 が署名されていると前述しましたが、実際に 0 が署名されている場合は、2 つの署名を直接加算して新しい正当な署名を作成できます。しかし、プロトコルを実際に運用していると、署名に0を使うのは良くなく、固定フォーマットのフィールドに署名する必要があることが分かります。

各トランザクション署名のオブジェクトは異なるため、これらの署名を直接加算することはできません。では、トランザクションの検証に影響を与えることなく、Coin Join を使用してトランザクションを接続し、巨大なトランザクションを形成するにはどうすればよいでしょうか?接続した後、どのトランザクション入力がどのトランザクション出力に対応するかを再構築する方法はありますか?

One Way Aggregate Signatures

これには、One Way Aggregate Signatures (一方向集約署名) と呼ばれる彼の 3 番目のテクノロジーが関係します。

単一項目の集約署名は、ブラインド係数の差分 x を 2 つの項目 x1 と x2 に分割します。ここで、x1*H は公開鍵として公開されます。もちろん、x1 自体は公開されておらず、署名が必要であることを証明します。 x1を知っています。 x2 は直接公開されており、私も x2 を知っていることが証明されます。 x1*H + x2*H は前の剰余と等しくなります。

ここで、ブラインド係数の差を 2 つの項目に分割した後、x1*H はカーネル超過と呼ばれ、x2 はカーネル オフセットと呼ばれ、カーネル オフセットはオフセットとなります。

ブラインドファクターの違いを 2 つの部分に分割する利点は何ですか?

ブロック内のすべてのトランザクションが大規模な Coin Join トランザクションを形成する場合、プレーン テキストとして開示されているカーネル オフセットが直接加算されるため、各トランザクションの情報が破棄される可能性があります。

署名が必要な部分については、署名部分がすべて 0 に署名されるわけではなく、固定フィールド署名に署名されるため、それらを一緒に集約することができず、これらの署名を個別に保存する必要があります。つまり、すべてのカーネル オフセットが合計され、1 つのカーネル オフセットのみがブロックに格納されますが、カーネル超過は依然として個別に格納されます。カーネル超過と x1 を使用した固定フィールドの署名は、各トランザクションのカーネルに保存されます。

この利点は、巨大な Coin Join トランザクション ブロックを取得したときに、カーネル オフセットの集計項目とすべての署名を再結合して、このブロック内のすべてのトランザクションが有効であることを検証できることです。また、カーネル オフセットは結合されているため、追加されたオフセットを逆アセンブルする方法はありません。各署名がどの入力と出力に対応するかを知る方法がないため、一方向集約署名が実装されています。

もう一度説明しますが、一方向集約署名の基本的な機能は、ブロック内で多数のトランザクションの入力と出力を取得した場合、どのトランザクションの入力と出力が元々トランザクションであったかを判断する方法がないことです。その方法は、各トランザクションのブラインドファクターの違いを2つに分け、署名によって知っていることを証明する方法と、平文を直接公開して知っていることを証明する方法です。平文を直接公開するアイテムについては、すべてのトランザクションについて、それらを直接加算できます。

ここでCut Throughの概念を追加します。

消費されたすべてのトランザクション出力は、ブロック内の式の左側に 1 回表示され、右側にもう一度表示されるため、式の両側にある項を取り消すことができます。カットスルーのコンセプトは、すでに使用されたトランザクション出力をブロック内で削除できるというもので、ブロックが多い場合、ブロック全体で異なるトランザクションのトランザクション入力と出力を削除して、圧縮を実現できます。空間。

ただし、Mimblewimble には、集計するのが難しいいくつかのポイントがあります。1 つは、すべてのトランザクション出力の Range Proof です。時間の経過とともに、Mimblewimble システム内の UTXO はますます多くなり、各トランザクション出力には独自の Range Proof が存在します。証拠、私の出力が否定的ではないことを証明します。
(注: UTXO は時間の経過とともに単調に増加するわけではありません。ここで表現されているのは、時間の経過とともにユーザー数が増加し、UTXO が増加するということです。)

UTXO の有効性を検証する必要がある場合、これらの Range Proof を最初から最後まで計算する必要があります。これは、単一トランザクション出力の有効性を検証するための時間と記憶域がビットコインよりも多くなることに相当します。

したがって、Mimblewimble の計算とストレージ スペースのボトルネックは Range Proof です。さらに、ブラインド要素が 2 つの項目に分割された後、新しいトランザクションにはそれぞれ独自の署名があり、この集計不可能な項目は圧縮できません。

ブロックチェーン全体を走査する場合、検証時間にも影響します。スケーリングに最も影響を与えるのは上記の 2 つの項目です。

MimbleWimbleの具体的な実装 - Grin

次に、MimbleWimble-Grin の具体的な実装について説明します。そのマイニング アルゴリズムは Cuckoo Cycle と呼ばれます。

簡単に言えば、Cuckoo Cycle は 2 つの非常に長いハッシュ テーブルであり、各テーブルには多くのノードがあり、多くのスレッドが 2 つのハッシュ テーブル間で擬似ランダム方式で接続されています。

ハッシュ テーブル 1 はハッシュ テーブル 2 にのみ接続でき、ハッシュ テーブル 2 はハッシュ テーブル 1 にのみ接続できます。テーブル 1 の要素は接続できず、テーブル 2 の要素は接続できません。

パズル自体は、長さがちょうど 42 の円を見つけることです。つまり、テーブル 1 のノード A はテーブル 2 のノード B に接続され、テーブル 2 のノード B はテーブル 1 のノード C に接続され、以下同様になります。長さ42の円。

この設計の本来の目的は、パズル自体が解き始める前にできるだけ多くのメモリ領域を占有できるようにすることです。

表 1 のどの点が表 2 のノードに接続されているかを知りたい場合、最良の方法は、最初にすべてのエッジを数え、それらを特定のデータ構造に保存してから、このデータ構造内で検索することです。パズルの計算が CPU の使用にのみ関連することを避けるために、検索前に大きなメモリ空間を開く必要があることを確認できます。また、大きなメモリ空間の本来の目的は、ASIC に特定の困難を引き起こすことでもあります。

しかし、時代の発展とともに、とにかく ASIC が存在することに誰もが気づきました。そのため、その時点でこの問題を解決するための最良のアルゴリズムに基づいていくつかの改良が加えられ、Puzzle も ASIC でカウントできるようになりました。プロトコルの初期段階ではASICにとってあまり不便なプロトコルが選択されますが、2年後にはASICにとって非常に便利な改良版のプロトコルに完全に置き換えられます。

もう 1 つポイントがあります。暗号学者の学生として (私は暗号学者ではありませんが、私の上司は暗号学者です)、Cuckoo Cycle について最も衝撃的なことは、設計の開始時に直感のみがあり、数学的な概念が存在しないことです。アルゴリズムが最速でなければならないことを証明します。 Cuckoo Cycle を解くためのこれらのアルゴリズムはすべて、Cuckoo Cycle がすでに有名だったときに議論されました。

したがって、数学的証明がない場合、ある人がカッコーサイクルを解くための特に高速なアルゴリズムを突然発明し、すべてのグリンコインがその人だけで掘られたという可能性は十分にあります。これは現時点ではグリンにとっても問題です

これは私にとっても教訓でした。 2013 年、私は Cuckoo Cycle に非常に近い独自の PoW アルゴリズムを設計しようと 1 年を費やしましたが、当時私を苦しめたのは、特定のアルゴリズムがパズルを解決する必要があるという数学的証明が見つからなかったことです。最速なので、最後の記事を投稿しませんでした。今考えると、とても残念に思います。なぜなら、この種の未熟なアイデアは、みんなで議論するために投げ出すことができますし、もしかしたら良いアイデアが議論されるかもしれませんし、すべてが数学で証明される必要があるわけではないからです。

ですから、少し前にCuckoo Cycleのデザインについて聞いたときは、とても感動しました。

ここまで、MimbleWimble について詳しく説明してきました。

Pick Time

最後の共有セッションでは、学問に興味のある皆さんにインスピレーションを与えることを願って、ベルギーで博士号を取得するために勉強した私の経験を皆さんと共有したいと思います。

推奨読書:

推奨読書:




Odaily公式コミュニティへの参加を歓迎します
購読グループ
https://t.me/Odaily_News
チャットグループ
https://t.me/Odaily_CryptoPunk
公式アカウント
https://twitter.com/OdailyChina
チャットグループ
https://t.me/Odaily_CryptoPunk