智能合约开发框架允许工程师部署和测试其智能合约,从而使开发者的生活更轻松。我花了数小时和几天的时间浏览ConsenSys和以太坊网站上的每个推荐框架,以了解哪些框架最适合2021年,哪些框架你需要避免浪费时间。你可以在GitHub上看到我对这些平台的实验。
用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart
不仅如此,我还对区块链Hackthon的参与者进行了数百次采访,并完成了数百次Hackthon的提交,以寻找哪种工具性能最佳、开发人员体验最佳。我自己也使用每个框架做了很多工作,希望为2021年做好准备。
使用的标准很简单。该框架需要:
第三个标准很重要,因为它使我能够测试框架如何与其他软件包交互以及进行集成测试。与预言机(Oracle)和第三方工具(如OpenZeppelin)能协同工作基本上是2021年的区块链开发框架所必须的,这也是为什么这最后一块是非常重要的。
我们将简要介绍一些你要了解的2021年其他重要工具,但本文不会涉及初学者工具,例如ETH钱包,以太坊客户端或文本编辑器。
首先,我将向所有人推荐以下三个智能合约开发框架。每个都有不同的风格以及选择它的原因:
让我们仔细研究一下,了解为什么要使用这些框架,为什么它们是最佳的框架,以及其他一些值得注意的地方。
Hardhat是目前最好的框架之一,支持快速测试,同时提供了最好的教程和最简单的集成。老实说,每个喜欢JS框架的人都应该在某个时候试用Hardhat。它真的很容易上手,具有快速的测试,而且入门非常简单。Hardhat的Discord也总是非常迅速地回答问题,因此,如果遇到问题,你总是可以寻求帮助。Hathat使用Waffle和Ethers.js进行测试 —— 可以说是更好的JavaScript
智能合约框架 —— 开发人员的生活质量确实能得到一些改善。
Hardhat还可以与OpenZeppelin的可升级智能合约插件直接集成,这是一个巨大的胜利。这个项目给人一种很棒的感觉:很干净。它会执行你想要的操作。真的很快。该项目正在不断改进,Hardhat显然致力于使智能合约开发人员的生活更轻松。
Hardhat概要:
几年来Truffle一直是以太坊智能合约的默认开发框架,这是有充分理由的。Truffle是一个强大的框架,为其他许多人树立了标准。你很容易找到使用此平台的项目,因此查找示例很容易。Truffle也可以很容易地与它的姊妹工具Drizzle和Ganache集成在一起。特别是Ganache,它是工程师运行本地区块链的最流行方法之一。对于那些正在寻找更多工具的人,你可以为升级的Truffle团队帐户付费,并可以访问智能合约的持续集成,可视化部署和监视。Truffle还可以与OpenZeppelin的可升级智能合约插件直接集成,这是一个巨大的胜利。Truffle的开发团队显然是一群有才华的工程师,他们想要使世界成为一个更好的智能合约场所。
Truffle测试的运行速度不如hardhat那样快,并且由于用户数量众多,获得支持可能很困难。我很期待看到被ConsenSys收购后他们将如何改善这个项目。Truffle的文档质量似乎开始下降并且很难遵循,但是如果你用Google搜索遇到的错误,则很可能会遇到遇到该错误并已解决的人。我发现改善项目的一些最佳方法是在GitHub上发布问题。无论如何,保持生态系统不断壮大是我们的开源职责!
由于几乎每个人都熟悉它,因此获得同行的支持通常很容易。我真的希望看到团队在这个项目上获得更多支持,因为他们有这么多用户。我希望他们能看到本文并致力于改善其文档,以使其能够继续作为测试和部署智能合约的首选平台之一。
Truffle概要:
Brownie极大地受到Truffle启发,它基本上与Python等效,并增加了一些有利于生活质量改善的特性。这个项目的字面意思是大多数Python工程师因为不喜欢JavaScript而感到同样的沮丧。由于Brownie是用Python编写的,因此消除了使用JavaScript带来的许多麻烦,并且你可以使用这个框架轻松地来处理和部署智能合约。
作为一个喜欢Python的人,我为这个项目的未来感到非常兴奋,随着采用率的提高,越来越多的项目正在研究Python和Brownie框架来部署他们的智能合约。我已经开始使用Brownie作为我的入门框架,并且一直喜欢它。我已经和一些从事更多工作的人聊天,他们是一个非常聪明的团队。Yearn.finance似乎也已加入。
如果你来自Python世界,或者想要一个非常简单,干净的框架,那么无疑这是适合你的框架。
Brownie概要:
令我惊讶的是,在GitHub上看到Embark这个前三名之外的框架得到这么多星(3.1k)。这个工具有很多独到之处。我花了一点时间尝试了解,因为Embark是整个DAPP框架。这是一个全栈的区块链平台。在Gitter的一些帮助下,我能够将Chainlink合约部署到Kovan网络。它带有一个UI,允许你在GUI中与区块链和合约进行交互。Embark有一段学习曲线,我没有花足够的时间来克服,但它展示了其潜力。这就是为什么我想将其包括在这里的原因,因为我觉得我没有完全消化很多东西。
我希望看到人们更多地尝试该框架并看到其功能。由于在项目中花费的时间有限,我觉得我可能无法在这里做到公正。我确实认为将前端与后端解耦仍然是最佳做法,但是如果你需要启动一个具有良好前端的项目并且不关心解耦,那么您应该100%尝试这个项目。
这是一个很酷的项目,如果有人喜欢Hardhat和Truffle,并且又想与全栈解决方案集成,那么我愿意推荐Embark给他。
Embark概要:
现在,在继续后续内容之前,我想休息一下,并指出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是最受欢迎的区块浏览器。当人们想要查看你的合约以及你已部署的内容时,除非他们具有ABI和合同地址,否则他们将无法进行检查。找到合约地址通常很容易,但是要获得ABI却很困难。你将希望人们能够轻松地查看你的智能合约并与之交互,因此始终希望对其进行验证,以便其他人可以做到这一点。大多数框架都有某种验证插件,你可以在其中部署智能合约,然后立即在Etherscan上进行验证。确保在你的应用程序中可以使用它。
拥有大量的后端智能合约是很棒的,但是如果没有人可以使用你的dApp,那将毫无价值。create-eth-app是一个平台,你可以使用ReactJS为智能合约增加前端。它使用了很多新的React技巧,例如State Hooks,并使构建真正强大的前端变得更加容易。
我不会在这里介绍这些功能,但是如果你不熟悉该领域,请查看这些!
接下来的这些框架的一点也不差,并且可能对你有用。他们中的一些确实对将智能合约框架中的内容有一些非常酷的想法,我希望前三大框架注意到其中一些很棒的想法。这些工具可能会花费更多的探索时间。
Waffle本身可用作部署框架,尽管你必须编写更多的自定义脚本。它被列为智能合约框架,尽管将其与其他框架进行比较有点不妥。实际上Waffle可以与你喜欢的任何框架一起使用,并且当前是Hardhat的默认工具。
如果你希望框架可以提供所有不错的功能,那么我不建议自己单独使用它,但是如果你想使用更原始,更简单,可定制的框架,那么用Waffle不会出错。
Waffle概要:
MakerDAO使用了Dapp.Tools,这让我感到惊讶。它是用Haskell编写的,但是支持许多我们喜欢的插件,例如OpenZeppelin。它看起来像一个极简主义的框架,功能强大到足以执行你想要的工作。我能够在使用此平台部署合约方面获得帮助,并且其简洁性让我感到惊讶。如果你正在寻找一个简约的命令行友好的框架,那么我建议你也尝试一下。
Dapp.tools概要
虽然我说Epirus像“Truffle”,但是Epirus的风格也不是完全像Truffle,这更多是商业意义上的。Epirus有一个开源项目,同时也有一个付费的升级工具,供那些希望与之合作的人使用。Epirus使用Java的Web3实现,看起来还处于项目开发的早期。很高兴看到他们对Android的支持,因此我很关注这个项目的进展。由于Java智能合约平台不多,这样就可以吸引更多的Java工程师进入该行业。不过我没有办法将合约部署到Kovan,因为目前还不支持,但看起来已经支持Rinkeby。无论如何,
我很高兴看到项目进展顺利。
Epirus概要:
SBT是我尝试过的最有趣的项目之一,它致力于命令行或使用Scala进行智能合约交互。我几乎没有Scala经验,因此没有办法来很好地评估这个平台。如果你了解Scala并寻求加入以太坊,这个项目看起来不错。
SBT概要:
你也会不时看到以下这些项目,我敢肯定,它们开始时很棒,但是目前已经不再受支持或处于非活动状态。了解这些是为了避免浪费精力在这些项目上:
现在,我明白了为什么OpenZeppelin SDK团队停止工作了。作为一个团队,他们希望专注于可升级智能合约的难题 — 但是说实话,这有点难为情。这个项目很干净。我能够部署我的Chainlinked智能合约,并比几乎任何其他框架更快地读取ETH的价格。它还具有一些非常不错的CLI选项,就像Epirus和Hardhat一样。它还内置了可升级的选件,这很少见。
我不建议使用此功能,因为他们有意不再支持它,但这是我使用智能合约框架获得的最佳开发人员经验之一。我希望前三名能够从中汲取灵感,使该项目如此光彩夺目。我上面说过,每个人都应该使用OpenZeppelin工具是有原因的。它们的确好用。
如果他们不停止这一工作,那么OpenZeppelin SDK很容易成为前四名的框架。
OpenZeppelin SDK概要:
Etherlime看起来是另一个不受青睐且未积极开展工作的JS框架。它与Infura的过时功能紧密结合,因此我们无法在Kovan上部署我们的智能合约。该项目活跃时看来是非常强大,而且看起来仍然可以用于本地开发,但是我不建议使用它。
Etherlime概要:
Parasol是另一个无效的JS框架(超过两年未提交)。它具有一些很酷的功能,例如parasol interact以及一些集成,并且显然,有一些很聪明的人在从事此工作,但是我认为没有理由在任何其他JS框架上使用此平台。
Parasol概要:
智能合约和区块链世界发展迅速。两年前的一些最热门工具已经是老新闻了,智能合约开发框架也没有什么不同。看到Truffle保持在游戏的顶端是很酷的事情,但更重要的是,许多项目都采用了不同的方法来解决问题。希望这对您有所帮助!
原文链接:2021年以太坊开发框架权威指南 — 汇智网