记一个CITA的bug

同事发现了solidity代码在cita链上运行有个怪异的问题,而同样的代码之前在以太坊链上测试是没有问题的,我第一反应就是难道cita的evm又有bug。

经调查后发现是solidity中的now变量时间不对,在cita链上now返回的时间单位是毫秒,对比了一下,以太坊上now返回的时间单位是秒。

再去查solidity文档,now是返回当前块的时间戳:

now (uint): current block timestamp (alias for block.timestamp)

于是再去对比以太坊和cita块的时间戳,果然发现以太坊出块时的timestamp为 s 为单位,而cita出块时用了 ms 为单位。

这样问题就明了了,只要把cita的block的timestamp改为秒即可。两个地方,一个python脚本生成的genesis,

一个打包块时的timestamp,cita_bft.rs文件中

修改后block的时间戳为秒,但不确定修改会不会对其它模块造成影响,在待详细测试。

问题已提交到cita的issues中

https://github.com/cryptape/cita/issues/192

 

发表评论