Python是最通用的编程语言之一:从运行测试模型的研究人员到在繁重的生产环境中使用它的开发人员,几乎在每个可能的技术领域都有用例。在今天的指南中,我们将了解Brownie,这是一种基于Python的用于编写和部署智能合约的工具。准备安装Python3以太坊节点文本编辑器终端什么是Brownie?智能合约开发由基于JavaScript的库主导,例如web3.js、ethers.js、Truffle和Hardhat。Python是一种通用的、使用率很高的语言,也可以用于智能合约/web3开发;web3.py是满足web3需求的引人注目的Python库。Brownie框架建立在web3.py之上。Brownie原指的是长方形的小糖果,但我们今天说的Brownie是一个基于Python的智能合约开发和测试框架。Brownie同时支持Solidity和Vyper合约,它甚至通过pytest提供合约测试。为了演示使用Brownie编写和部署智能合约的过程,我们将使用模板项目brownie-mixes。具体来说,我们将使用代币组合,它是ERC-20实施的模板。安装依赖Brownie是建立在python3之上的,所以我们需要安装它才能与brownie一起工作;让我们检查一下我们的系统上是否安装了python3。为此,请在您的终端/cmd中输入以下内容。python3-V此命令将返回安装的python3版本。如果没有安装,请到python官网下载安装。让我们在安装brownie之前设置一个项目目录,并将该项目目录作为我们的当前工作目录。mkdirbrownieDemocdbrownieDemo现在您已经在系统上安装了python3,让我们使用pip(Python的包管理器)安装brownie。pip类似于npm对JavaScript的作用。在您的终端/cmd中输入以下内容:pip3installeth-brownie##如果安装失败,请使用以下命令以获得更好的运气。sudopip3installeth-brownie要检查Brownie是否已正确安装,请在您的终端/中将brownie键入cmd并且它应该提供以下输出:要获取令牌组合,请在您的终端/cmd中键入以下内容:browniebaketoken这将在我们的brownieDemo目录中创建一个新的目录token/。文件结构首先,让我们进入token目录。cdtoken现在,在文本编辑器中打开token目录。在contracts/文件夹下,你会找到Token.sol,这是我们的主合约;您可以编写自己的合同或修改它。在scripts/文件夹下,你会找到token.py脚本;该脚本将用于部署合约,需要根据合约进行修改。该合约是一个ERC-20合约。我们将在Ropsten测试网上部署我们的合约,而不是运行我们自己的节点。确保在结帐时选择以太坊作为链,选择Ropsten作为网络。保存HTTPURL。我们将在下一步中需要它。网络和账户设置我们需要在Brownie中设置一个免费的QuickNode节点。为此,请在您的终端/cmd中输入以下内容。brownienetworksaddEthereumropstenquicknodehost=YOUR_QUICKNODE_URLchainid=3将YOUR_QUICKNODE_URL替换为我们在上一步中获得的RopstenURL。在上面的命令中,Ethereum是环境的名称,ropstenquicknode是网络的自定义名称;你可以给你的自定义网络起任何名字。接下来我们需要做的是使用Brownie创建一个新钱包。为此,请在您的终端/cmd中输入以下内容。您将被要求为您的帐户设置密码。brownieaccountsgeneratetestac这样会生成一个账号和一个助记词,离线保存。名称testac是我们帐户的名称。您可以选择任何您想要的名称。复制帐户地址,以便我们可以获得部署合约所需的一些测试ETH。获得ETH测试币由于我们的合约将部署在Ropsten测试网络上,我们需要一些Ropsten测试ETH来支付gas费。转到Ropsten水龙头,将你的地址粘贴到字段中,然后单击“向我发送测试以太币”。部署我们的合约在部署合约之前,我们需要使用以下方法对其进行编译。browniecompile现在在文本编辑器中打开scripts/token.py并进行以下更改。#!/usr/bin/python3frombrownieimportToken,accountsdefmain():acct=accounts.load('testac')returnToken.deploy("TestToken","TST",18,1e21,{'from':acct})第6行。我们添加此行以导入我们之前创建的testac帐户并将其存储在acct变量中。第7行。在这一行中,我们编辑“From”:部分以获取我们的acct变量。最后,我们将使用脚本(此处为scripts/token.py)部署我们的合约。brownieruntoken.py--networkropstenquicknode在上面的命令中,ropstenquicknode是我们之前创建的自定义网络的名称。提示会要求你提供我们之前在设置账户时设置的密码。运行上面的命令后,你必须得到交易哈希,Brownie会等待交易被确认。交易确认后,它将返回我们的合约部署在Ropsten测试网上的地址。您可以在Ropstenetherscan中复制并粘贴合约地址来查看已部署的合约。总结我们学习了如何导入Brownie-mix、添加自定义网络、创建帐户以及编译和部署合约。我们在整个过程中使用了Brownie框架。
