-
Notifications
You must be signed in to change notification settings - Fork 0
/
msg_parse.go
62 lines (52 loc) · 2.16 KB
/
msg_parse.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
package params
import (
"github.com/Moonyongjung/xpriv.go/key"
"github.com/Moonyongjung/xpriv.go/types"
"github.com/Moonyongjung/xpriv.go/types/errors"
"github.com/Moonyongjung/xpriv.go/util"
"github.com/Moonyongjung/xpla-private-chain/app/params"
sdk "github.com/cosmos/cosmos-sdk/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
paramscutils "github.com/cosmos/cosmos-sdk/x/params/client/utils"
paramsproposal "github.com/cosmos/cosmos-sdk/x/params/types/proposal"
)
// Parsing - param change
func parseProposalParamChangeArgs(paramChangeMsg types.ParamChangeMsg, privKey key.PrivateKey, encodingConfig params.EncodingConfig) (govtypes.MsgSubmitProposal, error) {
var proposal paramscutils.ParamChangeProposalJSON
var err error
if paramChangeMsg.JsonFilePath != "" {
proposal, err = paramscutils.ParseParamChangeProposalJSON(encodingConfig.Amino, paramChangeMsg.JsonFilePath)
if err != nil {
return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err)
}
} else {
proposal.Title = paramChangeMsg.Title
proposal.Description = paramChangeMsg.Description
proposal.Deposit = paramChangeMsg.Deposit
var paramChangeJsons paramscutils.ParamChangesJSON
for _, change := range paramChangeMsg.Changes {
var targetJson paramscutils.ParamChangeJSON
if err := encodingConfig.Amino.UnmarshalJSON([]byte(change), &targetJson); err != nil {
return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrFailedToUnmarshal, err)
}
paramChangeJsons = append(paramChangeJsons, targetJson)
}
proposal.Changes = paramChangeJsons
}
deposit, err := sdk.ParseCoinsNormalized(util.DenomAdd(proposal.Deposit))
if err != nil {
return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err)
}
from, err := util.GetAddrByPrivKey(privKey)
if err != nil {
return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err)
}
content := paramsproposal.NewParameterChangeProposal(
proposal.Title, proposal.Description, proposal.Changes.ToParamChanges(),
)
msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from)
if err != nil {
return govtypes.MsgSubmitProposal{}, util.LogErr(errors.ErrParse, err)
}
return *msg, nil
}