在 Foundry 的 cheatcode 中,有几个很好用的 cheatcode 能够帮助我们在不进行大量初始化的情况下来对我们的合约进行 test。这三个 cheatcode 分别是: - `mockCall` - `mockCallRevert` - `mockFunction` 当然这三个 cheatcode 还有一个配套的 cheatc...
这篇文章将会介绍智能合约中的时间锁是什么,并且讲解如何开发它。你将会开发一个智能合约,这个合约可以将 ERC-20 通证的铸造请求按时间排列。 这个教程将会使用到: - [Foundry](https://github.com/foundry-rs/foundry) - [Solidity](ht...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 VestingWallet.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/finance/VestingWallet.sol VestingWallet库可以给指定的受益人地址按照时间线性释放锁在合约内...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 SafeCast.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/math/SafeCast.sol SafeCast库提供了solidity的基础整数类型uintX和intX之间的类型安全转换的库...
### 概述 不变量测试是目前最高效的智能合约测试方法之一。在我较早编写的 [Foundry 高级测试: Fuzz、Invariant与形式化证明](https://blog.wssh.trade/posts/foundry-test/) 曾介绍过基于 Foundry 的不变量测试方法,但该文已经编写于 2 年前。...
>- 原文链接:[www.paradigm.xyz/2024...](https://www.paradigm.xyz/2024/11/solar) >- 译者:[AI翻译官](https://learnblockchain.cn/people/19584),校对:[翻译小组](https://learnblockchain.cn/people/412) >- 本文链接:[learnblockchain.cn/article…](https://learnblockchain.cn/articl...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 Address.sol Github: [https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/Address.sol](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/Address.sol) ### 1. ...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 Math.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/math/Math.sol Math库为合约开发提供了solidity内置的uint256运算以外的其他整形运算方法。solidit...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 ERC165Checker.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/introspection/ERC165Checker.sol ERC165Checker库是用来查询已实现IERC165的目标合约自身实现了...
在foundry中用Solidity编写一个质押挖矿的项目,实现如下功能: 1. 用户随时可以质押项目方代币 RNT(自定义的ERC20+ERC2612) ,开始赚取项目方Token(esRNT); 2. 可随时解押提取已质押的 RNT; 3. 可随时领取esRNT奖励,每质押1个RNT每天...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 MerkleProof.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/cryptography/MerkleProof.sol MerkleProof库提供了用于验证merkle树proof的工具函数。在生成merkle...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 SafeERC20.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC20/utils/SafeERC20.sol SafeERC20库封装了ERC20的操作,使各操作执行失败时触发revert。因为...
昨天写一篇,蜜罐的分析,我发现感兴趣的朋友还挺多,我也就多了解了一下这方面的知识,我发现重入攻击大家都是翻译的一个老外的文章,连代码都是提供的图片,我觉得有必要自己写代码来一遍。 重入就是利用solidity虚...
[Halmos v0.3.0](https://github.com/a16z/halmos) 发布啦! Halmos 是 EVM 智能合约的符号测试工具,它使用符号执行来帮助查找错误和验证合约行为。自 v0.2.0 以来,我们一直专注于使 halmos 在实际错误查找方面更有效,而不仅仅是形式验证...
## 如何使用 Halmos 编写符号测试 符号测试看起来与模糊测试相似,但有一些需要理解的差异。本指南将引导你完成编写符号测试的过程,重点介绍与模糊测试相比的差异。它适用于那些已经熟悉 [Dapptools]-/[Foundry]-风格的模糊测...