anchor.diff:  
       [?assertEqual(A, B) || A <- AllBlocks, B <- AllBlocks, A =/= B].
   
  +stay_in_sync(Cfg) ->
  +    Height = ?cfg(height),
  +    Nodes = [n1, n2, n3, n4, n5, n6],
  +    setup_nodes(cluster(Nodes, #{
  +        mine_rate => ?cfg(mine_rate),
  +        source => ?cfg(source)
  +    }), Cfg),
  +    [start_node(N, Cfg) || N <- Nodes],
  +    wait_for_startup(Nodes, Height, Cfg),
  +    wait_for_value({height, Height + 500}, Nodes, ?cfg(mine_timeout) * 500, Cfg),
  +
  +    Blocks = [{N, get_block(N, Height + 500, Cfg)} || N <- Nodes],
  +    [?assertEqual(AB, BB) || {AN, AB} <- Blocks, {BN, BB} <- Blocks, AN =/= BN].
  +
   %=== INTERNAL FUNCTIONS ========================================================
   
   cluster(Names, Spec) -> [spec(N, Names -- [N], Spec) || N <- Names].
  
positive.code: groups() ->
      [{long_chain, [], [
          startup_speed,
          sync_speed
      ]}].
  
  init_per_suite(Cfg) ->
  
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})
  