今日は、ブロックチェーンではなくDAGを構造として用いる暗号通貨についての記事を書いていきます。
DAGとは
DAGとは・・・
有向非巡回グラフ、有向非循環グラフ、有向無閉路グラフ(ゆうこうひじゅんかいグラフ、英: Directed acyclic graph, DAG)とは、グラフ理論における閉路のない有向グラフの事。有向グラフは頂点と有向辺(方向を示す矢印付きの辺)からなり、辺は頂点同士をつなぐが、ある頂点 v から出発し、辺をたどり、頂点 v に戻ってこないのが有向非巡回グラフである。
ということで、よく分からないと思うのでさらに要約すると以下のような図の構造のことをDAGと呼ぶようです。
ブロックチェーンでは、あるブロックに着目すると前と後ろに繋がるブロックが必ず一つでなくてはなりません。対してDAGでは、ブロックチェーンと同じように「向き」があるものの、あるブロックの前後には二つでも三つでも同時に繋がっていていいという特徴があります。
上図ではちょっと分かりにくいですが、単純な一本の直線状のブロックチェーンに対して、DAGは複数の細かい繊維が絡み合ってできた「糸」に例えることも可能です。(実際の糸とは違いDAGではそれぞれの繊維が繋がっています。)
ブロックという固定幅の容器を利用しなくてもよく(ブロックを利用するDAGコインの構想も存在します)、また、ブロックチェーンのような一本の直線状の構造でないことから、DAGはスケーリングに優れており、より多くのトランザクションを処理できる能力に長けているという特徴があります。
早速ですが応用例を見ていきましょう。
応用例
(参考)EthereumのGHOSTプロトコル
実は、Ethereumのブロックチェーンの構造はGHOSTというプロトコルに基づき、「DAG的」なものになっています。かなり制限されたかたちのものであるため、GHOSTの論文の中でDAGという言葉は直接使われていませんが、次の応用例で書いていくDagCoinやIOTAのなかでもDAGの一例として引用されています。
GHOSTプロトコルとは、短いブロックの生成時間・間隔でもセキュリティを高く保つために開発されたものです。一般論として、ブロック間隔が短すぎると最新の採掘ブロックの情報伝達のタイムラグの影響で、マイナーAが1秒前に正しいブロックを採掘できたのにも関わらず、その情報が伝わらないうちにマイナーBも正しいブロックを採掘し、結果的にマイナーAとマイナーBが同時に有効なブロックを採掘するというような状況が頻発します。この状況では一方のマイナーのブロックは孤立ブロック(orphan block)として認識され、全く無駄なものとなりチェーンが分岐することでネットワークのセキュリティ低下にもつながります。また、ハッシュレートの低いマイナーはブロックの生成確率が低いので、同時に孤立ブロックの生成確率がより高くなってしまい、マイニングに関する権限のさらなる集中化の要因の一つにもなっています。
Ethereum(GHOSTプロトコル)では、このような問題を解消するために、同時に採掘された孤立ブロック(Ethereumではuncle blockと呼ばれる)にも採掘者に報酬を与え、uncle blockが完全に無効なものとはならず、有効なブロックチェーン(メインチェーン)を決定する要素の一つとしてブロックチェーンに組み込まれます。Ethereumではビットコインのように単なる「最も長いチェーン」ではなく「最も重いチェーン」がメインチェーンになります。重いというのはより多くのuncle blockがぶら下がっているチェーンという意味です。
uncle blockはブロックの前後には複数のブロックが連なっていてもいいというまさにDAG的なものですが、uncle block内の取引自体は考慮されず、メインチェーンの決定論理とマイナーへの報酬以外に使用はされていないので、あくまでも本質的な構造は枝分かれのない一本のブロックチェーンであることに変わりはなく、普通EthereumをDAG構造のチェーンと見なすことはありません。
ちなみにGHOSTプロトコルの開発者であるAviv ZoharとYonathan SompolinskyによりSPECTREというまさにDAGベースのブロックチェーンも提唱されています。
※EthereumではPoWアルゴリズムEthashにも同じDAGが使われていますが、ブロックチェーン構造の話とは異なるので省略します。
(構想のみ)DagCoin
恐らくインターネット上で最初に構想が発表されたDAG構造の暗号通貨は、Rootstockの現技術者で最近はASICBOOSTの発明者の一人としても有名でSegwit2MB関連でもしばしば名前が出てくるSergio Demian Lernerが、2015年9月に発表したDagCoinと呼ばれるコインです。
ホワイトペーパーのなかでは、DAGチェーンがまとまらずに「発散」してしまう危険性を最も重要視しその対策を中心に記述されていますが、その他の詳細についてはあまり書かれておらず、ホワイトペーパーによる構想のみにとどまっています。
そして、どれだけ影響を受けたのか、あるいは全く参考にはされていないのかは不明ですが、DagCoinとかなり似た仕組みで発表され現在既に稼働されているのが次のIOTAです。
IOTA
IOTAホワイトペーパーより(リンクは最後にまとめて)
IOTAはInternet of Things(モノのインターネット)産業における暗号通貨として開発、2016年7月にチェーンがスタートして、マイクロペイメント(少額決済)に特化するということを中心の目標としています。マイクロペイメント特化ということで、送金手数料が無料なことが最大の特徴です。
構造は上図を見ていただければお分かりかと思います。DAGの構造をしており、ブロックではなくトランザクション一つ一つが四角で表現されていて、ビットコインのようなブロックサイズの概念がないため、理論上は無限の量のトランザクションを処理することが可能です。
IOTAにおいてDAG構造のことは「Tangle」と呼ばれています。IOTAでは、「トランザクションは前の二つのトランザクションを参照していなければならない」という原則が定められており、この原則によりTangleが生成されています。
取引手数料が無料であるというのが最大の特徴ですが、その理由はビットコインのように取引の承認者である特定の採掘者グループというものが存在せず、利用者一人一人が採掘者(=取引の承認者)であることから来ています。まずトランザクションの生成時には先述のように前の二つのトランザクションを参照(承認)することが必要です。この承認時の作業にまさにビットコインの採掘時と同じように暗号学的な計算、つまりプルーフ・オブ・ワークを行います。Tangleのスタート時にすべてのIOTAトークンが生成されているので、採掘報酬などは一切ありません(ICO時にトークンの分配が完了しています。)。
なお、ほとんどの暗号通貨で取引手数料が導入されている最大の理由が、ネットワークへのスパム攻撃の防止であり、スパム攻撃を危惧する人も多いかもしれません。手数料が無ければノーコストで攻撃し放題という訳です。IOTAでは、そもそものトランザクションの生成条件が、前の二つのトランザクションを承認しなければならない、ということになっているため、スパム攻撃にはPoWが必要となりますし、逆にネットワーク上の未承認の取引を迅速に承認させるための有益な行為にもなるという面白い仕組みになっています。関連して、ネットワークへの参加者が増えれば増えるほど、よりネットワーク自体も高速化し強固なものになっていきます。
ちなみに、IOTAでは(おそらく暗号通貨の中で初めて?)既に量子コンピュータ耐性のWinternitz署名という署名方式が導入されています。将来を見据えた実装といえますが、Winternitz署名においては基本的にアドレスが使い捨てであり、同じアドレスを使用し続けていると徐々に秘密鍵が解読されるリスクが上がってしまうという、プライバシーどころではない危険性があるので注意が必要です。
IOTAのような新しいDAG構造では、いかにして二重支払いを防ぐか、DAGチェーンの分岐・分裂を防ぐかという課題が最重要になるわけですが、まだ完全には理解できておらずホワイトペーパーに書かれていない対応もあるようですし、かなり長くなってしまいそうなこともあるのでここでは省略します。気になる方はホワイトペーパーなどを参照してください。
Byteball
Byteballホワイトペーパーより(リンクは最後にまとめて)
IOTAに続いて2016年12月にチェーンがスタートしたのがbyteballです。マイクロペイメント特化のIOTAに対してなんでもできるのがbyteballで、現在はウォレットには実装されていないものの、任意のデータを埋め込んだり、トークンを各自で発行できたり、幅広いスマートコントラクトプラットフォームを目指しています。匿名送金の機能も既に実装されており、blackbytesという基軸通貨のbytesとは異なる匿名トークンが配布されています。
構造的には上図のとおりIOTAと同じDAGですが、PoWとDAGを組み合わせたDagCoin→IOTAの流れとは異なり、byteballではPoWが利用されず12人のwitnessという役割のノードが生成した「メインチェーン」をもとにトランザクションに「重み」を付け、二重支払いを防いでいます。witnessによる安定したメインチェーンをもとにすべてのトランザクションが有効かどうか決定されるため、(恐らく悪意を持ったwitnessからの攻撃が成功する場合以外には?)DAGチェーンが再構成されて過去の確認されたトランザクションが改変されてしまうという可能性がゼロであり、一度確認された後になかったことになる可能性もゼロで、ビットコインのようないわゆる確率論的なファイナリティの問題(何確認待っても100%取引が覆されないとは言えない)が発生しないとされています。
byteballのwitnessはBitSharesのDPOSにおける20人前後のwitnessと同じく、ほとんどが善意のwitnessであることをもとに設置されており、何人かが悪意を持っていたとしてもチェーンへの攻撃を防げるほど十分多く、また利用者一人一人がwitnessを評価できるほど十分少ない数ということで、12人が選ばれています。こちらもDPOSと同じくwitnessは自らのプロフィールを公開し選挙のように選ばれ、利用者が不適切と判断すればwitnessから外すことが可能です(ただしDPOSではないので、投票権が基軸トークンのbytesに応じて割り当てられているわけではなく、RippleのValidatorに似ているイメージのように思います。)。
byteballでは取引手数料が当然かかり、取引データ1バイトあたり1byteトークンを支払わなければなりません。支払った手数料はwitnessが報酬として受け取ることになります。
最後に
ということで、DAGコインについて紹介していきました。確かにスケーリングに優れており、ビットコインのようなブロックサイズ問題に悩まされずに済むというのは大きな利点でしょう。
ただし、まだまだ新しく専門的な検証もそこまでされているのか分からず、チェーンのセキュリティはホワイトペーパーどおりにいくのか数十年単位で見た時には未知数ですし、IOTAではつい最近までまともに送金もできない状況であったりうまく分散化をすすめられるか(現在は黎明期であるためにいくつか中央集権的な仕組みを導入しているようです)等の課題もありますし、byteballにはwitnessのシステムの信頼性の他にも取引手数料の単価が固定されていることで、今後投機により価格が高騰した際に実用性に耐えうるか(ホワイトペーパーの中で価格の安定化も述べられていますが個人的には納得できない)などの不安点もあります。
参考サイト
https://eprint.iacr.org/2013/881.pdf
DagCoin: a cryptocurrency without blocks | Bitslog