2021年最受欢迎的区块链开发者框架

智能合约开发框架,可以帮助工程师部署和测试智能合约,来他们的工作更加轻松。本文会介绍一下当下最好的开发工具。

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

原文链接

作者:Patrick Collins

翻译:团长

智能合约开发框架 可以帮助工程师部署和测试智能合约,来他们的工作更加轻松。我花了几个小时和几天的时间去看ConsenSysEthereum官方网站推荐的每一个框架,看看哪些框架是2021年最好的。你可以在GitHub上看到我对这些平台的实验

不仅如此,我还对区块链黑客马拉松的参与者进行了数百次采访,并翻阅了数百个黑客马拉松的投稿作品,寻找哪些工具性能最好,开发者体验最好。为了给我的2021年的开发工作做好准备,我自己也尝试使用每个框架,帮助大家做了很多艰苦的测试工作。

使用的标准很简单。框架需要满足:

  • 部署到本地区块链上
  • 有快速有效的测试
  • 使用ChainlinkKovan Testnet部署一个智能合约

第三个标准很重要,因为它可以让我了解测试框架如何与其他包和集成测试进行交互。与oracles和第三方工具(如OpenZeppelin)交互基本上是2021年的必备条件,这也是为什么最后一条如此重要。

我们将简要地提到一些新一年了你可能会用到的其他重要的工具,但本文不会介绍入门工具,如ETH钱包,以太坊客户端或文本编辑器。

https://youtu.be/motYF5daaOc


3大智能合约开发框架

归根结底,有三个智能合约开发框架,我会推荐给任何人。每一种都有略微不同的味道和你选择它的理由。它们分别是

  1. Hardhat (JavaScript)
  2. Truffle (JavaScript)
  3. Brownie (Python)

让我们了解一下它们每一个,了解为什么你想使用它,为什么它进入了TOP列表,以及其他值得注意的事情。

1. Hardhat

Hardhat是最好的框架之一,拥有最快的测试、最好的教程和最简单的集成方式。老实说,每个喜欢JS框架的人都应该在尝试一下Hardhat。它真的很容易上手,可以快速进行测试。Hardhat的Discord对问题的回复也一直很迅速,所以如果你遇到问题,你可以随时寻求帮助。Hardhat使用WaffleEthers.js进行测试,这是更好的JavaScript智能合约框架,由于比web3.js有一些非常好的改进。他们还可以直接集成OpenZeppelin的可升级智能合约插件,这是一个巨大的进步。

这个项目有一种很棒的感觉。它是干净的。它做你想要它做的事情。它的速度非常快。这个项目正在不断改进,他们显然致力于让智能合约开发者的生活更加轻松。

总结

  • ETH基金会资助的项目,更名之前叫做Builder
  • 技术方面:Javascript, Web3.js and Ethers.js 插件, OpenZeppelin 可升级智能合约插件, Etherscan 插件, blockchain forking.
  • 区块链环境:Hardhat运行时环境/本地,测试网,主网。
  • 有测试框架:Waffle
  • 维护:非常积极
  • 支持:积极
  • 开放源代码

2. Truffle

长久以来Truffle都是开发框架的默认选项,这是有原因的。它是一个强大的框架,为许多其他框架树立了标准。你会发现使用Truffle的项目最多,所以他的应用例子很容易找到。Truffle还可以很容易地与它的姐妹工具DrizzleGanache集成。特别是Ganache是工程师运行本地区块链的最受欢迎的方式之一。对于那些寻求更多工具的人来说,你可以付费升级到Truffle团队账户,以获得智能合约持续集成、可视化部署和监控的功能。他们还可以直接集成OpenZeppelin的可升级智能合约插件,这是一个巨大的进步。显然,Truffle拥有一群才华横溢的工程师,他们希望智能合约能够更加广泛地应用在这个世界上。

Truffle测试的运行速度没有Hardhat的快,而且由于用户量大,获得支持也很困难。我很期待看到他们被ConsenSys收购后如何改进这个项目。他们的文档似乎开始落后,可能很难根据,但如果你在谷歌上搜索一个你遇到的错误,你很可能会遇到一个曾经遇到错误并解决它的人。我发现一些改进项目的最好方法就是在他们的GitHub上留下问题。不管怎么说,让生态系统越来越强大,越来越好是我们开源的职责!

