巷のDAppsはCentralizedなDApps、つまりCAppsであるという話

最近ブロックチェーンやスマートコントラクトといった言葉が一般的になり、様々な場所でその名前を聞くようになりましたが、それと合わせてDAppsを開発している、勉強しているという人に会う機会も増えてきました。
また、CryptokittiesやEtheremonが話題になりDAppsをいうものがより身近になったことで、DAppsを知っている人自体はどんどん増えてきたように感じます。

しかしながら、BitcoinやEthereumといったDecentralized(非中央集権)なサービスのイメージやDAppsという名前も相まって、”スマートコントラクトで書いたアプリケーション”=”DApps”=”Decentralizedな仕組みのサービス”というような認識が広がっているような場面に出くわすことも多々あり、開発者の中でDAppsとは何を指しているのか、認識を問いたいと考えるようになりました。

そこで、先日開催されたEthereumの開発者コミュニティ「Hi-Ether」のMeetup(#6 Tokyo)にて、「DAppsゲームから読み解くCentralizedなDApps」というタイトルでLTをし、本当に君たちが見ているDAppsゲームはDecentralizedなのか?という疑問を投げかけてきました。

その時の資料はこちら。

speakerdeck.com

まずはDAppsの定義に関して認識を合わしたく、参考としてビットコイナーの大石さんのブログ「ビットコイン研究所ブログ」よりDAppsの定義を引用しました。

DAppsとは

  1. アプリケーションは、オープンソースであること。オペレーションは自動であり、中央のコ ントロール主体を持たないこと。トークン、データ、レコード、などにつき、暗号化されて 分散化されたブロックチェーンを利用していること。
  2. アプリケーションは、オープンに流通可能な、暗号トークンを持っていること。アプリケー ションの利用に際してトークンを利用すること。参加者には、そのトークンによってリワー ド(報酬)が支払われること。
  3. アプリケーションはマーケットやユーザーからの改善要求によりプロトコルを改善していく こと。この改善は、ユーザーのコンセンサスによること。

もはやこの定義を見ただけでも、巷のDAppsのほとんどはDAppsと呼べないんじゃないか感が漂ってきます。
その「DAppsと呼べない感」を明確化すべく、CryptokittiesEtheremonのシステム構成を調査してみました。

まずはCryptokittiesのシステム構成を見てみます。(若干推測も入っています。)

サービスはherokuで管理されており、クライアント側からはAPIサーバーを呼ぶことでデータを取得する通常のSPAと同じような構成になっています。

考え方として、Cryptokittiesのコントラクト自体は誰でも呼び出せるので、このwebサービス運営元はCryptokittiesのコントラクトを呼び出して便利に使えるアプリケーションを提供するサービスプロバイダーの1つなのであると定義すれば、各処理で直接コントラクトを呼ばずにAPIを経由することで便利にサービスを使えるようにしているという構成に納得感はあります。
しかし、自分自身が保持するKittyたちを参照するところもAPI経由であるというのは、自分自身が保持していると思っていたKitty達は、ブロックチェーンを参照しているものではなく、彼らのDB上に刻まれたデータに過ぎないということになりますので、グッと納得感は下がっていきます。
また、そのDB内のデータをもとにKittyの売買や交配といった実際にトランザクションを発生させることになるので、これはいちサービスプロバイダーを、ただの便利機能を提供してくれるサービスプロバイダーとして以上に信頼する必要が出てくることを意味していると思います。

これは果たしてDecentralizedな仕組みと言えるのでしょうか。

また、サービスを提供する側として、アプリケーション自体がCentralizedでもしょうがない、大切なのはコントラクトだ!という考え方もあると思うので、次は実際のコントラクトを見てみようと思います。(コントラクトはこちら)

onlyCEOやonlyCLevelなど、中央集権感丸出しのmodifierが並んでいます。
pauseなどアプリを止めるfunctionも存在しています。
これらのmodifierはKittyが作成される処理だったり、各種ゲームで使用するパラメータを設定する処理だったりで使用されます。
ここからみてわかる通り、コントラクト自体も中央で管理することが前提となっているのです。
CEOが怒ったら、Cryptokittiesはおしまいなのです。

Etheremonについてもほぼ同じで、違うのはherokuなのかDigitalOceanなのかというところだけです。(コントラクトはこちら)

ここまでみて分かることは、やはりゲームという性質上、サービスを提供するには完全にDecentralizedな仕組みにするのは難しく、CentralizedなApplication、つまりCAppsになってしまうのは仕方がないということなのだと思います。

ではなぜ、Centralizedなのに、CryptokittiesやEtheremonが話題になり、そして実際にKittyやMonstarは売買されているのでしょうか。

Cryptokittiesが話題になったのは、DAppsとして初めて多くの人が遊べるようになったアプリケーションだったからでしょう。
そしてEtheremonはその流れでポケモンぽくさらにゲーム性が高くなったことで人気が出たのだと思います。

これらDAppsと言われるゲームは、プレイしてみると分かるですが、ほぼ全てのアクション、例えばモンスターを捕まえたり、トレーニングしたりするのに手数料がかかるので、実際にはなかなか気軽に遊ぶことはできません。
盛り上がっていた当時、ふとTwitterでDAppsで遊んでいる人を見てみたら、多くの人が「いくら投資したか」「いくら回収できたか」などお金の話をしていました。
これはもはやゲーム自体を楽しんでいるというよりは、ゲーム性の高い投資もしくは投機を楽しんでいると言えます。

また、デジタルアセットに価格が高騰して売買される理由については、一般的なトレーディングカードと同じと考えてよいと思います。
とあるカードの発行枚数が少なくレアだと認知される時、前提条件としてそのカードは発行団体がその気になれば追加発行してレアではなくさせることができるけれど、そんなことはしないはずなので発行枚数は少ないままであるということを信じることになります。
そしてその上でレアカードだと認知し、そのカードを欲しがる人が多く発生して値段が需要と供給のバランスで価格が釣り上がって行きます。
これがまさに、CryptokittiesやEtheremonといったDAppsゲームにおいて、Centralizedだけれどもデジタルアセットが価値が上昇し、売買される理由なのです。(あくまで、価格上昇する理由の1つとしてですが。)

その上でプレイヤー達は、このCentralizedなDAppsゲームの中で自分は儲かるはずと上昇相場に身を任せ、ただただババ抜きのように自分が最後に損する側に回らないようにゲームを繰り広げていただけだったのです。

では、現在DAppsと言われるアプリケーションは一体なんなのかと言いますと、シンプルにただブロックチェーンを活用したアプリケーションであるということです。

それ以上でもそれ以下でもなく、ただ設計思想によっては非中央集権型のアプリケーションとすることもできるというだけなのです。
つまり、ブロックチェーンの特性をうまく活用できていれば、DAppsゲームのようにCentralizedなアプリケーションでも問題ないのです。

しかしながら、DAppsという名前のせいなのかブロックチェーン= Decentralized(非中央集権)という認識だからなのかわかりませんが、”DApps”=”Decentralizedな仕組みのサービス”という認識が広まっているようにみえます。

実際にHi-EtherのMeetupでLTをした後の懇親会では、「どうやってDecentralizedな仕組みでゲームを提供しているのか不思議だった」「DAppsについてモヤモヤしていた部分が明確化してスッキリした」などの声が多くあり、”DApps”=”Decentralizedな仕組みのサービス”いう認識をもている人やそういう認識ではありつつも違和感を感じている人たちが多くいたようでした。

別に、DAppsだからと言って全てがDecentralizedな仕組みである必要はないのです。
まだキラーアプリケーションとなるDAppsは世に出ていないので、Decentralizedにとらわれずこれから多くの人がDAppsを開発してうまい活用方法を模索していけばいのです。
そうした思いを込めて、スライドの最後はこう締めました。

クソみたいなDApps作ろうぜ!

動画はこちら。

www.youtube.com

The following two tabs change content below.
Akihiro Tanaka

Akihiro Tanaka

Engineer/UI Designer
UI設計を得意とするエンジニア。 現在はDApps開発しています。
好きな言語はTypeScript、好きなフレームワークはIonic、Angular。 趣味はハーレー、キャンプ、アンティーク。
WEB: http://tanakas.org/