2019年2月10日こんにちは、だっちーです。今回はブロックチェーンに変わると言われる新技術DAGについて解説していきます。この記事はホワイトペーパーをもとに書いたので読む時間がない方や読むのがめんどくさい方にも役立てるかなと思います!DAGというのはADKやIOTA、Byteballなどに実装されているブロックチェーンにかわる基盤技術の1つです。その仕組みを解説していきます。まとめDAGの仕組みとは?ブロックチェーンとどう違う?まずはDAG(ダグ)とは何かなんですけど、DAGという言葉自体は技術を表す言葉ではありません。Graph」の略で、有向非巡回グラフと呼ばれるグラフ理論の一つです。名前の通りDAGの特徴は2つ。・向きが有る・閉路(循環)が無い下の図はDAGの例を示した図です。有向非巡回グラフの例(Wikipeadi参照)(7)から出発したと考えると(7)→(11)→(2)(7)→(11)→(9)(7)→(11)→(10)というように(7)から出発した情報は(7)に帰ってくることはありません。DAGは例えばフローチャートのようなものにも使えます。DAGを用いた料理レシピ、カレーのレシピを例にするとこんな感じです。このような一方通行で循環しないグラフのことをDAG(有向非巡回グラフ)と言います。ここまでは、グラフとしての「DAG」を説明しましたが、ここからは大本命の仮想通貨としての「DAG」技術について解説します。ブロックチェーンとDAGで取引の承認方法が違います。ビットコインに使われているようなブロックチェーンは、上の図のような仕組みで取引情報をブロックにまとめていて、1つのブロックに対して繋がっているブロックは1つです。それらが1本の鎖(チェーン)となっているため、ブロックチェーンと呼ばれます。取引を承認している人はマイナーと呼ばれる人が行っています。一方で、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はなかったことになります。DAGは衝突したトランザクション(上図の赤く色づけしたT1、T2)のどちらを有効化判断するのは難しいです。そこで、DAGを採用している仮想通貨「ADK」が実際に行っている投票の方法を解説します。下の図に示すのがDAG上における投票手順の例です。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が正当だと判断されます。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でしょうか。Things)に最適化された暗号通貨です。DAGを使うことによって、ブロックチェーンに採用している暗号通貨よりも優れてる点が以下の通りです。スケーラビリティがある手数料がかからない承認時間が短い1つめのスケーラビリティと2つめの手数料ブロックチェーンはマイナーと呼ばれる第三者が承認作業を行います。取引者が増加しても、マイナーが増えなければトランザクションがつまる心配があります。手数料を払わなければなりません。ところがDAGは取引者と承認者が同じ人物であるため、取引者が増えると承認者も増えるということです。マイナーが存在しないため、手数料の支払いもありません。取引が発生してから10分ほどのタイムロスが生じます。トランザクションが詰まればさらに遅延します。DAGはブロックにまとめられず取引情報単位で処理を行うため、すぐに承認作業に取り掛かることができ、タイムロスは発生しません。今回はブロックチェーンにかわる新技術のDAGについて解説しました。歴史は浅いですが、IOTAを筆頭にDAGを採用している通貨が今後、実績を積み上げていけば知名度も上がり、新しい技術として注目を浴びるかもしれません。普段はブロックチェーンプログラム勉強しながらたまにブログ書いてます。技術からみた仮想通貨とブロックチェーン。