在 Foundry 的 cheatcode 中,mockCall、mockCallRevert 和 mockFunction 使合约测试更高效。
Web3学习之私钥保护——将私钥导入加密密钥库私钥什么是私钥?在Web3和区块链世界中,私钥是一串唯一的数字和字母组合,用于控制和管理你的加密货币和数字资产。拥有私钥的人可以访问相应的数字资产并执行交易,因此私钥必须高度保密。简单来说,私钥即为随机生成的复杂密码。有了私钥,您就能使用自己
通过 prompt cheatcode,我们能够实现一种十分友好的交互输入方式,这样,在运行我们的 Foundry Script 脚本时十分便捷。
Proxy库对外只暴露了fallback和receive函数,是代理合约的基础实现。所有对Proxy合约的call都将被delegatecall到implement合约且delegatecall的执行结果会原封不动地返还给Proxy合约的调用方。通常称implement合约为代理合约背后的逻辑合约。
ERC20Snapshot库是ERC20的拓展,增加了各账户余额及总流通量的快照机制。如果涉及到根据账户ERC20余额进行分红、投票等业务可以使用该库,其可有效防御在不同地址间转账进行“一币多用”的攻击。在一个快照横截面数据上进行分红、投票甚至是ERC20分叉都是最有效的解决方案。
本文介绍了如何在系统上设置 cURL 和 Foundry 开发框架,以便更好地进行 Solidity 开发和测试。包含代码示例和对 Foundry 的简要说明,强调其作为测试和部署工具的优势。
ERC4626库本身是一种有底层ERC20资产质押的shares且本身同样满足ERC20标准。用户可以通过deposit或mint方法来质押底层资产并增发shares,也可使用burn或redeem方法来销毁shares并赎回底层资产。
ERC20PresetFixedSupply库是一种带预铸造功能的ERC20实现,即在合约部署时直接将全部流通量都铸造给某一地址且部署后无法增发。该库同时继承了ERC20Burnable库,支持销毁和委托销毁功能。
UUPSUpgradeable库是专为UUPS代理设计的一种合约升级机制的实现。当本合约被设置为ERC1967Proxy代理合约背后的逻辑合约后,可以对其进行合约升级操作。作为逻辑合约的父合约,本库的安全机制可保证不会因某次错误的升级而打破合约的可升级性。
本文介绍了如何在Foundry环境中使用OpenZeppelin安全地创建和验证ECDSA签名,提供了Verifier.sol合约和测试代码Verifier.t.sol的示例。
Foundry forge 输出覆盖率测试报告
Clones库是最小代理合约的工厂合约实现,也称之为克隆工厂。ERC1167指定了一种将全部调用都delegatecall到一个已知固定地址的最小字节码实现,它可以以一种不可变且成本极低的方式克隆目标合约。
UpgradeableBeacon库是信标代理模式中的信标合约的实现,与一个或多个BeaconProxy库实例配合使用。所有到BeaconProxy的调用都会被委托到本库指向的逻辑合约上。本库的owner具有更换逻辑合约地址的权限,从而实现信标代理合约的升级功能。
BeaconProxy
4.26日(周三)晚8点直播
TransparentUpgradeableProxy库是一个透明代理合约的实现,其背后的逻辑合约可由admin来升级。一般的代理合约本身需要管理函数,当这些函数同其背后的逻辑合约的函数产生selector冲突时可能会暴露潜在的漏洞。透明代理模式解决了以上问题。