lesson-3_ウォレットに接続してみよう
⛓ チェーンやウォレットの種類を指定する
ウェブサイトがブロックチェーンとやりとりするためには、何らかの方法で私たちのウォレットをブロックチェーンに接続する必要があります。
ウォレットをウェブサイトに接続すると、ウェブサイトは私たちに代わってスマートコントラクトを呼び出す許可を得ることができるようになります。
これは、ウェブサイトへの認証と同じであることを忘れないでください。
以前のプロジェクトで「Connect to Wallet」実装を Ethers.js で作ったことがある方もいらっしゃるのではないでしょうか。
今回は、めちゃくちゃ簡単に作れるthirdwebのフロントエンドSDKを使って実装していきます。
src/pages/_app.tsx
に移動して、以下のようにコードを更新しましょう。
import { Sepolia } from "@thirdweb-dev/chains";
import { ThirdwebProvider } from "@thirdweb-dev/react";
import type { AppProps } from "next/app";
import { HeadComponent } from "../components/head";
import "../styles/globals.css";
function MyApp({ Component, pageProps }: AppProps) {
return (
<ThirdwebProvider activeChain={Sepolia}>
<HeadComponent />
<Component {...pageProps} />
</ThirdwebProvider>
);
}
export default MyApp;
かなりシンプルですよね。
このプロバイダーは、ユーザーの認証済みウォレットデータを保持し、それをAppコンポーネントに渡します。
Next.jsにおいてAppコンポーネント (_app.tsx
) で全ページ共通の処理を挟むことや、ページ初期化の制御などを行うことができます。
続いて、ヘッダー部分のコードを準備しましょう。
srcディレクトリの中にcomponents/head.tsx
を作成し、以下のコードを追加します。
import * as React from "react";
import Head from "next/head";
export const HeadComponent = () => {
return (
<Head>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<meta name="theme-color" content="#000000" />
<title>Create a DAO tool from scratch</title>
<meta name="title" content="Create a DAO tool from scratch" />
<meta
name="description"
content="TypeScript + React.js + NEXT.js + Thirdweb + Vercel 👉 Ethereum Network 上でオリジナルの DAO を運営しよう🤝"
/>
{/* Facebook */}
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.shiftbase.xyz/" />
<meta property="og:title" content="Create a DAO tool from scratch" />
<meta
property="og:description"
content="TypeScript + React.js + NEXT.js + Thirdweb + Vercel 👉 Ethereum Network 上でオリジナルの DAO を運営しよう🤝"
/>
<meta property="og:image" content="/banner.png" />
{/* Twitter */}
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://www.shiftbase.xyz/" />
<meta property="twitter:title" content="Create a DAO tool from scratch" />
<meta
property="twitter:description"
content="TypeScript + React.js + NEXT.js + Thirdweb + Vercel 👉 Ethereum Network 上でオリジナルの DAO を運営しよう🤝"
/>
<meta property="twitter:image" content="/banner.png" />
</Head>
);
};
続いて、ルートディレクトリ直下にあるpublic
フォルダの中に以下の画像をbanner.png
という名前で保存します。
これで、ヘッダーの準備が整いました。
⚠️ 以前にdApps開発取り組んだことがある場合、メタマスクの接続済みサイトから https://localhost:3000 を解除しておきましょう。