Solidity

選擇 Truffle 和 Brownie 哪個乙太坊框架?

  • November 14, 2021

我知道用於測試、部署等的智能合約最常用的框架是 Truffle。但是,由於我不太擅長 javascript(我主要使用 python 編碼)——我看到有一個使用 Brownie(或 Populus)的選項。

這兩個框架有什麼不同,如果選擇 Brownie 而不是 Truffle 會有什麼缺點嗎?有什麼不同嗎?

有什麼建議嗎?

如果你在 Python 和 JavaScript 方面同樣出色,Brownie 是更好的選擇,因為 Python 作為一種程式語言更適合智能合約程式框架所需的任務。

  • 您可以在 Python中將數字(如 uint256 和小數)處理為數字,而在 JavaScript 中則需要使用字元串或 hacky 類。智能合約開發中有很多大數字。
  • JavaScript 強制 async/await 使線性程式碼(如部署程序)更難遵循和閱讀,而在 Python 執行緒模型和可選 async 中使簡單腳本易於調試
  • Python 本身是可選類型的,而在 JavaScript 中,您需要轉換為 TypeScript,從而降低可調試性並帶來其他問題
  • Pytest測試框架使測試更快更容易編寫和閱讀。測試是智能合約開發的關鍵部分,簡化測試對於安全性至關重要。
  • Python 是數據科學和金融領域的第一語言,因此與金融相關的區塊鏈工作還有許多其他協同作用。
  • JavaScript 用於瀏覽器和所有 Web 前端。如果你需要從頭開始學習程式語言,在某些時候你需要為你的智能合約編寫一個前端,並且 JavaScript 程式知識將是必要的。

一個比較 Brownie 和 Truffle 之間單行測試程式碼可讀性的範例

assert(await staking.methods().currentlyStaked.call()).toNumber()).equal(STAKE_PRICE + STAKE_PRICE_2);

將在 Python 中:

assert staking.currentlyStaked() == STAKE_PRICE + STAKE_PRICE_2

此外,如果您需要堅持使用 JavaScript(您不了解 Python),我建議您使用Hardhat 而不是 Truffle。Hardhat 是一種更新、更現代、基於 JavaScript 的智能合約開發框架,比帶有大量遺留程式碼的 Truffle 更易於使用。

我還沒有嘗試過 truffle,但我認為 Javascript 至少應該更有效,更足以處理智能合約。javascript 面向非同步鉤子和函式這一事實允許您等待確認已經發生的事情,使測試更加健壯,而不是“等待 X 秒”並期望網路到那時完成

引用自:https://ethereum.stackexchange.com/questions/87963