WagmiでDAppを作成する会
createConfig
Walletとのコネクトや使用するJSON-RPCプロバイダやViem ClientsなどのConfigを生成する関数
DAppのInterface
const wagmiConfig = createConfig({
autoConnect: true,
connectors: w3mConnectors({ projectId, chains }),
publicClient
})
Docsにviem clientsの設定とあるがよくわからない
Params
autoConnect
autoConnect
というパラメータは最後に接続したWalletと自動で接続するかを定義できるっぽい。初期値はfalse
connector
DAppと接続するウォレットやチェーンの設定。
今回はWalletConnectを使用するのでw3mConnectors関数で設定する。
publicClient
JSON-RPCプロバイダ関連の設定。
viem
viemはJSON-RPCなどのEthereum Interfaceを抽象化したTypeScript向けライブラリらしい。
これはwagmiに統合されており、wagmiがスーパーセットのようになっているっぽい。
関係ないけどGitcoin Grantsに出てる👀
WagmiConfig Component
WagmiConfigはReact Contextの機能をラップしたコンポーネントで、この配下のコンポーネントがconfigを参照できるようにしている。
<WagmiConfig config={wagmiConfig}>
<ConnectButton />
</WagmiConfig>
publicClient
configureChains関数を使用してJSON-RPCプロバイダの設定を扱うらしい。
const { publicClient } = configureChains(chains, [w3mProvider({ projectId })])
この関数の最初のパラメータにはDAppが使用するチェーンで、最後にJSON-RPCのデータが入るっぽい。また今回はWalletConnectが提供するJSON-RPCクライアントを使用するので、w3mProviderで設定する。
useAccount
アカウントのセッションや接続されたアカウントのアドレスの状態を保持するHooks
const { address, isConnecting, isDisconnected } = useAccount()
addressには接続されたWalletのAddressが格納され、その後ろには接続状態が真偽値で格納される。
useConnect
configを基に対応したウォレットに向けてアカウントの接続を提供するHooks
const { connect, connectors, error, isLoading, pendingConnector } = useConnect()
return(
<>
{connectors.map((connector) => (
<Button
onClick={() => connect({ connector })}
key={connector.id}
>{connector.name}</Button>
))}
</>
)
wagmiConfigのconnectorsに格納したDAppへの接続を許可するWallet毎のコネクトBottonを再帰処理で実装する処理を定義している。