ユーニックス総合研究所

  • home
  • archives
  • etherium-dapps

イーサリアム(Ethereum)のDAppsとは一体なんなのか?

イーサリアム(Ethereum)のDAppsとは?

次世代の技術として注目されているブロックチェーンですが、これを利用したプラットフォームに「イーサリアム(Ethereum)」があります。
DAppsとは「Decentralized Applications」の略で日本語にすると「自律分散型アプリケーション」という意味になります。

DAppsはイーサリアム上で動作するアプリケーションの一種です。
スマート・コントラクトと呼ばれるプログラムを組み込むことで、イーサリアム・ネットワークのブロックチェーンを利用することができます。
DAppsはいわゆるWeb3.0時代の次世代のアプリケーションと言われています。

この記事ではイーサリアムのDAppsについて具体的に解説します。

関連記事

イーサリアム(Ethereum)のDAppsとは一体なんなのか?

個人開発者がブロックチェーンとは?をわかりやすく解説してみた
メタバースとブロックチェーンの関係【The Sandbox】
ブロックチェーンの技術について具体的に解説します【初心者向け】

イーサリアムとは?

DAppsに必要とされるイーサリアムとは一体どういうものでしょうか?

イーサリアム(Ethereum)は分散型アプリケーション「DApps」や自動取引プログラム「スマート・コントラクト」を動作させるためのプラットフォームです。
プラットフォームとはつまり、ゲームで言うところのPS5みたいなものです。アプリがゲームソフトですね。

イーサリアムは2013年当時、大学生だったヴィタリック・ブテリン氏によって開発されました。
イーサリアムはブロックチェーン技術を利用したプラットフォームで、このイーサリアム上で動作するアプリケーションはイーサリアムのブロックチェーンを利用することが可能です。

イーサリアムのブロックチェーンのネットワークのことを指して「イーサリアム・ネットワーク」と言います。
DAppsはイーサリアム上で動作するので、このイーサリアム・ネットワークを使った通信も行うことが可能です。

ブロックチェーンとは?

ブロックチェーンとは仮想通貨である「ビットコイン」を実現するために開発された技術のことを言います。
分散型台帳と呼ばれ、「P2Pネットワーク」を使った分散型データベースとも言われます。

ブロックチェーンは取引の履歴をブロックと言う単位でデータベースに記録します。
そしてこのブロックがチェーンのように連なっていくことからブロックチェーンと呼ばれます。

ブロックチェーンのデータは基本的に変更することができません。
ブロックチェーンはP2Pネットワークで繋がった各ノードが同じデータベースを持っています。
ブロックチェーンに新しいブロックを追加するには、ブロックチェーンに参加している各ノードから合意を得る必要があります。
これを「合意形成」と言います。

また、ブロックチェーン上の取引は自動販売機のようにプログラムによって自動で行われます。
このプログラムを「スマート・コントラクト」と言います。

仮想通貨を扱うブロックチェーンを「ブロックチェーン1.0」と呼び、仮想通貨以外への応用をするブロックチェーンを「ブロックチェーン2.0」と言います。
イーサリアムとはこのブロックチェーン2.0を利用したプラットフォームです。

DAppsとは

DAppsとは「Decentralized Applications」の略です。
これは「自律分散型アプリケーション」という意味です。

いわゆるイーサリアム上で動作するアプリケーションで、イーサリアム・ネットワークを利用することができます。
Solidity」というイーサリアムで使用できるプログラミング言語を使い、スマート・コントラクトと呼ばれるプログラムを記述できます。
DAppsはこのスマート・コントラクトを実行可能です。

つまりDAppsはイーサリアムのブロックチェーンを利用できる次世代のアプリケーションということになります。

DAppsの特徴

DAppsの特徴はそのままイーサリアム、そしてブロックチェーンの特徴になります。

  • 一度起動したらゼロダウンタイムで稼働する
  • ブロックチェーンに記録したデータは変更(改ざんも)できない
  • スマート・コントラクトで追加するデータは参加者からの合意が必要
  • 一度登録したスマート・コントラクトの更新はできない

P2Pネットワークによる耐障害性がある(ゼロダウンタイム)

イーサリアムが使うブロックチェーンではP2Pという通信技術を使っています。
このP2Pは従来のクライアント・サーバー型の通信モデルとは違います

クライアント・サーバー型は中央にサーバーというパソコンを配置し、その周りのクライアントのパソコンがサーバーとデータを通信する仕組みです。
いわゆる現代のWebはこれでできています。

GoogleやAmazoneなどのホームページ(裏ではサーバーが稼働している)に私たちはブラウザからリクエスト(データをくれという要求)を送ります。
ホームページはそのリクエストに応えてデータをクライアントに送ります。

クライアント・サーバー型ではこの中央にいるサーバーがダウンすると、その周りにいるクライアントも通信できなくなります。
たとえばSNSなどはチャット機能がありますが、SNSがダウンすればこのチャット機能も利用できなくなり、ほかのユーザーと通信ができなくなります。

いっぽうP2Pでは、中央にサーバーを配置せずノードと呼ばれるパソコンが他のノードと相互に通信を行います。
各ノードはいろいろなノードと通信を行い、ノードたちは「P2Pネットワーク」と呼ばれるネットワークを構築します。

P2Pでは一台のノードがダウンしても、他のノードは別のノードと通信をすることでデータを得ることができます。
そのためP2Pは障害に強く、一度稼働したらダウンしない(ゼロダウンタイム)と言われています。