由于几乎所有开发者都很熟悉Truffle,得到同行的支持通常很容易。我真的希望看到团队可以更多地支持这个项目,因为他们有这么多用户。我希望他们看到这篇文章,并努力改进他们的文档,以便他们能够保持作为测试和部署智能合约的首选平台之一。

总结

  • 应用最广泛的平台;最近被ConsenSys收购(2020年11月)
  • 技术:Javascript, Web3.js, OpenZeppelin可升级合约插件, Etherscan插件, 区块链分叉
  • 区块链:Ganache/本地,测试网,主网
  • 测试框架
  • 维护:非常积极
  • 支持:积极
  • 开源,付费升级

3. Brownie

Brownie logo and wordmark

这个项目基本上相当于Truffle的Python版本,增加了一些基础改善。这个项目实际上是源于大多数Python工程师的挫折感:他们不喜欢JavaScript 。由于它是用Python编写的,所以去掉了很多使用JavaScript时的麻烦,你会得到这个奇妙的简单的框架来处理和部署智能合约。

作为一个热爱Python的人,我对这个项目的未来感到非常兴奋,随着采用率的提高,看起来越来越多的项目都在关注Python和这个框架来部署他们的智能合约。我已经开始使用Brownie作为我的常用框架,并且一直很喜欢它。我和一些从事这方面工作的人聊得比较多,他们是一个非常聪明的团体。Yearn.finance似乎是他们的粉丝。

如果你来自Python世界,或者想要一个真正简单、干净的框架,这是为你准备的。没有问题。

再来一个!我知道我只说了三个。我知道我只说了三个,但我认为下一个也值得放在这里。

总结

  • 最好的Python框架,被知名DeFi项目使用,比如yearn.finance
  • 技术方面:Python, Web3.py, 区块链分叉, 以太坊插件, Vyper支持
  • 区块链环境:Ganache/本地,测试网,主网
  • 含测试框架
  • 维护:非常积极
  • 支持:积极
  • 开源

4. Embark

image of rocket taking off

我很惊讶在GitHub上看到一个前三名之外的框架有这么多Star(3.1k)。这个工具有一大堆的花哨功能。我花了一点功夫才明白是怎么回事,这是因为Embark是要成为一个完整的dApp框架。Embark是一个全栈区块链平台。在从他们的Gitter得到帮助后,我能够将Chainlink合约部署到Kovan网络上(并在他们的GitHub上创建了一个问题;记住,(更多人参与是)开源的职责!)。Embark带有一个UI,允许你在GUI中与区块链和你的合约进行交互。Embark看起来有一点学习曲线,我没有花足够的时间来克服,但它显示出很大的承诺。这就是为什么我想把它包含在这里,因为我觉得有很多东西我没有完全消化。

我很想看到大家多尝试一下这个框架,看看它的力量。我觉得由于我花在这个项目上的时间有限,我可能无法在这里将它公正地表达出来。我确实认为将前端和后端解耦仍然是最好的做法,但是如果你需要用一个好的前端来开启一个项目,并且不关心解耦,那么你应该了解一下这个项目。

非常酷的项目,如果你喜欢Hardhat和Truffle,但又想集成全栈解决方案,那么会推荐大家去看看。

总结

  • 为前端开发提供了大量的花哨功能的JavaScript框架
  • 技术:JavaScript, Web3.js, 支持代理合约
  • 区块链环境:Ganache/本地,测试网,主网
  • 含测试框架
  • 维护:轻度活跃
  • 支持:积极
  • 开源

让我们暂停一下

现在,在我继续介绍上面的一些替代方案之前,我想先休息一下,并指出2021年的一些重要的非框架工具。

  • OpenZeppelin和升级插件
  • Etherscan/Block Explorer验证器
  • create-eth-app

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);
 }
}

重新发明轮子是没有意义的。OpenZeppelin是一个开源项目,帮助我们不必重新发明轮子。

