DistributedとDecentralizedについて

こんにちは。CREWZ の金野です。

今回は、Blockchainを語る上で様々な議論があるDistributedとDecentralizedについてまとめてみました。

はじめに、DistributedとDecentralizedを辞書で引くと、どちらにも分散と言う意味があります。敢えて違いを意識するとDecentralizedは非中央集権型となるでしょう。いまいち違いが分かりにくいので英語のまま使用することにします。

下の図は、1962年9月に発表されたPaul Baran氏の論文「On distributed communications network 」に掲載されたもので、ブロックチェーンを説明するときによく出てくるものです。

Decentralizationの意味については、Ethereum創始者Vitalik Buterin氏のブログ が参考になります。Vitalik氏はブログの中で、残念ながら広く一般的になっているこの図は完全に役に立たないと述べています。

再度上の図を見てみましょう。Centralizedは全てのノードが中央に繋がっています。Decentralizedは小さなCentralizedが複数あり、そのCentralized同士が繋がっています。そして、Distributedはノードがメッシュ状に繋がっています。
この図を見る限り、Distributedこそが今のブロックチェーンの姿に見えます。

Centralizedなシステムは、現在最も広く普及しているソフトウェアアプリケーションのモデルです。中央の一か所が全てをコントロールしています。Facebook、Twitter、Amazon、Googleなどのサービスはこのモデルに該当します。

更に上記サービスでは、処理速度向上とデータレイテンシー向上を図るため、内部的にDistributedな構造を採用しています。 つまり、CentralizedかつDistributedなシステムと言えるでしょう。

DistributedとDecentralizedの違いは何なのか?

Distributedは一つのノードだけではなく複数のノードにわたって処理が行われるというもので、一つの実体のコントロール下にあるということではありません。一方、Decentralizedはどのノードも他のノードに何をすべきか指示しないというもので、一つの実体によって処理がコントロールされません。

Decentralized Apps(DApps)とは何か?

実際様々な議論があり、これが正解と言えるほど単純なものでもありません。
私の理解するところでは以下の通りです。

[システムモデル]
- Centralized
- Centralized & Distributed
- Distributed & Decentralized (DApps)

Decentralized Appsとは、Peer-to-Peer技術を使ったブロックチェーンや他のLedger上の複数のノードにDistributedされたアプリケーションであり、かつDecentralizedなコンセンサスを実現したものです。これにより一部のノードが機能しなくなっても機能し続けることができます。
これらによってDecentralized Appsが革新的と言われる所以なんだと思います。

CREWZ では、ブロックチェーン開発に注力しています。