You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Brownie配置Ganache初始时间后chain.time返回当前时间如何解决

问题原因

你遇到的问题是Brownie 1.14.x版本的默认行为导致的:Ganache启动时虽然已经正确应用了--time参数将创世块时间设为1980-01-01,但Brownie在初始化环境时会自动挖出1个新块,这个新块的时间默认采用当前系统时间,因此你查询到的最新块时间就是当前系统时间。

解决方案

方案1:修改配置实现永久生效

在你的brownie-config.yaml的ganache配置段,额外添加参数禁止自动挖矿,同时锁定时间不随系统流逝:

networks:
  development:
    cmd_settings:
      time: "1980-01-01T00:00:00+00:00"
      miner:
        blockTime: 0 # 关闭自动出块,仅手动调用mine时才会出块
      lock: true # 锁定链时间,不会自动跟随系统时间递增

修改后重启Brownie即可,此时查询chain.time()就会返回你设置的初始时间。

方案2:运行时手动调整时间(无需修改配置)

如果不想修改全局配置,每次进入console后先执行以下代码手动重置时间即可:

from datetime import datetime
# 计算目标时间与当前链时间的差值,1980-01-01 00:00:00+00:00对应的时间戳为315532800
time_diff = 315532800 - chain.time()
chain.sleep(time_diff)
# 挖1个块让时间修改生效
chain.mine()

执行后再调用datetime.fromtimestamp(chain.time())就能得到期望的1980年时间。


内容的提问来源于stack exchange,提问作者Dori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 22:24:02