OpenZeppelin的另一大块是他们的可升级合约功能。部署一个可升级合约项目,你需要部署一个代理合约,在你需要做改变时可以更新代码。这又是一个让人感觉很神奇、很优雅的实现方案。老实说,每个项目,无论你使用的是什么平台,可能都应该使用OpenZeppelin创建的工具。

Etherscan/block explorer验证器

Etherscan是最流行的区块浏览器。当人们想查看你部署的合约时,除非他们有ABI和合约地址,否则他们将无法查看。找到合约地址通常很容易,但要得到ABI就很难了。你会希望人们能够非常容易地看到你的智能合约并与之交互,所以你总是希望验证合约,以便其他人能够找到合约并与之交互。大多数框架都有某种验证插件,你可以部署一个智能合约,然后紧接着在Etherscan上验证它。一定要在你的应用中使用这个机制。

create-eth-app

拥有大量的后台智能合约是很好的,但如果没有人可以使用你的dApp,那就毫无价值。 create-eth-app是一个平台,它允许你使用ReactJS为你的智能合约开发一个前端。它使用了很多较新的React技巧,比如状态钩子(state Hooks),让构建强大的前端变得更容易。


2021年的一些Amazing的入门工具

Scaffold-ETH eth.build Remix One Click dApp

我不打算在这里说这些做什么,但如果你是新来的,就看看这些吧!


替代框架

以下的这些框架都还不错,可能对你有用。他们中的一些确实有一些非常酷的想法值得我们借鉴。这些都是可能需要更多探索时间的工具。

  • Waffle (JS)
  • Dapp.Tools (Haskell/CLI)
  • SBT (Scala/CLI)
  • Epirus (Java)

Waffle

screenshot from the Waffle website showing the words “Sweet tools for smart contract testing” and an image of a waffle

Waffle本身也可以作为一个部署框架使用,不过你要多写很多自己的自定义脚本。它自称为智能合约框架,虽然把它和其他知名框架对比感觉有点傻。Waffle可以与任何你喜欢的框架一起使用,目前是Hardhat的默认工具。

如果你想要一个框架所能提供的所有好的功能,我不建议单独使用它,但如果你想用一个更原始、简单、可定制的框架来工作,倒是很合适。

总结

  • 专注于测试的轻量级JavaScript框架
  • 技术:JavaScript, Ethers. js
  • 区块链环境:几乎所有
  • 集成测试
  • 维护:非常积极
  • 支持:积极
  • 开源

Dapp.Tools

screenshot from the Dapp.Tools website

Dapp.Tools是MakerDAO使用的,让我很惊讶。它是用Haskell编写的,但支持很多我们常见的插件,比如OpenZeppelin。它看起来是一个最小化的框架,功能足够强大,足够完成开发工作。我能够在部署我的合约时得到这个平台的帮助,并且对它的干净和简单感到惊讶。如果你正在寻找一个极简主义的命令行友好框架,那么我也推荐你看看这个。

总结

  • MakerDAO使用的Haskell开发框架
  • 技术:Haskell/CLI
  • 区块链环境: Local/Ganache, testnets, mainnet
  • 含测试框架
  • 维护:积极
  • 支持:积极
  • 开源

Epirus

screenshot from the Epirus website

尽管我说它是 "Truffle-like",但Epirus在风格上完全不像Truffle,而是在商业运营上。Epirus有一个开源项目,也有付费的升级工具,提供更进一步的支持。他们使用的是Java的Web3实现,看起来项目的开发还处于早期。我很高兴看到他们有Android支持,所以我真的很好奇这个项目的进展。我们可以让更多的Java工程师进入这个行业,因为Java智能合约平台并不多。

我没能部署到Kovan上,因为它不支持,只对Rinkeby有支持。无论如何,我很高兴看到这个项目的进展。

总结

  • 一个Truffle-like的java版实现
  • 技术:Java
  • 区块链环境: Ganache/local, testnets (not Kovan)
  • 含测试框架
  • 维护:积极
  • 支持:不是非常积极
  • 开源,付费升级

