Lanjut ke konten utama

Cara mengubah Raspberry Pi 4 Anda menjadi node hanya dengan mem-flash memori MicroSD

klienlapisan eksekusilapisan konsensusnode
Tingkat menengah
EthereumOnArm
r/ethereum(opens in a new tab)
7 Mei 2020
7 bacaan singkat minute read

TL;DR: Nyalakan Raspberry Pi 4 Anda, sambungkan pada kabel ethernet, koneksikan ke diska SSD dan nyalakan perangkat untuk mengubah Raspberry Pi 4 menjadi simpul Ethereum utuh yang menjalankan lapisan eksekusi, atau lapisan konsensus (Rantai Suar / validator)

Pelajari tentang peningkatan Ethereum

Mari mulai dengan latar belakang dulu. Seperti yang Anda ketahui, kami telah mengalami beberapa masalah memori [1] dengan gambar Raspberry Pi 4 karena OS Raspbian masih 32bit [2] (setidaknya pada userland). Sementara kami lebih suka memakai OS yang resmi, kami sampai pada kesimpulan bahwa, untuk menyelesaikan masalah ini, kami perlu beralih ke OS 64bit asli

Disamping itu, klien konsensus tidak mendukung binari 32 bit sehingga menggunakan Raspbian akan memberi pengecualian pada Raspberry Pi 4 untuk menjalankan simpul lapisan konsensus (dan kemungkinan untuk melakukan penaruhan).

Jadi, setelah beberapa kali pengujian kini kami merilis dua gambar berbeda berdasarkan Ubuntu 20.04 64bit [3]: edisi lapisan eksekusi dan lapisan konsensus.

Pada dasarnya, keduanya adalah gambar yang sama dan memasukkan fitur gambar berbasis Raspbian yang sama. Tetapi kedua lapisan itu dipasang untuk menjalankan perangkat lunak lapisan eksekusi atau lapisan konsensus secara bawaan.

Gambar menangani semua langkah penting, dari menyiapkan lingkungan dan memformat cakram SSD sampai menginstal dan menjalankan perangkat lunak Ethereum maupun memulai sinkronisasi blockchain.

Fitur utama

  • Berbasis Ubuntu 20.04. 64bit
  • Membuat partisi dan memformat disk USB secara otomatis
  • Menambahkan memori pertukaran (modul kernel ZRAM + satu file pertukaran) berbasis kinerja Armbian [7]
  • Mengganti nama host dengan sesuatu seperti “ethnode-e2a3e6fe” berdasarkan hash MAC
  • Menjalankan perangkat lunak sebagai layanan systemd dan memulai sikronisasi Blockchain
  • Memasukkan repositori APT untuk menginstal dan meningkatkan perangkat lunak Ethereum
  • Memasukkan dasbor pengawasan berbasis Granfana / Prometheus

Perangkat lunak yang disertakan

Kedua gambar memiliki paket yang sama, perbedaan keduanya hanya bahwa versi eksekusi menjalankan Geth secara bawaan dan versi konsensus menjalankan rantai suar Prysm secara bawaan.

Klien eksekusi

  • Geth [8]: 1.9.13 (binari resmi)
  • Parity [9]: 2.7.2 (terkompilasi silang)
  • Nethermind [10]: 1.8.28 (terkompilasi silang)
  • Hyperledger Besu [11]: 1.4.4 (terkompilasi)

Klien konsensus

  • Prysm [12]: 1.0.0-alpha6 (binari resmi)
  • Lighthouse [13]: 0.1.1 (terkompilasi)

Kerangka kerja Ethereum

  • Swarm [14]: 0.5.7 (binari resmi)
  • Raiden Network [15]: 0.200.0~rc1 (binari resmi)
  • IPFS [16]: 0.5.0 (binari resmi)
  • Statusd [17]: 0.52.3 (terkompilasi)
  • Vipnode [18]: 2.3.3 (binari resmi)

Panduan instalasi dan penggunaan

  • Raspberry 4 (model B) - 4GB
  • MicroSD Card (minimum 16 GB Class 10)
  • Disk USB 3.0 SSD (lihat bagian penyimpanan)
  • Catu daya
  • Kabel ethernet
  • Penerusan port 30303 (lapisan eksekusi) dan penerusan port 13000 (lapisan konsensus) [4]
  • Kasing dengan pembuang panas dan kipas (opsional tapi sangat disarankan)
  • Keyboard USB, Monitor, dan kabel HDMI (mikro-HDMI) (opsional)

Penyimpanan

