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
| func transaction() { privKey, _ := crypto.HexToECDSA(privKeyHex) formAddr := crypto.PubkeyToAddress(privKey.PublicKey) fmt.Println("formAddr:", formAddr.Hex()) cli, _ := newClient()
nonce, err := cli.NonceAt(context.Background(), formAddr, nil) if err != nil { log.Fatal(err) } fmt.Println("nonce:", nonce) toAddress := common.HexToAddress(toAddr) amount := big.NewInt(1000000000000000) gasLimit := uint64(21000) gasPrice := big.NewInt(200000000000) fmt.Println("gasPrice:", gasPrice) tx := types.NewTransaction(nonce, toAddress, amount, gasLimit, gasPrice, nil)
chainID, err := cli.NetworkID(context.Background()) if err != nil { log.Fatal(err) } signedTx, err := types.SignTx(tx, types.NewEIP155Signer(chainID), privKey) if err != nil { log.Fatal(err) } encodedTx, err := rlp.EncodeToBytes(signedTx) if err != nil { log.Fatal(err) } params := hex.EncodeToString(encodedTx) fmt.Printf("eth_sendRawTransaction Params: %s\n", params) if err = cli.SendTransaction(context.Background(), signedTx); err != nil { log.Fatal(err) } fmt.Printf("Transaction Hash: 0x%x\n", signedTx.Hash()) }
|