Module Proxy.ProtoRpc

When about to do a RPC request, how to modify the request; to possibly request a parent tree of the key, to batch successive requests into one.

For example when requesting baking_rights, there's the following sequence of requests (for carthage):

v1;constants v1;first_level

To speed things up, this function returns "v1" on any of these keys, to do a single request instead of two. This list is arbitrary. It was built by initial input from @klakplok and by experimenting.

This function guarantees that if it returns Some(prefix, suffix) then prefix @@ suffix = key.

val failure_is_permanent : Tezos_protocol_environment.Proxy_context.M.key -> bool

failure_is_permanent key means that, if the request rpc get /chains/<chain_id>/blocks/<block_id>/context/raw/bytes/key fails once, then it should not be retried; because this key is known to be missing all the time. It is safe to return always false. Returning true for some keys will reduce the number of RPC calls.