github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/msg_convert.go (about) 1 package staking 2 3 import ( 4 "encoding/json" 5 "errors" 6 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/baseapp" 8 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 9 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 10 "github.com/fibonacci-chain/fbc/x/common" 11 "github.com/fibonacci-chain/fbc/x/staking/types" 12 ) 13 14 var ( 15 ErrCheckSignerFail = errors.New("check signer fail") 16 ) 17 18 func init() { 19 RegisterConvert() 20 } 21 22 func RegisterConvert() { 23 enableHeight := tmtypes.GetVenus3Height() 24 baseapp.RegisterCmHandle("fbexchain/staking/MsgDeposit", baseapp.NewCMHandle(ConvertDepositMsg, enableHeight)) 25 baseapp.RegisterCmHandle("fbexchain/staking/MsgWithdraw", baseapp.NewCMHandle(ConvertWithdrawMsg, enableHeight)) 26 baseapp.RegisterCmHandle("fbexchain/staking/MsgAddShares", baseapp.NewCMHandle(ConvertAddSharesMsg, enableHeight)) 27 } 28 29 func ConvertDepositMsg(data []byte, signers []sdk.AccAddress) (sdk.Msg, error) { 30 newMsg := types.MsgDeposit{} 31 err := json.Unmarshal(data, &newMsg) 32 if err != nil { 33 return nil, err 34 } 35 err = newMsg.ValidateBasic() 36 if err != nil { 37 return nil, err 38 } 39 if ok := common.CheckSignerAddress(signers, newMsg.GetSigners()); !ok { 40 return nil, ErrCheckSignerFail 41 } 42 return newMsg, nil 43 } 44 45 func ConvertWithdrawMsg(data []byte, signers []sdk.AccAddress) (sdk.Msg, error) { 46 newMsg := types.MsgWithdraw{} 47 err := json.Unmarshal(data, &newMsg) 48 if err != nil { 49 return nil, err 50 } 51 err = newMsg.ValidateBasic() 52 if err != nil { 53 return nil, err 54 } 55 if ok := common.CheckSignerAddress(signers, newMsg.GetSigners()); !ok { 56 return nil, ErrCheckSignerFail 57 } 58 return newMsg, nil 59 } 60 61 func ConvertAddSharesMsg(data []byte, signers []sdk.AccAddress) (sdk.Msg, error) { 62 newMsg := types.MsgAddShares{} 63 err := json.Unmarshal(data, &newMsg) 64 if err != nil { 65 return nil, err 66 } 67 err = newMsg.ValidateBasic() 68 if err != nil { 69 return nil, err 70 } 71 if ok := common.CheckSignerAddress(signers, newMsg.GetSigners()); !ok { 72 return nil, ErrCheckSignerFail 73 } 74 return newMsg, nil 75 }