DAG系チェーンの現在と展望


# 概要
　Generalized Blockchain（広義的ブロックチェーン）という大層な名を付けられ、現在では一般にDAG系仮想通貨、DAG系チェーンと呼ばれるようになったIOTA、Byteballなどだが世間の風当たりは温かくない。ただ、迫害されているというよりかは、「ブロックチェーンですらまだ未完成なのにそれを一般化するなんて」といった懐疑的な声や、ただ単に情報が少ない、大きかった産声以来音沙汰がないなどを理由に、神輿に乗せるには謎が多く、今更盛り上げにくいというニュアンスの方が正しい気がする。そこでとりあえず今現在のDAG系をまとめてみて外観を掴みやすくなるよう努めることにした。また、今回はDAG系の中でも特にIOTA、Byteball、Nano、Phybrについて書いた。

## 現時点での比較
　DAG系の台帳にも大きく種類があり、
> * **Tangle型**：１つのtxが２つのtxを参照して、その繰り返しで出来上がる台帳。（例）IOTA、Byteball
> * **Lettice型**：アカウントチェーンがアカウントごとに並行して生成されていく台帳。（例）Nano、Phybr

の２つがある。

# IOTA
　IOTAの基礎については筆者の[過去の記事](https://qiita.com/ABmushi/items/e271ff05884a7d47658d)や[IOTA日本ファンサイト](https://iotafan.jp/announcements/primer_on_iota-20170909/)様の記事を漁ってください。
　よく見るTangleの概略図を下に置いておく。

![dag-Page-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187795/bf8f95a3-8041-2abd-1bb8-8885985622e3.png)

　ブロックチェーンでは複数のトランザクションをブロック単位で承認するため混雑時に渋滞が起きる。しかし、IOTAのTangleでは、過去のトランザクションから２つ選んで承認することで１つのトランザクションを台帳に書き込むという方式を取っている。

　基礎は分かったけど、実際どうなの？という方のために、今後のIOTAはどうなっていくのかを主にDAG設計という観点から説明していく。注意としてはTangle技術自体、非常に生まれたての赤ん坊な研究なので、本記事・引用元の記事の内容に厳密さを期待してはいけない。どう成長していくかは令和のお楽しみだ。

## 局所的補飾（Local Modifier）
　ブロックチェーンにおける「１つの台帳。一つの解釈。」の原則を守らない形でコンセンサスを保持しようとする試みから発案された概念。ノード（クラスター）ごとに台帳を解釈して台帳を書き換え、つまり**局所的な補飾**を許可する。
　これによってDAGにおける代表的な攻撃「[寄生チェーン攻撃(Parasite chain attack)](https://arxiv.org/abs/1904.00996)」に対する耐性を上げることが出来る。寄生チェーンは悪意のあるサブチェーン（二重支払いTXを含む）を密かに構築し、十分な加重が集まったところでメインチェーンに繋ぐことで二重支払いを可能にする攻撃である。しかし、寄生チェーン構築には時間がかかるためそれが伝搬してきたときノードはそれが寄生チェーンの可能性が高いことを検知できる。ここで局所的補飾の出番が出てくる。つまり、各ノードにサブチェーンの構築時間を鑑みて加重を編集する能力を与えることで、例えば$$加重:=加重\div 構築時間$$といった局所的な補飾を施した後でチップ選択を行うといったことが可能になる。これによって寄生チェーン攻撃や攻撃に潜伏準備期間が必要なその他攻撃が防げるかもしれないという期待と仮説のもとで研究・実験が行われている。

> **参考文献**
> Local modifiers in the Tangle: https://assets.ctfassets.net/r1dr6vzfxhev/4p2Jh4jQzYwmQSqScgKW2G/6bd776742d48e6a44fca66845e956e8e/Local_Modifiers_in_the_Tangle.pdf
>  On the Tangle, White Papers, Proofs, Airplanes, and Local Modifiers: https://blog.iota.org/on-the-tangle-white-papers-proofs-airplanes-and-local-modifiers-44683aff8fea

## 群知能ノード（Swarm Node）による自己組織化
　悪名高かったIOTAのコーディネーターはついに[オープンソースされた](https://blog.iota.org/coordinator-part-4-an-open-source-coordinator-7d3804931058)がまだ運用はされている。その将来はもちろん撤廃を前提に動いているが、コーディネーターを分散的に運用する考えがあるらしい。
　[ICTノード](https://github.com/iotaledger/ict)という小さなノード群の[群知能](https://ja.wikipedia.org/wiki/%E7%BE%A4%E7%9F%A5%E8%83%BD)的な働きによってコーディネーターの役割を分散的に実現する研究開発が行われている。

## 経済的クラスター（Economic Clustering）
　上記局所的補飾は悪用もできる。しかし各ノードが経済的に利己的である前提で、各々が利益を最大化しあう（悪用とも言えるものも含む）営みによってむしろ台帳の安定が保たれるようなカオスの淵をP2Pネットワーク状に創発させることは出来ないだろうか。この命題に挑む中で考え出されたのが**経済的クラスター**という概念である。
　Tangleは本質的にサイドチェーンが含まれている（もしくはメインチェーンが存在せず、無数のサイドチェーンが並列している）と見ることもできるため、組織や団体、サービスが自分のチェーンを構築し、それらが横並びにゆるく繋がった台帳を構築することができる。経済的クラスターの考え方では、IOTAのノード群をノード運用者の任意の境界線でクラスター化し、その内では厳格なコンセンサス（堅い接続）を義務化する一方、その外とはコンセンサスを強制しないこと（**ゆるい接続**）を許可する。そしてその結果、クラスター運用者は、なるべく損をしないようなゆるい接続を最適解として**Tips-Selection**するようになり、最終的にクラスターネットワークのトポロジーが見えざる手によって自然構築されることを目指している。

　同じクラスター内のノード群は一心同体、つまりクラスター内で仲間割れはしないと考える。逆に考えると、信頼できるノードとしかクラスターを構築しないと言い換える。例えば一つの工場内のセンサー群や管理機器群をノードとして一つのクラスターを構築したり、ビル内のIoT機器を繋げてクラスターを構築すると考える。企業のサービス単位でも良いし、もっと広く一つの自治体でも良い。

　そうやって構築されたクラスターが世界には無数あり、クラスターごとにコンセンサスを取るコーディネーターが置かれる。ここでいうコーディネーターは前述した群知能ノードによって分散運用される。先ほど仲間割れしないと言ったのは厳密には正しくなく、正しくは仲間割れによる秩序崩壊を防ぐように報酬制度等を設計されたコンセンサスアルゴリズムがあると考える。

![dag-Page-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187795/25b6a38d-2c44-b6b6-65f1-338ca5dd0347.png)

　クラスター同士はゆるく繋がっており、地理的近さがクラスター間の近さに相当するようにクラスターネットワークは形成されると考えられる。ここでいうクラスター間の距離とはタングルの共有度（同じトランザクションを記録及び監視対象にする確率）である。クラスターは近隣のクラスターの分も含めてトランザクションを処理するが、それより遠くのトランザクションは無視しても良い。つまり、ユーザーのIOTAトークン残高はウォレットが接続しているクラスターによって変わる。別の言い方をすればクラスターとその近傍クラスター自体が固有の暗号通貨圏を形づくり、その中ではトークン供給が自由に操られる。また、クラスター間のトークン移動は専用の**ゲート**を介して行われる。

　現在のゆるい接続によって経済的損が生まれる箇所ではクラスター間の接続は今後切られるし、得する箇所には新たな接続が生まれる。地理的近さがクラスター間の近さに影響すると予想されるのはこのためである。もちろん経済的に合理的なら遠方のクラスターが結ばれることだってありうる。

![dag-Page-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187795/ee0d841d-83b2-4bf5-e23e-c95d02d8659b.png)

　クラスターの主な目的はIoTのデータ分散管理等にあるため、日々の支払いにこれら設計が不便と感じれば自分の資産をクラスター０（マスタークラスター）なるものに保管すれば良いとのこと。言い方を柔らかくすると、クラスターは独自トークン圏のようなものであり、マスタークラスターは世界共通通貨圏を構築するレイヤーと考えられる。

　このように自分とは関係ないところの情報は無視し、経済的に無視できない箇所だけを見るような行為によって経済的クラスターは形成されるだろう。

　現在ある様々な暗号通貨チェーン（BitcoinやEthereumなど）は独自に暗号通貨経済圏を構築しており、それらの[チェーン間通信](https://www.investinblockchain.com/blockchain-interoperability-projects/)は現在[Cosmos](https://cosmos.network/)や[ICON](https://icon.foundation/?lang=en)といったプロジェクトがやろうとしている。これをIOTAに例えると、BitcoinやEthereumといった暗号通貨経済圏はクラスターによって作られ、ゲートがチェーン間通信やDEXの役割を担うことになる。

　Bitcoinなどが単体でスケールしにくいのは、１つの巨大な経済圏内の全ての出来事を一つのチェーンに書き込もうとするからである。それに対して**Tangleのスケーラビリティが無限なのは、無数のクラスターが経済的合理性に基づいて、Tangleのトポロジーを個々が取捨選択して横に繋がっていくからである。**IOTAは一貫性のある巨大なチェーンを最初から用意することはそもそも目指しておらず、小さなサイドチェーンを各々が損しないように継ぎ足していく方法を選んだのだ。

## Coordicide
　コーディネーターを排除し、加重の概念変更、ノードの評価...といった仕組みを導入して、IOTAを真の意味で分散化させる取り組みとして[Coordicide](https://coordicide.iota.org/)が始まった。
　Coordicideが解決する二つの大きな問題として、
> 1. Tips-Selection問題
> 2. 投票問題

がある。
　本記事で述べた局所的補飾や経済的クラスターはTips-Selectionのメカニズムとして提案されているものである。もう一つの投票問題というのは、Tangle上の二つの矛盾するトランザクションのどちらを選び、それをP2Pネットワーク上の全てのノードでコンセンサスを取るかの問題を扱う。
　この投票問題に関しては、先日のEthereum Devcon 5でテストネットのローンチが発表されたEthereumをDAGにソフトフォークさせるプロジェクト[Athereum](https://www.tokenpost.com/AVA-Labs-releases-Athereum-testnet-subnetwork-moves-entire-ethereum-blockchain-on-AVA-platform-3774)の[Avalancheコンセンサス](https://hackernoon.com/avalanche-ava-blockchain-3-0-a-novel-metastable-consensus-protocol-28cdc4ee8984)も別の手法を唱えており、また、IOTA Coordicide的にも[２つの手法](https://coordicide.iota.org/module5)を挙げている。今後も議論と実験が長く続くであろうDAG特有のホットなトピックであるため、今後考えがまとまったら読める形にまとめたいと思ってはいる。

## まとめ
　IOTAの目指すところが実現すれば素晴らしいことは確かだが、今の所、ビジョンはあるがその実現は遠く、そもそも努力で実現可能なのかどうかも定かではない。と言うのもDAG構造を分散型台帳に用いることに関する基礎研究の歴史は浅いからである。長い目で見守っていくべきだ。

## 参考文献
> Economic Clustering and IOTA: https://medium.com/@comefrombeyond/economic-clustering-and-iota-d3a77388900
> IOTA Controlled Agent: Swarm Intelligence and Swarm Nodes in Economic Clustering: https://www.bitrates.com/news/p/iota-controlled-agent-swarm-intelligence-and-swarm-nodes-in-economic-clustering
> My take on IOTA Economic Clustering: https://medium.com/@za.uz/my-take-on-iota-economic-clustering-e00bd7db4812

# Byteball
　Byteballの台帳もTangle型と言える。ただ、コンセンサスの取り方など、現時点で異なる点としては以下の数点が挙げられる。
> 1. コーディネーターの代わりに12個に分散したwitnessを置く。
> 2. IOTAではデータ送信・送金が無料である。しかし、無料であるが上データ量の膨張・スパムという問題にIOTAは悩まされてきたし、今後の大きな課題でもある。それを解決するためにByteballでは1 byteのデータ書き込みに**1 Byte**（ByteはByteballの通貨単位）の手数料を取る。
> 3. スマートコントラクトの実装。

　以上の点を踏まえるとByteballはスマートコントラクトを実装した分散型ストレージの側面が強い。ただ、IOTAの章でも述べた通りByteballの将来性は、今後のTangle構造の研究成果に大きく依存している。

> 参考文献
Introduction to Byteball — Part 2: The DAG: https://medium.com/@Suirelav/introduction-to-byteball-part-2-the-dag-ce84ca4c4e01

# Nano (旧RaiBlocks)
　[Nano](https://nano.org/en)もDAG系仮想通貨と呼ばれるが、厳密にいうとIOTAのDAGとは構造がかけ離れている。まず、Nanoのブロックチェーンは**格子型ブロックチェーン（ブロックレティス、Block Lettice）**と呼ばれる。というのも、Nanoでは秘密鍵ごとにチェーン（**アカウントチェーン**）が割り当てられ、自分の秘密鍵で署名することによって自分のチェーンへの書き込みが行われるからだ。アカウントチェーンへの書き込みは非同期で行われるため送金は迅速に行われる。ただし、アカウントチェーンに二重支払いなどを含む矛盾するTXを書き込もうとしたor発見した・された場合は例外的に**投票**によってフォークを解決する。

　また、IOTAはUTXO型で台帳記録を書き積んでいくのに対して、Nanoはアカウント型であることも言及しておく。これによりTXデータの肥大化を軽減できる。

![dag-Page-3-nano.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187795/ba4924e9-a831-ad59-572c-887dabcb7329.png)

　上の図はアカウントチェーンを簡単に表したものである。AliceからBobへ送金する場合、Aliceが送金ブロックをAliceのアカウントチェーンに書き込み、Bobが受金ブロックをBobのアカウントチェーンに書き込むという２段階の作業を経て行われる。

> 参考文献
> Nano Block Lattice Explained: https://www.mycryptopedia.com/nano-block-lattice-explained/
> ホワイトペーパー: https://nano.org/en/resources/

# Phybr
　IOTA財団の外部からTangleの研究・実験を重ねTwitterで成果を不定期に発信してきた[Roman Semko](@RomanSemko)氏が考えたDAGの設計思想である。IOTAに採用されようと彼は頑張ってきたが、IOTA財団と特許・権利関係で揉めて決裂。結局、Semkoさんの孤軍奮闘でICOを行うのか、IOTA財団と和解するのか、今後実際どうなるかは不明。ただ、IOTAの独自IRIである[Hercules](https://gitlab.com/semkodev/hercules)を実装してきた彼自身が考える新たなコンセンサスアルゴリズムを取り上げてみる。

> * DAG上のtx群をとある目印を境目に区切る。その目印は、定期的に**マイルストーン**として既存のtx群から選ぶ（マイルストーンに参照されたtxの中に二重支払いがないか、加重はどれくらいか...などの基準で選ぶ）。別の見方をすればその区切られたまとまりをブロックチェーンのブロックとして見ることができる。
> * Phybrコンセンサスはそのマイルストーンの選び方に関するアイデアらしい（まだ公開されていない）。

　ただこのアイデアだけを見ると、DAGがブロックチェーンに回帰しているだけのように見えるが気のせいだろうか。

　また、Semko氏による[最新の記事](https://medium.com/deviota/phybr-explained-1-the-ledger-92a6362fcced)によると、今度は上記Nanoに類似したLettice型ブロックチェーンの形を取っていることが分かる。彼はどちらかと言うとDAG研究者と呼ぶに相応しいのかもしれない。

> 参考文献
https://medium.com/@romansemko/phybr-consensus-on-iota-dag-641ea71ecf53

# まとめ
　DAGについてまとめたかったものの、基礎研究レベル段階の概念を言葉にするのは大変で、結局翻訳で終わってしまった感があってやるせない。そしてIOTAに比重が重くなってしまったのも自分の努力不足である。ただDAG研究が一番熱心に行なっているのはIOTA財団なので、IOTAのアイデアが他に影響を与えることはほぼ確実だと言えるので許して欲しい。
　また、ソースコードが出てこない記事を書くのはそもそも大変だと分かった。