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