Cara menyegerakkan nod Ethereum tanpa membuat kesilapan yang saya buat

Semasa saya mula berkembang di platform Ethereum, menyegerakkan nod adalah salah satu daripada beberapa perkara pertama yang saya lakukan. Tanpa ada orang yang memegang tangan saya dan tidak ada tempat untuk menggabungkan semua kesilapan biasa yang saya hadapi, saya membuang masa berminggu-minggu hanya menyegerakkan nod. Sakit kepala yang hampir saya hentikan.

Tidak mengetahui terminologi hanya menjadikannya lebih sukar.

Oleh itu, dalam artikel ini, saya ingin menggabungkan semua kesalahan biasa yang mungkin anda hadapi dan menerangkan sebab-sebab di sebalik setiap langkah ketika menyegerakkan nod. Mudah-mudahan, anda tidak akan mendapat pengalaman awal yang jahat seperti saya.

Pengenalan pantas

Di Ethereum, pembangun membuat potongan aplikasi yang berjalan di rangkaian. Ini dipanggil kontrak pintar . Walaupun anda dapat menyebarkannya secara manual tanpa menyegerakkan ke simpul Ethereum, dalam jangka masa panjang, proses pembangunan lebih mudah diselaraskan (terutamanya ketika kita ingin menggunakan kerangka pembangunan seperti Truffle).

Untuk menyegerakkan nod Ethereum, kami memerlukan perisian berikut:

  • Geth - Pelanggan untuk nod Ethereum.
  • Ethereum Wallet - Antara muka pengguna untuk nod Ethereum.

Mari kita mulakan.

Pasang Geth

Untuk memuat turun Geth, pergi ke sini untuk pengguna Windows. Kemudian klik pada butang "Geth for Windows".

Untuk pengguna MacOS, saya mengesyorkan agar anda memuat turun menggunakan homebrew. Anda boleh melakukannya dengan arahan berikut:

brew tap ethereum/ethereumbrew install ethereum

Rujuk arahan Geth untuk maklumat lebih lanjut.

Pastikan Geth dipasang dengan betul dengan menaip geth versionterminal (MacOS) atau PowerShell (Windows).

Pasang Dompet Ethereum

Kami memanggil GUI yang berinteraksi dengan rangkaian sebagai "dompet". Anda boleh menemui banyak dompet yang berbeza untuk Ethereum dengan carian Google yang pantas (seperti Parity, Jaxx, dan MyEtherWallet). Saya secara peribadi suka menggunakan Ethereum Wallet. Ia mempunyai antara muka yang mesra pengguna, dan saya juga agak berat sebelah kerana dikembangkan oleh Ethereum sendiri.

Anda boleh mendapatkan pemasang di sini.

Nota: Saya lebih suka Ethereum Wallet daripada Mist . Mist pada dasarnya adalah penyemak imbas yang membuat aplikasi dan laman web terdesentralisasi (dApps).

Untuk pembangunan kontrak pintar, kami hanya memerlukan Ethereum Wallet.

Mainnet vs Testnet

Di Ethereum, terdapat dua rangkaian utama: mainnet dan testnet.

Mainnet digunakan untuk melakukan transaksi Ether sebenar. Nilai Ether terikat dengan mata wang fiat sebenar melalui pertukaran cryptocurrency.

Sebagai pembangun, kami tidak mahu menjalankan ujian aplikasi dengan wang sebenar. Itulah tujuan testnet.

Kami memanggil testnet Ropsten .

Jalankan Dompet Geth dan Ethereum

Semasa anda membuat kontrak pintar, anda harus menyegerakkan testnet terlebih dahulu. Kita hanya perlu menyegerakkan mainnet apabila kita bersedia untuk menggunakan.

Anda memerlukan kira-kira 30GB ruang simpanan untuk menyegerakkan testnet. Oleh kerana terdapat lebih banyak transaksi di mainnet, anda memerlukan sekitar 100GB untuk menyegerakkan mainnet.

Nota: ada yang mengatakan bahawa anda memerlukan storan SSD untuk penulisan pantas agar penyegerakan dapat mengikuti blok terbaru. Secara peribadi, saya dapati storan HDD tidak baik. Namun, jika diberi pilihan, saya pasti akan menggunakan storan SSD.

Untuk pengguna Windows

Untuk akses mudah, saya mengesyorkan agar anda membuat folder untuk menyimpan blockchain. Contohnya, "C: \ EthereumTestnet".

