こんにちは、だっちーです。
今回はブロックチェーンに変わると言われる新技術DAGについて解説していきます。
この記事はホワイトペーパーをもとに書いたので読む時間がない方や読むのがめんどくさい方にも役立てるかなと思います!
DAGというのはADKやIOTA、Byteballなどに実装されているブロックチェーンにかわる基盤技術の1つです。
まずはその仕組みを解説していきます。
Contents
DAGの仕組みとは?ブロックチェーンとどう違う?
まずはDAG(ダグ)とは何かなんですけど、
DAGという言葉自体は技術を表す言葉ではありません。
DAGは「Directed Acyclic Graph」の略で、有向非巡回グラフと呼ばれるグラフ理論の一つです。
名前の通りDAGの特徴は2つ。
・向きが有る
・閉路(循環)が無い
下の図はDAGの例を示した図です。

(7)から出発したと考えると
(7)→(11)→(2)
(7)→(11)→(9)
(7)→(11)→(10)
というように(7)から出発した情報は(7)に帰ってくることはありません。
DAGは例えばフローチャートのようなものにも使えます。
DAGを用いた料理レシピ、カレーのレシピを例にするとこんな感じです。

このような一方通行で循環しないグラフのことをDAG(有向非巡回グラフ)と言います。
ここまでは、グラフとしての「DAG」を説明しましたが、ここからは大本命の
仮想通貨としての「DAG」技術について解説します。
ブロックチェーンとDAGで取引の承認方法が違います。

ビットコインに使われているようなブロックチェーンは、上の図のような仕組みで
取引情報をブロックにまとめていて、1つのブロックに対して繋がっているブロックは1つです。
それらが1本の鎖(チェーン)となっているため、ブロックチェーンと呼ばれます。
取引を承認している人はマイナーと呼ばれる人が行っています。
一方で、DAGはブロックを形成せずに、取引情報をひとつずつ処理しています。
ひとつの取引情報の後ろには複数の取引情報がつながっています。

こちらの図に示すようにDAGは取引を承認するマイナーは存在しません。
DAGでは取引するには「前の複数のトランザクションを参照しなければなりません」
例を示すと赤で示した(11)が今行われた取引だとします。
(11)の人が(9)、(10)の「見ず知らずの誰かが行った未承認の取引」を承認します。
このシステムにより、DAGはマイナーではなく、取引を実際に行っている人が承認を行うので
報酬を与えなくても承認作業が行われます。つまるところ取引手数料が無料なんです!
トランザクションの不整合はどう解決する?
ビットコインなどのブロックチェーンベースの暗号通貨に利用されるブロックは
1つ前のブロックを参照しているため構造は1つの線上になります。
しかし、DAG構造は1つのトランザクションでたくさんの取引を参照可能です。
ブロックチェーンは一定時間ごとに1つずつ成長していくところ
DAGはたくさんのトランザクションが一斉に成長していきます。
つまりブロックチェーンに比べ、DAGはスケーラブルというわけです。
しかし、トランザクション間で不整合が起こったとき、DAGのスケーラビリティ上の利点がある問題を引き起こしてしまいます。
例えば、アドレスAからアドレスBに10枚のコインを送信するトランザクションをT1
同じ取引内容、AからBに10枚のコインを送信するもうひとつのトランザクションT2が存在します。
この2つの衝突したトランザクションがアドレスAにできてしまいます。
ブロックチェーンベースの暗号通貨の場合はT1(又はT2)が一度ブロックに保存されると
もうひとつのトランザクションT2(又はT1)は決してブロックに保存されることはないです。
つまり、T2はなかったことになります。

