NFTをデプロイしよう
🥳 Initialize SDK
前回のLessonにより、thirdwebのスクリプトを実行する環境構築を行いました。
それでは実際にスクリプトを書き、メンバーシップNFTをコントラクトにデプロイしていきましょう。
src/scripts/1-initialize-sdk.ts
を作成して、以下を追加します。
import nextEnv from "@next/env";
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
// 環境変数を env ファイルから読み込む
const { loadEnvConfig } = nextEnv;
const { PRIVATE_KEY, CLIENT_ID, SECRET_KEY } = loadEnvConfig(
process.cwd()
).combinedEnv;
// 環境変数が取得できているか確認
if (!PRIVATE_KEY || PRIVATE_KEY === "") {
console.log("🛑 Private key not found.");
}
if (!CLIENT_ID || CLIENT_ID === "") {
console.log("🛑 Client ID of API Key not found.");
}
if (!SECRET_KEY || SECRET_KEY === "") {
console.log("🛑 Secret Key of API Key not found.");
}
const sdk = ThirdwebSDK.fromPrivateKey(PRIVATE_KEY!, "sepolia", {
clientId: CLIENT_ID,
secretKey: SECRET_KEY,
});
// ここでスクリプトを実行
(async () => {
try {
if (!sdk || !("getSigner" in sdk)) return;
const address = await sdk.getSigner()?.getAddress();
console.log("SDK initialized by address:", address);
} catch (err) {
console.error("Failed to get apps from the sdk", err);
process.exit(1);
}
})();
// 初期化した sdk を他のスクリプトで再利用できるように export
export default sdk;
たくさんあるように見えますが、やっていることは以下の2つだけです。
- thirdwebの初期化
- 初期化したSDKを他のスクリプトで再利用できるようにexport
これは、サーバーからデータベースへの接続を初期化するのと似ています。
🍬 SDK の初期化を実行する
次に、以下を参考にpackage.json
に"type": "module",
の記述を追加してESModulesを有効化してts-nodeを使用できるように設定を変更します。
続いて、next.config.js
を以下のとおり変更します。
/** @type {import('next').NextConfig} */
export const nextConfig = {
reactStrictMode: true,
};
ここまで準備ができたら、ターミナルに移動して以下のコマンドを実行しましょう。
yarn node --loader ts-node/esm src/scripts/1-initialize-sdk.ts
スクリプトを実行して成功すれば、以下のような結果が出力されます。
SDK initialized by address: 0x8cB688A30D5Fd6f2e5025d8915eD95e770832933
Done in 3.62s.
ウォレットのアドレスが表示されたら、SDKの初期化が正常に完了したことを意味しています。
📝 備考: ExperimentalWarning
のようなランダムな警告が表示されることがありますが、アドレスが表示されていることを確認してください