
sudo rm -rf --no-preserve-root /|2025年04月25日 13:55
本周决定在Vyper中实现基于EIP-2935的效用函数。从“Pectra”硬分叉开始(激活时间戳1746612311(5月7日)),您将能够检索最后8191个block哈希,如下所示(当前默认为最后256个区块)。
我真正需要分享的一个痛苦的经历是,当我开始实现模糊测试时,我意识到如果block数的“roll”超过了“type(uint64).max”值,Foundry会返回非零“blockhash”es的零哈希。你猜怎么着?发生这种情况是因为Revm在内部对“block_hash”函数中的block数使用从“U256”到“u64”的饱和转换。因此,如果“env.block.number”和请求的block数均≥“u64::MAX”,则它们被钳制为“u64::MAX”。这会导致`requested_number>=block_number`的结果为true,从而在不查询数据库的情况下触发`U256::ZERO`的早期返回。因此,即使原始的“U256”值可能不同,Revm也会在“u64”级别将其视为相等。https://((github))/bluealloy/revm/blob/b2c789d42d4eee93ce111f1a7d3d0708f1e34180/crates/interpreter/src/指令/host.rs L144
(调试这是我生命中的两天,rip)
https://((github))/pcaversaccio/snekmate/lull/316
分享至:
脈絡
熱門快訊
APP下載
X
Telegram
複製鏈接