Documentos

como funciona

Scroll down
Un recorrido completo por Vanitas: cómo funciona el vanity mining, qué produce cada forja, cómo los trabajadores buscan en paralelo y cómo comprobar que nada sale de tu máquina.

01 — Descripción general

¿Qué es Vanitas?

Vanitas es una falsificación de direcciones personalizadas de múltiples cadenas del lado del cliente. Eliges un prefijo y/o sufijo; la aplicación busca un par de claves cuya dirección pública coincida con ese patrón. La generación se ejecuta en Web Workers en tu CPU. Las claves privadas se crean en la memoria de su dispositivo y nunca se cargan.

Una dirección personalizada sigue siendo una dirección criptográfica normal. La clave privada es aleatoria; solo se filtra la codificación pública hasta que tenga el aspecto deseado, lo que resulta útil para marcas, donaciones, mentas y billeteras públicas memorables.

Dónde

Tu navegador · tu CPU

Solo alojamiento estático; la minería no hace llamadas a la red

Forjas

9 cadenas + terminal CLI

Solana · EVM · Bitcoin · Tron · Aptos · Sui · TON · Cardano · XRP

Producción

Dirección + clave privada

Los formatos de exportación dependen de la forja (JSON, hexadecimal, WIF,…)

02 — Tubería

El bucle de búsqueda

Cada forja sigue el mismo bucle de alto nivel, repetido millones de veces:

Vanitas search loopMISS → AGAIN01RNG02DERIVE03ENCODE04MATCH05DONE

Secure random

crypto.getRandomValues draws a fresh private key — full entropy, every attempt.

Fig. — Search loop · click a stage
  1. Extraiga una clave privada aleatoria criptográficamente segura (crypto.getRandomValues).
  2. Derive la clave pública con la curva de la cadena (Ed25519 o secp256k1).
  3. Codifique la dirección de la forma esperada por la cadena (Base58, hexadecimal, bech32,…).
  4. Compare con su prefijo/sufijo (y reglas de modo).
  5. En el partido: detener a los trabajadores, mostrar el resultado, sonido / prueba / exportación opcional.

Los trabajadores ejecutan este bucle en paralelo en los núcleos de la CPU. El hilo de la interfaz de usuario sigue respondiendo; El progreso (intentos, tasa, ETA) se agrega a partir de los mensajes de los trabajadores. Cuando un trabajador encuentra un resultado, el grupo finaliza.

¿Por qué esto es seguro?

La búsqueda de una dirección personalizada no debilita la clave privada. Está rechazando candidatos hasta que la dirección pública parezca correcta: el mismo proceso que generar claves aleatorias y quedarse con el afortunado.

03 — Patrones

Dificultad, alfabetos, advertencias.

Escalas de tiempo esperadas con duración del patrón y tamaño del alfabeto. Cada carácter extra multiplica el espacio de búsqueda. La interfaz de usuario de Forge muestra una estimación de la dificultad en vivo basada en su patrón y una tasa de hash medida o supuesta.

Pattern length4 chars

~65,536

expected attempts · EVM · Aptos · Sui · 16n

Fig. — Difficulty explorer · drag length · pick alphabet

base58

~58 símbolos

Solana, Tron, XRP (alfabeto XRPL), legado de Bitcoin

Maleficio

16 símbolos (0–9, a–f)

EVM, Aptos, Sui: no distinguen entre mayúsculas y minúsculas para realizar coincidencias

bech32

bc1q / bc1p / dirección1…

Bitcoin SegWit/Taproot, Cardano: HRP fijo, luego conjunto de caracteres

TON

base64url

UQ… / EQ… — distingue entre mayúsculas y minúsculas

trampas del alfabeto

  • Solana / Bitcoin Base58: no 0, O, I o l (rechazo de apariencia similar).
  • EVM: solo hexadecimal después de 0x. Las letras posteriores a a–f no son válidas.
  • Tron — las direcciones comienzan con T; el siguiente carácter suele estar en mayúscula. Los prefijos en minúsculas que distinguen entre mayúsculas y minúsculas a menudo nunca coinciden.
  • Prefijo + sufijo: ambas restricciones multiplican la dificultad. Empiece breve; Haga crecer el patrón una vez que conozca su tasa.

04 — Cadenas

Cada fragua, explicada.

Nueve forjas comparten el mismo patrón de UX (elija un modo, establezca un patrón, inicie trabajadores), pero cada cadena utiliza diferentes curvas, hashes y codificaciones de direcciones.

Solana

Pares de claves Ed25519 codificados como Base58 (clave pública de 32 bytes). Native Web Crypto Ed25519 se utiliza cuando el navegador lo admite; de lo contrario, un respaldo WASM (watsign). Modos: billetera y mint: las mismas matemáticas clave; El marco mint es para flujos mint personalizados de la plataforma de lanzamiento. Exportar: matriz de bytes JSON de Solana CLI.

EVM

secp256k1 → clave pública sin comprimir → keccak-256 → últimos 20 bytes → dirección 0x…. Una clave privada produce la misma dirección en Ethereum, Base, Arbitrum, Optimism, BSC, Polygon y cualquier otra red EVM. Modos: billetera (EOA), CREAR en nonce 0, CREATE2 (moler sal o moler implementador). Consulte Modos a continuación.

Bitcoin

secp256k1. Tres tipos de direcciones: P2PKH heredado (1…), SegWit P2WPKH nativo (bc1q…), Taproot P2TR (bc1p…). La exportación incluye WIF (comprimido) para la importación de billetera. El byte inicial de HRP/versión se maneja automáticamente al escribir prefijos.

Tron

