anchor.diff:  
   get_block(NodeName, Height, Cfg) ->
       request(NodeName, [v2, 'block-by-height'], #{height => Height}, Cfg).
  +
  +cfg(Keys, Cfg) when is_list(Keys) ->
  +    [cfg(K, Cfg) || K <- Keys];
  +cfg(Key, Cfg) ->
  +    case proplists:get_value(Key, Cfg) of
  +        undefined -> exit({key_not_found, Key});
  +        Value     -> Value
  +    end.
  
positive.code: % Test cases
  -export([
      startup_speed/1,
      sync_speed/1
  ]).
  
  -import(aest_nodes, [
  
negative.code: %=== TEST CASES ================================================================
  
  startup_speed(Cfg) ->
      Height = ?cfg(height),
  
      setup_nodes([spec(node, [], #{source => ?cfg(source)})], Cfg),
      start_node(node, Cfg),
      wait_for_startup([node], Height, Cfg),
      wait_for_value({height, Height}, [node], ?cfg(startup_timeout), Cfg).
  
  sync_speed(Cfg) ->
      [Height, MineRate] = ?cfg([height, mine_rate]),
  
      InitialNodes = [n1, n2, n3, n4],
  
      InitialNodeSpecs = cluster(InitialNodes, #{
          mine_rate => MineRate,
          source => ?cfg(source)
      }),
      NewNodesSpec = [
          spec(N, InitialNodes, #{mine_rate => MineRate})
  