From 6a7258941a52ec5f5cc9f61ca5affd26e9212e9b Mon Sep 17 00:00:00 2001 From: aitbc Date: Thu, 23 Apr 2026 11:02:03 +0200 Subject: [PATCH] Fix: Initialize _last_block_timestamp from head block on startup This fixes the hybrid mode heartbeat logic which was unable to calculate time since last block after service restart because _last_block_timestamp was None. --- apps/blockchain-node/src/aitbc_chain/consensus/poa.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apps/blockchain-node/src/aitbc_chain/consensus/poa.py b/apps/blockchain-node/src/aitbc_chain/consensus/poa.py index 31047936..dc8d3bda 100755 --- a/apps/blockchain-node/src/aitbc_chain/consensus/poa.py +++ b/apps/blockchain-node/src/aitbc_chain/consensus/poa.py @@ -114,6 +114,13 @@ class PoAProposer: return self._logger.info("Starting PoA proposer loop", extra={"interval": self._config.interval_seconds}) await self._ensure_genesis_block() + + # Initialize last block timestamp from head block for heartbeat logic + head = self._fetch_chain_head() + if head is not None: + self._last_block_timestamp = head.timestamp + self._logger.info("Initialized last block timestamp from head", extra={"height": head.height}) + self._stop_event.clear() self._task = asyncio.create_task(self._run_loop())