haraberget's picture
clear all, make a cool shader with 3d graphics
cc29ad9 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DashWallet Creator</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
<style>
.bg-dash {
background: linear-gradient(135deg, #001233 0%, #00041a 100%);
}
.wallet-card {
backdrop-filter: blur(16px);
background: rgba(0, 10, 50, 0.4);
border: 1px solid rgba(0, 140, 231, 0.3);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
transition: all 0.3s ease;
}
.wallet-card:hover {
border-color: rgba(0, 140, 231, 0.6);
box-shadow: 0 8px 32px rgba(0, 140, 231, 0.2);
}
.download-btn:hover {
transform: translateY(-4px);
box-shadow: 0 12px 24px rgba(0, 140, 231, 0.4);
filter: brightness(1.1);
}
input:focus {
box-shadow: 0 0 0 4px rgba(0, 140, 231, 0.4);
transform: scale(1.02);
transition: all 0.2s ease;
}
</style>
</head>
<body class="min-h-screen bg-dash text-white">
<div id="vanta-bg" class="fixed inset-0 z-0"></div>
<div class="absolute inset-0 z-0 bg-gradient-to-b from-transparent to-black opacity-30"></div>
<div class="container mx-auto px-4 py-12 relative z-10 transform-gpu">
<div class="max-w-md mx-auto text-center mb-12">
<div class="flex justify-center mb-6">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z" stroke="#008CE7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 8V16" stroke="#008CE7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8 12H16" stroke="#008CE7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</div>
<h1 class="text-4xl font-bold mb-4">Create Your <span class="text-blue-300">Dash</span> Wallet</h1>
<p class="text-blue-100">Generate and download your secure Dash cryptocurrency wallet credentials</p>
</div>
<div class="wallet-card rounded-2xl p-8 shadow-2xl max-w-md mx-auto">
<form id="walletForm" class="space-y-6">
<div>
<label for="username" class="block text-sm font-medium mb-2">Username</label>
<input type="text" id="username" class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-10 border border-blue-300 border-opacity-30 text-white placeholder-blue-200 focus:outline-none focus:border-blue-400" placeholder="your_username" required>
</div>
<div>
<label for="password" class="block text-sm font-medium mb-2">Password</label>
<div class="relative">
<input type="password" id="password" class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-10 border border-blue-300 border-opacity-30 text-white placeholder-blue-200 focus:outline-none focus:border-blue-400" placeholder="••••••••" required>
<button type="button" class="absolute right-3 top-3 text-blue-200 hover:text-blue-100" onclick="togglePassword()">
<i data-feather="eye"></i>
</button>
</div>
</div>
<div>
<label for="email" class="block text-sm font-medium mb-2">Email (optional)</label>
<input type="email" id="email" class="w-full px-4 py-3 rounded-lg bg-white bg-opacity-10 border border-blue-300 border-opacity-30 text-white placeholder-blue-200 focus:outline-none focus:border-blue-400" placeholder="your@email.com">
</div>
<div class="pt-2">
<button type="submit" class="w-full py-3 px-4 bg-blue-500 hover:bg-blue-600 rounded-lg font-medium transition duration-200 flex items-center justify-center">
<i data-feather="key" class="mr-2"></i> Generate Wallet
</button>
</div>
</form>
<div id="walletInfo" class="hidden mt-8 space-y-4">
<div class="flex items-center justify-between border-b border-blue-400 border-opacity-30 pb-2">
<span class="font-medium">Wallet Address:</span>
<span id="walletAddress" class="font-mono text-blue-300">DASH-XXXXXXXXXXXXXXXX</span>
</div>
<div class="flex items-center justify-between border-b border-blue-400 border-opacity-30 pb-2">
<span class="font-medium">Private Key:</span>
<span id="privateKey" class="font-mono text-blue-300 truncate">XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</span>
</div>
<div class="flex items-center justify-between">
<span class="font-medium">Recovery Phrase:</span>
<span id="recoveryPhrase" class="font-mono text-blue-300 truncate">word1 word2 word3...</span>
</div>
<div class="pt-6">
<button id="downloadBtn" class="download-btn w-full py-3 px-4 bg-green-500 hover:bg-green-600 rounded-lg font-medium transition duration-200 flex items-center justify-center">
<i data-feather="download" class="mr-2"></i> Download Wallet File
</button>
</div>
<div class="text-xs text-blue-200 text-center pt-4">
<i data-feather="alert-triangle" class="inline mr-1"></i> Save this information securely! It cannot be recovered if lost.
</div>
</div>
</div>
</div>
<script>
// Initialize Vanta.js 3D globe background
VANTA.GLOBE({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x008ce7,
backgroundColor: 0x0a0a2a,
size: 1.00,
rings: 12,
points: 12.00
});
// Generate random wallet data
function generateWalletData() {
const username = document.getElementById('username').value;
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const words = ['dash', 'crypto', 'wallet', 'secure', 'private', 'key', 'blockchain', 'digital', 'money', 'finance', 'currency', 'decentralized'];
// Generate random wallet address
let address = 'DASH-';
for (let i = 0; i < 16; i++) {
address += chars.charAt(Math.floor(Math.random() * chars.length));
}
// Generate random private key
let privateKey = '';
for (let i = 0; i < 32; i++) {
privateKey += chars.charAt(Math.floor(Math.random() * chars.length));
}
// Generate random recovery phrase
let recoveryPhrase = [];
for (let i = 0; i < 12; i++) {
recoveryPhrase.push(words[Math.floor(Math.random() * words.length)]);
}
return {
username,
address,
privateKey,
recoveryPhrase: recoveryPhrase.join(' '),
timestamp: new Date().toISOString()
};
}
// Toggle password visibility
function togglePassword() {
const passwordInput = document.getElementById('password');
if (passwordInput.type === 'password') {
passwordInput.type = 'text';
} else {
passwordInput.type = 'password';
}
feather.replace();
}
// Download wallet data as JSON file
function downloadWalletData(data) {
const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `dash_wallet_${data.username}.json`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// Form submission handler
document.getElementById('walletForm').addEventListener('submit', function(e) {
e.preventDefault();
const walletData = generateWalletData();
// Display wallet info
document.getElementById('walletAddress').textContent = walletData.address;
document.getElementById('privateKey').textContent = walletData.privateKey;
document.getElementById('recoveryPhrase').textContent = walletData.recoveryPhrase;
document.getElementById('walletInfo').classList.remove('hidden');
// Set up download button
document.getElementById('downloadBtn').addEventListener('click', function() {
downloadWalletData(walletData);
});
// Scroll to wallet info
document.getElementById('walletInfo').scrollIntoView({ behavior: 'smooth' });
});
// Initialize feather icons
feather.replace();
</script>
</body>
</html>