本文介绍了Brownie框架,该框架是一个Python基础的智能合约开发和测试工具。虽然Brownie目前不再积极维护,建议用户转向Ape框架。文章详细说明了项目的安装、使用和部署过程,包括创建项目目录、安装依赖、设置网络和账户、获取测试ETH以及部署合约的完整步骤,适合对智能合约开发感兴趣的Python开发者。
info
Brownie,一个基于 Python 的智能合约开发和测试框架,已不再积极维护。虽然未来可能会偶尔发布更新,但也可能根本不会发布。建议使用 Ape Framework 来满足你所有的 Python Ethereum 开发需求。请点击这里查看我们的 Ape Framework 指南。如果你有任何问题或需要在过渡到替代解决方案时获得指导,请 联系我们。
Python 是最通用的编程语言之一;从研究人员运行测试模型到开发人员在重生产环境中使用它,Python 在各个技术领域都有用例。在今天的指南中,我们将学习 Brownie,这是一款用于编写和部署智能合约的基于 Python 的工具。
先决条件
智能合约开发主要由基于 JavaScript 的库主导,如 web3.js,ethers.js,Truffle 和 Hardhat。Python 是一种多功能且广泛使用的语言,也可以用于智能合约/web3 开发;web3.py 是一个有力的 Python 库,满足 web3 需求。Brownie 框架构建在 web3.py 之上。
Brownies 是每个人都喜爱的矩形小甜点,但我们今天要讨论的 Brownie 是一个用于开发和测试智能合约的基于 Python 的框架。Brownie 同时支持 Solidity 和 Vyper 合约,甚至通过 pytest 提供合约测试。
为了演示使用 Brownie 编写和部署智能合约的过程,我们将使用 Brownie-mixes,这些是模板项目。具体来说,我们将使用 token mix,这是 ERC-20 实现的模板。
Brownie 建立在 python3 之上,所以我们需要安装 python3 才能使用 brownie;让我们检查系统是否安装了 python3。要做到这一点,在终端/cmd 中输入以下内容:
python3 -V
这应该返回安装的 python3 版本。如果没有安装,请从官方 python 网站 下载并安装。
在安装 brownie 之前,让我们先创建一个项目目录,并将该项目目录作为当前工作目录:
mkdir brownieDemo
cd brownieDemo
现在你系统上已安装 Python3,让我们使用 pip(Python 的包管理器)安装 brownie。Pip 类似于 JavaScript 的 npm。请在终端/cmd 中输入以下内容:
pip3 install eth-brownie
## 如果安装失败,请使用以下命令以获得更好的运气。
sudo pip3 install eth-brownie
要检查 Brownie 是否正确安装,请在终端/cmd 中输入 brownie,它应该给出以下输出:
要获取 token mix,请在终端/cmd 中输入以下内容:
brownie bake token
这将在我们的 brownieDemo 目录中创建一个新目录 token/。
首先,让我们进入 token 目录:
cd token
现在,在文本编辑器中打开 token 目录。在 contracts/ 文件夹下,你会找到 Token.sol,这是我们的主合约;你可以编写自己的合约或修改此合约。在 scripts/ 文件夹下,你会找到 token.py Python 脚本;此脚本将用于部署合约,根据合约的不同需要进行修改。
该合约是一个 ERC-20 合约;你可以在这个 ERC-20 代币指南 中了解更多关于 ERC-20 标准和合约的信息。
设置你的 QuickNode Ethereum 端点
我们将把合约部署到 Ropsten 测试网,而不是运行自己的节点。注册一个免费的 QuickNode 账户 这里 并创建一个 Ethereum 端点会更方便。在结算过程中确保选择 Ethereum 作为链,Ropsten 作为网络。
保存 HTTP URL。我们将在下一步中需要它。
我们需要将 QuickNode 端点与 Brownie 配置。为此,请在终端/cmd 中输入以下内容:
brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3
将 YOUR_QUICKNODE_URL 替换为我们在上一步中获得的 Ropsten URL。
在上面的命令中,Ethereum 是环境的名称,ropstenquicknode 是网络的自定义名称;你可以为自定义网络指定任何名称。
接下来,我们需要在 Brownie 中创建一个新钱包。为此,请在终端/cmd 中输入以下内容。系统会要求你为账户设置密码。
brownie accounts generate testac
这将生成一个账户及其助记词,并将其保存在离线。testac 是我们账户的名称。你可以选择任何你喜欢的名称。
注意:助记词可用于恢复账户或将账户导入其他 非托管钱包。你在上面图片中看到的账户是专门为本指南创建的。
复制账户地址,以便我们可以获得一些测试 ETH,这在部署合约时是必需的。
由于我们的合约将部署在 Ropsten 测试网上,我们将需要一些 Ropsten 测试 ETH 以支付 gas 费用。前往 Ropsten 水龙头,将你的地址粘贴在字段中,然后单击“发送我测试 Ether”。
在部署合约之前,我们需要使用以下命令编译它:
brownie compile
现在在文本编辑器中打开 scripts/ token.py,并进行以下更改:
#!/usr/bin/3
from brownie import Token, accounts
def main():
acct = accounts.load('testac')
return Token.deploy("Test Token", "TST", 18, 1e21, {'from': acct})
第 6 行:我们添加此行以导入之前创建的 testac 账户,并将其存储在 acct 变量中。
第 7 行:在这一行上,我们将 ' From' 部分编辑为我们的 acct 变量。
最后,我们将使用部署脚本(此处为 scripts/token.py)部署我们的合约:
brownie run token.py --network ropstenquicknode
在上面的命令中,ropstenquicknode 是我们之前创建的自定义网络名称。提示将要求你输入之前创建账户时设置的密码。运行上述命令后,你必须获得交易哈希,Brownie 将等待交易确认。一旦交易被确认,它将返回我们的合约在 Ropsten 测试网上部署的地址。
你可以通过在 Ropsten etherscan 粘贴合约地址来查看已部署的合约。
因此,今天我们了解到 brownies 非常美味,但 Brownie 框架是最好的。我们学习了如何导入 Brownie-mix、添加自定义网络、创建账户、编译和部署合约,并且我们在整个过程中使用了 Brownie!
请订阅我们的 通讯,获取更多关于 Ethereum 的文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你也可以在我们的 Discord 社区服务器上与我们聊天,那里聚集了一些你见过的最酷的开发者 :)
- 原文链接: quicknode.com/guides/oth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!