Lanjut ke konten utama

Sending Transactions Using Web3

transaksiweb3.jsalchemy
Pemula
Elan Halpern
Dokumen Alchemy(opens in a new tab)
4 November 2020
9 bacaan singkat minute read

This is a beginner friendly guide to sending Ethereum transactions using web3. Ada tiga langkah utama untuk mengirim transaksi ke blockchain ethereum: buat, tandatangani, dan siarkan. Kita akan membahas ketiganya, dengan harapan menjawab pertanyaan apa pun yang Anda miliki! In this tutorial, we'll be using Alchemy(opens in a new tab) to send our transactions to the Ethereum chain. You can create a free Alchemy account here(opens in a new tab).

NOTE: This guide is for signing your transactions on the backend for your app, if you want to integrate signing your transactions on the frontend, check out integrating Web3 with a browser provider(opens in a new tab).

Dasar-Dasar

Seperti kebanyakan pengembang blockchain ketika mereka baru memulai, Anda mungkin telah melakukan beberapa penelitian tentang bagaimana cara mengirim transaksi (sesuatu yang seharusnya cukup sederhana) dan menemukan banyak panduan, yang masing-masing mengatakan hal-hal yang berbeda dan membuat Anda kewalahan dan bingung. Jika Anda ada di tempat itu, jangan khawatir; kita semua pernah ada di beberapa titik tersebut! Jadi, sebelum kita memulai, mari meluruskan beberapa hal:

1.Alchemy tidak menyimpan kunci privat Anda

  • Ini berarti bahwa Alchemy tidak dapat menandatangani dan mengirim transaksi mewakili Anda. Alasannya untuk ini bersifat keamanan. Alchemy tidak pernah meminta Anda membagikan kunci privat Anda, dan Anda seharusnya tidak pernah membagikan kunci privat Anda dengan node yang di-host (atau dengan siapa pun dalam hal ini).
  • You can read from the blockchain using Alchemy’s core API, but to write to it you’ll need to use something else to sign your transactions before sending them through Alchemy (this is the same for any other node service).

2.Apa itu "penandatangan"?

3.Mengapa saya harus menandatangani transaksi saya?

  • Setiap pengguna yang ingin mengirim transaksi di jaringan Ethereum harus menandatangani transaksi (menggunakan kunci privat mereka), untuk memvalidasi bahwa asal transaksi sesuai dengan pihak yang diklaimnya.
  • Sangat penting untuk melindungi kunci privat ini, karena memiliki akses ke kunci tersebut memberikan kontrol penuh terhadap akun Ethereum Anda, yang memungkinkan Anda (atau siapa pun yang memiliki akses) untuk melakukan transaksi mewakili Anda.

4.Bagaimana cara melindungi kunci privat saya?

  • Ada banyak cara melindungi kunci privat Anda dan menggunakannya untuk mengirimkan transaksi. Dalam tutorial ini, kita akan menggunakan file .env. Namun, Anda juga dapat menggunakan penyedia terpisah yang menyimpan kunci privat, menggunakan file penyimpanan kunci, atau opsi lainnya.

5. Apa perbedaan antara eth_sendTransaction dan eth_sendRawTransaction?

eth_sendTransaction dan eth_sendRawTransaction keduanya adalah fungsi API Ethereum yang menyiarkan transaksi ke jaringan Ethereum, sehingga transaksi akan ditambahkan ke blok berikutnya. Fungsi ini berbeda dalam cara menangani penandatanganan transaksi.

Ketika menggunakan web3, eth_sendRawTransaction diakses dengan memanggil fungsi web3.eth.sendSignedTransaction(opens in a new tab).

This is what we will be using in this tutorial.

6.Apa itu pustaka web3?

Baiklah, karena kita telah menjawab beberapa pertanyaan, mari kita teruskan ke bagian tutorial. Feel free to ask questions anytime in the Alchemy discord(opens in a new tab)!

NOTE: This guide requires an Alchemy account, an Ethereum address or MetaMask wallet, NodeJs, and npm installed. Jika tidak, ikuti langkah-langkah ini:

  1. Buat akun Alchemy gratis(opens in a new tab)
  2. Create MetaMask account(opens in a new tab) (or get an Ethereum address)
  3. Ikuti langkah-langkah ini untuk menginstal NodeJs dan NPM(opens in a new tab)

Langkah-Langkah untuk Mengirim Transaksi Anda

1.Buat aplikasi Alchemy di testnet Rinkeby

Arahkan kursor ke Dasbor Alchemy(opens in a new tab) Anda dan buat aplikasi baru, yang memilih Rinkeby (atau testnet lain mana pun) untuk jaringan Anda.

2.Meminta ETH dari keran Rinkeby

Follow the instructions on the Alchemy Rinkeby faucet(opens in a new tab) to receive ETH. Make sure to include your Rinkeby Ethereum address (from MetaMask) and not another network. After following the instructions, double-check that you’ve received the ETH in your wallet.

