Loc:https://github.com/MrXJC/CosmosSDK-in-Action/tree/master/Example/mymodule/cmd/gaia/app
下面是我具体添加mymodule的代码片段,具体细节见注释。
// Extended ABCI applicationtype GaiaApp struct {*bam.BaseAppcdc *wire.Codec// keys to access the substores...// 1.添加自己的keykeyMymodule *sdk.KVStoreKey// Manage getting and setting accounts...// 2.添加自己的keepermymoduleKeeper mymodule.Keeper}func NewGaiaApp(logger log.Logger, db dbm.DB) *GaiaApp {cdc := MakeCodec()// create your application objectvar app = &GaiaApp{...// 3.初始化自己的keykeyMymodule: sdk.NewKVStoreKey("mymodule"),}// define the accountMapper...// add handlers...// 4.初始化自己的keeperapp.mymoduleKeeper = mymodule.NewKeeper(app.cdc, app.keyMymodule, app.coinKeeper,app.RegisterCodespace(mymodule.DefaultCodespace))// register message routes...// 5.添加自己的module的handlerapp.Router().AddRoute("mymodule",mymodule.NewHandler(app.mymoduleKeeper))// initialize BaseApp// 6.初始化区块链的时刻调用的handlerapp.SetInitChainer(app.initChainer)// 7.设置每次beginblock时刻调用的handlerapp.SetBeginBlocker(gov.NewBeginBlocker(app.govKeeper))// 8.设置每次endblock时刻调用的handlerapp.SetEndBlocker(stake.NewEndBlocker(app.stakeKeeper))// 9.添加自己的key到StoresIAVLtree中app.MountStoresIAVL(app.keyMain, app.keyAccount, app.keyIBC, app.keyStake, app.keyGov,app.keyMymodule)// 10.设置每次消息都会调用的handlerapp.SetAnteHandler(auth.NewAnteHandler(app.accountMapper, stake.FeeHandler))...return app}// custom tx codecfunc MakeCodec() *wire.Codec {var cdc = wire.NewCodec()...// 11.注册自己的Wiremymodule.RegisterWire(cdc)return cdc}