Foundry是一个Solidity框架,用于构建、测试、模糊、调试和部署Solidity智能合约,Foundry的优势是以Solidity作为第一公民。
深入探讨了智能合约测试的重要性,重点介绍了使用 Foundry 的实用策略和示例。
什么是foundry?foundry是一个solidity智能合约开发工具。可以帮你管理依赖包,编译项目,运行测试脚本,还可以让你通过命令行工具或者script脚本和链上合约进行交互。和hardhat不同的地方是,hardhat我们还是主要用来开发大型的合约项目,但是foundry用来进行编写测试
在过去的三年里,Foundry已发展成为智能合约开发者的首选工具,今天,我们自豪地宣布 Foundry v1.0
MerkleProof库提供了用于验证merkle树proof的工具函数。在生成merkle树和对应proof时应当避免使用64字节长度的leaf(进行hash之前)或避免使用非keccak256的哈希函数(进行leaf的hash计算)。这是因为树中经排序的内部节点的拼接可以被重新解释为leaf值。
从foundry工程化的角度详细解读Openzeppelin中的Address库及对应测试。
ERC20FlashMint库是ERC20的拓展。本库在ERC20的基础上实现了IERC3156FlashLender接口,在token层面上支持了闪电贷功能。但是该库默认没有闪电贷手续费,开发者可以通过重写flashFee()方法来自定义手续费计算逻辑。
flashFee()
使用founrdy keystore保护你的钱包私钥
使用bash脚本来部署任意合约
本文介绍了在智能合约开发中使用加密密钥的重要性,并提供了在 Hardhat 和 Foundry 框架中实现加密密钥的详细步骤。文章强调了明文存储密钥的风险,并提供了使用 AES 等加密技术保护密钥的方法,同时推荐了密钥管理和安全开发的最佳实践。
EIP-712是一个专门用于对结构化数据求hash值以及签名的标准,大大解决了数据“链下签名+链上验证”的问题并提高了链上消息签名的可用性。EIP712合约提供了EIP 712 domain separator的定义与获取——是结构化数据完整编码的一部分。
本文介绍了如何使用 Foundry 库来部署和管理可升级合约,包括安装 OpenZeppelin Contracts v5 或 v4 的步骤、使用 NPM 或 Soldeer 进行替代安装的方法、Foundry 的要求、运行前的配置(如安装 Node.js、配置 foundry.toml)以及在 Windows 环境下的设置等。
本文介绍了如何使用 safe-utils 和 tenderly-utils 这两个 Foundry 模块来简化协议的治理流程,尤其是在涉及 Safe 多签账户的场景下。
Starknet Foundry合约测试代码错误修复及部署和交互测试
文章介绍了突变测试的概念,即通过故意在代码中引入错误来检查测试套件的质量。文章详细举例说明了突变测试的应用,包括如何在Solidity代码中实施,并介绍了自动突变测试工具及其可能的结果。此外,还讨论了突变测试的重要性和局限性,并推荐了一些相关的学习资源。
Foundry 是 Solidity 智能合约测试的有力工具