Pustaka API JavaScript
Pembaruan terakhir halaman: 25 Februari 2026
Agar aplikasi web dapat berinteraksi dengan blockchain Ethereum (yaitu, membaca data blockchain dan/atau mengirim transaksi ke jaringan), aplikasi tersebut harus terhubung ke node Ethereum.
Untuk tujuan ini, setiap klien Ethereum mengimplementasikan spesifikasi JSON-RPC, sehingga terdapat serangkaian metode seragam yang dapat diandalkan oleh aplikasi.
Jika Anda ingin menggunakan JavaScript untuk terhubung dengan node Ethereum, Anda dapat menggunakan JavaScript murni, tetapi ada beberapa pustaka praktis dalam ekosistem yang membuatnya jauh lebih mudah. Dengan pustaka ini, pengembang dapat menulis metode satu baris yang intuitif untuk menginisialisasi permintaan JSON-RPC (di balik layar) yang berinteraksi dengan Ethereum.
Harap perhatikan bahwa sejak The Merge, dua perangkat lunak Ethereum yang terhubung - klien eksekusi dan klien konsensus - diperlukan untuk menjalankan node. Pastikan node Anda mencakup klien eksekusi dan klien konsensus. Jika node Anda tidak berada di mesin lokal Anda (misalnya, node Anda berjalan di instans AWS), perbarui alamat IP dalam tutorial yang sesuai. Untuk informasi lebih lanjut, silakan lihat halaman kami tentang menjalankan node.
Prasyarat
Selain memahami JavaScript, mungkin akan membantu jika Anda memahami tumpukan Ethereum dan klien Ethereum.
Mengapa menggunakan pustaka?
Pustaka-pustaka ini mengabstraksi banyak kerumitan dalam berinteraksi langsung dengan node Ethereum. Mereka juga menyediakan fungsi utilitas (misalnya, mengonversi ETH ke Gwei) sehingga sebagai pengembang, Anda dapat menghabiskan lebih sedikit waktu untuk menangani kerumitan klien Ethereum dan lebih banyak waktu berfokus pada fungsionalitas unik aplikasi Anda.
Fitur pustaka
Terhubung ke node Ethereum
Dengan menggunakan penyedia (provider), pustaka-pustaka ini memungkinkan Anda untuk terhubung ke Ethereum dan membaca datanya, baik itu melalui JSON-RPC, INFURA, Etherscan, Alchemy, atau MetaMask.
Peringatan: Web3.js telah diarsipkan pada 4 Maret 2025. Baca pengumumannya (opens in a new tab). Pertimbangkan untuk menggunakan pustaka alternatif seperti ethers.js (opens in a new tab) atau viem (opens in a new tab) untuk proyek baru.
Contoh Ethers
1// A BrowserProvider wraps a standard Web3 provider, which is // BrowserProvider membungkus penyedia Web3 standar, yaitu2// what MetaMask injects as window.ethereum into each page // apa yang disuntikkan MetaMask sebagai window.ethereum ke setiap halaman3const provider = new ethers.BrowserProvider(window.ethereum)45// The MetaMask plugin also allows signing transactions to // Plugin MetaMask juga memungkinkan penandatanganan transaksi untuk6// send ether and pay to change state within the blockchain. // mengirim ether dan membayar untuk mengubah status di dalam blockchain.7// For this, we need the account signer... // Untuk ini, kita memerlukan penandatangan akun...8const signer = provider.getSigner()Contoh Web3js
1var web3 = new Web3("http://localhost:8545")2// or // atau3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))45// change provider // ubah penyedia6web3.setProvider("ws://localhost:8546")7// or // atau8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))910// Using the IPC provider in node.js // Menggunakan penyedia IPC di node.js11var net = require("net")12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path // jalur mac os13// or // atau14var web3 = new Web3(15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)16) // mac os path // jalur mac os17// on windows the path is: "\\\\.\\pipe\\geth.ipc" // di windows jalurnya adalah: "\\\\.\\pipe\\geth.ipc"18// on linux the path is: "/users/myuser/.ethereum/geth.ipc" // di linux jalurnya adalah: "/users/myuser/.ethereum/geth.ipc"Tampilkan semuaSetelah disiapkan, Anda akan dapat meminta data (query) blockchain untuk:
- nomor blok
- perkiraan gas
- peristiwa kontrak pintar
- id jaringan
- dan banyak lagi...
Fungsionalitas dompet
Pustaka-pustaka ini memberi Anda fungsionalitas untuk membuat dompet, mengelola kunci, dan menandatangani transaksi.
Berikut adalah contoh dari Ethers
1// Create a wallet instance from a mnemonic... // Buat instans dompet dari mnemonik...2mnemonic =3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"4walletMnemonic = Wallet.fromPhrase(mnemonic)56// ...or from a private key // ...atau dari kunci privat7walletPrivateKey = new Wallet(walletMnemonic.privateKey)89walletMnemonic.address === walletPrivateKey.address10// true // true1112// The address as a Promise per the Signer API // Alamat sebagai Promise sesuai dengan API Signer13walletMnemonic.getAddress()14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' } // { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }1516// A Wallet address is also available synchronously // Alamat dompet juga tersedia secara sinkron17walletMnemonic.address18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' // '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'1920// The internal cryptographic components // Komponen kriptografi internal21walletMnemonic.privateKey22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db' // '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'23walletMnemonic.publicKey24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64' // '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'2526// The wallet mnemonic // Mnemonik dompet27walletMnemonic.mnemonic28// { // {29// locale: 'en', // locale: 'en',30// path: 'm/44\'/60\'/0\'/0/0', // path: 'm/44\'/60\'/0\'/0/0',31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol' // phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'32// } // }3334// Note: A wallet created with a private key does not // Catatan: Sebuah dompet yang dibuat dengan kunci privat tidak35// have a mnemonic (the derivation prevents it) // memiliki mnemonik (derivasi mencegahnya)36walletPrivateKey.mnemonic37// null // null3839// Signing a message // Menandatangani pesan40walletMnemonic.signMessage("Hello World")41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' } // { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }4243tx = {44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",45 value: utils.parseEther("1.0"),46}4748// Signing a transaction // Menandatangani transaksi49walletMnemonic.signTransaction(tx)50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' } // { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }5152// The connect method returns a new instance of the // Metode connect mengembalikan instans baru dari53// Wallet connected to a provider // Dompet yang terhubung ke penyedia54wallet = walletMnemonic.connect(provider)5556// Querying the network // Melakukan kueri jaringan57wallet.getBalance()58// { Promise: { BigNumber: "42" } } // { Promise: { BigNumber: "42" } }59wallet.getTransactionCount()60// { Promise: 0 } // { Promise: 0 }6162// Sending ether // Mengirim ether63wallet.sendTransaction(tx)Tampilkan semuaBaca dokumentasi lengkapnya (opens in a new tab)
Setelah disiapkan, Anda akan dapat:
- membuat akun
- mengirim transaksi
- menandatangani transaksi
- dan banyak lagi...
Berinteraksi dengan fungsi kontrak pintar
Pustaka klien JavaScript memungkinkan aplikasi Anda untuk memanggil fungsi kontrak pintar dengan membaca Application Binary Interface (ABI) dari kontrak yang dikompilasi.
ABI pada dasarnya menjelaskan fungsi kontrak dalam format JSON dan memungkinkan Anda untuk menggunakannya seperti objek JavaScript biasa.
Jadi kontrak Solidity berikut:
1contract Test {2 uint a;3 address d = 0x12345678901234567890123456789012;45 constructor(uint testInt) { a = testInt;}67 event Event(uint indexed b, bytes32 c);89 event Event2(uint indexed b, bytes32 c);1011 function foo(uint b, bytes32 c) returns(address) {12 Event(b, c);13 return d;14 }15}Tampilkan semuaAkan menghasilkan JSON berikut:
1[{2 "type":"constructor",3 "payable":false,4 "stateMutability":"nonpayable"5 "inputs":[{"name":"testInt","type":"uint256"}],6 },{7 "type":"function",8 "name":"foo",9 "constant":false,10 "payable":false,11 "stateMutability":"nonpayable",12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],13 "outputs":[{"name":"","type":"address"}]14 },{15 "type":"event",16 "name":"Event",17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],18 "anonymous":false19 },{20 "type":"event",21 "name":"Event2",22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],23 "anonymous":false24}]Tampilkan semuaIni berarti Anda dapat:
- Mengirim transaksi ke kontrak pintar dan mengeksekusi metodenya
- Memanggil untuk memperkirakan gas yang akan dibutuhkan oleh eksekusi metode saat dieksekusi di Mesin Virtual Ethereum
- Menyebarkan kontrak
- Dan banyak lagi...
Fungsi utilitas
Fungsi utilitas memberi Anda pintasan praktis yang membuat membangun dengan Ethereum menjadi sedikit lebih mudah.
Nilai ETH secara default berada dalam Wei. 1 ETH = 1.000.000.000.000.000.000 WEI – ini berarti Anda berurusan dengan banyak angka! web3.utils.toWei mengonversi ether ke Wei untuk Anda.
Dan di ethers terlihat seperti ini:
1// Get the balance of an account (by address or ENS name) // Dapatkan saldo akun (berdasarkan alamat atau nama ENS)2balance = await provider.getBalance("ethers.eth")3// { BigNumber: "2337132817842795605" } // { BigNumber: "2337132817842795605" }45// Often you will need to format the output for the user // Seringkali Anda perlu memformat output untuk pengguna6// which prefer to see values in ether (instead of wei) // yang lebih suka melihat nilai dalam ether (bukan wei)7ethers.utils.formatEther(balance)8// '2.337132817842795605' // '2.337132817842795605'Pustaka yang tersedia
Web3.js - API JavaScript Ethereum.
Ethers.js - Implementasi dompet Ethereum lengkap dan utilitas dalam JavaScript dan TypeScript.
The Graph - Protokol untuk mengindeks data Ethereum dan IPFS serta melakukan kueri menggunakan GraphQL.
- The Graph (opens in a new tab)
- Graph Explorer (opens in a new tab)
- Dokumentasi (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Alchemy SDK - Pembungkus (wrapper) untuk Ethers.js dengan API yang ditingkatkan.
viem - Antarmuka TypeScript untuk Ethereum.
Codex - API data blockchain yang diperkaya dan real-time di puluhan rantai.
- Dokumentasi (opens in a new tab)
- Explorer (opens in a new tab)
- GitHub (opens in a new tab)
- Discord (opens in a new tab)
Drift - Meta-pustaka TypeScript dengan caching bawaan, hooks, dan mock pengujian.
Bacaan lebih lanjut
Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!
Topik terkait
Tutorial terkait
- Menyiapkan Web3js untuk menggunakan blockchain Ethereum dalam JavaScript – Instruksi untuk menyiapkan web3.js di proyek Anda.
- Memanggil kontrak pintar dari JavaScript – Menggunakan token DAI, lihat cara memanggil fungsi kontrak menggunakan JavaScript.
- Mengirim transaksi menggunakan web3 dan Alchemy – Panduan langkah demi langkah untuk mengirim transaksi dari backend.
Tutorial: API JavaScript & WebSocket di Ethereum
- Menggunakan WebSocket – Cara menggunakan WebSocket dengan Alchemy untuk berlangganan peristiwa Ethereum dan membuat permintaan JSON-RPC secara real-time.