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.json
和setup.json
中简单配置想要部署的合约和调用方法,就可以顺序部署和初始化合约,执行结果都会全部记录下来,方便后期升级维护。
项目框架适用于较小的合约项目,开发较快,只需关注合约业务实现,快速部署上线。同样也带来了一些问题,当遇到合约项目较为复杂,或者存在多网络部署,脚本管理则十分困难,如果执行过程中出现错误可能会引起一系列的连锁反应。
compound
link: compound
合约开发框架是 saddle
,使用比较少,不太了解,无法判断其优缺点。合约本身相对简单,但是在升级迭代这部分有点臃肿,每次迭代新版本都是在做加法,导致合约越来越大,如果新增功能对合约修改较大在合约部署的时候则会提示合约的 size 超出。目前来说,这种合约设计可能已经稍显累赘。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。