githubEditar

Agents

DESCRIPCIÓN GENERAL

Este documento proporciona información completa para desplegar smart contracts en Polkadot Hub TestNet (Paseo) usando Claude Code. Incluye configuraciones verificadas, problemas comunes, soluciones y estrategias de optimización.

CRÍTICO: Siempre inicializa nuevos proyectos con kitdot@latest init para una configuración adecuada de red y gestión de dependencias.

INFORMACIÓN DE RED

Detalles de Paseo TestNet

  • Nombre de Red: Polkadot Hub TestNet

  • Chain ID: 420420422 (0x1911f0a6 en hex)

  • URL RPC: https://testnet-passet-hub-eth-rpc.polkadot.io

  • Explorador de Bloques: https://blockscout-passet-hub.parity-testnet.parity.io

  • Moneda: PAS

  • Faucet: https://faucet.polkadot.io/?parachain=1111

  • Estado: Vista Previa de PolkaVM (etapa de desarrollo temprano)

Características Clave

  • Compatibilidad EVM: Despliegue de smart contracts compatible con Ethereum

  • PolkaVM: Requiere configuración específica para compatibilidad

  • Límite de Bytecode: ~100KB tamaño máximo de contrato

  • Modelo de Gas: Mecánica de gas estándar de EVM

  • Advertencia de Versión de Node: Funciona con Node.js v21+ a pesar de las advertencias

DEPENDENCIAS REQUERIDAS

Dependencias Principales

Requisitos de Package.json

CRÍTICO: Usa la bandera --force al instalar hardhat-toolbox para resolver conflictos de dependencias.

CONFIGURACIÓN DE HARDHAT

hardhat.config.js Completo y Funcional

Requisitos de Configuración

  1. Debe usar formato string para versión de Solidity: solidity: "0.8.28"

  2. Debe incluir configuración resolc: Requerido para compatibilidad con PolkaVM

  3. Debe establecer polkavm: true: En todas las configuraciones de red

  4. Debe usar hardhat vars: Para gestión de claves privadas

  5. Nombre de red: Usar passetHub (no paseo u otros nombres)

PROCESO DE CONFIGURACIÓN

Paso 1: Inicializar Proyecto con kitdot@latest (Recomendado)

Configuración Manual Alternativa:

¿Por qué kitdot@latest? Configura automáticamente las configuraciones de red adecuadas, dependencias y estructura del proyecto. Elimina errores comunes de configuración.

Paso 2: Instalar Dependencias

Si usas kitdot@latest: Las dependencias se instalan automáticamente.

Instalación manual:

Paso 3: Inicializar Plugin de Polkadot

Si usas kitdot@latest: Ya está configurado.

Configuración manual:

Paso 4: Configurar Clave Privada

Paso 5: Obtener Tokens de Prueba

  1. Visita https://faucet.polkadot.io/?parachain=1111

  2. Ingresa la dirección de tu billetera

  3. Solicita tokens PAS

  4. Verifica el saldo en tu billetera o explorador de bloques

Paso 6: Crear Configuración de Hardhat

Si usas kitdot@latest: El archivo de configuración ya está creado con las configuraciones apropiadas.

Configuración manual: Copia la configuración exacta de arriba en hardhat.config.js

DESARROLLO DE CONTRATOS

Requisitos de Versión de Solidity

  • Versión Requerida: ^0.8.28

  • Objetivo EVM: paris (por defecto)

  • Optimizador: Habilitado por defecto

Ejemplo de Contrato Simple

Limitaciones de Tamaño de Contrato

  • Bytecode Máximo: ~100KB

  • Impacto de OpenZeppelin: Las importaciones estándar a menudo exceden el límite

  • Optimización Requerida: Eliminar dependencias innecesarias

PROCESO DE DESPLIEGUE

Usando Hardhat Ignition (Recomendado)

Paso 1: Crear Módulo de Ignition

Paso 2: Compilar Contratos

Paso 3: Desplegar a Paseo

Estados de Despliegue

  • Estado Limpio: rm -rf ignition/deployments/ para empezar de nuevo

  • Reanudar: Ignition reanuda automáticamente despliegues interrumpidos

  • Rastrear Transacciones: Usa el explorador de bloques para rastrear transacciones fallidas

ERRORES COMUNES Y SOLUCIONES

1. Error "CodeRejected"

Error: Failed to instantiate contract: Module(ModuleError { index: 60, error: [27, 0, 0, 0], message: Some("CodeRejected") })

Causas:

  • Falta configuración PolkaVM

  • Configuraciones de red incorrectas

  • Falta configuración resolc

Soluciones:

  • Asegurar polkavm: true en configuración de red

  • Agregar bloque de configuración resolc

  • Usar formato exacto de hardhat.config.js de arriba

2. Error "initcode is too big"

Error: initcode is too big: 125282 (o número similar)

Causa: El bytecode del contrato excede el límite de ~100KB

