写点什么

数百次采访后,我总结了 2021 年最好用的区块链开发框架

2021 年 3 月 23 日

数百次采访后,我总结了2021年最好用的区块链开发框架

本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。


智能合约开发框架让工程师可以部署和测试他们的智能合约,简化他们的开发工作。我花了很多天时间来了解 ConsenSys 和 Ethereum 网站上推荐的每一个框架,想看看哪些框架是 2021 年最好用的。你可以在 GitHub 上看到我对这些平台的实验


不仅如此,我还对区块链黑客马拉松参与者做了几百次采访,并查阅了几百个黑客马拉松提交,想要找出哪些工具是性能最好、开发体验最出色的。我自己也使用这些框架做了很多工作,想为 2021 年做好准备。我为大家做好了这期 2021 年优秀框架评选,这样你就不用陷入选择困难症了。


本文采用的标准很简单。评选的框架需要:


  • 部署到一个本地区块链

  • 进行快速有效的测试

  • 使用 Chainlink 将一个智能合约部署到KovanTestnet


第三个标准很重要,因为它让我得以测试框架如何与其他软件包交互和集成测试交互。从 2021 年开始,搭配oracles和 OpenZeppelin 等第三方工具已经成了一项基本需求,所以最后一项标准就非常重要了。


我们将简要介绍其他一些 2021 年你需要了解的重要工具,但本文不会涉及初学者工具,例如 ETH 钱包、以太坊客户端或文本编辑器。


视频简介:https://youtu.be/motYF5daaOc

Top 4 智能合约开发框架

总的来说,我将向所有人推荐三个智能合约开发框架。每种框架的风味都稍有不同,选择它们的理由也略有差异。它们分别是:


  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

  • 维护:非常活跃

  • 支持:活跃

  • 开源


  1. Truffle


Truffle 几年来一直是开发人员的首选框架,这是有充分理由的。它是一个强大的框架,为其他跟随者树立了标准。你会很容易找到一大堆项目都在使用这个平台,因此示例查找起来很容易。Truffle 也可以很容易地与它的姊妹工具Drizzle 集成在一起。特别是 Ganache,它是工程师运行本地区块链的最流行方法之一。如果你需要更多工具,你可以花钱购买升级版的 Truffle 团队帐户,获得智能合约的持续集成、可视化部署和监视功能。他们还可以与 OpenZeppelin 的可升级智能合约插件直接集成,这是一个很大的优势。他们显然是一群有才华的工程师,都想要为智能合约创造一个更美好的世界。


Truffle 测试的运行速度不如 Hardhat 那样快,并且由于前者的用户数量众多,支持获取起来可能会很困难。自从 Truffle 被 ConsenSys 收购以来,我很期待看到他们将如何改善这个项目。他们的文档质量似乎开始下降,读起来可能会磕磕绊绊,但是如果你用谷歌搜索一下自己遇到的错误,很可能会找到曾经遇到这个错误并已解决它的例子。我发现改善项目的最佳方法之一就是在他们的 GitHub 上留一个问题。无论如何,让生态系统不断壮大是我们开源社区的职责!


因为几乎所有人都很熟悉它,因此获得同行支持通常会很容易。我真的希望看到开发团队在这个项目上获得更多支持,毕竟他们有这么多的用户。我希望他们能看到本文并能努力改善项目文档,让它能继续作为测试和部署智能合约的首选平台之一。

小结

  • 使用最广泛的平台;最近被 ConsenSys 收购(2020 年 11 月)

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

  • 区块链:Ganache/本地,测试网,主网

  • 有测试

  • 维护:非常活跃

  • 支持:活跃

  • 具有付费升级功能的开源项目


  1. Brownie


Brownie 很大程度上受到了 Truffle 的启发,前者基本上是后者的 Python 等效版本,并增加了一些体验改进。这个项目起源于大多数 Python 工程师都同样拥有的困惑:他们不喜欢 JavaScript。由于它是用 Python 编写的,因此避免了使用 JavaScript 带来的许多麻烦,并为大家带来了一个简单优秀的框架来处理和部署智能合约。


