Jalankan node Ethereum Anda sendiri
Menjalankan node Anda sendiri memberikan berbagai manfaat, membuka kemungkinan baru, dan membantu mendukung ekosistem. Halaman ini akan memandu Anda dalam menjalankan node Anda sendiri dan mengambil bagian dalam memvalidasi transaksi Ethereum.
Perhatikan bahwa setelah The Merge, dua klien diwajibkan untuk menjalankan node Ethereum; klien lapisan eksekusi (EL) dan klien lapisan konsensus (CL). Halaman ini akan menunjukkan cara menginstal, mengonfigurasi, dan menghubungkan kedua klien ini untuk menjalankan node Ethereum.
Prasyarat
Anda harus memahami apa itu node Ethereum dan mengapa Anda mungkin ingin menjalankan klien. Hal ini dibahas dalam Node dan klien.
Jika Anda baru mengenal topik menjalankan node, atau mencari jalur yang tidak terlalu teknis, kami sarankan untuk terlebih dahulu memeriksa pengantar ramah pengguna kami tentang menjalankan node Ethereum.
Memilih pendekatan
Langkah pertama dalam menjalankan node Anda adalah memilih pendekatan Anda. Berdasarkan persyaratan dan berbagai kemungkinan, Anda harus memilih implementasi klien (baik klien eksekusi maupun konsensus), lingkungan (perangkat keras, sistem), dan parameter untuk pengaturan klien.
Halaman ini akan memandu Anda melalui keputusan-keputusan ini dan membantu Anda menemukan cara yang paling sesuai untuk menjalankan instans Ethereum Anda.
Untuk memilih dari implementasi klien, lihat semua klien eksekusi dan klien konsensus yang siap untuk Mainnet, serta pelajari tentang keragaman klien.
Putuskan apakah akan menjalankan perangkat lunak pada perangkat keras Anda sendiri atau di cloud, dengan mempertimbangkan persyaratan klien.
Setelah menyiapkan lingkungan, instal klien yang dipilih baik dengan antarmuka yang ramah pemula atau secara manual menggunakan terminal dengan opsi lanjutan.
Saat node berjalan dan melakukan sinkronisasi, Anda siap untuk menggunakannya, tetapi pastikan untuk terus memantau pemeliharaannya.
Lingkungan dan perangkat keras
Lokal atau cloud
Klien Ethereum dapat berjalan di komputer tingkat konsumen dan tidak memerlukan perangkat keras khusus, seperti mesin penambangan misalnya. Oleh karena itu, Anda memiliki berbagai opsi untuk menyebarkan node berdasarkan kebutuhan Anda. Untuk menyederhanakan, mari kita pikirkan tentang menjalankan node pada mesin fisik lokal dan server cloud:
- Cloud
- Penyedia menawarkan waktu aktif server yang tinggi dan alamat IP publik statis
- Mendapatkan server khusus atau virtual bisa lebih nyaman daripada membangun server Anda sendiri
- Kelemahannya adalah harus memercayai pihak ketiga - penyedia server
- Karena ukuran penyimpanan yang diperlukan untuk full node, harga server sewaan mungkin menjadi tinggi
- Perangkat keras sendiri
- Pendekatan yang lebih berdaulat dan tanpa kepercayaan
- Investasi satu kali
- Opsi untuk membeli mesin yang telah dikonfigurasi sebelumnya
- Anda harus secara fisik menyiapkan, memelihara, dan berpotensi memecahkan masalah mesin dan jaringan
Kedua opsi memiliki keuntungan berbeda yang dirangkum di atas. Jika Anda mencari solusi cloud, selain banyak penyedia komputasi cloud tradisional, ada juga layanan yang berfokus pada penyebaran node. Lihat node sebagai layanan untuk opsi lebih lanjut tentang node yang di-host.
Perangkat keras
Namun, jaringan terdesentralisasi yang tahan sensor tidak boleh bergantung pada penyedia cloud. Sebaliknya, menjalankan node Anda pada perangkat keras lokal Anda sendiri lebih sehat untuk ekosistem. Estimasi (opens in a new tab) menunjukkan sebagian besar node berjalan di cloud, yang bisa menjadi titik kegagalan tunggal.
Klien Ethereum dapat berjalan di komputer, laptop, server, atau bahkan komputer papan tunggal Anda. Meskipun menjalankan klien di komputer pribadi Anda dimungkinkan, memiliki mesin khusus hanya untuk node Anda dapat secara signifikan meningkatkan kinerja dan keamanannya sambil meminimalkan dampak pada komputer utama Anda.
Menggunakan perangkat keras Anda sendiri bisa sangat mudah. Ada banyak opsi sederhana serta pengaturan lanjutan untuk orang yang lebih teknis. Jadi mari kita lihat persyaratan dan cara untuk menjalankan klien Ethereum di mesin Anda.
Persyaratan
Persyaratan perangkat keras berbeda menurut klien tetapi umumnya tidak terlalu tinggi karena node hanya perlu tetap tersinkronisasi. Jangan bingung dengan penambangan, yang membutuhkan daya komputasi yang jauh lebih besar. Namun, waktu sinkronisasi dan kinerja memang meningkat dengan perangkat keras yang lebih kuat.
Sebelum menginstal klien apa pun, pastikan komputer Anda memiliki sumber daya yang cukup untuk menjalankannya. Anda dapat menemukan persyaratan minimum dan yang disarankan di bawah ini.
Hambatan untuk perangkat keras Anda sebagian besar adalah ruang disk. Sinkronisasi rantai blok Ethereum sangat intensif input/output dan membutuhkan banyak ruang. Sebaiknya miliki solid-state drive (SSD) dengan ratusan GB ruang kosong yang tersisa bahkan setelah sinkronisasi.
Ukuran basis data dan kecepatan sinkronisasi awal bergantung pada klien yang dipilih, konfigurasinya, dan strategi sinkronisasi.
Pastikan juga koneksi internet Anda tidak dibatasi oleh batas bandwidth (opens in a new tab). Disarankan untuk menggunakan koneksi tanpa batas karena sinkronisasi awal dan data yang disiarkan ke jaringan dapat melebihi batas Anda.
Sistem operasi
Semua klien mendukung sistem operasi utama - Linux, macOS, Windows. Ini berarti Anda dapat menjalankan node pada mesin desktop atau server biasa dengan sistem operasi (OS) yang paling sesuai untuk Anda. Pastikan OS Anda mutakhir untuk menghindari potensi masalah dan kerentanan keamanan.
Persyaratan minimum
- CPU dengan 2+ inti
- RAM 8 GB
- SSD 2TB
- Bandwidth 10+ MBit/s
Spesifikasi yang disarankan
- CPU cepat dengan 4+ inti
- RAM 16 GB+
- SSD cepat dengan 2+TB
- Bandwidth 25+ MBit/s
Mode sinkronisasi dan klien yang Anda pilih akan memengaruhi persyaratan ruang, tetapi kami telah memperkirakan ruang disk yang Anda perlukan untuk setiap klien di bawah ini.
| Klien | Ukuran disk (sinkronisasi snap) | Ukuran disk (arsip penuh) |
|---|---|---|
| Besu | 800GB+ | 12TB+ |
| Erigon | N/A | 2.5TB+ |
| Geth | 500GB+ | 12TB+ |
| Nethermind | 500GB+ | 12TB+ |
| Reth | N/A | 2.2TB+ |
- Catatan: Erigon dan Reth tidak menawarkan sinkronisasi snap, tetapi Pemangkasan Penuh (Full Pruning) dimungkinkan (~2TB untuk Erigon, ~1.2TB untuk Reth)
Untuk klien konsensus, persyaratan ruang juga bergantung pada implementasi klien dan fitur yang diaktifkan (misalnya, pemotong validator) tetapi umumnya perhitungkan tambahan 200GB yang diperlukan untuk data suar. Dengan sejumlah besar validator, beban bandwidth juga bertambah. Anda dapat menemukan detail tentang persyaratan klien konsensus dalam analisis ini (opens in a new tab).
Solusi plug-and-play
Opsi termudah untuk menjalankan node dengan perangkat keras Anda sendiri adalah menggunakan kotak plug-and-play. Mesin yang telah dikonfigurasi sebelumnya dari vendor menawarkan pengalaman yang paling mudah: pesan, sambungkan, jalankan. Semuanya telah dikonfigurasi sebelumnya dan berjalan secara otomatis dengan panduan intuitif dan dasbor untuk memantau dan mengontrol perangkat lunak.
Ethereum di komputer papan tunggal
Cara mudah dan murah untuk menjalankan node Ethereum adalah dengan menggunakan komputer papan tunggal, bahkan dengan arsitektur ARM seperti Raspberry Pi. Ethereum di ARM (opens in a new tab) menyediakan citra yang mudah dijalankan dari beberapa klien eksekusi dan konsensus untuk Raspberry Pi dan papan ARM lainnya.
Perangkat kecil, terjangkau, dan efisien seperti ini ideal untuk menjalankan node di rumah tetapi ingatlah kinerjanya yang terbatas.
Menjalankan node
Pengaturan klien yang sebenarnya dapat dilakukan baik dengan peluncur otomatis atau secara manual, mengatur perangkat lunak klien secara langsung.
Untuk pengguna yang kurang mahir, pendekatan yang disarankan adalah menggunakan peluncur, perangkat lunak yang memandu Anda melalui instalasi dan mengotomatiskan proses pengaturan klien. Namun, jika Anda memiliki pengalaman menggunakan terminal, langkah-langkah untuk pengaturan manual seharusnya mudah diikuti.
Pengaturan terpandu
Beberapa proyek yang ramah pengguna bertujuan untuk meningkatkan pengalaman mengatur klien. Peluncur ini menyediakan instalasi dan konfigurasi klien otomatis, dengan beberapa bahkan menawarkan antarmuka grafis untuk pengaturan terpandu dan pemantauan klien.
Di bawah ini adalah beberapa proyek yang dapat membantu Anda menginstal dan mengontrol klien hanya dengan beberapa klik:
- DAppNode (opens in a new tab) - DAppNode tidak hanya hadir dengan mesin dari vendor. Perangkat lunak, peluncur node yang sebenarnya, dan pusat kendali dengan banyak fitur dapat digunakan pada perangkat keras apa pun.
- EthPillar (opens in a new tab) - Cara tercepat dan termudah untuk mengatur full node. Alat pengaturan satu baris dan TUI manajemen node. Gratis. Sumber terbuka. Barang publik untuk Ethereum oleh pelaku staking mandiri. Dukungan ARM64 dan AMD64.
- eth-docker (opens in a new tab) - Pengaturan otomatis menggunakan Docker yang berfokus pada staking yang mudah dan aman, memerlukan pengetahuan dasar terminal dan Docker, disarankan untuk pengguna yang sedikit lebih mahir.
- Stereum (opens in a new tab) - Peluncur untuk menginstal klien di server jarak jauh melalui koneksi SSH dengan panduan pengaturan GUI, pusat kendali, dan banyak fitur lainnya.
- Sedge (opens in a new tab) - Alat pengaturan node yang secara otomatis menghasilkan konfigurasi Docker menggunakan panduan CLI. Ditulis dalam Go oleh Nethermind.
- Chainstack Self-Hosted (opens in a new tab) - UI Web dan CLI untuk menyebarkan klien eksekusi dan konsensus di Kubernetes. Termasuk bootstrap Snapshot dan pemantauan bawaan. Gratis. Tidak memerlukan akun Chainstack. Dibangun oleh Chainstack.
Pengaturan klien manual
Opsi lainnya adalah mengunduh, memverifikasi, dan mengonfigurasi perangkat lunak klien secara manual. Bahkan jika beberapa klien menawarkan antarmuka grafis, pengaturan manual masih memerlukan keterampilan dasar dengan terminal tetapi menawarkan lebih banyak fleksibilitas.
Seperti yang dijelaskan sebelumnya, mengatur node Ethereum Anda sendiri akan memerlukan menjalankan sepasang klien konsensus dan eksekusi. Beberapa klien mungkin menyertakan klien ringan dari jenis lain dan melakukan sinkronisasi tanpa memerlukan perangkat lunak lain. Namun, verifikasi tanpa kepercayaan penuh memerlukan kedua implementasi tersebut.
Mendapatkan perangkat lunak klien
Pertama, Anda perlu mendapatkan perangkat lunak klien eksekusi dan klien konsensus pilihan Anda.
Anda cukup mengunduh aplikasi yang dapat dieksekusi atau paket instalasi yang sesuai dengan sistem operasi dan arsitektur Anda. Selalu verifikasi tanda tangan dan checksum dari paket yang diunduh. Beberapa klien juga menawarkan repositori atau citra Docker untuk instalasi dan pembaruan yang lebih mudah. Semua klien adalah sumber terbuka, jadi Anda juga dapat mengkompilasinya dari sumber. Ini adalah metode yang lebih mahir, tetapi dalam beberapa kasus, ini mungkin diperlukan.
Instruksi untuk menginstal setiap klien disediakan dalam dokumentasi yang ditautkan dalam daftar klien di atas.
Berikut adalah halaman rilis klien tempat Anda dapat menemukan biner pra-kompilasi mereka atau instruksi tentang instalasi:
Klien eksekusi
- Besu (opens in a new tab)
- Erigon (opens in a new tab)
- Geth (opens in a new tab)
- Nethermind (opens in a new tab)
- Reth (opens in a new tab)
Perlu juga dicatat bahwa keragaman klien adalah masalah pada lapisan eksekusi. Disarankan agar pembaca mempertimbangkan untuk menjalankan klien eksekusi minoritas.
Klien konsensus
- Lighthouse (opens in a new tab)
- Lodestar (opens in a new tab) (Tidak menyediakan biner pra-kompilasi, hanya citra Docker atau untuk dikompilasi dari sumber)
- Nimbus (opens in a new tab)
- Prysm (opens in a new tab)
- Teku (opens in a new tab)
Keragaman klien sangat penting untuk node konsensus yang menjalankan validator. Jika mayoritas validator menjalankan implementasi klien tunggal, keamanan jaringan berisiko. Oleh karena itu disarankan untuk mempertimbangkan memilih klien minoritas.
Lihat penggunaan klien jaringan terbaru (opens in a new tab) dan pelajari lebih lanjut tentang keragaman klien.
Memverifikasi perangkat lunak
Saat mengunduh perangkat lunak dari internet, disarankan untuk memverifikasi integritasnya. Langkah ini opsional tetapi terutama dengan bagian infrastruktur penting seperti klien Ethereum, penting untuk menyadari potensi vektor serangan dan menghindarinya. Jika Anda mengunduh biner pra-kompilasi, Anda harus memercayainya dan mengambil risiko bahwa penyerang dapat menukar file yang dapat dieksekusi dengan yang berbahaya.
Pengembang menandatangani biner yang dirilis dengan kunci PGP mereka sehingga Anda dapat memverifikasi secara kriptografis bahwa Anda menjalankan perangkat lunak yang persis mereka buat. Anda hanya perlu mendapatkan kunci publik yang digunakan oleh pengembang, yang dapat ditemukan di halaman rilis klien atau dalam dokumentasi. Setelah mengunduh rilis klien dan tanda tangannya, Anda dapat menggunakan implementasi PGP, misalnya, GnuPG (opens in a new tab) untuk memverifikasinya dengan mudah. Lihat tutorial tentang memverifikasi perangkat lunak sumber terbuka menggunakan gpg di Linux (opens in a new tab) atau Windows/macOS (opens in a new tab).
Bentuk verifikasi lainnya adalah memastikan bahwa hash, sidik jari kriptografis unik, dari perangkat lunak yang Anda unduh cocok dengan yang disediakan oleh pengembang. Ini bahkan lebih mudah daripada menggunakan PGP, dan beberapa klien hanya menawarkan opsi ini. Cukup jalankan fungsi hash pada perangkat lunak yang diunduh dan bandingkan dengan yang ada di halaman rilis. Misalnya:
sha256sum teku-22.6.1.tar.gz
9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
Pengaturan klien
Setelah menginstal, mengunduh, atau mengkompilasi perangkat lunak klien, Anda siap untuk menjalankannya. Ini hanya berarti perangkat lunak tersebut harus dieksekusi dengan konfigurasi yang tepat. Klien menawarkan opsi konfigurasi yang kaya, yang dapat mengaktifkan berbagai fitur.
Mari kita mulai dengan opsi yang dapat secara signifikan memengaruhi kinerja klien dan penggunaan data. Mode sinkronisasi mewakili metode yang berbeda untuk mengunduh dan memvalidasi data rantai blok. Sebelum memulai node, Anda harus memutuskan jaringan dan mode sinkronisasi apa yang akan digunakan. Hal terpenting untuk dipertimbangkan adalah ruang disk, dan waktu sinkronisasi yang dibutuhkan klien. Perhatikan dokumen klien untuk menentukan mode sinkronisasi mana yang merupakan default. Jika itu tidak sesuai untuk Anda, pilih yang lain berdasarkan tingkat keamanan, data yang tersedia, dan biaya. Selain algoritma sinkronisasi, Anda juga dapat mengatur pemangkasan berbagai jenis data lama. Pemangkasan memungkinkan penghapusan data yang sudah usang, yaitu, menghapus node trie keadaan yang tidak dapat dijangkau dari blok terbaru.
Opsi konfigurasi dasar lainnya adalah, misalnya, memilih jaringan - Mainnet atau testnet, mengaktifkan titik akhir HTTP untuk RPC atau WebSockets, dll. Anda dapat menemukan semua fitur dan opsi dalam dokumentasi klien. Berbagai konfigurasi klien dapat diatur dengan mengeksekusi klien dengan tanda (flag) yang sesuai secara langsung di CLI atau file konfigurasi. Setiap klien sedikit berbeda; harap selalu merujuk ke dokumentasi resminya atau halaman bantuan untuk detail tentang opsi konfigurasi.
Untuk tujuan pengujian, Anda mungkin lebih suka menjalankan klien di salah satu jaringan testnet. Lihat ikhtisar jaringan yang didukung.
Contoh menjalankan klien eksekusi dengan konfigurasi dasar dapat ditemukan di bagian selanjutnya.
Memulai klien eksekusi
Sebelum memulai perangkat lunak klien Ethereum, lakukan pemeriksaan terakhir bahwa lingkungan Anda sudah siap. Misalnya, pastikan:
- Terdapat ruang disk yang cukup dengan mempertimbangkan jaringan dan mode sinkronisasi yang dipilih.
- Memori dan CPU tidak terhenti oleh program lain.
- Sistem operasi diperbarui ke versi terbaru.
- Sistem memiliki waktu dan tanggal yang benar.
- Router dan firewall Anda menerima koneksi pada port pendengar. Secara default, klien Ethereum menggunakan port pendengar (TCP) dan port penemuan (UDP), keduanya pada 30303 secara default.
Jalankan klien Anda di testnet terlebih dahulu untuk membantu memastikan semuanya berfungsi dengan benar.
Anda perlu mendeklarasikan pengaturan klien apa pun yang bukan default pada saat memulai. Anda dapat menggunakan tanda (flag) atau file konfigurasi untuk mendeklarasikan konfigurasi pilihan Anda. Kumpulan fitur dan sintaks konfigurasi setiap klien berbeda. Lihat dokumentasi klien Anda untuk detailnya.
Klien eksekusi dan konsensus berkomunikasi melalui titik akhir terautentikasi yang ditentukan dalam Engine API (opens in a new tab). Untuk terhubung ke klien konsensus, klien eksekusi harus menghasilkan jwtsecret (opens in a new tab) pada jalur yang diketahui. Untuk alasan keamanan dan stabilitas, klien harus berjalan pada mesin yang sama, dan kedua klien harus mengetahui jalur ini karena digunakan untuk mengautentikasi koneksi RPC lokal di antara mereka. Klien eksekusi juga harus menentukan port pendengar untuk API yang terautentikasi.
Token ini dihasilkan secara otomatis oleh perangkat lunak klien, tetapi dalam beberapa kasus, Anda mungkin perlu melakukannya sendiri. Anda dapat menghasilkannya menggunakan OpenSSL (opens in a new tab):
openssl rand -hex 32 > jwtsecret
Menjalankan klien eksekusi
Bagian ini akan memandu Anda dalam memulai klien eksekusi. Ini hanya berfungsi sebagai contoh konfigurasi dasar, yang akan memulai klien dengan pengaturan ini:
- Menentukan jaringan untuk dihubungkan, Mainnet dalam contoh kami
- Anda dapat memilih salah satu testnet untuk pengujian awal pengaturan Anda
- Menentukan direktori data, tempat semua data termasuk rantai blok akan disimpan
- Pastikan untuk mengganti jalur dengan yang asli, misalnya, menunjuk ke drive eksternal Anda
- Mengaktifkan antarmuka untuk berkomunikasi dengan klien
- Termasuk JSON-RPC dan Engine API untuk komunikasi dengan klien konsensus
- Menentukan jalur ke
jwtsecretuntuk API yang terautentikasi- Pastikan untuk mengganti jalur contoh dengan yang asli yang dapat diakses oleh klien, misalnya,
/tmp/jwtsecret
- Pastikan untuk mengganti jalur contoh dengan yang asli yang dapat diakses oleh klien, misalnya,
Harap diingat bahwa ini hanyalah contoh dasar, semua pengaturan lainnya akan diatur ke default. Perhatikan dokumentasi setiap klien untuk mempelajari tentang nilai default, pengaturan, dan fitur. Untuk fitur lebih lanjut, misalnya untuk menjalankan validator, pemantauan, dll., silakan merujuk ke dokumentasi klien tertentu.
Perhatikan bahwa garis miring terbalik
\dalam contoh hanya untuk tujuan pemformatan; tanda (flag) konfigurasi dapat ditentukan dalam satu baris.
Menjalankan Besu
Contoh ini memulai Besu di Mainnet, menyimpan data rantai blok dalam format default di /data/ethereum, mengaktifkan JSON-RPC dan Engine RPC untuk menghubungkan klien konsensus. Engine API diautentikasi dengan token jwtsecret dan hanya panggilan dari localhost yang diizinkan.
besu --network=mainnet \
--data-path=/data/ethereum \
--rpc-http-enabled=true \
--engine-rpc-enabled=true \
--engine-host-allowlist="*" \
--engine-jwt-enabled=true \
--engine-jwt-secret=/path/to/jwtsecret
Besu juga dilengkapi dengan opsi peluncur yang akan menanyakan serangkaian pertanyaan dan menghasilkan file konfigurasi. Jalankan peluncur interaktif menggunakan:
besu --Xlauncher
Dokumentasi Besu (opens in a new tab) berisi opsi tambahan dan detail konfigurasi.
Menjalankan Erigon
Contoh ini memulai Erigon di Mainnet, menyimpan data rantai blok di /data/ethereum, mengaktifkan JSON-RPC, menentukan namespace mana yang diizinkan dan mengaktifkan autentikasi untuk menghubungkan klien konsensus yang ditentukan oleh jalur jwtsecret.
erigon --chain mainnet \
--datadir /data/ethereum \
--http --http.api=engine,eth,web3,net \
--authrpc.jwtsecret=/path/to/jwtsecret
Erigon secara default melakukan sinkronisasi penuh dengan HDD 8GB yang akan menghasilkan lebih dari 2TB data arsip. Pastikan datadir menunjuk ke disk dengan ruang kosong yang cukup atau lihat tanda --prune yang dapat memangkas berbagai jenis data. Periksa --help Erigon untuk mempelajari lebih lanjut.
Menjalankan Geth
Contoh ini memulai Geth di Mainnet, menyimpan data rantai blok di /data/ethereum, mengaktifkan JSON-RPC dan menentukan namespace mana yang diizinkan. Ini juga mengaktifkan autentikasi untuk menghubungkan klien konsensus yang memerlukan jalur ke jwtsecret dan juga opsi yang menentukan koneksi mana yang diizinkan, dalam contoh kami hanya dari localhost.
geth --mainnet \
--datadir "/data/ethereum" \
--http --authrpc.addr localhost \
--authrpc.vhosts="localhost" \
--authrpc.port 8551
--authrpc.jwtsecret=/path/to/jwtsecret
Periksa dokumen untuk semua opsi konfigurasi (opens in a new tab) dan pelajari lebih lanjut tentang menjalankan Geth dengan klien konsensus (opens in a new tab).
Menjalankan Nethermind
Nethermind menawarkan berbagai opsi instalasi (opens in a new tab). Paket ini dilengkapi dengan berbagai biner, termasuk Peluncur dengan pengaturan terpandu, yang akan membantu Anda membuat konfigurasi secara interaktif. Sebagai alternatif, Anda menemukan Runner yang merupakan file yang dapat dieksekusi itu sendiri dan Anda dapat menjalankannya dengan tanda konfigurasi. JSON-RPC diaktifkan secara default.
Nethermind.Runner --config mainnet \
--datadir /data/ethereum \
--JsonRpc.JwtSecretFile=/path/to/jwtsecret
Dokumen Nethermind menawarkan panduan lengkap (opens in a new tab) tentang menjalankan Nethermind dengan klien konsensus.
Klien eksekusi akan memulai fungsi intinya, titik akhir yang dipilih, dan mulai mencari rekan (peer). Setelah berhasil menemukan rekan, klien memulai sinkronisasi. Klien eksekusi akan menunggu koneksi dari klien konsensus. Data rantai blok saat ini akan tersedia setelah klien berhasil disinkronkan ke state saat ini.
Menjalankan Reth
Contoh ini memulai Reth di Mainnet, menggunakan lokasi data default. Mengaktifkan autentikasi JSON-RPC dan Engine RPC untuk menghubungkan klien konsensus yang ditentukan oleh jalur jwtsecret, dengan hanya panggilan dari localhost yang diizinkan.
reth node \
--authrpc.jwtsecret /path/to/jwtsecret \
--authrpc.addr 127.0.0.1 \
--authrpc.port 8551
Lihat Mengonfigurasi Reth (opens in a new tab) untuk mempelajari lebih lanjut tentang direktori data default. Dokumentasi Reth (opens in a new tab) berisi opsi tambahan dan detail konfigurasi.
Memulai klien konsensus
Klien konsensus harus dimulai dengan konfigurasi port yang tepat untuk membuat koneksi RPC lokal ke klien eksekusi. Klien konsensus harus dijalankan dengan port klien eksekusi yang diekspos sebagai argumen konfigurasi.
Klien konsensus juga memerlukan jalur ke jwt-secret klien eksekusi untuk mengautentikasi koneksi RPC di antara mereka. Mirip dengan contoh eksekusi di atas, setiap klien konsensus memiliki tanda konfigurasi yang mengambil jalur file token jwt sebagai argumen. Ini harus konsisten dengan jalur jwtsecret yang diberikan ke klien eksekusi.
Jika Anda berencana untuk menjalankan validator, pastikan untuk menambahkan tanda konfigurasi yang menentukan alamat Ethereum penerima biaya. Di sinilah hadiah Ether untuk validator Anda terakumulasi. Setiap klien konsensus memiliki opsi, misalnya, --suggested-fee-recipient=0xabcd1, yang mengambil alamat Ethereum sebagai argumen.
Saat memulai Simpul Suar di testnet, Anda dapat menghemat waktu sinkronisasi yang signifikan dengan menggunakan titik akhir publik untuk Sinkronisasi titik periksa (opens in a new tab).
Menjalankan klien konsensus
Menjalankan Lighthouse
Sebelum menjalankan Lighthouse, pelajari lebih lanjut tentang cara menginstal dan mengonfigurasinya di Buku Lighthouse (opens in a new tab).
lighthouse beacon_node \
--network mainnet \
--datadir /data/ethereum \
--http \
--execution-endpoint http://127.0.0.1:8551 \
--execution-jwt /path/to/jwtsecret
Menjalankan Lodestar
Instal perangkat lunak Lodestar dengan mengkompilasinya atau mengunduh citra Docker. Pelajari lebih lanjut di dokumen (opens in a new tab) dan panduan pengaturan (opens in a new tab) yang lebih komprehensif.
lodestar beacon \
--dataDir="/data/ethereum" \
--network=mainnet \
--eth1.enabled=true \
--execution.urls="http://127.0.0.1:8551" \
--jwt-secret="/path/to/jwtsecret"
Menjalankan Nimbus
Nimbus dilengkapi dengan klien konsensus dan eksekusi. Ini dapat dijalankan di berbagai perangkat bahkan dengan daya komputasi yang sangat sederhana. Setelah menginstal dependensi dan Nimbus itu sendiri (opens in a new tab), Anda dapat menjalankan klien konsensusnya:
nimbus_beacon_node \
--network=mainnet \
--web3-url=http://127.0.0.1:8551 \
--rest \
--jwt-secret="/path/to/jwtsecret"
Menjalankan Prysm
Prysm dilengkapi dengan skrip yang memungkinkan instalasi otomatis yang mudah. Detailnya dapat ditemukan di dokumen Prysm (opens in a new tab).
./prysm.sh beacon-chain \
--mainnet \
--datadir /data/ethereum \
--execution-endpoint=http://localhost:8551 \
--jwt-secret=/path/to/jwtsecret
Menjalankan Teku
teku --network mainnet \
--data-path "/data/ethereum" \
--ee-endpoint http://localhost:8551 \
--ee-jwt-secret-file "/path/to/jwtsecret"
Saat klien konsensus terhubung ke klien eksekusi untuk membaca kontrak deposit dan mengidentifikasi validator, klien tersebut juga terhubung ke rekan Simpul Suar lainnya dan mulai menyinkronkan slot konsensus dari genesis. Setelah Simpul Suar mencapai Epok saat ini, Beacon API menjadi dapat digunakan untuk validator Anda. Pelajari lebih lanjut tentang API Simpul Suar (opens in a new tab).
Menambahkan Validator
Klien konsensus berfungsi sebagai Simpul Suar untuk dihubungkan oleh validator. Setiap klien konsensus memiliki perangkat lunak validatornya sendiri yang dijelaskan secara rinci dalam dokumentasinya masing-masing.
Menjalankan validator Anda sendiri memungkinkan staking mandiri, metode yang paling berdampak dan tanpa kepercayaan untuk mendukung jaringan Ethereum. Namun, ini memerlukan deposit sebesar 32 ETH. Untuk menjalankan validator pada node Anda sendiri dengan jumlah yang lebih kecil, pool terdesentralisasi dengan operator node tanpa izin, seperti Rocket Pool (opens in a new tab), mungkin menarik bagi Anda.
Cara termudah untuk memulai staking dan pembuatan kunci validator adalah dengan menggunakan Launchpad Staking Testnet Hoodi (opens in a new tab), yang memungkinkan Anda menguji pengaturan Anda dengan menjalankan node di Hoodi (opens in a new tab). Saat Anda siap untuk Mainnet, Anda dapat mengulangi langkah-langkah ini menggunakan Launchpad Staking Mainnet (opens in a new tab).
Lihat halaman staking untuk ikhtisar tentang opsi staking.
Menggunakan node
Klien eksekusi menawarkan titik akhir RPC API yang dapat Anda gunakan untuk mengirimkan transaksi, berinteraksi dengan, atau menyebarkan kontrak pintar di jaringan Ethereum dengan berbagai cara:
- Memanggilnya secara manual dengan protokol yang sesuai (misalnya, menggunakan
curl) - Melampirkan konsol yang disediakan (misalnya,
geth attach) - Mengimplementasikannya dalam aplikasi menggunakan pustaka Web3, misalnya, Web3.py (opens in a new tab), ethers (opens in a new tab)
Klien yang berbeda memiliki implementasi titik akhir RPC yang berbeda. Tetapi ada JSON-RPC standar yang dapat Anda gunakan dengan setiap klien. Untuk ikhtisar, baca dokumen JSON-RPC. Aplikasi yang membutuhkan informasi dari jaringan Ethereum dapat menggunakan RPC ini. Misalnya, dompet populer MetaMask memungkinkan Anda terhubung ke titik akhir RPC Anda sendiri (opens in a new tab) yang memiliki manfaat privasi dan keamanan yang kuat.
Semua klien konsensus mengekspos Beacon API (opens in a new tab) yang dapat digunakan untuk memeriksa status klien konsensus atau mengunduh blok dan data konsensus dengan mengirimkan permintaan menggunakan alat seperti Curl (opens in a new tab). Informasi lebih lanjut tentang ini dapat ditemukan dalam dokumentasi untuk setiap klien konsensus.
Menjangkau RPC
Port default untuk JSON-RPC klien eksekusi adalah 8545 tetapi Anda dapat memodifikasi port titik akhir lokal dalam konfigurasi. Secara default, antarmuka RPC hanya dapat dijangkau di localhost komputer Anda. Untuk membuatnya dapat diakses dari jarak jauh, Anda mungkin ingin mengeksposnya ke publik dengan mengubah alamat menjadi 0.0.0.0. Ini akan membuatnya dapat dijangkau melalui jaringan lokal dan alamat IP publik. Dalam kebanyakan kasus, Anda juga perlu mengatur penerusan port (port forwarding) di router Anda.
Lakukan pendekatan mengekspos port ke internet dengan hati-hati karena ini akan membiarkan siapa pun di internet mengontrol node Anda. Aktor jahat dapat mengakses node Anda untuk menjatuhkan sistem Anda atau mencuri dana Anda jika Anda menggunakan klien Anda sebagai dompet.
Cara untuk menyiasatinya adalah dengan mencegah metode RPC yang berpotensi berbahaya agar tidak dapat dimodifikasi. Misalnya, dengan Geth, Anda dapat mendeklarasikan metode yang dapat dimodifikasi dengan tanda: --http.api web3,eth,txpool.
Akses ke antarmuka RPC dapat diperluas melalui pengembangan API lapisan tepi (edge layer) atau aplikasi server web, seperti Nginx, dan menghubungkannya ke alamat dan port lokal klien Anda. Memanfaatkan lapisan menengah juga dapat memungkinkan pengembang kemampuan untuk mengatur sertifikat untuk koneksi https yang aman ke antarmuka RPC.
Mengatur server web, proksi, atau Rest API yang menghadap ke eksternal bukanlah satu-satunya cara untuk menyediakan akses ke titik akhir RPC node Anda. Cara lain yang menjaga privasi untuk mengatur titik akhir yang dapat dijangkau publik adalah dengan meng-host node pada layanan onion Tor (opens in a new tab) Anda sendiri. Ini akan memungkinkan Anda menjangkau RPC di luar jaringan lokal Anda tanpa alamat IP publik statis atau port yang terbuka. Namun, menggunakan konfigurasi ini mungkin hanya memungkinkan titik akhir RPC dapat diakses melalui jaringan Tor yang tidak didukung oleh semua aplikasi dan mungkin mengakibatkan masalah koneksi.
Untuk melakukan ini, Anda harus membuat layanan onion (opens in a new tab) Anda sendiri. Lihat dokumentasi (opens in a new tab) tentang pengaturan layanan onion untuk meng-host layanan Anda sendiri. Anda dapat mengarahkannya ke server web dengan proksi ke port RPC atau langsung ke RPC.
Terakhir, dan salah satu cara paling populer untuk menyediakan akses ke jaringan internal adalah melalui koneksi VPN. Bergantung pada kasus penggunaan Anda dan jumlah pengguna yang membutuhkan akses ke node Anda, koneksi VPN yang aman mungkin menjadi pilihan. OpenVPN (opens in a new tab) adalah VPN SSL berfitur lengkap yang mengimplementasikan ekstensi jaringan aman OSI lapisan 2 atau 3 menggunakan protokol SSL/TLS standar industri, mendukung metode autentikasi klien yang fleksibel berdasarkan sertifikat, kartu pintar, dan/atau kredensial nama pengguna/kata sandi, dan memungkinkan kebijakan kontrol akses khusus pengguna atau grup menggunakan aturan firewall yang diterapkan pada antarmuka virtual VPN.
Mengoperasikan node
Anda harus memantau node Anda secara teratur untuk memastikan node tersebut berjalan dengan baik. Anda mungkin perlu melakukan pemeliharaan sesekali.
Menjaga node tetap online
Node Anda tidak harus online sepanjang waktu, tetapi Anda harus menjaganya tetap online sebanyak mungkin agar tetap tersinkronisasi dengan jaringan. Anda dapat mematikannya untuk memulai ulang, tetapi ingatlah bahwa:
- Mematikan dapat memakan waktu beberapa menit jika state terbaru masih ditulis di disk.
- Mematikan secara paksa dapat merusak basis data yang mengharuskan Anda menyinkronkan ulang seluruh node.
- Klien Anda akan tidak sinkron dengan jaringan dan perlu disinkronkan ulang saat Anda memulai ulangnya. Meskipun node dapat mulai menyinkronkan dari saat terakhir dimatikan, prosesnya dapat memakan waktu bergantung pada berapa lama node tersebut offline.
Ini tidak berlaku pada node validator lapisan konsensus. Membuat node Anda offline akan memengaruhi semua layanan yang bergantung padanya. Jika Anda menjalankan node untuk tujuan staking, Anda harus mencoba meminimalkan waktu henti (downtime) sebanyak mungkin.
Membuat layanan klien
Pertimbangkan untuk membuat layanan untuk menjalankan klien Anda secara otomatis saat startup. Misalnya, di server Linux, praktik yang baik adalah membuat layanan, misalnya, dengan systemd, yang mengeksekusi klien dengan konfigurasi yang tepat, di bawah pengguna dengan hak istimewa terbatas dan secara otomatis memulai ulang.
Memperbarui klien
Anda perlu menjaga perangkat lunak klien Anda tetap mutakhir dengan patch keamanan, fitur, dan EIP terbaru. Terutama sebelum hard fork, pastikan Anda menjalankan versi klien yang benar.
Sebelum pembaruan jaringan yang penting, EF menerbitkan postingan di blog (opens in a new tab)-nya. Anda dapat berlangganan pengumuman ini (opens in a new tab) untuk mendapatkan pemberitahuan ke email Anda saat node Anda memerlukan pembaruan.
Memperbarui klien sangat sederhana. Setiap klien memiliki instruksi khusus dalam dokumentasinya, tetapi prosesnya umumnya hanya mengunduh versi terbaru dan memulai ulang klien dengan file yang dapat dieksekusi yang baru. Klien harus melanjutkan dari tempat terakhirnya, tetapi dengan pembaruan yang diterapkan.
Setiap implementasi klien memiliki string versi yang dapat dibaca manusia yang digunakan dalam protokol peer-to-peer tetapi juga dapat diakses dari baris perintah. String versi ini memungkinkan pengguna memeriksa bahwa mereka menjalankan versi yang benar dan memungkinkan penjelajah blok dan alat analitik lainnya yang tertarik untuk mengukur distribusi klien tertentu di seluruh jaringan. Silakan merujuk ke dokumentasi klien individual untuk informasi lebih lanjut tentang string versi.
Menjalankan layanan tambahan
Menjalankan node Anda sendiri memungkinkan Anda menggunakan layanan yang memerlukan akses langsung ke RPC klien Ethereum. Ini adalah layanan yang dibangun di atas Ethereum seperti solusi lapisan 2 (l2), backend untuk dompet, penjelajah blok, alat pengembang, dan infrastruktur Ethereum lainnya.
Memantau node
Untuk memantau node Anda dengan benar, pertimbangkan untuk mengumpulkan metrik. Klien menyediakan titik akhir metrik sehingga Anda bisa mendapatkan data komprehensif tentang node Anda. Gunakan alat seperti InfluxDB (opens in a new tab) atau Prometheus (opens in a new tab) untuk membuat basis data yang dapat Anda ubah menjadi visualisasi dan bagan dalam perangkat lunak seperti Grafana (opens in a new tab). Ada banyak pengaturan untuk menggunakan perangkat lunak ini dan dasbor Grafana yang berbeda bagi Anda untuk memvisualisasikan node Anda dan jaringan secara keseluruhan. Misalnya, lihat tutorial tentang memantau Geth.
Sebagai bagian dari pemantauan Anda, pastikan untuk terus memantau kinerja mesin Anda. Selama sinkronisasi awal node Anda, perangkat lunak klien mungkin sangat berat pada CPU dan RAM. Selain Grafana, Anda dapat menggunakan alat yang ditawarkan OS Anda seperti htop atau uptime untuk melakukan ini.
Bacaan lebih lanjut
- Panduan Staking Ethereum (opens in a new tab) - Somer Esat, sering diperbarui
- Panduan | Cara mengatur validator untuk staking Ethereum di mainnet (opens in a new tab) – CoinCashew, sering diperbarui
- Panduan EthStaker tentang menjalankan validator di testnet (opens in a new tab) – EthStaker, diperbarui secara berkala
- Contoh aplikasi AWS Blockchain Node Runner untuk Node Ethereum (opens in a new tab) - AWS, sering diperbarui
- FAQ The Merge untuk operator node (opens in a new tab) - Juli 2022
- Menganalisis persyaratan perangkat keras untuk menjadi full node Ethereum yang divalidasi (opens in a new tab) – Albert Palau, 24 September 2018
- Menjalankan Full Node Ethereum: Panduan untuk yang Kurang Termotivasi (opens in a new tab) – Justin Leroux, 7 November 2019
- Menjalankan Node Hyperledger Besu di Mainnet Ethereum: Manfaat, Persyaratan, dan Pengaturan (opens in a new tab) – Felipe Faraggi, 7 Mei 2020
- Menyebarkan Klien Ethereum Nethermind dengan Tumpukan Pemantauan (opens in a new tab) – Nethermind.eth, 8 Juli 2020
