Quante volte avrete sentito parlare dei mitologici full nod di Ethereum, delle loro fantasmagoriche dimensioni, della loro eccezionale difficoltà nell’impostarli, nell’impossibilità di sincronizzarli, delle mostruose macchine necessarie per tenerli on-line e bla bla bla bla bla?
Come al solito si tratta delle solite cavolate dette dai detrattori di Ethereum o da chi semplicemente non si è mai informato al riguardo.
Per far “girare” un full node di Ethereum basta un semplice Raspberry Pi4 (un centinaio di euro e passa la paura nella versione Kit Desktop https://www.raspberrypi.org/products/raspberry-pi-4-desktop-kit/) e seguire, questa guida https://www.reddit.com/r/ethereum/comments/do5xwp/ethereum_on_arm_new_image_for_the_raspberry_pi_4/ 😉

Buon divertimento!

EthRaspbian (ARM7) [1] is a custom Linux image for the Raspberry Pi 4 [2] that runs Geth or Parity Ethereum clients as a boot service and automatically turns the device into a full Ethereum node. The image includes other components of the Ethereum ecosystem such as Trinity, Status.im, Raiden, IPFS, Swarm and Vipnode as well as initial support for Eth2.0 clients.

It also runs on the Raspberry Pi 2/3 but due to hardware limitations these devices are not capable of syncing the blockchain. However, you can run Geth or Parity as light clients or support the Ethereum network by running other key software such as Status.im, Raiden, IPFS or Swarm.

For running a full Ethereum node on ARM64 devices (currently NanoPC-T4 [3] and Rockpro64 [4]), please see the EthArmbian project [5]Features

EthRaspbian Image takes care of everything, from setting up the environment to installing and running the Ethereum software as well as synchronizing the blockchain.

These are the main features:

  • Based on Raspbian [6] Debian Buster
  • Automatically resizes the SD card
  • Partitions and formats the USB SSD drive (in case is detected) and mount it as /home for storing the Ethereum blockchain
  • Creates an Ethereum user account
  • Changes the hostname to something like “ethnode-e2a3e6fe” (HEX chunk based on MAC hash)
  • Enables SSH
  • Automatically reboots once for hostname change, new /home mount point and MicroSD resize to take effect
  • Runs Geth by default as a Systemd service and starts syncing the Blockchain. Systemd monitors the Ethereum client binary and respawns it in case it gets killed or something unexpected happens (such as a reboot)
  • Includes Parity Ethereum client as well so you can switch between both clients
  • Includes other components of the Ethereum framework such as Status.im, Raiden, IPFS and Swarm
  • Includes an APT repository for upgrading Ethereum packages by running apt-get install command (e.g. sudo apt-get install geth)

Ethereum software installed

  • Geth: 1.9.6 (official binary)
  • Parity: 2.5.9 (cross compiled)
  • Swarm: 0.5.2 (official binary)
  • Raiden Network: 0.200.0~rc1 (official binary)
  • IPFS: 0.4.22 (official binary)
  • Status.im: 0.34.0~beta3 (cross compiled)
  • Vipnode: 2.3 (official binary)

Requirements

  • Raspberry Pi 4 model B (4GB)
  • Micro SD Card
  • SSD disk with USB 3.0 (See USB SSD disk section)
  • Power Supply
  • Ethernet cable
  • (Optional but strongly recommended) Case with a heatsink and a fan.
  • (Optional but strongly recommended) 30303 Port forwarding
  • (Optional) USB keyboard, Monitor and HDMI cable (micro-HDMI)

Download and install instructions

Download Raspberry Pi 4 image

https://ethraspbian.com/downloads/image_2019-10-26-EthRaspbian2.0-lite.zip

md5sum 172dd37c30e4ae734ff39b45f5e5a33c

Flashing the MicroSD (Linux command line)

unzip image_2019-10-26-EthRaspbian2.0-lite.zip
sudo dd bs=1M  if=2019-10-26-EthRaspbian2.0-lite of=/dev/mmcblk0 conv=fdatasync status=progress

Once flashed, insert de MicroSD, connect the SSD USB disk (blue port), the ethernet cable and power up the Raspberry.

Disclaimer: Keep in mind that your entire USB disk will be wiped out.

Login info

  • User: ethereum
  • Password: ethereum

For security reasons, you will be prompted to change the password on first login.

For further info regarding installation and usage please visit Ethereum on ARM Github page [1]USB SSD disk

There are 2 options for the SSD storage:

Use a USB portable SSD disk such as the Samsung T5 Portable SSD (as seen on this fantastic step-by-step guide to run a full node on the RPi4 by Grégoire Jeanmart) [7]

Use a USB 3.0 External Hard Drive Case with a SSD Disk. In my case I used a Inateck 2.5 Hard Drive Enclosure FE2011 [8] with a Kingston SSD A400 (480 GB) [9]. Be sure to buy a case with an UAS compliant chip, particularly, one of these: JMicron (JMS567 or JMS578) or ASMedia (ASM1153E)

Keep in mind that you need to plug the disk to a USB 3.0 port (blue)Fast Sync data

These are the numbers of the Raspberry Pi 4 Fast sync:

  • Sync time: 4 days and 2 hours
  • Total state entries downloaded: 391M
  • Total DB size: 178 GB

Other considerations

30303 port forwarding is a must, otherwise, the sync process will be far more slow.

Try to get a case with a fan and a heatsink to prevent CPU throttle (during sync, the temperature can go over 80 ºC without a cooling system). There are lots of cases out there (like this one [10]).

The 2Gb model may work but you probably need to tweak Geth memory usage (I’m a little skeptical here, though). Try to reduce the –cache value in /etc/ethereum/geth.conf file. The swap memory config is in /etc/dphys-swapfile. Feel free to report here your feedback.

Take into account that fast sync depends on several factors: Disk throughput, network bandwidth, RAM memory, disk cache… so total sync time may differ between users. For the Raspberry Pi 4, expect between 3-5 days for the sync process to complete.

It seems that there may be an issue with memory management [11]. I got some errors during the sync process related to RAM (though it doesn’t stop the sync as systemd respawns the process). It turns out that Geth can’t handle 512MB of cache in the RP4 (it is set now to 256MB) while ARM64 devices (with 4GB of RAM as well) run with more than 1GB of cache with no problem whatsoever. In you run into this, please, report here or in Github your feedback.

Finally. A few days ago, at Devcon 5, Joseph Lubin set a goal of 1M developers working on the Ethereum ecosystem by Devcon 6. If this is achievable (I think it is), can we get a fraction of these users to run a full node? It just takes a MicroSD flash…References

[1] https://github.com/diglos/pi-gen

[2] https://www.raspberrypi.org

[3] https://www.friendlyarm.com/index.php?route=product/product&product_id=225

[4] https://store.pine64.org/?product=rockpro64-4gb-single-board-computer

[5] https://github.com/diglos/userpatches

[6] https://www.raspbian.org

[7] https://kauri.io/article/9695fcca217f46feb355245275835fc0

[8] https://www.amazon.com/Inateck-Aluminum-External-Enclosure-Optimised/dp/B0739KPPFF

[9] https://www.amazon.com/Kingston-480GB-Solid-SA400S37-480G/dp/B01N0TQPQB

[10] https://www.youtube.com/watch?v=K2UecGfLPKI

[11] https://github.com/ethereum/go-ethereum/issues/20190

Please follow and like us:
error