私は長い間 DFINITY チームの一員である Mahnush と座って、DFINITY がリリースするさまざまなイノベーションについて話し合いました。トピックでは、しきい値署名、ランダム ビーコン、分散キー生成などの用語を取り上げます。これらの概念についてだけでなく、なぜそれらが非常に重要なのかについても説明します。
こんにちは。Inside DFINITY の別のエピソードへようこそ。今日は、研究者として非常に早くから私たちに加わった Mahnush に話をします。彼女はイェール大学出身です。今日は、彼女が DFINITY で何をしているのか、彼女がこれまでに何をしてきたのかを見ていき、その後、DFINITY が開発したテクノロジーやイノベーションのいくつかについても洞察を与えてくれます。
ありがとうございます。とても早くから DFINITY に参加していただきました。あなたは初期の頃から私たちの研究チームの中心人物でした。まだあなたのことを知らない人にとっては、「ここで何をしているの?」と思うかもしれません。
つまり、私は研究者であり、コンセンサス レイヤーの設計を支援し、コンセンサス レイヤーとランダム ビーコンのセキュリティを証明することを仕事としています。
私の日常の仕事は、チームからアイデアを収集し、お互いが理解できるようにより形式的にし、正式に文書化してから、それらが安全であることを証明して使用できるようにすることです。
昨日あなたが私を説明してくれたのは、「私が提案するものはすべて受け入れて、それが安全であることを確認します。DFINITY で構築しようとしているものは安全であることを保証します。これは非常に重要な属性だと思います。」
何があなたをこのポジションに導いたのですか?以前は何をしていましたか?どこの出身ですか?
DFINITY に入社する前は、イェール大学で博士研究員をしていました。その前、私は博士課程の学生でした。博士課程では、マルチパーティコンピューティングなどのセキュリティに取り組みました。
安全なマルチパーティ計算
安全なマルチパーティ計算では、すべてのパーティが合意に達することを確認する必要があります。コンピューティングの重要な部分は出力であり、これには誰もが同意する必要があります。したがって、コンセンサスとビザンチン合意は MPC プロトコルの重要な部分です。だからこそ、私はコンセンサスプロトコルに興味を持っています。
その後、エール大学在学中に、委員会ベースのプロトコルを使用して、数百万の当事者に規模を拡大するコンセンサスプロトコルを構築しようとしました。その後、Timo と Dominic に会い、DFINITY が同じことをやろうとしていることを知り、興味深かったです。
あなたがいてくれて嬉しいです。今年の初めにリリースしたホワイトペーパーを含め、あなたが入社して以来、私たちが多くの進歩を遂げてきたことは承知しています。また、あなたが眠れぬ夜を重ねてこの作業に取り組んだことも知っています。
クラウドコンピューティング
ここで私たちが解決しようとしているパズルや興味深い質問は何でしょうか?私たちが DFINITY でやろうとしているのは、クラウド コンピューティングの新しいバージョンだと思います。よく考えてみると、これは実際には状態レプリケーターです。
計算やデータが失われないようにするには多数のレプリカが必要ですが、すべてのレプリカが一致している必要があるからです。なぜなら、一部のコピーが何かが最終版であると考え、他のコピーが別の何かが最終版であると考える場合、ユーザーはどちらのバージョンが正しいのか分からなくなるからです。
したがって、これらすべてのコピーの一貫性を確保することは、DFINITY の非常に重要な部分です。 DFINITY にとってコンセンサス プロトコルが非常に重要となるのはこのためです。
すべてのレプリカが正直であれば、これははるかに簡単になります。たとえば、Google Cloud に複数のレプリカがあり、すべてのレプリカが Google によって制御されていることが確認できるためです。したがって、それらはすべて Google によって制御されているため、すべてのコンピューターに同じアルゴリズムを適用できることがわかります。
「彼らはすべて正直です!」 そう、彼らはすべて中央グループによって所有されているため、非常に簡単ですが、同時に、アルゴリズムを信頼する必要があります。走りは正直です。
レプリカ
ただし、DFINITY では、すべてのコピーが DFINITY によって所有されていると想定するのではなく、世界中の誰もがコピーを所有できるようにしたいと考えています。つまり、クラウド コンピューティングに対するよりオープンなアプローチのようなものです。
ユーザーは DFINITY を信頼する必要はありませんが、DFINITY が実行するプロトコルを信頼できます。ある時点で、それもオープンソースになるでしょう?誰もがコードを参照でき、誰もがコピーを所有できるとはどういう意味ですか?
基本的に、これは、DFINITY では依然としてマイナーが必要である一方で、システムでは誰もがマイナーになれることを意味します。これらは、Proof-of-Work パズルを解決するものではありませんが、DFINITY 上の分散コンピューティング能力を構成します。
彼らは計算を支援し、データの保守を支援し、データの計算の保守を支援しています。
実用的なビザンチンフォールトトレランスプロトコル
異なるドメイン上のコンピュータなど、レプリカが異なる場合、レプリカの一部が破損しているか、敵対的である可能性があります。コンピューターサイエンスでは、ビザンチン将軍問題に由来するため、これをビザンチンと呼びます。
この問題を解決することは非常に困難な問題であり、コンピュータ サイエンスでは過去 40 年間にわたって解決されてきました。これは非常に基本的な問題であるため、誰もが解決策を改善しようとしています。
その問題を効果的に解決できれば、それに加えて多くの問題も解決できるでしょう。現在、さまざまな試みが問題を解決する新しい方法となっています。
したがって、問題は長い間存在しているとあなたが言うとき、私の頭の中での解決策の 1 つは、独立したコピーを 3 つ用意し、2 つはあることを述べ、3 つ目は別のことを述べている場合、私は常に多数派を信じることです。今、ネットワーク内で実際に何が起こっているのでしょうか?どの程度全く違うのでしょうか?
これはコンピューター科学者が最初に出した答えで、複数のコピー、たとえば 3 つのコピーがある場合、過半数を獲得することはできません。したがって、過半数を獲得した後は、全員が自分の意見を全員に送信する必要があり、コミュニケーションの深度が高い回路のようなものになります。
それでも、同じような点が 1 つだけ同意できれば、多数派は機能する可能性があるからです。しかし、あなたがひも状に同意すると、誠実なグループでも同意しない可能性があります。したがって、PBFT プロトコルを使用するための解決策の 1 つは、リーダーを選択することです。
PBFT (ビザンチンフォールトトレランス) プロトコル
PBFTとはどういう意味ですか?これはビザンチン フォールト トレランス (BFT) のようなもので、彼らはそれを「悪い側」または「ビザンチン側」と呼びます。PBFT の P は実用性に由来しています。
このプロトコルでは、レプリカ サーバーがリーダーを選出するため、現実の世界と同じように、合意に達したい場合、最良の方法はリーダーを選出し、リーダーが次に何をするかを指示し、全員がそれを行うことです。同じことであり、彼らは合意に達します。
したがって、PBFT プロトコルと同様に、リーダーを選択し、そのリーダーが誠実であれば、合意に達する前にネットワーク内の全員に同じ価値を提供します。
しかし問題は、リーダーが誠実でないと合意に達することができず、リーダーを交代しなければならないことです。リーダーが誠実で、全員に同じ価値を提供しているかどうかを確認します。リーダーを変更しないと (視点を変えることを彼らは言います)、非常にコストのかかる取引になるため、全体的なコミュニケーションが必要となり、非常にコストがかかります。
ブロックチェーンプロトコル
その後、ビットコインのようにブロックチェーンプロトコルが登場し、リーダーが不正である限りリーダーを変更しないと決定し、いやいや、リーダーが不正な場合にのみ実際にリーダーを変更する必要があると決定しました。同期なので、新しいエポックごと、新しいラウンドごとにリーダーを変更します。
次に、リーダーを選択する方法が必要です。リーダーを選択し、次に次のリーダーを選択し、さらに次のリーダーを選択する必要があるからです。
リーダーが誠実かどうかをチェックし続ける必要はなく、プロトコルやログを基に構築し続けるだけです。これらの指導者の一人が誠実で健全な取引を考え出す可能性は十分にあります。ここで問題は、乱数を必要とするリーダーの選択に帰着します。
なぜなら、サイコロのような乱数があれば、その乱数を使ってリーダーを選ぶことができ、そこで Proof of Work (POW) が役立つからです。
仕事の証明
ブロックチェーン プロトコルは本質的にプルーフ オブ ワークを使用してリーダーを選択するため、本質的にはビザンチン プロトコルです。 Proof-of-Work を実行するだけで、Proof-of-Work ソリューションを最初に思いついた人がリーダーになります。これはランダムなプロセスです。
そこで、保護者やブロックチェーンに興味のある他の人たちと話すとき、そしてこれを頻繁に行うとき、私は彼らにこう尋ねます。この部屋にいる人の中から、たとえば部屋に 10 人いるとしましょう。どうやってランダムに 1 人を選ぶのですか?
まず、誰もがサイコロを振るような簡単なことだと考えています。私は思う。それで、誰がサイコロを振るのでしょうか?あなたから始めてすべての生年月日を足し、その数字に達するまで円を描くだけだ、と彼らは言います。しかし、それでは、誰から始めるかをどのように選択すればよいでしょうか?
これは非常に単純な質問のように聞こえます。しかし、本当にランダムにしたい場合は、それは困難です。これは、ビットコインの偉大なイノベーションであり、ピア間のランダムな選択に基本的に同意する方法を見つけました。
基本的に、プルーフ・オブ・ワークを使用してランダム性を作り出すことは、大量の電力を消費する必要があるため、非常にコストのかかる方法です。
したがって、ビットコインのような現在の取り組みは、プルーフ・オブ・ワークの解決に熱心な大国に似ており、それが本質的に非常に高価である理由です。
私たちは実際にはビットコインをあまり使用していません。多くのコンピューティングにビットコインを使用して拡張したい場合は、ビットコインの世界全体を焼き尽くす必要があります。ビットコインの現在の状況と、ビジョンを達成するためにどこに行かなければならないかを比較した場合、それでもビットコインを 10 回、または 100 回使用する必要があります。
基本的に多くの電力を消費すると述べました。したがって、私たちは、ピアの中からランダムに人々を選択する、リーダー選択のためのより効率的な方法を探しています。
同期プロトコルとしてのプルーフ・オブ・ワーク
ビットコインがランダム性を生み出す方法を変更しようとしているもう 1 つの理由は、プルーフ・オブ・ワークは本質的に同期プロトコルであるため、基本的にプルーフ・オブ・ワークに費やす必要がある時間がネットワーク遅延よりも桁違いに長いためです。
そうしないと、人々がproof of workを解くために電気を燃やすことを好むのか、それともproof of workの解決に時間を費やすことを好むのか、それとも情報がネットワーク内で失われるのかわかりません。
基本的に、proof-of-work チェーンまたはproof-of-work コンセンサスはスループットが低く、次のランダム性が作成されるまでネットワーク遅延よりも長く待機する必要があるため、ティックを迅速に実行することはできません。
これが、この上に高スループットのプロトコルを搭載できない理由であり、各ブロックに収まるトランザクションの数が限られているため、トランザクションも非常に高価になるのはそのためです。プロトコルを混乱させることなく、単位時間あたりのブロック数を増やすことはできません。
DFINITY が乱数を作成する方法
DFINITY はこの問題を解決しようとしているので、最初に考えられるのは、ランダム性を作成する新しい方法が必要ですが、ではどうやってランダム性を作成するかということです。
先ほども言いましたが、これは非常に難しい質問です。したがって、1 つのアプローチは、1 人にランダム性を作成させることですが、その人が不正であれば、ランダム性を偏らせることはできません。
ここで、ランダム性を作成するためのグループが必要ですが、グループを選択すると、私が最初にランダム性を作成し、あなたが 2 番目の人である場合、最後の人は私たちの乱数を見て自分の乱数を選択できます。ランダム性、結果は彼が望むものであり、私たちはそれをラストマンバイアスと呼びます。
最後の人がランダム性を選択するようなグループを作ることはできません。そのため、しきい値暗号化を使用します。
しきい値暗号化
閾値暗号化が意味するのは、n 人のグループがあり、n 人全員がランダム性を生み出す必要があるのではなく、n 人のグループがあり、そのうちの K 人だけが参加する必要があるということです。
K 人を待っている場合、K から 1 人を引いた参加者から入力を受け取った場合、1 人の入力を待っていることになります。ただし、n から K を引いた他のパーティは最後の人になることができます。したがって、最後の人物バイアスは存在しません。
最後の一人が「参加したくない」と判断した場合は、別のパーティーを開催しますが、それだけでは十分ではありません。なぜなら、この K 人のグループのメンバーがランダム性を生成し、別の K 人のグループの行動がランダム性を生成する場合、これら 2 つのランダム性が異なる場合、敵対者は (私がこのグループに参加したいかどうかを決定することによって) 偏見を与えることができるからです。プロトコル。だからこそ独自性が必要なのです。
独自性
ランダム性の一意性は、どの K パーティがランダム性の作成に参加するかは問題ではなく、結果は常に一意であり、結果は常に同じであることを意味します。まず第一に、これは素晴らしい物件です。直観に反するように聞こえるかもしれませんが、「どうやってそこに到達するのですか?」
メッセージがあり、しきい値署名に BLS 署名を使用する場合は、K 人の参加者が必要です。しきい値が K の場合、K 人の参加者が署名する必要があります。k 人の参加者が誰に署名したかに関係なく、一意の ID 結果が得られます。これは BLS 署名の重要な属性です。
これはペアリングベースの暗号化テクノロジーです。つまり、新しいものではありますが、新しすぎるわけではありません。スキームが新しすぎると、セキュリティが心配になり、それが正しく証明されているかどうかが心配になるからです。十分な数の人がレビューしてくれる場合は、コメントを残してテストしてください。
スタンフォード大学では、十分な数の人々がこれに注目し、グループは、それが安全であり、適切な実装を備えた非常に安全なプロトコルであることを確認するために長い時間をかけて取り組みました。したがって、オープンソースであり、誰でも使用できる非常に高速な BLS 実装があります。
おそらく、概要を説明するだけで、ランダム ビーコンとそれが正確に何であるかについても話すことができます。しかし、あなたはそれについて言及しました、そしてそれはどこから始めるべきか、そしてどこからProof of Workがスループットとエネルギー使用量の点で特定のポイントを超えないのかについての良い説明だと思います。
次に、最後の人のバイアスを使用してこの乱数を作成する問題を、n 人のしきい値署名から k によって解決します。そして、私たちが使用する BLS 署名は、n 人中 k 人に固有のものであり、やはりランダムです。これら 2 つのプロパティは、どのように組み合わされるかを常に理解するのにまだ苦労しています。
だから何をすべきか?サトシ・ナカモトのブロックチェーンに戻って、それがどのように機能するかを見てみましょう。したがって、ナカモトのブロックチェーンは、すべてのブロックに対して完全にランダム性を作成するようなものです。つまり、すべてのブロックについて、最初からプルーフ・オブ・ワークを解決し、そこでのランダム性はまったく再利用されません。
それが非常に高価な理由の1つです。したがって、プルーフ・オブ・ワークの世界と同様に、しきい値暗号化は非常に高価であることがわかっているため、ここではそれを行いたくありません。それほど高価ではありませんが、それでも非常に高価な操作です。
コストのかかる操作のほとんどをオフラインで実行できるようにし、オンラインではそれらの操作をほとんど実行しないようにしたいと考えています。署名スキームを見ると、対処する必要のあるさまざまな方法があり、それらが機能する必要があります。その 1 つはキーの作成であり、これを分散キー生成 (DKG) と呼びます。
DKG (分散キー生成)
DKG (分散キー生成) は、署名する公開キーについて全員が同意する必要があり、全員がグループのより大きなキーの一部である自分用のキーを出力して、それを使用して署名できるため、非常にコストのかかる操作です。入力。
すべてのプロセスは高価なプロセスであり、認証にキーを使用する必要があるため、高価なプロセスになります。ちょっとした議論のために、これも興味深いトピックだと思います。これは基本的に、私たちは全員外にいて、お互いに話し合っていますが、全員が非公開鍵に同意していることを意味します。
私たちがこのことについて話すことができるのは驚くべきことです...しかし、それは私たち二人がその公開鍵とともに使用する秘密鍵を正しく作成したことも意味し、たとえ私たちの秘密鍵について他の人に話さなかったとしても、私たちの秘密はすべてキーも何らかの方法で連動します。
良い点は、DKG プロセスを 1 回実行すると、同じキーで複数回署名できることです。つまり、高価な DKG のコストを複数回に分けて償却する必要があります。グループに対してラウンドを実行して DKG を実行し、グループが独自の鍵を取得したら、それを使用してさまざまな入力に署名できます。
再度署名するたびに、新しい乱数を取得します。それは新しい擬似乱数です。最初の乱数はランダムであったため、実際にはもう乱数ではありませんが、その後は擬似乱数関数になります。これは擬似乱数として機能します。
次に、このようにして、署名スキームを非対話型にすることができます。これは、「署名するために話しかける必要がない」ことを意味します。
私は最善を尽くし、私は署名し、あなたはあなたの役割を果たし、あなたは署名しますが、私たちはそれらの署名をまとめて結合し、お互いに話し合うことなく結合された署名を取得できます。
これが非インタラクティブと呼ばれるものです。これは、署名スキームを非対話型バージョンよりもはるかに高速にするための優れたプロパティです。
DFINITY の仕組みは、グループを作成してから DKG を実行し、最初のランダム性に署名し、次にこのラウンドのランダム性を取得し、次のラウンドで次のラウンドの前のランダム性に署名します。 新しいラウンドを作成します。ランダム性を確認してから、署名を続行します。
同じ元のランダム性をどれくらいの期間再利用したいですか?長期間再利用することができ、数ヶ月、場合によっては1、2ヶ月程度再利用することもできます。したがって、グループ内にまだアクティブで正直な参加者が十分に存在する限り、同じランダム性を再利用できます。グループについても言及しましたね。
DFINITY の運用方法にはさまざまなグループがありますか?私たちにはこのしきい値暗号化と DKG プロセスがありますが、このプロセスを 500 万ビットコインのような多数の参加者に対して実行したい場合、全員にメッセージを送信する必要があり、全員が署名する必要があるため、非常にコストのかかるプロセスになります。 。
これは依然として非常に高価なプロセスです。私たちはシステムを調べたところ、全員の署名は必要なく、全員がランダムに参加する必要もないことがわかりました。国で選挙を行うのと同じように、政党をランダムに選択することでランダム性を高めることができます。
ですから、全員が法律を考えたり決定したりする必要のない何かを決定したい場合は、委員会を設置することもできますし、全員の代わりに代表者を置くこともできます。グループを選択する必要がありますが、グループはどのように選択すればよいのでしょうか。グループ?
それでも独自のランダム性を再利用できるため、グループがランダムに選択されるため、そのグループは実際の総平方数と同様の特性を持ちます。 500 万人でプロトコル全体を実行する代わりに、500 人でプロトコルを実行すると 10 倍高速になります。
ネットワーク全体に 10 万人が参加していても、1 億人が参加していても、グループの規模は一定であるため、グループが通過するプロセスは常に同様です。グループを選択することのもう 1 つの利点は、1 つのチェーンではなく複数のチェーンを使用できるため、スケーラビリティだけでなく並列性も得られることです。
断片化
各グループは 1 つのチェーンを担当し、複数のチェーンを並行して作成できます。これを通常はブロックチェーンのシャードと呼びます。これはシャーディングの自然な方法です。
だからこそ、DFINITY には DFINITY 固有の優れたシャーディング方法があると思います。グループがあり、各グループが独自のシャードを持つことができるからです。では、私たちが現在取り組んでいるより大きな問題は何でしょうか?
現在、同期設定で完全な校正刷りを行っています。同期計算または同期通信モデルでは、誠実な当事者がメッセージを送信すると、そのメッセージはデルタ範囲内のすべての誠実な当事者によって受信されます。
たとえば、ビットコインでは、正直な当事者がメッセージを送信すると、メッセージは約 1 分で受信されますが、世界中の誰にとっても 1 分未満です。プロトコルはそれを認識し、それを使用します。
したがって、ビットコインでは、プルーフ・オブ・ワークの長さはネットワークのレイテンシーに依存し、ビットコインの場合は10分程度とはるかに長くなるはずです。なぜなら、彼らはビットコインの方が10倍長いと考えているからです。
同期の仮定は有効ですが、実際のネットワークで同期の仮定が正しくない場合、プロトコルは安全ではなくなるという問題があります。
非同期ネットワークでの完全な証明
DFINITY で行ったことは、完全同期モデルでセキュリティの証明を取得し、非同期ネットワークでも使用できるように証明を更新していることです。
それが私が現在取り組んでいる分野の 1 つであり、私が取り組んでいるもう 1 つの分野は、DKG プロセスで現在進行中のインタラクティブな DKG プロセスです。つまり、参加したいすべての参加者は、アクティビティは DKG を実行しています。契約を行うときに DKG を使用できる必要があります。
非対話型 DKG (分散キー生成)
私たちはそれを非対話型にしたいと考えています。つまり、当事者は参加して戻ってきて、契約が完了したら戻ってくることができます。つまり、これはより自然な実行方法のようなもので、DKG は対話型バージョンではなく非対話型バージョンです。
私が取り組んでいる 3 番目のことは、先ほど話したシャーディングの部分です。私たちは DFINITY 用のシャーディング システムを設計しています。私たちはビットコインのようなネットワーク用のシャーディング システムを設計し、同じコンセプトを使用しており、私たちの論文は CCS で公開される予定です。これは良い論文なので、ぜひ読んでみてください。
おそらく、「DFINITY の要件は何ですか? 何人が不正行為をしてもネットワークは存続しますか?」という質問に答えるためだけかもしれません。これは良い質問です。
通常、非同期環境または半同期環境で作業している場合、プロトコルが許容できるパーティの数は 3 分の 1 です。したがって、非同期モデルでは不正な当事者の割合は常に 3 分の 1 であり、これが下限であるため、それを超えるものは許容されません。
DFINTY のシャーディング システム
DFINITY はこのモデルで動作しています。つまり、ネットワーク全体における不正当事者の割合は 3 分の 1 であるべきですが、各グループでは割合の半分しか許容できないため、3 分の 1 から半分になります。 「これらのグループがどれくらいの規模になるか、私たちはすでに知っていますか?」
グループのサイズは、達成したいセキュリティのレベルによって異なり、グループが大きいほど、より良いセキュリティが得られます。現在、セキュリティ レベルが約 86 ~ 90 の場合、サイズを 400 ~ 800 に設定するのが論理的であると考えられます。これは、エラーの確率が約 86 になることを意味します。トークンを失うことはありません。
ブロックタイムとファイナリティ
まとめの前にもう 1 つの質問がありますが、エネルギー効率について話し、ビットコイン ブロックチェーンのブロック時間の一部について言及しましたが、これは約 10 分であるとおっしゃいました。それでは、DFINITY で達成されるブロック時間はどれくらいでしょうか?
現在、テスト ネットワークでは、ブロック時間は約 1 秒、1 秒未満です。
DFINITY とビットコインのもう 1 つの違いは、ビットコインでファイナリティに達するには、実際のコンセンサス プロトコルがないため、6 ブロック待つ必要があることです。 DFINITY の場合、2 つのブロックが必要です。
つまり、2 秒、ブロックごとに 1 秒、ファイナリティが 2 秒ということになります。これは、ビットコインのファイナリティが約 1 時間であるのに対し、ファイナリティは 2 秒であることを意味します。
基本的に、これはビットコインを使用した DFINITY でクレジット カードのようなトランザクションを有効にしてトランザクションを完了するために起こることです。コーヒーを買いにコーヒー ショップに行った場合、最悪の場合、使用できるようになるまで 1 時間待たなければなりません。私のビットコイン。トランザクションが実際に完了することを確認します。DFINITY では最大 2 秒かかる場合があります。
最良のシナリオでは、ブロック作成者が楽観的で誠実であれば、DFINITY で最終状態に達するまで 2 秒しか待つ必要がなく、これは高スループット システムのようなものです。
DFINITY の課題と革新について説明するために時間を割いてくださった Mahnush に感謝します。

気になるICコンテンツ
テクノロジーの進歩 | プロジェクト情報 |

IC Binance チャネルを収集してフォローする
最新情報を常に入手してください