Soluciones:

  • Eliminar dependencias de OpenZeppelin

  • Usar implementaciones mínimas de contratos

  • Dividir contratos grandes en componentes más pequeños

  • Implementar versiones ligeras personalizadas

3. Errores de Configuración

Error: Cannot read properties of undefined (reading 'settings')

Solución: Usar formato string para versión de Solidity: solidity: "0.8.28"

4. Problemas de Dependencias

Error: Cannot find module 'run-container' o similar

Soluciones:

  • Instalar dependencias con bandera --force

  • Limpiar node_modules y reinstalar

  • Verificar compatibilidad de versión @parity/hardhat-polkadot

5. Problemas de Clave Privada

Error: No signers found o fallas de autenticación

Soluciones:

  • Establecer clave privada vía npx hardhat vars set PRIVATE_KEY

  • Asegurar que la cuenta tiene tokens PAS

  • Verificar formato de clave privada (sin prefijo 0x en vars)

OPTIMIZACIÓN DE CONTRATOS

Eliminando Dependencias de OpenZeppelin

En lugar de OpenZeppelin Ownable:

En lugar de OpenZeppelin ReentrancyGuard:

Implementación Mínima ERC721:

INTEGRACIÓN FRONTEND

Problemas de Transacciones Frontend (Problemas de Estimación de Gas/Legacy)

CRÍTICO PARA AGENTES: Las aplicaciones frontend frecuentemente encuentran problemas de estimación de gas al enviar transacciones a redes de Polkadot. Siempre implementa estas estrategias:

Método 1: Estimación de Gas Legacy con Buffer

Método 2: Límites de Gas Fijos

Configuración de Red para MetaMask

Interacción con Contratos usando Ethers.js

TESTING Y VERIFICACIÓN

Verificación de Compilación

Verificación de Despliegue

  1. Salida de Despliegue Exitoso:

  1. Verificación en Explorador de Bloques:

  • Visita https://blockscout-passet-hub.parity-testnet.parity.io

  • Busca la dirección del contrato

  • Verifica la transacción de creación del contrato

  1. Prueba de Interacción con Contrato:

ESTRATEGIAS DE DEBUGGING

Verificar Conectividad de Red

Verificar Saldo de Cuenta

Limpieza de Build y Despliegue

Rastreo de Transacciones

Si el despliegue falla:

  1. Revisa el explorador de bloques para transacciones de la cuenta

  2. Busca transacciones fallidas con errores de gas

  3. Usa npx hardhat ignition track-tx <txHash> <deploymentId> --network passetHub

MEJORES PRÁCTICAS

Flujo de Trabajo de Desarrollo

  1. Empezar Simple: Despliega contratos básicos primero para verificar configuración

  2. Optimizar Temprano: Verifica tamaños de contratos durante el desarrollo

  3. Probar Localmente: Usa la red local de hardhat para pruebas iniciales

  4. Despliegue Incremental: Despliega componentes por separado si son demasiado grandes

  5. Documentar Direcciones: Mantén registro de todas las direcciones de contratos desplegados

Diseño de Contratos para Paseo

  1. Minimizar Dependencias: Evita bibliotecas pesadas

  2. Implementaciones Personalizadas: Escribe versiones mínimas de contratos estándar

  3. Diseño Modular: Divide funcionalidad entre múltiples contratos

  4. Optimización de Gas: Usa estructuras de datos y algoritmos eficientes

  5. Patrones Proxy: Considera contratos actualizables para lógica compleja

Consideraciones de Seguridad

  1. Gestión de Claves Privadas: Siempre usar hardhat vars, nunca hacer commit de claves

  2. Solo Red de Prueba: Paseo es para pruebas, no para valor de producción

  3. Verificación de Código: Verifica contratos en el explorador de bloques cuando sea posible

  4. Controles de Acceso: Implementa sistemas apropiados de propiedad y permisos

COMANDOS DE REFERENCIA

Comandos Esenciales

Variables de Entorno

DESPLIEGUE EN POLKADOT CLOUD (APILLON)

Configuración de Cuenta Apillon y UUID del Sitio Web

CRÍTICO PARA AGENTES: Al desplegar aplicaciones frontend en Polkadot Cloud, sigue estos pasos:

Paso 1: Crear Cuenta Apillon

INSTRUIR AL USUARIO PARA:

  1. Visitar Consola Apillon: https://app.apillon.io

  2. Registrar Cuenta: Usar email y crear contraseña segura

  3. Verificar Email: Completar proceso de verificación de email

  4. Conectar Wallet: Vincular tu wallet Polkadot/Substrate para pagos

  5. Generar Credenciales API:

    • Ir a SettingsAPI Keys

    • Hacer clic en Create New API Key

    • Nombrarlo (ej. "Proyecto Hackathon")

    • Copiar API Key y API Secret inmediatamente

    • Almacenar de forma segura - API Secret solo se muestra una vez

