anchor.diff:      ok.
   
   new_nodes_can_mine_and_sync_fast_minimal_chain_with_pow(Cfg) ->
  -    {H1, H2, HCheck} = {20, 30, 45},
  -    aest_nodes:setup_nodes([?FAST_NEW_NODE1(H1, H2),
  -                            ?FAST_NEW_NODE2(H1, H2)], Cfg),
  +    Ps = fast_protocols(15),
  +    HCheck = maps:get(new_protocol_version(), Ps),
  +    aest_nodes:setup_nodes([?FAST_NEW_NODE1(Ps),
  +                            ?FAST_NEW_NODE2(Ps)], Cfg),
       start_node(fast_new_node1, Cfg),
       run_erl_cmd_on_node(fast_new_node1, "aec_conductor:start_mining().", "ok", Cfg), %% It would be better to configure node to autostart mining in the first place.
       wait_for_height_syncing(HCheck, [fast_new_node1], {{45000, ms}, {5, blocks}}, Cfg),
  
positive.code:     ok = mock_pow_on_node(old_node1, Cfg), %% TODO Make configurable.
      run_erl_cmd_on_node(new_node3, "aec_conductor:start_mining().", "ok", Cfg), %% It would be better to: stop container, reinstantiate config template, start container.
      wait_for_height_syncing(HeightToBeMinedWithOldProtocol, [new_node3], {{10000, ms}, {1000, blocks}}, Cfg),
      #{version := ?V_0_11_0_PROTOCOL_VERSION, %% TODO Check mining capability with all protocols - not only the last one.
        hash := HashMined} = get_block_by_height(new_node3, HeightToBeMinedWithOldProtocol, Cfg),
      %% Ensure distinct non-mining new node can sync mined block(s).
      wait_for_height_syncing(HeightToBeMinedWithOldProtocol, [new_node4], {{45000, ms}, {200, blocks}}, Cfg),
  
negative.code: init_per_group(upgrade_flow_smoke_test, Config) ->
      {_, TopHeight} = proplists:lookup(db_backup_top_height, Config),
      NewConfig = aest_nodes:ct_setup(Config),
      Ps = protocols(?HEIGHT_OF_NEW_PROTOCOL(TopHeight)),
      aest_nodes:setup_nodes(
        [?OLD_NODE1,
         ?NEW_NODE3(Ps),
         ?NEW_NODE4(Ps)], NewConfig),
      NewConfig;
  init_per_group(hard_fork_old_chain_with_tx, Config) ->
      {_, TopHeight} = proplists:lookup(db_backup_top_height, Config),
      NewConfig = aest_nodes:ct_setup(Config),
      Ps = protocols(?HEIGHT_OF_NEW_PROTOCOL_UNREACHABLE(TopHeight)),
      aest_nodes:setup_nodes(
        [?OLD_NODE1,
         ?NEW_NODE3(Ps),
         ?NEW_NODE4(Ps)], NewConfig),
      NewConfig;
  init_per_group(hard_fork_new_chain_with_tx, Config) ->
      {_, TopHeight} = proplists:lookup(db_backup_top_height, Config),
      NewConfig = aest_nodes:ct_setup(Config),
      Ps = protocols(?HEIGHT_OF_NEW_PROTOCOL(TopHeight)),
      aest_nodes:setup_nodes(
        [?OLD_NODE1,
         ?NEW_NODE3(Ps),
         ?NEW_NODE4(Ps)], NewConfig),
      NewConfig.
  
  end_per_group(assumptions, _) -> ok;
  