Lanjut ke konten utama
Change page

Node dan klien

Terakhir diedit: @wackerow(opens in a new tab), 1 Juli 2024

Ethereum adalah jaringan komputer terdistribusi yang menjalankan perangkat lunak (dikenal sebagai node) yang dapat memverifikasi blok dan data transaksi. Anda memerlukan satu aplikasi, yang dikenal sebagai klien, pada perangkat Anda untuk "menjalankan" sebuah node.

Prasyarat

Anda harus memahami konsep jaringan peer-to-peer dan dasar-dasar EVM sebelum menggali lebih dalam dan menjalankan instance klien Ethereum Anda sendiri. Coba lihat pengantar Ethereum kami.

Apa itu node dan klien?

"Node" merujuk pada satu bagian perangkat lunak yang dikenal sebagai satu klien. Klien adalah implementasi Ethereum yang memverifikasi semua transaksi di setiap blok, menjaga jaringan tetap aman dan data tetap akurat.

Anda bisa melihat tampilan jaringan Ethereum secara nyata dengan melihat peta node(opens in a new tab) ini.

Ada banyak klien Ethereum, dalam berbagai bahasa pemrograman seperti Go, Rust, JavaScript, Typescript, Python, C# .NET, Nim dan Java. Persamaan dari semua implementasi ini adalah semuanya mengikuti spesifikasi formal (pada awalnya Yellow Paper Ethereum(opens in a new tab)). Spesifikasi ini mengatur bagaimana jaringan Ethereum dan blockchain berfungsi.

Klien eksekusi Diagram yang disederhanakan tentang apa saja fitur klien Ethereum.

Jenis node

Jika Anda ingin menjalankan node sendiri, Anda harus mengerti bahwa ada berbagai jenis node yang mengonsumsi data secara berbeda. Bahkan, klien dapat menjalankan 3 tipe node yang berbeda - ringan, penuh, dan arsip. Ada juga opsi strategi sinkronisasi berbeda yang memungkinkan waktu sinkronisasi yang lebih cepat. Sinkronisasi merujuk pada seberapa cepat prosesnya mendapat informasi paling terbaru pada state Ethereum.

Node penuh

  • Menyimpan data blockchain penuh.
  • Berpartisipasi dalam validasi blok, memverifikasi semua blok dan state.
  • Semua state bisa dikembangkan dari satu node penuh.
  • Melayani jaringan dan menyediakan data sesuai permintaan.

Node Ringan

  • Menyimpan rantai header dan meminta semua hal lainnya.
  • Bisa memverifikasi keabsahan data yang dibandingkan dengan root state dalam header blok.
  • Berguna untuk perangkat dengan kapasitas rendah, seperti perangkat bawaan atau ponsel, yang tidak sanggup menyimpan data blokchain dalam ukuran gigabyte.

Node arsip

Mensinkronisasikan klien di mode mana saja selain arsip akan menghasilkan data blockchain yang terpangkas. Ini berarti, tidak ada arsip untuk semua state riwayat, tetapi node penuh dapat menyusunnya sesuai permintaan.

Mengapa Anda harus menjalankan satu node Ethereum?

Menjalankan node memungkinkan Anda menggunakan Ethereum tanpa membutuhkan kepercayaan dan secara privat sekaligus Anda mendukung ekosistem.

Keuntungan untuk Anda

