mirror of
https://github.com/planetmint/planetmint-go.git
synced 2025-07-01 10:22:30 +00:00
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package keeper
|
|
|
|
import (
|
|
"context"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/planetmint/planetmint-go/util"
|
|
"github.com/planetmint/planetmint-go/x/dao/types"
|
|
)
|
|
|
|
func (k msgServer) InitPop(goCtx context.Context, msg *types.MsgInitPop) (*types.MsgInitPopResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
|
|
|
var challenge types.Challenge
|
|
challenge.Initiator = msg.GetInitiator()
|
|
challenge.Challengee = msg.GetChallengee()
|
|
challenge.Challenger = msg.GetChallenger()
|
|
challenge.Height = msg.GetHeight()
|
|
|
|
k.StoreChallenge(ctx, challenge)
|
|
|
|
if util.IsValidatorBlockProposer(ctx, k.RootDir) {
|
|
go util.SendMqttPopInitMessagesToServer(ctx, challenge)
|
|
}
|
|
|
|
amount := k.GetValidatorPoPReward(ctx)
|
|
k.StoreChallangeInitiatorReward(ctx, msg.GetHeight(), amount)
|
|
|
|
// TODO: expand err value in log
|
|
initiatorAddr, err := sdk.AccAddressFromBech32(msg.GetInitiator())
|
|
if err != nil {
|
|
util.GetAppLogger().Error(ctx, err, "error converting initiator address")
|
|
}
|
|
|
|
valReward := sdk.NewCoins(sdk.NewCoin(k.GetParams(ctx).StagedDenom, sdk.NewIntFromUint64(amount)))
|
|
err = k.bankKeeper.MintCoins(ctx, types.ModuleName, valReward)
|
|
if err != nil {
|
|
util.GetAppLogger().Error(ctx, err, "error minting initiator rewards")
|
|
}
|
|
|
|
if err := k.sendRewards(ctx, initiatorAddr.String(), amount); err != nil {
|
|
util.GetAppLogger().Error(ctx, err, "failed to send rewards")
|
|
}
|
|
|
|
return &types.MsgInitPopResponse{}, nil
|
|
}
|