數百次採訪後,我總結了2021年最好用的區塊鏈開發框架

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"本文最初發佈於Medium網站,經原作者授權由InfoQ中文站翻譯並分享。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"智能合約開發框架讓工程師可以部署和測試他們的智能合約,簡化他們的開發工作。我花了很多天時間來了解ConsenSys和Ethereum網站上推薦的每一個框架,想看看哪些框架是2021年最好用的。你可以在GitHub上看到我對"},{"type":"link","attrs":{"href":"https:\/\/github.com\/PatrickAlphaC\/smart-contract-frameworks?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"這些平臺的實驗"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不僅如此,我還對區塊鏈黑客馬拉松參與者做了幾百次採訪,並查閱了幾百個黑客馬拉松提交,想要找出哪些工具是性能最好、開發體驗最出色的。我自己也使用這些框架做了很多工作,想爲2021年做好準備。我爲大家做好了這期2021年優秀框架評選,這樣你就不用陷入選擇困難症了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文采用的標準很簡單。評選的框架需要:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"部署到一個本地區塊鏈"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"進行快速有效的測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用Chainlink將一個智能合約部署到"},{"type":"link","attrs":{"href":"https:\/\/kovan-testnet.github.io\/website\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"KovanTestnet"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三個標準很重要,因爲它讓我得以測試框架如何與其他軟件包交互和集成測試交互。從2021年開始,搭配"},{"type":"link","attrs":{"href":"https:\/\/betterprogramming.pub\/what-is-a-blockchain-oracle-f5ccab8dbd72?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"oracles"}]},{"type":"text","text":"和OpenZeppelin等第三方工具已經成了一項基本需求,所以最後一項標準就非常重要了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們將簡要介紹其他一些2021年你需要了解的重要工具,但本文不會涉及初學者工具,例如ETH錢包、以太坊客戶端或文本編輯器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"視頻簡介:"},{"type":"link","attrs":{"href":"https:\/\/youtu.be\/motYF5daaOc?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/youtu.be\/motYF5daaOc"}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"Top 4 智能合約開發框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"總的來說,我將向所有人推薦三個智能合約開發框架。每種框架的風味都稍有不同,選擇它們的理由也略有差異。它們分別是:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"Hardhat(JavaScript)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"Truffle(JavaScript)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"Brownie(Python)"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們來深入研究一下這幾個框架,談談你爲什麼要使用它們,爲什麼它們排在了名單的前列,以及其他值得注意的地方。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/hardhat.org\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Hardhat"}]}]}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"image","attrs":{"src":"https:\/\/uploader.shimo.im\/f\/edJC32fVZFaPWRGP.PNG!thumbnail?fileGuid=8KPrYpQGXgPyrdQJ","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Hardhat是目前最好的框架之一,有着同類競品中最快的測試、最好的教程和最簡單的集成。老實說,喜歡JS框架的人們遲早都應該試一試Hardhat。它真的很容易上手,測試飛快而且入門非常簡單。他們的Discord也一直在非常迅速地回答各種問題,因此如果你遇到了問題,總是很容易尋求幫助。他們使用Waffle和Ethers.js進行測試,這可以說是更好用的JavaScript智能合約框架,因爲它們相比web3.js做了一些非常不錯的改進。他們還可以與OpenZeppelin的可升級智能合約插件直接集成,這是一個很大的加分點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個項目給人一種很棒的感覺:它很乾淨。它能執行你想要的操作。它真的很快。這個項目正在不斷改進,顯然開發團隊正在努力讓智能合約開發人員的生活更加輕鬆。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"ETH基金會資助的項目,以前是Builder"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Javascript、Web3.js和Ethers.js插件,OpenZeppelin可升級合約插件,Etherscan插件,區塊鏈分叉"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:Hardhat運行時環境\/本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試:Waffle"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:非常活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":2,"normalizeStart":2},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.trufflesuite.com\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Truffle"}]}]}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"image","attrs":{"src":"https:\/\/uploader.shimo.im\/f\/4u5REZEYF6fLNYAO.PNG!thumbnail?fileGuid=8KPrYpQGXgPyrdQJ","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Truffle幾年來一直是開發人員的首選框架,這是有充分理由的。它是一個強大的框架,爲其他跟隨者樹立了標準。你會很容易找到一大堆項目都在使用這個平臺,因此示例查找起來很容易。Truffle也可以很容易地與它的姊妹工具"},{"type":"link","attrs":{"href":"https:\/\/www.trufflesuite.com\/drizzle?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Drizzle"}]},{"type":"text","text":" 集成在一起。特別是Ganache,它是工程師運行本地區塊鏈的最流行方法之一。如果你需要更多工具,你可以花錢購買升級版的Truffle團隊帳戶,獲得智能合約的持續集成、可視化部署和監視功能。他們還可以與OpenZeppelin的可升級智能合約插件直接集成,這是一個很大的優勢。他們顯然是一羣有才華的工程師,都想要爲智能合約創造一個更美好的世界。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Truffle測試的運行速度不如Hardhat那樣快,並且由於前者的用戶數量衆多,支持獲取起來可能會很困難。自從Truffle被ConsenSys收購以來,我很期待看到他們將如何改善這個項目。他們的文檔質量似乎開始下降,讀起來可能會磕磕絆絆,但是如果你用谷歌搜索一下自己遇到的錯誤,很可能會找到曾經遇到這個錯誤並已解決它的例子。我發現改善項目的最佳方法之一就是在他們的GitHub上留一個問題。無論如何,讓生態系統不斷壯大是我們開源社區的職責!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因爲幾乎所有人都很熟悉它,因此獲得同行支持通常會很容易。我真的希望看到開發團隊在這個項目上獲得更多支持,畢竟他們有這麼多的用戶。我希望他們能看到本文並能努力改善項目文檔,讓它能繼續作爲測試和部署智能合約的首選平臺之一。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用最廣泛的平臺;最近被ConsenSys收購(2020年11月)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Javascript,Web3.js,OpenZeppelin可升級合約插件,Etherscan插件,區塊鏈分叉"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:Ganache\/本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:非常活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具有付費升級功能的開源項目"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":3,"normalizeStart":3},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/eth-brownie\/brownie?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Brownie"}]}]}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"image","attrs":{"src":"https:\/\/uploader.shimo.im\/f\/lsTCLuXkKrDAn3E4.PNG!thumbnail?fileGuid=8KPrYpQGXgPyrdQJ","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Brownie很大程度上受到了Truffle的啓發,前者基本上是後者的Python等效版本,並增加了一些體驗改進。這個項目起源於大多數Python工程師都同樣擁有的困惑:他們不喜歡JavaScript。由於它是用Python編寫的,因此避免了使用JavaScript帶來的許多麻煩,併爲大家帶來了一個簡單優秀的框架來處理和部署智能合約。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我自己就很喜歡Python,因此對這個項目的未來感到非常興奮,隨着採用率的提高,越來越多的項目正在使用Python和這個框架來部署他們的智能合約。我已經將Brownie用作了我的入門框架,用下來感覺非常不錯。我還同一些用它做更多事情的開發人員做過交流,他們真的非常優秀。Yearn.finance似乎也已經用上了這個框架。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你來自Python開發世界,或者想要一個非常簡單、乾淨的框架,那麼這一款就是爲你而生的,毫無疑問。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"還有一個框架!我知道我只提到了三個,但我認爲下面的框架也應該在這裏佔據一席之地。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最好的Python框架,由Yearn.finance等DeFi項目使用。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Python,Web3.py,區塊鏈分叉,Etherscan插件,Vyper支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:Ganache\/本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:非常活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":4,"normalizeStart":4},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/framework.embarklabs.io\/docs\/solidity.html?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Embark"}]}]}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"image","attrs":{"src":"https:\/\/uploader.shimo.im\/f\/WVmuba6wMTEsDUaG.PNG!thumbnail?fileGuid=8KPrYpQGXgPyrdQJ","alt":null,"title":null,"style":null,"href":null,"fromPaste":false,"pastePass":false}}]},{"type":"listitem","attrs":{"listStyle":"none"},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我很驚訝能排名前三以外的框架能在GitHub上有這麼多星(3.1k)。這款工具花樣很多。我花了一些工夫才搞清楚它到底是怎麼回事,但這是因爲Embark旨在成爲一個完整的dApp框架。這是一個全棧的區塊鏈平臺。在他們Gitter的一些幫助下(以及在他們GitHub上創建的一個問題;請記住,開源社區責任!),我得以將自己的Chainlink合約部署到Kovan網絡。它帶有一個UI,這樣你就可以在GUI中與區塊鏈和合約交互。看來它有一段學習曲線,我沒有花足夠的時間來克服障礙,但能看出它的潛力很大。這就是爲什麼我想把它放在這裏的原因所在,因爲我覺得自己還有很多東西沒能完全消化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我希望看到有更多人能嘗試這個框架並意識到它的能力。由於我在該項目上花費的時間有限,所以我覺得自己可能無法做到公正評價。我確實認爲,將前端與後端解耦仍然是最佳實踐,但是如果你需要開始一個具有良好前端的項目並且不關心解耦需求,那麼你絕對應該嘗試這個項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這個項目很酷,如果有人喜歡Hardhat和Truffle,但又想集成一個全棧解決方案,我會首先推薦它。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用於前端開發的,具有大量功能的JavaScript框架"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:JavaScript,Web3.js,代理合約支持"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:Ganache\/本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:輕度活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"我們暫停一下"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"繼續介紹上述框架的替代選項之前,我想暫停一下,先來介紹一些2021年重要的非框架工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OpenZeppelin和升級插件("},{"type":"link","attrs":{"href":"https:\/\/openzeppelin.com\/contracts\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/openzeppelin.com\/contracts\/"}]},{"type":"text","text":")"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Etherscan\/BlockExplorer驗證器("},{"type":"link","attrs":{"href":"https:\/\/etherscan.io\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/etherscan.io\/"}]},{"type":"text","text":")"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"create-eth-app("},{"type":"link","attrs":{"href":"https:\/\/github.com\/paulrberg\/create-eth-app?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/paulrberg\/create-eth-app"}]},{"type":"text","text":")"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"OpenZeppelin和升級插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OpenZeppelin是一個平臺,可爲智能合約工程師創建有用的工具。他們有一些默認選項,例如ERC20和ERC721工具,你可以在其中導入他們的合約並在幾秒鐘內建立一個令牌。看看用OpenZeppelin製作一個ERC20有多簡單:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"plain"},"content":[{"type":"text","text":"pragma solidity ^0.6.0;\nimport “@openzeppelin\/contracts\/token\/ERC20\/ERC20.sol”;\ncontract GLDToken is ERC20 {\nconstructor(uint256 initialSupply) public ERC20(“Gold”, “GLD”) {\n_mint(msg.sender, initialSupply);\n}\n}\n"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"重新發明輪子沒有意義。OpenZeppelin是一個開源項目,主要目的就是省去大家重新造輪子的功夫。OpenZeppelin的另一個重要特性是它的可升級合約功能。部署一個實際項目意味着你必須部署一個代理合約,這個代理合約在你要進行任何更改時都需要更新。這又是一個體驗出色且乾淨的項目。老實說,對每一個項目來說,無論你使用的是什麼平臺,遲早都會用上OpenZeppelin創建​​的內容。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Etherscan\/Block Explorer驗證器"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Etherscan是最受歡迎的區塊瀏覽器。當人們想要簽出你的合約以及你已部署的內容時,除非他們具有ABI和合約地址,否則就無法簽出。找到合約地址通常很容易,但是要獲得ABI卻很困難。你肯定希望人們能輕鬆地查看你的智能合約並與之互動,因此你需要隨時對其進行驗證,以便其他人可以做到這一點。大多數框架都有某種驗證插件,你可以在其中部署智能合約,然後立即在Etherscan上對其進行驗證。一定要在你的應用程序中使用它。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"create-eth-app"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"擁有一大堆後端智能合約誠然很不錯,但是如果沒有人可以使用你的dApp,那這些合約將毫無價值。create-eth-app是一個平臺,允許你使用ReactJS爲你的智能合約增加一個前端。它使用了許多最新的React技術(例如狀態Hooks),並讓開發人員可以很容易地構建真正強大的前端。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"2021年的一些出色的初學者工具"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Scaffold- ETH("},{"type":"link","attrs":{"href":"https:\/\/github.com\/austintgriffith\/scaffold-eth?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/austintgriffith\/scaffold-eth"}]},{"type":"text","text":")"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eth.build("},{"type":"link","attrs":{"href":"https:\/\/eth.build\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/eth.build\/"}]},{"type":"text","text":")"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Remix("},{"type":"link","attrs":{"href":"https:\/\/remix.ethereum.org\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/remix.ethereum.org\/"}]},{"type":"text","text":")"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OneClick dApp("},{"type":"link","attrs":{"href":"https:\/\/oneclickdapp.com\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/oneclickdapp.com\/"}]},{"type":"text","text":")"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我不會在這裏介紹它們的詳細情況,但如果你是這個領域的新手,用它們就對了!"}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"其他框架選項"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"剩下的這些框架也都很不錯,並且可能更適合你的需求。它們中的一些確實對智能合約框架中應該放什麼內容有一些非常酷的想法,我希望前三名選手能夠注意到其中一些很棒的理念。這些工具可能需要更多的探索時間。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Waffle(JS)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Dapp.Tools(Haskell\/CLI)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SBT(Scala\/CLI)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Epirus(Java)"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Waffle"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/83\/8301fd2e9bc35179d70ebad7b7283e50.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/getwaffle.io\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Waffle"}]},{"type":"text","text":"本身可以用作部署框架,只不過你需要編寫更多自定義腳本。雖說拿它和其他框架進行對比有點愚蠢,但這裏還是把它列爲智能合約框架。Waffle可以與你喜歡的任何框架搭配使用,並且當前是搭配Hardhat的默認工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你希望框架可以提供所有不錯的功能,那我不建議單獨使用它。但如果你想使用更原始、更簡單、可自定義的框架,那麼選它就不會出錯。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"輕量級JavaScript框架,專注於測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:JavaScript,Ethers.js"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:你所經營的一切"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:非常活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Dapp.Tools"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/1a\/1a0907770690b221ff30181444e4ceeb.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MakerDAO使用了"},{"type":"link","attrs":{"href":"http:\/\/dapp.tools\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Dapp.Tools"}]},{"type":"text","text":",它也驚豔了我一把。它是用Haskell編寫的,但支持許多我們喜歡和常用的插件,例如OpenZeppelin。它看起來像一個極簡主義的框架,但功能強大到足以做到你想做的事情。我可以找到關於使用這個平臺部署合約的幫助,另外它的簡潔也給人留下了深刻印象。如果你正在尋找一個對命令行友好的極簡主義框架,那麼我建議你也看一下這一款。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"MakerDAO使用的Haskell簡單框架"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Haskell\/CLI"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:本地\/Ganache,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Epirus"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c4\/c4a2ff3ec233a26b45d60a6eeedbf7a8.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雖然我說過它是“類Truffle”框架,但"},{"type":"link","attrs":{"href":"https:\/\/www.web3labs.com\/epirus?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Epirus"}]},{"type":"text","text":"的風格也不是完全像Truffle,只是在商業層面比較相似。他們有一個開源項目,但還有一個付費的升級工具,供想要用它做更多事情的用戶選擇。他們使用Java的Web3實現,而且看起來仍處於項目開發的早期階段。我很高興看到他們提供了對Android的支持,因此我很想知道這個項目的進展情況。由於Java智能合約平臺不多,因此它可以吸引更多的Java工程師進入這一行業。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我無法用它部署到Kovan,因爲它不受支持,但看起來他們已經支持"},{"type":"link","attrs":{"href":"https:\/\/www.rinkeby.io\/#stats?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"Rinkeby"}]},{"type":"text","text":"了。無論如何,我很高興看到這個項目能順利推進。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"類似於Truffle的Java實現"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Java"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:Ganache\/本地,測試網(不是Kovan)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:不是很活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"具有付費升級功能的開源項目"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"SBT"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b7\/b79da2055b5e8e48e308d71166863833.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這是我玩過的一個很有趣的項目,"},{"type":"link","attrs":{"href":"https:\/\/www.sbt-ethereum.io\/?fileGuid=8KPrYpQGXgPyrdQJ","title":"xxx","type":null},"content":[{"type":"text","text":"SBT"}]},{"type":"text","text":"的特色是幾乎完全從命令行或使用Scala與智能合約交互。我的Scala經驗幾乎爲零,因此沒有足夠的背景知識來評估這個平臺。如果你瞭解Scala並想要踏入以太坊世界,這款工具可能真的是很酷的選項。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同時滿足命令行與Scala的開發需求。適用於智能合約愛好者和工程師。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:Scala"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:本地\/Ganache,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:輕度活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"過時的框架"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你經常會見到這些框架的身影。我敢肯定它們問世時都是很棒的工具,但是到了今天,它們不再獲得支持或處於非活躍狀態。下面的這些框架不值得你浪費精力去了解和嘗試。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OpenZeppelinCLI\/SDK(JS)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Etherlime(JS)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Parasol(JS)"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Cobra(PY)"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"OpenZeppelin SDK"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f6\/f6c64498d7de3b10a4d2396a34ae4d1f.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"現在,我明白爲什麼這個項目停止爲此工作了——作爲一個團隊,他們希望專注於可升級智能合約這一棘手的問題——但說實話這挺遺憾的。這個項目相當乾淨。我可以部署我的Chainlinked智能合約,並能比幾乎其他所有框架更快地讀取ETH的價格。它還有一些非常不錯的CLI選項,就像Epirus和Hardhat一樣。它還內置了可升級的選項,其他平臺很少有這種設計,所以這是很大的優點。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我不建議使用這個框架,因爲他們不會再支持它了。但這是我使用智能合約框架獲得的最佳開發體驗之一。我希望前三名選手能夠從中汲取一些令這個項目與衆不同的靈感。我上面說過,每個人都應該使用OpenZeppelin工具是有原因的。他們就是很好用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果他們不停止這個項目,那麼他們的SDK很容易成爲前四名的框架。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"OpenZeppelin棄用的智能合約框架。他們棄用它是爲了將重點放在升級插件上。不管怎樣,它真的是很乾淨的JS框架。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:JavaScript,Web3.js和Ethers.js插件,OpenZeppelin可升級合約插件"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Etherlime"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/68\/6850bfa6a90b95aee5acd24c2fc14d50.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Etherlime似乎是另一個不受青睞且未積極開展工作的JS框架。它與Infura的一項過時特性緊密耦合,因此我們無法在Kovan上部署智能合約。它活躍的時候看來是一個非常強大的項目,而且似乎仍然可以在本地開發中使用,但是我不建議用它替代前三個選項。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不活躍的JS框架"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:JavaScript,Ethers.js"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:本地,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"Parasol"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c2\/c29ffed7d10d839c6a44f25715deee18.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另一個不活躍的JS框架(超過兩年沒有一項提交)。它有一些很酷的功能,例如parasol interact和一些集成,而且顯然曾有一些很聰明的人在從事這項工作,但是我認爲沒有理由用它代替其他任何JS框架了。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"小結"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不活躍的JS框架"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術:JavaScript,Web3.js"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"區塊鏈:本地\/Ganache,測試網,主網"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"維護:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支持:不活躍"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開源"}]}]}]},{"type":"heading","attrs":{"align":null,"level":1}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你覺得我錯過了什麼框架或在哪裏弄錯了,或者你有其他想法,請隨時發表評論或聯繫我。本文的想法是讓智能合約工程師能夠儘快高效地入門。掌握所有這些工具將使我們能夠更快地實現去中心化的世界。希望這對你能有所幫助!"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/betterprogramming.pub\/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04?fileGuid=8KPrYpQGXgPyrdQJ","title":"","type":null},"content":[{"type":"text","text":"https:\/\/betterprogramming.pub\/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章