头图

hardhat 项目学习

aave

link: aave-v3-core

hardhat 这个合约开发框架应用最全面,尤其是 task 的运用,能够通过脚本快速选择不同网络和执行内容进行部署任务。开发过程中能够通过 task 的代码清晰了解部署过程中的执行顺序和执行内容,同时方便进行本地修改和测试。

其次,对于 ts 类型的运用也十分成熟,前期对于不同网络的参数的类型定义非常完整,前期避免了参数缺失和类型错误的问题。

缺点也很明显,上手成本较高,即便是想要简单的部署一个测试网络也需要对所有的配置有了解,包括网络配置和合约配置。如果想要自己新增合约内容或者网络,需要参照现有的框架实现部署脚本,比较耗时。

uniswap

link: uniswap-v3-core

uniswap 最强的地方可能就在于合约本身的设计,通过 solidity 实现了非常复杂的数学逻辑,对于 solidity 学习者来说很好的学习项目。

合约开发框架和 aave 一样是 hardhat,不同点在于 uni 团队始终将开发重心放在了合约本身,对于合约开发框架并没有过多关心部署功能,但是对于测试部分却做的非常到位,测试用例的覆盖率和完整性简直离谱, v3 版本合约非常复杂,整个跑下来接近9000个测试用例,就在合约测试这方面非常值得学习。不得不感叹下 uni 团队对于合约的纯粹追求。

burgerswap

link: burgerswap-aggregator

burgerswap 聚合器项目整体参照了 1inch 进行改进,合约的模块设计较成熟,业务上扩展性较强,便于后期维护。合约开发框架同样是hardhat,特点在于部署和初始化合约与上面不同,通过脚本进行部署和初始化合约。开发者只需要在 data.jsonsetup.json中简单配置想要部署的合约和调用方法,就可以顺序部署和初始化合约,执行结果都会全部记录下来,方便后期升级维护。

项目框架适用于较小的合约项目,开发较快,只需关注合约业务实现,快速部署上线。同样也带来了一些问题,当遇到合约项目较为复杂,或者存在多网络部署,脚本管理则十分困难,如果执行过程中出现错误可能会引起一系列的连锁反应。

compound

link: compound

合约开发框架是 saddle,使用比较少,不太了解,无法判断其优缺点。合约本身相对简单,但是在升级迭代这部分有点臃肿,每次迭代新版本都是在做加法,导致合约越来越大,如果新增功能对合约修改较大在合约部署的时候则会提示合约的 size 超出。目前来说,这种合约设计可能已经稍显累赘。


TedZhu
1 声望0 粉丝

智能合约开发工程师