DAppsとは
DApps(Decentralized Applications、分散型アプリケーション)とは、ブロックチェーン上のスマートコントラクトをバックエンドとして動作するアプリケーションのこと。
従来のWebアプリケーションでは、企業が管理するサーバーにロジックとデータが集中している。DAppsでは、コアとなるロジックとデータがブロックチェーン上に存在し、特定の運営者がサービスを停止したりデータを改ざしたりできない構造になっている。
構成要素
典型的なDAppsは以下の要素で構成される。
- スマートコントラクト: アプリケーションのロジック。ブロックチェーン上にデプロイされる
- フロントエンド: ユーザーが操作するUI。通常のWebアプリケーションと同様にHTML/CSS/JavaScriptで構築される
- ウォレット: MetaMaskなどのブラウザウォレットがユーザーの秘密鍵を管理し、トランザクションに署名する
フロントエンドとスマートコントラクトの間は、ethers.jsやwagmiといったライブラリがRPCを通じて接続する。
代表的なDApps
- Uniswap: トークン交換のDEX。スマートコントラクトが流動性プールと価格計算を担う
- Aave: レンディングプロトコル。貸し借りのロジックがすべてオンチェーンで動作する
- OpenSea: NFTマーケットプレイス。売買のマッチングと決済にスマートコントラクトを使用する
- ENS(Ethereum Name Service): ウォレットアドレスに人間が読める名前(
.eth)を紐づけるサービス
従来のWebアプリケーションとの違い
| DApps | 従来のWebアプリ | |
|---|---|---|
| バックエンド | スマートコントラクト(ブロックチェーン上) | 企業が管理するサーバー |
| データ | ブロックチェーンに記録(公開・改ざん不能) | データベースに保存(運営者が管理) |
| 認証 | ウォレット接続(秘密鍵による署名) | メールアドレス・パスワード |
| 停止・検閲 | コントラクトはデプロイ後に削除できない | 運営者の判断で停止可能 |
| 更新 | 原則としてコントラクトは変更不可(プロキシパターンなどの例外あり) | 運営者が随時更新可能 |