What is the most efficient way to generate version stamps in FDB

I had forgotten that Version and Versionstamp are different, as Versionstamp is (Version,Index in Batch). It wouldn’t be that large of a change to GetReadVersion to have the proxy add to each GetReadVersionReply the index of where this read version request was in the GRV batch to restore the uniqueness of the returned value.

Naively though, this would then be broken by read version batching on the client. However, there were previous discussions of making GetReadVersionRequest also communicate the number of batched requests that it represents, so that the Proxy/Ratekeeper can throttle more accurately. (Currently a client batching 20GRVs into 1 request is treated the same by Ratekeeper as a client batching 1 GRV into 1 request.). If this was implemented, then it’d be an easy change to have Proxies maintain a running sum of the number of batched requests as it iterates through and sends replies, so that each batched request then has a monotonic chunk of batch numbers it can use when constructing versionstamps.