@@ -18,6 +18,7 @@ func (k Keeper) SetComputeValidators(ctx context.Context, computeResults []Compu
18
18
server := NewMsgServerImpl (& k )
19
19
logger := k .Logger (ctx )
20
20
resultsMap := make (map [string ]ComputeResult )
21
+ totalBonded := 0
21
22
for _ , result := range computeResults {
22
23
resultsMap [result .ValidatorPubKey .String ()] = result
23
24
}
@@ -54,11 +55,20 @@ func (k Keeper) SetComputeValidators(ctx context.Context, computeResults []Compu
54
55
if err != nil {
55
56
return nil , err
56
57
}
58
+ err = k .delegateResult (ctx , computeResult , validator .OperatorAddress )
59
+ if err != nil {
60
+ return nil , err
61
+ }
62
+ totalBonded += int (computeResult .Power )
57
63
} else {
58
64
logger .Info ("Removing validator" , "operator" , validator .GetOperator (), "power" , computeResult .Power )
59
65
// update to new power
60
66
validator .Tokens = math .NewInt (0 )
61
67
err := k .SetValidator (ctx , validator )
68
+ k .RemoveDelegation (ctx , types.Delegation {
69
+ DelegatorAddress : computeResult .OperatorAddress ,
70
+ ValidatorAddress : validator .OperatorAddress ,
71
+ })
62
72
if err != nil {
63
73
return nil , err
64
74
}
@@ -69,16 +79,31 @@ func (k Keeper) SetComputeValidators(ctx context.Context, computeResults []Compu
69
79
for _ , computeResult := range computeResults {
70
80
if _ , ok := validatorsAlreadyExisting [computeResult .ValidatorPubKey .String ()]; ! ok {
71
81
logger .Info ("Creating validator" , "power" , computeResult , "operator" , computeResult .OperatorAddress )
72
- _ , err := k .createValidator (ctx , computeResult , server )
82
+ newVal , err := k .createValidator (ctx , computeResult , server )
73
83
if err != nil {
74
84
logger .Error ("Error creating validator" , "error" , err .Error ())
75
85
return nil , err
76
86
}
87
+ err = k .delegateResult (ctx , computeResult , newVal .OperatorAddress )
88
+ if err != nil {
89
+ logger .Error ("Error delegating result" , "error" , err .Error ())
90
+ return nil , err
91
+ }
92
+ totalBonded += int (computeResult .Power )
77
93
}
78
94
}
79
95
return k .GetAllValidators (ctx )
80
96
}
81
97
98
+ func (k Keeper ) delegateResult (ctx context.Context , computeResult ComputeResult , validatorAddress string ) error {
99
+ delegation := types.Delegation {
100
+ DelegatorAddress : computeResult .OperatorAddress ,
101
+ ValidatorAddress : validatorAddress ,
102
+ }
103
+ delegation .Shares = math .LegacyNewDec (computeResult .Power )
104
+ return k .SetDelegation (ctx , delegation )
105
+ }
106
+
82
107
func (k Keeper ) createValidator (ctx context.Context , computeResult ComputeResult , server types.MsgServer ) (* types.Validator , error ) {
83
108
logger := k .Logger (ctx )
84
109
s := computeResult .ValidatorPubKey .Address ().String ()
0 commit comments