P2Pネットワーク全体をダウンさせるには、すべてのノードを停止させないといけません。
これは例えばインターネット全体を停止させることの困難さを想像して頂ければ、その大変さがわかると思います。

ブロックチェーンはこのP2Pで通信を行っています。
そしてイーサリアムはブロックチェーンを使います。
DAppsはイーサリアム上で動作しますので、つまりDAppsはゼロダウンタイムということになります。

変更と改ざんが難しいデータを記録できる

DAppsが稼働するイーサリアムが使うブロックチェーンでは、データである取引履歴をブロックと言う単位でデータベースに保存しています。
ブロックはチェーンのように1つ前のブロックと繋がります。

各ブロックは1つ前のブロックの「ハッシュ値」を持っています。
ハッシュ値とは、特定のオブジェクトから一意に生成される数字と英字の羅列です。
オブジェクトが同じものであれば必ず同じハッシュ値が生成されます。

たとえばブロックチェーンを改ざんしようとするアタッカー(攻撃者)がいたとします。
アタッカーはブロックのデータを改ざんします。
しかし、その改ざん前のブロックのハッシュ値は次のブロックが保持しています。
つまり次のブロックが持つハッシュ値と、改ざんしたブロックのハッシュ値を比べれば、改ざんがわかります。

このようにブロックチェーンではデータの改ざんが非常に発見しやすくなっています。

また、ブロックチェーンでは基本的にはブロックのデータは更新できません。
そのため、改ざんしようと思っても極めて困難です。

さらにブロックチェーンに新しいブロックを追加するには、ブロックチェーンの参加者から合意を得なければなりません。
参加者とはブロックチェーンのP2Pネットワークで繋がっているノードのことです。
このような仕組みを「合意形成」と言います。

DAppsから利用できるスマート・コントラクトというプログラムでは、ブロックチェーンにブロック(データ)を加えることができます。
しかしその場合は合意形成が必要になります。

このようにDAppsではイーサリアムのブロックチェーンに保存できるデータの変更と改ざんが極めて困難になっています。

スマート・コントラクトの更新はできない

DAppsはスマート・コントラクトを利用し、イーサリアム上で動作するアプリケーションです。
このスマート・コントラクトというプログラム自体はコンパイルされてブロックチェーンに登録されます。

スマート・コントラクトの作成者はスマート・コントラクトをコンパイルし、イーサリアムのネットワークに送信します。
ブロックチェーンに必要な色々な計算(合意形成を含む)を行っているのは「マイナー(採掘者)」と呼ばれる人たちです。
この人達は計算を行う代わりに、トークン(仮想通貨、イーサリアムでは「ETH」)を報酬として得ています。
マイナーはこのコンパイルされたデータを受信すると、それをブロックチェーンに書き込みます。

このときにコントラクト・アカウントと言うものが生成されます。
これのアドレスがスマート・コントラクトの作成者に送信されます。

DAppsの利用者はこのコントラクト・アカウントへ通信を行い、スマート・コントラクトを実行します。

このようにコンパイルされたスマート・コントラクトはブロックチェーンに登録されます。
ですので基本的に登録したスマート・コントラクトは更新することができません。

新しいスマート・コントラクトを登録して、ユーザーにはそっちを使ってもらうということなら可能です。
しかし古いスマート・コントラクトはブロックチェーン上にずっと残り続けます。

🦝 < バグがあったら大変だね

このような仕組みのため、スマート・コントラクトのリリースは宇宙開発に例えられることがあります。
一度ロケットを発射したらもう手が付けられないのと同じです。

🐭 < リリースが大変そう

DAppsのスマート・コントラクトはイーサリアムのどこで動くのか?

コンパイルされたスマート・コントラクトはイーサリアムのブロックチェーンに登録されます。
この登録されたバイトコードは「EVM(Etherium Virtual Machine)」というイーサリアムの仮想マシンで実行されます。

DAppsを作るってどういうこと?

よくあるDAppsは、既存の技術でスマート・コントラクトを利用するインターフェースを作るやり方です。
たとえばWebの技術を使う場合は、JavaScriptなどでフロントエンド部分を書いて、そのJavaScriptのコードからスマート・コントラクトを呼び出します。

そうすることでWebサイトからスマート・コントラクトを呼び出して、イーサリアムのブロックチェーンを使うことができます。
次世代のDAppsと聞くと身構えてしまいますが、仕組みはけっこう単純です。
要は既存の技術からスマート・コントラクトを使えばいいわけですね。

🦝 < DAppsの要点はつまりスマート・コントラクトってことね

ただしこのようなDAppsは、フロントエンド部分などに普通のクライアント・サーバー型のネットワークを使います。
そのため耐障害性が無いですし、フロントエンド部分には合意形成も機能しません。

ですのでピュアなDAppsはスマート・コントラクトのみで作られたアプリと言えます。
これはブロックチェーンの特徴がそのまま反映される分散型アプリです。

おわりに

今回はイーサリアムのDAppsについて開設しました。
ブロックチェーンを使った技術で注目を浴びているのがビットコインとこのイーサリアムです。
来るWeb3.0ではDAppsがWebにあふれる様になるかもしれませんね。

🦝 < ブロックチェーンという革命をリアルタイムで体験する私たち

🐭 < 幸せだな~