Tangle:図解入りの紹介 第四回:承認者、残高、二重支払い

Translate this article into English

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

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

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

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

シェアする

私たちはこれまで有向非巡回グラフ、ランダムウォーク、様々なチップ選択方法について見てきました。今回は資金について話します。取引Aが取引Bを承認するというのは一体どういう意味なのか、説明する時がきたと思います。

第一回目で述べたように、各取引には「アリスがボブに10 IOTAを支払った」といった形で情報が含まれます。最初にアリスが本当に10 IOTAを持っていることを確認するのが承認者の役目です。

ここで疑問に思われるかもしれません。このIOTAはどこから来たものでしょうか? 答えは、このIOTAはすべて創成取引(genesis transaction)と呼ばれる、tangleの中の一番最初の取引で作られたものです。その後追加でIOTAが作られることはありません。そのIOTAはプロジェクトに最初に投資していた人の口座に投資額に応じて創成取引から振り込まれたものです。その後彼らは手元のIOTAを他の人に売り、最終的に取引ネットワークが確立されます。

アリスとボブの話に戻り、簡単な例を見てみましょう。下図の箱は取引を表しています。簡単のため、取引前後でのアリスとボブの口座の残高も記しています。はじめにアリスは10i(10 IOTA)を持っていて、それをボブに支払った結果、ボブが10iを持っていてアリスは残高がなくなります。

その後誰かが、例えばチャーリーが支払いをしたいとします。彼はチップ選択アルゴリズムを実行し、その結果彼はアリスの取引を承認する必要があることが分かります。この承認を実行するため、チャーリーは、アリスが本当に10iを持っていることを検証しなければなりません。チャーリーはこの検証は真剣に行った方がいいです。もし誤った取引を承認してしまえば、彼自身の取引は決して承認されることがなくなってしまいます!

確認のため、チャーリーはアリスの取引によって直接間接に承認されたすべての取引を、創成取引まで遡ってリストアップしなければなりません。そのリストは最終的に次のような長いものになります。

  1. 創成取引で15i作られる
  2. 創成取引でボブに2i支払う
  3. 創成取引でアリスに8i支払う
  4. 創成取引でチャーリーに5i支払う
  5. 創成取引でドナに3i支払う
  6. ボブはアリスに2i支払う

もちろん、これは一例に過ぎません。結果的にアリスの口座に10i残りボブの口座がゼロになるリストであれば受け入れることができます。チャーリーもまたシステム上の他の口座をすべて追跡して、どの口座もマイナスになっていないことを確認しなければなりません。もしどれかの口座で「取引前」か「取引後」の値がマイナスの値になっていれば、チャーリーの取引は不正だということになります。

アリスが手持ちのIOTAよりも多い額を支払おうとしている状況を見てみましょう:

アリスは10iしか持っていないのに100iをボブに支払いました。アリスのこの取引と、この取引を承認する今後行われる取引は、ネットワークから不正だと見なされます。残高がマイナスになるのは許されないからです。

承認する取引が1つではなく2つの場合、もっと面白いことが起こります:

ボブはアリスの取引を正しく承認しています。なぜなら、アリスの口座には両方の取引を実行しても残高がマイナスにならないだけの十分な資金があるからです。

もしアリスの支払い総額がアリスが持っているよりも多い額になったら何が起こるでしょう?下図はこの状況を表したものです。この場合、ボブはアリスのどちらの取引も承認することはできません。なぜなら取引の結果アリスの残高がマイナスになっているからです。それでもボブが取引を実行すると、彼はIOTAプロトコルのルールを破ることになり、彼の取引を承認する人は誰もいなくなります。

アリスが二重に払っているため、この状況は二重支払いと呼ばれます。彼女は個々の取引を行うのに十分な資金を持っているため、IOTAプロトコルに違反していないことに注意しましょう。おそらく彼女は二重支払いするつもりはなかったと思いますが、取引を誤って二回実行し、両立できない2つの分岐をtangleに作ってしまいました。このことはIOTAの誠実なユーザーにとって、どちらの分岐を承認すべきか、という問題を引き起こします。

この問題の解決法は、前回も取り上げた重み付きランダムウォークです。最終的には一方の分岐がもう一方よりも成長し、成長しない方の分岐は放棄されます。このため、一方の分岐はいずれ放棄されるかもしれないので、発行直後の取引は承認者がいたとしても必然的に承認できないことになります。自分の取引が承認されたことを確認するためには、自分の取引の承認に対する信頼が十分に積み上がるまで待たなければなりません。

これは次回のテーマとなります。
いつものように質問は大歓迎ですので、投稿のコメント欄かDiscordの@alongal#3938 宛てまでお寄せください。

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

The Tangle: an illustrated introduction, Part 4: Approvers, balances, and double-spends