Aidos Kuneen White Paper (Japanese Draft)より引用
一方、DAGは衝突したトランザクション(上図の赤く色づけしたT1、T2)のどちらを有効化判断するのは難しいです。
そこで、DAGを採用している仮想通貨「ADK」が実際に行っている投票の方法を解説します。
下の図に示すのがDAG上における投票手順の例です。
Aidos Kuneen White Paper (Japanese Draft)より引用
この図ではトランザクションxとyが不整合を起こしています。
トランザクションxと6、7、8は自身の過去履歴にyではなくxを持つため、トランザクションxに投票します。
同様にトランザクションyと9、10、11はyに投票します。
トランザクション12は点線で囲まれた(10、11、12を含まない)DAG上の
再帰呼び出し(自分自身を呼び出す処理が書かれたプログラム上の関数)に基づき投票を行います。
トランザクション1~5は後続トランザクションのなかでyよりもxの方が投票数を多く獲得しているためxに投票します。
その結果、xの投票数がyよりも多いためトランザクションxが正当だと判断されます。
DAGを採用している仮想通貨ADKの利点とは?
ビットコインにおけるブロックチェーンの問題を解決する新しい仮想通貨「Aidos Kuneen」とは何がすごいのか?
ADKはiMeshと呼ばれるDAG技術を採用しています。
今回はブロックチェーンと比較したときのiMeshの利点を解説していきます。
スケーラビリティの向上
ビットコインはブロックサイズに限りがあり、上限が超えたトランザクションの保存ができません。
そのため、多くのトランザクションが送信された場合に「いま」のブロックに
トランザクションの保存がされなくなってしまうスケーラビリティ問題が生じています。(実際に何度もありました)
つまり、取引量が増えると10分以上は待たなきゃならないわけですね…
(ビットコインのブロックは約10分ごとに生成されるため)
iMeshではトランザクションのPoWが簡単に行うことができ、保存されるのもはやいです。
そのため、トランザクションが保存されるのを待つ必要がないわけです。
iMeshの利用者が増え、多くのトランザクションが行われると、
トランザクションの確定はより早く、より強固になっていきます。
手数料なし
ビットコイントランザクションの利用者はインセンティブとして
そのブロックのマイナーに手数料を支払わないといけません。
ビットコインの取引が増え、価格が上昇すると、相対的に手数料がバカ高くなります。
一時期はビットコインを送金するのに5000円とか…笑
ADKはマイナーが存在しないので、手数料の支払いがありません。
つまり、極少量の通貨を特別な技術なく送金する、マイクロペイメントが可能なわけです。
量子コンピューター耐性
2017年時点では量子コンピューターの開発はまだまだ初期段階ですが
量子演算の実験は着々と進んでいます。
Googleは量子演算技術の商用実用化が5年以内に実現するとレポートしています。
ビットコインは「ECDSA」というデジタル署名アルゴリズムを採用していて
それらは量子コンピューターの圧倒的演算力によって簡単に突破されるみたいです。
ADKはECDSAに代わり強力な量子コンピューターセキュリティを持つ
「XMSS」というハッシュベースの著名を採用しています。
XMSSは他のハッシュ構造ベースのサイズよりも大きく、長期にわたって
量子コンピューターシステムでの利用に耐えられます。
強い匿名性
ビットコインはトランザクションがすべて公開されているため、
だれでもアドレス間のビットコインの移動を見ることができます。
ADKはゼロ知識証明(ZKBoo)を採用しています。
そのため、コインをハッシュに送る際にはインプットしかわかりません。
コインはそのインプットを明かされることなく利用することで匿名性を保つことができます。
まとめ

DAGを採用している通貨は「IOTA」、「ADK」、「Byteball」、「Dagcoin」などがあります。
なかでも有名なのはIOTAでしょうか。
IOTAは最近のトレンドでもある、IoT(Internet of Things)に最適化された暗号通貨です。
DAGを使うことによって、ブロックチェーンに採用している暗号通貨よりも優れてる点が以下の通りです。
- スケーラビリティがある
- 手数料がかからない
- 承認時間が短い
1つめのスケーラビリティと2つめの手数料
ブロックチェーンはマイナーと呼ばれる第三者が承認作業を行います。
取引者が増加しても、マイナーが増えなければトランザクションがつまる心配があります。
さらに手数料を払わなければなりません。
ところがDAGは取引者と承認者が同じ人物であるため、取引者が増えると承認者も増えるということです。
さらにマイナーが存在しないため、手数料の支払いもありません。
3つめの承認時間
ビットコインはある一定の取引情報をまとめてブロックにして処理するため、
取引が発生してから10分ほどのタイムロスが生じます。トランザクションが詰まればさらに遅延します。
一方でDAGはブロックにまとめられず取引情報単位で処理を行うため、
すぐに承認作業に取り掛かることができ、タイムロスは発生しません。
今回はブロックチェーンにかわる新技術のDAGについて解説しました。
歴史は浅いですが、IOTAを筆頭にDAGを採用している通貨が今後、実績を積み上げていけば
知名度も上がり、新しい技術として注目を浴びるかもしれません。