SBT

screenshot from the SBT website

SBT是我玩过的比较有意思的项目之一,它专注于与智能合约的交互,几乎只用命令行,或者用Scala。我的Scala经验几乎为零,所以我没有一个很好的立场来评论这个平台。如果你懂Scala,并且想进入Ethereum,它似乎会非常酷。

总结

  • 基于命令行的Scala项目。适用于从事智能合约的爱好者和智能合约工程师。
  • 技术:Scala
  • 区块链环境:本地/Ganache, 测试网, 主网
  • 含测试框架
  • 维护:一般积极
  • 支持:不积极
  • 开源

过时框架

你会看到这些时常出现的。我相信他们刚出来的时候是很好的,但是目前他们要么不再支持,要么不活跃。应该在工作中避免使用这些,减少自己的麻烦。

  • OpenZeppelin CLI/SDK (JS)
  • Etherlime (JS)
  • Parasol (JS)
  • Cobra (PY)

OpenZeppelin SDK

screenshot from the OpenZeppelin website

现在我明白为什么这个项目停止了--作为同一个团队,他们想把精力放在可升级的智能合约这个难点问题上--但说实话,这有点可惜。这个项目实在是太优雅了。我能够部署我的Chainlinked智能合约,并读取ETH的价格,比使用几乎任何其他框架都要快。它还有一些非常好的CLI选项,当然Epirus和Hardhat也有。它还内置了可升级的选项,这是一个非常棒的项目。

我不建议使用这个,因为官方不支持它了,但这是我使用智能合约框架的最佳开发者体验之一。我希望能够有人继续维护这个项目的闪光点。我在上面说每个人都应该使用OpenZeppelin工具是有原因的。它们就是好用。

如果OpenZeppelin没有停止在对其的支持,他们的SDK将是一个前四名的框架。

总结

OpenZeppelin为了专注于升级插件的开发而废弃智能合约框架。非常整洁的JS框架

  • 技术:JavaScript,Web3.js和Ethers.js插件,OpenZeppelin可升级合约插件
  • 区块链环境:本地网、试验网、主网
  • 含测试框架
  • 维护:不活动
  • 支持:不活跃
  • 开源

Etherlime

screenshot from the Etherlime website

Etherlime似乎是另一个正在失宠的JS框架,并没有被积极开发。它与Infura的一个过时功能紧密结合,所以我们无法在Kovan上部署我们的智能合约。以前的时候Etherlime似乎是一个非常强大的项目,而且看起来它仍然可以用于本地开发,但我不会推荐它到前三名。

总结

  • 不活跃的JS框架
  • 技术:JavaScript, Ethers.js
  • 区块链环境:本地、测试网、主网
  • 含测试框架
  • 维护:不活动
  • 支持:不活跃
  • 开源

Parasol

two-year-old Reddit post stating that the Parasol thread is now archived

另一个不活跃的JS框架(超过两年没有新的提交)。它有一些很酷的功能,比如parasol interact,还有一些集成,能看到一些聪明的人曾为之付出努力,但我看不到使用这个平台而不是其他JS框架的理由。

总结

  • 不活跃的JS框架
  • 技术:JavaScript, Web3.js
  • 区块链环境:本地/Ganache,测试网,主网
  • 含测试框架
  • 维护:不活动
  • 支持:不活跃
  • 开源

最后总结

智能合约和区块链世界的发展速度很快。一些两年前最热门的工具已经是过时了,智能合约开发框架也不例外。看到Truffle保持在汗液的顶端是很酷的,但更伟大的是,这么多项目已经采取了不同的方法来解决这个问题。

如果你认为我漏掉了一个或者弄错了,或者你有一些其他的想法,欢迎留言或者联系我。我的想法是让智能合约工程师能够尽可能快速有效地开始工作。阐明所有的工具将让我们更快地达到世界去中心化的那一天。希望对大家有所帮助!

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-01-15 16:50
  • 阅读 ( 490 )
  • 学分 ( 139 )
  • 分类:智能合约

0 条评论

请先 登录 后评论
Shannon
Shannon

3 篇文章, 277 学分