如何用 Python 為以太坊和比特幣生成 vanity 虛榮地址

geeker發表於2018-11-05

今天,我們將編寫一個非常簡單的python指令碼來生成虛榮地址,這些地址是以某個短語或字母序列開頭的加密貨幣地址。該過程涉及生成私鑰並檢查目標短語的地址,直到找到滿意的地址。

安裝包

首先,我們需要安裝一些可以執行計算的軟體包,以便從私鑰生成有效的公共地址。要生成比特幣地址,需要轉到終端並輸入下面命令安裝比特幣:

pip install bitcoin

要生成以太坊地址,你需要透過輸入下面命令來安裝以太坊:

pip install ethereum

編寫程式碼

程式碼非常簡單,你只需要建立一個不斷生成地址的while迴圈,並根據你的目標短語進行檢查。這是比特幣地址的程式碼:

from bitcoin import *

target = input('Input Target Phrase\n>')

priv = random_key()
addr = pubtoaddr(privtopub(priv))

while not addr.lower().startswith('1{}'.format(target)):
    priv = random_key()
    addr = pubtoaddr(privtopub(priv))

print('Address: {}\nPrivate Key: {}'.format(addr, priv))

以太坊有點不同,因為它沒有內建的隨機金鑰生成器,所以你必須匯入os來生成隨機數並使用SHA3來雜湊它們以生成私鑰。

另外,請注意,以太坊地址是十六進位制的,只使用了字元a-f和0-9,因此你可以生成的地址型別受到限制。如果輸入的目標不是十六進位制,它將無限迴圈,因為它永遠不會生成包含非十六進位制字元的地址。

from ethereum import utils
import os

target = input('Input Target Phrase\n>')

priv = utils.sha3(os.urandom(4096))
addr = utils.checksum_encode(utils.privtoaddr(priv))

while not addr.lower().startswith('0x{}'.format(target)):
    priv = utils.sha3(os.urandom(4096))
    addr = utils.checksum_encode(utils.privtoaddr(priv))

print('Address: {}\nPrivate Key: {}'.format(addr, priv.hex()))

我希望你對這些有一些樂趣!此外,請注意目標短語中的每個附加字元都會以指數方式增加生成難度,因此請勿過長。

安利個相關的互動式線上程式設計實戰教程:

python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。

這裡是原文如何用Python為以太坊和比特幣生成虛擬地址

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章