我正在分析Uniswap V2核心合同,并注意到了一个评论
// overflow is desired为什么要溢出?
因为,在我看来,当溢出发生时,下一行
if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {由于错误的timeElapsed,永远不会是真的。
发布于 2022-10-20 20:50:30
在:
uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired由于timeElapsed是无符号的,如果发生溢出,那么它的值必然是正的,因此表达式timeElapsed > 0必然会计算为true。
如果您计划深入研究稳健代码,那么您可能希望学习无符号整数和二补的基本概念。
https://stackoverflow.com/questions/74146143
复制相似问题