本文介绍了Brownie,一个基于Python的智能合约开发和测试框架。文章详细讲解了如何使用Brownie安装依赖、设置网络和账户、编译和部署智能合约,并通过一个ERC-20 token的例子进行了演示。文章还提到了Brownie不再积极维护,建议使用Ape Framework。
以下为翻译后的内容:
Brownie,一个基于 Python 的智能合约开发和测试框架,不再积极维护。虽然未来可能会零星发布版本,但也可能根本不会发布。建议使用 Ape Framework 来满足你所有的 Python Ethereum 开发需求。点击 Ape Framework 指南。如果你有任何问题或需要关于迁移到替代解决方案的指导,请 联系我们。
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 之上,因此我们需要安装它才能使用 brownie;让我们检查一下我们的系统上是否安装了 python3。为此,请在你的终端/cmd 中输入以下内容:
python3 -V
这应返回已安装的 python3 版本。如果未安装,请从官方 python 网站 下载并安装它。
让我们在安装 brownie 之前创建一个项目目录,并将该项目目录作为我们当前的工作目录:
mkdir brownieDemo
cd brownieDemo
现在你已经在你的系统上安装了 python3,让我们使用 pip(Python 的包管理器)安装 brownie。Pip 类似于 npm 对于 JavaScript 的作用。在你的终端/cmd 中输入以下内容:
pip3 install eth-brownie
## 如果安装失败,请使用以下命令以获得更好的效果。
sudo pip3 install eth-brownie
要检查 Brownie 是否正确安装,请在你的终端/cmd 中输入 brownie,它应该给出以下输出:
要获取 token mix,请在你的终端/cmd 中输入以下内容:
brownie bake token
这将在我们的 brownieDemo 目录中创建一个新的 token/ 目录。
首先,让我们 cd 进入 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。我们将在下一步中需要它。
我们需要使用 Brownie 设置我们的 QuickNode 端点。为此,请在你的终端/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 faucet,将你的地址粘贴到该字段中,然后点击“Send me test 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/pol...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!