com.r3corda.core.node / ServiceHub

# ServiceHub

`interface ServiceHub`

A service hub simply vends references to the other services a node has. Some of those services may be missing or mocked out. This class is useful to pass to chunks of pluggable code that might have need of many different kinds of functionality and you dont want to hard-code which types in the interface.

All services exposed to protocols (public view) need to implement SerializeAsToken or similar to avoid being serialized in checkpoints.

TODO: Split into a public (to contracts etc) and private (to node) view

### Properties

clock | `abstract val clock: Clock`
identityService | `abstract val identityService: IdentityService`
keyManagementService | `abstract val keyManagementService: KeyManagementService`
networkMapCache | `abstract val networkMapCache: NetworkMapCache`
networkService | `abstract val networkService: MessagingService`
storageService | `abstract val storageService: StorageService`
walletService | `abstract val walletService: WalletService`

### Functions

loadState | `open fun loadState(stateRef: StateRef): ContractState` Given a StateRef loads the referenced transaction and looks up the specified output ContractState
recordTransactions | `open fun recordTransactions(txs: List<SignedTransaction>, skipRecordingMap: Boolean = false): Unit` Given a list of SignedTransactions, writes them to the local storage for validated transactions and then sends them to the wallet for further processing.
verifyTransaction | `open fun verifyTransaction(ltx: LedgerTransaction): Unit` Given a LedgerTransaction, looks up all its dependencies in the local database, uses the identity service to map the SignedTransactions the DB gives back into LedgerTransactions, and then runs the smart contracts for the transaction. If no exception is thrown, the transaction is valid.

### Inheritors

ServiceHubInternal | `interface ServiceHubInternal : ServiceHub`