智能合约开发框架允许工程师部署和测试他们的智能合约,从而使工程师的工作变得更轻松。
我花了数小时和几天的时间浏览ConsenSys和以太坊网站上的每个推荐框架,以了解哪种框架最适合2021年。
使用的标准很简单。该框架需要:
- 部署到本地区块链
- 进行快速有效的测试
- 使用Chainlink将智能合约部署到Kovan Testnet。
第三个标准很重要,因为它使我能够测试框架如何与其他软件包交互以及进行集成测试。
从2021年开始,基本上必须使用Oracle和OpenZeppelin等第三方工具,这就是为什么最后一部分如此重要的原因。
我们将简要介绍一些您需要了解的2021年其他重要工具,但本文不会涉及初学者工具,例如ETH钱包,以太坊客户端或文本编辑器。
智能合约开发框架
我将推荐三个智能合约开发框架。每种框架略有不同,所以选择它的原因也不同。他们是:
- Hardhat(JavaScript)
- Truffle(JavaScript)
- Brownie(Python)
让我们来仔细阅读一下,了解您为什么要使用它,为什么它位于列表的顶部,以及其他值得注意的地方。
1. Hardhat
图片来源:Hardha
Hardhat是目前最好的框架之一,具有一些最快的测试,最好的教程和最简单的集成。
老实说,每个喜欢JS框架的人都应该在某个时候尝试使用Hardhat。
它真的很容易上手,它进行了快速的测试,而且入门非常简单。他们的Discord也一直非常迅速地回答问题,因此,如果遇到问题,您总是可以寻求帮助。他们使用Waffle和Ethers.js进行测试,这可以说是更好的JavaScript智能合约框架,这是由于与web3.js相比,生活质量有了一些非常不错的改进。他们还可以与OpenZeppelin的可升级智能合约插件直接集成,这是一个巨大的胜利。
这个项目给人一种很棒的感觉:干净利落、执行您想要的操作,并且真的很快。
该项目正在不断改进,他们显然致力于使智能合约开发人员的生活更轻松。
概括:
- ETH基金会资助的项目,以前是建筑商
- 技术:Javascript,Web3.js和Ethers.js插件,OpenZeppelin可升级合同插件,Etherscan插件,区块链分叉
- 区块链:hardhat运行时环境/本地,测试网,主网
- 有测试
- 维护:非常活跃
- 支持:活跃
- 开市
2.Truffle
图片来源:Truffle
Truffle几年来一直是默认框架,这是有充分理由的。
它是一个强大的框架,为其他许多人树立了标准。您会很容易找到使用此平台的大多数项目,因此查找示例很容易。
Truffle也可以很容易地与它的姊妹工具Drizzle和Ganache集成在一起。Ganache特别是工程师运行本地区块链的最流行方法之一。对于那些寻求更多工具的人,您可以支付升级后的Truffle团队帐户的费用,并可以访问智能合约的持续集成,可视化部署和监视。他们还可以与OpenZeppelin的可升级智能合约插件直接集成,这是一个巨大的胜利。
他们显然是一群有才华的工程师,他们想要使世界成为一个更好的智能合约场所。
Truffle测试的运行速度不如安全帽那样快,并且由于用户数量众多,获得支持可能很困难。自从被ConsenSys收购以来,我很期待看到他们将如何改善这个项目。他们的文档似乎开始下降,很难遵循,但是如果您通过Google搜索遇到的错误,很可能会遇到曾经遇到该错误并已解决的人。
我发现改善项目的一些最佳方法是将问题留在他们的GitHub上。无论如何,保持生态系统不断壮大是我们的开源职责!
由于几乎每个人都熟悉它,因此获得同行的支持通常很容易。
我真的希望看到团队在这个项目上获得更多支持,因为他们有这么多用户。
概括:
- 使用最广泛的平台;最近被ConsenSys收购(2020年11月)
- 技术:Javascript,Web3.js,OpenZeppelin可升级合同插件,Etherscan插件,区块链分叉
- 区块链:Ganache /本地,测试网,主网
- 有测试
- 维护:非常活跃
- 支持:活跃
- 具有付费升级功能的开源
3.Brownie
图片来源:Brownie
Brownie受到Truffle的极大启发,这基本上与Python等效,并增加了一些生活质量更改。这个项目大多数Python工程师感受都一样:他们不喜欢JavaScript。
由于它是用Python编写的,因此消除了使用JavaScript带来的许多麻烦,并且您获得了使用此奇妙的简单框架来处理和部署智能合约。
作为一个自己喜欢Python的人,我为这个项目的未来感到非常兴奋,随着采用率的提高,越来越多的项目正在使用Python和此框架来部署他们的智能合约。
如果您来自Python世界,或者想要一个非常简单,干净的框架,毋庸置疑这个将非常适合你。
概括:
- 最好的Python框架,由Yearn.finance之类的DeFi项目使用。
- 技术:Python,Web3.py,区块链分叉,Etherscan插件,Vyper支持
- 区块链:Ganache /本地,测试网,主网
- 有测试
- 维护:非常活跃
- 支持:活跃
- 开源的
除了另外三个顶部的开发框架外,还有一个完整的dApp框架——
Embark,它也是一个区块链平台。
图片来源:Embark
我很惊讶地看到在GitHub(3.1k)上排名前三的框架如此之多。
这个工具有很多钟声和口哨声。我花了一些工夫才了解了个中缘由,这是因为Embark是一个完整的dApp框架。这是一个全栈的区块链平台。
在Gitter的一些帮助下,我能够将Chainlink合同部署到Kovan网络。它带有一个UI,使您可以在GUI中与区块链和合同进行交互。
我希望看到人们更多地尝试该框架并看到其功能。由于我在该项目上花费的时间有限,我觉得我可能无法在这里做到公正。我认为,将前端与后端解耦仍然是最佳做法,但是如果您需要启动一个具有良好前端的项目并且不关心解耦,那么您应该100%检出该项目。
这个项目很酷,如果有人喜欢Hardhat和Truffle,但又想与全栈解决方案集成,这个将会适合这些人。
概括:
- 具有大量前端开发功能的JavaScript框架
- 技术:JavaScript,Web3.js,代理合同支持
- 区块链:Ganache /本地,测试网,主网
- 有测试
- 维护:轻度活跃
- 支持:活跃
- 开源的
非框架工具
现在,在继续上述操作之前,我想指出2021年的一些重要非框架工具。
- OpenZeppelin和升级插件
- Etherscan / Block Explorer验证程序
- create-eth-app
1.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);
- }
- }
- OpenZeppeli
OpenZeppelin是一个开源项目。它的另一个重要方面是其可升级合同功能。部署一个正在运行的项目意味着您必须部署一个代理合同,该代理合同在您要进行任何更改时都需要更新。这是另一个让人感到惊奇和干净的项目。老实说,每个项目,无论您使用什么平台,都应该使用OpenZeppelin在某个时候创建的内容。
2.Etherscan / Block Explorer验证程序
Etherscan是最受欢迎的区块浏览器。当人们想要签出您的合同以及您已部署的内容时,除非他们具有ABI和合同地址,否则他们将无法进行检查。或许找到合同地址通常很容易,但是要获得ABI却很困难。
您希望人们能够轻松地查看您的智能合约并与之互动,因此您必须对其进行验证,以便其他人能做到这一点。大多数框架都有某种验证插件,您可以在其中部署智能合约,然后立即在Etherscan上对其进行验证。确保在您的应用程序中使用它。
3.create-eth-app
拥有大量的后端智能合约是很棒的,但是如果没有人可以使用您的dApp,那将毫无价值。create-eth-app是一个平台,允许您使用ReactJS为智能合约增加前端。它使用了许多新的React技巧,例如State Hooks,并使构建真正强大的前端变得更加容易。
代替框架
下面介绍一些其他的代替框架,这些框架可能对您有用。他们中的一些确实对将智能合约框架中的内容有一些非常酷的想法,我希望你们能注意到这些很棒的想法。
这些工具可能会花费更多的探索时间。
- Waffle(JS)
- Dapp.Tools(Haskell / CLI)
- SBT(Scala / CLI)
- Epirus(Java)
1.Waffle
图片来源:Waffle
Waffle本身可以用作部署框架,尽管您必须编写更多自己的自定义脚本。尽管将其与其他框架进行比较有不及,但它被列为智能合约框架。
Waffle可以与您喜欢的任何框架一起使用,我当前是使用Hardhat的默认工具。
如果您希望框架可以提供所有不错的功能,就不建议自己单独使用它,但是如果您想使用更原始,更简单,可自定义的框架,那么选择它就不会有错。
概括:
- 轻量级JavaScript框架专注于测试
- 技术:JavaScript,Ethers.js。
- 区块链:您所经营的一切
- 有测试
- 维护:非常活跃
- 支持:活跃
- 开源的
2.Dapp.Tools
图片来源:Dapp.Tools
MakerDAO使用了Dapp.Tools,这让我感到惊讶。它是用Haskell编写的,但支持许多我们喜欢和喜欢的插件,例如OpenZeppelin。
它看起来像一个极简主义的框架,功能强大到足以执行您想要的操作。能够令您在使用此平台部署合同方面获得帮助,并且对它的简洁性产生好感。
如果您正在寻找一个对命令行友好的极简主义框架,那么我建议您可以试试这个。
概括:
- MakerDAO使用的Haskell简单框架
- 技术:Haskell / CLI
- 区块链:本地/ Ganache,测试网,主网
- 有测试
- 维护:活跃
- 支持:活跃
- 开源的
3.Epirus
图像来源:Epirus
即使我说的是“松露状”,Epirus的风格也不是完全像松露状,而是商业意义上的。
他们有一个开源项目,但有一个付费的升级工具,供那些希望与之合作的人使用。他们使用Java的Web3实施,而且看起来仍处于项目开发的早期阶段。我很高兴看到他们对Android的支持,因此我很想知道这个项目的进展情况。
由于Java智能合约平台不多,因此我们可以吸引更多的Java工程师进入该行业。
我无法部署到Kovan,因为它不受支持,但看起来他们已经支持Rinkeby。无论如何,我很高兴看到项目进展顺利。
概括:
- 类似于Truffle的Java实现
- 技术:Java
- 区块链:Ganache /本地,测试网(不是Kovan)
- 有测试
- 维护:活跃
- 支持:不是很活跃
- 具有付费升级功能的开源SBT
SBT-以太坊
我玩过的更有趣的项目之一,SBT专注于几乎完全从命令行或与Scala进行的智能合约交互。我的Scala经验几乎为零,因此我没有很好的观点来评估该平台。如果您了解Scala并寻求加入以太坊,这似乎可能真的很酷。
概括
- 解决两个问题的命令行和Scala项目。适用于与智能合约和智能合约工程师一起工作的爱好者。
- 技术:Scala
- 区块链:本地/ Ganache,测试网,主网
- 有测试
- 维护:轻度活跃
- 支持:无效
- 开源的
一些过时的框架
或者您会不时看到这些弹出窗口。
我敢肯定,当它们问世时,它们是很棒的!
但是现在,它们不再受支持或处于非活动状态。
- OpenZeppelin CLI / SDK(JS)
- Etherlime(JS)
- Parasol(JS)
1.OpenZeppelin SDK
图片来源:OpenZeppelin SDK
现在,我终于明白了为什么该项目停止为此工作了。
作为一个团队,他们希望专注于可升级智能合约这一棘手的问题。
我能够部署我的Chainlinked智能合约,并比几乎任何其他框架更快地读取ETH的价格。它还具有一些非常不错的CLI选项,就像Epirus和Hardhat一样。它还内置了可升级的选件,这在很少有平台可以使用的世界中是巨大的。
我不建议使用此功能,因为他们有意不再支持它,但这是我使用智能合约框架获得的最佳开发人员经验之一。我希望使用前三名的技术人员能够从中汲取灵感,使该项目如此光彩夺目。我在上面说过,每个人都应该使用OpenZeppelin工具是有原因的。
如果他们不停止这项工作,那么他们的SDK很容易成为前四名的框架。
概括
- OpenZeppelin是弃用的智能合约框架。他们不赞成将重点放在升级插件上。
- 技术:JavaScript,Web3.js和Ethers.js插件,OpenZeppelin可升级合同插件
- 区块链:本地,测试网,主网
- 有测试
- 维护:无效
- 支持:无效
- 开源的
2.Etherlime
图像来源:Etherlime
Etherlime似乎是另一个不受青睐且未积极开展工作的JS框架。它与Infura的过时功能紧密结合,因此我们无法在Kovan上部署智能合约。它看起来这是一个非常强大的项目,而且看起来仍然可以在本地开发中使用,但是我不建议使用它。
概括:
- 无效的JS框架
- 技术:JavaScript,Ethers.js
- 区块链:本地,测试网,主网
- 有测试
- 维护:无效
- 支持:无效
- 开源的
3.Parasol
图片来源:Parasol
另一个无效的JS框架(超过两年未提交),它具有一些很酷的功能。例如Parasol互动和一些集成,而且显然有一些很聪明的人在从事这项工作,但是我认为没有理由在任何其他JS框架上使用该平台。
概括:
- 无效的JS框架
- 技术:JavaScript,Web3.js
- 区块链:本地/ Ganache,测试网,主网
- 有测试
- 维护:无效
- 支持:无效
- 开源的
智能合约和区块链世界发展迅速。两年前的一些最热门工具已经是老新闻了,智能合约开发框架也没有什么不同。看到Truffle始终处于游戏的顶端是很酷的事情,但更重要的是,许多项目都采用了不同的方法来解决问题。