Anda akan memerlukan SSD untuk menjalankan klien Ethereum (tanpa drive SSD sama sekali tidak mungkin menyinkronkan blockchain Ethereum). Ada 2 opsi:

  • Gunakan disk SSD portabel USB seperti SSD Portabel Samsung T5.
  • Gunakan Kasing Hard Drive Eksternal USB 3.0 dengan Disk SSD. Dalam kasus kami, kami menggunakan Inateck 2.5 Hard Drive Enclosure FE2011. Pastikan membeli kasing dengan chip yang sesuai dengan UAS, secara khusus, salah satu dari ini: JMicron (JMS567 atau JMS578) atau ASMedia (ASM1153E).

Dalam kedua kasus, hindari membeli disk SSD berkualitas rendah karena ini adalah komponen kunci node Anda dan bisa secara drastis memengaruhi kinerja (dan waktu sinkronisasi).

Ingatlah bahwa Anda harus menyambungkan disk dengan porta USB 3.0 (biru)

Pengunduhan dan penginstalan gambar

1. Unduh gambar lapisan eksekusi dan konsensus

Unduh gambar lapisan eksekusi(opens in a new tab)

sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c

Unduh gambar lapisan konsensus(opens in a new tab)

sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e

2. Flash gambarnya

Masukkan microSD dalam Desktop / Laptop Anda dan unduh failnya (lapisan eksekusi, misalnya):

wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip

Catatan: Jika Anda tidak nyaman menggunakan baris perintah atau jika Anda menjalankan Windows, Anda bisa menggunakan Etcher(opens in a new tab)

Buka terminal dan periksa nama perangkat MicroSD Anda yang menjalankan:

sudo fdisk -l

Anda akan melihat perangkat bernama mmcblk0 atau sdd. Ekstrak dan flash gambarnya:

unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync

3. Masukkan MicroSD ke dalam Raspberry Pi 4. Sambungkan kabel Ethernet dan pasang disk SSD USB-nya (pastikan Anda menggunakan porta biru).

4. Nyalakan perangkatnya

OS Ubuntu akan melakukan boot up dalam waktu kurang dari satu menit tapi Anda harus menunggu kira-kira 10 menit untuk memungkinkan skrip melakukan tugas yang diperlukan guna mengubah perangkat menjadi node Ethereum dan melakukan reboot Raspberry.

Tergantung pada gambarnya, Anda akan menjalankan:

  • Klien eksekusi: Geth sebagai klien bawaan menyinkronkan ke rantai blok
  • Klien konsensus: Prysm sebagai klien bawaan menyinkronkan rantai suar (jaringan percobaan Goerli)

5. Masuk

Anda bisa masuk melalui SSH atau menggunakan konsolnya (jika Anda memiliki monitor dan keyboard yang terpasang)

User: ethereum
Password: ethereum

Anda akan diminta mengubah kata sandi saat masuk pertama kali, sehingga Anda perlu melakukan log masuk sebanyak dua kali.

6. Buka porta 30303 untuk Geth dan 13000 jika Anda menjalankan rantai suar Prysm. Jika Anda tidak tahu caranya, cari di google "port forwarding" diikuti dengan model perute Anda.

7. Dapatkan output konsol

Anda bisa melihat apa yang terjadi di balik layar dengan mengetik:

sudo tail -f /var/log/syslog

Selamat. Anda sedang menjalankan node Ethereum penuh pada Raspberry Pi 4 Anda.

Menyinkronkan Blockchain

Sekarang Anda perlu menunggu blockchain disinkronkan. Pada kasus lapisan eksekusi, ini dapat memakan waktu beberapa hari tergantung dari beberapa faktor, tetapi Anda dapat berharap dalam 5-7 hari.

Jika Anda menjalankan lapisan konsensus jaringan percobaan Goerli Anda dapat mengharapkan 1-2 hari waktu sinkronisasi Rantai suar. Ingatlah bahwa Anda harus menyiapkan validatornya nanti untuk memulai proses penaruhan. Cara menjalankan validator lapisan konsensus

Dasbor pengawasan

Untuk rilis pertama ini, kami memasukkan 3 dasbor pengawasan berbasis Prometheus [5] / Grafana [6] untuk mengawasi data node dan klien (Geth dan Besu). Anda bisa mengaksesnya melalui browser web:

URL: http://your_raspberrypi_IP:3000
User: admin
Password: ethereum

Beralih klien

Semua klien beroperasi sebagai layanan systemd. Ini penting karena jika masalah muncul, sistem akan memunculkan kembali proses secara otomatis.

