IOTA (暗号通貨)

IOTA（アイオータ）は、IOTA財団を主導にオープンソースプロトコルに基づいて開発が行われているP2P型決済及びデータ共有網、暗号通貨である。ビットコインなど他のブロックチェーン型暗号通貨とは違い、タングル（英: Tangle）と呼ばれる有向非巡回グラフ（英: Directed acyclic graph, DAG）を利用して非許可型分散型台帳を実装している。タングル上で行われる価値交換は暗号通貨であるIOTAトークンを介して行われ、決済記録を含むタングル上でのあらゆるデータの読み書きに使われる形式及びタングルの仕組みそのものを一括りにしてIOTAプロトコルと呼ぶこともある。 2016年7月11日にIOTAのオープンベータテストが開始された。 IOTAのトランザクションはP2Pネットワークの参加者が共有するタングル上で、仲介者なしにユーザーが発行する。 ユーザーがトランザクションを発行するためには、タングル上の他の２つの過去のトランザクションを承認しなくてはならない。送信されたトランザクションが、受け手から確定したと認められるためには、十分なレベルの承認を集めなくてはならない（つまり、他のユーザーたちから、十分な回数の承認を受けなくてはならない）。 このシステムは、中央格納データベースや単一の管理者を置かずに運用され、一般的な分散型台帳技術に固有のスケーラビリティや取引手数料の問題に取り組んでいる。 IOTAは、トランザクションで価値とデータを交換できる決済レイヤーと見なすこともできる。 他の機能（例：スマート・コントラクト等）はその決済レイヤーの上層に構築される可能性があるが、IOTAのコア・プロトコルの開発は効率性の最大化に傾注されてきた。 IOTAはデイビッド・サンステボ（David Sønstebø）とセルゲイ・イバンチェグロ（Sergey Ivancheglo）とドミニク・シーナー（Dominik Schiener）及びセルゲイ・ポポフ（Serguei Popov）博士の4名によって創設された。IOTAの起源は、2014年に4人が、IoT及び分散コンピューティング向けに全く新しいタイプの三進法マイクロプロセッサの開発を目指して内々に設立したハードウェアのスタートアップにまで遡る。 4人は、この経験を通じて、IoTを実現可能にしてM2M経済の到来をもたらすには、安全な価値とデータの決済レイヤーが必要であることを認識した。 4人は2010年〜2011年頃からブロックチェーン界隈に関わってきて、分散型台帳技術に精通していた。2013年にはセルゲイ・イバンチェグロは、世界初の完全なプルーフ・オブ・ステークを開発して、Nxtというブロックチェーンに実装した。 4人は、このような経験を重ねて、IoTの基幹として必要な決済レイヤーを実現するために、2015年前半にIOTAの開発を始めた。公正な割り当てを確保するために、2015年11月から12月まで行われたクラウドセールでは、IOTAトークンの総供給数量が100％売り出されて、IOTA開発者や設立者たちには1枚のIOTAも割り当てられなかった。ビットコイン1337枚相当の金額を（BTCやNXTやJinnトークンという形で）調達した。開発者や設立者たちへ配当されたIOTAが1枚もなかったことから、IOTAコミュニティーは非営利のIOTA財団を設立してドイツで登録するために、相当量のIOTAを寄附してIOTAプロジェクトのビジョンを支援することを決定した。 その後もIOTAコミュニティーは、大企業との協業やコミュニティー・プロジェクトや開発者の獲得のために資金を提供した。 2016年7月11日にIOTAのオープンベータテストが開始された。 それから2017年6月12日に仮想通貨取引所Bitfinexに新規上場するまでの11ヶ月間は、ユーザー同士の相対取引（取引所を介さない売手と買手の直接取引）が行われていた。 IOTAはブロックチェーンを用いる代わりに、DAGを使って分散型台帳を実装している。 タングルと呼ばれているIOTAのDAGプロトコルは、ブロックチェーンプロトコルを一般化したものである（ブロックチェーンはDAGの特殊なケースである）。 タングルはブロックもチェーンもない構造となっているので、予めブロック時間を決めておく必要がなく、ネットワーク上のトランザクション数が増えると、最終的にトランザクションのスピードが速くなる。 しかし、トランザクションが確定されるまでの時間には、タングルのトポロジーやネットワーク内のノードの位置など様々な要因も影響する。 タングルはIOTAのトランザクションを保管する公開台帳であると同時に、非中央集権化されていて中央で管理する者は存在せず、メッシュネットワークのトポロジーに従って組織化されるノード間のネットワークによって維持されている。 タングルは分散データベースとして機能する。2019年4月現在はネットワーク上の各ノードにはタングルの全履歴が格納されている。 IOTAのトランザクションを送るためには、送り手はタングル上の他の二つのトランザクションを承認しなくてはならない。 タングルのユニークな承認作業の並列化を可能としているのは、タングルが非同期型システムだからである。これは承認作業が逐次的に順番に行われる同期型のブロックチェーンとは対照的である。 IOTAネットワークを使用するための支払いは、（マイニング手数料を支払うのではなく）他の二つのトランザクションの承認という形で行われる。 そのために、承認者（ビットコインではマイナー、プルーフ・オブ・ステークプロトコルではステイカーに相当）とトランザクションを送るユーザーはもやは別々の存在ではない。もっと簡単に言えば、IOTAネットワークでは、ユーザー全員がマイナー/ステイカーとなるのである。 タングルはバイナリコードではなく三進法でプログラムされている。 三進法はバイナリに比べて効率性が有利である。 各トランザクションの送り手は、タングル中の他の二つのトランザクションを承認する必要があるので、送られてくるトランザクションが多ければ多いほど、確定されるトランザクションの数が増える。 これはIOTAのスループットが、ネットワーク上のトランザクションの数に比例して拡大していくことを意味する。 対照的に、従来のブロックチェーンは、予めブロック時間とブロックサイズを決めているので、スループットが制限されている。 IOTAに先駆けて開始されたIoTと分散コンピューティング用に特化したCPUの開発は、現在も継続中である。 そのCPUによってハードウェアの性能が向上し、小さなエッジデバイスでも1秒間に何千回ものトランザクションが、あらゆるデバイス上で実行可能となる。 ハードウェアをサポートするこのCPUによって、ネットワークの処理能力のスケーラビリティは、理論的には物理法則（電波や光子の伝播）による限界があるのみとなる。 またそのハードウェア部品は、製造業者へ余計なコスト負担を増やすこともなく、オープンソースとなる。 IOTAのアーキテクチャーでは、トランザクション手数料は発生せず、承認者とユーザーは別々の存在ではない。 IOTAのネットワークを使うことによって、ユーザーはプルーフ・オブ・ワークを実行する承認者としての役割を果たして、タングル中の他の２つのトランザクションを承認する。 IOTAのプルーフ・オブ・ワークはまさにハッシュキャッシュ（英語版）に類似していて、スパムとシビル攻撃（英語版）を防ぐことを目的としている。 IOTAのプルーフ・オブ・ワークの難易度は高くなく、ノートパソコンやスマートフォンなどのほどんどのデバイスで実行でき、送り手のデバイスでも、受け手のデバイスでも実行できる。 あるいはプルーフ・オブ・ワークを効率的に実行できるように特化された外部のデバイスやサービスにアウトソースすることもできる。 このようにIOTAのプルーフ・オブ・ワークのシステム要件は、マイナーと承認者が別々の暗号通貨で使われているプルーフ・オブ・ワークと異なって、極小のマイクロコントローラーに適したものとなっている。 トランザクションと検証作業を同じ工程に配置することで、IOTAは承認作業が中央集権化するリスクを排除できるだけでなく、承認者に対してトークンの生成やトランザクション手数料などのインセンティブを与える必要性も排除できる。 IOTAの総供給数量は 2 , 779 , 530 , 283 , 277 , 761 {\displaystyle 2,779,530,283,277,761} 枚である。 この数量は三進法の計算に最適化されたもので、国際単位系としては 2.779 × 10 15 {\displaystyle 2.779\times 10^{15}} として表わされる。 IOTAの総供給数量は、 33 {\displaystyle 33} 桁の三進法の数である 111 , 111 , 111 , 111 , 111 , 111 , 111 , 111 , 111 , 111 , 111 {\displaystyle 111,111,111,111,111,111,111,111,111,111,111} に基づいていて、十進法の 3 33 {\displaystyle 3^{33}} に相当するものである。 3 33 {\displaystyle 3^{33}} は、IOTAのプラスとマイナスの数値の全領域である。 3 33 {\displaystyle 3^{33}} は奇数なので、IOTAの最大の絶対値は ( 3 33 − 1 ) / 2 = 2 , 779 , 530 , 283 , 277 , 761 {\displaystyle (3^{33}-1)/2=2,779,530,283,277,761} となる。 これが一つのアドレスで所有できるプラスの最大値であり、その結果としてIOTAの総供給数量となっている。 IOTAの総供給数量は約 2.8 × 10 15 {\displaystyle 2.8\times 10^{15}} IOTAであるのに対して、ビットコインの総供給数量は最小単位であるsatoshiで数えると 2.1 × 10 15 {\displaystyle 2.1\times 10^{15}} satoshiなので、似通っているが、ビットコインと異なり、IOTAは小数や分数を使わずに、整数の値のみを処理する。 IOTAを整数単位で取扱うことの利点は、小数の四捨五入問題を回避できることである。 小数の四捨五入問題は、ソフトウェアが適切に設計されていないと、浮動小数点演算の誤差を引き起こす可能性がある。 IOTAは、分割できないトークンを使っているが、総供給数量が多く、トランザクションの処理手数料もかからないので、特にマイクロペイメントに適している。 発行されている全てのIOTAは、ジェネシス・トランザクション（最初のトランザクション）で生成された。 これはタングルのセキュリティを低下させないトークンの発行メカニズムが明らかでなく、セキュリティ面で安全なメカニズムがまだ確証されていないかったからである。 IOTAの最小単位は、IOTAである。IOTAはトークン枚数が多いので、桁数に応じて　以下のような表記方によって表示される。 これは1Mega USドルを用いて 100 {\displaystyle 100} 万USドルを表すのと同じことである。 IOTAは、楕円曲線暗号ではなくヴィンテルニッツハッシュベース暗号を用いている。 ハッシュベース署名（英語版）は楕円曲線暗号よりはるかに速度が速いだけでなく、署名と検証作業がかなり簡略化されており、タングルプロトコルの全体的な複雑性が軽減されている。 量子コンピュータは、グローバーのアルゴリズムを活用すると、総当たり攻撃を非常に効率よく実行できるとされている。 ビットコインのブロックを生成するために、暗号学的なナンスを見つけ出すプロセスは、そのような総当たり攻撃に対して特に脆弱となる。 従来型のコンピュータが解決するためには Θ ( N ) {\displaystyle \Theta (N)} 回の演算処理を必要とする問題を、量子コンピュータでは Θ ( N ) {\displaystyle \Theta ({\sqrt {N}})} 回の演算処理だけで済む。 そのために、量子コンピュータなら、従来型コンピュータより約何百億倍も効率的にビットコインのマイニングができる可能性がある。 このようにビットコイン（や他のブロックチェーンプロトコル）には量子コンピュータに対する脆弱性があることが分かっている。 しかしIOTAでは、トランザクションのハッシュ値を見つけ出すためにチェックすべきナンスの数は 3 8 {\displaystyle 3^{8}} だけである。 そのため、IOTAの設定では、量子コンピュータによって向上する効率性は 3 4 = 81 {\displaystyle 3^{4}=81} 倍となるが、これは上述したビットコインの脆弱性に比べたら、取るに足らないほどのものである。 元々、IOTAは設計的に、ナンスを見つけ出すのに掛かる時間が、一つのトランザクションを発行するのに必要な他の諸々の作業に要する時間と比べてもあまり長くないので、そもそもIOTAのセキュリティーと機能性は、量子計算ができる環境の中でも脅かされることはないのである。