github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/mint/client/cli/tx.go (about) 1 package cli 2 3 import ( 4 "bufio" 5 "fmt" 6 "strings" 7 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context" 9 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 10 interfacetypes "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec/types" 11 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/version" 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth" 14 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/client/utils" 15 utils2 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/mint/client/utils" 16 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/mint/internal/types" 17 "github.com/fibonacci-chain/fbc/x/gov" 18 "github.com/spf13/cobra" 19 ) 20 21 // GetCmdManageTreasuresProposal implements a command handler for submitting a manage treasures proposal transaction 22 func GetCmdManageTreasuresProposal(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command { 23 return &cobra.Command{ 24 Use: "treasures [proposal-file]", 25 Args: cobra.ExactArgs(1), 26 Short: "Submit an update treasures proposal", 27 Long: strings.TrimSpace( 28 fmt.Sprintf(`Submit an update treasures proposal along with an initial deposit. 29 The proposal details must be supplied via a JSON file. 30 31 Example: 32 $ %s tx gov submit-proposal treasures <path/to/proposal.json> --from=<key_or_address> 33 34 Where proposal.json contains: 35 36 { 37 "title":"update treasures", 38 "description":"update treasures", 39 "treasures":[ 40 { 41 "address": "0xA6931Ac6b58E3Db85DFbE1aD408F5096c9736fAE", 42 "proportion":"0.1000000000000000" 43 }, { 44 "address": "0xA6931Ac6b58E3Db85DFbE1aD408F5096c9736fAE", 45 "proportion":"0.2000000000000000" 46 },{ 47 "address": "0xA6931Ac6b58E3Db85DFbE1aD408F5096c9736fAE", 48 "proportion":"0.2000000000000000" 49 } 50 ], 51 "is_added":true, 52 "deposit":[ 53 { 54 "denom":"%s", 55 "amount":"100.000000000000000000" 56 } 57 ] 58 } 59 `, version.ClientName, sdk.DefaultBondDenom, 60 )), 61 RunE: func(cmd *cobra.Command, args []string) error { 62 cdc := cdcP.GetCdc() 63 inBuf := bufio.NewReader(cmd.InOrStdin()) 64 txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) 65 cliCtx := context.NewCLIContext().WithCodec(cdc) 66 67 proposal, err := utils2.ParseManageTreasuresProposalJSON(cdc, args[0]) 68 if err != nil { 69 return err 70 } 71 72 content := types.NewManageTreasuresProposal( 73 proposal.Title, 74 proposal.Description, 75 proposal.Treasures, 76 proposal.IsAdded, 77 ) 78 79 err = content.ValidateBasic() 80 if err != nil { 81 return err 82 } 83 84 msg := gov.NewMsgSubmitProposal(content, proposal.Deposit, cliCtx.GetFromAddress()) 85 return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) 86 }, 87 } 88 } 89 90 // GetCmdModifyNextBlockUpdateProposal implements a command handler for submitting modify next block update proposal transaction 91 func GetCmdModifyNextBlockUpdateProposal(cdcP *codec.CodecProxy, reg interfacetypes.InterfaceRegistry) *cobra.Command { 92 return &cobra.Command{ 93 Use: "next-block-update [proposal-file]", 94 Args: cobra.ExactArgs(1), 95 Short: "Submit a proposal for modifying the next block update.", 96 Long: strings.TrimSpace( 97 fmt.Sprintf(`Submit a proposal for modifying the next block update along with an initial deposit. 98 The proposal details must be supplied via a JSON file. 99 Example: 100 $ %s tx gov submit-proposal next-block-update <path/to/proposal.json> --from=<key_or_address> 101 Where proposal.json contains: 102 { 103 "title":"modify next block to update", 104 "description":"modify next block to update", 105 "block_num":123456, 106 "deposit":[ 107 { 108 "denom":"%s", 109 "amount":"100.000000000000000000" 110 } 111 ] 112 } 113 `, version.ClientName, sdk.DefaultBondDenom, 114 )), 115 RunE: func(cmd *cobra.Command, args []string) error { 116 cdc := cdcP.GetCdc() 117 inBuf := bufio.NewReader(cmd.InOrStdin()) 118 txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(utils.GetTxEncoder(cdc)) 119 cliCtx := context.NewCLIContext().WithCodec(cdc) 120 121 proposal, err := utils2.ParseModifyNextBlockUpdateProposalJSON(cdc, args[0]) 122 if err != nil { 123 return err 124 } 125 126 content := types.NewModifyNextBlockUpdateProposal( 127 proposal.Title, 128 proposal.Description, 129 proposal.BlockNum, 130 ) 131 132 err = content.ValidateBasic() 133 if err != nil { 134 return err 135 } 136 137 msg := gov.NewMsgSubmitProposal(content, proposal.Deposit, cliCtx.GetFromAddress()) 138 return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg}) 139 }, 140 } 141 }