Gaia Web3 Voting Starter
Una aplicación de votación descentralizada construida con Next.js, Hardhat y Gaia. Puede crear una situación de votación y seleccionar las opciones que desea votar y votar con el agente de IA.
Acerca de Gaia
Gaia es una infraestructura informática descentralizada que permite a todo el mundo crear, desplegar, escalar y monetizar sus propios agentes de IA. Este proyecto utiliza las capacidades de IA de Gaia para proporcionar un agente inteligente para las interacciones de votación en blockchain.
Estructura del proyecto
gaia-web3-voting-starter/
├── paquetes/
│ ├── blockchain/ # Contratos inteligentes y código blockchain
│ │ ├── contratos/ # Contratos inteligentes Solidity
│ │ ├── ignition/ # Scripts de despliegue de Hardhat Ignition.
│ │ ├── scripts/ # Scripts de Hardhat.
│ │ ├── test/ # Pruebas de contrato.
│ │ └── hardhat.config.ts # Configuración de Hardhat
│ │
│ └── site/ # Aplicación frontend Next.js
│ ├── app/ # Enrutador de la aplicación Next.js
│ │ ├── api/ # Rutas API
│ │ ├── chat/ # Página de chat
│ │ └── page.tsx # Página de inicio
│ ├── components/ # Componentes de React
│ │ ├── chat/ # Componentes relacionados con el chat
│ │ └── ui/ # Componentes de interfaz de usuario (botón, tarjeta, etc.)
│ ├── ai/ # integración de IA
│ │ └── tools.ts # Herramientas de IA para la interacción con blockchain
│ └── public/ # Activos estáticos
Características
- Votación impulsada por un agente de inteligencia artificial: Interactuar con la blockchain mediante comandos de lenguaje natural.
- Fábrica de contratos inteligentes: Crear nuevas instancias de votación con opciones y duraciones personalizables.
- Votación en cadena: Emite votos de forma segura en la blockchain con resultados transparentes.
- Gestión de votaciones: Visualización de votaciones activas e históricas con información detallada del estado
- Compatibilidad entre cadenas: Despliegue en Linea Sepolia o en cualquier otra cadena compatible con EVM.
Configuración del nodo Gaia
Para utilizar tu propio nodo Gaia con esta aplicación, sigue estos pasos:
Opción 1: Ejecute su propio nodo
-
Instala el Nodo Gaia:
curl -sSfL 'https://github.com/GaiaNet-AI/gaianet-node/releases/latest/download/install.sh' | bash
-
Inicializar con un Modelo:
# Para el modelo Llama-3-Groq-8B (recomendado para este proyecto)
gaianet init --config https://raw.githubusercontent.com/GaiaNet-AI/node-configs/main/llama-3-groq-8b-tool/config.json
# O elija otro modelo de las configuraciones disponibles
# Examine las opciones en: https://github.com/GaiaNet-AI/node-configs -
Inicie el Nodo:
inicio de gaianet
-
Actualice su solicitud:
- Modifique
packages/site/app/api/chat/route.ts
para que apunte a su nodo local:
const GAIA_API_ENDPOINT = 'http://gaiaURL/v1';
const GAIA_MODEL = 'Llama-3-Groq-8B-Herramienta'; - Modifique
Opción 2: Obtener una clave API
-
Crear una cuenta:
- Vaya a https://gaianet.ai y haga clic en Launch App
- Conecta tu monedero MetaMask
-
Generar una clave API:
- Haz clic en el menú desplegable de tu perfil y selecciona Configuración
- Vaya a Gaia API Keys y haga clic en Create API Key.
- Dale un nombre a tu clave y guárdala de forma segura
-
Actualice su solicitud:
- Modifique
packages/site/app/api/chat/route.ts
para utilizar su clave API:
const GAIA_API_ENDPOINT = 'https://api.gaianet.ai/v1';
const GAIA_MODEL = 'Llama';
// Add your API key here
const openai = createOpenAI({
baseURL: GAIA_API_ENDPOINT,
apiKey: "" // API key Here
}); - Modifique
-
Añadir a variables de entorno:
- Crear o actualizar
.env.local
en elpaquetes/sitio
directorio:
GAIA_API_KEY=su_clave_api_aquí
- Crear o actualizar
Requisitos del sistema
Si ejecuta su propio nodo, asegúrese de que su sistema cumple estos requisitos o empiece con un modelo pequeño de LLM:
Sistema | Requisitos mínimos |
---|---|
OSX con Apple Silicon (chip M1-M4) | 16 GB de RAM (se recomiendan 32 GB) |
Ubuntu Linux 20.04 con Nvidia CUDA 12 SDK | 8 GB de VRAM en la GPU |
Azure/AWS | Instancia de GPU Nvidia T4 |
Comandos del agente de IA
La aplicación incluye un agente de IA que ayuda a los usuarios a interactuar con el sistema de votación mediante comandos en lenguaje natural:
1. Crear una nueva votación
create voting "Your voting description" options: option1, option2, option3 duration: <number>
Opciones de duración:
- 1 - 1 hora
- 2 - 1 día
- 3 - 1 semana
2. Ver votaciones
Mostrar todas las votaciones (incluidas las finalizadas):
mostrar todas las votaciones
obtener todas las votaciones
listar votaciones
Mostrar sólo las votaciones activas:
mostrar votaciones activas
listar votaciones activas
obtener votaciones activas
3. Emitir un voto
vote por [dirección del contrato] opción [número].
Por ejemplo:
vote por 0x1234...5678 opción 2
4. Comandos adicionales
ayuda
ocomandos
- Mostrar todos los comandos disponiblescondición de votante
- Obtenga un resumen de las votaciones activas y finalizadasmis votos
- Consulta tu historial de voto
Mejora del agente de IA con bases de conocimiento
Para que el agente de IA de su aplicación de votación sea más potente y consciente del contexto, puede integrar el sistema de base de conocimientos de Gaia:
-
Crear una base de conocimientos específica para las votaciones:
- Documentar las pautas de votación y los casos de uso comunes
- Incluir explicaciones sobre los conceptos de votación de blockchain
- Añadir preguntas frecuentes sobre el proceso de votación
- Incluir ejemplos de campañas electorales que hayan tenido éxito
-
Estructure su base de conocimientos:
- Organizar la información por categorías (por ejemplo, "Crear votos", "Emitir votos", "Ver resultados").
- Incluye metadatos como marcas de tiempo y etiquetas para mejorar las búsquedas.
- Utilice archivos markdown o de texto sin formato para facilitar el mantenimiento
-
Importar a Gaia:
- Utiliza las herramientas de Gaia para importar tu base de conocimientos
- El sistema convertirá automáticamente tus contenidos en incrustaciones utilizando Qdrant
- Configure su agente de IA para que haga referencia a esta base de conocimientos
-
Ventajas de la integración de la base de conocimientos:
- Mayor precisión: El agente proporcionará respuestas más precisas y contextualmente relevantes
- Experiencia de usuario mejorada: Los usuarios recibirán orientaciones más útiles sobre los procesos de votación
- Escalabilidad: A medida que crece su base de conocimientos, se amplían las capacidades del agente sin necesidad de volver a formarlo.
- Eficacia: El agente puede acceder rápidamente a información preorganizada en lugar de procesar los datos en tiempo real
Base de conocimientos preconfigurada
Hemos creado una base de conocimientos preconfigurada específicamente para DApps de votación Web3. Puedes usarla con tu nodo Gaia:
-
Archivos de la base de conocimientos:
-
Configure su Nodo Gaia: Ejecute el siguiente comando para configurar su nodo Gaia con la base de conocimientos de votación:
gaianet config
--snapshot https://huggingface.co/datasets/meowy-ai/web3-knowledge-base/resolve/main/default-8461598741381726-2025-04-29-07-50-41.snapshot.tar.gz
--system-prompt "Usted es un útil instructor web3, por favor responda a las preguntas"
Para más información sobre bases de conocimiento en Gaia, visite la [Documentación de Bases de Conocimiento de Gaia](https://docs.gaianet.ai/knowledge-bases/intro).
## Comenzando
### Prerrequisitos
- Node.js instalado
- Un monedero con algo de ETH de prueba en Sepolia (Puedes usar cualquier L1/L2 que quieras)
- Clave API [Alchemy](https://www.alchemy.com/) o Infura
### Configuración
1. Clona el repositorio:
```bash
git clone git@github.com:meowyx/gaia-web3-voting-starter.git
cd gaia-web3-voting-starter
- Instalar dependencias:
instalación pnpm
- Configurar variables de entorno:
# En packages/blockchain
cp .env.ejemplo .env
# Añade tu clave API de Alchemy y la clave privada del monedero
- Recopilar y desplegar contratos:
cd paquetes/blockchain
npx hardhat compilar
npx hardhat ignition deploy ignition/modules/votingFactory.ts --network linea-testnet
- Inicie el frontend:
cd paquetes/sitio
pnpm dev
Arquitectura
- Contratos inteligentes: Patrón de fábrica para desplegar instancias de votación
- Frontend: Next.js con interfaz de chat basada en IA
- Blockchain: Linea Sepolia testnet para el despliegue
- Integración de IA: Herramientas personalizadas para la interacción con blockchain