01 — Panoramica
Cos'è Vanitas
Vanitas è una fucina di indirizzi vanity multicatena lato client. Scegli un prefisso e/o un suffisso; l'app cerca una coppia di chiavi il cui indirizzo pubblico corrisponde a quel modello. La generazione viene eseguita in Web Workers sulla CPU. Le chiavi private vengono create nella memoria del tuo dispositivo e non vengono mai caricate.
Un indirizzo vanity è ancora un normale indirizzo crittografico. La chiave privata è casuale; solo la codifica pubblica viene filtrata finché non appare nel modo desiderato: utile per branding, donazioni, conio e portafogli pubblici memorabili.
Dove
Il tuo browser · la tua CPU
Solo hosting statico; il mining non effettua chiamate di rete
Fucine
9 catene + terminale CLI
Solana · EVM · Bitcoin · Tron · Aptos · Sui · TON · Cardano · XRP
Produzione
Indirizzo + chiave privata
I formati di esportazione dipendono dal forge (JSON, hex, WIF, …)
02 — Conduttura
Il ciclo di ricerca
Ogni forgia segue lo stesso ciclo di alto livello, ripetuto milioni di volte:
Secure random
crypto.getRandomValues draws a fresh private key — full entropy, every attempt.
- Disegna una chiave privata casuale crittograficamente sicura (
crypto.getRandomValues). - Derivare la chiave pubblica con la curva della catena (Ed25519 o secp256k1).
- Codifica l'indirizzo nel modo previsto dalla catena (Base58, esadecimale, bech32, ...).
- Confrontalo con il tuo prefisso/suffisso (e le regole della modalità).
- In partita: fermare i lavoratori, mostrare il risultato, suono/prova/esportazione opzionale.
I lavoratori eseguono questo ciclo in parallelo tra i core della CPU. Il thread dell'interfaccia utente rimane reattivo; l'avanzamento (tentativi, velocità, ETA) viene aggregato dai messaggi del lavoratore. Quando un lavoratore trova un risultato positivo, il pool viene chiuso.
Perché questo è sicuro
La ricerca di un indirizzo vanity non indebolisce la chiave privata. Stai rifiutando i candidati finché l'indirizzo pubblico non sembra corretto: lo stesso processo di generazione di chiavi casuali e mantenimento di quella fortunata.
03 — Modelli
Difficoltà, alfabeti, avvertenze
Scale temporali previste con lunghezza del modello e dimensione dell'alfabeto. Ogni carattere in più moltiplica lo spazio di ricerca. L'interfaccia utente della forgia mostra una stima della difficoltà in tempo reale basata sul tuo modello e su un tasso di hash misurato o presunto.
~65,536
expected attempts · EVM · Aptos · Sui · 16n
Base58
~58 simboli
Solana, Tron, XRP (alfabeto XRPL), eredità Bitcoin
Esadecimale
16 simboli (0–9, a–f)
EVM, Aptos, Sui: senza distinzione tra maiuscole e minuscole per la corrispondenza
Bech32
bc1q / bc1p / indirizzo1…
Bitcoin SegWit/Taproot, Cardano: corretto HRP, quindi set di caratteri
TON
Base64url
UQ… / EQ…: con distinzione tra maiuscole e minuscole
Trappole alfabetiche
- Solana / Bitcoin Base58 — no
0,O,Iol(rifiuto di sosia). - EVM: solo esadecimale dopo
0x. Le lettere oltrea–fnon sono valide. - Tron: gli indirizzi iniziano con
T; il carattere successivo è solitamente maiuscolo. I prefissi minuscoli con distinzione tra maiuscole e minuscole spesso non corrispondono mai. - Prefisso + suffisso: entrambi i vincoli moltiplicano la difficoltà. Inizia breve; fai crescere il modello una volta che conosci la tua velocità.
04 — Catene
Ogni fucina, spiegato
Nove forge condividono lo stesso modello UX: scegli una modalità, imposta un modello, avvia i lavoratori, ma ogni catena utilizza curve, hash e codifiche di indirizzi diversi.
Solana
Coppie di chiavi Ed25519 codificate come Base58 (chiave pubblica a 32 byte). Native Web Crypto Ed25519 viene utilizzato quando il browser lo supporta; altrimenti un fallback WASM (watsign). Modalità: portafoglio e menta: stessa matematica chiave; il framing mint è per i flussi mint personalizzati del launchpad. Esportazione: array di byte JSON CLI Solana.
EVM
secp256k1 → pubkey non compresso → keccak-256 → ultimi 20 byte → indirizzo 0x…. Una chiave privata produce lo stesso indirizzo su Ethereum, Base, Arbitrum, Optimism, BSC, Polygon e ogni altra rete EVM. Modalità: wallet (EOA), CREATE at nonce 0, CREATE2 (grind salt o grind deployer). Vedere Modalità di seguito.
Bitcoin
secp256k1. Tre tipi di indirizzo: legacy P2PKH (1…), nativo SegWit P2WPKH (bc1q…), Taproot P2TR (bc1p…). L'esportazione include WIF (compresso) per l'importazione del portafoglio. Il byte HRP / versione iniziale viene gestito automaticamente durante la digitazione dei prefissi.
Tron
Stesso percorso secp256k1 + keccak di EVM per l'ID account da 20 byte, quindi Base58Check con byte di versione 0x41 → T…. Modalità: wallet e CREATE (nonce 0), utilizzando lo stesso layout RLP di EVM e quindi la codifica Tron.
Aptos
Ed25519. Indirizzo = sha3-256(pubkey ‖ 0x00) come esadecimale. Compatibile con Petra, Martian e altri portafogli Aptos che importano segreti esadecimali.
Sui
Ed25519. Indirizzo = blake2b-256(0x00 ‖ pubkey) come esadecimale (il byte flag contrassegna lo schema). Importa in Sui Wallet/Suiet con la chiave privata esadecimale.
TON
Ed25519 + Contratto portafoglio v4R2. Gli indirizzi sono moduli Base64url di facile utilizzo: UQ… (non rimbalzabile) e EQ… (rimbalzabile). La corrispondenza fa distinzione tra maiuscole e minuscole. Importa in Tonkeeper/MyTonWallet.
Cardano
Indirizzo aziendale Ed25519 (CIP-19 tipo 6, solo chiave di pagamento): intestazione 0x61 + hash pagamento Blake2b-224, bech32 con HRP addr → addr1….
XRP
Pubkey compresso secp256k1 → ID account RIPEMD160(SHA256) → Controllo Base58 classico XRPL → r…. Nota: XRPL utilizza un alfabeto Base58 diverso da Bitcoin.
05 — Modalità
Portafoglio, menta, CREATE, CREATE2
Menta
Crittograficamente identico alla coppia di chiavi di un portafoglio. I Launchpad richiedono una coppia di chiavi/chiave privata personalizzata; Vanitas etichetta il risultato come nuovo, quindi l'esportazione corrisponde a quel flusso di lavoro. Apri /sol?mode=mint, trova un pattern, incolla la chiave in pump.fun, Raydium, Meteora, ecc.
CREATE
Il primo contratto distribuito da un EOA con nonce 0 ha un indirizzo deterministico: keccak256(RLP([sender, 0]))[12:]. Vanitas macina gli EOA finché l'indirizzo del contratto derivato non corrisponde al tuo modello. Ricevi la chiave privata del distributore: esegui la distribuzione una volta da un nuovo account nonce-0.
CREATE2
Indirizzo = keccak256(0xff ‖ deployer ‖ salt ‖ initCodeHash)[12:]. Due strategie di macinatura:
- create2-salt: corregge la chiave del deployer + l'hash del codice init; cercare un sale che dia l'indirizzo della vanità.
- create2-deployer: corregge salt + hash del codice init; cercare una chiave di distribuzione il cui indirizzo CREATE2 corrisponda.
È necessario fornire un initCodeHash corretto (keccak del bytecode di distribuzione). Hash sbagliato → indirizzo on-chain sbagliato.
06 — Lavoratori
Architettura delle prestazioni
Le fonti di lavoro risiedono in src/workers/*.worker.source.ts e sono raggruppate con esbuild in public/*-worker.js. Ogni build scrive digest SHA-256 su public/worker-hash.json per live audit.
Parallelismo
Core della CPU - 1 (predefinito)
Regola i fili se la macchina si surriscalda o l'interfaccia utente lampeggia
Velocità Solana
Ed25519 nativo quando disponibile
Chrome 113+ · Firefox 129+ · Safari 17+; altrimenti WASM
Biblioteche
@noble · tweetnacl · segno zodiacale · @ton/*
Crittografia pure-JS/WASM controllata nel browser
Dopo la ricerca, i controlli di sicurezza chiave facoltativi sondano l'entropia, la disponibilità CSPRNG e un test di uniformità del chi quadrato su byte casuali, confermando che il percorso RNG del browser sembra integro.
07 — Dimostrazione
Prova del ritrovamento
Condividi prova crea un collegamento pubblico a /proof solo con catena, indirizzo e pattern — mai la chiave privata. Chiunque può aprire il collegamento e verificare che l'indirizzo corrisponda al prefisso/suffisso richiesto sul lato client.
In the proof
- Public address
- Prefix / suffix pattern
- Chain · mode · timestamp
Never in the link
- Private key / seed
- Worker memory dumps
- Clipboard or exports
I ritrovamenti recenti nell'interfaccia utente utilizzano sessionStorage solo per i metadati dell'indirizzo + del pattern. La chiusura della scheda cancella la cronologia; le chiavi non sono conservate lì.
08 — CLI
Fucina terminale
Stessa idea fuori dal browser: npx vanitas apre una procedura guidata o passa flag per catena, modalità, prefisso, thread e parametri CREATE2. I risultati scrivono un file JSON con la modalità 0600 quando il sistema operativo lo supporta. Pacchetto: npmjs.com/package/vanitas.
npx vanitas evm --mode contract --prefix cafe --threads 8
09 — Verifica
Confermalo tu stesso
- Apri DevTools → Rete, cancella il registro, avvia una fucina: non dovresti vedere nessuna richiesta durante l'estrazione.
- Carica la pagina, vai offline, genera di nuovo: funziona ancora.
- Esegui live audit e confronta gli hash di lavoro con
worker-hash.json. - Leggi la fonte su GitHub, in particolare
src/workers/.
Promemoria
Salva la tua chiave privata prima di chiudere la scheda. Le chiavi smarrite non possono essere recuperate. Per saldi di grandi dimensioni: prova prima con un piccolo trasferimento, preferisci i portafogli hardware per la custodia a lungo termine e non incollare mai le chiavi in siti non affidabili.










