タングル図解パート5 : コンセンサスと確定の信頼度とコーディネーター

補足説明
この記事は原題『The Tangle: an Illustrated Introduction Part 5』の翻訳です。
ご参考までに公開します。必要だと思われる部分には言葉や構成を補っています。
トップ画像は『The Tangle: an Illustrated Introduction Part 5』より引用しております。

投稿者:Alon Gal
投稿日:2018年03月01日

前回は、アリスがお金を複数回支払おうとした場合に生じる二重支払いの問題について述べました。連載の最後となるこの投稿では、二重支払いの問題がタングルの中でどのように解決されるのか、そして二重支払いのどちらの取引記録が有効なのかをどうやって決定するのかについて明らかにします。

問題を図解するために、次のような二重支払いのシナリオを検討します。

ご覧の通り、アリスが保有するIOTAは5枚で、それをチャーリーとボブに与えます。これは明らかに問題です。両方のトランザクションを同時に有効なものとして取り扱うことはできません。タングル用語で言えば、両方をどちらも承認する将来のトランザクションはあり得ません。なぜなら、そんことをしたらアリスのアカウントの残高がマイナスとなってしまうからです。
すでに説明しましたが、荷重ランダムウォークのアルゴリズムを用いたら、最終的には分岐の中の一つの方がはるかに大きくなって、どちらのトランザクションが有効となるかに関するコンセンサスができます。しかし、ボブとチャーリーの観点からは、「アリスから本当にお金をもらったかどうかどうやったら分かるのだろう?」という問題があります。

仮にボブとチャーリーが恐竜のディーラーで、アリスがどちらか一方からティラノサウルスを購入したとします。もしボブとチャーリーがタングル上の彼女のトランザクションを見た直後に、どちらも彼女にティラノサウルスを送ったとしたら、いづれどちらか一方が支払われていなかったことに気づきます。ボブとチャーリーは、いつトカゲを出荷すれば安全なのか、どうやったら分かるのでしょう?これは深刻な問題です。実際に、ビットコインが2009年にこの問題を上手に解決できた最初のテクノロジーでした。タングルがどのようにしてそれを解決するかを見せるために、確定の信頼度という概念を導入します。この信頼度とは、あるトランザクションがタングルの残りのトランザクションからどのくらい受け入れられるのかのレベルを表す測度です。

あるトランザクションの確定の信頼度は以下のように計算されます。

  1. チップ選択アルゴリズムを100回実行する。
  2. その100のチップの中で、いくつのチップがあなたのトランザクションを承認するか数えて、その数をAとします。
  3. あなたのトランザクションの確定の信頼度はA%となります。

言い換えると、あるトランザクションの信頼度は、それを承認するチップの割合です。すべてのチップが同等に見なされるのではなく、あるチップは、他のチップより重視される可能性が高いのです。この点を解説するために、確定の信頼度をシュミレーションに追加しました。95%以上の信頼度のあるトランザクションは太枠で表示されています。

上のタングルでは、9番のトランザクションは10番から13番の4つチップの中から12番と13番の2つに承認されます。もし一様ランダムチップ選択を使っていたら、ちょうど50%の信頼度になっていたでしょう。しかし、9番を承認するチップの方が9番を承認しないチップより重視される可能性は明らかに高いので、信頼度が少し上がります。

これでボブとチャーリーが、いつアリスにティラノサウルスを送ったら安全か、どうすれば分かるかハッキリしました。アリスのトランザクションが、例えば95%といった非常に高い信頼度の閾値に達したら、コンセンサスから除外される可能性がとても低くなります。でも気をつけてください。あくまでも「可能性がとても低い」のであって「不可能」ではありません。もしアリスが嘘をつこうと思っている上に十分な計算能力を持っていたら、彼女は二重支払いを試みることができます。

そのためにアリスは、ボブではなくてチャーリーに払うトランザクションを発行して、そのトランザクションで2つの古いトランザクションを承認しなくてはなりません。それから出来るだけ多くのトランザクションの発行を開始して、自分の新しいトランザクションの分岐の累積荷重を上昇させようと試みます。もし彼女に十分な計算能力があったら、IOTAのネットワーク全体に彼女を信じ込ませ、彼女の新しいトランザクションの分岐に従わせて、取引記録を書き換えて二重支払いを成功させることができます。その時のアリスのボブへのトランザクションの信頼度は、95%から最終的にゼロへと低下していくのが分かるでしょう。

この攻撃を図解したものが下のタングルですが、時間は下に向かって進んでいます。

このシナリオがリスクとなるのは、アリスが他の全員のトランザクションの合計よりも多く、もしくはそれに近い数のトランザクションを送った場合のみです。成熟した活動的なネットワークにとっては大きなリスクではないですが、今日のIOTAにとっては、現実的な問題です。集中した二重支払い攻撃から安全であるために十分なトランザクションが、IOTAのネットワークシステムの中で行われていないのです。

IOTAはスケーリングのために組み立てられたので、セキュリティのために意図的に暫定的なコンセンサスの仕組みであるコーディネーターを採用しています。2分ごとにIOTA財団によってマイルストーン・トランザクションが発行されます。するとそれによって承認される全てのトランザクションは即座に確定の信頼度が100%であると見なされます。コーディネーターを使えば、そもそもアリスの2番目のトランザクションは、決して承認されなくなります。IOTAネットワークが成長し続けて、100%非中央集権的なコンセンサスで安全性を維持できるようになるまで、コーディネーターはネットワークを保護する仕組みの一つとして機能します。完全なタングルの分散型コンセンサス・アルゴリズムが作動し始めたら、その時点でIOTA財団はコーディネーターをシャットダウンして、タングルは完全に自ら進化するようになります。コーディネーターは徐々に取り除かれるでしょう。ネットワークが十分に成熟してコーディネーターが除去されたら、ネットワークのパフォーマンスが著しく向上するでしょう。

この連載に付いてきてくれたみなさんに感謝を捧げたいです。記事を書いたり、コメントや質問に答えたりするのはとても楽しかったです。もっと高度なトピックに関する続編のリクエストも喜んで受け付けます。例えば、タングルに対する攻撃ベクトルやアルファ(Alpha)の定義方法の説明やチップ選択アルゴリズムの部分的最適化など、みなさんがもっと知りたいことならどんなことでもどうぞ。

下のコメント欄やDiscordの@alongal#3938までお便り大歓迎です。

パート1:タングルの紹介
パート2:新しいトランザクションの到着率と遅延時間とランダムウォーク
パート3:累積荷重と累積ランダムウォーク
パート4:承認者と残高(バランス)と二重支払い

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です