DOGECOIN generowanie adresów `vanity`

Adres vanity to taki, którego część jest rozpoznawalna dla człowieka, przykładem adresu vanity może być mój adres BTC, którego początek mówi do kogo należy ten adres: 1AgiLoBAo9FbwtRactcNSnAcZ8GzYHCHQB. Należy do agiloba.

Zaletą takich adresów, jest to, że można je podać np. na blogu, forum i stać się bardziej rozpoznawalnym.
Wadą jest to, że próby podrobienia takiego adresu nie rozpoznasz gołym okiem.

1. Sklonuj repozytorium vanitygen:

git clone https://github.com/samr7/vanitygen.git
cd vanitygen

No i zbuduj je:

make
cc -ggdb -O3 -Wall   -c -o vanitygen.o vanitygen.c
cc -ggdb -O3 -Wall   -c -o pattern.o pattern.c
cc -ggdb -O3 -Wall   -c -o util.o util.c
cc vanitygen.o pattern.o util.o -o vanitygen -ggdb -O3 -Wall -lpcre -lcrypto -lm -lpthread
cc -ggdb -O3 -Wall   -c -o keyconv.o keyconv.c
cc keyconv.o util.o -o keyconv -ggdb -O3 -Wall -lpcre -lcrypto -lm -lpthread

Pomoc programu przedstawia jego możliwości, my zajmiemy się parametrem -X

$ ./vanitygen 
Vanitygen 0.22 (OpenSSL 1.0.1e 11 Feb 2013)
Usage: ./vanitygen [-vqnrik1NT] [-t ] [-f |-] [...]
Generates a bitcoin receiving address matching , and outputs the
address and associated private key.  The private key may be stored in a safe
location or imported into a bitcoin client to spend any balance received on
the address.
By default,  is interpreted as an exact prefix.
 
Options:
-v            Verbose output
-q            Quiet output
-n            Simulate
-r            Use regular expression match instead of prefix
              (Feasibility of expression is not checked)
-i            Case-insensitive prefix search
-k            Keep pattern and continue search after finding a match
-1            Stop after first match
-N            Generate namecoin address
-T            Generate bitcoin testnet address
-X   Generate address with the given version
-F    Generate address with the given format (pubkey or script)
-P    Specify base public key for piecewise key generation
-e            Encrypt private keys, prompt for password
-E  Encrypt private keys with  (UNSAFE)
-t   Set number of worker threads (Default: number of CPUs)
-f      File containing list of patterns, one per line
              (Use "-" as the file name for stdin)
-o      Write pattern matches to 
-s      Seed random number generator from

Co musisz wiedzieć?

  1. DOGE adresy zaczynają się od litery D więc wzór adresu jaki chcemy uzyskać również musi zaczynać się od D. Adres może nie mieć możliwości ustawienia na n. miejscu danej litery. np. Adres DOGE nie może zaczynać się od DO. Litera O nie może być na jego drugim miejscu, wtedy dostaniesz błąd:
  2. Prefix 'DO' not possible
    Hint: valid bitcoin addresses begin with "1"
  3. Adresy DOGE używają 30 wersji.
  4. Parametr -i oznacza, że wyszukiwarka wzoru może być nieczuła na wielkość liter.
  5. Na szczęście dla Polaków, adres DOGE może zaczynać się od “DUPA” i taki sobie teraz wygenerujemy:
$ ./vanitygen -X 30 -i DUPA
Difficulty: 78508
Pattern: DUPA                                                                  
Address: DUPAipgS5QbG71NEcCAzS2qBtXPSRUENte
Privkey: 6KS1XqpHzfBVvRpCb3pqcbmE8Zi8hKEdnBg3it6iktZAhwQUYa3

aby dodać móc używać tego adresu w swoim kliencie DOGECOIN musisz go zaimportować. Wybierz kolejno:

  1. Help
  2. Debug window
  3. Console

Jeśli Twój klient jest szyfrowany musisz go odblokować wpisując:

walletpassphrase TwojeHasło 600

600 to ilość sekund na ile portfel zostanie odblokowany Aby zaimportować adres musisz wpisać taką komendę:

importprivkey kluczPrywatny nazwaAdresuWidocznaWKliencie
klucz prywatny to ten drugi z wyniku, czyli:
importprivkey 6KS1XqpHzfBvvRpCb3pqcbmE8Zi8hKEdnBg3it6iktZAhwQUYa3 adresDUPA

Aby DOGE adres był widoczny w Twoim kliencie musisz go teraz zrestartować. Na te adresy możecie wysyłać DOGE ;)

$ ./vanitygen -X 30 DGEEK
Difficulty: 4553521
Pattern: DGEEK                                                                 
Address: DGEEKv4Z4ieb2F9gdLNzznixSErm4U82iY
 
$ ./vanitygen -X 30 DNERD
Difficulty: 4553521
Pattern: DNERD                                                                 
Address: DNERDqCCe3JuKMENA47sePj7J8Sabxa8bZ

doge_adresy

vlc1

[spoiler show=”Pokaż” hide=”Schowaj”]Jeśli to czytasz, to znaczy, że sprawdzasz co jest na końcu artykułu i nie zrobiłem nic tl;dr; więc oto porada: generowanie adresów pochłania dużo mocy obliczeniowej, im dłuższy wzór podasz, tym dłużej to zajmie. Vanitygen dostępny jest na karty graficzne z OpenCL. Zainstaluj sobie opencl-headers, niestety na każdej dystrybucji Linuxa robi się to inaczej:

Po instalacji wykonaj polecenie:

make oclvanitygen
cc -ggdb -O3 -Wall   -c -o oclvanitygen.o oclvanitygen.c
cc -ggdb -O3 -Wall   -c -o oclengine.o oclengine.c
oclengine.c: In function ‘vg_ocl_prefix_check’:
oclengine.c:1553:18: warning: variable ‘tablesize’ set but not used [-Wunused-but-set-variable]
  int orig_delta, tablesize;
                  ^
cc -ggdb -O3 -Wall   -c -o pattern.o pattern.c
cc -ggdb -O3 -Wall   -c -o util.o util.c
cc oclvanitygen.o oclengine.o pattern.o util.o -o oclvanitygen -ggdb -O3 -Wall -lpcre -lcrypto -lm -lpthread -lOpenCL

Teraz dodatkowo generując adresy musisz podać, na której platformie zamierzasz generować. Na moim laptopie wygląda to tak:

$ ./oclvanitygen -X 30 DUPA 
Difficulty: 78508
Available OpenCL platforms:
0: [Advanced Micro Devices, Inc.] AMD Accelerated Parallel Processing
  0: [Advanced Micro Devices, Inc.] Turks
  1: [GenuineIntel] Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
 
$ $ ./oclvanitygen -X 30 DUPA -d 0:0
Difficulty: 78508

No i na sam koniec niemiłe zaskoczenie, generowanie adresów na OpenCL nie działa na nowszych sterownikach AMD (wersja 11+).[/spoiler]

[Total: 0    Average: 0/5]
  • Marcin Mrotek

    Bardzo ciekawy poradnik ;) +1