문서

작동 원리

Scroll down
Vanitas에 대한 전체 둘러보기: 허영 채굴이 작동하는 방식, 각 단조에서 생산되는 것, 작업자가 병렬로 검색하는 방법, 기계에 아무 것도 남지 않았는지 확인하는 방법.

01 — 개요

Vanitas는 무엇인가

Vanitas는 클라이언트 측 다중 체인 가상 주소 위조입니다. 접두사 및/또는 접미사를 선택합니다. 앱은 공개 주소가 해당 패턴과 일치하는 키 쌍을 검색합니다. 생성은 CPU의 웹 워커에서 실행됩니다. 개인 키는 장치의 메모리에 생성되며 절대 업로드되지 않습니다.

가상 주소는 여전히 일반적인 암호화 주소입니다. 개인 키는 무작위입니다. 원하는 대로 보일 때까지 공개 인코딩만 필터링됩니다. 이는 브랜딩, 기부, 조폐국 및 기억에 남는 공개 지갑에 유용합니다.

어디

귀하의 브라우저 · 귀하의 CPU

정적 호스팅만 해당. 채굴은 네트워크 호출을 하지 않습니다.

단조

9개 체인 + 터미널 CLI

솔라나 · EVM · 비트코인 ​​· 트론 · 앱토스 · 수이 · TON · 카르다노 · XRP

산출

주소 + 개인 키

내보내기 형식은 Forge에 따라 다릅니다(JSON, hex, WIF 등).

02 - 파이프라인

검색 루프

모든 단조는 수백만 번 반복되는 동일한 상위 수준 루프를 따릅니다.

Vanitas search loopMISS → AGAIN01RNG02DERIVE03ENCODE04MATCH05DONE

Secure random

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

Fig. — Search loop · click a stage
  1. 암호화된 보안 임의 개인 키(crypto.getRandomValues)를 그립니다.
  2. 체인 곡선(Ed25519 또는 secp256k1)을 사용하여 공개 키를 파생합니다.
  3. 체인이 예상하는 방식으로 주소를 인코딩합니다(Base58, hex, bech32, …).
  4. 접두사/접미사(및 모드 규칙)와 비교하세요.
  5. 일치 시: 작업자 중지, 결과 표시, 선택적으로 소리/증명/내보내기.

작업자는 이 루프를 CPU 코어 전체에 걸쳐 병렬로 실행합니다. UI 스레드는 계속 응답합니다. 진행률(시도 횟수, 비율, ETA)은 작업자 메시지에서 집계됩니다. 한 작업자가 적중을 발견하면 풀이 종료됩니다.

이것이 안전한 이유

가상 주소를 검색해도 개인 키가 약화되지 않습니다. 공개 주소가 올바르게 보일 때까지 후보자를 거부합니다. 이는 무작위 키를 생성하고 행운의 키를 유지하는 것과 동일한 프로세스입니다.

03 — 패턴

난이도, 알파벳, 경고

예상 시간은 패턴 길이와 알파벳 크기에 따라 달라집니다. 각각의 추가 문자는 검색 공간을 증가시킵니다. Forge UI는 패턴과 측정되거나 가정된 해시 비율을 기반으로 실시간 난이도 추정치를 표시합니다.

Pattern length4 chars

~65,536

expected attempts · EVM · Aptos · Sui · 16n

Fig. — Difficulty explorer · drag length · pick alphabet

베이스58

~58개 기호

솔라나, 트론, XRP(XRPL 알파벳), 비트코인 ​​레거시

마녀

기호 16개(0~9, a~f)

EVM, Aptos, Sui — 일치 시 대소문자를 구분하지 않음

Bech32

bc1q / bc1p / addr1…

Bitcoin SegWit/Taproot, Cardano — 고정 HRP, 그 다음 문자 집합

TON

Base64url

UQ… / EQ… — 대소문자 구분

