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 超出。目前来说,这种合约设计可能曾经稍显累赘。