变量 accountRoles 占用的 slot = 0, slot0里面存储的值也是0. 因此删除 delete accountRoles 并不会删除整个的storage(即把整个的storage置0)
目前中项目的代码中经常发现使用Try/Catch来捕获错误,防止让程序revert,而是让它能继续执行下去。在使用过程中,容易出现的问题是,开发人员认为try/catch能捕获所有的异常错误。从而可以处理所有的异常情况。实际情况是有两类错误捕获不到:
目前大部分新发的ERC20Token都带有permit功能,即通过签名完成授权。签名的人不需要上链,省了gas,但是实际上更危险,一不小心签名,可能把所有的Token授权给他人了。 错误的协议实现即把WETH当成了IERC20Permit使用,也会造成损失。
最近审计中几次遇到了WETH的transferFrom,类似如上的代码,大家觉得这个代码会有问题吗?
——答案揭晓。 该代码在主网上运行不会有什么问题。但是在Arbitrum, Blast等l2上就会revert。
ERC20 标准的核心是指定了代币合约应实现的一组函数和事件,但它并没有规定这些函数应如何处理故障。 例如, transfer 和 transferFrom 函数用于在帐户之间移动代币,传统上返回指示成功或失败的布尔值。然而,并非所有实现都严格遵守此模式。 有些人可能会选择在失败时恢复(即抛出错误并
参考:openzepplin的ERC20FlashMintERC3156是整个FlashLoan的标准,FlashMint只是其中一个特例。FlashLoan主要的可能漏洞是:1、通过在flashloan借贷内部质押(deposit)之类的,来替代repay,达到攻击目的2、通过
如果投票是根据某人持有的代币数量来衡量的,那么恶意行为者就可以使用他们的代币进行投票,然后将代币转移到另一个地址,用该地址进行投票,依此类推。如果每个地址都是一个智能合约,那么黑客可以在一笔交易中完成所有这些投票。一个相关的攻击是使用闪贷获取一堆治理代币,进行投票,然后返还闪贷。领取空投也存在类似
分析基于NounsDAO的ERC721Checkpointable.sol,他是基于CompoundGovernance代码修改的。数据结构1.投票权结构///@noticeAcheckpointformarkingnumberofvotesfromagiven