2021年区块链开发框架选择指南(推荐/踩雷)

作者 |Patrick Collins

翻译 | 火火酱,责编 | 晋兆雨

出品 | 区块链大本营

头图 |付费下载于视觉中国

最好的智能合约和区块链开发框架,就要涵盖所有以太坊智能合约开发语言。

图片来源:blackred-Getty Images Signature

智能合约开发框架能帮助工程师部署并测试他们的智能合约,从而减轻其负担,提高工作幸福感。我花时间把ConsenSys和以太坊网站上推荐的所有框架都看了一遍,从中挑选出了几个2021年最被看好的框架。感兴趣的话,大家可以在下方GitHub链接中找到我对这些平台的尝试和看法。

(链接地址:https://github.com/PatrickAlphaC/smart-contract-frameworks)

此外,我还对区块链黑客马拉松的参与者们进行了数百次采访,并翻阅了数百份相关投稿,试图从中寻找出性能最好、开发体验最优的工具。在为2021年做准备时,我还在日常工作中试用了很多框架。雷我已经替大家踩过了,现在大家只需要按个人需求和喜好进行选择就好。

我的评判标准很简单,最佳框架需要满足以下三个条件:

部署到本地区块链

具备快速且有效的测试能力

使用Chainlink向Kovan Testnet测试网部署智能合约。

第三个标准非常重要,因为这将帮助我了解框架与其他包和集成测试的交互效果。在2021年,实现与甲骨文和第三方工具(如OpenZeppelin)的交互是必备基础条件,因此,最后一项标准必不可少。

同时,我们还将简要介绍一些大家在2021年需要了解的其他重要工具,但本文不会介绍入门工具,如ETH钱包、以太坊客户端或文本编辑器等。

需要的话,大家也可以通过下方视频进行了解:

视频链接:https://www.youtube.com/watch?v=motYF5daaOc

智能合约开发框架TOP 3

在我看来,下面这三个智能合约开发框架是适用于所有人的。当然,它们各自在功能和侧重上又略有不同,大家可以自行选择:

1.Hardhat (JavaScript)

2.Truffle (JavaScript)

3.Brownie (Python)

下面,我们将逐一了解一下这三者各自的优势,以及使用时的注意事项,帮助大家选择最适合自己的框架。

1. Hardhat

图片来源: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

图片来源:TruffleSuite

几年来,Truffle一直都是默认开发框架,这不是没有理由的。它确实是一个十分强大的框架,为许多其他框架树立了行业标准。你应该也发现了,现在使用这个平台的项目非常多,因此可供参考的例子也很好找。Truffle还可以很轻松地实现与姊妹工具Drizzle和Ganache集成。尤其是Ganache——工程师们在运行本地区块链时的最爱之一。如果你想要更多工具的话,可以购买升级版Truffle团队账户,获得智能合约的持续集成、可视化部署和监控的权限。它还可以直接集成OpenZeppelin的可升级智能合约插件,完美!显然,其团队中这群才华横溢的工程师正致力于让世界变得更美好。

Truffle测试的运行速度没有Hardhat那么快,而且由于用户量很大,因此保障支持也很困难。我很期待看到他们在被ConsenSys收购后会如何对项目进行改进。他们的文档更新似乎开始有点落后了,不是很有参考价值。但如果你遇到什么问题的话,可以在谷歌上搜索一下,很可能会找到有人曾经遇到并解决过相同的问题。我发现,有时候改进项目的最好方法就是在它们的GitHub上留下自己的问题。无论如何,我们开源的职责就是要让这个生态系统越来越强大,越来越好!

由于几乎所有人都已经很熟悉Truffle了,所以很容易就可以得到同行的帮助和支持。我很希望可以看到这个团队能够在该项目上获得更多的支持,因为他们的用户真的非常多。我也希望他们能看到这篇文章,并努力改进其文档,从而保持他们作为测试和部署智能合约的首选平台之一的地位。

总结

应用最广泛的平台,最近刚被ConsenSys收购(2020年11月)

技术方面:Javascript,、Web3.js、OpenZeppelin可升级合约插件、Etherscan插件、区块链分叉

区块链环境:Ganache/本地、测试网、主网

含测试框架

维护:非常积极

支持:积极

付费升级开源

3. Brownie

图片来源: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

图片来源:Embark

我很惊讶能在GitHub上看到有一个前三名之外的框架可以获得这么多星星(3.1k)。这个工具有一大堆花里胡哨的附加功能。我也是花了一点功夫才完全搞清楚的,这是因为Embark要成为一个完整的dApp框架。Embark是一个全栈区块链平台。在其Gitter得到一些帮助后,我能够将我的Chainlink合约部署到Kovan网络上(还在他们的GitHub上创建了一个问题,记住,多多参与是开源的责任!)。Embark附带了一个UI,能够帮助我们在GUI中与区块链和你的合约进行交互。这是一个需要花点时间和精力来学习才能上手的框架,虽然我没做到,但是一旦掌握后,应该可以充分挖掘其背后蕴含的巨大能量。这也是我为什么想将其加在TOP 3后面的原因,因为我觉得有很多东西我还没有完全消化。

我很希望看到大家多尝试一下这个框架,看看它的威力。由于我在这个项目上花费的时间很有限,所以我目前可能无法对其进行客观、公正的描述。我确实认为将前端与后端解耦仍然是最好的做法,但如果你需要用一个好的前端来启动一个项目,且不关心解耦的话,就一定要看看Embark。

项目本身超级酷,如果你喜欢Hardhat和Truffle,但又想集成全栈解决方案的话,那么我推荐你去看看它。

总结

为前端开发提供了大量附加功能的JavaScript框架

技术方面:JavaScript、Web3.js、支持代理合约

区块链环境:Ganache/本地、测试网、主网

含测试框架

维护:一般积极

支持:积极

开源

暂停一下!

现在,在我继续介绍上述的一些替代工具之前,我想稍微休息一下,先聊一聊2021年的一些重要的非框架工具。

OpenZeppelin和升级插件

Etherscan/Block Explorer验证器

create-eth-app

OpenZeppelin和升级插件

OpenZeppelin是一个为智能合约工程师创建工具的平台。上面有一些默认的工具,比如ERC20和ERC721工具,你可以直接导入其合约,几秒钟就可以构建一个代币。看看用OpenZeppelin做一个ERC20有多简单:

pragmasolidity^0.6.0;import“@openzeppelin/contracts/token/ERC20/ERC20.sol”;contractGLDTokenisERC20{constructor(uint256initialSupply)publicERC20(“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技巧,比如状态钩子(state Hooks),让构建强大前端的过程变得更加容易。

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/)

在这里,我就不多做介绍了,但如果你是新手的话,可以看看这些!

替代框架

下面这几个框架也都还不错,可能会很适合你。其中确实有一些非常酷的想法,在智能合约框架中融合其他的东西。希望我们的TOP 3可以从中获得令人惊艳的灵感。但这些工具可能需要花更多的时间来进行探索。

Waffle (JS)

Dapp.Tools (Haskell/CLI)

SBT (Scala/CLI)

Epirus (Java)

Waffle

图片来源:Waffle

Waffle本身也可以作为部署框架使用,只不过我们需要多写很多自定义脚本。与其他框架相比,它自称为智能合约框架就显得有点傻憨憨了。可以将Waffle和任何我们喜欢的框架搭配在一起使用,它目前也是Hardhat的默认工具。

如果你想要的是一个全能型选手的话,那么我不建议你单独使用它;但如果你是想要一个更原始、简单、可定制的框架的话,选它绝不会出错。

总结

专注于测试的轻量级JavaScript框架

技术方面:JavaScript、Ethers.js

区块链环境:所有环境

含测试框架

维护:非常积极

支持:积极

开源

Dapp.Tools

图片来源:Dapp.Tools

在得知MakerDAO使用的是Dapp.Tools时,我非常惊讶。它是用Haskell编写的,但支持很多我们常用并喜爱的插件,比如OpenZeppelin。表面上看它是一个崇尚极简主义的框架,但实际上其功能很强大,完全可以胜任我们所需的开发工作。我曾用它部署过自己的合约,其简洁的使用感让我感到非常惊喜。如果你想找一个极简的命令行友好框架的话,那么我建议你看看这个。

总结

MakerDAO使用的Haskell框架

技术方面:Haskell/CLI

区块链环境:Local/Ganache、测试网、主网

含测试框架

维护:积极

支持:积极

开源

Epirus

图片来源:Epirus

虽然我说它很像Truffle,但仅仅指的是其商业意义,Epirus的风格与Truffle是完全不同的。Epirus有开源项目,同时也有付费的升级工具,能够为有需要的人提供近一步的支持。它使用的是Java的Web3实现,目前看来,项目开发尚处于早期阶段。我很高兴看到他们有支持Android,所以我很期待这个项目进展如何。我们可以让更多的Java工程师进入这个行业中来,毕竟Java智能合约平台并不多。

由于它不支持,所以我没能部署到Kovan,但它貌似是支持Rinkeby的。但无论如何,我还是很期待看到这个项目的后续进展的。

总结

一个与Truffle类似的Java实现

技术方面:Java

区块链环境:Ganache/本地、测试网(不是Kovan)

含测试框架

维护:积极

支持:不是非常积极

付费升级开源

SBT

图片来源:sbt-etheteum

SBT是我玩过的比较有意思的项目之一,它专注于与智能合约的交互(几乎只用命令行或Scala)。我没怎么用过Scala,所以并没有立场来评价这个平台。如果你懂Scala,并且想进入以太坊的话,它似乎会是一个很棒的选择。

总结

基于命令行的Scala项目,适用于从事智能合约工作的爱好者或智能合约工程师

技术方面:Scala

区块链环境:本地/Ganache、测试网、主网

含测试框架

维护:一般积极

支持:不积极

开源

不再主流的框架

我们还会时不时地看到这些框架,我也相信它们在刚刚推出的时候曾是十分惊艳的,但就现在而言,它们要么不再支持,要么不再活跃。相对下列的框架,我们已经有了更好的选择。

OpenZeppelin CLI/SDK (JS)

Etherlime (JS)

Parasol (JS)

Cobra (PY)

OpenZeppelin SDK

图片来源:OpenZeppelin SDK

我现在终于这个项目停滞不前的原因了:他们作为一个团队,想要把更多的精力放在可升级的智能合约上,但说实话,这有点可惜。这个项目非常干净简洁。我能在上面部署自己的Chainlinked智能合约,并读取ETH的价格(速度比其他框架都要快)。它还有一些非常棒的CLI选项,当然,Epirus和Hardhat也有。它还内置了可升级选项,这是非常惊人且少见的。

我之所以不推荐它,是因为官方不支持了,但有一说一,这绝对是我使用过的智能合约框架最佳开发体验之一。我希望上文提到的TOP 3能够继承这个项目的闪光点。我之所以在上面说“每个人都应该使用OpenZeppelin工具”是有原因的,他们就是好用!

如果OpenZeppelin没有停止这方面支持的话,他们的SDK绝对会是前四名的框架。

总结

OpenZeppelin为了专注于升级插件而废弃的智能合约框架,否则将会是一款非常棒的JS框架。

技术方面:JavaScript、Web3.js和Ethers.js插件、OpenZeppelin可升级合约插件

区块链环境:本地、测试网、主网

含测试框架

维护:不积极

支持:不积极

开源

Etherlime

图片来源:Etherlime

Etherlime似乎是另一个没有得到积极开发、正逐渐失宠的JS框架。它与Infura的一个过时功能紧密结合,所以我们无法在Kovan上部署我们的智能合约。在以前,它似乎是一个非常强大的项目,而且貌似仍然可用于本地开发,但我不会把它放进TOP 3。

总结

不活跃的JS框架

技术方面:JavaScript、Ethers.js

区块链环境;本地、测试网、主网

含测试框架

维护:不积极

支持:不积极

开源

Paras

图片来源:Parasol

另一个不活跃的JS框架(超过两年没有新的提交),它有一些功能超级赞,比如parasol interact,还有一些集成,不难看出曾有一群很聪明的人为之付出过努力。但我还是找不到为了它而舍弃其他JS框架的理由。

总结

不活跃的JS 框架

技术方面:JavaScript、Web3.js

区块链环境:本地/Ganache、测试网、主网

含测试框架

维护:不积极

支持:不积极

开源

结语

智能合约和区块链世界的发展速度让人惊叹。一些两年前最热门的工具如今已经过时了,智能合约开发框架也不例外。很高兴能看到Truffle在这场竞争中拔得头筹,但更重要的是,我们看到许多项目都在采取不同的方法来解决问题。

如果你觉得还有什么遗珠推荐或者对这些框架有自己的看法,欢迎在评论中留言。让智能合约工程师尽可能快速、有效地开展工作是我们共同的目标。了解所有的工具将帮助我们更快地实现世界去中心化。希望本文对大家有所帮助!

*本文仅代表作者个人观点,不代表CSDN任何立场。

原文链接:

https://medium.com/better-programming/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd0

本文由CSDN翻译,转载请注明出处

本文来源:陀螺财经 文章作者:CSDN区块链大本营
收藏
举报
CSDN区块链大本营
累计发布内容554篇 累计总热度10万+

陀螺财经现已开放专栏入驻,详情请见入驻指南: https://www.tuoluocaijing.cn/article/detail-27547.html

CSDN区块链大本营专栏: https://www.tuoluocaijing.cn/columns/author340845/

本文网址: https://www.tuoluocaijing.cn/article/detail-10042151.html

免责声明:
1、本文版权归原作者所有,仅代表作者本人观点,不代表陀螺财经观点或立场。
2、如发现文章、图片等侵权行为,侵权责任将由作者本人承担。

相关文章