レオンハルトジャパン公式BLOG

技術的な情報を公開するスペースです。

IOTA(IoT特化型暗号通貨)の技術の裏側

IOTA(アイオータ)コミュニティの Limo さんが2017年1月25日に技術的な内容を記事にしましたので日本語版を公開しました。LHJ さんは日本の皆さんができるだけわかりやすく理解できるよう少しだけ意訳をしています。

1. 目次

2. はじめに

現在、IOTA の進捗状況は大きく3つあります。さらに詳しいことは LHJさんにお気軽にお聞きください。Twitter @leonhard_jp

  1. ウォレットの Ver 2.x 系の公開
  2. ライトウォレットの公開準備(testnet 環境でテスト中)
  3. JINN の開発(IOTA の核となるモジュラーでトップシークレットタスク)

用語:

  • Seed: アカウントにアクセスするための、ラテン大文字81個からなる文字列。要するにプライベートキー/パスワード。
  • Milestones: Milestone は Coordinator と呼ばれる特別なノードから送られたトランザクション。Coordinator は IOTA 財団が実施し、その主たる目的は GPU 等の高い計算処理能力を持つマシンからの大規模攻撃に対抗し、IOTA の P2Pネットワーク(tangle)を守ることである。 Milestone は tangle の最新状態をチェックすることに活用する。Milestone に記録されたトランザクションのみが承認される。
  • ウォレット: IOTAチュートリアル(英語)http://necropaz.github.io/IOTAtutorial.html

3. 原文

http://www.tangleblog.com/2017/01/25/the-tech-behind-iota-explained
2017年1月25日 Limo (翻訳 2017年1月26日 utamaro)

f:id:lhj:20170127154206p:plain

4. IOTAの技術の裏側

 IOTA のような最先端技術は技術的に管理上のハードルの多くがつきまといます。イーサリアム(ETH)と DAO が標的となったとき、ETH の背後にある言語 Solidity にバグと欠陥があったため、一連の出来事の結果を見てきました。率直に言って、それはすべての終わりではありませんでしたが、人々がイーサリアムの背後にある技術を少しでも良く理解していれば、多分それは起こらなかったでしょう。
 IOTA の最大の利点はマントラのように繰り返し述べてきました:blockchain ではなく、スケーラブル、分散化、高速、手数料無料、量子コンピュータ耐性。それは IoT ために最良の選択肢だと。IOTA はエキゾチックな技術に基づいて構築されているので、人々が詳しい解説を求めていることに驚きはありません。
 私は自分自身あまりプログラムを書かないので、コア開発者が有向非巡回グラフ(DAG)、Java、sub-tangles、マイルストーン、および IRI(IOTA の DB)内の関数について話しているとき、まだ苦労しなければなりません。IOTA 公式 Slack を渡り歩き、すべてがどのように機能するかを賢い開発者に尋ねたので、次の概念記事は単なる思考の大きな盗難や盗作であることは認めざるを得ません。
 まずは科学的なアプローチのためにホワイトペーパーホワイトペーパー日本語版)を見てください。全体の重要な用語はカバーしようとしていますが、今のところ、すべての単一の特徴を説明することはできません。具体的な質問がある場合は、IOTA チャット(Slack)に参加することをお勧めします。
 以下について、欠陥を見つけた場合はご連絡ください。LHJさんの Twitter @leonhard_jp