Setelah membuat folder, cuba jalankan arahan berikut:

geth — testnet — data-dir=”C:\EthereumTestnet” — rpc — rpcapi eth,web3,net,personal

Edit: Nampaknya beberapa hujah telah berubah. Sekiranya anda mengalami kesalahan seperti itu "bendera disediakan tetapi tidak ditentukan: -data-dir", cuba ubah nama argumen menjadi - datadir dan bukan data-dir.

Argumen --testnetmenyatakan bahawa kami ingin menyegerakkan ke rangkaian Ropsten. Oleh itu, untuk menyegerakkan mainnet, anda hanya perlu mengeluarkan argumen --testnetdan menukar direktori data. Sebagai contoh:

geth — data-dir=”C:\EthereumMainnet” — rpc — rpcapi eth,web3,net,personal

The --rpchujah membolehkan pelayan HTTP-RPC. Ini membolehkan kita menggunakan perkhidmatan tertentu, seperti yang dinyatakan dalam --rpcapi eth,web3,net,personal.

Setelah memasukkan arahan, anda akan melihat sesuatu seperti ini:

Agar tidak merosakkan blockchain, terutamanya selepas penyegerakan berjam-jam, anda TIDAK harus menutup arahan arahan secara tiba-tiba. Sentiasa hentikan penyegerakan dengan menekan Ctrl + C dan tunggu sehingga Geth mematikan program untuk anda.

Walau bagaimanapun, sukar untuk mengingati semua arahan dan perkhidmatan rpc yang anda perlukan. Itulah sebabnya saya mencadangkan membuat jalan pintas atau fail kumpulan untuk membantu anda.

Cukup buat fail menggunakan editor teks yang anda miliki dan simpan sebagai fail .bat . Contohnya, RunGethTestnet.bat (namanya tidak penting). Salin dan tampal perintah ke dalam fail dan simpan. Kali berikutnya anda perlu menjalankan Geth untuk Ropsten, klik dua kali pada fail tersebut.

Selepas menjalankan Geth, kita harus menjalankan Ethereum Wallet. Oleh kerana kami mahu antara muka mencari lokasi yang tepat di mana kami menyegerakkan fail kami menggunakan Geth, kami melaksanakannya dari konsol.

Sama seperti Geth, saya menyimpan fail batch untuknya juga dengan arahan contoh, seperti yang ada di bawah:

Perhatikan bahawa arahan anda mungkin kelihatan sedikit berbeza dari perintah saya, kerana anda mungkin menyimpan aplikasi anda di direktori lain.

Sebagai alternatif, anda boleh menambahkan aplikasi ke jalan anda.

Argumen --node-datadir="C:\EthereumTestnet"menyatakan di mana saya menyimpan data rantai saya, yang sama persis dengan yang saya nyatakan untuk Geth.

Untuk Pengguna Mac

Agak mudah untuk MacOS, kerana chaindata dimuat turun secara automatik ke perpustakaan dan tidak tersembunyi dari kami. Jadi, kita tidak perlu menentukan direktori data.

Walaupun begitu, saya cadangkan membuat fail skrip untuk memudahkan menjalankan Geth dan Ethereum Wallet.

Catatan: Geth harus berjalan sebelum Ethereum Wallet .

Menjalankan Ethereum Wallet sahaja akan memulakan proses penyegerakan secara automatik kerana secara automatik akan menjalankan klien Geth di latar belakang. Ini mesra pengguna, tetapi tidak membolehkan perkhidmatan RPC yang ingin kami gunakan. Oleh itu, kami ingin memastikan RPC diaktifkan dalam pelaksanaan Geth dan Ethereum Wallet kami.

Beberapa nota

  1. Proses penyegerakan sangat lama, dan boleh memakan masa hingga 2-3 hari. Harap bersabar dan pertimbangkan untuk membiarkan komputer anda dihidupkan semalaman.
  2. Kelajuan penyegerakan bergantung pada kelajuan internet anda, jumlah rakan sebaya, dan kelajuan penulisan pemacu storan anda.
  3. Oleh kerana data disimpan dalam blok dan dihubungkan bersama, korupsi dalam satu blok dapat merosakkan seluruh rangkaian data. Ini berpotensi membazirkan usaha anda dalam menunggu hari untuk menyegerakkan simpul. Oleh itu, sangat penting untuk mematikan Geth anda dengan betul. Dalam kes tertentu, anda mungkin mahu mundur. Tetapi pencegahan lebih baik daripada penawar di sini.
  4. Bar kemajuan pada Ethereum Wallet anda TIDAK tepat. Mengandalkannya akan memberi anda banyak kegelisahan dan kekecewaan.
  5. Geth berjalan di port 30303 untuk mendengar luaran.
  6. Port lalai yang digunakan untuk komunikasi dalaman, misalnya antara dompet dan Geth anda, adalah 8545.

