Tangle:図解入りの紹介 第五回:合意、承認の信頼度、コーディネーター

Translate this article into English

2018年5月最新! ▼当サイトで申込みが多い取引所

【1位】「GMOコイン」【10ヶ月連続1位!レバレッジ取引で人気!】

【2位】「bitflyer」【日本最大級取引所・人気No.1】

【3位】「ビットバンク」【セキュリティ対応No.1】

シェアする

前回は二重支払い問題について触れました。この問題はアリスが支払いを2回以上行おうとするときに起きます。シリーズ最後回となる今回の投稿では、この問題をTangleではどのように解決しているのか、そして有効な履歴はどれかをどのように判断しているのか、について説明します。問題を説明するため、次のようなシナリオを考えます。

図から分かるように、アリスは5i持っていて、それをチャーリーとボブの両方に支払います。私たちはこの両方の取引が有効だとすることはできません。Tangleの用語で表現すると、両方の取引に対して未来の取引を承認できない、ということになります。なぜなら、取引完了後にアリスの口座の残高がマイナスになってしまうからです。

私たちは、重み付きランダムウォーク・アルゴリズムを使うと、最終的にどれか一つの分岐が他の分岐よりもずっと大きくなることを知っています。従ってどの取引が有効かということについて合意を形成することができます。しかし、ボブとチャーリーの視点から見ると一つ問題があります。彼らが実際にアリスから支払いを受けたかどうかをどうやって知ればいいのでしょうか?

ボブとチャーリーが恐竜の販売業者で、アリスが双方からペットのティラノサウルスを購入したとします。もしどちらの業者もTangleで注文を確認した後すぐにアリスにティラノサウルスを発送したとすると、最終的にはどちらかの業者が支払いを受けない、ということになります。彼ら業者は注文を受けた恐竜をいつ発送すれば確実に支払いを受けられるのか、どのように判断すればいいのでしょうか?

これは深刻な問題で、実際この問題に初めて成功裏に対処できたのはビットコインで、2009年のことでした。Tangleがどのように解決しているのかを説明するため、承認の信頼度(confirmation confidence)という概念を導入します。この信頼度というのは、取引がtangleの他の部分から受け入れられるレベルの度合いを表しています。

ある取引に対する承認の信頼度は次のように計算できます。

  1. チップ選択アルゴリズムを100回実行する
  2. 100個のチップのうち、取引を承認するチップの個数をAとする
  3. 取引に対する承認の信頼度を「Aパーセント」と表わす

言い換えると、取引の信頼とは取引を承認するチップの割合のことです。すべてのチップが公平に扱われるわけではありません。好ましいチップがより重要だと見なされます。この状況を説明するため、承認の信頼度をシミュレーションに追加しました。信頼度が95%以上の取引は太枠で示しています。

上のtangleでは、取引9は4つのチップのうち2つから承認されています。もし一様ランダムチップ選択アルゴリズムを使うと、信頼度はちょうど50%になります。しかし取引9を承認するチップは承認しないほかのチップよりも好ましいので、信頼度がやや上がります。

ボブとチャーリーがいつアリスにティラノサウルスを発送すれば間違いないかをどうやって判断すればいいか、これではっきりしました。アリスの取引の信頼度が十分に高い値、例えば95%に達すれば、合意から排除される可能性はとても低くなります。

ですが、注意すべきこととして、可能性は極めて低いと言えますが不可能ではないことがあります。もしアリスが騙そうとしていて十分な計算能力を持っていれば、二重支払いを試みることができるのです。

二重支払いしてみるため、彼女はボブではなくチャーリーに支払う取引を実行します。彼女は過去の取引を2つ承認する必要がありますが、その取引は彼女がチャーリーに支払ったことは知りません。その後、彼女はできるだけたくさんの取引を発行し始め、彼女の新しい分岐の累積重みを上げようとします。

もし彼女に十分な計算能力があれば、彼女はIOTAネットワーク全体が彼女を信じて彼女の新たな分岐について行くようにすることができます。その結果、彼女の取引履歴が書き換えられ二重支払いが成功します。もし彼女の取引のボブに対する信頼度を調べると、彼女の信頼度は95%からゼロに落ちることが分かります。

この攻撃の状況を以下のtangleで図示します。時間は下に向かって経過します。

このシナリオは、アリスが結びついている全員に対してよりも多い数、またはそれに近い数の取引を実行できる場合にのみリスクとなります。成熟した活動的なネットワークでは大きなリスクにならないとはいえ、現在のIOTAにとっては現実の問題です。現在のIOTAのシステムでは、本気で二重支払い攻撃を受けた場合でも安全であるほどの十分な数の取引がまだ行われていないのです。

IOTAは拡張性を持たせて作られているので、私たちは安全のため故意に一時的な合意の仕組みであるコーディネーターを導入します。IOTA財団が2分毎にマイルストーンとなる取引を発行し、財団が承認するすべての取引は直ちに承認の信頼度が100%であると見なされます。コーディネーターを使うと、アリスの2番目の取引はそもそも決して承認されることはありません。

IOTAネットワークが100%分散化された状態で安全を保てるほど十分にアクティブになるまでの間、コーディネーターは保護機構として機能します。IOTAネットワークがこの段階にまで拡張すれば、Tangleの分散合意アルゴリズムが完全に効力を発するようになります。この状態になればIOTA財団はコーディネーターを停止して、Tangleが完全に自力で発展するようにします。

この状況は繰り返し発生します。IOTAネットワークが十分に成熟してコーディネーターが不要になれば、ネットワークは直ちに桁違いに効率的に機能するようになります。

一連の投稿記事を読んでくれた皆様に感謝します。記事を書いたりコメントや質問に回答することはとても楽しかったです。引き続きもっと高度な話題の投稿リクエストは大歓迎です。候補として考えているのは、tangleに対する攻撃ベクター、αの定義の仕方の説明、チップ選択アルゴリズムの実用的な最適化ですが、皆様が他にももっと知りたいことなら何でも構いません。

質問などは下のコメント欄かDiscordの@alongal#3938 宛てまでお寄せください。

新しいIoTの技術を使っているIOTAは、今後IoT化が進むにつれて注目に値する通貨です。どのような特徴を備え、決算が行われていくのかを解説しています。また最近のニュースから、MIOTAの今後の可能性についても考察しています。

The Tangle: an illustrated introduction, Part 5: Consensus, confirmation confidence, and the coordinator