如何用 Python 为以太坊和比特币生成 vanity 虚荣地址
今天,我们将编写一个非常简单的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进行区块链以太坊开发的详解。
本作品采用《CC 协议》,转载必须注明作者和本文链接