17

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

 3 years ago
source link: https://learnblockchain.cn/article/2013
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
2021年最受欢迎的区块链开发者框架 | 登链社区 | 深入浅出区块链技术

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

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

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

原文链接

作者:Patrick Collins

翻译:团长

20210115170042.png

智能合约开发框架 可以帮助工程师部署和测试智能合约,来他们的工作更加轻松。我花了几个小时和几天的时间去看 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

20210115170048.png

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

20210115170052.png

长久以来 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)
  • 含测试框架
  • 维护:积极
  • 支持:不是非常积极
  • 开源,付费升级

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 保持在汗液的顶端是很酷的,但更伟大的是,这么多项目已经采取了不同的方法来解决这个问题。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK