From 0553bd42d31cad84b17853e677f7e3c3b5668305 Mon Sep 17 00:00:00 2001 From: yihuang Date: Thu, 2 May 2024 10:12:28 +0800 Subject: [PATCH] add store-block-list cmd --- x/cronos/client/cli/tx.go | 40 ++++++++++++++++++++++++++++++++++++++ x/cronos/types/messages.go | 25 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/x/cronos/client/cli/tx.go b/x/cronos/client/cli/tx.go index 3618c8dd6b..9ff2633ff4 100644 --- a/x/cronos/client/cli/tx.go +++ b/x/cronos/client/cli/tx.go @@ -3,6 +3,8 @@ package cli import ( "encoding/json" "fmt" + "io" + "os" "strconv" "strings" @@ -46,6 +48,7 @@ func GetTxCmd() *cobra.Command { cmd.AddCommand(CmdUpdateTokenMapping()) cmd.AddCommand(CmdTurnBridge()) cmd.AddCommand(CmdUpdatePermissions()) + cmd.AddCommand(CmdStoreBlockList()) cmd.AddCommand(MigrateGenesisCmd()) return cmd } @@ -319,6 +322,43 @@ func CmdUpdatePermissions() *cobra.Command { return cmd } +// CmdStoreBlockList returns a CLI command handler for updating cronos permissions +func CmdStoreBlockList() *cobra.Command { + cmd := &cobra.Command{ + Use: "store-block-list [encrypted-block-list-file]", + Short: "Store encrypted block list", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + fp, err := os.Open(args[0]) + if err != nil { + return err + } + defer fp.Close() + + // Read the file + blob, err := io.ReadAll(fp) + if err != nil { + return err + } + + msg := types.NewMsgStoreBlockList(clientCtx.GetFromAddress().String(), blob) + if err := msg.ValidateBasic(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} + type ExportEvmGenesisState struct { evmtypes.GenesisState Params ExportEvmParams `json:"params"` diff --git a/x/cronos/types/messages.go b/x/cronos/types/messages.go index d7a63da759..4981703385 100644 --- a/x/cronos/types/messages.go +++ b/x/cronos/types/messages.go @@ -23,6 +23,7 @@ var ( _ sdk.Msg = &MsgUpdateParams{} _ sdk.Msg = &MsgTurnBridge{} _ sdk.Msg = &MsgUpdatePermissions{} + _ sdk.Msg = &MsgStoreBlockList{} ) func NewMsgConvertVouchers(address string, coins sdk.Coins) *MsgConvertVouchers { @@ -318,3 +319,27 @@ func (msg *MsgUpdatePermissions) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } + +func NewMsgStoreBlockList(from string, blob []byte) *MsgStoreBlockList { + return &MsgStoreBlockList{ + From: from, + Blob: blob, + } +} + +func (msg *MsgStoreBlockList) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.From) + if err != nil { + return errors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid sender address (%s)", err) + } + return nil +} + +func (msg *MsgStoreBlockList) GetSigners() []sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(msg.From) + if err != nil { + panic(err) + } + + return []sdk.AccAddress{addr} +}