go/consensus, with the general interfaces in
go/consensus/api. The general rule is that anything outside of a specific consensus backend package should be consensus backend agnostic.
go/<service>/api), with all concrete service implementations living together with the consensus backend implementation. The service API defines the transaction format for mutating state together with any query methods (both are consensus backend agnostic).
go/consensus/tendermint/<service>. They provide the glue between the services running as part of the ABCI application multiplexer and the Oasis Core service APIs. The interfaces generally provide a read-only view of the consensus layer state at a given height. Internally, these perform queries against the ABCI application state.
QueryFactorywhich can be used to query state at a specific block height.
QueryFactoryand the corresponding
Queryinterfaces for the staking service are as follows: