# Octez Shell Improvements Wishlist To be discussed during Ecosystem call 2022-12-06. ## RPC ### Proxy server - It [exists](https://tezos.gitlab.io/user/proxy.html) and is [being maintained](https://gitlab.com/tezos/tezos/-/merge_requests/6738) - is it being used? - why write our own proxy? - instead, how about emitting http headers for a generic proxy server to know how long to cache certain requests (head block is valid for 15 seconds, numbered block is valid forever etc). This is typically done with the `Cache-Control: max-age=X` header. Then, anyone can stand a generic proxy server (like nginx or varnish) in front of it if they want. ### Pagination - There are well-known RPC endpoints that will make octez freeze: - recent tests with octez 15.1 on mainnet show **1min15sec** for endorsing rights query for one baker for a cycle. During this time, the node is stuck (does not sync, does not respond to concurrent RPC requests). (see [issue]( https://gitlab.com/tezos/tezos/-/issues/1614)) - baking rights query seems greatly improved (less than 2 seconds) - querying all contracts (`context/contracts`) takes forever: **1min53 on ghostnet**, **45sec on mainnet** (tests done with octez 15.1) - It should be impossible to freeze the node with an RPC request. Heavy requests must be **pagingated**: you can only query pages of baking rights or contract addresses, with the max page size set to a value known to not freeze the node for too long ## Deterministic Nonces See [first section of the Agora post "baking with just the context"](https://forum.tezosagora.org/t/baking-with-just-the-context/4861#nonce-revelation-1). When baking you may lose your endorsing rewards because: * you changed your baking machine and did not carry over the nonce file * you carried over the nonce file but you imported from a too recent snapshot and don't have the older cycle in your store. Deterministic nonces fix both problems. An implementation [exists](https://gitlab.com/tezos/tezos/-/merge_requests/5243). Let's merge it soon? ## Networking The behavior of Octez network is unusual, especially when it comes to binding to an interface: * [issue 1](https://gitlab.com/tezos/tezos/-/issues/4403): to enable external RPC traffic, it is necessary to pass the external ip address to `--listen-addr` (`0.0.0.0` does not work). * [issue 2](https://gitlab.com/tezos/tezos/-/issues/260): octez wants to bind to an external ip address in order to listen to p2p traffic on it. When using a third-party load balancer (cloud service or physical machine), this can not work. These important networking issues should be fixed as part of the [p2p maintenance](https://gitlab.com/tezos/tezos/-/milestones/77#tab-issues) milestone.