-
Notifications
You must be signed in to change notification settings - Fork 0
/
staking_edit_validator.go
56 lines (50 loc) · 1.39 KB
/
staking_edit_validator.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
package staking
import (
"errors"
sdk "github.com/ci123chain/ci123chain/pkg/abci/types"
types2 "github.com/ci123chain/ci123chain/pkg/app/types"
"github.com/ci123chain/ci123chain/pkg/staking"
"github.com/ci123chain/ci123chain/pkg/staking/types"
)
func SignEditValidator(from sdk.AccAddress, gas, nonce uint64, priv, moniker, identity, website, secu, details string,
minSelfDelegation, newRate int64) ([]byte, error) {
var nrArg *sdk.Dec
var minArg *sdk.Int
if newRate < 0 {
if newRate == -1 {
nrArg = nil
}else {
return nil, errors.New("invalid newRate")
}
}else {
nr := sdk.NewDecWithPrec(newRate, 2)
nrArg = &nr
}
if minSelfDelegation < 0 {
if minSelfDelegation == -1 {
minArg = nil
}else {
return nil, errors.New("invalid minSelfDelegation")
}
}else {
min := sdk.NewInt(minSelfDelegation)
minArg = &min
}
desc := types.Description{
Moniker: moniker,
Identity: identity,
Website: website,
SecurityContact: secu,
Details: details,
}
msg := staking.NewEditValidatorMsg(from, desc, nrArg, minArg)
txByte, err := types2.SignCommonTx(from, nonce, gas, []sdk.Msg{msg}, priv, cdc)
if err != nil {
return nil, err
}
return txByte, nil
}
func NewEditValidatorMsg(from sdk.AccAddress, desc types.Description, nrArg *sdk.Dec, minArg *sdk.Int) []byte {
msg := staking.NewEditValidatorMsg(from, desc, nrArg, minArg)
return msg.Bytes()
}