anchor.diff:  
   %% -- Get Header by Hash -----------------------------------------------------
   handle_get_header_by_hash(S, MsgObj) ->
  -    Msg =
  -        case maps:get(<<"hash">>, MsgObj, undefined) of
  -            EncHash when is_binary(EncHash) ->
  -                case aec_base58c:safe_decode(block_hash, EncHash) of
  -                    {ok, Hash} ->
  -                        case aec_chain:get_header(Hash) of
  -                            {ok, Header} ->
  -                                {ok, HH} = aec_headers:serialize_to_map(Header),
  -                                #{result => ok, header => HH};
  -                            error ->
  -                                #{result => error, reason => <<"Block not found">>}
  -                        end;
  -                    {error, Reason} ->
  -                        #{ <<"result">> => error, <<"reason">> => Reason }
  -                end;
  -            _ ->
  -                #{ <<"result">> => error, <<"reason">> => <<"bad request">> }
  -        end,
  +    Msg = get_header(maps:get(<<"hash">>, MsgObj, undefined)),
       send_msg(S, ?MSG_GET_HEADER_BY_HASH_RSP, Msg),
       S.
   
  
positive.code: try_connect(Parent, Host, Port, Timeout) ->
      Res =
          try
              gen_tcp:connect(Host, Port, [binary, {reuseaddr, true}, {active, true}], Timeout)
          catch _E:R ->
              {error, R}
          end,
  
negative.code:                 , {prologue, <<Version/binary, Genesis/binary>>}
                  , {rs, enoise_keypair:new(dh25519, RemotePub)}
                  , {timeout, ?NOISE_HS_TIMEOUT} ],
      %% Keep the socket passive until here to avoid premature message
      %% receiving...
      inet:setopts(TcpSock, [{active, true}]),
      case enoise:connect(TcpSock, NoiseOpts) of
          {ok, ESock, _} ->
              lager:debug("Peer connected to ~p", [{maps:get(host, S), maps:get(port, S)}]),
  