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

本文原载于Medium网站,经原作者授权,由InfoQ中文网翻译分享。


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


不仅如此,我还对区块链黑客马拉松参与者进行了数百次采访,并查阅了数百份黑客马拉松提交的材料,以了解哪些工具具有最佳性能和最佳开发体验。我自己用这些框架做了很多工作,我想为2021年做准备。我给大家做了这个2021优秀框架评选,让你不必陷入选择的困境。


本文采用的标准非常简单。选择框架需要:


  • 部署到本地区块链
  • 快速有效地测试。
  • 使用Chainlink将智能合同部署到KovanTestnet。

  • 第三个标准很重要,因为它允许我测试框架如何与其他软件包交互,并集成测试交互。从2021年开始,与oracles、OpenZeppelin等第三方工具的匹配成为基本要求,所以最后一个标准非常重要。


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

    区块链需要的技术


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

    Top 4 智能合约开发框架

    总的来说,我会给大家推荐三个智能合约开发框架。每一帧的风味都略有不同,选择它们的理由也略有不同。它们是:


  • 安全帽(JavaScript)
  • 块菌(JavaScript)
  • 布朗尼(蟒蛇)

  • 让我们深入研究一下这些框架,谈谈你为什么使用它们,为什么它们会在列表的顶部,以及其他值得注意的地方。


  • 建筑工人

  • Hardhat是目前最好的框架之一,测试最快,教程最好,竞品中集成最简单。老实说,喜欢JS框架的人迟早要去尝试Hardhat。真的很好用,测试快,上手容易。他们的不和一直是很快的回答各种问题,所以如果你遇到什么问题,寻求帮助总是很容易的。他们使用Waffle和Ethers.js进行测试,这可以说是一个更好的JavaScript智能合约框架,因为他们与web3.js相比做了一些非常好的改进,他们还可以直接与OpenZeppelin的可扩展智能合约插件集成,这是一个很大的加分点。


    这个项目给人的感觉很棒:很干净。它可以执行你想要的操作。真的很快。这个项目在不断完善。显然,开发团队正在努力让智能合约开发人员的生活更轻松。

    小结
  • ETH基金会资助的项目,以前的建设者
  • 技术:Javascript,Web3.js和Ethers.js插件,OpenZeppelin可升级合约插件,Etherscan插件,区块链叉。
  • 区块链:Hardhat运行时环境/本地、测试网络、主网络
  • 是的:华夫饼
  • 维护:非常活跃
  • 支持:主动
  • 源代码开放的

  • 松露

  • 几年来,Truffle一直是开发人员的首选框架,理由很充分。这是一个强大的框架,为其他追随者树立了一个标准。使用这个平台你可以很容易地找到很多项目,所以例子很容易找到。松露也可以很容易地与它的姐妹工具毛毛雨集成。尤其是Ganache,它是工程师管理本地区块链最流行的方法之一。如果需要更多工具,可以花钱购买升级的松露团队账号,获得智能合约持续集成、可视化部署、监控等功能。它们还可以直接与OpenZeppelin的可扩展智能合约插件集成,这是一个很大的优势。他们显然是一群有才华的工程师,他们都想为智能合约创造一个更好的世界。


    Truffle test的运行速度没有Hardhat快,而且由于前者用户量大,可能很难得到支持。由于松露被ConsenSys收购,我很期待看到他们将如何改进这个项目。他们的文档质量似乎开始下降,读起来可能会很别扭,但如果你用谷歌搜索你遇到的错误,你很可能会找到一个遇到过这个错误并解决了它的例子。我发现改进项目的最好方法之一就是在他们的GitHub上留个问题。无论如何,让生态系统成长是我们开源社区的职责!


    因为几乎每个人都很熟悉,所以通常很容易得到同行的支持。我很想看到开发团队在这个项目上得到更多的支持,毕竟他们有那么多用户。我希望他们能够阅读这篇文章,并努力改进项目文档,以便它能够继续成为测试和部署智能合约的首选平台之一。

    小结
  • 使用最广泛的平台;最近被ConsenSys收购(2020年11月)
  • 技术:Javascript、Web3.js、OpenZeppelin可升级合约插件、Etherscan插件、区块链分叉
  • 区块链:Ganache/ local,测试网络,主网络
  • 有测试。
  • 维护:非常活跃
  • 支持:主动
  • 具有付费升级功能的开源项目

  • 布朗尼

  • 布朗尼受到了松露的极大启发,前者基本上是后者的Python等价物,并增加了一些体验改进。这个项目起源于大多数Python工程师都有的困惑:他们不喜欢JavaScript。因为是用Python写的,避免了很多使用JavaScript带来的麻烦,为智能合约的处理和部署带来了一个简单优秀的框架。


    我非常喜欢Python,所以我对这个项目的未来感到非常兴奋。随着采用率的提高,越来越多的项目使用Python和这个框架来部署他们的智能合约。我用过Brownie作为我的入门框架,用起来感觉非常好。我也和一些用它做更多事情的开发者聊过。他们真的很棒。Yearn.finance好像已经用上了这个框架。


    如果你来自Python开发世界,或者想要一个非常简单干净的框架,那么这一个无疑是适合你的。


    还有一帧!我知道我只提到了三个,但是我觉得下面这个框架在这里也应该占有一席之地。

    小结
  • 最好的Python框架,由DeFi项目使用,如Yearn.finance
  • 技术:Python,Web3.py,区块链分叉,以太扫描插件,Vyper支持
  • 区块链:Ganache/ local,测试网络,主网络
  • 有测试。
  • 维护:非常活跃
  • 支持:主动
  • 源代码开放的

  • 从事

  • 我很惊讶GitHub上有那么多星(3.1k)是为了不在前三的帧。这个工具有很多窍门。我花了一些时间才弄清楚它到底是什么,但这是因为Embark的目标是成为一个完整的dApp框架。这是一个全栈区块链平台。在Gitter的帮助下(以及在GitHub上创建的一个问题;记住,开源社区的责任!),我能够将我的Chainlink合同部署到Kovan网络。它附带了一个用户界面,以便您可以在GUI中与区块链和合同进行交互。似乎它有一个学习曲线。我没有花足够的时间来克服障碍,但我可以看到它有很大的潜力。这也是我为什么要放在这里的原因,因为我觉得我还有很多东西要消化。


    我希望看到更多的人尝试这个框架,并认识到它的能力。由于我花在这个项目上的时间有限,我觉得我可能无法做出公正的评价。我真的认为前端和后端解耦仍然是最好的做法,但是如果你需要用一个好的前端来启动一个项目,并且不在乎解耦的要求,那么你绝对应该尝试这个项目。


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

    小结
  • JavaScript前端开发框架,功能丰富
  • 技术:JavaScript、Web3.js、代理合同支持
  • 区块链:Ganache/ local,测试网络,主网络
  • 有测试。
  • 维护:轻度活跃
  • 支持:主动
  • 源代码开放的
  • 我们暂停一下

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


  • OpenZeppelin和升级插件(https://openzeppelin.com/contracts/)
  • 以太扫描/BlockExplorer验证器(https://etherscan.io/)
  • 创建eth应用程序(https://github.com/paulrberg/create-eth-app)
  • OpenZeppelin 和升级插件

    OpenZeppelin是一个可以为智能合同工程师创建有用工具的平台。他们有一些默认选项,如ERC20和ERC721工具,您可以在几秒钟内导入他们的合同并创建一个令牌。了解使用OpenZeppelin制作ERC20有多简单:


    ^0.6.0实用主义; 导入“@ open zeppelin/contracts/token/er C20/er C20 . sol”; contract GLDToken是er C20 { constructor(uint 256 initial supply)public er C20("黄金"、" GLD") { _mint(msg.sender,initial supply); } } 复制代码


    没有必要重新发明轮子。OpenZeppelin是一个开源项目,主要目的是让大家省下重新构建轮子的力气。OpenZeppelin的另一个重要特性是其可伸缩的契约功能。部署一个实际的项目意味着您必须部署一个代理合同,每当您想要进行任何更改时,都需要更新该合同。这又是一个优秀干净的项目。老实说,对于每一个项目,不管你用什么平台,迟早都会用到OpenZeppelin创造的内容。

    Etherscan/Block Explorer 验证器

    以太扫描是最流行的块浏览器。当人们想检查你的合同和你部署了什么,他们不能检查,除非他们有ABI和合同地址。通常很容易找到合同地址,但很难得到ABI。你肯定是想让别人方便的查看你的智能合约并与之互动,所以你需要随时验证,这样别人才能做到。大多数框架都有某种验证插件,可以在其中部署智能合约,然后立即在Etherscan上进行验证。请确保在您的应用程序中使用它。

    create-eth-app

    有很多后端智能合约固然很好,但是如果没有人能用你的dApp,这些合约就一文不值了。Create-eth-app是一个平台,允许您使用ReactJS向您的智能合约添加前端。它使用了许多最新的React技术(比如状态挂钩),让开发人员可以轻松构建真正强大的前端。

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

    脚手架-ETH(https://github.com/austintgriffith/scaffold-eth)


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


    混音(https://remix.ethereum.org/)


    one click dApp(https://oneclickdapp.com/)


    这里就不详细介绍了,不过如果你是这个领域的新手,就用吧!

    其他框架选项

    剩下的这些框架也很好,可能更适合你的需求。他们中的一些人确实有一些关于应该在智能合同框架中放入什么的很酷的想法,我希望前三名球员可以注意到一些很棒的想法。这些工具可能需要更多的探索时间。


  • 华夫饼干
  • 戴普。工具(Haskell/CLI)
  • SBT(Scala/CLI)
  • 伊庇鲁斯语(Java)
  • Waffle




    Waffle本身可以作为部署框架,但是你需要编写更多的自定义脚本。虽然把它和其他框架相比是很愚蠢的,但这里还是把它列为智能合约框架。Waffle可以和你喜欢的任何框架一起使用,它是目前和Hardhat一起使用的默认工具。


    如果你希望框架提供所有好的功能,那么我不建议单独使用。但是如果你想用一个更原始、更简单、可定制的框架,那么你选择它就不会错。

    小结
  • 轻量级JavaScript框架,侧重于测试
  • 技术:JavaScript,Ethers.js
  • 区块链:你运行的一切
  • 有测试。
  • 维护:非常活跃
  • 支持:主动
  • 源代码开放的
  • Dapp.Tools




    MakerDAO用的是Dapp。工具,这让我很惊讶。它是用Haskell写的,但是支持很多我们喜欢并且常用的插件,比如OpenZeppelin。看起来像极简框架,但功能强大到可以做自己想做的事情。我可以在这个平台上找到关于部署合同的帮助,它的简单性也令人印象深刻。如果你正在寻找一个命令行友好的极简框架,那么我建议你也看看这个。

    小结
  • DAO使用的Haskell简单框架
  • 技术:Haskell/CLI
  • 区块链:本地/Ganache、测试网络、主网络
  • 有测试。
  • 维护:活动
  • 支持:主动
  • 源代码开放的
  • Epirus




    虽然我说是类似松露的框架,但是Epirus的风格并不完全像松露,在业务上是类似的。他们有一个开源项目,但他们也有一个付费的升级工具,供那些想用它做更多事情的用户使用。他们用的是Java的Web3实现,好像还在项目开发的早期。我很高兴看到他们已经提供了对Android的支持,所以我想知道这个项目的进展。因为Java智能合约平台不多,可以吸引更多的Java工程师进入这个行业。


    因为不支持,所以不能部署到Kovan,不过好像他们已经支持Rinkeby了。无论如何,我很高兴看到这个项目能够顺利进行。

    小结
  • 类似于Truffle的Java实现
  • 技术:Java
  • 区块链:Ganache/ local,测试网(不是Kovan)
  • 有测试。
  • 维护:活动
  • 支持:不太积极。
  • 具有付费升级功能的开源项目
  • SBT




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

    小结
  • 同时满足命令行和Scala的开发需求。适合智能合约爱好者和工程师。
  • 技术:Scala
  • 区块链:本地/Ganache、测试网络、主网络
  • 有测试。
  • 维护:轻度活跃
  • 支持:无效
  • 源代码开放的
  • 过时的框架

    你经常看到这些框架。我确信它们问世时是很棒的工具,但是今天,它们不再受支持或者不活动了。以下框架不值得你浪费精力去理解和尝试。


  • OpenZeppelinCLI/SDK(JS)
  • 乙醚石灰
  • 阳伞
  • 眼镜蛇(PY)
  • OpenZeppelin SDK




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


    我不推荐使用这个框架,因为他们不会再支持它了。但这是我使用智能合约框架的最佳开发体验之一。希望前三名选手能从中汲取一些让这个项目与众不同的灵感。正如我上面所说,每个人都应该使用OpenZeppelin工具是有原因的。它们只是容易使用。


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

    小结
  • OpenZeppelin已弃用智能合同框架。他们放弃了it,转而专注于升级插件。反正真的是干净的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://better programming . pub/the-top-区块链-开发者-框架-for-2021-89afa5e7bd04

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友