cosmos-sdk/x/baseaccount/handler.go

36 lines
986 B
Go
Raw Normal View History

2018-05-23 19:26:54 -07:00
package baseaccount
2018-05-06 22:13:32 -07:00
import (
"reflect"
sdk "github.com/cosmos/cosmos-sdk/types"
2018-05-23 19:26:54 -07:00
"github.com/cosmos/cosmos-sdk/x/auth"
2018-05-06 22:13:32 -07:00
)
2018-05-23 19:26:54 -07:00
// NewHandler returns a handler for "baseaccount" type messages.
func NewHandler(am auth.AccountMapper) sdk.Handler {
2018-05-06 22:13:32 -07:00
return func(ctx sdk.Context, msg sdk.Msg) sdk.Result {
switch msg := msg.(type) {
case MsgChangeKey:
return handleMsgChangeKey(ctx, am, msg)
default:
2018-05-23 19:26:54 -07:00
errMsg := "Unrecognized baseaccount Msg type: " + reflect.TypeOf(msg).Name()
2018-05-06 22:13:32 -07:00
return sdk.ErrUnknownRequest(errMsg).Result()
}
}
}
// Handle MsgChangeKey
// Should be very expensive, because once this happens, an account is un-prunable
2018-05-23 19:26:54 -07:00
func handleMsgChangeKey(ctx sdk.Context, am auth.AccountMapper, msg MsgChangeKey) sdk.Result {
2018-05-06 22:13:32 -07:00
2018-05-23 19:26:54 -07:00
err := am.SetPubKey(ctx, msg.Address, msg.NewPubKey)
2018-05-06 22:13:32 -07:00
if err != nil {
return err.Result()
}
2018-05-15 14:40:01 -07:00
return sdk.Result{
Tags: sdk.NewTags("action", []byte("changePubkey"), "address", msg.Address.Bytes(), "pubkey", msg.NewPubKey.Bytes()),
}
2018-05-06 22:13:32 -07:00
}