Merge PR #3230: Remove KV marshalling split
* remove kv seperation for marshalling * pending * cleanup * cleanup x2
This commit is contained in:
parent
e855780df7
commit
20f6ff3e60
|
@ -22,6 +22,7 @@ BREAKING CHANGES
|
|||
|
||||
* SDK
|
||||
* [stake] \#2513 Validator power type from Dec -> Int
|
||||
* [stake] \#3233 key and value now contain duplicate fields to simplify code
|
||||
* [\#3064](https://github.com/cosmos/cosmos-sdk/issues/3064) Sanitize `sdk.Coin` denom. Coins denoms are now case insensitive, i.e. 100fooToken equals to 100FOOTOKEN.
|
||||
|
||||
* Tendermint
|
||||
|
|
|
@ -36,7 +36,7 @@ func GetCmdQueryValidator(storeName string, cdc *codec.Codec) *cobra.Command {
|
|||
return fmt.Errorf("No validator found with address %s", args[0])
|
||||
}
|
||||
|
||||
validator := types.MustUnmarshalValidator(cdc, addr, res)
|
||||
validator := types.MustUnmarshalValidator(cdc, res)
|
||||
|
||||
switch viper.Get(cli.OutputFlag) {
|
||||
case "text":
|
||||
|
@ -81,8 +81,7 @@ func GetCmdQueryValidators(storeName string, cdc *codec.Codec) *cobra.Command {
|
|||
// parse out the validators
|
||||
var validators []stake.Validator
|
||||
for _, kv := range resKVs {
|
||||
addr := kv.Key[1:]
|
||||
validator := types.MustUnmarshalValidator(cdc, addr, kv.Value)
|
||||
validator := types.MustUnmarshalValidator(cdc, kv.Value)
|
||||
validators = append(validators, validator)
|
||||
}
|
||||
|
||||
|
@ -209,8 +208,7 @@ func GetCmdQueryDelegation(storeName string, cdc *codec.Codec) *cobra.Command {
|
|||
}
|
||||
|
||||
// parse out the delegation
|
||||
|
||||
delegation, err := types.UnmarshalDelegation(cdc, key, res)
|
||||
delegation, err := types.UnmarshalDelegation(cdc, res)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -267,7 +265,7 @@ func GetCmdQueryDelegations(storeName string, cdc *codec.Codec) *cobra.Command {
|
|||
// parse out the validators
|
||||
var delegations []stake.Delegation
|
||||
for _, kv := range resKVs {
|
||||
delegation := types.MustUnmarshalDelegation(cdc, kv.Key, kv.Value)
|
||||
delegation := types.MustUnmarshalDelegation(cdc, kv.Value)
|
||||
delegations = append(delegations, delegation)
|
||||
}
|
||||
|
||||
|
@ -347,7 +345,7 @@ func GetCmdQueryUnbondingDelegation(storeName string, cdc *codec.Codec) *cobra.C
|
|||
}
|
||||
|
||||
// parse out the unbonding delegation
|
||||
ubd := types.MustUnmarshalUBD(cdc, key, res)
|
||||
ubd := types.MustUnmarshalUBD(cdc, res)
|
||||
|
||||
switch viper.Get(cli.OutputFlag) {
|
||||
case "text":
|
||||
|
@ -401,7 +399,7 @@ func GetCmdQueryUnbondingDelegations(storeName string, cdc *codec.Codec) *cobra.
|
|||
// parse out the unbonding delegations
|
||||
var ubds []stake.UnbondingDelegation
|
||||
for _, kv := range resKVs {
|
||||
ubd := types.MustUnmarshalUBD(cdc, kv.Key, kv.Value)
|
||||
ubd := types.MustUnmarshalUBD(cdc, kv.Value)
|
||||
ubds = append(ubds, ubd)
|
||||
}
|
||||
|
||||
|
@ -451,7 +449,7 @@ func GetCmdQueryRedelegation(storeName string, cdc *codec.Codec) *cobra.Command
|
|||
}
|
||||
|
||||
// parse out the unbonding delegation
|
||||
red := types.MustUnmarshalRED(cdc, key, res)
|
||||
red := types.MustUnmarshalRED(cdc, res)
|
||||
|
||||
switch viper.Get(cli.OutputFlag) {
|
||||
case "text":
|
||||
|
@ -505,7 +503,7 @@ func GetCmdQueryRedelegations(storeName string, cdc *codec.Codec) *cobra.Command
|
|||
// parse out the validators
|
||||
var reds []stake.Redelegation
|
||||
for _, kv := range resKVs {
|
||||
red := types.MustUnmarshalRED(cdc, kv.Key, kv.Value)
|
||||
red := types.MustUnmarshalRED(cdc, kv.Value)
|
||||
reds = append(reds, red)
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ func getShares(
|
|||
return sharesAmount, errors.Errorf("cannot find delegation to determine percent Error: %v", err)
|
||||
}
|
||||
|
||||
delegation, err := types.UnmarshalDelegation(cdc, key, resQuery)
|
||||
delegation, err := types.UnmarshalDelegation(cdc, resQuery)
|
||||
if err != nil {
|
||||
return sdk.ZeroDec(), err
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ func (k Keeper) GetDelegation(ctx sdk.Context,
|
|||
return delegation, false
|
||||
}
|
||||
|
||||
delegation = types.MustUnmarshalDelegation(k.cdc, key, value)
|
||||
delegation = types.MustUnmarshalDelegation(k.cdc, value)
|
||||
return delegation, true
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ func (k Keeper) GetAllDelegations(ctx sdk.Context) (delegations []types.Delegati
|
|||
defer iterator.Close()
|
||||
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Key(), iterator.Value())
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
delegations = append(delegations, delegation)
|
||||
}
|
||||
return delegations
|
||||
|
@ -44,7 +44,7 @@ func (k Keeper) GetValidatorDelegations(ctx sdk.Context, valAddr sdk.ValAddress)
|
|||
defer iterator.Close()
|
||||
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Key(), iterator.Value())
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
if delegation.GetValidatorAddr().Equals(valAddr) {
|
||||
delegations = append(delegations, delegation)
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ func (k Keeper) GetDelegatorDelegations(ctx sdk.Context, delegator sdk.AccAddres
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Key(), iterator.Value())
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
delegations[i] = delegation
|
||||
i++
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ func (k Keeper) GetUnbondingDelegations(ctx sdk.Context, delegator sdk.AccAddres
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
|
||||
unbondingDelegation := types.MustUnmarshalUBD(k.cdc, iterator.Key(), iterator.Value())
|
||||
unbondingDelegation := types.MustUnmarshalUBD(k.cdc, iterator.Value())
|
||||
unbondingDelegations[i] = unbondingDelegation
|
||||
i++
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ func (k Keeper) GetUnbondingDelegation(ctx sdk.Context,
|
|||
return ubd, false
|
||||
}
|
||||
|
||||
ubd = types.MustUnmarshalUBD(k.cdc, key, value)
|
||||
ubd = types.MustUnmarshalUBD(k.cdc, value)
|
||||
return ubd, true
|
||||
}
|
||||
|
||||
|
@ -132,7 +132,7 @@ func (k Keeper) GetUnbondingDelegationsFromValidator(ctx sdk.Context, valAddr sd
|
|||
for ; iterator.Valid(); iterator.Next() {
|
||||
key := GetUBDKeyFromValIndexKey(iterator.Key())
|
||||
value := store.Get(key)
|
||||
ubd := types.MustUnmarshalUBD(k.cdc, key, value)
|
||||
ubd := types.MustUnmarshalUBD(k.cdc, value)
|
||||
ubds = append(ubds, ubd)
|
||||
}
|
||||
return ubds
|
||||
|
@ -145,7 +145,7 @@ func (k Keeper) IterateUnbondingDelegations(ctx sdk.Context, fn func(index int64
|
|||
defer iterator.Close()
|
||||
|
||||
for i := int64(0); iterator.Valid(); iterator.Next() {
|
||||
ubd := types.MustUnmarshalUBD(k.cdc, iterator.Key(), iterator.Value())
|
||||
ubd := types.MustUnmarshalUBD(k.cdc, iterator.Value())
|
||||
if stop := fn(i, ubd); stop {
|
||||
break
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ func (k Keeper) GetRedelegations(ctx sdk.Context, delegator sdk.AccAddress,
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
|
||||
redelegation := types.MustUnmarshalRED(k.cdc, iterator.Key(), iterator.Value())
|
||||
redelegation := types.MustUnmarshalRED(k.cdc, iterator.Value())
|
||||
redelegations[i] = redelegation
|
||||
i++
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ func (k Keeper) GetRedelegation(ctx sdk.Context,
|
|||
return red, false
|
||||
}
|
||||
|
||||
red = types.MustUnmarshalRED(k.cdc, key, value)
|
||||
red = types.MustUnmarshalRED(k.cdc, value)
|
||||
return red, true
|
||||
}
|
||||
|
||||
|
@ -266,7 +266,7 @@ func (k Keeper) GetRedelegationsFromValidator(ctx sdk.Context, valAddr sdk.ValAd
|
|||
for ; iterator.Valid(); iterator.Next() {
|
||||
key := GetREDKeyFromValSrcIndexKey(iterator.Key())
|
||||
value := store.Get(key)
|
||||
red := types.MustUnmarshalRED(k.cdc, key, value)
|
||||
red := types.MustUnmarshalRED(k.cdc, value)
|
||||
reds = append(reds, red)
|
||||
}
|
||||
return reds
|
||||
|
@ -305,7 +305,7 @@ func (k Keeper) IterateRedelegations(ctx sdk.Context, fn func(index int64, red t
|
|||
defer iterator.Close()
|
||||
|
||||
for i := int64(0); iterator.Valid(); iterator.Next() {
|
||||
red := types.MustUnmarshalRED(k.cdc, iterator.Key(), iterator.Value())
|
||||
red := types.MustUnmarshalRED(k.cdc, iterator.Value())
|
||||
if stop := fn(i, red); stop {
|
||||
break
|
||||
}
|
||||
|
|
|
@ -17,8 +17,7 @@ func (k Keeper) GetDelegatorValidators(ctx sdk.Context, delegatorAddr sdk.AccAdd
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
|
||||
addr := iterator.Key()
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, addr, iterator.Value())
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
|
||||
validator, found := k.GetValidator(ctx, delegation.ValidatorAddr)
|
||||
if !found {
|
||||
|
@ -59,7 +58,7 @@ func (k Keeper) GetAllDelegatorDelegations(ctx sdk.Context, delegator sdk.AccAdd
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Key(), iterator.Value())
|
||||
delegation := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
delegations = append(delegations, delegation)
|
||||
i++
|
||||
}
|
||||
|
@ -77,7 +76,7 @@ func (k Keeper) GetAllUnbondingDelegations(ctx sdk.Context, delegator sdk.AccAdd
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
unbondingDelegation := types.MustUnmarshalUBD(k.cdc, iterator.Key(), iterator.Value())
|
||||
unbondingDelegation := types.MustUnmarshalUBD(k.cdc, iterator.Value())
|
||||
unbondingDelegations = append(unbondingDelegations, unbondingDelegation)
|
||||
i++
|
||||
}
|
||||
|
@ -95,7 +94,7 @@ func (k Keeper) GetAllRedelegations(ctx sdk.Context, delegator sdk.AccAddress, s
|
|||
dstValFilter := !(dstValAddress.Empty() || dstValAddress == nil)
|
||||
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
redelegation := types.MustUnmarshalRED(k.cdc, iterator.Key(), iterator.Value())
|
||||
redelegation := types.MustUnmarshalRED(k.cdc, iterator.Value())
|
||||
if srcValFilter && !(srcValAddress.Equals(redelegation.ValidatorSrcAddr)) {
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -16,8 +16,7 @@ func (k Keeper) IterateValidators(ctx sdk.Context, fn func(index int64, validato
|
|||
iterator := sdk.KVStorePrefixIterator(store, ValidatorsKey)
|
||||
i := int64(0)
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
addr := iterator.Key()[1:]
|
||||
validator := types.MustUnmarshalValidator(k.cdc, addr, iterator.Value())
|
||||
validator := types.MustUnmarshalValidator(k.cdc, iterator.Value())
|
||||
stop := fn(i, validator) // XXX is this safe will the validator unexposed fields be able to get written to?
|
||||
if stop {
|
||||
break
|
||||
|
@ -136,7 +135,7 @@ func (k Keeper) IterateDelegations(ctx sdk.Context, delAddr sdk.AccAddress,
|
|||
delegatorPrefixKey := GetDelegationsKey(delAddr)
|
||||
iterator := sdk.KVStorePrefixIterator(store, delegatorPrefixKey) //smallest to largest
|
||||
for i := int64(0); iterator.Valid(); iterator.Next() {
|
||||
del := types.MustUnmarshalDelegation(k.cdc, iterator.Key(), iterator.Value())
|
||||
del := types.MustUnmarshalDelegation(k.cdc, iterator.Value())
|
||||
stop := fn(i, del)
|
||||
if stop {
|
||||
break
|
||||
|
|
|
@ -36,7 +36,7 @@ func (k Keeper) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator ty
|
|||
}
|
||||
|
||||
// amino bytes weren't found in cache, so amino unmarshal and add it to the cache
|
||||
validator = types.MustUnmarshalValidator(k.cdc, addr, value)
|
||||
validator = types.MustUnmarshalValidator(k.cdc, value)
|
||||
cachedVal := cachedValidator{validator, strValue}
|
||||
k.validatorCache[strValue] = cachedValidator{validator, strValue}
|
||||
k.validatorCacheList.PushBack(cachedVal)
|
||||
|
@ -47,7 +47,7 @@ func (k Keeper) GetValidator(ctx sdk.Context, addr sdk.ValAddress) (validator ty
|
|||
delete(k.validatorCache, valToRemove.marshalled)
|
||||
}
|
||||
|
||||
validator = types.MustUnmarshalValidator(k.cdc, addr, value)
|
||||
validator = types.MustUnmarshalValidator(k.cdc, value)
|
||||
return validator, true
|
||||
}
|
||||
|
||||
|
@ -217,8 +217,7 @@ func (k Keeper) GetAllValidators(ctx sdk.Context) (validators []types.Validator)
|
|||
defer iterator.Close()
|
||||
|
||||
for ; iterator.Valid(); iterator.Next() {
|
||||
addr := iterator.Key()[1:]
|
||||
validator := types.MustUnmarshalValidator(k.cdc, addr, iterator.Value())
|
||||
validator := types.MustUnmarshalValidator(k.cdc, iterator.Value())
|
||||
validators = append(validators, validator)
|
||||
}
|
||||
return validators
|
||||
|
@ -234,8 +233,7 @@ func (k Keeper) GetValidators(ctx sdk.Context, maxRetrieve uint16) (validators [
|
|||
|
||||
i := 0
|
||||
for ; iterator.Valid() && i < int(maxRetrieve); iterator.Next() {
|
||||
addr := iterator.Key()[1:]
|
||||
validator := types.MustUnmarshalValidator(k.cdc, addr, iterator.Value())
|
||||
validator := types.MustUnmarshalValidator(k.cdc, iterator.Value())
|
||||
validators[i] = validator
|
||||
i++
|
||||
}
|
||||
|
|
|
@ -35,50 +35,24 @@ type Delegation struct {
|
|||
Shares sdk.Dec `json:"shares"`
|
||||
}
|
||||
|
||||
type delegationValue struct {
|
||||
Shares sdk.Dec
|
||||
}
|
||||
|
||||
// return the delegation without fields contained within the key for the store
|
||||
// return the delegation
|
||||
func MustMarshalDelegation(cdc *codec.Codec, delegation Delegation) []byte {
|
||||
val := delegationValue{
|
||||
delegation.Shares,
|
||||
}
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(val)
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(delegation)
|
||||
}
|
||||
|
||||
// return the delegation without fields contained within the key for the store
|
||||
func MustUnmarshalDelegation(cdc *codec.Codec, key, value []byte) Delegation {
|
||||
delegation, err := UnmarshalDelegation(cdc, key, value)
|
||||
// return the delegation
|
||||
func MustUnmarshalDelegation(cdc *codec.Codec, value []byte) Delegation {
|
||||
delegation, err := UnmarshalDelegation(cdc, value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return delegation
|
||||
}
|
||||
|
||||
// return the delegation without fields contained within the key for the store
|
||||
func UnmarshalDelegation(cdc *codec.Codec, key, value []byte) (delegation Delegation, err error) {
|
||||
var storeValue delegationValue
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &storeValue)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("%v: %v", ErrNoDelegation(DefaultCodespace).Data(), err)
|
||||
return
|
||||
}
|
||||
|
||||
addrs := key[1:] // remove prefix bytes
|
||||
if len(addrs) != 2*sdk.AddrLen {
|
||||
err = fmt.Errorf("%v", ErrBadDelegationAddr(DefaultCodespace).Data())
|
||||
return
|
||||
}
|
||||
|
||||
delAddr := sdk.AccAddress(addrs[:sdk.AddrLen])
|
||||
valAddr := sdk.ValAddress(addrs[sdk.AddrLen:])
|
||||
|
||||
return Delegation{
|
||||
DelegatorAddr: delAddr,
|
||||
ValidatorAddr: valAddr,
|
||||
Shares: storeValue.Shares,
|
||||
}, nil
|
||||
// return the delegation
|
||||
func UnmarshalDelegation(cdc *codec.Codec, value []byte) (delegation Delegation, err error) {
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &delegation)
|
||||
return delegation, err
|
||||
}
|
||||
|
||||
// nolint
|
||||
|
@ -118,57 +92,24 @@ type UnbondingDelegation struct {
|
|||
Balance sdk.Coin `json:"balance"` // atoms to receive at completion
|
||||
}
|
||||
|
||||
type ubdValue struct {
|
||||
CreationHeight int64
|
||||
MinTime time.Time
|
||||
InitialBalance sdk.Coin
|
||||
Balance sdk.Coin
|
||||
}
|
||||
|
||||
// return the unbonding delegation without fields contained within the key for the store
|
||||
// return the unbonding delegation
|
||||
func MustMarshalUBD(cdc *codec.Codec, ubd UnbondingDelegation) []byte {
|
||||
val := ubdValue{
|
||||
ubd.CreationHeight,
|
||||
ubd.MinTime,
|
||||
ubd.InitialBalance,
|
||||
ubd.Balance,
|
||||
}
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(val)
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(ubd)
|
||||
}
|
||||
|
||||
// unmarshal a unbonding delegation from a store key and value
|
||||
func MustUnmarshalUBD(cdc *codec.Codec, key, value []byte) UnbondingDelegation {
|
||||
ubd, err := UnmarshalUBD(cdc, key, value)
|
||||
// unmarshal a unbonding delegation from a store value
|
||||
func MustUnmarshalUBD(cdc *codec.Codec, value []byte) UnbondingDelegation {
|
||||
ubd, err := UnmarshalUBD(cdc, value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return ubd
|
||||
}
|
||||
|
||||
// unmarshal a unbonding delegation from a store key and value
|
||||
func UnmarshalUBD(cdc *codec.Codec, key, value []byte) (ubd UnbondingDelegation, err error) {
|
||||
var storeValue ubdValue
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &storeValue)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
addrs := key[1:] // remove prefix bytes
|
||||
if len(addrs) != 2*sdk.AddrLen {
|
||||
err = fmt.Errorf("%v", ErrBadDelegationAddr(DefaultCodespace).Data())
|
||||
return
|
||||
}
|
||||
delAddr := sdk.AccAddress(addrs[:sdk.AddrLen])
|
||||
valAddr := sdk.ValAddress(addrs[sdk.AddrLen:])
|
||||
|
||||
return UnbondingDelegation{
|
||||
DelegatorAddr: delAddr,
|
||||
ValidatorAddr: valAddr,
|
||||
CreationHeight: storeValue.CreationHeight,
|
||||
MinTime: storeValue.MinTime,
|
||||
InitialBalance: storeValue.InitialBalance,
|
||||
Balance: storeValue.Balance,
|
||||
}, nil
|
||||
// unmarshal a unbonding delegation from a store value
|
||||
func UnmarshalUBD(cdc *codec.Codec, value []byte) (ubd UnbondingDelegation, err error) {
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &ubd)
|
||||
return ubd, err
|
||||
}
|
||||
|
||||
// nolint
|
||||
|
@ -206,65 +147,24 @@ type Redelegation struct {
|
|||
SharesDst sdk.Dec `json:"shares_dst"` // amount of destination shares redelegating
|
||||
}
|
||||
|
||||
type redValue struct {
|
||||
CreationHeight int64
|
||||
MinTime time.Time
|
||||
InitialBalance sdk.Coin
|
||||
Balance sdk.Coin
|
||||
SharesSrc sdk.Dec
|
||||
SharesDst sdk.Dec
|
||||
}
|
||||
|
||||
// return the redelegation without fields contained within the key for the store
|
||||
// return the redelegation
|
||||
func MustMarshalRED(cdc *codec.Codec, red Redelegation) []byte {
|
||||
val := redValue{
|
||||
red.CreationHeight,
|
||||
red.MinTime,
|
||||
red.InitialBalance,
|
||||
red.Balance,
|
||||
red.SharesSrc,
|
||||
red.SharesDst,
|
||||
}
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(val)
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(red)
|
||||
}
|
||||
|
||||
// unmarshal a redelegation from a store key and value
|
||||
func MustUnmarshalRED(cdc *codec.Codec, key, value []byte) Redelegation {
|
||||
red, err := UnmarshalRED(cdc, key, value)
|
||||
// unmarshal a redelegation from a store value
|
||||
func MustUnmarshalRED(cdc *codec.Codec, value []byte) Redelegation {
|
||||
red, err := UnmarshalRED(cdc, value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return red
|
||||
}
|
||||
|
||||
// unmarshal a redelegation from a store key and value
|
||||
func UnmarshalRED(cdc *codec.Codec, key, value []byte) (red Redelegation, err error) {
|
||||
var storeValue redValue
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &storeValue)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
addrs := key[1:] // remove prefix bytes
|
||||
if len(addrs) != 3*sdk.AddrLen {
|
||||
err = fmt.Errorf("%v", ErrBadRedelegationAddr(DefaultCodespace).Data())
|
||||
return
|
||||
}
|
||||
delAddr := sdk.AccAddress(addrs[:sdk.AddrLen])
|
||||
valSrcAddr := sdk.ValAddress(addrs[sdk.AddrLen : 2*sdk.AddrLen])
|
||||
valDstAddr := sdk.ValAddress(addrs[2*sdk.AddrLen:])
|
||||
|
||||
return Redelegation{
|
||||
DelegatorAddr: delAddr,
|
||||
ValidatorSrcAddr: valSrcAddr,
|
||||
ValidatorDstAddr: valDstAddr,
|
||||
CreationHeight: storeValue.CreationHeight,
|
||||
MinTime: storeValue.MinTime,
|
||||
InitialBalance: storeValue.InitialBalance,
|
||||
Balance: storeValue.Balance,
|
||||
SharesSrc: storeValue.SharesSrc,
|
||||
SharesDst: storeValue.SharesDst,
|
||||
}, nil
|
||||
// unmarshal a redelegation from a store value
|
||||
func UnmarshalRED(cdc *codec.Codec, value []byte) (red Redelegation, err error) {
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &red)
|
||||
return red, err
|
||||
}
|
||||
|
||||
// nolint
|
||||
|
|
|
@ -55,71 +55,24 @@ func NewValidator(operator sdk.ValAddress, pubKey crypto.PubKey, description Des
|
|||
}
|
||||
}
|
||||
|
||||
// what's kept in the store value
|
||||
type validatorValue struct {
|
||||
ConsPubKey crypto.PubKey
|
||||
Jailed bool
|
||||
Status sdk.BondStatus
|
||||
Tokens sdk.Int
|
||||
DelegatorShares sdk.Dec
|
||||
Description Description
|
||||
BondHeight int64
|
||||
UnbondingHeight int64
|
||||
UnbondingMinTime time.Time
|
||||
Commission Commission
|
||||
}
|
||||
|
||||
// return the redelegation without fields contained within the key for the store
|
||||
// return the redelegation
|
||||
func MustMarshalValidator(cdc *codec.Codec, validator Validator) []byte {
|
||||
val := validatorValue{
|
||||
ConsPubKey: validator.ConsPubKey,
|
||||
Jailed: validator.Jailed,
|
||||
Status: validator.Status,
|
||||
Tokens: validator.Tokens,
|
||||
DelegatorShares: validator.DelegatorShares,
|
||||
Description: validator.Description,
|
||||
BondHeight: validator.BondHeight,
|
||||
UnbondingHeight: validator.UnbondingHeight,
|
||||
UnbondingMinTime: validator.UnbondingMinTime,
|
||||
Commission: validator.Commission,
|
||||
}
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(val)
|
||||
return cdc.MustMarshalBinaryLengthPrefixed(validator)
|
||||
}
|
||||
|
||||
// unmarshal a redelegation from a store key and value
|
||||
func MustUnmarshalValidator(cdc *codec.Codec, operatorAddr, value []byte) Validator {
|
||||
validator, err := UnmarshalValidator(cdc, operatorAddr, value)
|
||||
// unmarshal a redelegation from a store value
|
||||
func MustUnmarshalValidator(cdc *codec.Codec, value []byte) Validator {
|
||||
validator, err := UnmarshalValidator(cdc, value)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return validator
|
||||
}
|
||||
|
||||
// unmarshal a redelegation from a store key and value
|
||||
func UnmarshalValidator(cdc *codec.Codec, operatorAddr, value []byte) (validator Validator, err error) {
|
||||
if len(operatorAddr) != sdk.AddrLen {
|
||||
err = fmt.Errorf("%v", ErrBadValidatorAddr(DefaultCodespace).Data())
|
||||
return
|
||||
}
|
||||
var storeValue validatorValue
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &storeValue)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return Validator{
|
||||
OperatorAddr: operatorAddr,
|
||||
ConsPubKey: storeValue.ConsPubKey,
|
||||
Jailed: storeValue.Jailed,
|
||||
Tokens: storeValue.Tokens,
|
||||
Status: storeValue.Status,
|
||||
DelegatorShares: storeValue.DelegatorShares,
|
||||
Description: storeValue.Description,
|
||||
BondHeight: storeValue.BondHeight,
|
||||
UnbondingHeight: storeValue.UnbondingHeight,
|
||||
UnbondingMinTime: storeValue.UnbondingMinTime,
|
||||
Commission: storeValue.Commission,
|
||||
}, nil
|
||||
// unmarshal a redelegation from a store value
|
||||
func UnmarshalValidator(cdc *codec.Codec, value []byte) (validator Validator, err error) {
|
||||
err = cdc.UnmarshalBinaryLengthPrefixed(value, &validator)
|
||||
return validator, err
|
||||
}
|
||||
|
||||
// HumanReadableString returns a human readable string representation of a
|
||||
|
|
Loading…
Reference in New Issue