anchor.diff:  -include("common.hrl").
   -include("blocks.hrl").
   
  +-define(MSG_FRAGMENT, 0).
   -define(MSG_PING, 1).
   -define(MSG_PING_RSP, 2).
   -define(MSG_GET_HEADER_BY_HASH, 3).
  
positive.code:         true ->
              {stop, normal, S};
          false ->
              case aec_peers:connect_fail(peer_id(S), self()) of
                  keep ->
                      {noreply, S#{ status := error }};
                  close ->
                      {stop, normal, S}
              end
      end;
  handle_info(Msg, S) ->
      lager:debug("ZZPC: unexpected message ~p", [Msg]),
  
negative.code:             %% Maybe instead report permanent fail + block?!
              lager:debug("ZZPC: eniose:connect() failed", []),
              gen_tcp:close(TcpSock),
              connect_fail(S)
      end;
  
  handle_info({noise, _, <<?MSG_FRAGMENT:16, N:16, M:16, Fragment/binary>>}, S) ->
      handle_fragment(S, N, M, Fragment);
  handle_info({noise, _, <<Type:16, Payload/binary>>}, S) ->
      {ok, Msg} = msgpack:unpack(Payload),
      S1 = handle_msg(S, Type, Msg),
  