Documenti

Come funziona

Scroll down
Un tour completo di Vanitas: come funziona il vanity mining, cosa produce ciascuna fucina, come i lavoratori effettuano ricerche in parallelo e come verificare che nulla lasci la tua macchina.

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:

Vanitas search loopMISS → AGAIN01RNG02DERIVE03ENCODE04MATCH05DONE

Secure random

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

Fig. — Search loop · click a stage
  1. Disegna una chiave privata casuale crittograficamente sicura (crypto.getRandomValues).
  2. Derivare la chiave pubblica con la curva della catena (Ed25519 o secp256k1).
  3. Codifica l'indirizzo nel modo previsto dalla catena (Base58, esadecimale, bech32, ...).
  4. Confrontalo con il tuo prefisso/suffisso (e le regole della modalità).
  5. 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.

Pattern length4 chars

~65,536

expected attempts · EVM · Aptos · Sui · 16n

Fig. — Difficulty explorer · drag length · pick alphabet

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, I o l (rifiuto di sosia).
  • EVM: solo esadecimale dopo 0x. Le lettere oltre a–f non 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 0x41T…. 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 addraddr1….

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.

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

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
Fig. — Proof of find · shareable vs private

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

  1. Apri DevTools → Rete, cancella il registro, avvia una fucina: non dovresti vedere nessuna richiesta durante l'estrazione.
  2. Carica la pagina, vai offline, genera di nuovo: funziona ancora.
  3. Esegui live audit e confronta gli hash di lavoro con worker-hash.json.
  4. 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.