diff --git a/errormsg/error.go b/errormsg/error.go index 490236c..559583d 100644 --- a/errormsg/error.go +++ b/errormsg/error.go @@ -1,6 +1,7 @@ package errormsg var ( - ErrorInvalidCreator = "invalid creator address (%s)" - InvalidRequest = "invalid request" + CouldNotGetValidatorIdentity = "could not get validator identity" + ErrorInvalidCreator = "invalid creator address (%s)" + InvalidRequest = "invalid request" ) diff --git a/util/determine_block_proposer.go b/util/determine_block_proposer.go index 22a4c73..a6db7a2 100644 --- a/util/determine_block_proposer.go +++ b/util/determine_block_proposer.go @@ -23,35 +23,37 @@ type KeyFile struct { PrivKey Key `json:"priv-key"` } -func GetValidatorCometBFTIdentity(ctx sdk.Context, rootDir string) (string, bool) { +func GetValidatorCometBFTIdentity(ctx sdk.Context, rootDir string) (validatorIdentity string, err error) { cfg := cometcfg.DefaultConfig() jsonFilePath := filepath.Join(rootDir, cfg.PrivValidatorKey) jsonFile, err := os.Open(jsonFilePath) if err != nil { GetAppLogger().Error(ctx, "error while opening config", err.Error()) - return "", false + return } jsonBytes, err := io.ReadAll(jsonFile) if err != nil { GetAppLogger().Error(ctx, "error while reading file", err.Error()) - return "", false + return } var keyFile KeyFile err = json.Unmarshal(jsonBytes, &keyFile) if err != nil { GetAppLogger().Error(ctx, "error while unmarshaling key file", err.Error()) - return "", false + return } - return strings.ToLower(keyFile.Address), true + validatorIdentity = strings.ToLower(keyFile.Address) + return } -func IsValidatorBlockProposer(ctx sdk.Context, proposerAddress []byte, rootDir string) bool { - validatorIdentity, validResult := GetValidatorCometBFTIdentity(ctx, rootDir) - if !validResult { - return false +func IsValidatorBlockProposer(ctx sdk.Context, proposerAddress []byte, rootDir string) (result bool) { + validatorIdentity, err := GetValidatorCometBFTIdentity(ctx, rootDir) + if err != nil { + return } hexProposerAddress := hex.EncodeToString(proposerAddress) - return hexProposerAddress == validatorIdentity + result = hexProposerAddress == validatorIdentity + return } diff --git a/x/dao/keeper/msg_server_distribution_request.go b/x/dao/keeper/msg_server_distribution_request.go index 97d1ef3..61c4e5b 100644 --- a/x/dao/keeper/msg_server_distribution_request.go +++ b/x/dao/keeper/msg_server_distribution_request.go @@ -5,6 +5,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/planetmint/planetmint-go/errormsg" "github.com/planetmint/planetmint-go/util" "github.com/planetmint/planetmint-go/x/dao/types" ) @@ -28,9 +29,13 @@ func (k msgServer) DistributionRequest(goCtx context.Context, msg *types.MsgDist util.GetAppLogger().Info(ctx, distributionRequestTag+"storing distribution: "+msg.GetDistribution().String()) k.StoreDistributionOrder(ctx, *msg.GetDistribution()) - validatorIdentity, validResult := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) - if !validResult || msg.Distribution.GetProposer() != validatorIdentity { - util.GetAppLogger().Info(ctx, distributionRequestTag+"Not the proposer. valid result: %t proposer: %s validator identity: %s", validResult, msg.Distribution.GetProposer(), validatorIdentity) + validatorIdentity, err := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) + if err != nil { + util.GetAppLogger().Error(ctx, distributionRequestTag+errormsg.CouldNotGetValidatorIdentity+": "+err.Error()) + return nil, err + } + if msg.Distribution.GetProposer() != validatorIdentity { + util.GetAppLogger().Info(ctx, distributionRequestTag+"Not the proposer. proposer: %s validator identity: %s", msg.Distribution.GetProposer(), validatorIdentity) return &types.MsgDistributionRequestResponse{}, nil } diff --git a/x/dao/keeper/msg_server_init_pop.go b/x/dao/keeper/msg_server_init_pop.go index 86305f6..870c33c 100644 --- a/x/dao/keeper/msg_server_init_pop.go +++ b/x/dao/keeper/msg_server_init_pop.go @@ -4,10 +4,15 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/planetmint/planetmint-go/errormsg" "github.com/planetmint/planetmint-go/util" "github.com/planetmint/planetmint-go/x/dao/types" ) +var ( + initPopTag = "init pop tag: " +) + func (k msgServer) InitPop(goCtx context.Context, msg *types.MsgInitPop) (*types.MsgInitPopResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) @@ -19,8 +24,12 @@ func (k msgServer) InitPop(goCtx context.Context, msg *types.MsgInitPop) (*types k.StoreChallenge(ctx, challenge) - validatorIdentity, validResult := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) - if validResult && msg.Initiator == validatorIdentity { + validatorIdentity, err := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) + if err != nil { + util.GetAppLogger().Error(ctx, initPopTag+errormsg.CouldNotGetValidatorIdentity+": "+err.Error()) + return nil, err + } + if msg.Initiator == validatorIdentity { go util.SendMqttPopInitMessagesToServer(ctx, challenge) } diff --git a/x/dao/keeper/msg_server_reissue_rddl_proposal.go b/x/dao/keeper/msg_server_reissue_rddl_proposal.go index cf6bf4d..6f0a1f1 100644 --- a/x/dao/keeper/msg_server_reissue_rddl_proposal.go +++ b/x/dao/keeper/msg_server_reissue_rddl_proposal.go @@ -5,6 +5,7 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/planetmint/planetmint-go/errormsg" "github.com/planetmint/planetmint-go/util" "github.com/planetmint/planetmint-go/x/dao/types" ) @@ -29,9 +30,13 @@ func (k msgServer) ReissueRDDLProposal(goCtx context.Context, msg *types.MsgReis reissuance.LastIncludedPop = msg.GetLastIncludedPop() k.StoreReissuance(ctx, reissuance) - validatorIdentity, validResult := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) - if !validResult || msg.Proposer != validatorIdentity { - util.GetAppLogger().Info(ctx, reissueTag+"Not the proposer. valid result: %t proposer: %s validator identity: %s", validResult, msg.Proposer, validatorIdentity) + validatorIdentity, err := util.GetValidatorCometBFTIdentity(ctx, k.RootDir) + if err != nil { + util.GetAppLogger().Error(ctx, reissueTag+errormsg.CouldNotGetValidatorIdentity+": "+err.Error()) + return nil, err + } + if msg.Proposer != validatorIdentity { + util.GetAppLogger().Info(ctx, reissueTag+"Not the proposer. proposer: %s validator identity: %s", msg.Proposer, validatorIdentity) return &types.MsgReissueRDDLProposalResponse{}, nil }