3. Buat direktori proyek baru dan cddi dalamnya

Buat direktori proyek baru dari baris perintah (terminal untuk mac) dan arahkan kursor ke sana:

1mkdir sendtx-example
2cd sendtx-example

4.Instal Web3 Alchemy (atau pustaka web3 mana pun)

Jalankan perintah berikut dalam direktori proyek Anda untuk menginstal Web3 Alchemy(opens in a new tab):

1npm install @alch/alchemy-web3

5.Instal dotenv

Kita akan menggunakan file .env untuk menyimpan kunci API dan kunci privat kita dengan aman.

1npm install dotenv --save

6.Buat file .env

Create a .env file in your project directory and add the following (replacing “your-api-url" and "your-private-key")

1API_URL = "your-api-url"
2PRIVATE_KEY = "your-private-key"
Don't commit .env! Please make sure never to share or expose your .env file with anyone, as you are compromising your secrets in doing so. If you are using version control, add your .env to a gitignore(opens in a new tab) file.

7. Buat file sendTx.js

Hebat, karena sekarang kita memiliki data sensitif yang dilindungi di file .env, mari mulai pengodean. Untuk contoh pengiriman transaksi, kita akan mengirimkan ETH kembali ke keran Rinkeby.

Buat file sendTx.js, yang merupakan tempat di mana kita akan mengonfigurasi dan mengirim transaksi percontohan kita, dan menambahkan baris kode berikut ini ke dalamnya:

1async function main() {
2 require('dotenv').config();
3 const { API_URL, PRIVATE_KEY } = process.env;
4 const { createAlchemyWeb3 } = require("@alch/alchemy-web3");
5 const web3 = createAlchemyWeb3(API_URL);
6 const myAddress = '0x610Ae88399fc1687FA7530Aac28eC2539c7d6d63' //TODO: replace this address with your own public address
7
8 const nonce = await web3.eth.getTransactionCount(myAddress, 'latest'); // nonce starts counting from 0
9
10 const transaction = {
11 'to': '0x31B98D14007bDEe637298086988A0bBd31184523', // faucet address to return eth
12 'value': 1000000000000000000, // 1 ETH
13 'gas': 30000,
14 'nonce': nonce,
15 // optional data field to send message or execute smart contract
16 };
17
18 const signedTx = await web3.eth.accounts.signTransaction(transaction, PRIVATE_KEY);
19
20 web3.eth.sendSignedTransaction(signedTx.rawTransaction, function(error, hash) {
21 if (!error) {
22 console.log("🎉 The hash of your transaction is: ", hash, "\n Check Alchemy's Mempool to view the status of your transaction!");
23 } else {
24 console.log("❗Something went wrong while submitting your transaction:", error)
25 }
26 });
27}
28
29main();
Tampilkan semua

Be sure to replace the address on line 6 with your own public address.

Now, before we jump into running this code, let's talk about some of the components here.

A Note on data There are a two main types of transactions that can be sent in Ethereum.

8. Jalankan kode dengan menggunakan node sendTx.js

Arahkan kursor kembali ke terminal atau baris perintah dan jalankan:

1node sendTx.js

9.Lihat transaksi Anda di Mempool

Buka halaman Mempool(opens in a new tab) di dasbor Alchemy Anda dan filter berdasarkan aplikasi yang Anda buat untuk menemukan transaksi Anda. Inilah tempat di mana kita dapat melihat transisi transaksi kita dari status menunggu hingga status ditambang (jika berhasil) atau status dibatalkan jika tidak berhasil. Pastikan untuk memilih "Semua" sehingga Anda melihat kategori transaksi "ditambang", "menunggu", dan "dibatalkan". Anda juga dapat mencari transaksi Anda dengan mencari transaksi yang dikirim ke alamat 0x31b98d14007bdee637298086988a0bbd31184523.

Untuk melihat detail transaksi Anda setelah Anda menemukannya, pilih hash tx, yang seharusnya membawa Anda melihat tampilan seperti ini:

Tangkapan layar penonton di Mempool

Dari sana Anda dapat melihat transaksi Anda di Etherscan dengan mengklik ikon yang dilingkari dalam warna merah!

Yeiiiiii! Anda baru saja mengirim transaksi Ethereum pertama Anda dengan menggunakan Alchemy 🎉

Untuk memberikan umpan balik dan saran mengenai panduan ini, silakan kirimkan pesan ke Elan di Discord(opens in a new tab) Alchemy!

Dipublikasikan pertama kali di https://docs.alchemyapi.io/tutorials/sending-transactions-using-web3-and-alchemy(opens in a new tab)

Terakhir diedit: @nhsz(opens in a new tab), 15 Agustus 2023

Apakah tutorial ini membantu?