@@ -31,11 +31,6 @@ type AppBuilder[T transaction.Tx] struct {
31
31
postTxExec func (ctx context.Context , tx T , success bool ) error
32
32
}
33
33
34
- // DefaultGenesis returns a default genesis from the registered AppModule's.
35
- func (a * AppBuilder [T ]) DefaultGenesis () map [string ]json.RawMessage {
36
- return a .app .moduleManager .DefaultGenesis ()
37
- }
38
-
39
34
// RegisterModules registers the provided modules with the module manager.
40
35
// This is the primary hook for integrating with modules which are not registered using the app config.
41
36
func (a * AppBuilder [T ]) RegisterModules (modules map [string ]appmodulev2.AppModule ) error {
@@ -98,7 +93,7 @@ func (a *AppBuilder[T]) Build(opts ...AppBuilderOption[T]) (*App[T], error) {
98
93
99
94
endBlocker , valUpdate := a .app .moduleManager .EndBlock ()
100
95
101
- stf , err := stf .NewSTF [T ](
96
+ stf , err := stf .New [T ](
102
97
a .app .logger .With ("module" , "stf" ),
103
98
a .app .msgRouterBuilder ,
104
99
a .app .queryRouterBuilder ,
@@ -115,77 +110,75 @@ func (a *AppBuilder[T]) Build(opts ...AppBuilderOption[T]) (*App[T], error) {
115
110
}
116
111
a .app .stf = stf
117
112
118
- appManagerBuilder := appmanager.Builder [T ]{
119
- STF : a .app .stf ,
120
- DB : a .app .db ,
121
- ValidateTxGasLimit : a .app .config .GasConfig .ValidateTxGasLimit ,
122
- QueryGasLimit : a .app .config .GasConfig .QueryGasLimit ,
123
- SimulationGasLimit : a .app .config .GasConfig .SimulationGasLimit ,
124
- InitGenesis : func (
125
- ctx context.Context ,
126
- src io.Reader ,
127
- txHandler func (json.RawMessage ) error ,
128
- ) (store.WriterMap , error ) {
129
- // this implementation assumes that the state is a JSON object
130
- bz , err := io .ReadAll (src )
131
- if err != nil {
132
- return nil , fmt .Errorf ("failed to read import state: %w" , err )
133
- }
134
- var genesisJSON map [string ]json.RawMessage
135
- if err = json .Unmarshal (bz , & genesisJSON ); err != nil {
136
- return nil , err
137
- }
138
-
139
- v , zeroState , err := a .app .db .StateLatest ()
140
- if err != nil {
141
- return nil , fmt .Errorf ("unable to get latest state: %w" , err )
142
- }
143
- if v != 0 { // TODO: genesis state may be > 0, we need to set version on store
144
- return nil , errors .New ("cannot init genesis on non-zero state" )
145
- }
146
- genesisCtx := services .NewGenesisContext (a .branch (zeroState ))
147
- genesisState , err := genesisCtx .Mutate (ctx , func (ctx context.Context ) error {
148
- err = a .app .moduleManager .InitGenesisJSON (ctx , genesisJSON , txHandler )
149
- if err != nil {
150
- return fmt .Errorf ("failed to init genesis: %w" , err )
151
- }
152
- return nil
153
- })
154
-
155
- return genesisState , err
113
+ a .app .AppManager = appmanager .New [T ](
114
+ appmanager.Config {
115
+ ValidateTxGasLimit : a .app .config .GasConfig .ValidateTxGasLimit ,
116
+ QueryGasLimit : a .app .config .GasConfig .QueryGasLimit ,
117
+ SimulationGasLimit : a .app .config .GasConfig .SimulationGasLimit ,
156
118
},
157
- ExportGenesis : func ( ctx context. Context , version uint64 ) ([] byte , error ) {
158
- state , err := a .app .db . StateAt ( version )
159
- if err != nil {
160
- return nil , fmt . Errorf ( "unable to get state at given version: %w" , err )
161
- }
119
+ a . app . db ,
120
+ a .app .stf ,
121
+ a . initGenesis ,
122
+ a . exportGenesis ,
123
+ )
162
124
163
- genesisJson , err := a .app .moduleManager .ExportGenesisForModules (
164
- ctx ,
165
- func () store.WriterMap {
166
- return a .branch (state )
167
- },
168
- )
169
- if err != nil {
170
- return nil , fmt .Errorf ("failed to export genesis: %w" , err )
171
- }
125
+ return a .app , nil
126
+ }
172
127
173
- bz , err := json .Marshal (genesisJson )
174
- if err != nil {
175
- return nil , fmt .Errorf ("failed to marshal genesis: %w" , err )
176
- }
128
+ // initGenesis returns the app initialization genesis for modules
129
+ func (a * AppBuilder [T ]) initGenesis (ctx context.Context , src io.Reader , txHandler func (json.RawMessage ) error ) (store.WriterMap , error ) {
130
+ // this implementation assumes that the state is a JSON object
131
+ bz , err := io .ReadAll (src )
132
+ if err != nil {
133
+ return nil , fmt .Errorf ("failed to read import state: %w" , err )
134
+ }
135
+ var genesisJSON map [string ]json.RawMessage
136
+ if err = json .Unmarshal (bz , & genesisJSON ); err != nil {
137
+ return nil , err
138
+ }
139
+
140
+ v , zeroState , err := a .app .db .StateLatest ()
141
+ if err != nil {
142
+ return nil , fmt .Errorf ("unable to get latest state: %w" , err )
143
+ }
144
+ if v != 0 { // TODO: genesis state may be > 0, we need to set version on store
145
+ return nil , errors .New ("cannot init genesis on non-zero state" )
146
+ }
147
+ genesisCtx := services .NewGenesisContext (a .branch (zeroState ))
148
+ genesisState , err := genesisCtx .Mutate (ctx , func (ctx context.Context ) error {
149
+ err = a .app .moduleManager .InitGenesisJSON (ctx , genesisJSON , txHandler )
150
+ if err != nil {
151
+ return fmt .Errorf ("failed to init genesis: %w" , err )
152
+ }
153
+ return nil
154
+ })
177
155
178
- return bz , nil
156
+ return genesisState , err
157
+ }
158
+
159
+ // exportGenesis returns the app export genesis logic for modules
160
+ func (a * AppBuilder [T ]) exportGenesis (ctx context.Context , version uint64 ) ([]byte , error ) {
161
+ state , err := a .app .db .StateAt (version )
162
+ if err != nil {
163
+ return nil , fmt .Errorf ("unable to get state at given version: %w" , err )
164
+ }
165
+
166
+ genesisJson , err := a .app .moduleManager .ExportGenesisForModules (
167
+ ctx ,
168
+ func () store.WriterMap {
169
+ return a .branch (state )
179
170
},
171
+ )
172
+ if err != nil {
173
+ return nil , fmt .Errorf ("failed to export genesis: %w" , err )
180
174
}
181
175
182
- appManager , err := appManagerBuilder . Build ( )
176
+ bz , err := json . Marshal ( genesisJson )
183
177
if err != nil {
184
- return nil , fmt .Errorf ("failed to build app manager : %w" , err )
178
+ return nil , fmt .Errorf ("failed to marshal genesis : %w" , err )
185
179
}
186
- a .app .AppManager = appManager
187
180
188
- return a . app , nil
181
+ return bz , nil
189
182
}
190
183
191
184
// AppBuilderOption is a function that can be passed to AppBuilder.Build to customize the resulting app.
0 commit comments