/
client.go
64 lines (58 loc) · 1.71 KB
/
client.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
package main
import (
"github.com/Sifchain/sifnode/app"
sdkclient "github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/tx"
"github.com/cosmos/cosmos-sdk/simapp/params"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
rpchttp "github.com/tendermint/tendermint/rpc/client/http"
)
func getClientAndFactory(args Args) (tx.Factory, sdkclient.Context) {
uri := ""
switch args.Network {
case Devnet:
uri = "https://rpc-devnet.sifchain.finance:443"
case TestNet:
uri = "https://rpc-testnet.sifchain.finance:443"
case MainNet:
uri = "https://rpc.sifchain.finance:443"
case LocalNet:
uri = "tcp://127.0.0.1:26657"
default:
panic("Network is a required arg")
}
client, err := newClient(uri)
if err != nil {
panic(err)
}
encConfig := app.MakeTestEncodingConfig()
return newClientContext(uri, client, args, encConfig)
}
func newClientContext(uri string, client *rpchttp.HTTP, args Args, config params.EncodingConfig) (tx.Factory, sdkclient.Context) {
txf := tx.Factory{}.
WithChainID(args.ChainID).
WithFees(args.Fees).
WithKeybase(args.Keybase).
WithAccountRetriever(authtypes.AccountRetriever{}).
WithTxConfig(config.TxConfig).
WithGas(100000000)
clientCtx := sdkclient.Context{}.
WithNodeURI(uri).
WithClient(client).
WithFrom(args.Sender.String()).
WithFromAddress(args.Sender).
WithTxConfig(config.TxConfig).
WithInterfaceRegistry(config.InterfaceRegistry).
WithSkipConfirmation(true).
WithFromName(args.SenderName).
WithBroadcastMode("block").
WithOutputFormat("json")
return txf, clientCtx
}
func newClient(uri string) (*rpchttp.HTTP, error) {
rpcClient, err := rpchttp.New(uri, "/websocket")
if err != nil {
return nil, err
}
return rpcClient, nil
}