La misma ruta secp256k1 + keccak que EVM para el ID de cuenta de 20 bytes, luego Base58Check con el byte de versión 0x41T…. Modos: billetera y CREATE (nonce 0), usando el mismo diseño RLP que EVM y luego la codificación Tron.

Aptos

Ed25519. Dirección = sha3-256(pubkey ‖ 0x00) como hexadecimal. Compatible con Petra, Martian y otras carteras Aptos que importan secretos hexadecimales.

Sui

Ed25519. Dirección = blake2b-256(0x00 ‖ pubkey) como hexadecimal (el byte de bandera marca el esquema). Importe a Sui Wallet / Suiet con la clave privada hexadecimal.

TON

Ed25519 + Contrato de billetera v4R2. Las direcciones son formularios Base64url fáciles de usar: UQ… (no rebotable) y EQ… (rebotable). La coincidencia distingue entre mayúsculas y minúsculas. Importar a Tonkeeper / MyTonWallet.

Cardano

Dirección empresarial Ed25519 (CIP-19 tipo 6, solo clave de pago): encabezado 0x61 + hash de pago Blake2b-224, bech32 con HRP addraddr1….

XRP

clave pública comprimida secp256k1 → ID de cuenta RIPEMD160 (SHA256) → XRPL classic Base58 Check → r…. Nota: XRPL utiliza un alfabeto Base58 diferente al de Bitcoin.

05 — Modos

Cartera, nueva, CREATE, CREATE2

Menta

Criptográficamente idéntico a un par de claves de billetera. Las plataformas de lanzamiento solicitan un par de claves mint personalizado/clave privada; Vanitas etiqueta el resultado como perfecto para que la exportación coincida con ese flujo de trabajo. Abra /sol?mode=mint, busque un patrón, pegue la clave en pump.fun, Raydium, Meteora, etc.

CREATE

El primer contrato implementado desde un EOA con nonce 0 tiene una dirección determinista: keccak256(RLP([sender, 0]))[12:]. Vanitas muele los EOA hasta que la dirección del contrato derivada coincida con su patrón. Recibirá la clave privada del implementador: implemente una vez desde una cuenta nueva nonce-0.

CREATE2

Dirección = keccak256(0xff ‖ deployer ‖ salt ‖ initCodeHash)[12:]. Dos estrategias de rutina:

  • create2-salt — fix deployer key + init code hash; busque una sal que produzca la dirección personalizada.
  • create2-deployer — corrige salt + hash del código de inicio; busque una clave de implementación cuya dirección CREATE2 coincida.

Debe proporcionar un initCodeHash correcto (keccak del código de bytes de implementación). Hash incorrecto → dirección en cadena incorrecta.

06 — Trabajadores

Arquitectura de rendimiento

Las fuentes de trabajadores viven bajo src/workers/*.worker.source.ts y están agrupadas con esbuild en public/*-worker.js. Cada compilación escribe resúmenes SHA-256 en public/worker-hash.json para live audit.

Parallel workers4
Web Worker poolMAIN THREADUI · progress · stopW1GRINDW2GRINDW3GRINDW4GRINDFIRST HIT → TERMINATE POOL
Fig. — Worker pool · adjust threads

Paralelismo

Núcleos de CPU − 1 (predeterminado)

Ajuste los hilos si la máquina se calienta o la interfaz de usuario tartamudea

velocidad solana

Ed25519 nativo cuando esté disponible

Cromo 113+ · Firefox 129+ · Safari 17+; más WASM

Bibliotecas

@noble · tweetnacl · watsign · @ton/*

Cripto JS / WASM puro auditado en el navegador

Después de un hallazgo, comprobaciones de seguridad clave opcionales sondean la entropía, la disponibilidad de CSPRNG y una prueba de uniformidad de chi-cuadrado en bytes aleatorios, lo que confirma que la ruta RNG del navegador parece estar en buen estado.

07 — Prueba

prueba de hallazgo

Compartir prueba crea un enlace público a /proof solo con cadena, dirección y patrón, nunca la clave privada. Cualquiera puede abrir el enlace y verificar que la dirección coincida con el prefijo/sufijo reclamado en el lado del cliente.

In the proof

  • Public address
  • Prefix / suffix pattern
  • Chain · mode · timestamp

Never in the link

  • Private key / seed
  • Worker memory dumps
  • Clipboard or exports
Fig. — Proof of find · shareable vs private

Los hallazgos recientes en la interfaz de usuario usan sessionStorage solo para metadatos de dirección + patrón. Al cerrar la pestaña se borra ese historial; Las claves no se almacenan allí.

08-CLI

Forja terminal

La misma idea fuera del navegador: npx vanitas abre un asistente o pasa indicadores para cadena, modo, prefijo, subprocesos y parámetros CREATE2. Los resultados escriben un archivo JSON con el modo 0600 cuando el sistema operativo lo admite. Paquete: npmjs.com/package/vanitas.

npx vanitas evm --modo contrato --prefix cafe --threads 8

09 — Verificar

Confírmalo tú mismo

  1. Abra DevTools → Red, borre el registro, inicie una falsificación; debería ver sin solicitudes mientras extrae.
  2. Cargue la página, desconéctese, genere nuevamente; todavía funciona.
  3. Ejecute live audit y compare los hashes de trabajo con worker-hash.json.
  4. Lea la fuente sobre GitHub, especialmente src/workers/.

Recordatorio

Guarde su clave privada antes de cerrar la pestaña. Las llaves perdidas no se pueden recuperar. Para saldos grandes: pruebe primero con una transferencia pequeña, prefiera billeteras de hardware para la custodia a largo plazo y nunca pegue claves en sitios que no sean de confianza.