👨🚀 Glaze:由于 Jasmine 主编本周期末考试,本周我将承接第一次 Workshop,为大家带来合约开发环境特辑。祝 Jasmin 主编期末顺利!
如果你喜欢本期内容,不妨在阅读后给我们点个 ❤️ ,并在下方订阅 un.Block Weekly ⬇️
在第一次 Workshop 中,我们为大家介绍了如何使用 Remix,实现一个标准的 ERC20 智能合约,并将其发布到 Rinkeby 测试网上。错过这次 Workshop 的读者可以阅读我们详细的实验手册。
Remix
Remix 兼具开发,测试,调试,部署等功能。由于它支持在 GUI 中调用智能合约,一键切换账户等功能,Remix 非常适合用来调试智能合约。
Truffle
当你写的合约越来越复杂后,Truffle 是你最好的伙伴。
Truffle 是一个合约开发工具,在不干涉实际智能合约代码编写的情况下,Truffle 提供部署,测试等命令行工具。你也可以在 Truffle 的配置文件中,定义具体要使用的编译器版本,各种网络设置等。有了配置好的网络,你就可以将合约部署或者在这些预先配置好的网络上进行测试。
执行 truffle console
,便可以在本地启动一条区块链,并在命令行中进行交互。命令行中部署,测试常用的代码片段可以参考这个笔记。
我个人其实并不喜欢 Truffle,因为它给我带来过一些修也修不好的奇怪 bug。但相比以下的几个工具,Truffle 的优点在于大而全,部署功能比其他的工具做的好。
Hardhat
Hardhat 和 Truffle 做着类似的事情但是理念不一样。Hardhat 的感觉更是小而精简,大多数功能考插件完成,这就导致整体使用体验没有 Truffle 那么一致。
对我来说,我最喜欢 Hardhat 的地方在于它的易用性,想用多少功能就用多少功能。Hardhat 还有一个杀手锏功能,console.log()
。写过较大的智能合约的读者或许可以理解这样一个在 Node.js 中司空见惯的调试工具,在区块链开发中是多么珍贵。在 Hardhat 下,我们终于可以随你所欲的打印变量。
Hardhat 的部署并没有 Truffle 那么简单。具体部署,测试常用的代码片段可以参考这个笔记。
Openzeppelin
开发复杂的智能合约绝对离不开 Openzeppelin 的各种库。在 Solidity v0.8 之前,几乎所有的智能合约都会使用 Openzeppelin 的 Safemath 库来保证计算不会出现溢出的情况。常见的实现代币,权限控制,数组的一些操作等,都可以在 Openzeppelin 中找到你需要的。
Slither
Slither 是目前智能合约开发中最为流行的静态检查工具,它可以帮助开发者写出更加安全的代码。
但是你看看互联网安全使用的静态检查工具,就会感到 Slither 的简陋的了。Slither 使用 AST,而互联网安全已经出现了经历了 IR/CFG 和 QL。这至少比 Slither 快了两个世代。关于静态代码审计的技术方向可以参考这篇文章。
Etheres.js
如果想要和钱包,以太坊,链上合约交互,Etheres.js 是一种选择。虽然官网有较为详细的文档,但我总是为找不到我想要的例子发愁。调试这个是一个痛苦的过程。等我整理好了常用的代码片段,会贴在这里。
Create-smart-contract
懒得一个个安装以上工具的读者,可以使用我开发的 create-smart-contract。类似 create-react-app
,帮助各位读者一键安装各种库,初始化配置文件等。
最后我们希望各位有兴趣的读者都可以动手试一试,在未来我们会为各位带来一些智能合约开发上的小技巧。
👀 寻找志同道合的贡献者:
un.Block 社区正在招募英文翻译贡献者!
我们将会为你详细解读每一期周报,帮助你充分理解区块链的世界,希望你能协助完成海外版的区块链周报,让更多的外语读者了解区块链生态。
欢迎通过邮件联系我们,期待你的加入!
🚏Find us
💻 Website: unblock256.com
✈️ Telegram:un.Block Weekly
🕊️ Twitter: @unBlock256
📧 Email:unblocketh@gmail.com
视觉设计:Jenny
特别鸣谢:
本文非商业目的转载授权遵循 CC BY-NC 4.0 协议
版权所有 ©️un.Block 2021