Menjalankan node sendiri memungkinkan Anda menggunakan Ethereum dengan cara yang benar-benar privat, mandiri, dan tidak membutuhkan kepercayaan. Anda tidak perlu mempercayai jaringan karena Anda bisa memverifikasi data sendiri dengan klien Anda. "Jangan percaya, lakukan verifikasi" adalah mantra blockchain yang populer.

  • Node Anda memverifikasi semua transaksi dan blok dibandingkan dengan aturan konsensus itu sendiri. Ini berarti Anda tidak harus mengandalkan node lain dalam jaringan atau sepenuhnya mempercayainya.
  • Anda tidak akan harus membocorkan alamat dan saldo Anda ke node acak. Semua hal bisa dicek dengan klien Anda sendiri.
  • Dapp Anda bisa lebih aman dan privat jika Anda menggunakan node Anda sendiri. MetaMask(opens in a new tab), MyEtherWallet(opens in a new tab) and some other wallets can be easily pointed to your own local node.
  • Anda dapat memrogram endpoint RPC kustom Anda sendiri.
  • Anda dapat menghubungkan node Anda dengan menggunakan Komunikasi Antar Proes (IPC) atau menulis kembali node untuk memuat program Anda sebagai plugin. Ini menghasilkan latensi yang rendah, yang diperlukan untuk menggantikan transaksi Anda secepat mungkin (maksudnya frontrunning).

Bagaimana Anda mengakses Ethereum lewat aplikasi dan node Anda

Keuntungan jaringan

Sebuah kumpulan node beragam penting untuk kesehatan, keamanan dan ketahanan operasional Ethereum.

  • Mereka menyediakan akses ke data blockchain untuk klien lightweight yang bergantung pada data tersebut. Pada puncak tinggi penggunaan, harus ada node penuh yang cukup untuk membantu sinkronisasi node ringan. Node ringan tidak menyimpan seluruh blockchain, melainkan memverifikasi data lewat root state dalam header blok. Mereka bisa meminta lebih banyak informasi dari blok jika mereka membutuhkannya.
  • Node penuh melaksanakan aturan konsensus bukti kerja sehingga mereka tidak bisa ditipu untuk menerima blok yang tidak mengikutinya. Ini menyediakan keamanan ekstra dalam jaringan karena jika semua node berjenis node ringan, yang tidak melakukan verifikasi penuh, penambang bisa menyerang jaringan dan, sebagai contoh, membuat blok dengan imbalan yang lebih tinggi.

Jika Anda menjalankan node penuh, seluruh jaringan Ethereum mendapat keuntungan darinya.

Menjalankan node milik Anda sendiri

Tertarik menjalankan klien Ethereum Anda sendiri?

For a beginner-friendly introduction visit our run a node page to learn more.

If you're more of a technical user, learn how to spin up your own node with the command line!

Proyek

Pilih klien dan ikuti petunjuknya

ethnode - Jalankan node Ethereum (Geth atau OpenEthereum) untuk pengembangan lokal.

DAppNode - Sebuah sistem operasi GUI untuk menjalankan node Web3, yang mencakup Ethereum dan rantai suar, pada satu mesin khusus.

Sumber Daya

Alternatif

Menjalankan node Anda sendiri dapat menjadi sulit dan Anda tidak selalu harus menjalankan instance Anda sendiri. Dalam kasus ini, Anda bisa menggunakan satu penyedia API pihak ketiga seperti Infura(opens in a new tab), Alchemy(opens in a new tab), atau QuikNode(opens in a new tab). Sebagai alternatifnya ArchiveNode(opens in a new tab) adalah satu node Arsip yang didanai komunitas yang bertujuan membawa data arsip blockchain Ethereum kepada para pengembang independen yang sebaliknya tidak bisa mendapatkannya. For an overview of using these services, check out nodes as a service.

Jika seseorang menjalankan node Ethereum dengan API publik dalam komunitas Anda, Anda bisa merujuk dompet ringan Anda (seperti MetaMask) ke node komunitas melalui RPC Kustom(opens in a new tab) dan mendapat lebih banyak privasi dari pada menggunakan beberapa pihak ketiga terpercaya acak.

Di sisi lain, jika Anda menjalankan satu klien, Anda bisa membagikannya dengan teman Anda yang mungkin membutuhkannya.

Klien eksekusi (sebelumnya 'klien Eth1')

