Brownie Web3 – 使用 Python 开发以太坊智能合约
分享有关 Brownie Web3 的基础知识,并扩展如何使用它来开发部署在区块链上的以太坊智能合约
对于 Web3.0 智能合约开发人员来说,Brownies 让您更轻松地开发、导入、测试和调试部署在以太坊区块链网络上的智能合约。此外,它还可以帮助您设置交易、方法和变量来与以太坊交互。
接下来,我将介绍有关 Brownie 的基础知识,并扩展如何使用 Brownie 开发以太坊智能合约并将其部署到区块链网络上。
Brownie Web3.0 – 开发与加密货币网络交互的以太坊智能合约的要素
Brownie、Python、Infura、os、Ganache、MetaMask、ETH Goerli 测试网络
表中的内容
- 什么是布朗尼
- 激活 Brownie 并安装 Ganache 本地区块链安装
- 创建第一个智能合约并将其部署到 Ganache CLI 上
- 添加新帐户并连接到真实测试网络
- 测试和调试您的智能合约
- Brownie 控制台,用于任何临时功能测试和开发
- Brownie Web3.0 的完整 Python 脚本 – 使用 Brownie 和 Python 开发智能合约并激活与 ETH 的交互
什么是布朗尼
Brownie 是一个友好且易于使用的框架,用于开发以太坊智能合约。从其功能范围来看,其主要价值有3个方面:
部署区块链网络所需的智能合约
创建不同类型和用途的智能合约,并将其部署到以太坊等区块链上。您可以创建并启动与区块链交互中重要的任何事务元素。
与智能合约交互
Brownie框架和文件夹路径方便您编写脚本或使用Brownie控制台与部署在主网上的智能合约进行交互。或者你可以在本地区块链环境中实现UAT,例如:Ganache
测试正在开发的智能合约
Brownie提供了一个快速、友好、易用的智能合约开发测试环境以及实现测试的相关功能。例如,您可以在事务恢复时获取详细信息,以帮助您快速查明问题。
激活 Brownie 并安装 Ganache 本地区块链安装
Step1:布朗尼安装
以MacOS环境为例。首先,我们需要在终端中输入如下代码来为 Brownie 安装可视化环境。
Python3 -m pip install –user pipx
Python3 -m pipx ensure path
安装完成后,请务必关闭终端以避免冲突或激活视觉环境。
然后,请输入如下代码行来安装Brownie
Pips install eth-brownie
要检查您是否已在 Mac 上安装它,我们可以输入检查器命令,这与任何其他包检查相同。
步骤 2:创建第一个 Brownie 脚本文件夹和项目
我假设您已经在编码软件中创建了一个新文件夹,例如:Visual Studio Code。现在我们可以尝试创建一个新的布朗尼项目。启动代码如下:
Brownie init
启动完成以及反应安装后,Brownie 文件夹默认会出现一个文件夹列表。它们是具有不同功能的文件夹,如下所示:
- 建造
- 合约
- 接口
- 报告
- 脚本
- 测试
步骤 3:安装本地 Ganache CLI
Brownie 默认使用终端中的 Ganache CLI,这是一个本地区块链可视化环境。在我们之前的文章中,脚本直接连接到 Web UI 版本。这次需要我们安装 Ganache CLI。
- 下载
node.js
(这里是macOS版本)并将其安装到设备上 - 命令:
npm install –global yarn
。我们需要安装yarn,它是一个包管理器,实际上允许我们下载像Ganache CLI 一样的片段和包。如果您的设备可能响应您没有安装纱线的权限,请务必添加sudo
。 - 使用以下命令安装 Ganache CLI:
yarn global add ganache-cli
。再次强调,如果您的设备再次拒绝,请务必添加sudo
。
创建第一个智能合约并将其部署到 Ganache CLI 上
添加智能合约
在 Brownie 的合约文件夹中,用于保存智能合约文件,例如easy2digitalStore.sol
。添加该文件夹下的文件后,输入这行代码即可:
Brownie compile
编译给定的 sol 文件后,您可以看到以 JSON 格式保存在合约文件夹中的 build 文件夹下的所有编译信息。
部署在 ETH 区块链上
首先,我们需要在 script 文件夹下创建一个新的 Python 文件
Deployment.py
在脚本中,我们需要使用一个布朗尼方法,即accounts()
,它用于与本地可视化区块链Ganache CLI 进行交互。以下是代码示例:
Import brownie import accounts
def single_contract():
localGanacheAccount = accounts[0]
print(localGanacheAccount)
Def main():
single_contracct()
我们可以使用brownie run来激活终端中的python脚本。
添加新帐户并连接到真实测试网络
我们可以创建一个新帐户,而不是使用 Ganache CLI 帐户。命令和代码如下:
在终端中:
Brownie accounts new easy2digitalAccount-account
然后,您需要为这个新帐户添加私钥。我们可以复制 MetaMask 私钥并将其粘贴到此处。
最后但并非最不重要的一点是,布朗尼会使用密码加密您的私钥。因此,只需输入您喜欢的密码即可。
如果您尝试使用 load 方法运行来查找您刚才创建的新帐户,结果将如下所示:
连接到真实的测试网络
Brownie 提供了已声明的网络列表。如果您想检查,只需在终端中输入命令 Brownie Networks List 即可。
在上一篇文章中,我们使用 Infura 作为连接以太坊的第三方平台。所以在这里我们也将使用 INFURA。
首先,我们需要 INFURA 的 HTTP 提供程序协议。在 Brownie 中,我们有一种与 Infura 连接的方法。请将其添加到 .env 中
WEB3_INFURA_PROJECT_ID = your infura http endpoint unique ID.
然后,现在我们需要从 MetaMask goerli 测试网络获取帐户,而不是从 Ganache CLI 获取帐户。
添加您要添加的私钥,例如 MetaMask 钱包。请务必在 MetaMask 私钥前添加 0x。这里我们需要做三件事
- 创建一个 get_account 函数,用于获取 MetaMask 钱包私钥信息
- 在主目录文件夹中添加
brownie-config.yaml
文件以与 .env 连接,其中包含私钥和 INFURA 端点唯一 ID - 在 Ganache CLI 测试脚本中将 account[0] 替换为 get_account()。
最后,我们需要告诉 Infura python 脚本将使用哪个 ETH 测试网络。和我们在上一篇文章中使用的goerili一样,这里使用同样的方式,在终端中输入命令
Brownie run scripts/deployment.py –network goerli
连接后,您可以转到构建文件夹下的部署部分,会生成一个地图 JSON 文件。
测试和调试您的智能合约
Brownie的强大功能之一一定是测试环境。智能合约开发人员可以在上线之前实施 UAT 并修复错误。
让我们创建一个脚本,就像我们在测试文件夹中创建的deployment.py 脚本一样。
首先,Brownie 非常方便,因为它可以让开发者直接将智能合约导入到 python 脚本中。
这是代码示例:
From brownie import easy2idigitalContract, accounts
所以我们可以直接使用合约名称和deploy()
方法将账户部署到区块链上。例如:
Def test_deployment():
##Arrange a specific smart contract address
walletAccount = accounts[0]
##Deploy the contract to the account
Single_contract = easy2idigitalContract.deploy({“from”: walletAccount})
Starting_value = single_contract.retrieve()
其次,由于这是一个测试,我们需要检查检索到的值是否等于预期值。所以这里是代码示例如下:
Expected == 0
Assert starting_value == expected
然后,请在终端中输入命令,查看值是否相等。如果结果通过,则会以绿色显示“通过”。
Brownie test
Brownie 控制台,用于任何临时功能测试和开发
对于脚本测试,如果您想创建一个 shell 或控制台来测试和运行脚本。您可以尝试输入如下代码,可以直接更新脚本,并打印出来立即得到结果。
Brownie test –pdb
Brownie Web3.0 的完整 Python 脚本 – 使用 Brownie 和 Python 开发智能合约并激活与 ETH 的交互
如果您对 Web3.0 教程 3 – Web3.0 中的 Brownie – 使用 Brownie 和 Python 开发与加密货币网络交互的以太坊智能合约感兴趣,请添加消息“Web3.0教程3”来订阅我们的新闻通讯。我们会立即将脚本发送到您的邮箱。
我希望您喜欢阅读 Web3.0 教程 3 – Web3.0 中的 Brownie – 使用 Brownie 和 Python 开发以太坊智能合约与加密货币网络交互如果您喜欢,请通过执行下面列出的操作之一来支持我们,因为它总是有帮助的我们的频道。
- 通过 PayPal ( paypal.me/Easy2digital ) 支持并捐赠我的频道
- 订阅我的频道并打开通知铃Easy2Digital Youtube 频道。
- 关注并喜欢我的页面Easy2Digital Facebook 页面
- 使用主题标签 #easy2digital 在您的社交网络上分享文章
- 您订阅我们的每周通讯即可接收 Easy2Digital 最新文章、视频和折扣代码
- 通过 Patreon 订阅我们的月度会员即可享受独家优惠 ( www.patreon.com/louisludigital )