AuroraDAO's Aurad on an arm64 Raspberry Pi 3B+20th January 2019
Recently, AuroraDAO launched their tier 3 staking for their decentralised exchange, IDEX.
The software required to participate in their staking system is relatively simple; it takes the form of a docker-compose recipe that launches three containers, namely Parity (in light mode), MySQL 5.7 (not MariaDB) and a container running their software on Node. I tried running this software on an Intel i5 NUC thinking that it'd require some reasonable hardware to work properly. Some users started asking if it was possible to run aurad on low-power hardware, like a Raspberry Pi. Initially I thought this wasn't viable... but then I started looking at the utilisation on my i5 NUC and realised it had barely any utilisation - staking on a Pi might be viable after all...
As an experiment I set about trying to get aurad running on an Asus Tinkerboard, which is a 32-bit quad-core arm device with 2GBs of RAM (1.8 GHz default clock). The result was successful and aurad runs really well on it. I then rebuilt the aurad setup on a testing image of Debian's Buster release, which is arm64... and surprisingly that also works really well. Amazingly the arm64 architecture has better support than armhf (32 bit) in a number of areas.
So for those who are willing to get their hands a little dirty, here's everything you need to get started with aurad and a Raspberry Pi 3B:
You'll need my spiffy ready-to-go Raspberry Pi image : https://storage.googleapis.com/aquarat-general/aurapi.img.xz
Decompress and write the image to a suitable microSDXC card. You'll need something that's at least 32GBs in size. I based my tests on a Samsung EVO+ 128GB microSD card. Note that your Pi3 will have to work very hard to run this image, so make sure it has a good quality power source. I've been powering mine through the headers directly.
Once the image has been decompressed and written you can stick the SD card into your Pi and power it up. It'll get an IP from your DHCP server (I haven't tested it with wifi). Once it has an IP, log in :
ssh debian@yourpi (password raspberry).
Once you're logged in, configure aurad :
Once configured, start aurad :
It'll take a little while for the containers to start and then it'll take some time for the machine to synchronise. You can check the sync progress by running :
docker logs -f docker_aurad_1
The image supplied here relies on some modifications to Aurora's script. The docker-compose file has been modified to use mariadb's dockerhub repository (specifically MariaDB 10.4), as MariaDB supports arm64 (and is better :P). Aurad's docker image has an amd64 dependency hard-coded, so this was rebuilt with a modified dockerfile which uses an armhf (32 bit) dependency. Parity only supports x86_64 as a target architecture on their dockerhub repository, so I rebuilt this using a customised dockerfile (rebuilt on an arm 32bit device... it took a while).
It should go without saying that Aurora doesn't support this image and that by using this image you're trusting I haven't embedded something funky in the images. Also, updating the containers will involve a little bit of fun.
You shouldn't need a heatsink for your Pi; my Pi says it's running at 55 degrees C currently (in a 26 degree C room).
The major resource hog is Parity, which is responsible for around 20% of the machine's RAM usage. I suspect moving Parity to another ARM SBC would free up a lot of resources, improve stability and would still use far less electricity than a "normal" x86 machine (10W vs 100W?).
Post image taken from Wikipedia which in turn got it from Flickr, created by ghalfacree at https://flickr.com/photos/120586634@N05/39906369025. It was reviewed on 16 March 2018 by FlickreviewR 2 and was confirmed to be licensed under the terms of the cc-by-sa-2.0.