Skip to content

Commit ffbf042

Browse files
authored
Merge pull request #61 from bttcprotocol/release_1.0.6
Release 1.0.6
2 parents 88141c2 + 320b948 commit ffbf042

36 files changed

+3211
-45
lines changed

.golangci.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ linters:
1111
- wrapcheck
1212
- gochecknoglobals
1313
- goerr113
14+
- gochecknoinits
15+
- exhaustivestruct
16+
- cyclop
17+
- nestif
18+
- gocognit
1419

1520
service:
1621
golangci-lint-version: 1.41

app/app.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import (
2626
"github.com/maticnetwork/heimdall/clerk"
2727
clerkTypes "github.com/maticnetwork/heimdall/clerk/types"
2828
"github.com/maticnetwork/heimdall/common"
29+
"github.com/maticnetwork/heimdall/featuremanager"
30+
featuremanagerTypes "github.com/maticnetwork/heimdall/featuremanager/types"
31+
featuremanagerUtil "github.com/maticnetwork/heimdall/featuremanager/util"
2932
gov "github.com/maticnetwork/heimdall/gov"
3033
govTypes "github.com/maticnetwork/heimdall/gov/types"
3134
"github.com/maticnetwork/heimdall/helper"
@@ -72,6 +75,7 @@ var (
7275
bank.AppModuleBasic{},
7376
supply.AppModuleBasic{},
7477
chainmanager.AppModuleBasic{},
78+
featuremanager.AppModuleBasic{},
7579
staking.AppModuleBasic{},
7680
checkpoint.AppModuleBasic{},
7781
bor.AppModuleBasic{},
@@ -110,6 +114,7 @@ type HeimdallApp struct {
110114
SupplyKeeper supply.Keeper
111115
GovKeeper gov.Keeper
112116
ChainKeeper chainmanager.Keeper
117+
FeatureKeeper featuremanager.Keeper
113118
CheckpointKeeper checkpoint.Keeper
114119
StakingKeeper staking.Keeper
115120
BorKeeper bor.Keeper
@@ -239,12 +244,15 @@ func NewHeimdallApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.Ba
239244
app.subspaces[supplyTypes.ModuleName] = app.ParamsKeeper.Subspace(supplyTypes.DefaultParamspace)
240245
app.subspaces[govTypes.ModuleName] = app.ParamsKeeper.Subspace(govTypes.DefaultParamspace).WithKeyTable(govTypes.ParamKeyTable())
241246
app.subspaces[chainmanagerTypes.ModuleName] = app.ParamsKeeper.Subspace(chainmanagerTypes.DefaultParamspace)
247+
app.subspaces[featuremanagerTypes.ModuleName] = app.ParamsKeeper.Subspace(featuremanagerTypes.DefaultParamspace)
242248
app.subspaces[stakingTypes.ModuleName] = app.ParamsKeeper.Subspace(stakingTypes.DefaultParamspace)
243249
app.subspaces[slashingTypes.ModuleName] = app.ParamsKeeper.Subspace(slashingTypes.DefaultParamspace)
244250
app.subspaces[checkpointTypes.ModuleName] = app.ParamsKeeper.Subspace(checkpointTypes.DefaultParamspace)
245251
app.subspaces[borTypes.ModuleName] = app.ParamsKeeper.Subspace(borTypes.DefaultParamspace)
246252
app.subspaces[clerkTypes.ModuleName] = app.ParamsKeeper.Subspace(clerkTypes.DefaultParamspace)
247253
app.subspaces[topupTypes.ModuleName] = app.ParamsKeeper.Subspace(topupTypes.DefaultParamspace)
254+
255+
featuremanagerUtil.InitFeatureConfig(app.subspaces[featuremanagerTypes.ModuleName])
248256
//
249257
// Contract caller
250258
//
@@ -333,7 +341,8 @@ func NewHeimdallApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.Ba
333341
govRouter := gov.NewRouter()
334342
govRouter.
335343
AddRoute(govTypes.RouterKey, govTypes.ProposalHandler).
336-
AddRoute(paramsTypes.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper))
344+
AddRoute(paramsTypes.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)).
345+
AddRoute(featuremanagerTypes.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper))
337346

338347
app.GovKeeper = gov.NewKeeper(
339348
app.cdc,
@@ -345,6 +354,14 @@ func NewHeimdallApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.Ba
345354
govRouter,
346355
)
347356