我自己就很喜欢 Python,因此对这个项目的未来感到非常兴奋,随着采用率的提高,越来越多的项目正在使用 Python 和这个框架来部署他们的智能合约。我已经将 Brownie 用作了我的入门框架,用下来感觉非常不错。我还同一些用它做更多事情的开发人员做过交流,他们真的非常优秀。Yearn.finance 似乎也已经用上了这个框架。


如果你来自 Python 开发世界,或者想要一个非常简单、干净的框架,那么这一款就是为你而生的,毫无疑问。


还有一个框架!我知道我只提到了三个,但我认为下面的框架也应该在这里占据一席之地。

小结

  • 最好的 Python 框架,由 Yearn.finance 等 DeFi 项目使用。

  • 技术:Python,Web3.py,区块链分叉,Etherscan 插件,Vyper 支持

  • 区块链:Ganache/本地,测试网,主网

  • 有测试

  • 维护:非常活跃

  • 支持:活跃

  • 开源


  1. Embark


我很惊讶能排名前三以外的框架能在 GitHub 上有这么多星(3.1k)。这款工具花样很多。我花了一些工夫才搞清楚它到底是怎么回事,但这是因为 Embark 旨在成为一个完整的 dApp 框架。这是一个全栈的区块链平台。在他们 Gitter 的一些帮助下(以及在他们 GitHub 上创建的一个问题;请记住,开源社区责任!),我得以将自己的 Chainlink 合约部署到 Kovan 网络。它带有一个 UI,这样你就可以在 GUI 中与区块链和合约交互。看来它有一段学习曲线,我没有花足够的时间来克服障碍,但能看出它的潜力很大。这就是为什么我想把它放在这里的原因所在,因为我觉得自己还有很多东西没能完全消化。


我希望看到有更多人能尝试这个框架并意识到它的能力。由于我在该项目上花费的时间有限,所以我觉得自己可能无法做到公正评价。我确实认为,将前端与后端解耦仍然是最佳实践,但是如果你需要开始一个具有良好前端的项目并且不关心解耦需求,那么你绝对应该尝试这个项目。


这个项目很酷,如果有人喜欢 Hardhat 和 Truffle,但又想集成一个全栈解决方案,我会首先推荐它。

小结

  • 用于前端开发的,具有大量功能的 JavaScript 框架

  • 技术:JavaScript,Web3.js,代理合约支持

  • 区块链:Ganache/本地,测试网,主网

  • 有测试

  • 维护:轻度活跃

  • 支持:活跃

  • 开源

我们暂停一下

继续介绍上述框架的替代选项之前,我想暂停一下,先来介绍一些 2021 年重要的非框架工具。


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 技术(例如状态 Hooks),并让开发人员可以很容易地构建真正强大的前端。

2021 年的一些出色的初学者工具

