anchor.diff:      SyncTimeout = proplists:get_value(sync_timeout, Cfg),
       wait_for_value({height, Height}, Nodes, SyncTimeout * Height, Cfg).
   
  -get_block(NodeName, Height, Cfg) ->
  -    request(NodeName, [v2, 'block-by-height'], #{height => Height}, Cfg).
  +get_block(NodeName, Height) ->
  +    case request(NodeName, 'GetBlockByHeight', #{height => Height}) of
  +        {ok, 200, Block} -> Block;
  +        _ -> error(undefined)
  +    end.
   
   cfg(Keys, Cfg) when is_list(Keys) ->
       [cfg(K, Cfg) || K <- Keys];
  
positive.code:     wait_for_startup([Node], 0, Cfg),
      wait_for_sync([Node], Height, Cfg),
      End = erlang:system_time(millisecond),
      Block = get_block(Node, Height, Cfg),
      % Sanity check that syncing does not take longer than mining
      ?assert(End - Start =< time_to_ms(?cfg(mine_time))),
      Block.
  
negative.code:         interval => ?cfg(mine_interval)
      }),
  
      Blocks = [{N, get_block(N, Reached)} || N <- Nodes],
      [?assertEqual(AB, BB) || {AN, AB} <- Blocks, {BN, BB} <- Blocks, AN =/= BN].
  
  %=== INTERNAL FUNCTIONS ========================================================
  