1. 概要

概要

スマートコントラクトを作成してデプロイしたら、次のステップはインターフェースを構築することです。これにより、ユーザーはスマートコントラクトの関数と不慣れな操作をすることなく、直感的かつ簡単にやり取りできるようになります。

現在、Web3業界ではReact(およびReactを基盤としたフレームワーク)が最も広く普及しています。Reactには豊富なライブラリとオープンなエコシステムがあるため、VueやAngularといった他のフレームワークが使用されることはほとんどありません。

インターフェースはスマートコントラクトとどのように連携するのですか?

フロントエンドUIは、RPCブロックチェーンノードに接続することで、スマートコントラクトとやり取りを行うことができます。RPCとはRemote Procedure Call(リモートプロシージャコール)の略で、基本的にはクライアント(ここではインターフェースを指します)がブロックチェーンネットワークに接続し、データの取得や、トランザクションの送信、スマートコントラクトとのやり取りなどの操作を実行するためのプロトコルです。

サーバーに自分でインストールして運用するブロックチェーンノードを利用することも、Node-as-a-service(Nodeサービスプロバイダー)を利用することも可能です。接続需要が少ない場合は、Node-as-a-serviceを利用することで大幅なコスト削減が可能です。

2. フロントエンドプロジェクトの構成

この技術スタックを使用して、以下のフロントエンドを構築します:

  • Next.js- React用本番環境向けフレームワーク
  • TailwindCSS- CSS用ユーティリティクラスライブラリ
  • Shadcn UI- Tailwind ベースの React コンポーネントライブラリ
  • Wagmi v2- ブロックチェーンとの連携のためのReactフックライブラリ
  • WalletConnect- DAppとウォレットを接続するための通信プロトコル
  • Rainbowkit- ウォレットとDAppを連携させるコンポーネントライブラリ
  • React Query Tanstack- React向けのクエリ実行ライブラリ

以下は、SolidityセクションにあるFundMeスマートコントラクトのUIを構築するためのサンプルプロジェクトの構成です。

.
├── README.md
├── abi
│   └── FundMe.json
├── app
│   ├── favicon.ico
│   ├── globals.css
│   ├── layout.tsx
│   ├── page.tsx
│   └── providers.tsx
├── components
│   ├── abi.ts
│   ├── fund-me-balance.tsx
│   ├── fund.tsx
│   ├── my-fund.tsx
│   └── ui
├── components.json
├── lib
│   └── utils.ts
├── next-env.d.ts
├── next.config.mjs
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
│   ├── next.svg
│   └── vercel.svg
├── tailwind.config.ts
└── tsconfig.json