Apa Itu Ethers.js?
Ethers.js adalah library JavaScript dan TypeScript open-source yang digunakan untuk menghubungkan aplikasi, wallet, skrip, dan alat developer ke Ethereum serta jaringan blockchain berbasis EVM lainnya.Library ini menyediakan fungsi yang dapat digunakan kembali untuk membaca data blockchain, mengirim transaksi, mengelola akun, menandatangani pesan, berinteraksi dengan smart contract, menguraikan log peristiwa, dan mengolah format data Ethereum.Developer tidak perlu membuat setiap permintaan JSON-RPC atau mengodekan setiap pemanggilan smart contract secara manual. Mereka dapat menggunakan objek dan metode ethers.js yang menangani sebagian besar pekerjaan teknis tersebut.Dokumentasi resmi ethers.js menjelaskan library ini sebagai alat yang lengkap dan ringkas untuk berinteraksi dengan blockchain Ethereum dan ekosistemnya.
Ethers.js umum digunakan pada front end aplikasi terdesentralisasi, layanan blockchain sisi server, wallet kripto, sistem pemantauan otomatis, skrip pengujian, alat pembayaran, dan alur kerja deployment smart contract.Library ini tidak mengoperasikan blockchain sendiri atau menyediakan konsensus Ethereum.Ethers.js berfungsi sebagai lapisan perangkat lunak antara aplikasi dan node Ethereum, wallet, atau layanan RPC yang kompatibel.Ethers.js ditulis dalam TypeScript dan menyertakan deklarasi tipe bawaan yang dapat membantu developer mendeteksi kesalahan tertentu sebelum aplikasi dijalankan.Proyek ini didistribusikan berdasarkan MIT License dan dikelola melalui repositori kode sumber ethers.js publiknya.
Apa Versi Ethers.js Saat Ini?
Per 16 Juli 2026, rilis terdokumentasi terbaru adalah ethers v6.17.0.Repositori resmi mencatat versi 6.17.0 dirilis pada 18 Juni 2026.Versi terkini juga dapat diperiksa melalui daftar paket ethers resmi.
Developer sebaiknya memeriksa versi terkini sebelum menginstal library karena rilis paket dapat mencakup perbaikan bug, pembaruan jaringan, peningkatan keamanan, dan dukungan protokol baru.Biasanya, proyek sebaiknya mengunci versi dependensinya melalui file package lock agar lingkungan pengembangan, pengujian, dan produksi menggunakan rilis paket yang sama.Menginstal versi baru yang belum diketahui secara otomatis tanpa pengujian dapat menyebabkan perilaku yang tidak kompatibel atau perubahan dependensi yang tak terduga.Apa Fungsi Ethers.js?
Ethers.js menyediakan kumpulan alat untuk berinteraksi dengan sistem blockchain bergaya Ethereum.Library ini dapat menghubungkan aplikasi ke node Ethereum melalui JSON-RPC, WebSocket, atau antarmuka wallet browser.Ethers.js dapat mengambil saldo akun, blok, transaksi, data biaya, kode smart contract, log peristiwa, dan informasi jaringan.Library ini dapat membuat dan mengelola wallet, menurunkan akun dari frasa mnemonik, mengenkripsi kunci privat, serta menandatangani pesan atau transaksi.Ethers.js dapat menggunakan ABI smart contract untuk mengodekan pemanggilan fungsi dan menguraikan nilai yang dikembalikan.Library ini dapat mengirim transaksi yang mengubah state melalui signer dan menunggu hingga transaksi memperoleh konfirmasi blockchain.Ethers.js dapat memperkirakan gas, memformat unit mata uang kripto, menghitung hash, memulihkan alamat penanda tangan, dan memvalidasi alamat Ethereum.Fitur-fitur ini memungkinkan developer berfokus pada logika aplikasi alih-alih membangun ulang komunikasi blockchain tingkat rendah dari awal.Bagaimana Cara Menginstal Ethers.js?
Ethers.js biasanya diinstal melalui sistem paket npm dengan nama paket ethers.Petunjuk instalasi resmi menyediakan perintah npm install ethers untuk proyek Node.js.
Setelah menginstal, developer dapat mengimpor seluruh namespace ethers atau mengimpor kelas dan fungsi tertentu.Versi 6 mendukung pola modul JavaScript modern dan memungkinkan developer mengimpor banyak fungsi langsung dari paket utama.Impor selektif dapat membantu alat bundling menyertakan hanya kode yang diperlukan aplikasi.Aplikasi browser juga dapat menggunakan build modul ECMAScript, tetapi aplikasi produksi sebaiknya mengikuti proses build dan pengelolaan dependensi yang terkontrol, bukan memuat kode yang belum diverifikasi dari sumber yang tidak dikenal.Jangan pernah menginstal paket hanya berdasarkan nama yang mirip karena paket berbahaya dapat meniru library kripto populer.Periksa nama paket, informasi penerbit, repositori, versi, data integritas, dan file lock dependensi sebelum instalasi.Bagaimana Ethers.js Terhubung ke Blockchain
Ethers.js berkomunikasi dengan infrastruktur blockchain melalui provider.Provider adalah koneksi hanya-baca yang memungkinkan aplikasi meminta informasi blockchain dan menyimulasikan transaksi.Provider mengirim permintaan ke node Ethereum atau endpoint RPC lain yang kompatibel.Permintaan yang umum mencakup pemeriksaan saldo ETH, pengambilan blok, pembacaan state kontrak, estimasi gas, pengambilan informasi biaya, dan pencarian log peristiwa.Provider biasanya tidak menyimpan kunci privat dan tidak dapat mengotorisasi transaksi dari akun pengguna secara mandiri.Dokumentasi provider ethers.js resmi menjelaskan kelas provider dan operasi blockchain yang tersedia melaluinya.
Aplikasi produksi yang andal sebaiknya menggunakan koneksi RPC dengan kapasitas, ketersediaan, akses arsip, kontrol keamanan, dan batas laju yang sesuai.Endpoint publik atau bersama dapat berguna untuk pengujian, tetapi mungkin melambat atau tidak tersedia saat permintaan tinggi.Apa Itu Provider di Ethers.js?
Provider adalah abstraksi yang merepresentasikan koneksi ke jaringan yang kompatibel dengan Ethereum.Provider memberi developer antarmuka JavaScript yang konsisten meskipun koneksi node atau metode transportasi yang mendasarinya berbeda.Provider JSON-RPC berkomunikasi dengan node melalui permintaan JSON-RPC standar.Provider WebSocket dapat mempertahankan koneksi persisten yang berguna untuk menerima blok baru, aktivitas yang masih tertunda, dan notifikasi peristiwa.Provider browser membungkus antarmuka wallet yang disuntikkan ke browser dan mengikuti standar browser provider umum.Provider fallback dapat menggabungkan beberapa sumber data serta membandingkan atau memprioritaskan responsnya sesuai konfigurasi.Provider dapat mengambil data publik, tetapi jangan menyamakannya dengan signer yang mengotorisasi tindakan akun.Apa Itu BrowserProvider?
BrowserProvider adalah kelas ethers.js v6 yang umum digunakan untuk menghubungkan aplikasi web dengan provider Ethereum yang disuntikkan ke browser.Provider yang disuntikkan biasanya disediakan oleh lingkungan wallet yang memungkinkan pengguna menyetujui akses akun dan transaksi.Aplikasi dapat membuat BrowserProvider dari antarmuka yang disuntikkan, lalu meminta signer untuk akun yang disetujui.Menghubungkan wallet tidak otomatis memberi aplikasi akses ke kunci privat wallet.Wallet biasanya menyimpan kredensial penandatanganan dalam lingkungan terlindungnya sendiri dan meminta persetujuan pengguna untuk setiap tanda tangan atau transaksi yang diminta.Aplikasi sebaiknya menjelaskan dengan jelas alasan meminta akses akun dan tidak meminta tanda tangan sebelum pengguna memahami tindakannya.Apa Itu Signer di Ethers.js?
Signer adalah abstraksi yang merepresentasikan akun Ethereum yang dapat mengotorisasi pesan dan transaksi.Signer dapat didukung oleh kunci privat, wallet yang dibuat dari frasa mnemonik, perangkat penandatanganan hardware, wallet browser, smart account, atau sistem penandatanganan lainnya.Dokumentasi antarmuka Signer resmi menjelaskan bahwa signer merepresentasikan akun blockchain dan mendukung pengaturan penandatanganan tingkat lanjut ketika kunci privat tidak tersedia langsung bagi aplikasi.
Signer biasanya dapat mengembalikan alamatnya, menandatangani pesan, memperkirakan gas transaksi, mengisi kolom transaksi, dan mengirim transaksi yang telah diotorisasi.Operasi yang tersedia bergantung pada implementasi signer.Signer yang terhubung ke provider dapat menggunakan data jaringan saat menyiapkan dan mengirim transaksi.Signer yang tidak terhubung mungkin dapat menandatangani data secara lokal, tetapi belum tentu dapat menyiarkan transaksi yang dihasilkan.Provider vs. Signer di Ethers.js
Provider membaca data blockchain, sedangkan signer mengotorisasi tindakan yang terkait dengan akun.Provider dapat memeriksa saldo atau menyimulasikan fungsi kontrak tanpa menyimpan kunci privat.Signer dapat menyetujui transfer token, men-deploy kontrak, atau mengirim transaksi lain yang mengubah state.Banyak objek ethers.js berperilaku berbeda, bergantung pada apakah objek tersebut terhubung ke provider atau signer.Kontrak yang hanya terhubung ke provider biasanya hanya dapat menjalankan operasi baca.Kontrak yang sama, jika terhubung ke signer, dapat menyiapkan dan mengirim transaksi yang mengubah state apabila signer memiliki otoritas dan dana yang diperlukan.Memisahkan provider dari signer membantu developer mencegah tercampurnya akses data publik dengan kendali akun yang sensitif.Apa Itu Wallet di Ethers.js?
Kelas Wallet ethers.js adalah signer yang didukung oleh kunci privat.Wallet dapat menghasilkan alamat Ethereum, menandatangani pesan dan transaksi, serta mengirim transaksi jika terhubung ke provider.Wallet dapat dibuat dari kunci privat, dibuat secara acak, dipulihkan dari frasa mnemonik yang didukung, atau didekripsi dari keystore JSON terenkripsi.Dokumentasi wallet ethers.js resmi menjelaskan pembuatan wallet, wallet deterministik hierarkis, file JSON terenkripsi, frasa mnemonik, dan fungsi penandatanganan.
Wallet sisi server dapat berguna untuk otomatisasi terkontrol, tetapi menaruh kunci privat tanpa batasan dalam kode sumber aplikasi menimbulkan risiko keamanan serius.Kunci privat tidak boleh dimasukkan ke repositori kode sumber, disematkan dalam bundle browser publik, dicetak di log, atau dibagikan melalui pesan biasa.Sistem penandatanganan produksi sebaiknya menggunakan kontrol akses, secret terenkripsi, izin terbatas, backup aman, dan pemantauan transaksi yang sesuai dengan jumlah kripto yang dikelola.Apakah Ethers.js Menyimpan Dana Pengguna?
Ethers.js bukan kustodian dan tidak menyimpan mata uang kripto milik pengguna.Ethers.js adalah library perangkat lunak yang dapat membuat atau berinteraksi dengan objek penandatanganan dan akun blockchain.Dana tetap dikendalikan oleh kunci privat, smart contract, atau sistem wallet eksternal yang terkait dengan alamat tersebut.Jika developer menggunakan ethers.js untuk membuat wallet baru, developer atau pengguna bertanggung jawab melindungi data pemulihannya dengan aman.Kehilangan kunci privat atau frasa mnemonik dapat membuat kripto terkait tidak dapat diakses secara permanen.Kunci yang terekspos dapat memungkinkan orang lain mentransfer aset.Bagaimana Ethers.js Berinteraksi dengan Smart Contract
Ethers.js menggunakan kelas Contract untuk merepresentasikan smart contract yang telah di-deploy.Instance kontrak dibuat dengan alamat tujuan, ABI, serta provider atau signer opsional.ABI menjelaskan fungsi eksternal, peristiwa, error, dan tipe data kontrak.Ethers.js menggunakan informasi ini untuk membuat metode JavaScript yang dapat dipanggil dan menguraikan respons blockchain.Dokumentasi API Contract resmi menjelaskan bahwa runner yang terhubung, biasanya provider atau signer, menentukan operasi yang dapat dilakukan kontrak.
Pemanggilan kontrak hanya-baca dapat mengambil saldo token, alamat pemilik, pengaturan protokol, atau nilai publik lainnya.Pemanggilan yang mengubah state dapat mentransfer token, menyetujui penggunaan aset, menyetor kolateral, memberikan suara, mengklaim reward, atau menjalankan tindakan lain yang ditentukan kontrak.Memanggil metode kontrak melalui ethers.js tidak membuktikan bahwa kontrak tersebut aman.Developer tetap harus memverifikasi alamat kontrak, ABI, izin, jaringan, perilaku yang diharapkan, dan asumsi keamanannya.Apa Itu ABI?
ABI adalah singkatan dari Application Binary Interface.ABI mendefinisikan cara perangkat lunak eksternal berkomunikasi dengan antarmuka smart contract yang dapat dipanggil.ABI menjelaskan nama fungsi, tipe input, tipe output, struktur peristiwa, error khusus, dan aturan mutabilitas.Ethers.js menggunakan ABI untuk menerjemahkan nilai JavaScript yang mudah dibaca menjadi data transaksi yang dienkode.Ethers.js juga menguraikan byte yang dikembalikan dan log peristiwa menjadi nilai yang dapat dipahami aplikasi.Dokumentasi ABI ethers.js resmi membahas interface, fragmen, encoding, decoding, peristiwa, error, dan format ABI yang mudah dibaca.
ABI yang salah dapat menyebabkan aplikasi mengodekan pemanggilan fungsi yang keliru atau menguraikan data yang dikembalikan secara tidak benar.Developer sebaiknya mendapatkan ABI dari artefak build terverifikasi atau sumber proyek tepercaya.Apa Itu Kelas Interface?
Kelas Interface merepresentasikan ABI dalam format yang dapat digunakan ethers.js untuk encoding dan decoding.Kelas ini dapat mengodekan data fungsi, menguraikan hasil fungsi, menghitung topik peristiwa, menguraikan input transaksi, dan menafsirkan error kontrak khusus.Fitur ini berguna ketika developer membutuhkan kendali tingkat rendah tanpa membuat objek Contract lengkap.Interface juga dapat membantu alat pemantauan mengidentifikasi fungsi kontrak yang coba dipanggil oleh suatu transaksi.Interface dapat menguraikan log jika definisi peristiwa yang benar diketahui.Informasi hasil decoding harus selalu dikaitkan dengan kontrak yang benar karena kontrak yang tidak berkaitan dapat menggunakan tanda tangan fungsi atau peristiwa yang sama.Membaca Data Smart Contract
Pemanggilan smart contract hanya-baca menggunakan state blockchain terkini tanpa membuat transaksi.Pemanggilan tersebut dijalankan secara lokal oleh node yang terhubung dan biasanya tidak memerlukan gas karena tidak ditambahkan ke blockchain.Developer dapat menggunakan ethers.js untuk membaca nilai seperti saldo token, allowance, pemilik kontrak, parameter protokol, dan catatan tersimpan.Hasilnya mewakili state pada blok yang digunakan provider.Endpoint RPC yang berbeda mungkin sesaat memberikan hasil berbeda jika disinkronkan hingga ketinggian blok yang berbeda.Pembacaan data historis mungkin memerlukan node arsip yang menyimpan state lama yang diminta.Pemanggilan baca juga dapat gagal jika kontrak melakukan revert, ABI keliru, alamat tidak memiliki kode yang diharapkan, atau provider tidak memiliki data yang diperlukan.Mengirim Transaksi Smart Contract
Metode kontrak yang mengubah state memerlukan signer karena harus diotorisasi oleh akun.Ethers.js mengodekan metode dan argumennya ke dalam data transaksi, lalu meminta signer mengotorisasi transaksi tersebut.Transaksi dapat mencakup nilai mata uang kripto native, batas gas, pengaturan biaya, nonce, dan chain ID.Setelah diotorisasi, transaksi disiarkan melalui provider yang terhubung.Hasil awal biasanya berupa respons transaksi yang berisi hash transaksi dan detail yang dikirim.Developer kemudian dapat menunggu tanda terima transaksi dan jumlah konfirmasi yang dipilih.Transaksi yang dikirim tidak dijamin berhasil karena state blockchain dapat berubah sebelum eksekusi.Respons dan Tanda Terima Transaksi
Respons transaksi menjelaskan transaksi yang telah dikirim atau ditemukan melalui provider.Respons dapat mencakup hash, pengirim, penerima, nonce, data, nilai, informasi gas, dan kolom terkait jaringan.Tanda terima transaksi tersedia setelah transaksi dimasukkan ke dalam blok.Tanda terima mencatat status eksekusi, gas yang digunakan, informasi blok, hasil pembuatan kontrak, dan log peristiwa yang dihasilkan.Aplikasi sebaiknya memeriksa status tanda terima sebelum menganggap transaksi berhasil.Hash transaksi membuktikan bahwa pengenal transaksi tersedia, tetapi tidak membuktikan bahwa operasi kontrak yang diminta berhasil diselesaikan.Metode waitForTransaction pada provider dapat menunggu penyertaan transaksi dan jumlah konfirmasi yang dipilih.
Estimasi Gas di Ethers.js
Ethers.js dapat meminta provider memperkirakan jumlah gas yang diperkirakan akan digunakan transaksi.Node menyimulasikan transaksi yang diusulkan berdasarkan state blockchain saat ini.Estimasi dapat gagal jika transaksi hasil simulasi akan mengalami revert.Dokumentasi provider resmi memperingatkan bahwa estimasi gas merupakan perhitungan upaya terbaik karena state blockchain terus berubah.Transaksi yang berhasil saat diestimasi dapat gagal kemudian jika saldo, allowance, harga, penyimpanan kontrak, atau kondisi lainnya berubah.Developer dapat menambahkan buffer yang wajar jika sesuai, tetapi batas gas yang sangat tinggi tidak memperbaiki logika kontrak yang tidak valid.Pengguna biasanya membayar gas yang benar-benar digunakan, bukan seluruh bagian batas gas yang tidak terpakai.Mengolah ETH dan Unit Token
Nilai ETH dan token disimpan sebagai bilangan bulat dalam unit terkecilnya.ETH umumnya diukur secara internal dalam wei, dengan 1 ETH setara dengan 10 pangkat 18 wei.Ethers.js menyediakan utilitas seperti parseEther, formatEther, parseUnits, dan formatUnits.Fungsi-fungsi ini membantu mengonversi string desimal yang mudah dibaca menjadi nilai blockchain bilangan bulat, serta mengubah nilai bilangan bulat kembali menjadi teks yang mudah dibaca.Dokumentasi konversi unit ethers.js resmi menjelaskan cara mengonversi nilai desimal dengan aman.
Developer sebaiknya menghindari operasi aritmetika floating-point JavaScript biasa untuk saldo token yang presisi karena kesalahan pembulatan dapat menghasilkan nilai transaksi yang keliru.Nilai desimal token yang sebenarnya harus dikonfirmasi dari kontrak yang benar, bukan diasumsikan berdasarkan simbolnya.BigInt di Ethers.js v6
Ethers.js v6 menggunakan JavaScript BigInt untuk banyak nilai bilangan bulat besar.Jumlah Ethereum, nilai gas, nonce, dan bilangan bulat kontrak dapat melampaui rentang aman angka JavaScript biasa.Panduan migrasi v5 ke v6 resmi menjelaskan bahwa kelas BigNumber sebelumnya digantikan oleh tipe BigInt native ES2020 untuk banyak operasi.
Nilai BigInt menggunakan aritmetika bilangan bulat dan tidak dapat dicampur langsung dengan nilai JavaScript Number biasa.BigInt juga tidak dapat merepresentasikan jumlah token pecahan tanpa mengonversinya menjadi unit bilangan bulat terkecil token tersebut.Developer yang memigrasikan kode lama sebaiknya meninjau aritmetika, perbandingan, serialisasi, pemformatan antarmuka, dan penyimpanan database.Utilitas Alamat
Ethers.js menyediakan fungsi untuk memvalidasi, menormalkan, membandingkan, dan membuat alamat Ethereum.Alamat checksum menggunakan kombinasi karakter huruf besar dan kecil untuk membantu mendeteksi beberapa kesalahan pengetikan.Utilitas getAddress dapat menormalkan alamat yang valid dan menolak format checksum tertentu yang tidak valid.Alamat yang valid secara teknis tidak membuktikan bahwa alamat tersebut milik pengguna atau kontrak yang dimaksud.Aplikasi sebaiknya membandingkan alamat dengan sumber tepercaya dan tidak hanya menampilkan versi singkat saat konfirmasi sensitif.Penyerang dapat membuat alamat berbeda dengan karakter awal dan akhir yang mirip.Resolusi Nama
Ethers.js dapat menyelesaikan catatan penamaan Ethereum yang didukung menjadi alamat melalui provider yang terhubung.Ethers.js juga dapat melakukan pencarian balik jika alamat telah mengatur nama utama yang didukung.Nama yang mudah dibaca dapat meningkatkan kemudahan penggunaan, tetapi aplikasi tetap sebaiknya menampilkan atau menyediakan alamat hasil resolusi sebelum transfer bernilai besar.Catatan nama dapat berubah dari waktu ke waktu, dan suatu nama dapat memberikan hasil berbeda di jaringan lain.Aplikasi sebaiknya menangani nama yang tidak dapat di-resolve dan catatan tidak valid, alih-alih diam-diam mengirim ke hasil yang tidak diharapkan.Menandatangani Pesan dengan Ethers.js
Ethers.js dapat menandatangani pesan yang mudah dibaca dan memulihkan alamat yang terkait dengan tanda tangan valid.Penandatanganan pesan dapat digunakan untuk autentikasi akun, bukti kendali, voting, izin, dan otorisasi off-chain.Panduan penandatanganan ethers.js resmi menyarankan penggunaan konten yang mudah dibaca jika memungkinkan agar pengguna memahami hal yang disetujui.
Tanda tangan tidak selalu dengan sendirinya mentransfer dana, tetapi beberapa tanda tangan dapat mengotorisasi tindakan blockchain di kemudian hari.Aplikasi sebaiknya menyertakan domain, tujuan, nonce, masa berlaku, dan konteks chain jika relevan.Pengguna tidak boleh menandatangani pesan yang tidak jelas hanya karena permintaan tersebut tidak menampilkan biaya gas.Data Bertipe EIP-712
EIP-712 menetapkan format penandatanganan terstruktur yang memungkinkan wallet menampilkan kolom bertipe, bukan rangkaian byte yang sulit dibaca.Ethers.js dapat mengodekan, menandatangani, melakukan hash, dan memverifikasi data bertipe yang didukung.Data bertipe dapat digunakan untuk izin token, order marketplace, tindakan tata kelola, otorisasi akun, dan persetujuan off-chain lainnya.Data domain dapat mencakup nama, versi, chain ID, dan kontrak verifikasi untuk mengurangi risiko replay.Developer harus menyusun domain dan tipe dengan benar karena kolom yang hilang atau konteks chain yang keliru dapat melemahkan perlindungan.Pengguna sebaiknya memeriksa spender, jumlah, masa berlaku, kontrak, dan jaringan yang diminta sebelum menandatangani data terstruktur.Log Peristiwa dan Listener Kontrak
Ethers.js dapat mengambil log peristiwa smart contract historis dan mendengarkan peristiwa baru.Peristiwa kontrak ditentukan melalui ABI dan disimpan dalam tanda terima transaksi ketika dihasilkan selama eksekusi yang berhasil.Developer dapat membuat filter untuk parameter peristiwa tertentu, seperti alamat atau pengenal token.Listener aktif dapat memperbarui antarmuka ketika terjadi transfer, deposit, trading, voting, klaim reward, atau tindakan kontrak lainnya.Aplikasi sebaiknya tidak hanya mengandalkan koneksi aktif karena gangguan WebSocket dapat menyebabkan notifikasi terlewat.Indexer yang andal sebaiknya mencocokkan ulang peristiwa berdasarkan rentang blok, menyimpan hash blok, mencegah pemrosesan duplikat, dan menangani reorganisasi blockchain.Peristiwa yang dihasilkan tidak membuktikan bahwa kontrak penghasilnya tepercaya karena kontrak apa pun dapat membuat tanda tangan peristiwa yang tampak familier.Utilitas Hashing dan Kriptografi
Ethers.js mencakup utilitas untuk melakukan hashing data, menghitung selector fungsi, mengolah tanda tangan, menurunkan alamat, dan menangani format encoding Ethereum.Operasi umum mencakup hashing Keccak-256, hashing pesan, packed encoding, encoding RLP, dan pemulihan tanda tangan.Dokumentasi hashing ethers.js resmi menjelaskan helper untuk pesan, data bertipe, nama, pengenal, dan data otorisasi.
API kriptografi sebaiknya digunakan sesuai standar Ethereum yang relevan, bukan digabungkan sembarangan.Menandatangani format hash yang salah dapat menghasilkan tanda tangan yang tidak kompatibel atau kelemahan keamanan.Developer sebaiknya menyertakan pemisahan domain jika data yang sama berpotensi digunakan kembali dalam konteks lain.Deployment Kontrak dengan Ethers.js
Ethers.js menyediakan ContractFactory untuk men-deploy smart contract.Factory dibuat dari bytecode kontrak, ABI, dan signer.Transaksi deployment dapat mencakup argumen constructor dan nilai mata uang kripto native opsional.Setelah transaksi dikirim, developer sebaiknya menunggu hingga transaksi deployment dimasukkan ke blok sebelum menganggap kontrak tersedia di alamat yang diprediksi.Simpan alamat yang di-deploy bersama chain ID, pengaturan compiler, versi kode sumber, argumen constructor, dan hash transaksi deployment.Deployment yang berhasil tidak membuktikan bahwa kontrak aman, diinisialisasi dengan benar, atau dikendalikan administrator yang dimaksud.Kontrak produksi sebaiknya menjalani pengujian dan tinjauan keamanan yang sesuai sebelum mengelola aset bernilai.Ethers.js di Aplikasi Browser
Aplikasi terdesentralisasi berbasis browser dapat menggunakan ethers.js untuk menghubungkan antarmuka pengguna dengan wallet dan provider blockchain.Aplikasi dapat menampilkan saldo, meminta pergantian jaringan, membaca kontrak, memperkirakan transaksi, dan meminta wallet menandatangani tindakan yang disetujui.Kunci privat sebaiknya tetap berada di wallet, bukan disalin ke kode front end.Umumnya, semua kode yang dikirim ke browser dapat diperiksa oleh pengguna atau penyerang.API key rahasia dan kredensial penandatanganan berhak istimewa tidak boleh disematkan dalam bundle aplikasi publik.Antarmuka sebaiknya menampilkan detail transaksi dengan jelas dan menangani penolakan wallet, jaringan yang tidak cocok, kegagalan RPC, transaksi tertunda, revert, dan perubahan akun.Ethers.js di Aplikasi Sisi Server
Layanan sisi server dapat menggunakan ethers.js untuk memantau data blockchain, mengirim transaksi terkontrol, membuat laporan, memverifikasi tanda tangan, dan menjalankan alur kerja kripto backend.Aplikasi server dapat terhubung langsung ke node RPC atau menggunakan endpoint terkelola.Server backend yang menandatangani transaksi harus melindungi kredensial penandatanganannya dari developer, log, backup, sistem build, dan proses tanpa izin.Sistem bernilai tinggi sebaiknya mempertimbangkan infrastruktur penandatanganan terisolasi, kebijakan transaksi, batas penarikan, alur persetujuan, dan kontrol darurat.Server juga sebaiknya melacak nonce transaksi dengan cermat jika beberapa proses mengirim transaksi dari akun yang sama.Penggunaan nonce yang duplikat atau saling bertentangan dapat menyebabkan transaksi saling menggantikan atau tetap tertunda.Ethers.js dan Jaringan Kompatibel EVM
Ethers.js dapat terhubung ke banyak jaringan kompatibel EVM yang menyediakan antarmuka JSON-RPC bergaya Ethereum.Aplikasi harus menyediakan endpoint RPC, chain ID, informasi aset gas native, dan alamat kontrak yang benar untuk jaringan yang dipilih.Alamat wallet yang sama dapat memiliki saldo dan riwayat transaksi berbeda di chain yang berbeda.Kontrak yang di-deploy di satu alamat pada satu jaringan mungkin tidak tersedia atau memiliki kode berbeda di jaringan lain.Kompatibilitas EVM juga tidak menjamin perilaku gas, tipe transaksi, finalitas, ekstensi RPC, atau detail eksekusi smart contract yang identik.Setiap integrasi jaringan harus diuji secara terpisah.Perubahan Utama dari Ethers.js v5 ke v6
Ethers.js v6 memperkenalkan perubahan arsitektur dan API besar dibandingkan versi 5.Panduan migrasi menyebut peningkatan penggunaan fitur ES6 modern sebagai salah satu perubahan utama.BigInt native menggantikan kelas BigNumber sebelumnya untuk banyak operasi bilangan bulat.Objek Contract menggunakan perilaku JavaScript Proxy untuk menyelesaikan metode secara dinamis.Banyak kelas dan utilitas dipindahkan ke ekspor paket utama, bukan diakses melalui namespace bertingkat lama.Kelas Web3Provider sebelumnya digantikan oleh BrowserProvider untuk membungkus provider umum yang disuntikkan ke browser.API transaksi, tanda tangan, kontrak, provider, dan utilitas juga mengalami perubahan penamaan dan struktur.Kode v5 yang sudah ada sebaiknya tidak ditingkatkan hanya dengan mengganti versi paket.Ikuti panduan migrasi ethers.js v6 resmi dan uji ulang aplikasi secara menyeluruh.
Apakah Ethers.js v5 Masih Didukung?
Kebijakan keamanan ethers.js menyatakan bahwa sebagian besar upaya pemeliharaan difokuskan pada rilis mayor terbaru.Kebijakan tersebut juga menyebut bahwa versi 5 masih menerima pembaruan keamanan, sedangkan cabang mayor yang lebih lama tidak didukung.Developer yang memelihara aplikasi versi 5 sebaiknya menginstal rilis keamanan v5 terbaru yang tersedia dan meninjau rencana migrasi ke v6.Penggunaan cabang lama dalam jangka panjang dapat menimbulkan risiko kompatibilitas dan pemeliharaan, sekalipun patch keamanan penting masih tersedia.Informasi dukungan terkini dipublikasikan dalam kebijakan keamanan ethers.js resmi.
Risiko Keamanan saat Menggunakan Ethers.js
Ethers.js dapat membantu aplikasi berinteraksi dengan sistem blockchain, tetapi tidak dapat membuat logika aplikasi yang tidak aman menjadi aman.Developer dapat menggunakan library ini dengan benar tetapi tetap memanggil smart contract berbahaya atau menandatangani transaksi yang merugikan.Chain ID, alamat kontrak, ABI, desimal, asumsi gas, atau domain tanda tangan yang keliru dapat mengakibatkan kerugian finansial.Endpoint RPC yang disusupi dapat memberikan data palsu atau tidak lengkap, menunda transaksi, atau menyembunyikan aktivitas blockchain yang relevan.Dependensi atau proses build yang disusupi dapat mengubah perilaku aplikasi sebelum kode sampai kepada pengguna.Kunci privat yang bocor dapat memungkinkan penyerang melewati semua perlindungan antarmuka pengguna.Keamanan memerlukan pengelolaan kunci yang aman, dependensi tepercaya, verifikasi kontrak, validasi input, simulasi transaksi, pemantauan, dan pengujian independen.Keamanan Kunci Privat
Kunci privat tidak boleh ditempatkan dalam kode sumber browser atau dimasukkan ke repositori.Kunci privat tidak boleh disertakan langsung dalam file konfigurasi publik, tiket dukungan, tangkapan layar, atau log aplikasi.Variabel lingkungan dapat mengurangi paparan yang tidak disengaja, tetapi bukan sistem keamanan yang lengkap.Siapa pun yang dapat mengakses lingkungan proses, platform deployment, memori server, atau konfigurasi build mungkin tetap memperoleh akses.Sistem produksi sebaiknya memisahkan izin penandatanganan dari akses aplikasi umum.Kunci sebaiknya dirotasi jika diduga telah disusupi, meskipun rotasi kunci mengharuskan pemindahan kendali ke alamat blockchain baru atau pembaruan peran kontrak yang diotorisasi.Keamanan Dependensi dan Rantai Pasokan
Developer sebaiknya menginstal ethers.js hanya dari sumber paket autentik.Paket dengan nama yang salah eja dapat berisi kode berbahaya yang dirancang untuk mencuri kunci privat atau mengubah tujuan transaksi.File lock paket dan pemeriksaan integritas membantu memastikan instalasi otomatis menggunakan versi dependensi yang telah ditinjau.Pantau pemberitahuan pembaruan keamanan melalui repositori dan catatan paket resmi.Aplikasi produksi sebaiknya menguji peningkatan dependensi sebelum deployment.Hapus paket dan skrip yang tidak digunakan karena setiap dependensi memperluas potensi permukaan serangan.Risiko Provider RPC
Provider RPC menyediakan informasi blockchain yang digunakan aplikasi ethers.js.Jika provider tidak tersedia, aplikasi mungkin tidak dapat memuat saldo atau mengirim transaksi.Jika provider terlambat, aplikasi mungkin menampilkan informasi kedaluwarsa.Endpoint berbahaya dapat mencoba menggambarkan state chain, estimasi gas, atau status transaksi secara keliru.Aplikasi yang menangani keputusan finansial penting dapat membandingkan respons dari beberapa node independen atau menjalankan infrastruktur node sendiri.Chain ID yang dikembalikan provider harus diverifikasi sebelum meminta tanda tangan.Koneksi provider sebaiknya menggunakan transportasi terenkripsi dan kredensial terkontrol jika sesuai.Simulasi Transaksi dan Penanganan Error
Ethers.js dapat menyimulasikan pemanggilan dan memperkirakan gas sebelum transaksi dikirim.Simulasi dapat mengidentifikasi banyak kemungkinan revert, tetapi tidak menjamin keberhasilan di masa mendatang.State blockchain dapat berubah antara simulasi dan eksekusi sebenarnya.Aplikasi sebaiknya menguraikan error kontrak jika memungkinkan dan menampilkan penjelasan yang berguna kepada pengguna.Aplikasi perlu membedakan penolakan wallet, kegagalan RPC, dana tidak cukup, estimasi gas gagal, penggantian transaksi, revert saat eksekusi, dan batas waktu konfirmasi.Pesan error umum dapat membuat pengguna mengulangi transaksi tanpa perlu atau menandatangani tindakan lain tanpa memahami masalah awal.Kelebihan Ethers.js
Ethers.js menyediakan antarmuka ringkas yang mencakup banyak tugas umum pengembangan Ethereum.Pemisahan provider dan signer mendukung batas keamanan yang lebih jelas.Kelas Contract mengurangi jumlah encoding ABI manual yang diperlukan untuk interaksi smart contract.Deklarasi TypeScript bawaan meningkatkan dukungan editor dan dapat mendeteksi beberapa penggunaan parameter yang keliru.Library ini menyertakan utilitas wallet, tanda tangan, alamat, unit, hashing, transaksi, dan peristiwa dalam satu paket.Ethers.js bersifat open-source dan didukung dokumentasi serta pengujian yang luas.Desainnya yang berorientasi EVM membuatnya berguna di banyak lingkungan blockchain yang kompatibel.Keterbatasan Ethers.js
Ethers.js tidak menjalankan node Ethereum dan tetap memerlukan akses ke infrastruktur blockchain.Library ini tidak mengaudit smart contract atau menjamin bahwa suatu alamat tepercaya.Ethers.js tidak otomatis melindungi kunci privat yang disimpan aplikasi secara ceroboh.Library ini tidak dapat membatalkan transaksi blockchain yang telah dikonfirmasi.Ethers.js tidak dapat menjamin estimasi gas, hasil simulasi, atau respons RPC akan tetap akurat.Library ini tidak menghilangkan kebutuhan untuk memahami akun Ethereum, transaksi, gas, tanda tangan, ABI, log peristiwa, dan izin smart contract.Developer juga harus mengelola keamanan antarmuka, database, akses backend, deployment, pemantauan, dan persyaratan regulasi secara terpisah.Contoh Alur Kerja Transaksi Ethers.js
Misalkan aplikasi terdesentralisasi memungkinkan pengguna mentransfer token yang didukung.Aplikasi terlebih dahulu membuat provider yang terhubung ke jaringan pilihan.Aplikasi mengonfirmasi chain ID dan meminta akses ke akun pengguna yang disetujui melalui antarmuka wallet.Aplikasi membuat signer dan instance Contract menggunakan alamat serta ABI token yang telah diverifikasi.Aplikasi membaca desimal token dan saldo pengguna.Jumlah transfer yang mudah dibaca dikonversi menjadi unit bilangan bulat terkecil token menggunakan parseUnits.Aplikasi meminta metode kontrak memperkirakan gas dan menyiapkan transaksi.Wallet menampilkan penerima, kontrak, jaringan, jumlah, dan informasi biaya agar pengguna dapat menyetujuinya.Setelah pengguna menandatangani, signer menyiarkan transaksi melalui provider.Aplikasi menerima respons transaksi dan menampilkan hash transaksi.Aplikasi menunggu tanda terima dan memeriksa apakah eksekusi berhasil.Aplikasi kemudian memperbarui saldo token dan mencatat transaksi yang telah dikonfirmasi.Alur ini menunjukkan cara provider, signer, kontrak, ABI, konversi unit, estimasi gas, dan tanda terima bekerja bersama di ethers.js.Kesalahan Umum Ethers.js
Salah satu kesalahan umum adalah menyematkan kunci privat dalam JavaScript front end.Kesalahan lainnya adalah menggunakan alamat kontrak atau ABI yang belum diverifikasi.Kesalahan ketiga adalah mencampur nilai Number biasa dengan BigInt.Kesalahan keempat adalah menganggap transaksi yang dikirim telah dikonfirmasi sebelum menerima tanda terima yang berhasil.Kesalahan kelima adalah menganggap estimasi gas yang berhasil menjamin eksekusi berhasil.Kesalahan keenam adalah menggunakan aritmetika floating-point untuk jumlah token.Kesalahan ketujuh adalah mengabaikan chain ID saat menghubungkan wallet atau menandatangani data bertipe.Kesalahan kedelapan adalah tidak menangani penggantian transaksi, transaksi yang terhapus, atau reorganisasi blockchain.Kesalahan kesembilan adalah meningkatkan ethers.js v5 ke v6 tanpa meninjau perubahan API yang tidak kompatibel.Kesalahan kesepuluh adalah memercayai paket, endpoint RPC, atau smart contract hanya karena menggunakan nama yang familier.FAQ
Untuk apa ethers.js digunakan?
Ethers.js digunakan untuk membangun aplikasi JavaScript dan TypeScript yang membaca data blockchain, mengelola wallet, menandatangani pesan, mengirim transaksi, dan berinteraksi dengan smart contract Ethereum.Apakah ethers.js adalah mata uang kripto?
Bukan. Ethers.js adalah library perangkat lunak dan tidak memiliki mata uang kripto atau token investasi resmi.Apakah ethers.js adalah wallet?
Ethers.js menyertakan kelas wallet dan alat penandatanganan, tetapi library ini sendiri bukan layanan wallet kustodian.Apa versi ethers.js terbaru?
Per 16 Juli 2026, rilis terdokumentasi terbaru adalah ethers v6.17.0, yang diterbitkan pada 18 Juni 2026.Bisakah ethers.js terhubung ke Ethereum?
Ya. Ethers.js terhubung ke Ethereum melalui provider yang berkomunikasi dengan node Ethereum atau endpoint RPC yang kompatibel.Bisakah ethers.js digunakan dengan chain EVM lain?
Ya. Ethers.js dapat digunakan dengan banyak jaringan kompatibel EVM yang menyediakan antarmuka JSON-RPC bergaya Ethereum.Apa perbedaan provider dan signer?
Provider membaca data blockchain publik, sedangkan signer mengotorisasi pesan dan transaksi yang mengubah state untuk suatu akun.Apa itu objek Contract di ethers.js?
Objek Contract menggabungkan alamat kontrak, ABI, serta provider atau signer untuk menyediakan metode JavaScript yang dapat dipanggil pada smart contract yang telah di-deploy.Apakah ethers.js memerlukan ABI?
ABI umumnya diperlukan untuk mengodekan dan menguraikan fungsi, peristiwa, serta error smart contract bernama dengan mudah.Apakah ethers.js menyimpan kunci privat?
Library ini dapat membuat objek wallet yang memuat kredensial penandatanganan dalam memori aplikasi, tetapi penyimpanan dan perlindungan kunci tetap menjadi tanggung jawab developer.Apakah aman menaruh kunci privat di aplikasi browser?
Tidak. Kunci privat dalam kode browser dapat diperiksa dan dicuri oleh pengguna, penyerang, ekstensi, atau skrip yang disusupi.Apakah pemanggilan kontrak hanya-baca memerlukan gas?
Pemanggilan hanya-baca melalui provider biasanya disimulasikan oleh node dan tidak menimbulkan biaya on-chain.Mengapa ethers.js menggunakan BigInt?
BigInt mendukung bilangan bulat besar presisi yang diperlukan untuk saldo kripto, nilai gas, nonce, dan data smart contract tanpa kehilangan presisi angka JavaScript biasa.Bisakah ethers.js memperkirakan gas?
Ya. Ethers.js dapat meminta node memperkirakan gas, tetapi estimasi tersebut didasarkan pada state saat ini dan tidak menjamin transaksi di masa mendatang berhasil.Bisakah ethers.js membatalkan transaksi?
Tidak. Ethers.js dapat mengirim transaksi, tetapi tidak dapat membatalkan perubahan state blockchain yang telah dikonfirmasi.Bisakah ethers.js mendengarkan peristiwa smart contract?
Ya. Ethers.js dapat mengambil log historis dan berlangganan peristiwa kontrak baru melalui provider yang sesuai.Apa yang berubah antara ethers.js v5 dan v6?
Versi 6 memperkenalkan BigInt native, fitur JavaScript modern, impor yang direvisi, kelas provider yang diperbarui, metode kontrak berbasis Proxy, dan sejumlah perubahan API.Apakah ethers.js open-source?
Ya. Ethers.js tersedia untuk publik berdasarkan MIT License.Apakah ethers.js memiliki token resmi?
Tidak. Proyek resmi menyatakan bahwa ethers tidak memiliki token.Di mana developer harus melaporkan masalah keamanan ethers.js?
Developer sebaiknya mengikuti petunjuk pelaporan kerentanan secara privat dalam kebijakan keamanan ethers.js resmi, bukan mengungkapkan secara publik masalah yang belum diperbaiki.Kesimpulan
Ethers.js adalah library JavaScript dan TypeScript yang memberi developer kripto cara terstruktur untuk berinteraksi dengan Ethereum dan jaringan blockchain kompatibel EVM.Library ini menyediakan provider untuk membaca data blockchain, signer untuk mengotorisasi tindakan akun, wallet untuk mengelola kredensial penandatanganan, serta objek Contract untuk berinteraksi dengan smart contract.Ethers.js juga mencakup utilitas untuk encoding ABI, decoding peristiwa, penandatanganan pesan, data bertipe, alamat, hash, estimasi gas, tanda terima transaksi, dan konversi unit mata uang kripto.Rilis mayor terkini adalah ethers.js v6, yang menggunakan fitur JavaScript modern seperti BigInt dan metode kontrak berbasis Proxy.Per 16 Juli 2026, versi terdokumentasi terbaru adalah ethers v6.17.0.Ethers.js dapat menyederhanakan pengembangan blockchain, tetapi tidak menghilangkan risiko paparan kunci privat, kontrak berbahaya, alamat yang keliru, endpoint RPC yang tidak andal, penyusupan dependensi, atau transaksi yang tidak dapat dibatalkan.Developer sebaiknya memverifikasi sumber paket, mengunci versi dependensi, melindungi kredensial penandatanganan, mengonfirmasi chain ID, memvalidasi alamat kontrak, menggunakan ABI yang benar, dan menguji setiap alur transaksi.Aplikasi juga sebaiknya menangani simulasi yang gagal, penolakan wallet, gangguan RPC, transaksi tertunda, penggantian transaksi, revert, konfirmasi, dan reorganisasi chain.Jika digunakan dengan praktik keamanan yang cermat, ethers.js menyediakan fondasi kuat untuk membangun wallet, sistem pembayaran kripto, aplikasi terdesentralisasi, alat analitik, layanan pemantauan, dan otomatisasi smart contract.Memahami ethers.js membantu developer menghubungkan aplikasi JavaScript ke sistem blockchain tanpa menyamakan library ini dengan layanan wallet, jaringan blockchain, atau mata uang kripto.Anda Mungkin Juga Menyukai
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
POPULER
Mata uang kripto yang sedang tren saat ini dan menarik perhatian pasar yang signifikan
Volume TERATAS
Mata uang kripto dengan volume trading tertinggi
Baru Ditambahkan
Mata uang kripto yang baru saja masuk listing dan tersedia untuk trading

