阅读时间 4 分钟
概述
Python 是目前用途最广泛的编程语言之一,应用场景极为丰富;我们可以使用 Python 构建从客户端到后端的各种应用程序。在本指南中,我们将介绍如何使用Web3Py库在 Python 中创建以太坊地址。
先决条件
- 系统中已安装 Python(3.6 及以上版本)和 Pip3。
- 一个文本编辑器。
什么是以太坊地址?
在登录任何互联网平台时,都需要用户名和密码的组合。可以将以太坊地址视为用户名,而对应的私钥则相当于密码。通过地址和私钥的这种组合,您可以与以太坊区块链进行交互。 以太坊地址是你在区块链上的身份标识。它看起来像这样:“0xd5e099c71b797516c10ed0f0d895f429c2781142”。以太坊地址是公开的,可以分享,但私钥必须始终保密。以太坊地址是通过私钥生成的。以下是以太坊地址的生成过程:
- 生成一个随机私钥(64个十六进制字符 / 256位 / 32字节)
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
- 公钥是通过椭圆曲线数字签名算法(ECDSA)从私钥(128个(十六进制)字符/512位/64字节)派生而来的。
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
- 然后对(128个字符/64字节)的公钥应用Keccak-256哈希函数,生成一个(64个字符/32字节)的哈希字符串,其中最后40个字符/20字节在前面加上0x后即为以太坊地址。
0xd5e099c71b797516c10ed0f0d895f429c2781142
以下是需要提供以太坊地址的几项内容:
- 接收/发送 ETH。
- 签署/发送交易。
- 连接到应用程序。
什么是 Python?
Python是一种通用编程语言,应用范围广泛。它具有高级数据结构,采用动态类型系统,支持动态绑定,并具备许多其他特性,因此既可用于编写脚本或连接不同组件的“粘合代码”,也是开发复杂应用程序的得力工具。此外,它几乎可以在所有操作系统上进行系统调用。 由于能够运行在几乎所有系统架构上且无处不在,Python 是一种通用语言。Python 是一种解释型、交互式、面向对象的编程语言。
什么是 Web3Py?
Web3.py 是一个 Python 库,可帮助您与以太坊区块链进行交互;借助 Web3.py,开发者可以为去中心化应用(dApps)构建后端客户端,以处理与区块链的交互、从区块链中读取数据、写入交易或执行智能合约逻辑。其原始 API 源自 Web3.js JavaScript API,但随着时间的推移不断改进,以更好地满足 Python 开发者的需求。
既然这里我们使用的是 Python,那么我们就使用 Web3.py。
现在,让我们来看看如何用 Python 生成一个新的以太坊地址。
在 Python 中生成以太坊地址
这里的第一步是检查您的系统上是否安装了 Python 3.6 或更高版本;您可以在终端/命令提示符中输入以下内容,以检查是否安装了 Python:
$ python --version
如果尚未安装,您可以按照Python 官方网站“下载”页面上的说明进行操作。
我们将使用Web3Py,这是一个用于与以太坊交互的 Python 库。我们将通过 PIP 安装 Web3Py,请在终端/命令提示符中输入以下命令:
$ pip install web3
注意:Python 及其他库的版本差异常会导致安装问题。因此,如果您遇到任何问题,请尝试创建一个虚拟环境,并排查web3.py 的安装问题。
如果一切顺利,Web3.py 就会安装到您的系统中。
现在,让我们创建一个 Python 文件,将其命名为 address.py,并将以下代码复制粘贴到该文件中:
来自 eth_account 导入 Account
import secrets
priv = secrets.token_hex(32)
private_key = "0x" + priv
print ("请保存但请勿分享此内容:", private_key)
acct = Account.from_key(私钥)
print("地址:", acct.地址)
上述代码的说明
第 1 行:从 Web3.py 的 eth_account 模块导入 Account
第 2 行:导入 Python 的 secrets 模块,它将帮助我们生成一个随机的十六进制字符串。
第 3 行:生成一个 32 字节/64 个字符的随机十六进制字符串,并将其存储在 priv 变量中
第 4 行:将前缀 0x 附加到存储在 priv 中的 64 个字符的十六进制字符串上,并将新字符串存储在变量 private_key 中。
第 5 行:打印私钥并显示警告。
第 6 行:使用 private_key 创建一个新账户,并将其存储在变量 acct 中。
第 7 行:将存储在 acct 变量中的账户地址与字符串“地址:”一起打印出来
现在,让我们运行我们的 Python 程序。
$ python address.py
如果你按照说明正确操作,输出结果应该类似于下文所示。第一行是私钥,第二行是以太坊地址。
结论
现在,有了自己的以太坊地址(及私钥),您就可以发送交易并与智能合约进行交互了。更多信息请参阅Web3.py 的官方文档。
订阅我们的通讯,获取更多关于以太坊的文章和指南。如果您有任何反馈,欢迎通过Twitter 联系我们。您还可以随时在我们的Discord社区服务器上与我们交流,那里聚集了您能遇到的最酷的开发者们 :)