357+
// create feature keeper
358+
app.FeatureKeeper = featuremanager.NewKeeper(
359+
app.cdc,
360+
app.subspaces[featuremanagerTypes.ModuleName],
361+
app.GovKeeper,
362+
common.DefaultCodespace,
363+
)
364+
348365
app.CheckpointKeeper = checkpoint.NewKeeper(
349366
app.cdc,
350367
keys[checkpointTypes.StoreKey], // target store
@@ -395,6 +412,7 @@ func NewHeimdallApp(logger log.Logger, db dbm.DB, baseAppOptions ...func(*bam.Ba
395412
supply.NewAppModule(app.SupplyKeeper, &app.caller),
396413
gov.NewAppModule(app.GovKeeper, app.SupplyKeeper),
397414
chainmanager.NewAppModule(app.ChainKeeper, &app.caller),
415+
featuremanager.NewAppModule(app.FeatureKeeper),
398416
staking.NewAppModule(app.StakingKeeper, &app.caller),
399417
slashing.NewAppModule(app.SlashingKeeper, app.StakingKeeper, &app.caller),
400418
checkpoint.NewAppModule(app.CheckpointKeeper, app.StakingKeeper, app.TopupKeeper, &app.caller),

bridge/cmd/statesynced.go

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
package cmd
2+
3+
import (
4+
"encoding/hex"
5+
"encoding/json"
6+
"fmt"
7+
"strconv"
8+
9+
"github.com/cosmos/cosmos-sdk/client/context"
10+
"github.com/maticnetwork/heimdall/bridge/setu/util"
11+
"github.com/maticnetwork/heimdall/helper"
12+
"github.com/spf13/cobra"
13+
"github.com/spf13/viper"
14+
15+
hmtypes "github.com/maticnetwork/heimdall/types"
16+
)
17+
18+
func tokenMapShowAll(eventProcessor *util.TokenMapProcessor) error {
19+
mmap, err := eventProcessor.GetTokenMap()
20+
if err != nil {
21+
return err
22+
}
23+
24+
for k, v := range mmap {
25+
helper.Logger.Info(
26+
fmt.Sprintf("----------- %s chain [%d items] -----------", k, len(v)))
27+
28+
for _, item := range v {
29+
msg, err := json.Marshal(item)
30+
if err != nil {
31+
return err
32+
}
33+
34+
helper.Logger.Info(string(msg))
35+
}
36+
37+
helper.Logger.Info("----------- ------------------- -----------")
38+
}
39+
40+
return nil
41+
}
42+
43+
func tokenMapShowOne(eventProcessor *util.TokenMapProcessor, chainType string) error {
44+
mlist, err := eventProcessor.GetTokenMapByRootType(chainType)
45+
if err != nil {
46+
return err
47+
}
48+
49+
helper.Logger.Info(
50+
fmt.Sprintf("----------- %s chain [%d items] -----------",
51+
chainType, len(mlist)))
52+
53+
for _, item := range mlist {
54+
msg, err := json.Marshal(item)
55+
if err != nil {
56+
return err
57+
}
58+
59+
helper.Logger.Info(string(msg))
60+
}
61+
62+
helper.Logger.Info("----------- ------------------- -----------")
63+
64+
return nil
65+
}
66+
67+
func tokenMapShowHash(eventProcessor *util.TokenMapProcessor) error {
68+
hashBytes, err := eventProcessor.GetHash()
69+
if err != nil {
70+
return err
71+
}
72+
73+
if hashBytes == nil {
74+
helper.Logger.Info("Hash value not found")
75+
76+
return nil
77+
}
78+
79+
helper.Logger.Info(fmt.Sprintf("Hash Value: %s", hex.EncodeToString(hashBytes)))
80+
81+
return nil
82+
}
83+
84+
func queryTokenMapCmd() *cobra.Command {
85+
cmd := &cobra.Command{
86+
Use: "tokenmap-query [root-chain-type|all|hash|end-block|last-event-id]",
87+
Short: "query token items for one chain or all",
88+
Args: cobra.ExactArgs(1),
89+
RunE: func(cmd *cobra.Command, args []string) error {
90+
chainType := args[0]
91+
92+
bridgeDB := util.GetBridgeDBInstance(viper.GetString(util.BridgeDBFlag))
93+
if bridgeDB == nil {
94+
return fmt.Errorf("query parameter error, open db failed")
95+
}
96+
97+
eventProcessor := util.NewTokenMapProcessor(context.NewCLIContext(), bridgeDB)
98+
99+
switch chainType {
100+
case "all":
101+
return tokenMapShowAll(eventProcessor)
102+
103+
case hmtypes.RootChainTypeEth, hmtypes.RootChainTypeTron, hmtypes.RootChainTypeBsc:
104+
return tokenMapShowOne(eventProcessor, chainType)
105+
106+
case "hash":
107+
return tokenMapShowHash(eventProcessor)
108+
109+
case "end-block":
110+
helper.Logger.Info(fmt.Sprintf("End Block: %d",
111+
eventProcessor.TokenMapCheckedEndBlock))
112+
113+
case "last-event-id":
114+
helper.Logger.Info(fmt.Sprintf("Last Event ID: %d",
115+
eventProcessor.TokenMapLastEventID))
116+
117+
default:
118+
return fmt.Errorf("query parameter error, should be [root-chain-type|all|hash|end-block|last-event-id]")
119+
}
120+
121+
return nil
122+
},
123+
}
124+
125+
return cmd
126+
}
127+
128+
func setTokenMapEventIDCmd() *cobra.Command {
129+
logger := helper.Logger
130+
131+
cmd := &cobra.Command{
132+
Use: "tokenmap-set-event-id [event-id]",
133+
Short: "set event id for token map processor",
134+
Args: cobra.ExactArgs(1),
135+
RunE: func(cmd *cobra.Command, args []string) error {
136+
eventIDStr := args[0]
137+
138+
eventID, err := strconv.ParseUint(eventIDStr, util.DigitBase, util.DigitBitSize)
139+
if err != nil {
140+
return err
141+
}
142+
143+
bridgeDB := util.GetBridgeDBInstance(viper.GetString(util.BridgeDBFlag))
144+
if bridgeDB == nil {
145+
return fmt.Errorf("query parameter error, open db failed")
146+
}
147+
148+
eventProcessor := util.NewTokenMapProcessor(context.NewCLIContext(), bridgeDB)
149+
eventIDNow := eventProcessor.TokenMapLastEventID
150+
151+
if err := eventProcessor.UpdateTokenMapLastEventID(eventID); err != nil {
152+
return err
153+
}
154+
logger.Info(
155+
fmt.Sprintf("Modify last event ID from %d to %d", eventIDNow, eventID))
156+
157+
return nil
158+
},
159+
}
160+
161+
return cmd
162+
}
163+
164+
func setTokenMapEndBlockCmd() *cobra.Command {
165+
logger := helper.Logger
166+
cmd := &cobra.Command{
167+
Use: "tokenmap-set-end-block [block-id]",
168+
Short: "set end block for token map processor",
169+
Args: cobra.ExactArgs(1),
170+
RunE: func(cmd *cobra.Command, args []string) error {
171+
blockID, err := strconv.ParseInt(args[0], util.DigitBase, util.DigitBitSize)
172+
if err != nil {
173+
return err
174+
}
175+
176+
bridgeDB := util.GetBridgeDBInstance(viper.GetString(util.BridgeDBFlag))
177+
if bridgeDB == nil {
178+
return fmt.Errorf("query parameter error, open db failed")
179+
}
180+
181+
eventProcessor := util.NewTokenMapProcessor(context.NewCLIContext(), bridgeDB)
182+
blockIDNow := eventProcessor.TokenMapCheckedEndBlock
183+
184+
if err := eventProcessor.UpdateTokenMapCheckedEndBlock(blockID); err != nil {
185+
return err
186+
}
187+
188+
logger.Info(fmt.Sprintf("Modify end block from %d to %d", blockIDNow, blockID))
189+
190+
return nil
191+
},
192+
}
193+
194+
return cmd
195+
}
196+
197+
func removeTokenMapCmd() *cobra.Command {
198+
logger := helper.Logger
199+
cmd := &cobra.Command{
200+
Use: "tokenmap-remove",
201+
Short: "remove token map to regenerate it",
202+
Args: cobra.ExactArgs(0),
203+
RunE: func(cmd *cobra.Command, args []string) error {
204+
bridgeDB := util.GetBridgeDBInstance(viper.GetString(util.BridgeDBFlag))
205+
if bridgeDB == nil {
206+
return fmt.Errorf("query parameter error, open db failed")
207+
}
208+
209+
eventProcessor := util.NewTokenMapProcessor(context.NewCLIContext(), bridgeDB)
210+
eventIDNow := eventProcessor.TokenMapLastEventID
211+
endBlockNow := eventProcessor.TokenMapCheckedEndBlock
212+
hashNow := ""
213+
214+
hashBytes, err := eventProcessor.GetHash()
215+
if err != nil {
216+
return err
217+
}
218+
if hashBytes != nil {
219+
hashNow = hex.EncodeToString(hashBytes)
220+
}
221+
222+
if err := eventProcessor.ResetParameters(); err != nil {
223+
return err
224+
}
225+
226+
logger.Info(
227+
fmt.Sprintf("\nRemove map, lastest status:\nLastEventID:\t%d\nEndBlock:\t%d\nHash:\t%s",
228+
eventIDNow, endBlockNow, hashNow))
229+
230+
return nil
231+
},
232+
}
233+
234+
return cmd
235+
}
236+
237+
func init() {
238+
rootCmd.AddCommand(queryTokenMapCmd())
239+
rootCmd.AddCommand(setTokenMapEventIDCmd())
240+
rootCmd.AddCommand(setTokenMapEndBlockCmd())
241+
rootCmd.AddCommand(removeTokenMapCmd())
242+
}

0 commit comments

Comments
 (0)