Friday, April 6th 2018

Confessions of a Crypto Miner: Green(er) Mining

Editorial
Welcome back to "Confessions of a Crypto Miner," my column about a crypto miner from 2013 trying to get caught up with the latest standards. I'm presently mining and reporting to you from a dual-GTX 1080 based rig mining zCash. Today, I'm going to talk about saving energy and reducing a miner's impact on the environment. How can you do that, you ask? Simple: Consolidation.

Mining inherently consumes a lot of energy, but a lot of things we do as tech geeks are actually not all that efficient. Case in point, my NAS I've had for years. Old Lenovo server-something or another, modded pretty hardcore, but still energy-drinking to the core. It's based around a Core 2 Quad and uses around 400W of power on its own when not doing much of anything more than being an NAS. It features big RAID arrays and big blower fans, none of which I really need in this day and age and all of which consume power. I've been thinking since I got my Ryzen quad core mining rig: What's to stop me from mining and doing my NAS stuff on the same rig, thus saving power? As it so happens, not much. My miner has the same memory size as the old Lenovo DDR2 solution and a far more energy efficient, likely faster CPU. So I can fold that 400 W server into my 550 W of mining, far reducing my footprint in a green sense. Let's get to it.

There are some caveats of course (aren't there always?) I don't have enough CALs to use Windows Server (my license is an old Academic one), so we'll be going Linux. In this case, Gentoo, since it's what I'm familiar with and I like its performance when you get it going.

Gentoo is a source-based distribution, so if you want to follow along, I suggest a strong understanding of Linux-based systems. Most of what you need can be found in the Gentoo Handbook at Gentoo.org. I will glance over a lot of the low-level stuff and just briefly describe my process for posterity.

I started off with a basic system AMD64 install with Ryzen optimizations to the make.conf, and then I proceeded to follow the respective guides for X11, the NVIDIA binary driver, and XFCE. For XFCE, I set it up with very little installed and minimalist to the core. I set up a browser (Firefox), a process manager for killing processes in the GUI (mate-system-manager), and a GUI package manager for Gentoo's portage package management system called "porthole" (clever, eh?). I also installed a binary remote desktop management system (RealVNC), for which I already have a license. Its advantage is that is supports native encrypted connections, but you can find other open source solutions if you dig around; they just require more setup. I also installed Samba for the NAS functions. Samba is the Linux equipvalent of Windows File Sharing and is compatible with the latter. Configuring Samba's smb.conf is beyond the scope of this article, but it's really not hard, especially if you are just doing a "family folder" style setup like me.

Once all that is done, I have a desktop that looks roughly like this:
The next thing to do, is get our miners and wallets functioning again. Storing your coins on the machine that mines them is not exactly the best security practice, but it does save energy vs firing up another machine, and the risk can be mitigated by periodic cash-out or transfer to cold storage (paper for me). Again, in this case I am choosing the energy saving option, and I am powering down a small highly firewalled system that in the past ran wallet software 24/7. Between all this, the miner at 550W is now running virtually for free if you count all the energy reductions, so why don't we CPU mine while we are at it? We will not just load our typical mining setup of EWBF's CUDA-based Zcash miner, but also xmr-stak, a highly capable Monero miner for the CPU. It will use half our CPU, or 2 cores, leaving enough power for the wallets and NAS to function. In an earlier column I talked about Monero not being worth it, but I feel it might be worth giving it another try, to see what comes out of it.

First, let's start with the wallets. We grab our wallet files and install the official Zcash client from source using the guide at the Zcash site. It's a simple CLI client, so I also load a Java-based SwingUI GUI from GitHub to pipe the commands and make management easier (note, the client is marked deprecated, but works fine). All this is compiled relatively easily in Gentoo, which is pretty much a complete development environment having gotten this far. The only thing I needed to emerge (install) to complete this is oracle-jdk-bin, which is the package for the Java 8 SDK needed to compile the SwingUI based GUI.

The GUI, when finished, imports the wallet fine and looks like this (probably time for a weekly cash-out, speaking of which!):
Next, I install Electron Cash, a Bitcoin Cash light client wallet (I seldom hold Zcash, and this is where most of my coin is now for lower fees and higher liquidity at cash-out). It installs relatively easily as well, as it's based on Python and its dependency list is easily installable via porthole, the GUI package manager we already met earlier.

Note that there is an ebuild (Gentoo Package) for Electron Cash. Don't use it. It's woefully out of date and has dangerous security loopholes. Why it isn't blocked on the Gentoo repository is beyond me.

Now, with those set up, we can download the binary EWBF's CUDA miner, which installs easily because it is binary, and then xmr-stak, whose build guide is easy to follow and also installs easily and with few dependencies besides openssl and obvious things. We have them installed now and point them to our pools. They are waiting to fire up, but I have one more thing I want: Wine, which is a Windows emulator for Linux.

Why do I want Wine? Because I have a funky old UPS that carries my miner through short circuits that plague our location. It doesn't run long, but it allows it to shut down properly, and it stops short circuits from resetting everything. It's an Opti-UPS GS1100B, which is a known Windows-only non-HID compliant piece of crap that requires some Windows software to function. The Windows software communicates over a virtual COM port on USB, which surprisingly, the latest Wine supports. We emerge (install) it, and check .wine/dosdevices to make sure the mappings are right. We find our USB UPS COM port present on COM5 as a symbolic link to /dev/ttyUSB0
Feeding that to the software gets us some figures:
It passes a self-test, as evidenced in this screenshot; communication is thus working (note the load meter does not work during a self-test. It is normally at about 80%):

Now, finally, it's time to kick things online. I write some startup scripts, assign them to startup via settings-manager - Session and Startup in Xfce, and reboot. I am greeted by the following:
We're mining happily, and the file server works fine. I'm even hosting a DLNA server on the side. I guess what I want you to take away from this as a miner is, your miner can do more than mining cryptocurrency. Consolidate. Just because we're miners doesn't mean we can't "think green." That's silly. Turn some things off and reduce your power and carbon footprint to compensate for the big one you'll be making while mining. Then, the next time someone calls you "mining scum" and accuses you of polluting the planet more than the average geek, you can happily prove them wrong. And why not? At least for a small-time miner, it isn't hard to do, it's fun, and that's part of why we IT types do everything we do, is it not? This guide isn't the only way, but there certainly are ways to accomplish what I'm saying. Get to it!
Show 45 Comments