BTC
ETH
HTX
SOL
BNB
查看行情
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

布朗尼(Brownie):以太坊的智能合約基礎框架

星球君的朋友们
Odaily资深作者
本文約2155字,閱讀全文需要約4分鐘
布朗尼用於開發以太坊智能合約,其穩健性和易於使用性都非常的高。
AI總結
布朗尼用於開發以太坊智能合約,其穩健性和易於使用性都非常的高。

編者按:本文來自量化踢馬河(ID:gh_e9da2a6cbc62),Odaily經授權轉載。

編者按:本文來自

  • 量化踢馬河(ID:gh_e9da2a6cbc62)

  • 量化踢馬河(ID:gh_e9da2a6cbc62)

  • ,Odaily經授權轉載。

  • 編者按:本文來自

量化踢馬河(ID:gh_e9da2a6cbc62)

量化踢馬河(ID:gh_e9da2a6cbc62)

,Odaily經授權轉載。

編者按:本文來自

量化踢馬河(ID:gh_e9da2a6cbc62)

量化踢馬河(ID:gh_e9da2a6cbc62)

,Odaily經授權轉載。

一提到到布朗尼,可千萬不要以為就是那種黑色巧克力味的美味小蛋糕,這裡說到的布朗尼,指的是以太坊上,名為布朗尼的智能合約基礎框架。布朗尼用於開發以太坊智能合約,其穩健性和易於使用性都非常的高,常被用來進行:

部署:自動將許多合同部署到區塊鏈上,初始化或者集成它們所需的任何交易。

  • 交互:編寫腳本,或者使用控制台與主網上的合同進行交互,或是在本地環境中進行快速測試。

  • 調試:在事務恢復時獲取詳細信息,以幫助您快速查明問題。

  • 測試:用Python編寫單元測試,並基於堆棧跟踪分析評估測試覆蓋率。

  • 接下來我們來試著在Solidity中創建一個非常簡單的智能合約,僅公開兩個外部函數getValue和setValue. 把這個智能合約保存在文件smart_contract.sol.

設定

interfaces/:接口源

  • 此次嘗試使用的是Python3.7和virtualenv隔離我們的環境。如果沒有安裝Python3.7,可以按照以下步驟操作。

  • 我們將會使用Ganache,它是用於以太坊開發的個人區塊鏈。你也可以改為安裝ethereum-testrpc,但會導致無法運行圖形界面。安裝Ganache時,要按照步驟進行。

為你的Solidity項目創建虛擬環境。此處已創建,並命名為TestBrownie. 安裝布朗尼。

要初始化一個空項目,先從創建一個新文件夾開始。在該文件夾中,鍵入:

項目結構

每個布朗尼項目均含以下文件夾:

contracts/:合同來源

interfaces/:接口源

scripts/:用於部署和交互的腳本

tests/:用於測試項目的腳本

  • Byzantium: Solidity <=0.5.4

  • Petersburg: Solidity >=0.5.5< =0.5.12

  • Istanbul: Solidity >=0.5.13, Vyper

brownie-config.yaml:項目的配置文件

下面這些文件夾也由布朗尼創建,並在內部用於項目管理,不可編輯或刪除。

build/:項目數據,例如編譯器工件和單元測試結果

reports/:在GUI中使用的JSON報告文件

smart_contract.sol在contracts目錄中復制您的智能合約。編譯contracts/項目子文件夾中的所有合同源:

注意:布朗尼支持的Solidity版本>=0.4.22和Vyper 版本0.1.0-b16。

如果要編譯具有其它版本的Solidity合同,只需要在.sol文件的使用說明中提及該合同即可。如果不存在,它將自動安裝。此處應該注意:編碼器的設置位於brownie-config.yaml。

部署

修改任何編譯器設置將會導致項目的完全重新編譯。

如果在配置文件中設置了編譯器版本,則將使用該版本來編譯項目中的所有合同。版本應以格式的字符串形式給出0.xx

如果版本設置為null,則布朗尼會查看每個合同的版本使用程序,並使用已安裝的最新匹配編譯器版本。

關於evm_version,布朗尼根據編譯器設置規則集。

你也可以手動設置EVM版本。有效的選項為byzantium,constantinople,petersburg和istanbul. 還可以使用Ethereum Classic規則集atlantis和agharta,在傳遞給編譯器之前,它們會轉換為等效的以太坊。

注意:布朗尼支持的Solidity版本>=0.4.22和Vyper 版本0.1.0-b16。

成功編譯後,布朗尼將SimpleContract.json在builds/contract文件夾中創建一個文件。


打開brownie-config.yaml,它有一個網絡部分,你可以自定義現有網絡,也可以在網絡下創建一個新塊。此處使用在端口7545上運行的Ganache GUI。

相互作用

在網絡下創建一個私有塊。

保存此文件。現在使用布朗尼控制台部署編譯的智能合約。它與常規Python解釋器非常相似。從項目文件夾中,通過鍵入以下內容加載它:

智能合约
ETH
歡迎加入Odaily官方社群