作者| Patrick Collins

譯者| 王強

最好的智能合約和區塊鏈開發框架,涉及各種語言編寫的以太坊智能合約。

本文最初發佈於Medium 網站,經原作者授權由InfoQ 中文站翻譯並分享。

智能合約開發框架讓工程師可以部署和測試他們的智能合約,簡化他們的開發工作。我花了很多天時間來了解ConsenSys 和Ethereum 網站上推薦的每一個框架,想看看哪些框架是2021 年最好用的。你可以在GitHub 上看到我對這些平台的實驗:

https://github.com/PatrickAlphaC/smart-contract-frameworks

不僅如此,我還對區塊鏈黑客馬拉松參與者做了幾百次採訪,並查閱了幾百個黑客馬拉松提交,想要找出哪些工具是性能最好、開發體驗最出色的。我自己也使用這些框架做了很多工作,想為2021 年做好準備。我為大家做好了這期2021 年優秀框架評選,這樣你就不用陷入選擇困難症了。

本文采用的標準很簡單。評選的框架需要:

部署到一個本地區塊鏈進行快速有效的測試使用Chainlink 將一個智能合約部署到KovanTestnet(https://kovan-testnet.github.io/website/)。

第三個標準很重要,因為它讓我得以測試框架如何與其他軟件包交互和集成測試交互。從2021 年開始,搭配oracles(https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72)和OpenZeppelin 等第三方工具已經成了一項基本需求,所以最後一項標準就非常重要了。

我們將簡要介紹其他一些2021 年你需要了解的重要工具,但本文不會涉及初學者工具,例如ETH 錢包、以太坊客戶端或文本編輯器。

視頻簡介:https://youtu.be/motYF5daaOc

Top 4 智能合約開發框架

總的來說,我將向所有人推薦三個智能合約開發框架。每種框架的風味都稍有不同,選擇它們的理由也略有差異。它們分別是:

Hardhat(JavaScript)Truffle(JavaScript)Brownie(Python)

我們來深入研究一下這幾個框架,談談你為什麼要使用它們,為什麼它們排在了名單的前列,以及其他值得注意的地方。

1. Hardhat

鏈接:https://hardhat.org/

Hardhat 是目前最好的框架之一,有著同類競品中最快的測試、最好的教程和最簡單的集成。老實說,喜歡JS 框架的人們遲早都應該試一試Hardhat。它真的很容易上手,測試飛快而且入門非常簡單。他們的Discord 也一直在非常迅速地回答各種問題,因此如果你遇到了問題,總是很容易尋求幫助。他們使用Waffle 和Ethers.js 進行測試,這可以說是更好用的JavaScript 智能合約框架,因為它們相比web3.js 做了一些非常不錯的改進。他們還可以與OpenZeppelin 的可升級智能合約插件直接集成,這是一個很大的加分點。

這個項目給人一種很棒的感覺:它很乾淨。它能執行你想要的操作。它真的很快。這個項目正在不斷改進,顯然開發團隊正在努力讓智能合約開發人員的生活更加輕鬆。

小結

ETH 基金會資助的項目,以前是Builder技術:Javascript、Web3.js 和Ethers.js 插件,OpenZeppelin 可升級合約插件,Etherscan 插件,區塊鏈分叉區塊鏈:Hardhat 運行時環境/ 本地,測試網,主網有測試:Waffle維護:非常活躍支持:活躍開源

2. Truffle

鏈接:https://www.trufflesuite.com/

Truffle 幾年來一直是開發人員的首選框架,這是有充分理由的。它是一個強大的框架,為其他跟隨者樹立了標準。你會很容易找到一大堆項目都在使用這個平台,因此示例查找起來很容易。 Truffle 也可以很容易地與它的姊妹工具Drizzle(https://www.trufflesuite.com/drizzle)和Ganache(https://www.trufflesuite.com/ganache)集成在一起。特別是Ganache,它是工程師運行本地區塊鏈的最流行方法之一。如果你需要更多工具,你可以花錢購買升級版的Truffle 團隊帳戶,獲得智能合約的持續集成、可視化部署和監視功能。他們還可以與OpenZeppelin 的可升級智能合約插件直接集成,這是一個很大的優勢。他們顯然是一群有才華的工程師,都想要為智能合約創造一個更美好的世界。

Truffle 測試的運行速度不如Hardhat 那樣快,並且由於前者的用戶數量眾多,支持獲取起來可能會很困難。自從Truffle 被ConsenSys 收購以來,我很期待看到他們將如何改善這個項目。他們的文檔質量似乎開始下降,讀起來可能會磕磕絆絆,但是如果你用谷歌搜索一下自己遇到的錯誤,很可能會找到曾經遇到這個錯誤並已解決它的例子。我發現改善項目的最佳方法之一就是在他們的GitHub 上留一個問題。無論如何,讓生態系統不斷壯大是我們開源社區的職責!

因為幾乎所有人都很熟悉它,因此獲得同行支持通常會很容易。我真的希望看到開發團隊在這個項目上獲得更多支持,畢竟他們有這麼多的用戶。我希望他們能看到本文並能努力改善項目文檔,讓它能繼續作為測試和部署智能合約的首選平台之一。

小結

使用最廣泛的平台;最近被ConsenSys 收購(2020 年11 月)技術:Javascript,Web3.js,OpenZeppelin 可升級合約插件,Etherscan 插件,區塊鏈分叉區塊鏈:Ganache/ 本地,測試網,主網有測試維護:非常活躍支持:活躍具有付費升級功能的開源項目

3. Brownie

鏈接:https://github.com/eth-brownie/brownie

Brownie 很大程度上受到了Truffle 的啟發,前者基本上是後者的Python 等效版本,並增加了一些體驗改進。這個項目起源於大多數Python 工程師都同樣擁有的困惑:他們不喜歡JavaScript。由於它是用Python 編寫的,因此避免了使用JavaScript 帶來的許多麻煩,並為大家帶來了一個簡單優秀的框架來處理和部署智能合約。

我自己就很喜歡Python,因此對這個項目的未來感到非常興奮,隨著採用率的提高,越來越多的項目正在使用Python 和這個框架來部署他們的智能合約。我已經將Brownie 用作了我的入門框架,用下來感覺非常不錯。我還同一些用它做更多事情的開發人員做過交流,他們真的非常優秀。 Yearn.finance 似乎也已經用上了這個框架。

如果你來自Python 開發世界,或者想要一個非常簡單、乾淨的框架,那麼這一款就是為你而生的,毫無疑問。

還有一個框架!我知道我只提到了三個,但我認為下面的框架也應該在這裡佔據一席之地。

小結

最好的Python 框架,由Yearn.finance 等DeFi 項目使用。技術:Python,Web3.py,區塊鏈分叉,Etherscan 插件,Vyper 支持區塊鏈:Ganache/ 本地,測試網,主網有測試維護:非常活躍支持:活躍開源

4. Embark

鏈接:

https://framework.embarklabs.io/docs/solidity.html

我很驚訝能排名前三以外的框架能在GitHub 上有這麼多星(3.1k)。這款工具花樣很多。我花了一些工夫才搞清楚它到底是怎麼回事,但這是因為Embark 旨在成為一個完整的dApp 框架。這是一個全棧的區塊鏈平台。在他們Gitter 的一些幫助下(以及在他們GitHub 上創建的一個問題;請記住,開源社區責任!),我得以將自己的Chainlink 合約部署到Kovan 網絡。它帶有一個UI,這樣你就可以在GUI 中與區塊鍊和合約交互。看來它有一段學習曲線,我沒有花足夠的時間來克服障礙,但能看出它的潛力很大。這就是為什麼我想把它放在這裡的原因所在,因為我覺得自己還有很多東西沒能完全消化。

我希望看到有更多人能嘗試這個框架並意識到它的能力。由於我在該項目上花費的時間有限,所以我覺得自己可能無法做到公正評價。我確實認為,將前端與後端解耦仍然是最佳實踐,但是如果你需要開始一個具有良好前端的項目並且不關心解耦需求,那麼你絕對應該嘗試這個項目。

這個項目很酷,如果有人喜歡Hardhat 和Truffle,但又想集成一個全棧解決方案,我會首先推薦它。

小結

用於前端開發的,具有大量功能的JavaScript 框架技術:JavaScript,Web3.js,代理合約支持區塊鏈:Ganache/ 本地,測試網,主網有測試維護:輕度活躍支持:活躍開源

非框架工具

繼續介紹上述框架的替代選項之前,我想暫停一下,先來介紹一些2021 年重要的非框架工具。

OpenZeppelin 和升級插件(https://openzeppelin.com/contracts/)Etherscan/BlockExplorer 驗證器(https://etherscan.io/)create-eth-app(https://github.com/paulrberg/create-eth -app)

OpenZeppelin 和升級插件

OpenZeppelin 是一個平台,可為智能合約工程師創建有用的工具。他們有一些默認選項,例如ERC20 和ERC721 工具,你可以在其中導入他們的合約並在幾秒鐘內建立一個令牌。看看用OpenZeppelin 製作一個ERC20 有多簡單:

pragma solidity ^0.6.0;import “@openzeppelin/contracts/token/ERC20/ERC20.sol”;contract GLDToken is ERC20 {constructor(uint256 initialSupply) public ERC20(“Gold”, “GLD”) {_mint(msg.sender , initialSupply);}}

重新發明輪子沒有意義。 OpenZeppelin 是一個開源項目,主要目的就是省去大家重新造輪子的功夫。 OpenZeppelin 的另一個重要特性是它的可升級合約功能。部署一個實際項目意味著你必須部署一個代理合約,這個代理合約在你要進行任何更改時都需要更新。這又是一個體驗出色且乾淨的項目。老實說,對每一個項目來說,無論你使用的是什麼平台,遲早都會用上OpenZeppelin 創建的內容。

Etherscan/Block Explorer 驗證器

Etherscan 是最受歡迎的區塊瀏覽器。當人們想要簽出你的合約以及你已部署的內容時,除非他們具有ABI 和合約地址,否則就無法簽出。找到合約地址通常很容易,但是要獲得ABI 卻很困難。你肯定希望人們能輕鬆地查看你的智能合約並與之互動,因此你需要隨時對其進行驗證,以便其他人可以做到這一點。大多數框架都有某種驗證插件,你可以在其中部署智能合約,然後立即在Etherscan 上對其進行驗證。一定要在你的應用程序中使用它。

create-eth-app

擁有一大堆後端智能合約誠然很不錯,但是如果沒有人可以使用你的dApp,那這些合約將毫無價值。 create-eth-app 是一個平台,允許你使用ReactJS 為你的智能合約增加一個前端。它使用了許多最新的React 技術(例如狀態Hooks),並讓開發人員可以很容易地構建真正強大的前端。

2021 年,一些出色的初學者工具

Scaffold- ETH(https://github.com/austintgriffith/scaffold-eth)eth.build(https://eth.build/)Remix(https://remix.ethereum.org/)OneClick dApp(https:/ /oneclickdapp.com/)

我不會在這裡介紹它們的詳細情況,但如果你是這個領域的新手,用它們就對了。

其他框架選項

剩下的這些框架也都很不錯,並且可能更適合你的需求。它們中的一些確實對智能合約框架中應該放什麼內容有一些非常酷的想法,我希望前三名選手能夠注意到其中一些很棒的理念。這些工具可能需要更多的探索時間。

Waffle(JS)Dapp.Tools(Haskell/CLI)SBT(Scala/CLI)Epirus(Java)

Waffle

鏈接:https://getwaffle.io/

Waffle 本身可以用作部署框架,只不過你需要編寫更多自定義腳本。雖說拿它和其他框架進行對比有點愚蠢,但這裡還是把它列為智能合約框架。 Waffle 可以與你喜歡的任何框架搭配使用,並且當前是搭配Hardhat 的默認工具。

如果你希望框架可以提供所有不錯的功能,那我不建議單獨使用它。但如果你想使用更原始、更簡單、可自定義的框架,那麼選它就不會出錯。

小結

輕量級JavaScript 框架,專注於測試技術:JavaScript,Ethers.js區塊鏈:你所經營的一切有測試維護:非常活躍支持:活躍開源

Dapp.Tools

鏈接:http://dapp.tools/

MakerDAO 使用了Dapp.Tools,它也驚艷了我一把。它是用Haskell 編寫的,但支持許多我們喜歡和常用的插件,例如OpenZeppelin。它看起來像一個極簡主義的框架,但功能強大到足以做到你想做的事情。我可以找到關於使用這個平台部署合約的幫助,另外它的簡潔也給人留下了深刻印象。如果你正在尋找一個對命令行友好的極簡主義框架,那麼我建議你也看一下這一款。

小結

MakerDAO 使用的Haskell 簡單框架技術:Haskell/CLI區塊鏈:本地/Ganache,測試網,主網有測試維護:活躍支持:活躍開源

Epirus

鏈接:https://www.web3labs.com/epirus

雖然我說過它是“類Truffle”框架,但Epirus 的風格也不是完全像Truffle,只是在商業層面比較相似。他們有一個開源項目,但還有一個付費的升級工具,供想要用它做更多事情的用戶選擇。他們使用Java 的Web3 實現,而且看起來仍處於項目開發的早期階段。我很高興看到他們提供了對Android 的支持,因此我很想知道這個項目的進展情況。由於Java 智能合約平台不多,因此它可以吸引更多的Java 工程師進入這一行業。

我無法用它部署到Kovan,因為它不受支持,但看起來他們已經支持Rinkeby(https://www.rinkeby.io/#stats)了。無論如何,我很高興看到這個項目能順利推進。

小結

類似於Truffle 的Java 實現技術:Java區塊鏈:Ganache/ 本地,測試網(不是Kovan)有測試維護:活躍支持:不是很活躍具有付費升級功能的開源項目

SBT

鏈接:https://www.sbt-ethereum.io/

這是我玩過的一個很有趣的項目,SBT 的特色是幾乎完全從命令行或使用Scala 與智能合約交互。我的Scala 經驗幾乎為零,因此沒有足夠的背景知識來評估這個平台。如果你了解Scala 並想要踏入以太坊世界,這款工具可能真的是很酷的選項。

小結

同時滿足命令行與Scala 的開發需求。適用於智能合約愛好者和工程師。技術:Scala區塊鏈:本地/Ganache,測試網,主網有測試維護:輕度活躍支持:不活躍開源

過時的框架

你經常會見到這些框架的身影。我敢肯定它們問世時都是很棒的工具,但是到了今天,它們不再獲得支持或處於非活躍狀態。下面的這些框架不值得你浪費精力去了解和嘗試。

OpenZeppelinCLI/SDK(JS)Etherlime(JS)Parasol(JS)Cobra(PY)

OpenZeppelin SDK

現在,我明白為什麼這個項目停止為此工作了——作為一個團隊,他們希望專注於可升級智能合約這一棘手的問題——但說實話這挺遺憾的。這個項目相當乾淨。我可以部署我的Chainlinked 智能合約,並能比幾乎其他所有框架更快地讀取ETH 的價格。它還有一些非常不錯的CLI 選項,就像Epirus 和Hardhat 一樣。它還內置了可升級的選項,其他平台很少有這種設計,所以這是很大的優點。

我不建議使用這個框架,因為他們不會再支持它了。但這是我使用智能合約框架獲得的最佳開發體驗之一。我希望前三名選手能夠從中汲取一些令這個項目與眾不同的靈感。我上面說過,每個人都應該使用OpenZeppelin 工具是有原因的。他們就是很好用。

如果他們不停止這個項目,那麼他們的SDK 很容易成為前四名的框架。

小結

OpenZeppelin 棄用的智能合約框架。他們棄用它是為了將重點放在升級插件上。不管怎樣,它真的是很乾淨的JS 框架。技術:JavaScript,Web3.js 和Ethers.js 插件,OpenZeppelin 可升級合約插件區塊鏈:本地,測試網,主網有測試維護:不活躍支持:不活躍開源

Etherlime

Etherlime 似乎是另一個不受青睞且未積極開展工作的JS 框架。它與Infura 的一項過時特性緊密耦合,因此我們無法在Kovan 上部署智能合約。它活躍的時候看來是一個非常強大的項目,而且似乎仍然可以在本地開發中使用,但是我不建議用它替代前三個選項。

小結

不活躍的JS 框架技術:JavaScript,Ethers.js區塊鏈:本地,測試網,主網有測試維護:不活躍支持:不活躍開源

Parasol

另一個不活躍的JS 框架(超過兩年沒有一項提交)。它有一些很酷的功能,例如parasol interact 和一些集成,而且顯然曾有一些很聰明的人在從事這項工作,但是我認為沒有理由用它代替其他任何JS 框架了。

小結

不活躍的JS 框架技術:JavaScript,Web3.js區塊鏈:本地/Ganache,測試網,主網有測試維護:不活躍支持:不活躍開源

總結

智能合約和區塊鏈世界正在迅速發展。兩年前的一些最熱門工具已經是昨日黃花了,智能合約開發框架也是如此。 Truffle 能一直位居業界頂端是很厲害的,但更重要的是,許多項目都採用了不一樣的方法來解決問題。

如果你覺得我錯過了什麼框架或在哪裡弄錯了,或者你有其他想法,請隨時發表評論或聯繫我。本文的想法是讓智能合約工程師能夠盡快高效地入門。掌握所有這些工具將使我們能夠更快地實現去中心化的世界。希望這對你能有所幫助!

原文鏈接:

https://betterprogramming.pub/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04