package octez-shell-libs
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=aa2f5bc99cc4ca2217c52a1af2a2cdfd3b383208cb859ca2e79ca0903396ca1d
sha512=d68bb3eb615e3dcccc845fddfc9901c95b3c6dc8e105e39522ce97637b1308a7fa7aa1d271351d5933febd7476b2819e1694f31198f1f0919681f1f9cc97cb3a
doc/octez-shell-libs.proxy/Tezos_proxy/Proxy_getter/RequestsTree/index.html
Module Proxy_getter.RequestsTree
Source
The point of this data structure is as follows:
Suppose Make.cache
is like this, because key A has been requested already and the tree at A has two nodes B and C:
A-B \ C
If proxy_getter receives a request for A-D, there's no point doing a request, even if it's not there; because as A has been requested already; if A-D was available, it would be there already.
This is a crucial optimisation that reduces the number of .../raw/bytes RPC requests by 90% when executing baking_rights&?all=true locally, after the chain starts having more than a few cycles. More specifically, in baking_rights, the client keeps looking for (missing) keys of the form rolls;owner;snapshot;10;1;74;5;1354 while the parent key rolls;owner;snapshot;10;1 has been obtained before.
This structure has the invariant that all leaves are All
nodes. If requests A;B and A;C have been done, the tree is as follows:
APartial
-> BAll
\ \-------> CAll
If then request A is done, the tree becomes:
AAll