github.com/Finschia/finschia-sdk@v0.48.1/x/distribution/simulation/decoder.go (about)

     1  package simulation
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  
     7  	"github.com/Finschia/finschia-sdk/codec"
     8  	sdk "github.com/Finschia/finschia-sdk/types"
     9  	"github.com/Finschia/finschia-sdk/types/kv"
    10  	"github.com/Finschia/finschia-sdk/x/distribution/types"
    11  )
    12  
    13  // NewDecodeStore returns a decoder function closure that unmarshals the KVPair's
    14  // Value to the corresponding distribution type.
    15  func NewDecodeStore(cdc codec.Codec) func(kvA, kvB kv.Pair) string {
    16  	return func(kvA, kvB kv.Pair) string {
    17  		switch {
    18  		case bytes.Equal(kvA.Key[:1], types.FeePoolKey):
    19  			var feePoolA, feePoolB types.FeePool
    20  			cdc.MustUnmarshal(kvA.Value, &feePoolA)
    21  			cdc.MustUnmarshal(kvB.Value, &feePoolB)
    22  			return fmt.Sprintf("%v\n%v", feePoolA, feePoolB)
    23  
    24  		case bytes.Equal(kvA.Key[:1], types.ProposerKey):
    25  			return fmt.Sprintf("%v\n%v", sdk.ConsAddress(kvA.Value), sdk.ConsAddress(kvB.Value))
    26  
    27  		case bytes.Equal(kvA.Key[:1], types.ValidatorOutstandingRewardsPrefix):
    28  			var rewardsA, rewardsB types.ValidatorOutstandingRewards
    29  			cdc.MustUnmarshal(kvA.Value, &rewardsA)
    30  			cdc.MustUnmarshal(kvB.Value, &rewardsB)
    31  			return fmt.Sprintf("%v\n%v", rewardsA, rewardsB)
    32  
    33  		case bytes.Equal(kvA.Key[:1], types.DelegatorWithdrawAddrPrefix):
    34  			return fmt.Sprintf("%v\n%v", sdk.AccAddress(kvA.Value), sdk.AccAddress(kvB.Value))
    35  
    36  		case bytes.Equal(kvA.Key[:1], types.DelegatorStartingInfoPrefix):
    37  			var infoA, infoB types.DelegatorStartingInfo
    38  			cdc.MustUnmarshal(kvA.Value, &infoA)
    39  			cdc.MustUnmarshal(kvB.Value, &infoB)
    40  			return fmt.Sprintf("%v\n%v", infoA, infoB)
    41  
    42  		case bytes.Equal(kvA.Key[:1], types.ValidatorHistoricalRewardsPrefix):
    43  			var rewardsA, rewardsB types.ValidatorHistoricalRewards
    44  			cdc.MustUnmarshal(kvA.Value, &rewardsA)
    45  			cdc.MustUnmarshal(kvB.Value, &rewardsB)
    46  			return fmt.Sprintf("%v\n%v", rewardsA, rewardsB)
    47  
    48  		case bytes.Equal(kvA.Key[:1], types.ValidatorCurrentRewardsPrefix):
    49  			var rewardsA, rewardsB types.ValidatorCurrentRewards
    50  			cdc.MustUnmarshal(kvA.Value, &rewardsA)
    51  			cdc.MustUnmarshal(kvB.Value, &rewardsB)
    52  			return fmt.Sprintf("%v\n%v", rewardsA, rewardsB)
    53  
    54  		case bytes.Equal(kvA.Key[:1], types.ValidatorAccumulatedCommissionPrefix):
    55  			var commissionA, commissionB types.ValidatorAccumulatedCommission
    56  			cdc.MustUnmarshal(kvA.Value, &commissionA)
    57  			cdc.MustUnmarshal(kvB.Value, &commissionB)
    58  			return fmt.Sprintf("%v\n%v", commissionA, commissionB)
    59  
    60  		case bytes.Equal(kvA.Key[:1], types.ValidatorSlashEventPrefix):
    61  			var eventA, eventB types.ValidatorSlashEvent
    62  			cdc.MustUnmarshal(kvA.Value, &eventA)
    63  			cdc.MustUnmarshal(kvB.Value, &eventB)
    64  			return fmt.Sprintf("%v\n%v", eventA, eventB)
    65  
    66  		default:
    67  			panic(fmt.Sprintf("invalid distribution key prefix %X", kvA.Key[:1]))
    68  		}
    69  	}
    70  }