mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 10:05:18 +00:00
52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
// Copyright Tharsis Labs Ltd.(Evmos)
|
|
// SPDX-License-Identifier:ENCL-1.0(https://github.com/evmos/evmos/blob/main/LICENSE)
|
|
|
|
package keeper
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/0glabs/0g-chain/x/council/v1/types"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
|
)
|
|
|
|
var _ types.MsgServer = &Keeper{}
|
|
|
|
// Register handles MsgRegister messages
|
|
func (k Keeper) Register(goCtx context.Context, msg *types.MsgRegister) (*types.MsgRegisterResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
|
|
|
valAddr, err := sdk.ValAddressFromBech32(msg.Voter)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
_, found := k.stakingKeeper.GetValidator(ctx, valAddr)
|
|
if !found {
|
|
return nil, stakingtypes.ErrNoValidatorFound
|
|
}
|
|
|
|
if err := k.AddVoter(ctx, valAddr, msg.Key); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &types.MsgRegisterResponse{}, nil
|
|
}
|
|
|
|
// Vote handles MsgVote messages
|
|
func (k Keeper) Vote(goCtx context.Context, msg *types.MsgVote) (*types.MsgVoteResponse, error) {
|
|
ctx := sdk.UnwrapSDKContext(goCtx)
|
|
|
|
voter, err := sdk.ValAddressFromBech32(msg.Voter)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err := k.AddVote(ctx, msg.CouncilID, voter, msg.Ballots); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &types.MsgVoteResponse{}, nil
|
|
}
|