diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/blockhash/PragueBlockHashProcessor.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/blockhash/PragueBlockHashProcessor.java
index 5b772f1cd63..4e272a5212d 100644
--- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/blockhash/PragueBlockHashProcessor.java
+++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/blockhash/PragueBlockHashProcessor.java
@@ -68,9 +68,11 @@ public void processBlockHashes(
     super.processBlockHashes(mutableWorldState, currentBlockHeader);
 
     WorldUpdater worldUpdater = mutableWorldState.updater();
-    final MutableAccount historyStorageAccount = worldUpdater.getOrCreate(historyStorageAddress);
+    final MutableAccount historyStorageAccount = worldUpdater.getAccount(historyStorageAddress);
 
-    if (currentBlockHeader.getNumber() > 0) {
+    if (historyStorageAccount != null
+        && historyStorageAccount.getNonce() > 0
+        && currentBlockHeader.getNumber() > 0) {
       storeParentHash(historyStorageAccount, currentBlockHeader);
     }
     worldUpdater.commit();
diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/blockhash/BlockHashProcessorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/blockhash/BlockHashProcessorTest.java
index b558b0f2759..98f3788b909 100644
--- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/blockhash/BlockHashProcessorTest.java
+++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/blockhash/BlockHashProcessorTest.java
@@ -45,8 +45,9 @@ void setUp() {
     mutableWorldState = mock(MutableWorldState.class);
     worldUpdater = mock(WorldUpdater.class);
     account = mock(MutableAccount.class);
+    when(account.getNonce()).thenReturn(1L);
     when(mutableWorldState.updater()).thenReturn(worldUpdater);
-    when(worldUpdater.getOrCreate(PragueBlockHashProcessor.HISTORY_STORAGE_ADDRESS))
+    when(worldUpdater.getAccount(PragueBlockHashProcessor.HISTORY_STORAGE_ADDRESS))
         .thenReturn(account);
   }
 
@@ -72,7 +73,7 @@ void shouldNotStoreBlockHashForGenesisBlock() {
     mockAncestorHeaders(currentBlockHeader, 0);
 
     processor.processBlockHashes(mutableWorldState, currentBlockHeader);
-    verifyNoInteractions(account);
+    verify(account, times(0)).setStorageValue(any(), any());
   }
 
   @Test
@@ -89,6 +90,20 @@ void shouldStoreAncestorBlockHashesAtForkCorrectlyParentIsGenesis() {
     verifyAccount(0, historicalWindow);
   }
 
+  @Test
+  void shouldNotStoreBlockHashIfContractIsNotDeployed() {
+    when(worldUpdater.getAccount(PragueBlockHashProcessor.HISTORY_STORAGE_ADDRESS))
+        .thenReturn(null);
+
+    long currentBlock = 1;
+    processor = new PragueBlockHashProcessor();
+    BlockHeader currentBlockHeader = mockBlockHeader(currentBlock);
+    mockAncestorHeaders(currentBlockHeader, 0);
+
+    processor.processBlockHashes(mutableWorldState, currentBlockHeader);
+    verifyNoInteractions(account);
+  }
+
   @Test
   void shouldWriteGenesisHashAtSlot0() {
     processor = new PragueBlockHashProcessor();