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  }