我试图理解什么是`block.timestamp‘--我的合同中有以下代码:
require(block.timestamp >= publicSalesStartTime, "Not started yet");block.timestamp返回什么?简单的答案将是“当前块的时间戳”,但是,是已经被挖掘的块还是正在收集事务并将很快被挖掘的新块?
发布于 2022-02-09 22:44:06
很长的答案:现在是块被埋的时间。注意,这不是在EVM中执行代码的时候。会发生什么?矿工选择一些事务并使用这些事务挖掘块。是矿工选择了区块被开采的时刻。它不需要执行智能契约代码来挖掘块,只需验证这些事务是否具有良好的签名和有效性。
简短的回答:这是阻塞的时间,交易是‘内部’。
发布于 2022-02-09 20:32:14
这是后者。该事务将包含在其中的是块的时间戳。注意,在很多用例中,依赖块的时间戳并不完全安全。这是因为区块时间戳可以在一定范围内被矿商操纵,所以我会谨慎地依赖它。
https://ethereum.stackexchange.com/questions/121251
复制相似问题