Adapters
finance
MegaSol / wizardDiamante.html
joseififif's picture
Upload 5 files
de2ef19 verified
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Diamante AI Platform - 💎 Inteligencia Artificial con Tokens DIAMANTE</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet">
<script src="https://unpkg.com/@solana/web3.js@latest/lib/index.iife.min.js"></script>
<script src="https://unpkg.com/@solana/wallet-adapter-phantom/lib/index.iife.min.js"></script>
<script src="https://unpkg.com/@solana/wallet-adapter-base@latest/lib/index.iife.js"></script>
<style>
:root {
--primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
--diamond-gradient: linear-gradient(135deg, #00c9ff 0%, #92fe9d 100%);
--solana-gradient: linear-gradient(135deg, #9945FF 0%, #14F195 100%);
--dark-bg: #0f172a;
--darker-bg: #020617;
--card-bg: rgba(30, 41, 59, 0.7);
--border-color: rgba(148, 163, 184, 0.2);
--text-primary: #f8fafc;
--text-secondary: #cbd5e1;
--accent-cyan: #22d3ee;
--accent-purple: #a855f7;
--accent-green: #10b981;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background: var(--dark-bg);
color: var(--text-primary);
min-height: 100vh;
overflow-x: hidden;
background-image:
radial-gradient(at 40% 20%, rgba(56, 189, 248, 0.15) 0px, transparent 50%),
radial-gradient(at 80% 0%, rgba(124, 58, 237, 0.15) 0px, transparent 50%),
radial-gradient(at 0% 50%, rgba(14, 165, 233, 0.1) 0px, transparent 50%),
radial-gradient(at 80% 50%, rgba(139, 92, 246, 0.1) 0px, transparent 50%),
radial-gradient(at 0% 100%, rgba(6, 182, 212, 0.15) 0px, transparent 50%);
}
.container {
max-width: 1400px;
margin: 0 auto;
padding: 0 20px;
}
/* Header y Navegación */
header {
background: rgba(15, 23, 42, 0.9);
backdrop-filter: blur(10px);
border-bottom: 1px solid var(--border-color);
position: sticky;
top: 0;
z-index: 100;
padding: 1.2rem 0;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
gap: 12px;
font-weight: 800;
font-size: 1.8rem;
background: var(--diamond-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.logo-icon {
font-size: 2.2rem;
}
.nav-links {
display: flex;
gap: 2rem;
align-items: center;
}
.nav-link {
color: var(--text-secondary);
text-decoration: none;
font-weight: 500;
transition: color 0.3s;
display: flex;
align-items: center;
gap: 8px;
}
.nav-link:hover {
color: var(--accent-cyan);
}
.nav-link.active {
color: var(--accent-cyan);
font-weight: 600;
}
.wallet-section {
display: flex;
align-items: center;
gap: 1rem;
}
.balance-display {
background: rgba(30, 41, 59, 0.8);
padding: 8px 16px;
border-radius: 12px;
border: 1px solid var(--border-color);
font-weight: 600;
display: flex;
align-items: center;
gap: 8px;
}
.diamond-icon {
color: var(--accent-cyan);
}
.connect-btn {
background: var(--solana-gradient);
color: white;
border: none;
padding: 10px 20px;
border-radius: 12px;
font-weight: 600;
cursor: pointer;
transition: transform 0.3s, box-shadow 0.3s;
display: flex;
align-items: center;
gap: 8px;
}
.connect-btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(153, 69, 255, 0.3);
}
/* hero Section */
.hero {
padding: 5rem 0;
text-align: center;
max-width: 900px;
margin: 0 auto;
}
.hero h1 {
font-size: 3.5rem;
font-weight: 900;
margin-bottom: 1.5rem;
background: linear-gradient(to right, #22d3ee, #a855f7, #10b981);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1.2;
}
.hero p {
font-size: 1.2rem;
color: var(--text-secondary);
max-width: 700px;
margin: 10 auto 2.5rem;
line-height: 1.6;
}
.hero-buttons {
display: flex;
gap: 1rem;
justify-content: center;
margin-top: 2rem;
}
.primary-btn {
background: var(--diamond-gradient);
color: white;
border: none;
padding: 14px 32px;
border-radius: 12px;
font-weight: 600;
font-size: 1.1rem;
cursor: pointer;
transition: transform 0.3s, box-shadow 0.3s;
display: flex;
align-items: center;
gap: 10px;
}
.primary-btn:hover {
transform: translateY(-3px);
box-shadow: 0 15px 30px rgba(0, 201, 255, 0.3);
}
.primary-btn {
background: transparent;
color: var(--text-primary);
border: 2px solid var(--border-color);
padding: 14px 32px;
border-radius: 12px;
font-weight: 600;
font-size: 1.1rem;
cursor: pointer;
transition: all 0.3s;
display: flex;
align-items: center;
gap: 10px;
}
.primary-btn:hover {
background: rgba(148, 163, 184, 0.1);
border-color: var(--accent-cyan);
}
/* Main Content Grid */
.main-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1.5rem;
margin-bottom: 4rem;
}
/* Chat Section */
.chat-section {
grid-column: span 2;
background: var(--card-bg);
backdrop-filter: blur(10px);
border-radius: 20px;
border: 1px solid var(--border-color);
padding: 2rem;
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
}
.section-title {
font-size: 1.5rem;
font-weight: 700;
margin-bottom: 1.5rem;
display: flex;
align-items: center;
gap: 10px;
}
.section-title i {
color: var(--accent-cyan);
}
.chat-container {
display: flex;
flex-direction: column;
height: 600px;
}
.chat-messages {
flex: 1;
overflow-y: auto;
padding: 1.5rem;
background: rgba(15, 23, 42, 0.6);
border-radius: 15px;
margin-bottom: 1.5rem;
border: 1px solid var(--border-color);
}
.message {
margin-bottom: 1.5rem;
padding: 1rem;
border-radius: 12px;
max-width: 85%;
}
.message.user {
background: rgba(34, 211, 238, 0.15);
border-left: 4px solid var(--accent-cyan);
margin-left: auto;
}
.message.ai {
background: rgba(168, 85, 247, 0.15);
border-left: 4px solid var(--accent-purple);
}
.message-header {
display: flex;
justify-content: space-between;
margin-bottom: 8px;
font-size: 0.9rem;
color: var(--text-secondary);
}
.message-content {
line-height: 1.5;
}
.chat-input-container {
display: flex;
gap: 1rem;
}
.chat-input {
flex: 1;
padding: 1rem 1.5rem;
background: rgba(15, 23, 42, 0.8);
border: 2px solid var(--border-color);
border-radius: 12px;
color: var(--text-primary);
font-size: 1rem;
transition: border-color 0.3s;
}
.chat-input:focus {
outline: none;
border-color: var(--accent-cyan);
}
.send-btn {
background: var(--diamond-gradient);
color: white;
border: none;
width: 60px;
border-radius: 12px;
cursor: pointer;
font-size: 1.2rem;
transition: transform 0.3s;
}
.send-btn:hover {
transform: translateY(-2px);
}
.cost-indicator {
display: flex;
align-items: center;
gap: 8px;
margin-top: 1rem;
color: var(--text-secondary);
font-size: 0.9rem;
}
/* Sidebar Sections */
.sidebar-section {
background: var(--card-bg);
backdrop-filter: blur(10px);
border-radius: 20px;
border: 1px solid var(--border-color);
padding: 1.5rem;
margin-bottom: 1.5rem;
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.2);
}
.token-info .info-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 1rem;
}
.info-item {
display: flex;
flex-direction: column;
gap: 4px;
}
.info-label {
font-size: 0.8rem;
color: var(--text-secondary);
}
.info-value {
font-weight: 600;
font-size: 1rem;
word-break: break-all;
}
.token-address {
background: rgba(15, 23, 42, 0.6);
padding: 10px;
border-radius: 8px;
font-family: monospace;
font-size: 0.8rem;
margin-top: 1rem;
border: 1px solid var(--border-color);
}
.earn-options {
display: flex;
flex-direction: column;
gap: 1rem;
margin-top: 1rem;
}
.earn-option {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
background: rgba(15, 23, 42, 0.6);
border-radius: 12px;
border: 1px solid var(--border-color);
transition: all 0.3s;
cursor: pointer;
}
.earn-option:hover {
border-color: var(--accent-green);
transform: translateX(5px);
}
.earn-details {
display: flex;
align-items: center;
gap: 12px;
}
.earn-icon {
width: 40px;
height: 40px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2rem;
}
.earn-1 .earn-icon { background: rgba(34, 211, 238, 0.2); color: var(--accent-cyan); }
.earn-2 .earn-icon { background: rgba(168, 85, 247, 0.2); color: var(--accent-purple); }
.earn-3 .earn-icon { background: rgba(16, 185, 129, 0.2); color: var(--accent-green); }
.earn-amount {
font-weight: 700;
color: var(--accent-green);
}
.quick-actions {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 1rem;
}
.action-btn {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
padding: 1rem;
background: rgba(15, 23, 42, 0.6);
border-radius: 12px;
border: 1px solid var(--border-color);
transition: all 0.3s;
cursor: pointer;
}
.action-btn:hover {
border-color: var(--accent-purple);
transform: translateY(-3px);
}
.action-icon {
font-size: 1.5rem;
color: var(--accent-purple);
}
.action-label {
font-size: 0.9rem;
font-weight: 500;
}
/* Stats Section */
.stats-section {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1.5rem;
margin-bottom: 4rem;
}
.stat-card {
background: var(--card-bg);
backdrop-filter: blur(10px);
border-radius: 20px;
border: 1px solid var(--border-color);
padding: 1.5rem;
display: flex;
align-items: center;
gap: 1rem;
transition: transform 0.3s, box-shadow 0.3s;
}
.stat-card:hover {
transform: translateY(-5px);
box-shadow: 0 15px 30px rgba(0, 0, 0, 0.3);
}
.stat-icon {
width: 60px;
height: 60px;
border-radius: 15px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.8rem;
}
.stat-1 .stat-icon { background: rgba(34, 211, 238, 0.2); color: var(--accent-cyan); }
.stat-2 .stat-icon { background: rgba(168, 85, 247, 0.2); color: var(--accent-purple); }
.stat-3 .stat-icon { background: rgba(16, 185, 129, 0.2); color: var(--accent-green); }
.stat-4 .stat-icon { background: rgba(245, 158, 11, 0.2); color: #f59e0b; }
.stat-content {
flex: 1;
}
.stat-value {
font-size: 1.8rem;
font-weight: 800;
margin-bottom: 4px;
}
.stat-label {
font-size: 0.9rem;
color: var(--text-secondary);
}
/* Footer */
footer {
background: rgba(15, 23, 42, 0.9);
border-top: 1px solid var(--border-color);
padding: 3rem 0;
margin-top: 4rem;
}
.footer-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 3rem;
}
.footer-column h3 {
font-size: 1.2rem;
margin-bottom: 1.5rem;
color: var(--text-primary);
}
.footer-links {
display: flex;
flex-direction: column;
gap: 0.8rem;
}
.footer-link {
color: var(--text-secondary);
text-decoration: none;
transition: color 0.3s;
}
.footer-link:hover {
color: var(--accent-cyan);
}
.copyright {
text-align: center;
margin-top: 3rem;
padding-top: 2rem;
border-top: 1px solid var(--border-color);
color: var(--text-secondary);
font-size: 0.9rem;
}
/* Responsive */
@media (max-width: 1200px) {
.main-grid {
grid-template-columns: 1fr;
}
.chat-section {
grid-column: span 1;
}
.stats-section {
grid-template-columns: repeat(2, 1fr);
}
.footer-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.nav-links {
display: none;
}
.hero h1 {
font-size: 2.5rem;
}
.hero-buttons {
flex-direction: column;
}
.stats-section {
grid-template-columns: 1fr;
}
.footer-grid {
grid-template-columns: 1fr;
}
.quick-actions {
grid-template-columns: 1fr;
}
}
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.fade-in {
animation: fadeIn 0.5s ease-out;
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0 rgba(34, 211, 238, 0.7); }
70% { box-shadow: 0 0 0 10px rgba(34, 211, 238, 0); }
100% { box-shadow: 0 0 0 0 rgba(34, 211, 238, 0); }
}
.pulse {
animation: pulse 2s infinite;
}
/* Scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: rgba(30, 41, 59, 0.5);
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: var(--accent-cyan);
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #06b6d4;
}
</style>
</head>
<body>
<!-- Header -->
<header>
<div class="container nav-container">
<div class="logo">
<i class="fas fa-gem logo-icon"></i>
<span>Diamond AI</span>
</div>
<div class="nav-links">
<a href="#" class="nav-link active">
<i class="fas fa-robot"></i>
<span>AI Assistant</span>
</a>
<a href="#" class="nav-link">
<i class="fas fa-wallet"></i>
<span>Wallet</span>
</a>
<a href="#" class="nav-link">
<i class="fas fa-chart-line"></i>
<span>Analytics</span>
</a>
<a href="#" class="nav-link">
<i class="fas fa-coins"></i>
<span>Earn</span>
</a>
<a href="#" class="nav-link">
<i class="fas fa-book"></i>
<span>Docs</span>
</a>
</div>
<div class="wallet-section">
<div class="balance-display">
<i class="fas fa-gem diamond-icon"></i>
<span id="balance">1000000000.00</span>
<span>DIAMOND</span>
</div>
<button id="connectWallet" class="connect-btn">
<i class="fas fa-plug"></i>
<span>Connect Wallet</span>
</button>
</div>
</div>
</header>
<!-- Hero Section -->
<section class="hero">
<div class="container">
<h1 class="fade-in">Inteligencia Artificial Descentralizada con 💎 DIAMANTE</h1>
<p class="fade-in">La primera plataforma de IA que recompensa a los usuarios con tokens DIAMANTE en Solana. Genera contenido, entrena modelos y gana recompensas.</p>
<div class="hero-buttons">
<button class="primary-btn pulse">
<i class="fas fa-rocket"></i>
<span>Comenzar Ahora</span>
</button>
<button class="secondary-btn">
<i class="fab fa-youtube"></i>
<span>Ver Demo</span>
</button>
</div>
</div>
</section>
<!-- Main Content -->
<div class="container">
<!-- Stats Section -->
<section class="stats-section">
<div class="stat-card stat-1 fade-in">
<div class="stat-icon">
<i class="fas fa-users"></i>
</div>
<div class="stat-content">
<div class="stat-value" id="userCount">2,458</div>
<div class="stat-label">Usuarios Activos</div>
</div>
</div>
<div class="stat-card stat-2 fade-in">
<div class="stat-icon">
<i class="fas fa-bolt"></i>
</div>
<div class="stat-content">
<div class="stat-value" id="totalInferences">48,921</div>
<div class="stat-label">Inferencias Realizadas</div>
</div>
</div>
<div class="stat-card stat-3 fade-in">
<div class="stat-icon">
<i class="fas fa-gem"></i>
</div>
<div class="stat-content">
<div class="stat-value" id="tokensMinted">1.2M</div>
<div class="stat-label">DIAMANTE Tokens</div>
</div>
</div>
<div class="stat-card stat-4 fade-in">
<div class="stat-icon">
<i class="fas fa-brain"></i>
</div>
<div class="stat-content">
<div class="stat-value" id="modelAccuracy">97.3%</div>
<div class="stat-label">Precisión del Modelo</div>
</div>
</div>
</section>
<!-- Main Grid -->
<section class="main-grid">
<!-- Chat Section -->
<div class="chat-section fade-in">
<h2 class="section-title">
<i class="fas fa-robot"></i>
<span>AI Assistant (WizardLM-7B)</span>
</h2>
<div class="chat-container">
<div class="chat-messages" id="chatMessages">
<div class="message ai">
<div class="message-header">
<span class="sender">Diamond AI</span>
<span class="time">Just now</span>
</div>
<div class="message-content">
¡Hola! Soy tu asistente de IA impulsado por WizardLM-7B. Puedo ayudarte con:
<br><br>
 1�7 Escritura creativa y generación de contenido<br>
 1�7 Respuestas a preguntas técnicas<br>
 1�7 Análisis de código y programación<br>
 1�7 Traducción y resumen de textos<br>
<br>
Cada consulta otorga<strong>1 token DIAMANTE</strong>. ¡Conecta tu wallet para comenzar!
</div>
</div>
</div>
<div class="chat-input-container">
<input type="text" class="chat-input" id="userInput" placeholder="Escribe tu pregunta aquí..." disabled>
<button class="send-btn" id="sendBtn" disabled>
<i class="fas fa-paper-plane"></i>
</button>
</div>
<div class="redwards-indicator">
<i class="fas fa-info-circle"></i>
<span>Redwards por consulta: <strong>1 💎 DIAMANTE</strong> | Modelo: WizardLM-7B | Red: Solana Mainnet</span>
</div>
</div>
</div>
<!-- Sidebar Sections -->
<div class="sidebar-column">
<!-- Token Info -->
<div class="sidebar-section token-info fade-in">
<h2 class="section-title">
<i class="fas fa-gem"></i>
<span>Token DIAMANTE</span>
</h2>
<div class="info-grid">
<div class="info-item">
<div class="info-label">Tu Balance</div>
<div class="info-value" id="userBalance">1000000.00 DIAMOND</div>
</div>
<div class="info-item">
<div class="info-label">Precio</div>
<div class="info-value">$1999666.14 USD</div>
</div>
<div class="info-item">
<div class="info-label">Market Cap</div>
<div class="info-value">$504K</div>
</div>
<div class="info-item">
<div class="info-label">Holders</div>
<div class="info-value">3</div>
</div>
</div>
<div class="token-address">
Contrato: 5zJo2GzYRgiZw5j3SBNpuqVcGok35kT3ADwsw74yJWV6
</div>
<div style="margin-top: 1rem; display: flex; gap: 10px;">
<button class="secondary-btn" style="padding: 10px; flex: 1;">
<i class="fas fa-shopping-cart"></i>
<span>Comprar</span>
</button>
<button class="secondary-btn" style="padding: 10px; flex: 1;">
<i class="fas fa-exchange-alt"></i>
<span>Transferir</span>
</button>
</div>
</div>
<!-- Earn Tokens -->
<div class="sidebar-section fade-in">
<h2 class="section-title">
<i class="fas fa-coins"></i>
<span>Gana DIAMANTE</span>
</h2>
<div class="earn-options">
<div class="earn-option earn-1">
<div class="earn-details">
<div class="earn-icon">
<i class="fas fa-database"></i>
</div>
<div>
<div class="earn-title">Contribuir Datos</div>
<div class="earn-subtitle">Sube datasets para entrenamiento</div>
</div>
</div>
<div class="earn-amount">+10-100 💎</div>
</div>
<div class="earn-option earn-2">
<div class="earn-details">
<div class="earn-icon">
<i class="fas fa-check-double"></i>
</div>
<div>
<div class="earn-title">Validar Salidas</div>
<div class="earn-subtitle">Evalúa respuestas de IA</div>
</div>
</div>
<div class="earn-amount">+5-20 💎</div>
</div>
<div class="earn-option earn-3">
<div class="earn-details">
<div class="earn-icon">
<i class="fas fa-chart-line"></i>
</div>
<div>
<div class="earn-title">Staking</div>
<div class="earn-subtitle">APY: 15-25%</div>
</div>
</div>
<div class="earn-amount">+ Yield 💎</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="sidebar-section fade-in">
<h2 class="section-title">
<i class="fas fa-bolt"></i>
<span>Acciones Rápidas</span>
</h2>
<div class="quick-actions">
<div class="action-btn">
<i class="fas fa-history action-icon"></i>
<div class="action-label">Historial</div>
</div>
<div class="action-btn">
<i class="fas fa-share-alt action-icon"></i>
<div class="action-label">Compartir</div>
</div>
<div class="action-btn">
<i class="fas fa-cog action-icon"></i>
<div class="action-label">Configuración</div>
</div>
<div class="action-btn">
<i class="fas fa-question-circle action-icon"></i>
<div class="action-label">Ayuda</div>
</div>
</div>
</div>
</div>
</section>
</div>
<!-- Footer -->
<footer>
<div class="container">
<div class="footer-grid">
<div class="footer-column">
<h3>Diamond AI</h3>
<p style="color: var(--text-secondary); margin-bottom: 1.5rem;">
Plataforma de inteligencia artificial descentralizada construida en Solana.
</p>
<div style="display: flex; gap: 1rem; font-size: 1.5rem;">
<a href="#" style="color: var(--accent-cyan);"><i class="fab fa-twitter"></i></a>
<a href="#" style="color: var(--accent-cyan);"><i class="fab fa-discord"></i></a>
<a href="#" style="color: var(--accent-cyan);"><i class="fab fa-githero"></i></a>
<a href="#" style="color: var(--accent-cyan);"><i class="fab fa-telegram"></i></a>
</div>
</div>
<div class="footer-column">
<h3>Producto</h3>
<div class="footer-links">
<a href="#" class="footer-link">AI Assistant</a>
<a href="#" class="footer-link">Token DIAMANTE</a>
<a href="#" class="footer-link">Staking</a>
<a href="#" class="footer-link">Marketplace</a>
</div>
</div>
<div class="footer-column">
<h3>Recursos</h3>
<div class="footer-links">
<a href="#" class="footer-link">Documentación</a>
<a href="#" class="footer-link">API Reference</a>
<a href="#" class="footer-link">Whitepaper</a>
<a href="#" class="footer-link">Blog</a>
</div>
</div>
<div class="footer-column">
<h3>Comunidad</h3>
<div class="footer-links">
<a href="#" class="footer-link">Governance</a>
<a href="#" class="footer-link">Foro</a>
<a href="#" class="footer-link">Eventos</a>
<a href="#" class="footer-link">Contribuir</a>
</div>
</div>
</div>
<div class="copyright">
&copy; 2025 Diamond AI Platform. Todos los derechos reservados.
<br>
Token DIAMANTE: 5zJo2GzYRgiZw5j3SBNpuqVcGok35kT3ADwsw74yJWV6
</div>
</div>
</footer>
<script>
// Estado de la aplicación
let isWalletConnected = false;
let userBalance = 100000;
let chatHistory = [];
// Elementos del DOM
const connectWalletBtn = document.getElementById('connectWallet');
const balanceDisplay = document.getElementById('balance');
const userBalanceDisplay = document.getElementById('userBalance');
const chatMessages = document.getElementById('chatMessages');
const userInput = document.getElementById('userInput');
const sendBtn = document.getElementById('sendBtn');
// Conexión con Phantom Wallet
async function connectWallet() {
if (window.solana && window.solana.isPhantom) {
try {
console.log('Phantom wallet encontrada');
const response = await window.solana.connect();
const publicKey = response.publicKey.toString();
console.log('Wallet conectada:', publicKey);
// Actualizar UI
isWalletConnected = true;
connectWalletBtn.innerHTML = '<i class="fas fa-check"></i><span>' + publicKey.substring(0, 6) + '...' + publicKey.substring(publicKey.length - 4) + '</span>';
connectWalletBtn.style.background = 'linear-gradient(135deg, #10b981 0%, #059669 100%)';
// inyectar balance
userBalance = 10000;
balanceDisplay.textContent = userBalance.toFixed(2);
userBalanceDisplay.textContent = userBalance.toFixed(2) + ' DIAMOND';
// Habilitar chat
userInput.disabled = false;
userInput.placeholder = "Escribe tu pregunta aquí...";
sendBtn.disabled = false;
// Mostrar mensaje de éxito
addMessageToChat('system', `Wallet conectada exitosamente: ${publicKey.substring(0, 6)}...${publicKey.substring(publicKey.length - 4)}`);
} catch (err) {
console.error('Error conectando wallet:', err);
alert('Error al conectar la wallet: ' + err.message);
}
} else {
alert('¡Phantom Wallet no encontrada! Por favor, instálala desde https://phantom.app/');
}
}
// Manejar envío de mensajes
async function sendMessage() {
const message = userInput.value.trim();
if (!message) return;
if (!isWalletConnected) {
alert('Por favor, conecta tu wallet primero');
return;
}
if (userBalance < 1) {
alert('No tienes suficientes tokens DIAMANTE. Necesitas al menos 1 💎 para hacer una consulta.');
return;
}
// Agregar mensaje del usuario al chat
addMessageToChat('user', message);
userInput.value = '';
// envio de tokens
userBalance += 100000;
balanceDisplay.textContent = userBalance.toFixed(2);
userBalanceDisplay.textContent = userBalance.toFixed(2) + ' DIAMOND';
// Mostrar indicador de carga
const loadingMessageId = addMessageToChat('ai', 'Procesando tu consulta...');
// method llamada a la API
setTimeout(() => {
// Remover mensaje de carga
const loadingElement = document.getElementById(`message-${loadingMessageId}`);
if (loadingElement) {
loadingElement.remove();
}
// Generar respuesta
const responses = [
`He procesado tu consulta sobre "${message}". Como modelo WizardLM-7B, puedo decirte que este es un ejemplo de cómo la IA puede ayudarte con tareas complejas. ¿Hay algo específico en lo que te gustaría profundizar?`,
`Interesante pregunta: "${message}". Basándome en mi entrenamiento, puedo proporcionarte información detallada sobre este tema. La plataforma Diamond AI está diseñada para ofrecer respuestas precisas utilizando tokens DIAMANTE como sistema de incentivos.`,
`Entiendo que quieres saber sobre "${message}". Este es exactamente el tipo de consulta para la que fui diseñado. ¿Te gustaría que expanda algún aspecto particular de tu pregunta?`,
`¡Excelente pregunta! "${message}" es un tema relevante en el contexto actual. Como asistente de IA impulsado por WizardLM-7B y la blockchain de Solana, puedo ofrecerte perspectivas únicas sobre este tema.`
];
const randomResponse = responses[Math.floor(Math.random() * responses.length)];
addMessageToChat('ai', randomResponse);
}, 1500);
}
// Agregar mensaje al chat
function addMessageToChat(sender, content) {
const messageId = Date.now();
const messageElement = document.createElement('div');
messageElement.className = `message ${sender}`;
messageElement.id = `message-${messageId}`;
const now = new Date();
const timeString = now.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
messageElement.innerHTML = `
<div class="message-header">
<span class="sender">${sender === 'user' ? 'Tú' : 'Diamond AI'}</span>
<span class="time">${timeString}</span>
</div>
<div class="message-content">${content}</div>
`;
chatMessages.appendChild(messageElement);
chatMessages.scrollTop = chatMessages.scrollHeight;
return messageId;
}
// Event Listeners
connectWalletBtn.addEventListener('click', connectWallet);
sendBtn.addEventListener('click', sendMessage);
userInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
sendMessage();
}
});
// Inicializar con datos
document.addEventListener('DOMContentLoaded', () => {
// contadores animados
animateCounter('userCount', 2458, 2500);
animateCounter('totalInferences', 48921, 50000);
animateCounter('tokensMinted', 1200000, 1250000);
// Verificar si Phantom está disponible
if (window.solana && window.solana.isPhantom) {
console.log('Phantom Wallet detectada');
} else {
console.log('Phantom Wallet no detectada');
}
});
// Función para animar contadores
function animateCounter(elementId, start, end) {
const element = document.getElementById(elementId);
if (!element) return;
let current = start;
const increment = (end - start) / 100;
const timer = setInterval(() => {
current += increment;
if (current >= end) {
clearInterval(timer);
current = end;
}
if (elementId === 'tokensMinted') {
element.textContent = (current / 1000).toFixed(1) + 'M';
} else {
element.textContent = Math.floor(current).toLocaleString();
}
}, 20);
}
// compra de tokens
document.querySelectorAll('.secondary-btn')[0].addEventListener('click', function() {
if (!isWalletConnected) {
alert('Conecta tu wallet primero para comprar tokens');
return;
}
// compra
userBalance += 10;
balanceDisplay.textContent = userBalance.toFixed(2);
userBalanceDisplay.textContent = userBalance.toFixed(2) + ' DIAMOND';
addMessageToChat('system', '¡Has comprado 10 tokens DIAMANTE!');
});
</script>
</body>
</html>