github.com/InjectiveLabs/sdk-go@v1.53.0/auth_vote/authz_vote.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "os" 7 8 "github.com/InjectiveLabs/sdk-go/client" 9 chainclient "github.com/InjectiveLabs/sdk-go/client/chain" 10 "github.com/InjectiveLabs/sdk-go/client/common" 11 rpchttp "github.com/cometbft/cometbft/rpc/client/http" 12 codectypes "github.com/cosmos/cosmos-sdk/codec/types" 13 sdk "github.com/cosmos/cosmos-sdk/types" 14 authztypes "github.com/cosmos/cosmos-sdk/x/authz" 15 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" 16 ) 17 18 func main() { 19 network := common.LoadNetwork("testnet", "lb") 20 tmClient, err := rpchttp.New(network.TmEndpoint, "/websocket") 21 if err != nil { 22 panic(err) 23 } 24 25 if err != nil { 26 panic(err) 27 } 28 29 senderAddress, cosmosKeyring, err := chainclient.InitCosmosKeyring( 30 os.Getenv("HOME")+"/.injectived", 31 "injectived", 32 "file", 33 "gov_account", 34 "", 35 "", // keyring will be used if pk not provided 36 false, 37 ) 38 39 if err != nil { 40 panic(err) 41 } 42 43 clientCtx, err := chainclient.NewClientContext( 44 network.ChainId, 45 senderAddress.String(), 46 cosmosKeyring, 47 ) 48 49 if err != nil { 50 panic(err) 51 } 52 53 clientCtx = clientCtx.WithNodeURI(network.TmEndpoint).WithClient(tmClient) 54 55 txFactory := chainclient.NewTxFactory(clientCtx) 56 txFactory = txFactory.WithGasPrices(client.DefaultGasPriceWithDenom) 57 chainClient, err := chainclient.NewChainClient( 58 clientCtx, 59 network, 60 common.OptionTxFactory(&txFactory), 61 ) 62 63 if err != nil { 64 panic(err) 65 } 66 67 // note that we use grantee keyring to send the msg on behalf of granter here 68 // sender, subaccount are from granter 69 validators := []string{"inj156t3yxd4udv0h9gwagfcmwnmm3quy0npqc7pks", "inj16nd8yqxe9p6ggnrz58qr7dxn5y2834yendward"} 70 grantee := senderAddress.String() 71 proposalId := uint64(375) 72 var msgs = make([]sdk.Msg, 0) 73 74 for _, validator := range validators { 75 msgVote := v1beta1.MsgVote{ 76 ProposalId: proposalId, 77 Voter: validator, 78 Option: v1beta1.OptionYes, 79 } 80 81 msg0Bytes, _ := msgVote.Marshal() 82 msg0Any := &codectypes.Any{} 83 msg0Any.TypeUrl = sdk.MsgTypeURL(&msgVote) 84 msg0Any.Value = msg0Bytes 85 86 msg := &authztypes.MsgExec{ 87 Grantee: grantee, 88 Msgs: []*codectypes.Any{msg0Any}, 89 } 90 91 sdkMsg := sdk.Msg(msg) 92 msgs = append(msgs, sdkMsg) 93 } 94 95 // AsyncBroadcastMsg, SyncBroadcastMsg, QueueBroadcastMsg 96 response, err := chainClient.AsyncBroadcastMsg(msgs...) 97 98 if err != nil { 99 panic(err) 100 } 101 102 str, _ := json.MarshalIndent(response, "", " ") 103 fmt.Print(string(str)) 104 }