Dogecoin Node on a Raspberry Pi
Dogecoin is perhaps the friendliest cryptocurrency on the internet, and has built a strong community that is open and welcoming to beginners. Based on the Doge meme popular at its time of creation, it thrives as a currency for showing appreciation for content made online. Dogecoin donations have sponsored a NASCAR driver and the Jamacian bobsled team. Even Elon Musk has tweeted about his love for Dogecoin. Users regularly give each other small tips of a few Dogecoins to thank them for interesting or helpful content. This community was essential in teaching me how to use cryptocurrencies, and due to its low price and low transaction cost, it was the perfect way to experiment with selling and exchanging currency. The community even set up "faucets" that would pay you a small amount of Dogecoin in exchange for watching a few video advertisements.
The Dogecoin community, however, is suffering from a network problem: there are only a few full nodes operational to keep the entire network afloat. A full node keeps a complete copy of the entire blockchain, and verifies its accuracy, whereas partial nodes (usually wallets) only look at the most recent block. Most cryptocurrencies rely on miners to operate full nodes, but because Dogecoin is not profitable to mine anymore, the number of miners have plummeted, and with them, the number of full nodes. At time of writing, there are only 426 full nodes online. I don't plan on doing any mining, but I wanted to give back to this community that has helped me. I decided that I wanted to run a full node.
Of course, I could run a full node on one of my PCs, but that means that the node would be available only intermittently when my PC is on. I wanted to build something more permanent with dedicated hardware that could be on and available 24/7. Because I'm not planning to do any mining, the compute requirements are minimal, and storage is the main limitation. A Raspberry Pi should be perfect.
I decided to use a Raspberry Pi 4 with a 128GB SD card as my node. I had heard some concerns that given the high number of reading and writing operations that a node undergoes, SSDs and SD cards have limited lifespans in full nodes. However, given the difficulty of booting from external media (I couldn't get it working right with my setup), I decided that it would be better to just image the SD card once it was fully prepared, and then reflash a new SD card when it breaks.
Installation was pretty straightforward, thanks to an excellent installation guide from Reddit user shermand100. However, configuration was much more difficult. The client installed, but it was unable to connect to other nodes in the Dogecoin Network. Port forwarding, rebooting, and playing with server settings didn't have any effect. The traffic wasn't getting blocked: instead it seems that my node just didn't know which servers to reach. I decided to look up other full node peers and manually add their IP addresses to my config file. Fortunately, one of these nodes accepted my connection, and I was on the network!
My node spent two days downloading the backlog of blocks (hundreds of gigabytes of data), first at tremendous speeds, but then slower as it worked its way through most of the backlog, and started seeding more than it leeched.
Leeching (above), Seeding (below)
Now that the node has downloaded the backlog and synchronized with the other nodes in the network, I can image the SD as a backup, and leave my Raspberry Pi running 24/7, giving back to the awesome Dogecoin community.