本文原载于Medium网站,经原作者授权,由InfoQ中文网翻译分享。
智能合同开发框架允许工程师部署和测试他们的智能合同,这简化了他们的开发工作。我花了很多天去了解ConsenSys和以太坊网站上推荐的每一个框架,想看看2021年哪些框架最好用。你可以在GitHub上看到我在这些平台上的实验。
不仅如此,我还采访了数百名区块链黑客马拉松参与者,并查阅了数百份黑客马拉松提交的材料,以了解哪些工具具有最佳性能和最佳开发体验。我自己用这些框架做了很多工作,我想为2021年做好准备。我给大家做了这个2021优秀框架评选,让你不必陷入选择的困境。
本文采用的标准非常简单。选择框架需要:
部署到本地区块链进行快速有效的测试。使用Chainlink将智能合同部署到KovanTestnet。
第三个标准很重要,因为它允许我测试框架如何与其他软件包交互,并集成测试交互。从2021年开始,与oracles、OpenZeppelin等第三方工具的匹配成为基本要求,所以最后一个标准非常重要。
我们将简要介绍2021年你需要了解的一些其他重要工具,但本文不会涉及初学者工具,如ETH wallet、以太坊客户端或文本编辑器。
视频介绍:https://youtu.be/motYF5daaOc
顶级智能合约开发框架总的来说,我会给大家推荐三个智能合约开发框架。每一帧的风味都略有不同,选择它们的理由也略有不同。它们是:
Hardhat(JavaScript)松露(JavaScript)布朗尼(Python)
我们来深入研究一下这些框架,谈谈为什么要用它们,为什么它们会在列表的最前面,以及其他值得注意的地方。
建筑工人
HARD是目前最好的框架之一,在竞争对手中测试最快,教程最好,集成最简单。老实说,喜欢JS框架的人迟早要去尝试Hardhat。它真的很容易使用,测试很快,上手非常简单。他们的不和也一直是很快回答各种问题,所以遇到问题总是很容易求助。他们使用Waffle和Ethers.js进行测试,这可以说是一个更好的JavaScript智能合约框架,因为他们与web3.js相比做了一些非常好的改进。他们还可以直接与OpenZeppelin的可扩展智能合约插件集成,这是一个很大的优势。
这个项目给人的感觉很棒:很干净。它能做你想做的事。真的很快。这个项目在不断完善。显然,开发团队正在努力让智能合约开发人员的生活变得更加轻松。
总结ETH基金会资助的项目,曾经是Builder技术:Javascript,Web3.js和Ethers.js插件,OpenZeppelin可伸缩契约插件,Etherscan插件,区块链福克区块链:Hardhat运行时环境/本地,测试网络,主网带测试:Waffle维护:非常主动支持:主动开源。
几年来,TruffleTruffle一直是开发者的首选框架,这是有充分理由的。这是一个强大的框架,为其他追随者树立了一个标准。你可以很容易地找到很多正在使用这个平台的项目,所以很容易找到例子。松露也可以很容易地与它的姐妹工具毛毛雨集成。尤其是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项目使用的. finance技术:Python,Web3.py,区块链fork,Etherscan插件,Vyper支持区块链:Ganache/local,测试网络,主网有测试维护:非常主动支持:主动开源
Embark我很惊讶能排到前三之外的框架在GitHub上能有这么多星(3.1k)。这个工具有很多窍门。我花了一些时间才弄明白这是怎么回事,但这是因为Embark的目标是成为一个完整的dApp框架。这是一个全栈区块链平台。在Gitter的帮助下(GitHub上出现了一个问题;记住,开源社区的责任!),我能够将我的Chainlink合同部署到Kovan网络。它附带了一个用户界面,以便您可以在GUI中与区块链和合同进行交互。似乎它有一个学习曲线。我没有花足够的时间来克服障碍,但我可以看到它有很大的潜力。这就是为什么我要放在这里,因为我觉得我还有很多东西没有完全消化。
我希望看到更多的人尝试这个框架,并认识到它的能力。由于我花在这个项目上的时间有限,我觉得我可能无法做出公正的评价。我确实认为前端和后端解耦仍然是最佳实践,但是如果你需要用一个好的前端来启动一个项目,并且不在乎解耦需求,那么你绝对应该尝试这个项目。
这个项目很酷。如果有人喜欢Hardhat和Truffle,但希望集成全栈解决方案,我会首先推荐它。
总结前端开发用的JavaScript框架技术有很多功能:JavaScript,Web3.js,代理合约支持区块链:Ganache/local,测试网,主网带测试维护:轻度主动支持:主动开源。让我们暂停一下。在继续介绍上述框架的替代方案之前,我想暂停一下,介绍一下2021年的一些重要的非框架工具。
OpenZeppelin和升级插件(https://openzeppelin.com/contracts/)ether scan/block explorer verifier(https://etherscan.io/)Create-eth-app(https://github.com/paulrberg/Create-eth-app)OpenZeppelin和升级插件open zeppelin是一个可以为智能合约工程师创建有用工具的平台。他们有一些默认选项,如ERC20和ERC721工具,您可以导入他们的合同并在几秒钟内构建一个令牌。了解使用OpenZeppelin制作ERC20有多简单:
^0.6.0实用主义;导入“@ open zeppelin/contracts/token/er C20/er C20 . sol”;合约GLDToken为ERC 20 { constructor(uint 256 initialSupply)public ERC 20(\” Gold \”,\” GLD\”) {_mint(msg.sender,initialSupply);}}复制代码
没有必要重新发明轮子。OpenZeppelin是一个开源项目,主要目的是省去了大家重新造轮子的力气。OpenZeppelin的另一个重要特性是其可伸缩的契约功能。部署一个实际项目意味着您必须部署一个代理合同,当您做出任何更改时,该合同都需要更新。这是另一个优秀和干净的经验的项目。老实说,对于每一个项目,不管你用什么平台,迟早都会用到OpenZeppelin创造的内容。
以太扫描/块浏览器验证器以太扫描是最流行的块浏览器。当人们想检查你的合同和你的部署内容,他们不能检查出来,除非他们有ABI和合同地址。通常很容易找到合同地址,但很难得到ABI。你肯定希望人们能够轻松地查看你的智能合约并与之进行交互,所以你需要随时验证它,以便其他人可以做到这一点。大多数框架都有某种验证插件,您可以在其中部署智能合约,并立即在Etherscan上验证它们。请确保在您的应用程序中使用它。
确实create-eth-app有很多后端智能合约,但是如果没有人能用你的dApp,那么这些合约就一文不值了。Create-eth-app是一个平台,允许您使用ReactJS向您的智能合约添加前端。它使用了许多最新的React技术(例如状态挂钩),使开发人员可以轻松构建真正强大的前端。
2021年一些优秀的初学者工具:scaffold-eth(https://github.com/austintgriffith/scaffold-eth)
eth . build(https://eth.build/)
混音(https://remix.ethereum.org/)
one click dApp(https://oneclickdapp.com/)
这里就不介绍它们的细节了,但是如果你是这个领域的新手,就用吧!
其他镜架选项剩下的镜架也很不错,可能更适合你的需求。他们中的一些人确实有一些关于应该在智能合同框架中放入什么的非常酷的想法,我希望前三名参赛者会注意到这些伟大的想法。这些工具可能需要更多的探索时间。
华夫饼(JS)Dapp。工具(Haskell/CLI)SBT(Scala/CLI)Epirus(Java)华夫
Waffle本身可以作为部署框架,但是你需要编写更多的自定义脚本。虽然和其他框架比较有点傻,但这里还是把它列为智能合约框架。Waffle可以和你喜欢的任何框架一起使用,它是目前和Hardhat一起使用的默认工具。
如果你希望框架提供所有好的功能,那么我不建议单独使用。但如果你想用一个更原始、更简单、可定制的框架,选择它就不会错。
总结轻量级JavaScript框架,专注测试技术:JavaScript,Ethers.js区块链:你运行的一切都有测试维护:非常主动支持:主动开源Dapp。工具
MakerDAO用的是Dapp。工具,这也让我很惊讶。它是用Haskell写的,但是支持很多我们喜欢并且常用的插件,比如OpenZeppelin。它看起来像一个极简框架,但它足够强大,可以做你想做的事情。我可以找到关于使用这个平台部署合同的帮助,它的简单性也令人印象深刻。如果你正在寻找一个命令行友好的极简框架,那么我建议你也看看这个。
总结MakerDAO使用的Haskell简单框架技术:Haskell/CLI区块链:本地/Ganache、测试网络、带测试维护的主网络:主动支持:主动开源Epirus
虽然我说是“类似松露”的框架,但是Epirus的风格并不完全像松露,只是业务层面类似。他们有一个开源项目,但也有一个付费的升级工具,供想要做更多事情的用户使用。都是用Java Web3实现的,好像还在项目开发的早期。我很高兴看到他们已经提供了对Android的支持,所以我想知道这个项目的进展。因为Java智能合约平台不多,可以吸引更多的Java工程师进入这个行业。
我不能用它部署到Kovan,因为它不被支持,但看起来他们已经支持Rinkeby了。无论如何,我很高兴看到这个项目能够顺利进展。
总结类似松露的Java实现技术:Java区块链:Ganache/local,测试网(不是Kovan)带测试维护:主动支持:不是很主动的开源项目SBT带付费升级功能。
这是我玩过的一个很有意思的项目。SBT的特点是几乎完全从命令行或使用Scala与智能合约交互。我的Scala经验几乎为零,所以没有足够的背景知识来评价这个平台。如果你了解Scala,并且想踏入以太坊的世界,这个工具可能是一个非常酷的选择。
总结满足了命令行和Scala的开发需求。适合智能合约爱好者和工程师。技术:Scala区块链:本地/Ganache,测试网络,带测试维护的主网络:轻度活跃支持:不活跃开源过时框架。你经常会看到这些框架。我敢肯定,它们出来的时候都是很棒的工具,但是今天,它们不再受支持或者不活动了。以下框架不值得你浪费精力去理解和尝试。
OpenZeppelin CLI/SDK(JS)ether lime(JS)Parasol(JS)Cobra(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-区块链-开发者-2021-89afa5e7bd04框架