Paso 2: Crear Proyecto de Sitio Web

INSTRUIR AL USUARIO PARA:

  1. Navegar a Sección Hosting: En consola Apillon

  2. Crear Nuevo Sitio Web: Hacer clic en botón "New Website"

  3. Configurar Proyecto:

  4. Copiar UUID del Sitio Web: Después de la creación, copiar el UUID generado (formato: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

  5. Proporcionar UUID al Agente: Compartir el UUID del Sitio Web para que el agente pueda configurar el despliegue

Paso 3: Obtener UUID del Sitio Web para Despliegue

Configuración MCP para Hosting en Polkadot Cloud

Configuración del Protocolo de Contexto de Modelo (MCP):

Paso 1: Configuración del Servidor MCP

CRÍTICO PARA AGENTES: Configura tu cliente MCP para usar el servidor MCP de Apillon.

Para Claude Desktop:

Agrega esto a tu archivo de configuración MCP:

Pasos de Configuración Claude Desktop:

  1. Localizar archivo config MCP: Usualmente en ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

  2. Agregar servidor Apillon: Insertar la configuración de arriba

  3. Reemplazar placeholders: Actualizar <APILLON_API_KEY> y <APILLON_API_SECRET> con valores reales

  4. Actualizar ruta filesystem: Cambiar /Users/tu-usuario/Desktop a tu directorio de proyecto

  5. Reiniciar Claude Desktop: Requerido para que cambios MCP surtan efecto

Para Cursor IDE:

Configuración MCP en Cursor:

  1. Instalar extensión MCP: En Cursor, ir a Extensions y buscar "Model Context Protocol"

  2. Abrir configuraciones Cursor: Cmd/Ctrl + , → Buscar "MCP"

  3. Agregar configuración servidor:

Pasos de Configuración Cursor:

  1. Abrir settings.json: Cmd/Ctrl + Shift + P → "Preferences: Open Settings (JSON)"

  2. Agregar configuración MCP: Insertar la configuración de arriba

  3. Reemplazar placeholders: Actualizar credenciales API

  4. Reiniciar Cursor: Requerido para que cambios MCP surtan efecto

  5. Verificar conexión: Verificar estado MCP en paleta de comandos de Cursor

Paso 2: Instalar CLI de Apillon (Método Alternativo)

Paso 3: Configurar Autenticación

Paso 4: Configurar MCP para Despliegue Automatizado

Crear .apillon.json en raíz del proyecto:

Paso 5: Script de Despliegue MCP

Paso 6: Variables de Entorno

Mejores Prácticas para Agentes

  1. Configurar MCP primero: Configurar servidor MCP de Apillon en tu IDE (Claude Desktop o Cursor) antes de comenzar el despliegue.

  2. Usar siempre CLI de Apillon más reciente: npm install -g @apillon/cli@latest

  3. Credenciales seguras: Almacenar API keys y UUIDs como variables de entorno, nunca en código

  4. Guiar al usuario en configuración de cuenta: Instruir claramente a usuarios sobre creación de cuenta Apillon y generación de API key

  5. Verificar despliegues: Verificar siempre estado de despliegue después de subida

  6. Usar entorno producción: Para entregas finales de hackathon

  7. Monitorear costos: Apillon usa modelo pago por uso

  8. Probar localmente primero: Siempre probar builds antes de desplegar

  9. Reiniciar tu IDE: Después de cambios de configuración MCP (Claude Desktop o Cursor)

  10. Verificar conexión MCP: Verificar que servidor MCP de Apillon esté conectado correctamente antes del despliegue

DIRECTRICES DE ESCRITURA PARA LLMs

Al crear documentación o ayudar a desarrolladores:

CHECKLIST DE RESOLUCIÓN DE PROBLEMAS

Primero: Intenta kitdot@latest init con proyecto nuevo y copia código existente

Cuando el despliegue falla, verifica:

LIMITACIONES Y WORKAROUNDS

Limitaciones Actuales

  • Tamaño de Contrato: Límite de bytecode de 100KB

  • OpenZeppelin: La mayoría de bibliotecas son demasiado grandes

  • Estabilidad de Red: Versión de vista previa, posible tiempo de inactividad

  • Herramientas de Debugging: Limitadas comparado con mainnet

  • Documentación: Escasa, soluciones impulsadas por la comunidad

Workarounds Recomendados

  • Problemas de Tamaño: Usar implementaciones personalizadas mínimas

  • Lógica Compleja: Dividir entre múltiples contratos

  • Gestión de Estado: Usar eventos para datos off-chain

  • Experiencia de Usuario: Proporcionar mensajes de error claros

  • Testing: Pruebas exhaustivas localmente antes del despliegue

Esta guía proporciona información completa para el despliegue exitoso de smart contracts en Paseo TestNet usando Claude Code, incluyendo todas las configuraciones críticas, problemas comunes y estrategias de optimización.

Última actualización