5. スケーラビリティ

 なによりもまず、IOTA が継承する最大の利点の1つ、スケーラビリティを見てみましょう。第一および第二世代の伝統的な blockchains と比較すると、IOTA は、ブロックを持っておらず、故にスケーラビリティの問題がなく、より多くの取引が行われており、アドレスが生成されます。あなたは、どうしてそうなの?と聞くかもしれません。IOTA にブロックが全く存在しない場合、スケーラビリティの面で具体的にどのような利点を得るのでしょうか?
 IOTAは、正しい順序でシード(Seed)やアドレスの値を並べる必要はありません。使用している「トリック」は、順序付けられておらず、分割されている状態で、すべてのトランザクションが異なる場所で、異なるデバイス上に保存することができることです。
 ゆえに、ノードを同期しているときは、すべてのトランザクションを反復処理するだけです。すべてのトランザクションの値は、以前の順序であろうがなかろうが、そのアドレスにグループ化されます。
 IOTA P2P ネットワークである tangle は、すべてのトランザクションを処理した場合、アドレスにはすべての残高( IOTA トークンの残高)が含まれています。どのアドレスも負の残高を含まないことを確認する必要だけはあります。この機能は、多くの利益を提供します。例えば、MapReduce のプログラミング・モデルは、多くのデバイス、または制約のあるデバイス上で大きなデータセットを平行処理するために、この機能を用いて使用することができます。無数のデバイスが一緒に結合されている場所では分散型台帳として最適です。さらに tangle は新たに発見された取引を結合するために、subtangle のアドレス残高をキャッシュします。
 IOTA が使用する第二のトリックは、マルチトランザクションの適応です。同じアドレスを使用しながら、数多くの多様に連鎖したトランザクションで構成されています。また、これらのチェーンは、最初のトランザクションは値を持っていますが、その後のすべてのトランザクションがゼロ値を持つように設定されています。すなわち、順番に並べる必要がないという事実の元ではトランザクションをスキップする必要がないことを意味します。
 結論:IOTA での取引は非常に速く、順不同(交換法則/直線性(A + B = B + A))で、ゼロ値が非ゼロ値のトランザクションの後ろに追加されるため、フィルタリングされずに処理されます。blockchain のように一つのブロック内の最大トランザクション数の議論(ブロックサイズの議論)は行われません。
 猿でもわかる説明:パズルの複数の角から正しいピースを同時にランダムに探す複数の目があるのに、1つの角からパズルのピースを次々に並べ始めることには意味がありません。より多くの目があれば、より速くなります。

 バックグラウンド:MapReduce

6. トランザクションの承認と Coordinator の役割が終えた後について

 難しい技術的な内容を読んだ後、取引の本質的な承認に関する理解は並大抵のことではないと言えます。ゆえに、少なくとも後半は「猿でもわかる説明」もすることに決めました。基本的に承認は2段階あります。
 今しばらくは、Coordinator が取引を整備しています。既に述べたように、最終的には 2017年7月 にはCoordinator の役割が終わります。IOTAトークンの所有者による手動の claims( 古い IOTA トークンから新しい IOTA トークンへの交換作業) や tangle のテストやサイズにより早まるかもしれません。
 現在、PoW(proof of work)は bitcoin で使用されている Hashcash と同様のアルゴリズムを使用しています。 Hashcash は基本的には、ノード(猿でもわかる説明で言うパズルの欠けている部分)を計算するための割り当てです。Coordinator は tangle が成長する方向(ベクトル)及び、次のステップをコーディネートする方向を決定します。Coordinator は、すでに承認されているトランザクションをチェックします。これが IOTA がまだ(完全に)分散化されていない理由です。
 Coordinator の役割が終わった後のトランザクションの承認は、ランダムウォークモンテカルロ方式で動作します。つまり、ランダムな取引にシフトし、それらを承認するランダム積分アルゴリズムですね(単純に言えば)。もしモンテカルロの背後にある機能に興味を持っているなら、これが紹介ビデオです。

www.youtube.com

 Coordinator がシャットダウンされる(役割が終わる)と、ランダムウォークモンテカルロ方式が有効になります。そして、IOTA リファレンス実装(IRI: IOTA の DB)は、産業用機器に IoT をサポートするため IOTA プロダクション実装にアップグレードされます。追加のステップは、3進数の JINN プロセッサーの使用です。概して、承認時間はネットワークのトポロジと毎秒のトランザクション量に依存します。Coordinator がシャットダウンされると真の分散型台帳 tangle が動作可能となります。先に述べたとおり、理論的にはスケーラビリティ制限はなく、非常に高速なネットワークです。
 さらなる詳細情報は Hashcash を参照。