Scaffold- ETH(https://github.com/austintgriffith/scaffold-eth


eth.build(https://eth.build/


Remix(https://remix.ethereum.org/


OneClick dApp(https://oneclickdapp.com/


我不会在这里介绍它们的详细情况,但如果你是这个领域的新手,用它们就对了!

其他框架选项

剩下的这些框架也都很不错,并且可能更适合你的需求。它们中的一些确实对智能合约框架中应该放什么内容有一些非常酷的想法,我希望前三名选手能够注意到其中一些很棒的理念。这些工具可能需要更多的探索时间。


  • 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

  • 区块链:本地/Ganache,测试网,主网

  • 有测试

  • 维护:活跃

  • 支持:活跃

  • 开源

Epirus


虽然我说过它是“类 Truffle”框架,但Epirus的风格也不是完全像 Truffle,只是在商业层面比较相似。他们有一个开源项目,但还有一个付费的升级工具,供想要用它做更多事情的用户选择。他们使用 Java 的 Web3 实现,而且看起来仍处于项目开发的早期阶段。我很高兴看到他们提供了对 Android 的支持,因此我很想知道这个项目的进展情况。由于 Java 智能合约平台不多,因此它可以吸引更多的 Java 工程师进入这一行业。


我无法用它部署到 Kovan,因为它不受支持,但看起来他们已经支持Rinkeby了。无论如何,我很高兴看到这个项目能顺利推进。

小结

  • 类似于 Truffle 的 Java 实现

  • 技术:Java

  • 区块链:Ganache/本地,测试网(不是 Kovan)

  • 有测试

  • 维护:活跃

  • 支持:不是很活跃

  • 具有付费升级功能的开源项目

SBT


这是我玩过的一个很有趣的项目,SBT的特色是几乎完全从命令行或使用 Scala 与智能合约交互。我的 Scala 经验几乎为零,因此没有足够的背景知识来评估这个平台。如果你了解 Scala 并想要踏入以太坊世界,这款工具可能真的是很酷的选项。

小结

  • 同时满足命令行与 Scala 的开发需求。适用于智能合约爱好者和工程师。

  • 技术:Scala

  • 区块链:本地/Ganache,测试网,主网

  • 有测试

  • 维护:轻度活跃

  • 支持:不活跃

  • 开源

过时的框架

你经常会见到这些框架的身影。我敢肯定它们问世时都是很棒的工具,但是到了今天,它们不再获得支持或处于非活跃状态。下面的这些框架不值得你浪费精力去了解和尝试。


  • OpenZeppelinCLI/SDK(JS)

  • Etherlime(JS)

  • Parasol(JS)

  • Cobra(PY)

OpenZeppelin SDK


现在,我明白为什么这个项目停止为此工作了——作为一个团队,他们希望专注于可升级智能合约这一棘手的问题——但说实话这挺遗憾的。这个项目相当干净。我可以部署我的 Chainlinked 智能合约,并能比几乎其他所有框架更快地读取 ETH 的价格。它还有一些非常不错的 CLI 选项,就像 Epirus 和 Hardhat 一样。它还内置了可升级的选项,其他平台很少有这种设计,所以这是很大的优点。


我不建议使用这个框架,因为他们不会再支持它了。但这是我使用智能合约框架获得的最佳开发体验之一。我希望前三名选手能够从中汲取一些令这个项目与众不同的灵感。我上面说过,每个人都应该使用 OpenZeppelin 工具是有原因的。他们就是很好用。


如果他们不停止这个项目,那么他们的 SDK 很容易成为前四名的框架。

小结

  • OpenZeppelin 弃用的智能合约框架。他们弃用它是为了将重点放在升级插件上。不管怎样,它真的是很干净的 JS 框架。

  • 技术:JavaScript,Web3.js 和 Ethers.js 插件,OpenZeppelin 可升级合约插件

  • 区块链:本地,测试网,主网

  • 有测试

  • 维护:不活跃

  • 支持:不活跃

  • 开源

Etherlime


Etherlime 似乎是另一个不受青睐且未积极开展工作的 JS 框架。它与 Infura 的一项过时特性紧密耦合,因此我们无法在 Kovan 上部署智能合约。它活跃的时候看来是一个非常强大的项目,而且似乎仍然可以在本地开发中使用,但是我不建议用它替代前三个选项。

小结

  • 不活跃的 JS 框架

  • 技术:JavaScript,Ethers.js

  • 区块链:本地,测试网,主网

  • 有测试

  • 维护:不活跃

  • 支持:不活跃

  • 开源

Parasol


另一个不活跃的 JS 框架(超过两年没有一项提交)。它有一些很酷的功能,例如 parasol interact 和一些集成,而且显然曾有一些很聪明的人在从事这项工作,但是我认为没有理由用它代替其他任何 JS 框架了。

小结

  • 不活跃的 JS 框架

  • 技术:JavaScript,Web3.js

  • 区块链:本地/Ganache,测试网,主网

  • 有测试

  • 维护:不活跃

  • 支持:不活跃

  • 开源


如果你觉得我错过了什么框架或在哪里弄错了,或者你有其他想法,请随时发表评论或联系我。本文的想法是让智能合约工程师能够尽快高效地入门。掌握所有这些工具将使我们能够更快地实现去中心化的世界。希望这对你能有所帮助!


原文链接:


https://betterprogramming.pub/the-top-blockchain-developer-frameworks-for-2021-89afa5e7bd04

2021 年 3 月 23 日 10:402947

评论 1 条评论

发布
用户头像

性能最好、开发体验最出色的

2021 年 03 月 23 日 12:48
回复
没有更多了
发现更多内容

《深度工作》学习笔记(3)

石云升

学习 深度工作 工作哲学

微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!网友:看到 955 不加班的公司名单,我酸了

程序员生活志

加班 程序员生活 996

华为云GaussDB(DWS)内存知识点,你知道吗?

华为云开发者社区

数据库 数据 大数据处理 内存 华为云

智能膜切机,解决手机贴膜行业难题

Geek_116789

授人以渔:stm32资料查询技巧

华为云开发者社区

架构 armv8 芯片 华为云 二进制

<<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料

阿宝哥

前端 前端进阶 前端教程

计算机网络基础(十一)---网络层-OSPF协议

书旅

计算机网络 网络 协议栈 OSPF

手写一个重入锁

诸葛小猿

synchronized CAS 重入锁 compareAndSwap ReentrantLock

系统设计系列之如何设计一个短链服务

看山

架构 面试 分布式 架构设计 短链服务

数据人必须知道的SQL概念(A—Z)

大唐小生

sql 数据 职场成长

初识分布式:MIT 6.284系列(一)

Kerwin

分布式 MIT 28天写作

什么?不写代码也能做功能开发! -RUOYI 教程二

Java_若依框架教程

Java 无代码开发 若依

实用!一键生成数据库文档,堪称数据库界的Swagger

程序员内点事

Java MySQL

基于 Golang的侵入式 Opentracing实现全链路追踪 ----实践篇

是老郭啊

技术管理者带团队的几个实用技巧

Phoenix

团队管理 企业文化 团队 价值观

你问我答:微服务治理应该如何去做?

博云技术社区

微服务 PaaS API 容器云 博云

第九周

hdhdh

飞天茅台超卖事故:Redis分布式锁请慎用!

程序员生活志

redis 分布式

云小课 | IPv4枯了,IPv6来了

华为云开发者社区

IP 公有云 虚拟私有云 华为云 虚拟化

在人工智能时代追逐的“后浪”

华为云开发者社区

AI 开发者 技术社区 程序员成长 华为云

秒杀系统问题与方案设计

superman

秒杀 架构总结

将信将疑,将中台进行到底

郭华

数据库系统设计概述

码哥字节

数据库 redis mongodb elasticsearch 数据库设计

老哥,您看我这篇Java集合,还有机会评优吗?

cxuan

Java 后端

Newbe.Claptrap 框架如何实现多级生命周期控制?

newbe36524

架构 微服务 微服务架构 .net core ASP.NET Core

架构师第九周作业

傻傻的帅

架构师 课程作业

JVM系列之:JIT中的Virtual Call

程序那些事

Java JVM JIT

财务分析与主要的模型

松子(李博源)

Vue中使用装饰器,我是认真的

前端有的玩

Java Vue 装饰器

架构师训练营第八章-作业1

A Matt

英特尔®AI计算盒参考设计发布 加速智能边缘崛起

最新动态

Hummer 轻量级跨端技术框架详解及实战

Hummer 轻量级跨端技术框架详解及实战

数百次采访后,我总结了2021年最好用的区块链开发框架-InfoQ