Komunitas Ethereum memelihara beberapa klien eksekusi sumber terbuka (sebelumnya dikenal sebagai 'klien Eth1', atau 'klien Ethereum'), yang dikembangkan oleh berbagai tim menggunakan beragam bahasa pemrograman. Ini membuat jaringan lebih kuat dan lebih beragam. Tujuan idealnya adalah untuk mencapai keberagaman tanpa dominasi klien mana pun sehingga ini menurunkan jumlah titik kegagalan mana pun.

Tabel ini meringkaskan berbagai jenis klien. Semuanya telah lulus pengujian klien(opens in a new tab) dan secara aktif dipertahankan agar tetap yang terbaru dengan peningkatan jaringan.

KlienBahasaSistem operasiJaringanStrategi sinkronisasiPemotongan state
Geth(opens in a new tab)GoLinux, Windows, macOSJaringan Utama, Görli, Rinkeby, RopstenSnap, FullArsip, Dipotong
Nethermind(opens in a new tab)C#, .NETLinux, Windows, macOSJaringan Utama, Görli, Ropsten, Rinkeby, dan banyak lagiFast, Beam, ArchiveArsip, Dipotong
Besu(opens in a new tab)JavaLinux, Windows, macOSMainnet, Rinkeby, Ropsten, Görli, and moreCepat, PenuhArsip, Dipotong
Erigon(opens in a new tab)GoLinux, Windows, macOSJaringan Utama, Görli, Rinkeby, RopstenFullArsip, Dipotong
OpenEthereum (Deprecated)(opens in a new tab)RustLinux, Windows, macOSJaringan Utama, Kovan, Ropsten, dan banyak lagiWarp, PenuhArsip, Dipotong

Perhatikan bahwa OpenEthereum telah menjadi usang(opens in a new tab) dan tidak lagi dipertahankan. Gunakan dengan hati-hati dan lebih baik beralih ke implementasi klien lainnya.

Untuk informasi lebih lanjut tentang jaringan yang didukung, baca tentang jaringan Ethereum.

Manfaat dari impelementasi berbeda

Setiap klien mempunyai kasus penggunaan dan keuntungan yang unik, jadi Anda harus memilih salah satu berdasarkan preferensi Anda sendiri. Keberagaman memungkinkan implementasi difokuskan pada fitur dan audiens pengguna berbeda. Anda mungkin ingin memilih satu klien berdasarkan fitur, dukungan, bahasa pemrograman, atau lisensi.

Go Ethereum

Go Ethereum (singkatannya Geth) adalah satu dari implementasi original protokol Ethereum. Saat ini, Geth adalah klien yang paling tersebar luas dengan basis pengguna terbesar dan keberagaman perangkat untuk para pengguna dan pengembang. Geth ditulis dalam Go, yang adalah sumber terbuka penuh dan terlisensi di bawah GNU LGPL v3.

OpenEthereum

OpenEthereum adalah sebuah klien Ethereum cepat, kaya akan fitur, dan berbasis CLI tingkat lanjut. Dibangun guna menyediakan infrastruktur penting untuk layanan cepat dan dapat diandalkan yang membutuhkan sinkronisasi cepat dan uptime maksimum. Tujuan OpenEthereum adalah menjadi klien Ethereum tercepat, paling ringan, dan paling aman. Menyediakan basis kode yang bersih dan modular untuk:

  • kostumisasi yang mudah.
  • integrasi ringan ke dalam layanan atau produk.
  • memori minimal dan jejak penyimpanan.

OpenEthereum dikembangkan menggunakan bahasa pemrograman Rust canggih dan terlisensi di bawah GPLv3.

Perhatikan bahwa OpenEthereum telah menjadi usang(opens in a new tab) dan tidak lagi dipertahankan. Gunakan dengan hati-hati dan lebih baik beralih ke implementasi klien lainnya.

Nethermind

