github.com/badrootd/nibiru-cometbft@v0.37.5-0.20240307173500-2a75559eee9b/docs/architecture/adr-003-abci-app-rpc.md (about) 1 # ADR 3: Must an ABCI-app have an RPC server? 2 3 ## Context 4 5 ABCI-server could expose its own RPC-server and act as a proxy to Tendermint. 6 7 The idea was for the Tendermint RPC to just be a transparent proxy to the app. 8 Clients need to talk to Tendermint for proofs, unless we burden all app devs 9 with exposing Tendermint proof stuff. Also seems less complex to lock down one 10 server than two, but granted it makes querying a bit more kludgy since it needs 11 to be passed as a `Query`. Also, **having a very standard rpc interface means 12 the light-client can work with all apps and handle proofs**. The only 13 app-specific logic is decoding the binary data to a more readable form (eg. 14 json). This is a huge advantage for code-reuse and standardization. 15 16 ## Decision 17 18 We dont expose an RPC server on any of our ABCI-apps. 19 20 ## Status 21 22 Implemented 23 24 ## Consequences 25 26 ### Positive 27 28 - Unified interface for all apps 29 30 ### Negative 31 32 - `Query` interface 33 34 ### Neutral