-
Notifications
You must be signed in to change notification settings - Fork 0
/
operations.go
124 lines (117 loc) · 4.29 KB
/
operations.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package simulation
import (
"math/rand"
"github.com/evoblockchain/evochain/libs/cosmos-sdk/codec"
simappparams "github.com/evoblockchain/evochain/libs/cosmos-sdk/simapp/params"
"github.com/evoblockchain/evochain/libs/cosmos-sdk/x/simulation"
"github.com/evoblockchain/evochain/x/slashing/internal/keeper"
"github.com/evoblockchain/evochain/x/slashing/internal/types"
stakingkeeper "github.com/evoblockchain/evochain/x/staking/keeper"
)
// Simulation operation weights constants
const (
OpWeightMsgUnjail = "op_weight_msg_unjail"
)
// WeightedOperations returns all the operations from the module with their respective weights
func WeightedOperations(
appParams simulation.AppParams, cdc *codec.Codec, ak types.AccountKeeper,
k keeper.Keeper, sk stakingkeeper.Keeper,
) simulation.WeightedOperations {
var weightMsgUnjail int
appParams.GetOrGenerate(cdc, OpWeightMsgUnjail, &weightMsgUnjail, nil,
func(_ *rand.Rand) {
weightMsgUnjail = simappparams.DefaultWeightMsgUnjail
},
)
return simulation.WeightedOperations{
simulation.NewWeightedOperation(
weightMsgUnjail,
SimulateMsgUnjail(ak, k, sk),
),
}
}
// SimulateMsgUnjail generates a MsgUnjail with random values
// nolint: funlen
func SimulateMsgUnjail(ak types.AccountKeeper, k keeper.Keeper, sk stakingkeeper.Keeper) simulation.Operation { // nolint:interfacer
return nil
//todo:disable follow code just for now
//return func(
// r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context,
// accs []simulation.Account, chainID string,
//) (simulation.OperationMsg, []simulation.FutureOperation, error) {
//
// validator, ok := stakingkeeper.RandomValidator(r, sk, ctx)
// if !ok {
// return simulation.NoOpMsg(types.ModuleName), nil, nil // skip
// }
//
// simAccount, found := simulation.FindAccount(accs, sdk.AccAddress(validator.GetOperator()))
// if !found {
// return simulation.NoOpMsg(types.ModuleName), nil, nil // skip
// }
//
// if !validator.IsJailed() {
// // TODO: due to this condition this message is almost, if not always, skipped !
// return simulation.NoOpMsg(types.ModuleName), nil, nil
// }
//
// consAddr := sdk.ConsAddress(validator.GetConsPubKey().Address())
// info, found := k.GetValidatorSigningInfo(ctx, consAddr)
// if !found {
// return simulation.NoOpMsg(types.ModuleName), nil, nil // skip
// }
//
// selfDel := sk.Delegation(ctx, simAccount.Address, validator.GetOperator())
// if selfDel == nil {
// return simulation.NoOpMsg(types.ModuleName), nil, nil // skip
// }
//
// account := ak.GetAccount(ctx, sdk.AccAddress(validator.GetOperator()))
// fees, err := simulation.RandomFees(r, ctx, account.SpendableCoins(ctx.BlockTime()))
// if err != nil {
// return simulation.NoOpMsg(types.ModuleName), nil, err
// }
//
// msg := types.NewMsgUnjail(validator.GetOperator())
//
// tx := helpers.GenTx(
// []sdk.Msg{msg},
// fees,
// helpers.DefaultGenTxGas,
// chainID,
// []uint64{account.GetAccountNumber()},
// []uint64{account.GetSequence()},
// simAccount.PrivKey,
// )
//
// _, res, err := app.Deliver(tx)
//
// // result should fail if:
// // - validator cannot be unjailed due to tombstone
// // - validator is still in jailed period
// // - self delegation too low
// if info.Tombstoned ||
// ctx.BlockHeader().Time.Before(info.JailedUntil) ||
// validator.TokensFromShares(selfDel.GetShares()).TruncateInt().LT(validator.GetMinSelfDelegation()) {
// if res != nil && err == nil {
// if info.Tombstoned {
// return simulation.NewOperationMsg(msg, true, ""), nil, errors.New("validator should not have been unjailed if validator tombstoned")
// }
// if ctx.BlockHeader().Time.Before(info.JailedUntil) {
// return simulation.NewOperationMsg(msg, true, ""), nil, errors.New("validator unjailed while validator still in jail period")
// }
// if validator.TokensFromShares(selfDel.GetShares()).TruncateInt().LT(validator.GetMinSelfDelegation()) {
// return simulation.NewOperationMsg(msg, true, ""), nil, errors.New("validator unjailed even though self-delegation too low")
// }
// }
// // msg failed as expected
// return simulation.NewOperationMsg(msg, false, ""), nil, nil
// }
//
// if err != nil {
// return simulation.NoOpMsg(types.ModuleName), nil, errors.New(res.Log)
// }
//
// return simulation.NewOperationMsg(msg, true, ""), nil, nil
//}
}