Playbook
Mainnet Web3Modal y endurecimiento de billetera (Mainnet Web3modal Y Endurecimiento DE Billetera)
Migración de MetaMask únicamente a Web3Modal + WalletConnect + Coinbase WalletLink; chainId, gas y endurecimiento de dirección.
Colección NFT Mint y endurecimiento de Mainnet
Parte 4 de 4
Superficies de menta CBD All-Stars y Confident Gorillas: embudo de lista blanca WIP, metadatos IPFS, canal de revelación de marcador de posición y fortalecimiento de billetera de red principal con Web3Modal.
Mainnet rompe el supuesto de billetera única
Gorillas mainnet 1.8 elimina la ruta window.ethereum.enable() de la era All-Stars/1.4. Se abre con Web3Modal cacheProvider; WalletConnect (ID de Infura) y Coinbase WalletLink personalizado (ID de cadena: 1) se agregan a ProviderOptions. ConnectWeb3 → ethers Web3Provider → dirección; las instancias de contrato ahora se comunican a través del proveedor modal.```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))
## Conceptos en la primera mención```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.
```La identificación del proyecto RPC/Infura es la configuración; No se guardan secretos en el libro de jugadas. Las claves están en el entorno, no en el repositorio.
## ¿Por qué no es suficiente solo con MetaMask?
Es posible que las preguntas frecuentes de aterrizaje aún digan MetaMask; Los usuarios de mainnet quieren Coinbase Wallet y Mobile WalletConnect. La vía de inyección única corta el embudo. Decisión 1.8: multiconector con modal, red: 'mainnet'.```text
User segments
Desktop MetaMask
Mobile WC
Coinbase WalletLink
↓
one ConnectWeb3() API
```## Ciclo de vida de la conexión
ConnectWeb3: web3Modal.connect() → Web3Provider → getAddress. DesconectarWeb3: clearCachedProvider + proveedor.desconectar + recargar. lee netId a través del proveedor getNetwork. Los captadores de contratos establecen Web3.eth.Contract con inicialState.provider: el respaldo de appWeb3() heredado de Infura no debe ser la ruta de firma de la red principal.```text
connect → address
getNetwork → chainId check
mint/reveal only if chainId OK
disconnect → clear cache → reload
```## ADR: Web3Modal como fachada de billetera
Decisión: no conecte las utilidades mint/reveal directamente a window.ethereum; Indique la dirección de la fachada modal y el proveedor. Además: agregar un conector sería una decisión de producto. Menos: ethers + web3 dual stack y estado obsoleto del proveedor de caché. Mitigación: afirmación de chainId antes de mint, borrado de caché al desconectarse.```text
ADR-04 Web3Modal facade
UI → ConnectWeb3 / DisconnectWeb3
Utils → provider from modal state
Guard → chainId === 1 before send
Reject → wrong net / no provider
```## Guía de fallas de Mainnet
1) Direcciones de contratos resguardados en producción: tx aparece como "exitoso", el estado es incorrecto. 2) Red incorrecta: firma, el suministro de la red principal no cambia en Rinkeby/Goerli. 3) gasPrice: 0: precio inferior al normal en mempool. 4) Falta de coincidencia de ABI: error de codificación multipleMint/reveal. 5) Incrustar claves de Pinata/Infura en el paquete del cliente: filtración secreta (nunca confirmar).```text
Hardening checklist
✓ real mainnet addresses
✓ chainId === 1 gate
✓ dynamic gas / tip
✓ ABI ↔ deployment lock
✓ secrets in env only
Los enfrentamientos más confusos de este episodio.```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
## Lista de verificación de su propio sistema
1. ¿Se afirma chainId === 1 después de la conexión?
2. ¿No es el proveedor nulo antes del envío perfecto?
3. ¿Está gasPrice: 0 atascado en la construcción de producción?
4. ¿Las direcciones nft/reserva/subasta son diferentes entre sí y de la red principal?
5. ¿Se probaron realmente los conectores WalletConnect/WalletLink en el dispositivo de prueba?
## Cosas para recordar de esta sección
1. Migración 1.8: solo MetaMask → fachada de billetera múltiple Web3Modal.
2. El endurecimiento de Mainnet es dirección, red, gas, ABI y disciplina secreta.
3. La desconexión y el borrado de caché son parte de la reconexión de UX.
> Conectar una billetera no es una característica; Iniciar sesión en la red equivocada es un evento de producción silencioso.
FAQ
Frequently asked questions
¿Qué es Web3Modal?
Interfaz de usuario de conexión de billetera múltiple; WalletConnect/WalletLink se inyecta con ProviderOptions.
¿Qué es WalletConnect?
Puente QR/monedero móvil; Infura (o RPC) solicita una identificación.
¿Es correcto "window.ethereum suficiente, lujo modal"?
El multiconector es un requisito del producto para la conversión de la red principal
¿Qué soluciona esta sección?
Esta sección cierra la serie con una lista de verificación de preparación para la red principal: diversidad de billetera, validación de red, gas y disciplina de dirección/ABI. Gorillas mainnet 1.8 elimina la ruta window.ethereum.enable() de la era All-Stars/1.4. Se abre con Web3Modal cacheProvider; WalletConnect (ID de Infura) y Coinbase WalletLink personalizado (ID de cadena: 1) se agregan a ProviderOptions. ConnectWeb3 → ethers Web3Provider → dirección; las instancias de contrato ahora se comunican a través del proveedor modal.
Principios de ingeniería aprendidos
- Obtenga servicios Mint detrás de una única fachada de billetera.
- Verifique el ID de cadena, la dirección y el gas antes de cada envío.
- Eliminar secretos del paquete; Pruebe los conectores en dispositivos reales.
Continuar leyendo
Continuar leyendo
Siguiente en la serie
URI de marcador de posición y línea de revelación de propietario
En Mint, metadatos de marcador de posición, mapa de uridata, revela (tokenId, uriHash) y revela superficie que solo el propietario puede abrir.
Misma serie
Metadatos IPFS (Sistema de archivos interplanetario), Mint y Multiple Mint
Infura IPFS + pin Pinata, metadatos JSON, mint(tokenId, uri) y multipleMint: 0,1 ETH × n, suministro de 750.
Misma serie
Embudo de aterrizaje de colección y lista blanca de WIP
Aterrizaje de CBD All-Stars mint: ¿Cómo se combinan #GETINTHEWIP, 750 espacios, embudo de descuento y superficie mint exclusiva de MetaMask?