2021年優秀區塊鏈開發者框架
智能合約開發框架允許工程師部署和測試他們的智能合約,從而使工程師的工作變得更輕松。
我花了數小時和幾天的時間瀏覽ConsenSys和以太坊網站上的每個推薦框架,以了解哪種框架最適合2021年。
使用的標準很簡單。該框架需要:
- 部署到本地區塊鏈
- 進行快速有效的測試
- 使用Chainlink將智能合約部署到Kovan Testnet。
第三個標準很重要,因為它使我能夠測試框架如何與其他軟件包交互以及進行集成測試。
從2021年開始,基本上必須使用Oracle和OpenZeppelin等第三方工具,這就是為什么最后一部分如此重要的原因。
我們將簡要介紹一些您需要了解的2021年其他重要工具,但本文不會涉及初學者工具,例如ETH錢包,以太坊客戶端或文本編輯器。
智能合約開發框架
我將推薦三個智能合約開發框架。每種框架略有不同,所以選擇它的原因也不同。他們是:
- Hardhat(JavaScript)
- Truffle(JavaScript)
- Brownie(Python)
讓我們來仔細閱讀一下,了解您為什么要使用它,為什么它位于列表的頂部,以及其他值得注意的地方。
1. Hardhat
圖片來源:Hardha
Hardhat是目前最好的框架之一,具有一些最快的測試,最好的教程和最簡單的集成。
老實說,每個喜歡JS框架的人都應該在某個時候嘗試使用Hardhat。
它真的很容易上手,它進行了快速的測試,而且入門非常簡單。他們的Discord也一直非常迅速地回答問題,因此,如果遇到問題,您總是可以尋求幫助。他們使用Waffle和Ethers.js進行測試,這可以說是更好的JavaScript智能合約框架,這是由于與web3.js相比,生活質量有了一些非常不錯的改進。他們還可以與OpenZeppelin的可升級智能合約插件直接集成,這是一個巨大的勝利。
這個項目給人一種很棒的感覺:干凈利落、執行您想要的操作,并且真的很快。
該項目正在不斷改進,他們顯然致力于使智能合約開發人員的生活更輕松。
概括:
- ETH基金會資助的項目,以前是建筑商
- 技術:Javascript,Web3.js和Ethers.js插件,OpenZeppelin可升級合同插件,Etherscan插件,區塊鏈分叉
- 區塊鏈:hardhat運行時環境/本地,測試網,主網
- 有測試
- 維護:非常活躍
- 支持:活躍
- 開市
2.Truffle
圖片來源:Truffle
Truffle幾年來一直是默認框架,這是有充分理由的。
它是一個強大的框架,為其他許多人樹立了標準。您會很容易找到使用此平臺的大多數項目,因此查找示例很容易。
Truffle也可以很容易地與它的姊妹工具Drizzle和Ganache集成在一起。Ganache特別是工程師運行本地區塊鏈的最流行方法之一。對于那些尋求更多工具的人,您可以支付升級后的Truffle團隊帳戶的費用,并可以訪問智能合約的持續集成,可視化部署和監視。他們還可以與OpenZeppelin的可升級智能合約插件直接集成,這是一個巨大的勝利。
他們顯然是一群有才華的工程師,他們想要使世界成為一個更好的智能合約場所。
Truffle測試的運行速度不如安全帽那樣快,并且由于用戶數量眾多,獲得支持可能很困難。自從被ConsenSys收購以來,我很期待看到他們將如何改善這個項目。他們的文檔似乎開始下降,很難遵循,但是如果您通過Google搜索遇到的錯誤,很可能會遇到曾經遇到該錯誤并已解決的人。
我發現改善項目的一些最佳方法是將問題留在他們的GitHub上。無論如何,保持生態系統不斷壯大是我們的開源職責!
由于幾乎每個人都熟悉它,因此獲得同行的支持通常很容易。
我真的希望看到團隊在這個項目上獲得更多支持,因為他們有這么多用戶。
概括:
- 使用最廣泛的平臺;最近被ConsenSys收購(2020年11月)
- 技術:Javascript,Web3.js,OpenZeppelin可升級合同插件,Etherscan插件,區塊鏈分叉
- 區塊鏈:Ganache /本地,測試網,主網
- 有測試
- 維護:非常活躍
- 支持:活躍
- 具有付費升級功能的開源
3.Brownie
圖片來源:Brownie
Brownie受到Truffle的極大啟發,這基本上與Python等效,并增加了一些生活質量更改。這個項目大多數Python工程師感受都一樣:他們不喜歡JavaScript。
由于它是用Python編寫的,因此消除了使用JavaScript帶來的許多麻煩,并且您獲得了使用此奇妙的簡單框架來處理和部署智能合約。
作為一個自己喜歡Python的人,我為這個項目的未來感到非常興奮,隨著采用率的提高,越來越多的項目正在使用Python和此框架來部署他們的智能合約。
如果您來自Python世界,或者想要一個非常簡單,干凈的框架,毋庸置疑這個將非常適合你。
概括:
- 最好的Python框架,由Yearn.finance之類的DeFi項目使用。
- 技術:Python,Web3.py,區塊鏈分叉,Etherscan插件,Vyper支持
- 區塊鏈:Ganache /本地,測試網,主網
- 有測試
- 維護:非常活躍
- 支持:活躍
- 開源的
除了另外三個頂部的開發框架外,還有一個完整的dApp框架——
Embark,它也是一個區塊鏈平臺。
圖片來源:Embark
我很驚訝地看到在GitHub(3.1k)上排名前三的框架如此之多。
這個工具有很多鐘聲和口哨聲。我花了一些工夫才了解了個中緣由,這是因為Embark是一個完整的dApp框架。這是一個全棧的區塊鏈平臺。
在Gitter的一些幫助下,我能夠將Chainlink合同部署到Kovan網絡。它帶有一個UI,使您可以在GUI中與區塊鏈和合同進行交互。
我希望看到人們更多地嘗試該框架并看到其功能。由于我在該項目上花費的時間有限,我覺得我可能無法在這里做到公正。我認為,將前端與后端解耦仍然是最佳做法,但是如果您需要啟動一個具有良好前端的項目并且不關心解耦,那么您應該100%檢出該項目。
這個項目很酷,如果有人喜歡Hardhat和Truffle,但又想與全棧解決方案集成,這個將會適合這些人。
概括:
- 具有大量前端開發功能的JavaScript框架
- 技術:JavaScript,Web3.js,代理合同支持
- 區塊鏈:Ganache /本地,測試網,主網
- 有測試
- 維護:輕度活躍
- 支持:活躍
- 開源的
非框架工具
現在,在繼續上述操作之前,我想指出2021年的一些重要非框架工具。
- OpenZeppelin和升級插件
- Etherscan / Block Explorer驗證程序
- create-eth-app
1.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);
- }
- }
- OpenZeppeli
OpenZeppelin是一個開源項目。它的另一個重要方面是其可升級合同功能。部署一個正在運行的項目意味著您必須部署一個代理合同,該代理合同在您要進行任何更改時都需要更新。這是另一個讓人感到驚奇和干凈的項目。老實說,每個項目,無論您使用什么平臺,都應該使用OpenZeppelin在某個時候創建的內容。
2.Etherscan / Block Explorer驗證程序
Etherscan是最受歡迎的區塊瀏覽器。當人們想要簽出您的合同以及您已部署的內容時,除非他們具有ABI和合同地址,否則他們將無法進行檢查。或許找到合同地址通常很容易,但是要獲得ABI卻很困難。
您希望人們能夠輕松地查看您的智能合約并與之互動,因此您必須對其進行驗證,以便其他人能做到這一點。大多數框架都有某種驗證插件,您可以在其中部署智能合約,然后立即在Etherscan上對其進行驗證。確保在您的應用程序中使用它。
3.create-eth-app
擁有大量的后端智能合約是很棒的,但是如果沒有人可以使用您的dApp,那將毫無價值。create-eth-app是一個平臺,允許您使用ReactJS為智能合約增加前端。它使用了許多新的React技巧,例如State Hooks,并使構建真正強大的前端變得更加容易。
代替框架
下面介紹一些其他的代替框架,這些框架可能對您有用。他們中的一些確實對將智能合約框架中的內容有一些非常酷的想法,我希望你們能注意到這些很棒的想法。
這些工具可能會花費更多的探索時間。
- Waffle(JS)
- Dapp.Tools(Haskell / CLI)
- SBT(Scala / CLI)
- Epirus(Java)
1.Waffle
圖片來源:Waffle
Waffle本身可以用作部署框架,盡管您必須編寫更多自己的自定義腳本。盡管將其與其他框架進行比較有不及,但它被列為智能合約框架。
Waffle可以與您喜歡的任何框架一起使用,我當前是使用Hardhat的默認工具。
如果您希望框架可以提供所有不錯的功能,就不建議自己單獨使用它,但是如果您想使用更原始,更簡單,可自定義的框架,那么選擇它就不會有錯。
概括:
- 輕量級JavaScript框架專注于測試
- 技術:JavaScript,Ethers.js。
- 區塊鏈:您所經營的一切
- 有測試
- 維護:非常活躍
- 支持:活躍
- 開源的
2.Dapp.Tools
圖片來源:Dapp.Tools
MakerDAO使用了Dapp.Tools,這讓我感到驚訝。它是用Haskell編寫的,但支持許多我們喜歡和喜歡的插件,例如OpenZeppelin。
它看起來像一個極簡主義的框架,功能強大到足以執行您想要的操作。能夠令您在使用此平臺部署合同方面獲得幫助,并且對它的簡潔性產生好感。
如果您正在尋找一個對命令行友好的極簡主義框架,那么我建議您可以試試這個。
概括:
- MakerDAO使用的Haskell簡單框架
- 技術:Haskell / CLI
- 區塊鏈:本地/ Ganache,測試網,主網
- 有測試
- 維護:活躍
- 支持:活躍
- 開源的
3.Epirus
圖像來源:Epirus
即使我說的是“松露狀”,Epirus的風格也不是完全像松露狀,而是商業意義上的。
他們有一個開源項目,但有一個付費的升級工具,供那些希望與之合作的人使用。他們使用Java的Web3實施,而且看起來仍處于項目開發的早期階段。我很高興看到他們對Android的支持,因此我很想知道這個項目的進展情況。
由于Java智能合約平臺不多,因此我們可以吸引更多的Java工程師進入該行業。
我無法部署到Kovan,因為它不受支持,但看起來他們已經支持Rinkeby。無論如何,我很高興看到項目進展順利。
概括:
- 類似于Truffle的Java實現
- 技術:Java
- 區塊鏈:Ganache /本地,測試網(不是Kovan)
- 有測試
- 維護:活躍
- 支持:不是很活躍
- 具有付費升級功能的開源SBT
SBT-以太坊
我玩過的更有趣的項目之一,SBT專注于幾乎完全從命令行或與Scala進行的智能合約交互。我的Scala經驗幾乎為零,因此我沒有很好的觀點來評估該平臺。如果您了解Scala并尋求加入以太坊,這似乎可能真的很酷。
概括
- 解決兩個問題的命令行和Scala項目。適用于與智能合約和智能合約工程師一起工作的愛好者。
- 技術:Scala
- 區塊鏈:本地/ Ganache,測試網,主網
- 有測試
- 維護:輕度活躍
- 支持:無效
- 開源的
一些過時的框架
或者您會不時看到這些彈出窗口。
我敢肯定,當它們問世時,它們是很棒的!
但是現在,它們不再受支持或處于非活動狀態。
- OpenZeppelin CLI / SDK(JS)
- Etherlime(JS)
- Parasol(JS)
1.OpenZeppelin SDK
圖片來源:OpenZeppelin SDK
現在,我終于明白了為什么該項目停止為此工作了。
作為一個團隊,他們希望專注于可升級智能合約這一棘手的問題。
我能夠部署我的Chainlinked智能合約,并比幾乎任何其他框架更快地讀取ETH的價格。它還具有一些非常不錯的CLI選項,就像Epirus和Hardhat一樣。它還內置了可升級的選件,這在很少有平臺可以使用的世界中是巨大的。
我不建議使用此功能,因為他們有意不再支持它,但這是我使用智能合約框架獲得的最佳開發人員經驗之一。我希望使用前三名的技術人員能夠從中汲取靈感,使該項目如此光彩奪目。我在上面說過,每個人都應該使用OpenZeppelin工具是有原因的。
如果他們不停止這項工作,那么他們的SDK很容易成為前四名的框架。
概括
- OpenZeppelin是棄用的智能合約框架。他們不贊成將重點放在升級插件上。
- 技術:JavaScript,Web3.js和Ethers.js插件,OpenZeppelin可升級合同插件
- 區塊鏈:本地,測試網,主網
- 有測試
- 維護:無效
- 支持:無效
- 開源的
2.Etherlime
圖像來源:Etherlime
Etherlime似乎是另一個不受青睞且未積極開展工作的JS框架。它與Infura的過時功能緊密結合,因此我們無法在Kovan上部署智能合約。它看起來這是一個非常強大的項目,而且看起來仍然可以在本地開發中使用,但是我不建議使用它。
概括:
- 無效的JS框架
- 技術:JavaScript,Ethers.js
- 區塊鏈:本地,測試網,主網
- 有測試
- 維護:無效
- 支持:無效
- 開源的
3.Parasol
圖片來源:Parasol
另一個無效的JS框架(超過兩年未提交),它具有一些很酷的功能。例如Parasol互動和一些集成,而且顯然有一些很聰明的人在從事這項工作,但是我認為沒有理由在任何其他JS框架上使用該平臺。
概括:
- 無效的JS框架
- 技術:JavaScript,Web3.js
- 區塊鏈:本地/ Ganache,測試網,主網
- 有測試
- 維護:無效
- 支持:無效
- 開源的
智能合約和區塊鏈世界發展迅速。兩年前的一些最熱門工具已經是老新聞了,智能合約開發框架也沒有什么不同。看到Truffle始終處于游戲的頂端是很酷的事情,但更重要的是,許多項目都采用了不同的方法來解決問題。