世界を変える(かもしれない)技術。IOTA
はじめに
今回は、私が個人的に興味があり利用している IOTA についての記事です。対象は以下の人たちです。この記事はこれから投稿する私の記事に関係することが多くなると思うのと、単純にとても面白い技術なのでぜひ読んでみてほしいです。ビジネスに関係あるかは分かりません。すみません。
ブロックチェーン技術に興味がある人
IoT に興味がある人
エンジニアリング中級者以上
IOTAについて
IOTAとは、オープンソースの分散台帳技術です。[1] 特徴としてIoT 用に特化されていることが挙げられます。ちなみにブロックチェーンは分散台帳技術の一つであり、IOTAは正確にはブロックチェーンではありません。
ブロックチェーンはその名の通り、複数のトランザクションを一つのブロックにまとめてそのブロックが連なっていくことで改ざんを困難にするというアルゴリズムが使われています。どうやって新規のブロックを作成、承認するかは各ブロックチェーンによって異なり、BitcoinではProof of Work、EthereumではProof of Stakeが採用されています。これらのブロックが連なったチェーンが、それぞれ対等な関係であるNode(Peerとも呼ばれる)に作られ同期しています。分かりやすくここではNodeはパソコンとしましょう。この時、ブロックによるチェーンを台帳と考えると、この台帳がそれぞれの Nodeに「分散」しているため分散台帳技術と呼ばれます。つまり、この台帳がブロックにより作られたものでなければブロックチェーンではないということです。
ここで、IOTAはブロックによるチェーンではなく、「Tangle」というアルゴリズムを利用して分散台帳を実現しています。そのためブロックチェーンではないのです。ここの理解をしっかりしておくことが大切だと思っています。
Tangleを利用することでIOTAは以下の特徴を実現しています。
改竄が困難
処理が高速
取引手数料が無料
スケーラビリティが高い
ハードウェアの性能をそこまで必要としない
分散台帳技術のメリットである、改竄の困難性を享受しつつ、従来のブロックチェーンの課題である処理スピードや取引手数料、スケーラビリティの問題、リソースの問題を解決しています。
では、どのようにして実現しているのでしょうか?答えはその「Tangle」にあります。
What is Tangle?
Tangle とは、DAG(Directed Acyclic Graph)を利用したデータ構造です。DAG は有向非巡回グラフというのですが本記事とは外れるので詳しくは以下を参照してください。[2] 向きが付与されている、ぐるぐる回ることのないグラフ構造です。ここはComputer Scienceの知識になるので知っている方はより深い理解がしやすいと思います。
わかりやすいように、まず図で Tangle の構造を表します。
ここで、各正方形は 1 トランザクション(取引)だと思ってください。Dに注目すると、A,B,Cから矢印が向いていることが分かります。これはDというトランザクションが A,B,Cを承認したということを表しています。
順を追って説明すると、新しいトランザクションDが作成されると、Tangle は過去のトランザクションからランダムで少なくとも 2 個以上のトランザクション(A,B,C)を選びます。次にDは選ばれたトランザクション A,B,C が正しい取引であることを承認します。そしてDがA,B,Cを正しい取引であることを承認したらDがTangleに追加されます。この時DはTangleに追加されているけどまだ未承認のトランザクションであるということです。つまり新たな未来のトランザクションに承認されることになります。
ここがポイントでTangleに参加するには、過去のトランザクションを承認する必要があるのです。そうすることにより、従来のブロックチェーンの課題であった「マイニング」が不要になるのです。
今までのブロックチェーン(Proof of Work)ではナンスと呼ばれる値になるように「ハッシュ値」を大量のリソースを使って計算し、そのハッシュ値を割り出した人(マイナー)にブロック生成の権限が与えられました。そしてマイナーはどのトランザクションをブロックに含めるかを、各トランザクションに添付されている「手数料」の高い順に決定します。結果、マイナーは 1 ブロックに含まれるトランザクションの手数料の合計の仮想通貨を報酬として受け取るわけです。これが世界の人々がこぞって Bitcoin のブロックをマイニングするという動機な訳です。いわば「金銭欲」が、ブロック生成の動機になっています。このブロック生成が行われなければ、新しいトランザクションがブロックチェーンに追加されていかないので、分散台帳自体が成立しなくなってしまいます。しかしTangleでは、「ネットワークに参加するために、トランザクションを承認する」必要があるのでこの「マイニング」が不要なのです。つまり、マイニングをするマイナーがいなくなるのでマイナーにトランザクションを優先的に受け入れてもらうための手数料が必要ありません。そのため近年高騰する「手数料」問題が解決します。参加の動機が金銭ではなく、過去の取引を承認するため(仕組み上)というのが、過去の人の意思を引き継いでいく感じがするのも私が惹かれているポイントです。
上記が基本のシステムです。これにより、改竄の困難性、スケーラビリティの向上、従来のブロックチェーン比での高速処理も可能にしています。
改竄の困難性
「改竄の困難性」については、「新しいトランザクションが過去のトランザクションを承認」することで説明がつきます。先ほどの図で説明すると、トランザクション"13"が追加されたあとに、6,10,11 を承認しています。これは同時に以下のトランザクションも承認していることになります。
- 6 が承認している「1,4,1」
- 11 が承認している、「6,9」
- 10 が承認している「2,9」
つまり新しいトランザクションが追加されるごとに、過去の承認されてきたトランザクションを数珠繋がりで承認することになりTangle全体としての一貫性を担保しています。もし、過去のトランザクション2を改竄すると、それにつながっている 9,10 との整合性が取れなくなり合意が取れなくなるのです。
そして、忘れてはいけないのがTangleが「分散台帳技術」であるということ。つまり各ノードが"同期された"Tangleを保持しています。そのため、一つのノード内で過去のトランザクションを改竄して、ネットワークに提出されたとしても、他のノードで動いている Tangle と異なるデータになります。そのためその改竄されたトランザクションは受け入れられません。これがIOTAにおける改竄の困難性の正体です。
スケーラビリティの向上
今までの説明から、Tangleが大きくなると、承認されているトランザクションが多くなっていくことが分かると思います。これが何を意味するかというと、IOTAを利用する人が増えるにつれて「新しいトランザクションに承認される過去のトランザクション 2 つを選ぶ時の選択肢が増える」ことを意味します。例えば、過去のトランザクション「A,B,C」があったとします。ここに新しいトランザクション「D,E」が作成されました。この時、D,E は「A,B,C」から 2 個選んで承認する必要があります。ここで D が A,B を選択したとすると、E は未承認のトランザクションとして C しか選択肢がありません。そのため E は
D が A,B を承認するのを待ち、
D が未承認のトランザクションとして Tangle に追加されるのを待ち、
未承認のトランザクションとして C と D を選ぶ
必要があります。
しかし、承認されているトランザクションが「A,B,C,D」の 4 つあり新しいトランザクション「E,F」が作成されたとすると E が A,B を承認、F が C,D を承認するという作業を並行して行うことができるのです。
つまり、過去の取引が増えれば増えるほど、同時に処理できるトランザクション数が増えていくということになり、スケーラビリティの問題も解決します。
処理の高速化
処理の高速化についても、Tangleによって実現がされています。上述のように従来のブロックチェーンでは 1 つのブロックの生成に膨大な計算をする必要があり、Bitcoinでは大体 1 つのブロック生成に 10 分かかるとされています。Tangleでは過去のトランザクションを承認していくという仕組みをとっているため各トランザクション処理が高速に行われます。また、前述にのように手数料がかからないため、各トランザクションは平等に扱われます。Bitcoin などでは手数料が高いトランザクションほどブロックに含まれていく傾向にあるので、承認されるのに時間がかかるトランザクションが発生してしまいます。これも処理の遅延の原因の一つです。しかし、Tangle ではその必要がないので処理が速いのです。
ハイスペックなリソースを必要としない
ここが私が注目してる大きな点です。IOTA はそもそも IoT デバイス向けに設計された技術です。IoT デバイスは現代の PC のようにハイスペックな CPU やメモリを積むことが難しいです。しかし IOTA はTangleによる承認プロセスと、各ノードが独立してトランザクションを承認していき、その結果をネットワークに提出していくという形をとっているので限られたリソース上で動作することが可能なのです。
公式には以下の要件が記載されています。[4]
4 cores or 4 vCPU
8 GB RAM
SSD
これなら raspberryPi でもフルノードを動かすことができるので驚きです。
IOTAを利用した技術
私はこれらの特性から、IOTAにとても興味を持っていています。さまざまな IoT からの情報をIOTAに集積することで、「改竄されていないことが担保されたビッグデータ」を集めることができるので大きなポテンシャルを秘めていると考えます。実際、EU では EBSI というヨーロッパのブロックチェーンサービスインフラストラクチャとの協力[5]などが行われており、注目されている技術だと言えると思います。フォルクスワーゲンとの共同研究も行われていたようです。
私はこの IOTA を使って、「貢献した人が恩恵を受けられる仕組み」を作っていきたいです。
みなさんはこの技術についてどう思いますか?
引用
[1] IOTA 公式ページ, https://www.iota.org/, 2024年7月11日参照
[2] Wikipedia 有向非巡回グラフ ,https://ja.wikipedia.org/wiki/有向非巡回グラフ, 2024年7月11日参照
[3] The Tangle, Serguei Popov, https://assets.ctfassets.net/r1dr6vzfxhev/2t4uxvsIqk0EUau6g2sw0g/45eae33637ca92f85dd9f4a3a218e1ec/iota1_4_3.pdf
[4] IOTA Getting Started, https://wiki.iota.org/hornet/getting_started, 2024年7月11日参照
[5]IOTA, https://www.iota.org/solutions/ebsi, 2024年7月11日参照