RPC stuff that needs to be written in the architecture book: ## General - diagram showing full pipeline from input to output with crate responsibilities listed along the line ## The handler - {json-rpc, binary, other} handler functions implemented in `cuprated` - handler -> helper function -> internal component's `Service` ## Unsupported RPC calls / RPC calls with different behavior - https://github.com/Cuprate/cuprate/issues/278 - binary strings -> full JSON: `get_transaction_pool_backlog`, `get_output_distribution` - not in `monerod` yet: `get_tx_ids_loose` ## Differences with monerod (Request strictness) Some of `monerod`'s RPC request types contain fields not for users to provide, but for internal usage within the RPC handlers and `monerod` itself, some examples: - Unless one of these actually allows something unintentionally bad to happen, this is mostly an unimportant detail. Practically, it means users can provide these fields and `monerod` will deserialize them and accept them fine, while `cuprated` will not because they are not part of the type.