Nethermind adalah satu implementasi Ethereum yang dibuat dengan tumpukan teknologi C# .NET, beroperasi pada semua platform utama termasuk ARM. Implementasi ini menawarkan kinerja luar biasa dengan:

  • mesin virtual yang dioptimalkan
  • akses state
  • jaringan dan fitur yang kaya seperti dasbor Prometheus/Graphana, dukungan logging perusahaan seq, pelacakan JSON RPC, dan plugin analitik.

Nethermind juga mempunyai dokumentasi detil(opens in a new tab), dukungan pengembang yang kuat, komunitasi daring dan dukungan 24/7 yang tersedia untuk para pengguna premium.

Besu

Hyperledger Besu adalah klien Ethereum standar perusahaan untuk jaringan publik dan berizin. Ia menjalankan seluruh fitur Jaringan Utama Ethereum, mulai dari pelacakan hingga GraphQL, memiliki pengawasan ektensif dan didukung oleh ConsenSys, baik di kanal komunitas terbuka maupun melalui SLA komersial untuk perusahaan. Ditulis dalam Java dan berlisensi Apache 2.0.

Erigon

Erigon, yang sebelumnya dikenal sebagai Erigon, adalah sebuah fork Go Ethereum yang diarahkan untuk efisiensi kecepatan dan pemakaian ruangan cakram. Erigon adalah sebuah implementasi yang sepenuhnya di buat kembali di Ethereum, yang saat ini ditulis dalam Go dengan implementasi dalam bahasa pemograman lain yang direncanakan. Tujuan Erigon adalah menyediakan implementasi Ethereum yang lebih cepat, lebih modular, dan lebih teroptimisasi. Ia dapat melakukan sinkronisasi node arsip penuh dengan menggunakan kurang dari 2 TB ruangan cakram, dalam waktu kurang dari 3 hari

Mode sinkronisasi

Untuk mengikuti dan memverifikasi data saat ini di jaringan, klien Ethereum perlu melakukan sinkronisasi dengan state jaringan terkini. Ini dilakukan dengan mengunduh data dari para rekan sejawat, yang secara kriptografik memverifikasi integritas mereka, dan membangun basis data blockchain lokal.

Mode sinkronisasi mewakili pendekatan berbeda terhadap proses ini dengan berbagai pertukaran. Klien juga bervariasi dalam implementasi algoritma sinkronisasinya. Mengaculah selalu pada dokumentasi resmi dari klien pilihan Anda untuk spesifikasi tentang implementasi.

Gambaran umum strategi

Tinjauan umum pendekatan sinkronisasi yang digunakan dalam klien untuk Jaringan Utama:

Sinkonisasi penuh

Sinkronisasi penuh mengunduh semua blok (termasuk header, transaksi, dan bukti pembayaran) dan menghasilkan state blockchain yang terus bertambah dengan mengeksekusi setiap blok dari blok genesis.

  • Meminimalkan kepercayaan dan menawarkan keamanan tertinggi dengan memverifikasi setiap transaksi.
  • Dengan meningkatnya jumlah transaksi, butuh waktu berhari-hari hingga berminggu-minggu untuk memroses semua transaksi.
Sinkronisasi cepat

Sinkronisasi cepat mengunduh semua blok (termasuk header, transaksi dan bukti pembayaran), memverifikasi semua header, dan mengunduh state dan memverifikasinya dengan membandingkannya terhadap header.

  • Mengandalkan keamanan mekanisme konsensus.
  • Sinkronisasi memakan waktu hanya beberapa jam.
Sinkronisasi ringan

Mode klien ringan mengunduh semua header blok, data blok, dan memverifikasi beberapa secara acak. Hanya menyinkronkan ujung rantai dari pos pemeriksaan terpercaya.

  • Hanya mengambil state terbaru saat mengandalkan kepercayaan pada pengembang dan mekanisme konsensus.
  • Klien siap dipakai dengan state jaringan saat ini dalam beberapa menit.

Lebih lanjut tentang klien Ringan(opens in a new tab)

