@@ -16,6 +16,7 @@ import (
16
16
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
17
17
appmodulev2 "cosmossdk.io/core/appmodule/v2"
18
18
"cosmossdk.io/core/comet"
19
+ "cosmossdk.io/core/header"
19
20
"cosmossdk.io/core/registry"
20
21
"cosmossdk.io/core/server"
21
22
"cosmossdk.io/core/store"
@@ -96,7 +97,6 @@ func init() {
96
97
ProvideAppBuilder [transaction .Tx ],
97
98
ProvideEnvironment [transaction .Tx ],
98
99
ProvideModuleManager [transaction .Tx ],
99
- ProvideCometService ,
100
100
),
101
101
appconfig .Invoke (SetupAppBuilder ),
102
102
)
@@ -176,6 +176,8 @@ func ProvideEnvironment[T transaction.Tx](
176
176
config * runtimev2.Module ,
177
177
key depinject.ModuleKey ,
178
178
appBuilder * AppBuilder [T ],
179
+ kvFactory store.KVStoreServiceFactory ,
180
+ headerService header.Service ,
179
181
) (
180
182
appmodulev2.Environment ,
181
183
store.KVStoreService ,
@@ -197,7 +199,7 @@ func ProvideEnvironment[T transaction.Tx](
197
199
}
198
200
199
201
registerStoreKey (appBuilder , kvStoreKey )
200
- kvService = stf . NewKVStoreService ([]byte (kvStoreKey ))
202
+ kvService = kvFactory ([]byte (kvStoreKey ))
201
203
202
204
memStoreKey := fmt .Sprintf ("memory:%s" , key .Name ())
203
205
registerStoreKey (appBuilder , memStoreKey )
@@ -209,7 +211,7 @@ func ProvideEnvironment[T transaction.Tx](
209
211
BranchService : stf.BranchService {},
210
212
EventService : stf .NewEventService (),
211
213
GasService : stf .NewGasMeterService (),
212
- HeaderService : stf. HeaderService {} ,
214
+ HeaderService : headerService ,
213
215
QueryRouterService : stf .NewQueryRouterService (),
214
216
MsgRouterService : stf .NewMsgRouterService ([]byte (key .Name ())),
215
217
TransactionService : services .NewContextAwareTransactionService (),
@@ -220,8 +222,8 @@ func ProvideEnvironment[T transaction.Tx](
220
222
return env , kvService , memKvService
221
223
}
222
224
223
- func registerStoreKey [T transaction.Tx ](wrapper * AppBuilder [T ], key string ) {
224
- wrapper .app .storeKeys = append (wrapper .app .storeKeys , key )
225
+ func registerStoreKey [T transaction.Tx ](builder * AppBuilder [T ], key string ) {
226
+ builder .app .storeKeys = append (builder .app .storeKeys , key )
225
227
}
226
228
227
229
func storeKeyOverride (config * runtimev2.Module , moduleName string ) * runtimev2.StoreKeyConfig {
@@ -234,6 +236,28 @@ func storeKeyOverride(config *runtimev2.Module, moduleName string) *runtimev2.St
234
236
return nil
235
237
}
236
238
237
- func ProvideCometService () comet.Service {
238
- return & services.ContextAwareCometInfoService {}
239
+ // DefaultServiceBindings provides default services for the following service interfaces:
240
+ // - store.KVStoreServiceFactory
241
+ // - header.Service
242
+ // - comet.Service
243
+ //
244
+ // They are all required. For most use cases these default services bindings should be sufficient.
245
+ // Power users (or tests) may wish to provide their own services bindings, in which case they must
246
+ // supply implementations for each of the above interfaces.
247
+ func DefaultServiceBindings () depinject.Config {
248
+ var (
249
+ kvServiceFactory store.KVStoreServiceFactory = func (actor []byte ) store.KVStoreService {
250
+ return services .NewGenesisKVService (
251
+ actor ,
252
+ stf .NewKVStoreService (actor ),
253
+ )
254
+ }
255
+ headerService header.Service = services .NewGenesisHeaderService (stf.HeaderService {})
256
+ cometService comet.Service = & services.ContextAwareCometInfoService {}
257
+ )
258
+ return depinject .Supply (
259
+ kvServiceFactory ,
260
+ headerService ,
261
+ cometService ,
262
+ )
239
263
}
0 commit comments