알파벳 트랩

  • Solana / Bitcoin Base580, O, I 또는 l(유사 거부)가 없습니다.
  • EVM0x 뒤에는 16진수만 있습니다. a–f 이외의 문자는 유효하지 않습니다.
  • Tron — 주소는 T으로 시작합니다. 다음 문자는 일반적으로 대문자입니다. 대소문자를 구분하는 소문자 접두사는 종종 일치하지 않습니다.
  • 접두사 + 접미사 — 두 제약 조건 모두 난이도를 증가시킵니다. 짧게 시작하세요. 요율을 알고 나면 패턴을 성장시키세요.

04 - 체인

모든 대장간, 설명

9개의 포지는 모드 선택, 패턴 설정, 작업자 시작 등 동일한 UX 패턴을 공유하지만 각 체인은 서로 다른 곡선, 해시 및 주소 인코딩을 사용합니다.

Solana

Base58(32바이트 공개 키)로 인코딩된 Ed25519 키 쌍. 기본 웹 암호화 Ed25519는 브라우저가 지원할 때 사용됩니다. 그렇지 않으면 WASM 대체(watsign)입니다. 모드: 지갑민트 — 동일한 키 계산; 민트 프레이밍은 런치패드 맞춤형 민트 흐름을 위한 것입니다. 내보내기: Solana CLI JSON 바이트 배열.

EVM

secp256k1 → 압축되지 않은 pubkey → keccak-256 → 마지막 20바이트 → 0x… 주소. 하나의 개인 키는 Ethereum, Base, Arbitrum, Optimism, BSC, Polygon 및 기타 모든 EVM 네트워크에서 동일한 주소를 생성합니다. 모드: 지갑(EOA), nonce 0에서 CREATE, CREATE2(그라인드 솔트 또는 그라인드 배포자). 아래 모드를 참조하세요.

Bitcoin

secp256k1. 세 가지 주소 유형: 레거시 P2PKH(1…), 기본 SegWit P2WPKH(bc1q…), Taproot P2TR(bc1p…). 내보내기에는 지갑 가져오기를 위한 WIF(압축)가 포함됩니다. 접두사를 입력하면 선행 HRP/버전 바이트가 자동으로 처리됩니다.

Tron

20바이트 계정 ID에 대해 EVM과 동일한 secp256k1 + keccak 경로, 버전 바이트 0x41T…의 Base58Check. 모드: 지갑 및 CREATE(nonce 0), EVM과 동일한 RLP 레이아웃을 사용하고 Tron 인코딩을 사용합니다.

Aptos

Ed25519. 주소 = sha3-256(pubkey ‖ 0x00)(16진수) Hex Secret을 가져오는 Petra, Martian 및 기타 Aptos 지갑과 호환됩니다.

Sui

Ed25519. 주소 = blake2b-256(0x00 ‖ pubkey)(16진수)(플래그 바이트가 구성표를 표시함) Hex 개인키를 이용해 Sui Wallet/Suiet으로 가져옵니다.

TON

Ed25519 + 지갑 계약 v4R2. 주소는 사용자에게 친숙한 Base64url 형식입니다: UQ…(반송 불가) 및 EQ…(반송 가능). 일치는 대소문자를 구분합니다. Tonkeeper / MyTonWallet으로 가져옵니다.

Cardano

Ed25519 기업 주소(CIP-19 유형 6, 결제 키만): 헤더 0x61 + Blake2b-224 결제 해시, bech32 with HRP addraddr1….

XRP

secp256k1 압축된 pubkey → RIPEMD160(SHA256) 계정 ID → XRPL classic Base58 확인 → r…. 참고: XRPL은 비트코인과 다른 Base58 알파벳을 사용합니다.

05 — 모드

지갑, 민트, CREATE, CREATE2

박하

암호화 방식으로 지갑 키 쌍과 동일합니다. 런치패드는 맞춤형 민트 키 쌍/개인 키를 요청합니다. Vanitas는 내보내기가 해당 워크플로우와 일치하도록 결과를 mint로 표시합니다. /sol?mode=mint을 열고 패턴을 찾은 후 키를 Pump.fun, Raydium, Meteora 등에 붙여넣으세요.

