如何在Python中生成一个新的以太坊地址

  • QuickNode
  • 发布于 2024-08-18 21:18
  • 阅读 20

本文详细介绍了如何使用Python和Web3Py库生成以太坊地址,包括以太坊地址的基本概念和生成过程。文章结构清晰,分为多个部分,涵盖了前提条件、Python和Web3Py的基本概述,以及代码示例与运行说明,使读者能够轻松地理解和实现该技术。

概述

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 库,可帮助你与以太坊区块链进行交互;使用 web3Py,可以为去中心化应用程序(dApps)制作后端客户端,以处理与区块链的交互、从中读取数据、写入交易或执行智能合约逻辑。原始 API 源自 Web3.js JavaScript API,但随着时间的推移已经改进,以更好地服务和满足 Python 开发人员的需求和要求。

由于我们在 Python 中工作,因此我们将使用 Web3.py。

现在,让我们看看如何在 Python 中生成一个新的以太坊地址。

在 Python 中生成以太坊地址

我们的第一步是检查你的系统是否安装了 Python 3.6 或更高版本;你可以通过在终端/cmd 中输入以下内容来检查是否安装了 Python:

$ python --version

如果未安装,可以按照 Python 官方网站的下载页面 上的说明进行操作。

我们将使用 Web3Py,这是一个用于与以太坊交互的 Python 库。我们将使用 PIP 安装 Web3Py,在你的终端/cmd 中输入以下内容:

$ pip install web3

注意: Python 和其他库版本会导致常见的安装问题。因此,如果遇到任何问题,请尝试 设置虚拟环境并进行故障排除 web3.py 的安装。

如果一切顺利,Web3.py 将安装在你的系统中。

现在,让我们创建一个 Python 文件并将其命名为 address.py,将以下代码复制粘贴到文件中:

from eth_account import Account
import secrets
priv = secrets.token_hex(32)
private_key = "0x" + priv
print ("SAVE BUT DO NOT SHARE THIS:", private_key)
acct = Account.from_key(private_key)
print("Address:", acct.address)

上面代码的解释

第 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 变量中的账户地址,并附带字符串“Address:”

现在,让我们运行我们的 Python 程序。

$ python address.py

如果你按照说明正确操作,它应该会输出类似这样的结果。第一行包含私钥,第二行包含以太坊地址。

结论

现在你拥有了自己的以太坊地址(+ 私钥),你可以发送交易并与智能合约进行交互,更多信息请参考 Web3.py 的官方文档

订阅我们的 新闻通讯,获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 与我们联系。你还可以在我们的 Discord 社区服务器上与我们聊天,那里有一些你会见过的最酷的开发人员 :)

  • 原文链接: quicknode.com/guides/eth...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。