cosmos-sdk/x/distribution/migrations/v4/migrate.go

55 lines
1.4 KiB
Go

package v4
import (
"context"
"errors"
gogotypes "github.com/cosmos/gogoproto/types"
"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/codec"
"cosmossdk.io/core/store"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var OldProposerKey = []byte{0x01}
// MigrateStore removes the last proposer from store.
func MigrateStore(ctx context.Context, env appmodule.Environment, _ codec.BinaryCodec) error {
kvStore := env.KVStoreService.OpenKVStore(ctx)
return kvStore.Delete(OldProposerKey)
}
// GetPreviousProposerConsAddr returns the proposer consensus address for the
// current block.
func GetPreviousProposerConsAddr(ctx context.Context, storeService store.KVStoreService, cdc codec.BinaryCodec) (sdk.ConsAddress, error) {
kvStore := storeService.OpenKVStore(ctx)
bz, err := kvStore.Get(OldProposerKey)
if err != nil {
return nil, err
}
if bz == nil {
return nil, errors.New("previous proposer not set")
}
addrValue := gogotypes.BytesValue{}
err = cdc.Unmarshal(bz, &addrValue)
if err != nil {
return nil, err
}
return addrValue.GetValue(), nil
}
// SetPreviousProposerConsAddr set the proposer public key for this block.
func SetPreviousProposerConsAddr(ctx context.Context, storeService store.KVStoreService, cdc codec.BinaryCodec, consAddr sdk.ConsAddress) error {
kvStore := storeService.OpenKVStore(ctx)
bz, err := cdc.Marshal(&gogotypes.BytesValue{Value: consAddr})
if err != nil {
panic(err)
}
return kvStore.Set(OldProposerKey, bz)
}