# 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.