Geth and Prysm beacon chain run by default (depending on what you are synchronizing, execution layer or consensus layer) so, if you want to switch to other clients (from Geth to Nethermind, for instance), you need to stop and disable Geth first, and enable and start the other client:

sudo systemctl stop geth && sudo systemctl disable geth

Perintah untuk mengaktifkan dan memulai setiap klien eksekusi:

sudo systemctl enable besu && sudo systemctl start besu
sudo systemctl enable nethermind && sudo systemctl start nethermind
sudo systemctl enable parity && sudo systemctl start parity

Klien konsensus:

sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beacon
sudo systemctl start lighthouse && sudo systemctl enable lighthouse

Mengubah parameter

File config klien terletak di direktori /etc/ethereum/. Anda bisa mengedit file ini dan memulai ulang layanan systemd untuk menerapkan perubahan. Pengecualiannya hanya pada Nethermind, yang selain itu, memiliki file config Jaringan Utama yang terletak di sini:

/etc/nethermind/configs/mainnet.cfg

Data klien blockchain disimpan pada akun beranda Ethereum sebagai berikut (perhatikan tanda titiknya sebelum nama direktori):

Lapisan eksekusi

/home/ethereum/.geth
/home/ethereum/.parity
/home/ethereum/.besu
/home/ethereum/.nethermind

Lapisan konsensus

/home/ethereum/.eth2
/home/ethereum/.eth2validators
/home/ethereum/.lighthouse

Nethermind dan Hyperledger Besu

Dua klien eksekusi hebat berikut menjadi alternatif yang bagus untuk Geth dan Parity. Semakin beragam jaringan, akan semakin baik, sehingga Anda bisa mencobanya dan berkontribusi pada kesehatan jaringan.

Keduanya memerlukan pengujian lebih lanjut, silakan dicoba dan laporkan umpan balik Anda.

Cara menjalankan validator konsensus (penaruhan)

Setelah jaringan percobaan rantai suar Goerli disinkronkan, Anda dapat menjalankan validator dalam perangkat yang sama. Anda perlu mengikuti langkah partisipasi ini(opens in a new tab).

Pertama-tama, Anda perlu membuat akun secara manual dengan menjalankan binari "validator" dan menyiapkan kata sandi. Setelah Anda telah menyelesaikan langkah ini, Anda bisa menambahkan kata sandi ke /etc/ethereum/prysm-validator.conf dan memulai validator sebagai layanan systemd.

Umpan balik dihargai

Kami berusaha keras menyiapkan Raspberry Pi 4 sebagai node Ethereum penuh, karena seperti yang kita ketahui basis pengguna perangkat ini yang besar bisa berdampak positif pada jaringan.

Tolong diperhitungkan, karena ini adalah gambar pertama berbasis Ubuntu 20.04, jadi mungkin ada beberapa bug. Jika ada, ajukan masalah di GitHub(opens in a new tab) atau hubungi kami di Twitter(opens in a new tab).

Referensi

  1. geth berulang kali gagal berfungsi dengan SIGSEGV(opens in a new tab)
  2. https://github.com/diglos/ethereumonarm(opens in a new tab)
  3. https://ubuntu.com/download/raspberry-pi(opens in a new tab)
  4. https://wikipedia.org/wiki/Port_forwarding(opens in a new tab)
  5. https://prometheus.io(opens in a new tab)
  6. https://grafana.com(opens in a new tab)
  7. https://forum.armbian.com/topic/5565-zram-vs-swap/(opens in a new tab)
  8. https://geth.ethereum.org(opens in a new tab)
  9. https://github.com/openethereum/openethereum(opens in a new tab) * Perhatikan bahwa OpenEthereum telah menjadi usang(opens in a new tab) dan tidak lagi dipertahankan. Gunakan dengan hati-hati dan sebaiknya beralih ke implementasi klien yang lain.
  10. https://nethermind.io(opens in a new tab)
  11. https://www.hyperledger.org/projects/besu(opens in a new tab)
  12. https://github.com/prysmaticlabs/prysm(opens in a new tab)
  13. https://lighthouse.sigmaprime.io(opens in a new tab)
  14. https://ethersphere.github.io/swarm-home(opens in a new tab)
  15. https://raiden.network(opens in a new tab)
  16. https://ipfs.io(opens in a new tab)
  17. https://status.im(opens in a new tab)
  18. https://vipnode.org(opens in a new tab)

Terakhir diedit: @nixorokish(opens in a new tab), 17 April 2024

Apakah tutorial ini membantu?