注:本稿はスタンフォードブロックチェーン週間の講演の実録であり、麻省理工のLei Yagから発表された講演のために、「Pism:ビットコインの1万倍の拡充」と題している。
みなさん、こんにちは
ここでPism合意の実施と評価についてお話しすることができてとても嬉しいです。この協議の性能は特に1万倍以上です。
これはマサチューセッツ工科大学、スタンフォード大学と他のいくつかの大学の協力の結果です。
私は協力者に感謝したいです。私の指導者や関係者を含めて。
ビットコインの安全性はよく知っていますが、性能についてはそうではありません。
それは毎秒7件の取引しかできません。どれも数時間で確認します。
ビットコインは性能を安全に接続します。
ビットコインはこれらのパラメータを一つの設計パラメータと結びつけます。
性能を向上させたいなら、安全性において多くの損失を被ることになります。
Pismがするべきなのはこのような連絡を破ることです。
私たちは中本聡コンセンサス協議に対して自然延長を行った。
私たちはそれを解凍して各部分を拡張します。
pismプロトコルは非常に自然で綺麗なプロトコルです。
それは非常に簡単です。私たちはわずか6ヶ月の間に10,000行のRustコードに適用します。
スピーチが始まる前に、AWSで100の仮想マシンの例を起動しました。
各仮想マシンでPismの例を発表します。
コードはgithubでオープンします。
今回の講演では、Pism合意について議論します。その後、システムの配置について検討し、評価します。
ビットコインコンセンサス合意を早く回顧してみましょう。最長のチェーンルールを使って、各鉱夫は一番長いチェーンを拡張して掘ってみます。
分岐が発生した時、二つのブロックが意外に同じ親ブロックに接続された時、鉱山は一番長い分岐を選択します。
彼らはいつも一番長いチェーンを選んでいます。
ここでは鉱夫が新たなブロックを掘り出す平均速度を定義している採掘率というパラメータが含まれています。
ビットコインの中で、この速度は10分ごとに1ブロックです。
ビットコイン協議の重要な部分は取引の確認です。
取引ができました。すぐ確認できますが、問題があります。
攻撃者はプライベートチェーンを掘る可能性があります。採掘過程はランダムで、停泊過程です。
この鉱山労働者は運がいいかもしれません。最初のいくつかのブロックで採掘速度が速いです。このような状況が発生したら攻撃者は自分のプライベートチェーンを解放します。突然の取引はもう本物の最長チェーンから来ません。
中本聡はすぐに取引を確認するより、一番長いチェーンにあることを確認する解決案を提出しました。
攻撃者が幸運にも最初のいくつかのブロックを獲得できたとしても、長期的には攻撃者が勝つことはあまりありません。
中本聡は彼の白書の中で計算を行った。
ですから、一定数量のブロックを待ってこそ、改竄できない可能性があります。
スループットはビットコインで取引の平均速度を確認し、一定期間でどれぐらいの取引が確認できますか?計算方法はブロックの大きさに乗じることです。ブロックごとにどれぐらいの取引がありますか?
そして延長です。つまり一つの取引を確認するにはどれぐらいの時間がかかりますか?
この計算は深さと掘削速度を決定する除算によって達成できる。
性能を向上させるために,採掘速度を高めて,より高いスループットとより低い遅延を得ることができる。
ブロックサイズを増やして、より高いスループットを得ることもできます。
しかし、フォークが分かれているので、これは通用しません。もし採掘速度を上げたりブロックサイズを増やしたりすれば、もっと多くの分岐点を得ることができます。
これは、ネットワーク上の二つのノードが十分に速くメッセージを伝えることができないと、分岐が発生し、これは意外にも同じ親ブロック上で採掘が行われるからです。
もし我々が掘削速度を上げるなら、両ノードはより短い時間で新たなブロックを掘り出す可能性があります。
ブロックのサイズを増やすと、ブロックがネットワーク全体に伝播する時間が長くなり、分岐率の増加につながる。
フォークを分けるのはいいことではないです。安全性を損なうからです。
フォークは誠実に採掘の能力を下げました。
Pismを構成します。今からPismについて話しましょう。
性能と安全の連絡を解除するのは性能を向上させるためです。
ビットコインの中で、一つのブロックは実際に二つの役割があります。一つ目は新区ブロックがいくつかの取引を帳簿に追加します。二つ目はもっと含蓄があり、新区ブロックもその間接と直接ブロックを認証します。
これは、例えば、あるチェーンが一番長いチェーンであることを証明します。
したがって、第一の役割はスループットに直接関係している。
取引の提出が早ければ早いほど、帳簿に含まれている取引が多くなります。
第二のキャラクターは遅延確認と関連しています。投票のスピードが速いほど、取引に対する自信が高くなります。
1.スループットはビットコインの中で、分岐によるスループットには限界があることを見ました。
もともとフォークの概念がない構造があるとどうなりますか?これは私たちが「取引ブロック」を導入した理由です。
「取引ブロック」は鉱夫によってより高い採掘率で掘り出されますが、取引ブロック間にはチェーン構造がありません。
したがって、私たちは非常に速くそれらを掘り出すことができます。分岐につながることなく、この設計には分岐点がまったくないからです。
その後、これらの「取引ブロック」を「申請者ブロック」(pose blocks)に連れて行きます。
これらはライト級のブロックであり、これらの取引ブロックを指すハッシュ表示のみを含む。
「申請者ブロック」はビットコインの速度で採掘し、ビットコインの最長チェーンで接続されます。
私たちは採掘のスピードが遅いし、これらのブロックが小さいので、いくらスループットを上げても、フォークが増えることはありません。
これはなぜPismが安全性を犠牲にしないで底辺ネットワークの物理的制限を実現できるのかということです。
PISMは最長チェーンと作業量証明に基づいて同時に
鉱夫は同時に二つの種類のブロックを掘り出します。
彼らはブロックのハッシュ値を使用して、どのようなタイプのブロックになるかを決定する。
2.遅延時間を処理するために、私達はまず、申請者チェーンを導入しても、投票率は増加しません。申請者チェーンが一つしかないので、投票を行っています。
だから、もう一度解決して、投票と申請者をブロックします。
私たちは申請者のブロックを二つの部分に分けました。
一つは取引ブロックを指すハッシュ表示、もう一つは投票者ブロック(vote block)を含み、これは申請者ブロックに投票する指示のみを含む。
私たちはもう申請者ブロックの中で一番長いチェーン構造を採用しません。
反対に、投票ブロックの中にビットコインのような一番長いチェーン構造があると仮定します。
今まで改善されていません。まだ投票者チェーンが一つしかありません。この投票者チェーンは安全でとても重要です。だから、まだ25の確認を待つ必要があります。そうでないと、攻撃者はビットコインのように投票者チェーンを攻撃することができます。
今はもう申請者と投票業務を分離しました。多くの投票者チェーンを導入できます。例えば、1000人の投票者チェーンを紹介します。
面白い発見は、今私たちは1000人の投票者チェーンを持っています。私たちはどれも安全です。
攻撃者が一つの投票チェーンを攻撃できる確率は30%でも、攻撃者が同時に500個の投票チェーンを攻撃する確率はまだ低いです。
これはなぜですか?安全性を犠牲にしないで、Pismでの確認遅延を減らすことができます。
3.性能は2019年に発表した論文の中で、相手の計算力が50%以下であれば、PISMはビットコインのように安全性、活躍度、一貫性を保証することが数学的に証明されました。
スループットについては、PISMは、1−betaにcを掛けて提供し、ここでbetaは相手の能力であり、cは底部ネットワークスループットである。
確認の遅延については、Pismの確認の遅延は、底辺ネットワーク遅延dに比例し、確認の信頼性に比例し、投票者チェーンの数に反比例する。
これはとても有望に見えますが、現実世界での表現を見てみます。
これは理論で教えられないことです。
まず、ビットコインよりちょっと複雑な契約を認めなければなりません。
第二に、理論的には、簡単なネットワークモデルを仮定した。
覚えていますか?Pismの確認が遅れると、私達は大きなO記号を使っています。だから、ここの定数は分かりません。最後に、ネットには他のボトルネックがあります。これらのボトルネックは何ですか?これが私たちがシステムを作る理由です。
Pismを展開します。10,000行のRustコードを通じてPismの展開を実現しました。UTXOモデルに基づいて、pay-to-pbkeyと取引します。
コードはオープンソースです
Pismは毎秒70000の取引と10秒の遅延を実現できます。
ブロックチェーンクライアントの役割は:1)共通認識に参加することです。
新しいブロックを受け取り、チェーンに接続して、新しいブロックを掘り出します。
2)同様に重要なことは、ブロックを取得し、取引の順序を生成することである。
PISMコンセンサス合意の核心的役割は取引を並べ替えることです。
ビットコインと違って、私達はダブルフラワー取引を許可します。
すべての人がこの順序に同意する限り、彼らはUTXOセットを計算し、自分で無効または重複した取引を削除することができます。
これは帳簿記録モジュールの仕事で、取引順に順次実行して、最終更新のUTXOセットを生成します。
配置後、PISMがブロックチェーンのボトルネックを共通認識から帳簿記録に移すことができることを知った。
このボトルネックはUTXOセットの記憶にあります。
高スループットを実現するために、共通認識と記帳を並行して処理しなければなりません。
いくつかの最適化をしました。
私たちは「スコアボード」を作りました。
私たちが作った帳簿は非同期で一致しています。
また、クライアントが機能設計モードを導入し、取引ブロードキャストを無効にして、より高いネットワーク効率を得ることができます。
スコアボードは、現代CPU設計において、並列命令を実行するために使用されます。
もし私たちが二つのCPUを持っているとしたら、一回に二つの取引を実行したいです。
第二の取引が始まると、第二の取引は成立しますが、第一のペンは失敗します。それは取引の順序に違反しているので、正しくないです。
スコアボードの技術は簡単な表を導入しました。私たちが取引を行う前に、この取引がどのような貨幣に接触するかを記録します。どんな貨幣を使うか、どんな貨幣が生まれるかを記録します。
もう一つの取引を実行する前に、私たちはスコアボードを確認します。私たちが生産するかどうかを確認します。または使う貨幣はもうスコアボードに存在します。
最初の取引を開始する前に、私達はスコアボードにaとcを表示します。その後の取引で再度a元に会ったら、衝突が発生します。
その後、違った取引を行います。彼らは同時に完成できると思います。
残りの取引について、私達は彼らの間に衝突がないことを発見しました。だから、それらも一緒に実行できます。私達は正しい結果を得ました。
最適化の後、クライアントはCPUカーネル上でほぼ直線的な拡張を実現し、すなわち8つのカーネルに拡張し、これに基づいてSSDとデータベースは性能に上限を設けた。
もう一つの重要な最適化は共通認識に基づいて非同期会計を行うことです。
私達はPismの中で、帳簿の更新の周波数はブロックの掘り出すスピードと比較してとても低いです。私達は1000人の投票者チェーンがありますから。
各投票者チェーンと個々の投票者ブロックは、ビットコインとは異なり、新たなブロックごとにいくつかの取引をトリガすることができないことが確認されました。
したがって、ブロックを受信するたびに記録するのではなく、共通の論理からの非同期ループに入れることで、自分のサイクルの中で実行できます。
コンセンサスロジックで多くのロックを削除することができ、我々のコンセンサスロジックは大域的なロックがないので、複数のスレッドと複数のCPUカーネルを使って、まもなく到来するブロックを並列に処理することができ、より高いブロックレートを維持することができる。
配置評価の最後に、私の評価結果を紹介します。
私たちは100から1000までのAWS EC 2の例を使っています。これらはライト級の実例です。今使っているノートパソコンよりもいいです。
ノードをトポロジ構造に接続します。各ノードは4つのランダムノードに接続されます。
各ノード間に120 msの伝搬遅延を導入した。
各ノードに対して,実際のインターネットをシミュレートするために400 mbpsの入口と出口帯域幅リミッタを設置した。
私たちの配置をビットコインとbitcoi-gと比較し、Pismがより多くのノード(例えば、ここの1000ノード)に拡張できるかどうかをテストし、CPUまたは帯域幅利用率において有効かを評価した。
最後に、さまざまなタイプの攻撃における「Pism」の表現を評価した。
Pismは毎秒7万件の取引があります。
最も長い鎖プロトコルは性能と安全性を結びつけることができるので、ブロックサイズを増やしてより高いスループットを得るためには、採掘速度を低くして、より高い遅延を得る必要がある。
これはトレードオフ曲線です。もし遅延を増やすなら、スループットを増やすこともできますが、もし低遅延を望むなら、スループットの代価を払わなければなりません。
私たちのパラメータは最長チェーンで協議していますので、今日のビットコインよりずっと速いです。
しかし、私達の確認の遅延はまだ100秒以下ではありません。スループットは毎秒10000件の取引を超えてはいけません。
私たちはコードを修正することによってbitcoi-gで展開しました。bitcoi-gはより良いスループットを実現しましたが、遅延はやはりビットコインまたは最長のチェーンプロトコルのようです。
最後に、Algoadと比較しました。
私たちは同じAWSトポロジ設定で公開されたAlgoadコードを実行しています。スループットの限界は毎秒1000件の取引です。
そして、異なる安全設定の下での協議を評価しました。
Pismの確認遅延については、わずかな代価しか払っておらず、またいかなるスループットも失いませんでした。PISMではスループットと安全性を結合しました。
最後に、より安全に設定されたpismもテストしました。
私たちの部署はとても効率的です。
75%以上のCPU電力は、署名の確認やUTXOセットの更新など、必要なタスクに使用されます。
帯域幅については、私たちは1000の投票者チェーンを使っていますので、効率が低いように見えるかもしれませんが、実際には99.5%を超えるデータは実際に役に立つデータです。0.4%以下は投票者ブロックです。
Pismの解法はビットコインのブロックを一つの申請者と一つの投票者として構成し、各部分を拡張して性能の限界に近づけることです。
高スループットを得るためには、すべての共通認識と記帳クライアントを並列化しなければならないことを発見しました。
PISMはボトルネックを共通認識から記帳、SSD、データベースに移行できることを発見しました。
そして、Pismは中本聡の共通認識の自然な延長です。