func Broadcast(tx types.Tx, broadcastRPC string) (*rtypes.Receipt, error) { client := cclient.NewClient(broadcastRPC, "JSONRPC") rec, err := client.BroadcastTx(tx) if err != nil { return nil, err } return &rec.Receipt, nil }
func checkCommon(nodeAddr, signAddr, pubkey, addr, amtS, nonceS string) (pub account.PubKey, amt int64, nonce int64, err error) { if amtS == "" { err = fmt.Errorf("input must specify an amount with the --amt flag") return } var pubKeyBytes []byte if pubkey == "" && addr == "" { err = fmt.Errorf("at least one of --pubkey or --addr must be given") return } else if pubkey != "" { if addr != "" { // NOTE: if --addr given byt MINTX_PUBKEY is set, the pubkey still wins // TODO: fix this logger.Errorln("you have specified both a pubkey and an address. the pubkey takes precedent") } pubKeyBytes, err = hex.DecodeString(pubkey) if err != nil { err = fmt.Errorf("pubkey is bad hex: %v", err) return } } else { // grab the pubkey from eris-keys pubKeyBytes, err = Pub(addr, signAddr) if err != nil { err = fmt.Errorf("failed to fetch pubkey for address (%s): %v", addr, err) return } } if len(pubKeyBytes) == 0 { err = fmt.Errorf("Error resolving public key") return } amt, err = strconv.ParseInt(amtS, 10, 64) if err != nil { err = fmt.Errorf("amt is misformatted: %v", err) } var pubArray [32]byte copy(pubArray[:], pubKeyBytes) pub = account.PubKeyEd25519(pubArray) addrBytes := pub.Address() if nonceS == "" { if nodeAddr == "" { err = fmt.Errorf("input must specify a nonce with the --nonce flag or use --node-addr (or MINTX_NODE_ADDR) to fetch the nonce from a node") return } // fetch nonce from node client := cclient.NewClient(nodeAddr, "HTTP") ac, err2 := client.GetAccount(addrBytes) if err2 != nil { err = fmt.Errorf("Error connecting to node (%s) to fetch nonce: %s", nodeAddr, err2.Error()) return } if ac == nil || ac.Account == nil { err = fmt.Errorf("unknown account %X", addrBytes) return } nonce = int64(ac.Account.Sequence) + 1 } else { nonce, err = strconv.ParseInt(nonceS, 10, 64) if err != nil { err = fmt.Errorf("nonce is misformatted: %v", err) return } } return }
var ( rpcAddr = "127.0.0.1:36657" // Not 46657 requestAddr = "http://" + rpcAddr + "/" websocketAddr = "ws://" + rpcAddr + "/websocket" node *nm.Node mempoolCount = 0 // make keys user = makeUsers(5) chainID string clients = map[string]cclient.Client{ "JSONRPC": cclient.NewClient(requestAddr, "JSONRPC"), "HTTP": cclient.NewClient(requestAddr, "HTTP"), } ) // deterministic account generation, synced with genesis file in config/tendermint_test/config.go func makeUsers(n int) []*acm.PrivAccount { accounts := []*acm.PrivAccount{} for i := 0; i < n; i++ { secret := ("mysecret" + strconv.Itoa(i)) user := acm.GenPrivAccountFromSecret(secret) accounts = append(accounts, user) } return accounts }