Pastikan port anda ke klien Geth dibuka

Sangat penting untuk memastikan bahawa sambungan ke pelanggan Geth anda tidak terhad. Satu sakit kepala yang sangat saya hadapi adalah membiarkan firewall saya membatasi jumlah sambungan yang saya dapat melalui klien Geth.

Anda dapat melihat masalah ini dengan melihat jumlah rakan sebaya . Sekiranya suhu rendah secara konsisten pada sekitar 1-3 rakan sebaya (sekurang-kurangnya setengah jam), ada kemungkinan peluang hubungan anda terhad. Jangkauan sihat melebihi 5 orang sebaya.

Pengguna MacOS

Semasa anda menjalankan Geth, semestinya ada pemberitahuan untuk anda membenarkan sambungan. Sudah tentu, klik pada "Benarkan.

Untuk memeriksa, pergi ke Sistem Pilihan> Sistem & Privasi.

Di bawah tab Firewall , klik pada Pilihan Firewall .

Pengguna Windows

Untuk membuka port anda, pergi ke Control panel> System and Security> Windows defender firewall.

Klik pada tetapan Lanjutan . Pada panel sisi, klik pada Peraturan Masuk .

Port masuk yang anda mahu buka adalah TCP dan UDP 30303. Oleh itu, saya membuat satu peraturan untuk TCP 30303 dan satu lagi untuk UDP 30303.

Anda mungkin juga perlu membuka port keluar untuk TCP 30303.

Perhatikan bahawa mana-mana firewall / anti-virus pihak ketiga mungkin membataskan hubungan anda juga, jadi pastikan untuk mengkonfigurasinya dengan sewajarnya.

Lampirkan ke Geth

Untuk mendapatkan lebih banyak maklumat mengenai nod anda, anda dapat melampirkan ke klien Geth dan melaksanakan perintah dengannya menggunakan perkhidmatan RPC.

Inilah kaedah mudah untuk memeriksa status penyegerakan anda: pasangkan dengan pelanggan dengan memasukkan arahan berikut pada terminal / konsol yang berasingan.

geth attach //127.0.0.1:8545

Sekali lagi, anda mungkin mahu menyimpannya dalam fail kumpulan / skrip untuk kemudahan anda sendiri.

Setelah menjalankan perintah, anda akan melihat sesuatu seperti ini.

Taip web3.ethdan anda mesti melihat banyak maklumat. Untuk mendapatkan maklumat khusus mengenai penyegerakan, ketik web3.eth.syncingsebaliknya.

Seperti yang anda lihat, bar kemajuan yang terdapat di bahagian atas Dompet Ethereum hanyalah perbandingan antara Blok tertinggi dan Blok semasa . Sebagai highestBlock dikenali ke komputer anda mungkin tidak blok tertinggi sebenar, bar kemajuan mungkin tidak menggambarkan kemajuan yang sebenar.

Sebenarnya, Blok tertinggi dan Negara yang dikenali akan terus meningkat semasa anda menyegerakkan nod anda.

Beberapa titik akhir

Oleh kerana teknologinya berubah dengan cepat, selalu gunakan versi pelanggan dan dompet yang stabil untuk mengelakkan diri anda lebih pening.

Juga, perhatikan bahawa selalu ada penyelesaian untuk masalah yang anda hadapi. Apabila anda menghadapi masalah penyegerakan, anda boleh mencuba mencari penyelesaian kerana kemungkinan anda bukan yang pertama menghadapi masalah yang sama.

Dan selalu ingatkan diri anda bahawa anda tidak perlu menyegerakkan nod untuk mengembangkan kontrak pintar. Melakukannya hanya membantu memudahkan anda memahami persekitaran dan juga proses perkembangan anda. Oleh itu, jangan mengalahkan anda jika anda menghadapi masalah pada awal proses pembangunan.

Untuk lebih banyak artikel seperti itu, ikuti saya atau lawati laman web saya - Perspektif pemaju.