プレイブック
メインネット Web3Modal とウォレットの強化 (Web3modal)
MetaMask のみから Web3Modal + WalletConnect + Coinbase WalletLink への移行。 chainId、ガス、アドレスの強化。
NFTコレクションのミントとメインネットの強化
一部 4 の 4
CBD オールスターと自信のあるゴリラのミント サーフェス: WIP ホワイトリスト ファネル、IPFS メタデータ、プレースホルダー→公開パイプライン、Web3Modal によるメインネット ウォレットの強化。
メインネットは単一ウォレットの前提を打ち破る
Gorillas メインネット 1.8 では、All-Stars/1.4 時代の window.ethereum.enable() パスが削除されます。 Web3Modal キャッシュプロバイダーで開きます。 WalletConnect (Infura ID) とカスタム Coinbase WalletLink (chainId: 1) が ProviderOptions に追加されます。 ConnectWeb3 → ethers Web3Provider → アドレス;コントラクト インスタンスはモーダル プロバイダー経由で通信するようになりました。```text Before (All-Stars / early) window.ethereum only → Web3
After (mainnet 1.8) Web3Modal ├─ WalletConnect (Infura) ├─ WalletLink / Coinbase (chainId 1) └─ injected (MetaMask) ↓ provider → ethers Web3Provider ↓ getNftContract(Web3(provider))
## 最初に説明した概念```text
📦 Web3Modal
Çoklu cüzdan bağlantı UI'si; providerOptions ile WalletConnect/WalletLink enjekte edilir.
📦 WalletConnect
QR / mobil cüzdan köprüsü; Infura (veya RPC) id ister.
📦 WalletLink
Coinbase Wallet connector; appName, networkUrl, chainId ile kurulur.
📦 cacheProvider
Son başarılı provider'ı hatırlama; reconnect UX'i, stale session riski.
```RPC/Infura プロジェクト ID は構成です。プレイブックには秘密は保持されません。キーはリポジトリではなく環境にあります。
## MetaMask だけではなぜ不十分なのでしょうか?
ランディング FAQ ではまだ MetaMask と表示される場合があります。メインネットユーザーはCoinbase WalletとモバイルWalletConnectを望んでいます。単一の噴射パスがファンネルをカットします。 1.8 決定: モーダルを使用したマルチコネクタ、ネットワーク: 'メインネット'。```text
User segments
Desktop MetaMask
Mobile WC
Coinbase WalletLink
↓
one ConnectWeb3() API
```## 接続ライフサイクル
ConnectWeb3: web3Modal.connect() → Web3Provider → getAddress。 DisconnectWeb3:clearCachedProvider + Provider.disconnect + リロード。 getNetwork プロバイダーを介して netId を読み取ります。コントラクトゲッターは、initialState.provider で Web3.eth.Contract を確立します。レガシー appWeb3() Infura フォールバックは、メインネット署名パスであってはなりません。```text
connect → address
getNetwork → chainId check
mint/reveal only if chainId OK
disconnect → clear cache → reload
```## ADR: ウォレットのファサードとしての Web3Modal
決定: mint/reveal utils を window.ethereum に直接接続しないでください。モーダル ファサードのアドレスとプロバイダーを指定します。さらに、コネクタを追加するかどうかは製品の決定によって決まります。マイナス: ethers + web3 デュアル スタックとcacheProvider の古い状態。軽減策: mint の前にchainId をアサートし、切断時にキャッシュをクリアします。```text
ADR-04 Web3Modal facade
UI → ConnectWeb3 / DisconnectWeb3
Utils → provider from modal state
Guard → chainId === 1 before send
Reject → wrong net / no provider
```## メインネット障害のプレイブック
1) 本番環境のスタブ コントラクト アドレス — tx は「成功」として表示されますが、状態は間違っています。 2) 間違ったネットワーク — 署名、メインネット供給は Rinkeby/Goerli では変更されません。 3) ガス価格: 0 — mempool では割安です。 4) ABI の不一致 — multipleMint/reveal エンコード エラー。 5) クライアント バンドルに Pinata/Infura キーを埋め込む — 秘密漏洩 (決してコミットしない)。```text
Hardening checklist
✓ real mainnet addresses
✓ chainId === 1 gate
✓ dynamic gas / tip
✓ ABI ↔ deployment lock
✓ secrets in env only
このエピソードで最も混乱を招く対戦```text
❌ window.ethereum yeter, modal lüks ✓ Mainnet dönüşümü için çoklu connector ürün gereksinimidir
❌ cacheProvider = her zaman bağlı kal ✓ Stale provider'ı disconnect + clearCachedProvider ile temizle
❌ Infura/Pinata anahtarlarını constants'a yaz ✓ Anahtarlar env/secret store'da; client'a minimum scope
## 独自のシステムのチェックリスト
1. 接続後にchainId === 1がアサートされていますか?
2. ミント送信前のプロバイダーは null ではないでしょうか?
3. 実稼働ビルドでは、gasPrice: 0 がスタックしていますか?
4. nft/reserve/auction アドレスはそれぞれ、メインネットとは異なりますか?
5. WalletConnect / WalletLink コネクタは実際にテストデバイスでテストされましたか?
## このセクションで覚えておくべきこと
1. 1.8 移行: MetaMask のみ → Web3Modal マルチウォレット ファサード。
2. メインネットの強化とは、アドレス、ネットワーク、ガス、ABI、および秘密の規律です。
3. 切断とキャッシュのクリアは再接続 UX の一部です。
> ウォレットの接続は機能ではありません。間違ったネットワークでの署名は、サイレント実稼働イベントです。
FAQ
よくある質問
Web3モーダルとは何ですか?
マルチウォレット接続UI; WalletConnect/WalletLink には、providerOptions が挿入されます。
ウォレットコネクトとは何ですか?
QR/モバイルウォレットブリッジ。 Infura (または RPC) は ID を要求します。
「window.ethereumで十分、モーダル・ラグジュアリー」は正しいでしょうか?
マルチコネクタはメインネット変換の製品要件です
このセクションでは何を修正しますか?
このセクションでは、ウォレットの多様性、ネットワーク検証、ガス、アドレス/ABI 規律など、メインネットの準備状況チェックリストでシリーズを締めくくります。 Gorillas メインネット 1.8 では、All-Stars/1.4 時代の window.ethereum.enable() パスが削除されます。 Web3Modal キャッシュプロバイダーで開きます。 WalletConnect (Infura ID) とカスタム Coinbase WalletLink (chainId: 1) が ProviderOptions に追加されます。 ConnectWeb3 → ethers Web3Provider → アドレス;コントラクト インスタンスはモーダル プロバイダー経由で通信するようになりました。
学んだエンジニアリング原則
- 単一のウォレットのファサードの背後にある Mint ユーティリティを入手します。
- 各送信前にchainId、アドレス、ガスを確認してください。
- バンドルからシークレットを削除します。実際のデバイス上のコネクタを証明します。
続きを読む
続きを読む
シリーズの次のシリーズ
プレースホルダー URI と所有者表示行
Mint では、プレースホルダー メタデータ、uridata マップ、reveal(tokenId, uriHash)、および所有者のみが開くことができるサーフェスを明らかにします。
同じシリーズ
IPFS (InterPlanetary File System) メタデータ、ミントおよびマルチ ミント
Infura IPFS + Pinata ピン、メタデータ JSON、mint(tokenId, uri) および multipleMint: 0.1 ETH × n、750 供給。
同じシリーズ
コレクションのランディングと WIP ホワイトリスト ファネル
CBD オールスターのミント ランディング: #GETINTHEWIP、750 スロット、割引ファネル、メタマスクのみのミント サーフェスはどのように組み合わされるのでしょうか?