CREATE

nonce가 0인 EOA에서 배포된 첫 번째 계약에는 결정적 주소가 있습니다: keccak256(RLP([sender, 0]))[12:]. Vanitas는 파생된 계약 주소가 귀하의 패턴과 일치할 때까지 EOA를 분쇄합니다. 배포자 개인 키를 받습니다. 새로운 nonce-0 계정에서 한 번 배포합니다.

CREATE2

주소 = keccak256(0xff ‖ deployer ‖ salt ‖ initCodeHash)[12:]. 두 가지 분쇄 전략:

  • create2-salt — 배포자 키 + 초기화 코드 해시 수정; 허영 주소를 생성하는 솔트를 검색합니다.
  • create2-deployer — 솔트 + 초기화 코드 해시 수정; CREATE2 주소가 일치하는 배포자 키를 검색하세요.

올바른 initCodeHash(배포 바이트코드의 keccak)을 제공해야 합니다. 잘못된 해시 → 잘못된 온체인 주소.

06 — 노동자

성능 아키텍처

작업자 소스는 src/workers/*.worker.source.ts에 있으며 esbuild와 함께 public/*-worker.js에 번들로 제공됩니다. 각 빌드는 live auditpublic/worker-hash.json에 SHA-256 다이제스트를 씁니다.

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

병행

CPU 코어 − 1(기본값)

컴퓨터가 뜨거워지거나 UI가 끊기는 경우 스레드를 조정하세요.

솔라나 속도

사용 가능한 경우 기본 Ed25519

Chrome 113+ · Firefox 129+ · Safari 17+; 그렇지 않으면 WASM

도서관

@noble · tweetnacl · watsign · @ton/*

브라우저에서 순수 JS/WASM 암호화를 감사했습니다.

찾은 후 선택적 주요 보안 검사를 통해 엔트로피, CSPRNG 가용성 및 임의 바이트에 대한 카이제곱 균일성 테스트를 수행하여 브라우저 RNG 경로가 정상인지 확인합니다.

07 — 증명

발견 증거

공유 증명은 체인, 주소 및 패턴만 사용하여 /proof에 대한 공개 링크를 구축합니다. 개인 키는 절대 사용하지 않습니다. 누구나 링크를 열고 주소가 클라이언트 측에서 요청한 접두사/접미사와 일치하는지 확인할 수 있습니다.

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

UI의 최근 발견 항목은 주소 + 패턴 메타데이터에만 sessionStorage을 사용합니다. 탭을 닫으면 해당 기록이 지워집니다. 키는 거기에 저장되지 않습니다.

08 - CLI

터미널 단조

브라우저 외부에서도 동일한 아이디어: npx vanitas은 마법사를 열거나 체인, 모드, 접두사, 스레드 및 CREATE2 매개변수에 대한 플래그를 전달합니다. 결과는 OS가 지원하는 경우 0600 모드로 JSON 파일을 작성합니다. 패키지: npmjs.com/package/vanitas.

npx vanitas evm --mode contract --prefix 카페 --threads 8

09 — 확인

직접 확인하세요

  1. DevTools → 네트워크를 열고, 로그를 지우고, 단조를 시작하세요. 채굴하는 동안 요청 없음이 표시되어야 합니다.
  2. 페이지를 로드하고, 오프라인으로 전환하고, 다시 생성하세요. 여전히 작동합니다.
  3. live audit을 실행하고 작업자 해시를 worker-hash.json과 비교합니다.
  4. GitHub, 특히 src/workers/의 소스를 읽어보세요.

알림

탭을 닫기 전에 개인 키를 저장하세요. 분실된 키는 복구할 수 없습니다. 잔고가 큰 경우: 먼저 소액 전송으로 테스트하고, 장기 보관을 위해 하드웨어 지갑을 선호하고, 신뢰할 수 없는 사이트에 키를 붙여넣지 마세요.