Python 十分钟速通:快速创建以太坊钱包的极简代码教程

·

为什么仍需要一双手把手 Ethereum 创建钱包指南?

在中文社区搜索 “Ethereum 钱包 创建” 时,你会发现不少教程要么默认你是 Solidity 高手,要么把浏览器插件的安装步骤写成了天书。作为一名纯 Python 开发者,我只想在服务器端自动化生成一个可复原的 ETH 钱包,却花了整整一晚才被 BIP-39 和 web3.py 的管线吓到。
这篇指南就是我的“踩坑总结”:十行代码 + 一行 Infura 配置,即可在本地把以太坊钱包稳稳搞出来。


入门必读:一条龙所需工具

关键词作用
Python 以太坊钱包用脚本自动化钱包创建,可在 CI/CD 环境中批量生成地址
BIP-39 助记词生成可读、可备份的 12/24 词短语,兼容 MetaMask、Rabby 等主流钱包
web3.py社区最成熟的 Python 与 EVM兼容网络交互库
Infura无需本地节点即可连接主网、测试网、二层网络的极简 RPC 提供方

所有包只需两个命令就能装好:

pip install web3==6.13 mnemonic==0.21

Step 0|Infura 盲配 30 秒

  1. 打开 https://infura.io/,注册账号(邮箱 + 手机验证码秒过)。
  2. 新建 Project → 复制 https://mainnet.infura.io/v3/你的PROJECT_ID 这个 HTTP endpoint。
  3. 把这个 endpoint 保存在环境变量,后面脚本直接读取:
export MAIN_NET_HTTP_ENDPOINT="https://mainnet.infura.io/v3/你的PROJECT_ID"

Step 1|十行搞定 ETH 钱包核心代码

以下代码可同时跑在 Mac、Linux、WSL 或服务器,确保 Python ≥3.8 即可。
#!/usr/bin/env python3
# eth_wallet.py
import os
from mnemonic import Mnemonic
from web3 import Web3

mnemo = Mnemonic("english")
words = mnemo.generate(strength=256)             # 24 个助记词
seed = Mnemonic.to_seed(words, passphrase="")    # 可按需再加二次密码
w3 = Web3(Web3.HTTPProvider(os.getenv("MAIN_NET_HTTP_ENDPOINT")))
private_key = seed[:32].hex()
acct = w3.eth.account.from_key(private_key)

print("助记词:", words)
print("私钥  :", private_key)
print("地址  :", acct.address)

运行效果:

助记词: luxury alpha cricket ... radar toddler buzz
私钥  : 0x45fc...e1b2
地址  : 0x68F...a5bD

👉 把脚本改成 Web API,让它 24 小时自动批量生成地址


Step 2|助记词实战:导入到应用钱包

有了 BIP-39 助记词,你可以在任意钱包里恢复同一地址:

⚠️ 安全提醒:24 词控制一切,一定离线存放!任何在线存储都可能被截屏、粘贴板嗅探或木马扫描。


Step 3|测试:在 Rinkeby Goerli 验证交易签名

主网 Gas 价格高?先用测试币无脑体验。

>>> w3_goerli = Web3(Web3.HTTPProvider("https://goerli.infura.io/v3/你的PROJECT_ID"))
>>> acct_goerli = w3_goerli.eth.account.from_key(private_key)
>>> tx = {
...     "to": "0x000000000000000000000000000000000000c0DE",
...     "value": int(0.001 * 10**18),
...     "gas": 21000,
...     "maxFeePerGas": Web3.to_wei(10, "gwei"),
...     "maxPriorityFeePerGas": Web3.to_wei(2, "gwei"),
...     "nonce": w3_goerli.eth.get_transaction_count(acct_goerli.address),
...     "chainId": 5
... }
>>> signed = w3_goerli.eth.account.sign_transaction(tx, private_key)
>>> w3_goerli.eth.send_raw_transaction(signed.rawTransaction).hex()
'0x1ec...bdbc'

只要 chainId 正确,同一套助记词在 任何 EVM 兼容网络 都能派生出同意私钥 / 地址。


常见疑问 FAQ

Q1: BIP-39 与 BIP-44 有什么区别?
A1: BIP-39 负责生成助记词;BIP-44 定义派生路径(如 m/44'/60'/0'/0/0)。w3.eth.account.from_key() 已默认走以太路径,无需额外配置即可使用。

Q2: 如何保证助记词安全又不遗失?
A2: 分离存储:硬件钱包 + 钢板,或写在 2 张上放不同国家。不要用云盘、聊天软件截图,更别拍照发邮箱。

Q3: 可以只给项目暴露公钥吗?
A3: 可以。脚本本身可关闭私钥输出,仅把地址保存进数据库,配合 HD 钱包 批量轮换待使用地址即可。

Q4: 为什么打印出来的私钥不能直接发帖给别人?
A4: 任何人拿到私钥就拥有全部资产控制权,官方文档和审计都强烈建议“私钥仅供自身脚本内部使用”。

Q5: Python 版本更新会导致脚本崩溃吗?
A5: 只要 web3.py ≥6.0,mnemonic ≥0.20,兼容性已非常稳;测试覆盖率超 90%,可放心跑生产。

Q6: 可以在交易所用这套地址收款吗?
A6: 可以,但仍需小额 测试转账 确认到账,确保交易所支持 ERC-20 标准Layer2 桥接


拓展阅读:把脚本升级成 SaaS 钱包工厂

👉 立即测试钱包 API,免费获取 1000 次地址生成额度


结束语:让区块链开发像写 CRUD 一样简单

从 2024 年开始,越来越多的 Python 开发者开始把区块链当成“另一个数据库”。借助 Infuraweb3.pyBIP-39,如今你可以把“以太坊钱包”的创建流程封装成脚本、API、甚至微服务。
下一次当你要在自动化测试、空投工具、NFT 铸造或游戏道具分配里用到钱包地址时,不需要再学钱包 UI,只需复制粘贴这十行代码就够了。祝编码愉快,钱包永不被盗!