SafeERC20库封装了ERC20的操作,使各操作执行失败时触发revert。因为标准IERC20的转账和授权等需通过一个bool返回值来表示操作是否成功,可能实现合约内部没有设置revert机制。有的ERC20合约的授权或转账的实现并无返回值(以太坊上的USDT合约),此时可通过本库与其交互。
面试题+答案
探究如何将原始字节码转换为可读的 Solidity 代码及其对应的应用程序二进制接口(ABI)
全新的 Vyper 编译器,支持最新版本!; 支持 Circom v2.1.6; 新增 Uniswap v4 模板
将深入研究EVM中的一个关键数据结构,交易收据和其相关的事件日志。
深入探讨可升级合约的架构
本文详细介绍了 OpenZeppelin Contracts 的最新更新版本 5.0.0,涵盖了新增和移除的合同与库、按类别的主要变化,以及改进的安全性和合约结构,使开发者能够构建更强大和高效的去中心化应用。
本文讨论了在Solidity智能合约中优化Gas消耗的方法,尤其是如何使用uint256代替布尔值,以减少不必要的SLOAD操作,进而节省Gas成本。文章通过示例展示了优化前后的Gas消耗差异,并提及相关工具与资源以帮助读者进一步了解气体优化策略。
本教程介绍了如何使用Echidna进行智能合约的模糊测试和断言测试,详细说明了Incrementor合约及其修改版本EchidnaIncrementorAssert的实现。文章深入探讨了断言的使用、事件的处理以及模糊测试如何帮助发现潜在漏洞,以确保区块链应用的完整性。
ERC20Snapshot库是ERC20的拓展,增加了各账户余额及总流通量的快照机制。如果涉及到根据账户ERC20余额进行分红、投票等业务可以使用该库,其可有效防御在不同地址间转账进行“一币多用”的攻击。在一个快照横截面数据上进行分红、投票甚至是ERC20分叉都是最有效的解决方案。
hardhat vs foundry
这篇文章介绍了一种名为 fallback-extension 的模式,该模式可以解决 Solidity 智能合约 24kb 大小限制的问题。通过将某些函数放置在扩展合约中,并利用回调函数将调用转发至扩展合约,开发者可以增添更多的功能。此外,文中还讨论了存储布局一致性、函数选择器碰撞的风险及其对应的气体成本等重要注意事项。
Foundry 是 Solidity 智能合约测试的有力工具
ERC20FlashMint库是ERC20的拓展。本库在ERC20的基础上实现了IERC3156FlashLender接口,在token层面上支持了闪电贷功能。但是该库默认没有闪电贷手续费,开发者可以通过重写flashFee()方法来自定义手续费计算逻辑。
flashFee()
ERC20Pausable库是ERC20的拓展。该库提供了可暂停的transfer、mint及burn功能。需要注意的是:ERC20Pausable库并没有提供切换暂停状态的函数,需要开发人员自行开发——同时需要注意切换暂停状态的权限问题。
使用 Echidna 模糊测试(Fuzzing) 提升智能合约安全性
扫一扫 - 使用登链小程序
116 篇文章,450 学分
406 篇文章,424 学分
171 篇文章,332 学分
36 篇文章,280 学分
121 篇文章,276 学分