Dapp のセットアップ
まず、Sequenceアカウントを作成していることを確認してください。まだお持ちでない場合はこちらから作成できます。Web SDKを利用するにはProject Access Keyが必要です。
web3ウォレットをアプリケーションに接続するためにSequenceConnectラッパーを利用する手順は以下の通りです:
Web SDKはwagmiの上に構築されているため、高度な設定やトランザクション送信、コントラクト呼び出しなどについては、wagmiのドキュメントをご参照ください。
- Viteアプリ
- NextJSアプリ
1
2
Web SDKの依存パッケージをインストール
Copy
Ask AI
npm install @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
# or
pnpm install @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
# or
yarn add @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
3
設定ファイルの作成
次に、設定を作成します。さらにカスタマイズしたい場合は、追加の設定パラメータ一覧をご参照ください。
[config.ts]
Copy
Ask AI
import { createConfig } from "@0xsequence/connect";
export const config: any = createConfig({
projectAccessKey: "<your-project-access-key>",
signIn: {
projectName: 'Sequence Web SDK Demo',
},
walletUrl: 'https://v3.sequence.app',
dappOrigin: window.location.origin,
appName: 'Sequence Web SDK Demo',
chainIds: [1],
defaultChainId: 1,
google: true,
apple: true,
email: true,
walletConnect: {
projectId: walletConnectProjectId
},
permissions: ...
});
4
プロバイダーコンポーネントの設定
ステップ3で作成した設定を、下記のように
main.tsx内のプロバイダーに渡します。[main.tsx]
Copy
Ask AI
import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import { config } from "./config";
import { SequenceConnect } from "@0xsequence/connect";
function Dapp() {
return (
<SequenceConnect config={config}>
<App />
</SequenceConnect>
);
}
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<Dapp />
</React.StrictMode>
);
5
接続モーダルの表示
[App.tsx]
Copy
Ask AI
import './App.css'
import { useOpenConnectModal } from '@0xsequence/connect'
function App() {
const {setOpenConnectModal} = useOpenConnectModal()
return (
<>
<button onClick={() => setOpenConnectModal(true)}>Connect</button>
</>
)
}
export default App
1
Web SDKの依存パッケージをインストール
Copy
Ask AI
npm install @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
# or
pnpm install @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
# or
yarn add @0xsequence/connect @0xsequence/hooks wagmi ethers viem 0xsequence @tanstack/react-query
2
Next.jsの設定を行う
wagmiや@walletconnectパッケージとの互換性を保つため、next.config.jsファイルに以下の設定を追加してください。これにより、
Copy
Ask AI
// Path: next.config.js
const nextConfig = {
webpack: (config) => {
config.externals.push("pino-pretty", "lokijs", "encoding");
return config;
},
};
pino-prettyに関する警告が解消されます。3
設定ファイルの作成
次に、設定を作成します。さらにカスタマイズしたい場合は、追加の設定パラメータ一覧をご参照ください。
[config.ts]
Copy
Ask AI
import { createConfig } from "@0xsequence/connect";
export const config: any = createConfig({
projectAccessKey: "<your-project-access-key>",
signIn: {
projectName: 'Sequence Web SDK Demo',
},
walletUrl: 'https://v3.sequence.app',
dappOrigin: window.location.origin,
appName: 'Sequence Web SDK Demo',
chainIds: [1],
defaultChainId: 1,
google: true,
apple: true,
email: true,
walletConnect: {
projectId: walletConnectProjectId
},
permissions: ...
});
4
プロバイダーコンポーネントの設定
ステップ3で作成した設定をSequenceConnectプロバイダーに渡します。アプリ全体をProvidersコンポーネントでラップするため、別途「providers.tsx」ファイルを作成します。
[src/app/providers.tsx]
Copy
Ask AI
"use client";
import React from "react"
import { config } from "./config"
import { SequenceConnect } from "@0xsequence/connect"
const Providers = ({ children }: { children: React.ReactNode }) => {
return (
<SequenceConnect config={config}>
{children}
</SequenceConnect>
)
}
export default Providers;
5
アプリをProvidersでラップ
アプリ全体をProvidersコンポーネントでラップします。
[src/app/layout.tsx]
Copy
Ask AI
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import Providers from "./providers";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
<Providers>
{children}
</Providers>
</body>
</html>
);
}
6
接続モーダルの表示
[App.tsx]
Copy
Ask AI
"use client"
import { useOpenConnectModal } from '@0xsequence/connect'
function Home() {
const { setOpenConnectModal } = useOpenConnectModal()
return (
<>
<button onClick={() => setOpenConnectModal(true)}>Connect</button>
</>
)
}
export default Home
7
web3操作には、wagmiが提供するReactフックを使うことで、トランザクション送信などの一般的な機能を簡単に実装できます。