我在寻找一种方法来做动作链接到全局时间,但获得当前的时间戳不是一个明显的任务。
发布于 2022-09-30 10:19:42
在EVM中没有获得它的方法,但是有几种解决方法。
第一个是基于块的时间戳:每个时间戳应该比父时间戳大,尽管节点可以操纵时间戳--尤其是当节点向它们承诺盈利时,也可以在挖掘期间拒绝块。
第二种方法是使用块的编号,因为它们是一个接一个地排序的,并且通过知道平均块执行时间计算当前时间--不幸的是,块挖掘的时间也可能有所不同,特别是在新的ethereum更新之后。似乎块的时间戳是更好的选择。
发布于 2022-09-30 10:27:55
使用ethers.js,我知道如何在块链上获得当前时间戳的唯一方法是使用provider getBlockNumber()函数获取最新的块号,然后使用provider getBlock()函数获取最新块的详细信息。最后,当您有块时,块对象将具有时间戳属性,它给出块链上的当前时间(以秒为单位)。
如果您想要ms版本的,请将秒乘以1000。
let latestBlockNumber = await provider.getBlockNumber();
let block = await provider.getBlock(latestBlockNumber);
console.log(block.timestamp);
let latestTimeStampInMs = block.timestamp * 1000;
console.log(latestTimeStampInMs);
https://ethereum.stackexchange.com/questions/136640
复制相似问题