7. Subtangle

 理解を深めるため、 subtangle 内または不調な tangle 内における IOTA の消費について、アリスとボブを登場人物として「猿でもわかる説明」をしたいと思います。

 アリスがボブに 10 IOTAトークンを送金し、tangle へトランザクションをアタッチし、5分 でボブは 10 IOTA トークンから 7 IOTAトークンを費やしたとします。残念ながら、アリスのトランザクションが tangle の一部(subtangle)にアタッチされ、一方で、ボブのトランザクションはすぐに tangle の 99% から承認を得ました。ボブは、"郊外"からの女性とビジネスをおこなっていたという理由(アリスが送金した 10 IOTAトークンは subtangle に留まってしまったという理由)だけで待たせるのは悪い考えです。 IOTAは、ボブのトランザクションを tangle に含めることができ、一定の期間中(大半の人は、ボブは 0 IOTAトークンから 7 IOTAトークンを消費したと思うので)台帳に矛盾が生じますが、誰も毎秒ごとに台帳の一貫性を確認しません。2分後 にアリスのトランザクションは、tangle によって承認される可能性があり、その後、台帳は正常な状態になります。つまり、台帳の一貫性を保つことができます。
 さらに言えば、アリスが IOTAトークンを持っておらず、後で支払うことをボブと約束し、チャーリーがボブを信頼し、ボブの IOTAトークンの送金と着金を受け入れる状況も想定できます。その後(数週間後)、アリスが IOTAトークンを用意し、ボブのアドレスへ送金すれば、チャーリーだけでなく IOTA P2Pネットワーク(tangle)が、tangle の一部として subtangle を受け入れます。

重要:今のところ、 Milestone と Coordinator が tangle を維持するために取引を承認しているので、tangle はスケーラブルではなく、不調な tangle は許可していません。
背景 :http://www.tangleblog.com/what-is-iota-what-is-the-tangle

8. JINN-プロセッサー

f:id:lhj:20170127153922j:plain

 3進数の JINN プロセッサーに関する情報は、契約が原因でおそらくほとんど公開されていません。しかし、いくつかのこと、例えば、これらのチップは、IoT の大きなブランチ(方向性)が分かれ、変更可能であることが知られています。
 JINN は、毎秒数千のトランザクションを処理するための「汎用プロセッサー」です。バイナリのプロセッサーとは異なり、多くの状態:+、-、0 の循環、つまり 3つの状態に値を入ることができるので、毎秒数千のトランザクション処理が可能です。これらの 3つの状態は非常にバランスのとれたトランザクションを実行し、tangle のような自己組織化と自己維持ネットワークを構築するのに非常に有用です。
 3進数コンピュータの理論的な利点についての記事はこちらが良いでしょう。
 ソビエトロシアのバランスの取れた3進数マシン

9. 暗号と量子耐性

 ご存知の通り、量子コンピューティングは暗号化処理の終わりとなります。IoT のグローバルな相互接続性という背景に対し、安全なソリューションが求められる課題です。IOTA は統合された量子耐性アルゴリズム、ビンテルニッツワンタイム(Winternitz OTSS)署名方式で構築します。量子攻撃によりセキュリティが大幅に低下させないためにビンテルニッツハッシュ(Winternitz Hash)は、ポスト量子署名として知られています。
 Sergui Popov(IOTAホワイトペーパーの著者)は、量子耐性を説明するために、bitcoin と IOTA を比較しています。

 現在、ブロック生成のため、適切なハッシュ値を見つけるためには平均で 約 268 ノンスをチェックしなければならない。量子コンピュータはΘ(√N)回の演算で計算できることが知られている。従来のコンピューターではΘ(N)回の演算を要するものである。従って、Bitcoin の採掘(マイニング)において、量子コンピュータは従来のコンピュータに比べ、√268 = 234 ≒ 170億倍 も効率が良いことになる。また、The blockchain(Bitocoin の blockchain)がハッシュパワーの増加に対応して難易度を増加させなかった場合、孤児ブロック率の増加につながることも言及に値する。
 同様の理由で、上述した「大きな加重」攻撃は量子コンピュータによって遥かに効率的であろう事を観察していただきたい。しかしながら、加重の上限をキャップ(上限設定)することで、量子コンピュータによる攻撃を受け流すことが出来る。理由は次のとおりである。
 IOTA では、トランザクションの発行のために適切なハッシュ値を見つけるのにチェックしなければならないノンスの数は巨大なものではなく、38 にすぎない。「理想的な」量子コンピュータにとって、得られる効率は 34 = 81 のオーダーとなり、受け入れることが出来るものである。( Θ(√N) が 10√N かその周辺に、容易に収束できることを思い出していただきたい。)
 また、このアルゴリズムにおいて、ノンスが見つかる時間はトランザクションの発行に要する他の各タスクに必要な時間と比してさほど大きくないようになっており、後者は量子コンピュータに対して、さらなる耐性を持っている。従って、上の議論では、tangle が Bitocoin の blockchain と比べて、量子コンピュータを用いる敵対者に対しより強力な保護を提供することを示すものである。

 バックグラウンド: Winternitz OTSS