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 }