-
Notifications
You must be signed in to change notification settings - Fork 2
/
gov_custom.go
126 lines (107 loc) · 4.12 KB
/
gov_custom.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
125
126
package cli
import (
"bufio"
"fmt"
"sort"
"strings"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
interfacetypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec/types"
sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth"
"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/client/utils"
"github.com/fibonacci-chain/fbc/x/gov"
govcli "github.com/fibonacci-chain/fbc/x/gov/client/cli"
"github.com/fibonacci-chain/fbc/x/wasm/types"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func ProposalUpdateDeploymentWhitelistCmd(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command {
cmd := &cobra.Command{
Use: "update-wasm-deployment-whitelist [comma-separated addresses]",
Short: "Submit an update wasm contract deployment whitelist proposal",
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
cdc := cdcP.GetCdc()
inBuf := bufio.NewReader(cmd.InOrStdin())
txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
cliCtx := context.NewCLIContext().WithCodec(cdc)
proposalTitle, err := cmd.Flags().GetString(govcli.FlagTitle)
if err != nil {
return fmt.Errorf("proposal title: %s", err)
}
proposalDescr, err := cmd.Flags().GetString(govcli.FlagDescription)
if err != nil {
return fmt.Errorf("proposal description: %s", err)
}
addrs := strings.Split(strings.TrimSpace(args[0]), ",")
sort.Strings(addrs)
proposal := types.UpdateDeploymentWhitelistProposal{
Title: proposalTitle,
Description: proposalDescr,
DistributorAddrs: addrs,
}
err = proposal.ValidateBasic()
if err != nil {
return err
}
deposit, err := sdk.ParseCoins(viper.GetString(govcli.FlagDeposit))
if err != nil {
return err
}
msg := gov.NewMsgSubmitProposal(&proposal, deposit, cliCtx.GetFromAddress())
return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
},
}
// proposal flags
cmd.Flags().String(govcli.FlagTitle, "", "Title of proposal")
cmd.Flags().String(govcli.FlagDescription, "", "Description of proposal")
cmd.Flags().String(govcli.FlagDeposit, "", "Deposit of proposal")
return cmd
}
const isDelete = "delete"
func ProposalUpdateWASMContractMethodBlockedListCmd(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command {
cmd := &cobra.Command{
Use: "update-wasm-contract-method-blocked-list [contract address] [comma-separated methods]",
Short: "Submit an update wasm contract deployment whitelist proposal",
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
cdc := cdcP.GetCdc()
inBuf := bufio.NewReader(cmd.InOrStdin())
txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc))
cliCtx := context.NewCLIContext().WithCodec(cdc)
methods := strings.Split(strings.TrimSpace(args[1]), ",")
sort.Strings(methods)
var extraMethods []*types.Method
for _, m := range methods {
extraMethods = append(extraMethods, &types.Method{
Name: m,
})
}
proposal := types.UpdateWASMContractMethodBlockedListProposal{
Title: viper.GetString(govcli.FlagTitle),
Description: viper.GetString(govcli.FlagDescription),
BlockedMethods: &types.ContractMethods{
ContractAddr: args[0],
Methods: extraMethods,
},
IsDelete: viper.GetBool(isDelete),
}
if err := proposal.ValidateBasic(); err != nil {
return err
}
deposit, err := sdk.ParseCoins(viper.GetString(govcli.FlagDeposit))
if err != nil {
return err
}
msg := gov.NewMsgSubmitProposal(&proposal, deposit, cliCtx.GetFromAddress())
return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
},
}
// proposal flags
cmd.Flags().String(govcli.FlagTitle, "", "Title of proposal")
cmd.Flags().String(govcli.FlagDescription, "", "Description of proposal")
cmd.Flags().String(govcli.FlagDeposit, "", "Deposit of proposal")
cmd.Flags().Bool(isDelete, false, "True to delete methods and default to add")
return cmd
}