01 智能合約開發框架TOP3
下面這三個智能合約開發框架是適用于所有人的。當然,它們各自在功能和側重上又略有不同,大家可以自行選擇:
1.Hardhat (JAVAScript)
2.Truffle (JavaScript)
3.Brownie (Python)
下面將逐一了解一下這三者各自的優勢,以及使用時的注意事項,幫助大家選擇最適合自己的框架。
1. Hardhat
Hardhat絕對是最好的框架之一,它具備最快的測試、最好的教程和最簡單的集成方式。老實說,每個喜歡JS框架的人都應該嘗試一下Hardhat。它真的超級容易上手,而且測試極快。它的Discord對問題的回復也十分迅速,因此,如果你遇到了任何問題,都可以隨時尋求幫助。該框架使用Waffle和Ethers.js進行測試,可以說是JavaScript智能合約框架升級版(因為比web3.js有了更好的改進)。它還可以直接集成OpenZeppelin的可升級智能合約插件,簡直完美!
這個項目有一點超級贊:它很干凈。可以簡潔、有效且迅速地完成你下達的任務。當然,該框架也在不斷改進,致力于為智能合約開發人員帶來更輕松的使用體驗。
總結
ETH基金會資助的項目,更名前叫做Builder
技術方面:Javascript、Web3.js和Ethers.js插件、OpenZeppelin可升級合約插件、Etherscan插件、區塊鏈分叉
區塊鏈環境:Hardhat 運行時環境/本地、測試網、主網
測試框架:Waffle
維護:非常積極
支持:積極
開源
2. Truffle
幾年來,Truffle一直都是默認開發框架,這不是沒有理由的。它確實是一個十分強大的框架,為許多其他框架樹立了行業標準。你應該也發現了,現在使用這個平臺的項目非常多,因此可供參考的例子也很好找。Truffle還可以很輕松地實現與姊妹工具Drizzle和Ganache集成。尤其是Ganache——工程師們在運行本地區塊鏈時的最愛之一。如果你想要更多工具的話,可以購買升級版Truffle團隊賬戶,獲得智能合約的持續集成、可視化部署和監控的權限。它還可以直接集成OpenZeppelin的可升級智能合約插件,完美!顯然,其團隊中這群才華橫溢的工程師正致力于讓世界變得更美好。
Truffle測試的運行速度沒有Hardhat那么快,而且由于用戶量很大,因此保障支持也很困難。我很期待看到他們在被ConsenSys收購后會如何對項目進行改進。他們的文檔更新似乎開始有點落后了,不是很有參考價值。但如果你遇到什么問題的話,可以在谷歌上搜索一下,很可能會找到有人曾經遇到并解決過相同的問題。我發現,有時候改進項目的最好方法就是在它們的GitHub上留下自己的問題。無論如何,我們開源的職責就是要讓這個生態系統越來越強大,越來越好!
由于幾乎所有人都已經很熟悉Truffle了,所以很容易就可以得到同行的幫助和支持。我很希望可以看到這個團隊能夠在該項目上獲得更多的支持,因為他們的用戶真的非常多。我也希望他們能看到這篇文章,并努力改進其文檔,從而保持他們作為測試和部署智能合約的首選平臺之一的地位。
總結
應用最廣泛的平臺,最近剛被ConsenSys收購(2020年11月)
技術方面:Javascript,、Web3.js、OpenZeppelin可升級合約插件、Etherscan插件、區塊鏈分叉
區塊鏈環境:Ganache/本地、測試網、主網
含測試框架
維護:非常積極
支持:積極
付費升級開源
3. Brownie
Brownie基本上可以相當于Truffle的Python版,只是增加了一些基礎改善。這個項目實際上是來源于大多數Python工程師都經歷過的挫敗感:他們不喜歡JavaScript。由于它是用
Python編寫的,所以去除了很多使用JavaScript時會遇到的麻煩,最后,我們得到的就是這個處理和部署智能合約的簡潔框架。
作為一個熱愛Python的人,我是非??春眠@個項目的未來的,而且就其采用率升高這一點來看,有越來越多的項目都開始采用Python和這個框架來部署他們的智能合約。我已經開始使用Brownie作為自己的首選框架了,而且越用越喜歡。我曾和一些從事這方面工作的人聊過,他們真的是非常聰明的一群人,Yearn.finance似乎也是他們的粉絲。
如果你是Python星人,或者想要一個真正簡單、干凈的框架的話,毫無疑問,這就是為你準備的。
總結
最好的Python框架,用于像yen.finance這樣的DeFi項目。
技術方面:Python、Web3.py、區塊鏈分叉、Etherscan插件、Vype支持
區塊鏈環境:Ganache/本地、測試網、主網
含測試框架
維護:非常積極
支持:積極
開源
等等!再加一個!我知道我說是選TOP 3,但我覺得下面這個也絕對值得占有一席之地。
4. Embark
很驚訝能在GitHub上看到有一個前三名之外的框架可以獲得這么多星星(3.1k)。這個工具有一大堆花里胡哨的附加功能。我也是花了一點功夫才完全搞清楚的,這是因為Embark要成為一個完整的dApp框架。Embark是一個全棧區塊鏈平臺。在其Gitter得到一些幫助后,我能夠將我的Chainlink合約部署到Kovan網絡上(還在他們的GitHub上創建了一個問題,記住,多多參與是開源的責任!)。Embark附帶了一個UI,能夠幫助我們在GUI中與區塊鏈和你的合約進行交互。這是一個需要花點時間和精力來學習才能上手的框架,雖然我沒做到,但是一旦掌握后,應該可以充分挖掘其背后蘊含的巨大能量。這也是我為什么想將其加在TOP 3后面的原因,因為我覺得有很多東西我還沒有完全消化。
我很希望看到大家多嘗試一下這個框架,看看它的威力。由于我在這個項目上花費的時間很有限,所以我目前可能無法對其進行客觀、公正的描述。我確實認為將前端與后端解耦仍然是最好的做法,但如果你需要用一個好的前端來啟動一個項目,且不關心解耦的話,就一定要看看Embark。
項目本身超級酷,如果你喜歡Hardhat和Truffle,但又想集成全棧解決方案的話,那么我推薦你去看看它。
總結
為前端開發提供了大量附加功能的JavaScript框架
技術方面:JavaScript、Web3.js、支持代理合約
區塊鏈環境:Ganache/本地、測試網、主網
含測試框架
維護:一般積極
支持:積極
開源
02 暫停一下
現在,在我繼續介紹上述的一些替代工具之前,我想稍微休息一下,先聊一聊2021年的一些重要的非框架工具。
OpenZeppelin和升級插件
Etherscan/Block Explorer驗證器
create-eth-app
OpenZeppelin和升級插件
OpenZeppelin是一個為智能合約工程師創建工具的平臺。上面有一些默認的工具,比如ERC20和ERC721工具,你可以直接導入其合約,幾秒鐘就可以構建一個代幣??纯从肙penZeppelin做一個ERC20有多簡單:
OpenZeppelin是一個開源項目,致力于確保我們不需要白費力氣去做重復的工作。
OpenZeppelin的另一個巨大優勢是其可升級合約功能。同樣,這也是一個非常神奇、且干凈的項目。老實說,任何項目,無論你使用的是什么平臺,或許都會用到由OpenZeppelin創建的工具。
Etherscan/Block Explorer驗證器
Etherscan是最熱門的區塊瀏覽器。當人們想要查看我們的合約或部署的東西時,除非他們有ABI和合約地址,否則是無法查看的。查找合約地址通常很容易,但是要獲取ABI就很困難了。我們肯定希望大家都能很容易地找到智能合約并與之交互,所以希望自己能驗證合約,以便其他人也可以找到合約并驗證。大多數框架都有某種驗證插件,你可以部署一個智能合約,然后在Etherscan上驗證它。一定要在你的應用程序中用一下這個。
create-eth-app
擁有大量的后端智能合約是很好,但如果沒有人能使用你的dApp的話,那就沒有價值了。create-eth-app這個平臺能協助你使用ReactJS為自己的智能合約開發一個前端。它使用了許多較新的React技巧,比如狀態鉤子(state Hooks),讓構建強大前端的過程變得更加容易。
03 2021年推薦入門工具
Scaffold-ETH (https://github.com/austintgriffith/scaffold-eth)
eth.build(https://eth.build/)
Remix(https://remix.ethereum.org/)
One Click dApp(https://oneclickdapp.com/)
在這里,我就不多做介紹了,但如果你是新手的話,可以看看這些!
04 替代框架
下面這幾個框架也都還不錯,可能會很適合你。其中確實有一些非常酷的想法,在智能合約框架中融合其他的東西。希望我們的TOP 3可以從中獲得令人驚艷的靈感。但這些工具可能需要花更多的時間來進行探索。
Waffle (JS)
Dapp.Tools (Haskell/CLI)
SBT (Scala/CLI)
Epirus (Java)
Waffle
Waffle本身也可以作為部署框架使用,只不過我們需要多寫很多自定義腳本。與其他框架相比,它自稱為智能合約框架就顯得有點傻憨憨了。可以將Waffle和任何我們喜歡的框架搭配在一起使用,它目前也是Hardhat的默認工具。
如果你想要的是一個全能型選手的話,那么我不建議你單獨使用它;但如果你是想要一個更原始、簡單、可定制的框架的話,選它絕不會出錯。
總結
專注于測試的輕量級JavaScript框架
技術方面:JavaScript、Ethers.js
區塊鏈環境:所有環境
含測試框架
維護:非常積極
支持:積極
開源
Dapp.Tools
在得知MakerDAO使用的是Dapp.Tools時,我非常驚訝。它是用Haskell編寫的,但支持很多我們常用并喜愛的插件,比如OpenZeppelin。表面上看它是一個崇尚極簡主義的框架,但實際上其功能很強大,完全可以勝任我們所需的開發工作。我曾用它部署過自己的合約,其簡潔的使用感讓我感到非常驚喜。如果你想找一個極簡的命令行友好框架的話,那么我建議你看看這個。
總結
MakerDAO使用的Haskell框架
技術方面:Haskell/CLI
區塊鏈環境:Local/Ganache、測試網、主網
含測試框架
維護:積極
支持:積極
開源
Epirus
雖然我說它很像Truffle,但僅僅指的是其商業意義,Epirus的風格與Truffle是完全不同的。Epirus有開源項目,同時也有付費的升級工具,能夠為有需要的人提供近一步的支持。它使用的是Java的Web3實現,目前看來,項目開發尚處于早期階段。我很高興看到他們有支持Android,所以我很期待這個項目進展如何。我們可以讓更多的Java工程師進入這個行業中來,畢竟Java智能合約平臺并不多。
由于它不支持,所以我沒能部署到Kovan,但它貌似是支持Rinkeby的。但無論如何,我還是很期待看到這個項目的后續進展的。
總結
一個與Truffle類似的Java實現
技術方面:Java
區塊鏈環境:Ganache/本地、測試網(不是Kovan)
含測試框架
維護:積極
支持:不是非常積極
付費升級開源
SBT
SBT是我玩過的比較有意思的項目之一,它專注于與智能合約的交互(幾乎只用命令行或Scala)。我沒怎么用過Scala,所以并沒有立場來評價這個平臺。如果你懂Scala,并且想進入以太坊的話,它似乎會是一個很棒的選擇。
總結
基于命令行的Scala項目,適用于從事智能合約工作的愛好者或智能合約工程師
技術方面:Scala
區塊鏈環境:本地/Ganache、測試網、主網
含測試框架
維護:一般積極
支持:不積極
開源
05 不再主流的框架
我們還會時不時地看到這些框架,我也相信它們在剛剛推出的時候曾是十分驚艷的,但就現在而言,它們要么不再支持,要么不再活躍。相對下列的框架,我們已經有了更好的選擇。
OpenZeppelin CLI/SDK (JS)
Etherlime (JS)
Parasol (JS)
Cobra (PY)
OpenZeppelin SDK
我現在終于這個項目停滯不前的原因了:他們作為一個團隊,想要把更多的精力放在可升級的智能合約上,但說實話,這有點可惜。這個項目非常干凈簡潔。我能在上面部署自己的Chainlinked智能合約,并讀取ETH的價格(速度比其他框架都要快)。它還有一些非常棒的CLI選項,當然,Epirus和Hardhat也有。它還內置了可升級選項,這是非常驚人且少見的。
我之所以不推薦它,是因為官方不支持了,但有一說一,這絕對是我使用過的智能合約框架最佳開發體驗之一。我希望上文提到的TOP 3能夠繼承這個項目的閃光點。我之所以在上面說“每個人都應該使用OpenZeppelin工具”是有原因的,他們就是好用!
如果OpenZeppelin沒有停止這方面支持的話,他們的SDK絕對會是前四名的框架。
總結
OpenZeppelin為了專注于升級插件而廢棄的智能合約框架,否則將會是一款非常棒的JS框架。
技術方面:JavaScript、Web3.js和Ethers.js插件、OpenZeppelin可升級合約插件
區塊鏈環境:本地、測試網、主網
含測試框架
維護:不積極
支持:不積極
開源
Etherlime
Etherlime似乎是另一個沒有得到積極開發、正逐漸失寵的JS框架。它與Infura的一個過時功能緊密結合,所以我們無法在Kovan上部署我們的智能合約。在以前,它似乎是一個非常強大的項目,而且貌似仍然可用于本地開發,但我不會把它放進TOP 3。
總結
不活躍的JS框架
技術方面:JavaScript、Ethers.js
區塊鏈環境;本地、測試網、主網
含測試框架
維護:不積極
支持:不積極
開源
Paras
另一個不活躍的JS框架(超過兩年沒有新的提交),它有一些功能超級贊,比如parasol interact,還有一些集成,不難看出曾有一群很聰明的人為之付出過努力。但我還是找不到為了它而舍棄其他JS框架的理由。
總結
不活躍的JS 框架
技術方面:JavaScript、Web3.js
區塊鏈環境:本地/Ganache、測試網、主網
含測試框架
維護:不積極
支持:不積極
開源
06 結語
智能合約和區塊鏈世界的發展速度讓人驚嘆。一些兩年前最熱門的工具如今已經過時了,智能合約開發框架也不例外。很高興能看到Truffle在這場競爭中拔得頭籌,但更重要的是,我們看到許多項目都在采取不同的方法來解決問題。
如果你覺得還有什么遺珠推薦或者對這些框架有自己的看法,歡迎在評論中留言。讓智能合約工程師盡可能快速、有效地開展工作是我們共同的目標。了解所有的工具將幫助我們更快地實現世界去中心化。希望本文對大家有所幫助!