Sinkronisasi snap

Diimplementasikan oleh Geth. Dengan menggunakan foto - foto dinamis yang disediakan oleh para rekan sejawat, ia mengambilkan semua data akun dan penyimpanan tanpa mengunduh node trie menengah dan kemudian menyusun ulang trie Merkle secara lokal.

  • Strategi sinkronisasi tercepat yang dikembangkan oleh Geth, yang saat ini adalah versi defaultnya
  • Menghemat pemakaian ruangan cakram dan bandwidth jaringan tanpa mengorbankan aspek keamanan.

Lebih lanjut tentang Snap(opens in a new tab)

Sinkronisasi warp

Diimplementasikan oleh OpenEthereum. Node secara teratur menghasilkan foto state konsensus yang penting dan rekan sejawat mana pun dapat mengambilkan foto ini di jaringan, yang memungkinkan sinkronisasi cepat dari titik ini.

  • Mode sinkronisasi OpenEthereum yang tercepat dan default mengandalkan foto statis yang disediakan oleh para rekan sejawat.
  • Strategi yang mirip dengan sinkronisasi snap, tetapi tanpa manfaat keamanan tertentu.

Lebih lanjut tentang Warp(opens in a new tab)

Sinkronisasi beam

Diimplementasikan oleh Nethermind dan Trinity. Berfungsi seperti sinkronisasi cepat tetapi juga mengunduh data yang diperlukan untuk mengeksekusi blok terkini, yang memungkinkan Anda membuat query terhadap rantai dalam beberapa menit pertama sejak dimulai.

  • Menyinkronkan state terlebih dahulu dan memungkinkan Anda membuat kueri terhadap RPC dalam waktu beberapa menit.
  • Masih dalam tahap pengembangan dan belum sepenuhnya bisa diandalkan, sinkronisasi latar belakang diperlambat dan respons RPC mungkin gagal.

Lebih lanjut tentang Beam(opens in a new tab)

Pengaturan di klien

Klien menawarkan opsi konfigurasi yang kaya untuk menyesuaikan dengan kebutuhan Anda. Pilih salah satu yang paling sesuai dengan Anda berdasarkan tingkat keamanan, data yang tersedia, dan biayanya. Selain algoritma sinkronisasi, Anda juga dapat menentukan pemangkasan berbagai jenis data lama. Pemangkasan memungkinkan penghapusan data lama, contohnya menghilangkan node trie state yang tidak dapat dicapai dari blok terkini.

Perhatikan dokumentasi klien atau halaman bantuan untuk menemukan mode sinkronisasi mana yang merupakan opsi defaultnya. Anda dapat menentukan tipe sinkronisasi yang lebih disukai ketika Anda melakukan penyiapan, dalam cara:

Menyiapkan sinkronisasi ringan di GETH(opens in a new tab) atau ERIGON(opens in a new tab)

geth --syncmode "light"

Menyiapkan sinkronisasi penuh dengan arsip di Besu(opens in a new tab)

besu --sync-mode=FULL

Sama seperti konfigurasi lainnya, ia dapat ditentukan dengan bendera startup atau dalam berkas konfigurasi. Contoh lainnya adalah Nethermind(opens in a new tab) yang mendorong Anda untuk memilih konfigurasi pada saat inisiasi pertama dan membuat berkas konfigurasi.

Klien konsensus (sebelumnya klien 'Eth2')

Ada beberapa klien konsensus (sebelumnya dikenal sebagai klien 'Eth2') untuk mendukung peningkatan konsensus. They are running the Beacon Chain and will provide proof-of-stake consensus mechanism to execution clients after The Merge.

KlienBahasaSistem operasiJaringan
Teku(opens in a new tab)JavaLinux, Windows, macOSRantai Suar, Goerli
Nimbus(opens in a new tab)NimLinux, Windows, macOSRantai Suar, Goerli
Lighthouse(opens in a new tab)RustLinux, Windows, macOSRantai Suar, Goerli, Pyrmont
Lodestar(opens in a new tab)TypeScriptLinux, Windows, macOSRantai Suar, Goerli
Prysm(opens in a new tab)GoLinux, Windows, macOSRantai Suar, Gnosis, Goerli, Pyrmont

