Python是最通用的程式語言之一:從研究人員運行他們的測試模型到開發人員在繁重的生產環境中使用它,幾乎在每個可能的技術領域都有使用案例。在今天的指南中,我們將了解Brownie,一個基於Python的工具,用於編寫和部署智能合約。
智慧合約開發主要由基於JavaScript的函式庫主導,如 web3.js、 ethers.js、 Truffle和 Hardhat。 Python是一種通用的、高度使用的語言,也可用於智能合約/web3的開發;web3.py是一個引人注目的Python庫,可滿足web3的需求。 Brownie框架是建立在web3.py之上的。
Brownie本意是指長方形小糖果,但我們今天談論的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 ## If the install failS, use the following command for better luck. 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腳本;這個腳本將被用來部署合約,需要根據合約進行修改。
該合約是一個ERC-20合約。
我們將在Ropsten testnet上部署我們的合約,而不是運行我們自己的節點。請確保在結帳時選擇Ethereum作為鏈,Ropsten作為網路。
儲存HTTP URL。我們將在下一步中需要它。
我們需要在Brownie設定一個QuickNode的免費節點。為此,在你的終端/cmd中輸入以下內容。
brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3
將 YOUR_QUICKNODE_URL替換為我們在上一步驟中得到的 RopstenURL。
在上面的命令中,Ethereum是環境的名稱,ropstenquicknode是網路的自訂名稱;你可以給你的自訂網路取任何名字。
這裡我們需要做的下一件事是使用 Brownie創建一個新的錢包。要做到這一點,在你的終端機/cmd中輸入以下內容。你會被要求為你的帳戶設定一個密碼。
brownie accounts generate testac
這將產生一個帳戶以及一個記憶性短語,並將其離線保存。 testac這個名字是我們帳戶的名稱。你可以選擇任何你想要的名字。
複製帳戶地址,以便我們可以得到一些測試用的ETH,這將是部署我們的合約所需要的。
由于我们的合约将被部署在Ropsten测试网,我们需要一些Ropsten测试ETH来支付gas费。前往Ropsten水龙头,将您的地址粘贴在该区域,然后点击 "Send me test Ether"。
在部署合约之前,我们需要用以下方法编译它。
brownie compile
现在在你的文本编辑器中打开scripts/token.py,并做如下修改。
#!/usr/bin/python3 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复制粘贴合约地址,查看已部署的合约。
我们学会了如何导入一个Brownie-mix,添加一个自定义网络,创建一个账户,以及编译和部署一个合约,整个过程中我们都使用了Brownie框架。
以上是Python Web3 開發:用 Brownie 部署智能合約的詳細內容。更多資訊請關注PHP中文網其他相關文章!