Perangkat keras

Kebutuhan perangkat keras berbeda untuk tiap klien tapi secara umum tidak terlalu tinggi karena node hanya perlu terus dalam kondisi tersinkronisasi. Jangan merancukannya dengan penambangan yang memerlukan lebih banyak daya komputasi. Akan tetapi, waktu sinkronisasi dan performa memang meningkat dengan perangkat keras yang lebih kuat. Bergantung kebutuhan dan keinginan Anda, Ethereum dapat dijalankan pada komputer, server rumah, komputer papan tunggal, atau server privat virtual di cloud.

Satu cara mudah untuk menjalankan node Anda sendiri adalah menggunakan kotak 'colokkan dan jalankan' seperti DAppNode(opens in a new tab). Menyediakan perangkat keras untuk menjalankan klien dan apllikasi yang bergantung padanya dengan antar muka pengguna sederhana.

Persyaratan

Sebelum menginstal klien apa pun, pastikan komputer Anda punya sumber daya yang cukup untuk menjalankannya. Persayaratan minimum dan disarankan bisa ditemukan di bawah, akan tetapi bagian kuncinya adalah kapasitas penyimpanan disk. Menyinkronisasikan blockchain Ethereum sangat bergantung banyak pada input/output. Sangat disarankan untuk memiliki satu solid-state drive (SSD). Untuk menjalankan satu klien Ethereum pada HDD, Anda akan membutuhkan paling sedikit 8GB RAM untuk digunakan sebagai cache.

  • CPU dengan 2+ inti
  • RAM dengan ukuran minimum 4GB dengan satu SSD, 8 GB+ jika Anda punya satu HDD
  • Bandwidth dengan kecepatan 8 MBit/d
  • CPU cepat dengan 4+ inti
  • RAM berukuran 16 GB+
  • SSD cepat dengan kapasitas penyimpanan paling sedikit 500 GB
  • Bandwidth dengan kecepatan 25+ MBit/d

Mode sinkronisasi yang Anda pilih akan mempengaruhi persyaratan ukuran ruangan cakram, tapi kami telah memperkirakan ruangan cakram yang akan Anda perlukan untuk setiap klien di bawah ini.

KlienUkuran disk (sinkronisasi cepat)Ukuran disk (arsip penuh)
Geth400GB+6TB+
OpenEthereum280GB+6TB+
Nethermind200GB+5TB+
Besu750GB+5TB+
ErigonN/A1TB+
  • Catatan: Erigon tidak melakukan Sinkronisasi Cepat, tapi Pemangkasan Penuh masih memungkinkan (~500GB)

Bagan ini menunjukkan bagaimana persyaratan kapasitas penyimpanan selalu berubah. Untuk data Geth dan Parity yang paling terbaru, lihat data sinkronisasi penuh(opens in a new tab) dan data sinkronisasi arsip(opens in a new tab).

Ethereum pada komputer papan tunggal

Cara paling nyaman dan murah untuk menjalankan node Ethereum adalah menggunakan komputer papan tungggal dengan arstitektur ARM seperti Raspberry Pi. Ethereum di ARM(opens in a new tab) menyediakan gambar dari klien Geth, Parity, Nethermind, dan Besu. Ini adalah tutorial sederhana tentang bagaimana menyusun dan menyiapkan klien ARM.

Perangkat kecil, terjangkau dan efisien seperti ini, ideal untuk menjalankan node di rumah.

Bacaan lebih lanjut

Ada banyak informasi tentang klien Ethereum di internet. Berikut adalah beberapa sumber daya yang mungkin bisa membantu.

Apakah artikel ini membantu?