I'm back. If you read my last article, then you know that Nimbus is not just for your desktop. That said, you're probably asking yourself, "Why do I care about running Nimbus on my phone inside a Linux sandbox?" Running an Ethereum 1.0 node on an ARM device is so 2017. And, given the current size of the Ethereum 1.0 chain (2.12GB as of this writing), you're probably right.
What you're really asking is, "How can I get in the Eth 2.0 game? What I really want to do is run a Nimbus beacon node on the new open testnets!" If you asked this question, you have come to the right place.
Note: Before diving into the fun, I want offer a friendly reminder that the steps below require downloading a rather large amount of data so only do this when your Android device is connected to WiFi if you have a limited cellular data plan.
Building Nimbus for Eth 2.0 on Android
Before we go anywhere, follow the Termux and Ubuntu on Termux sections of my previous article to get your Linux sandbox ready to play in.
Build Nimbus for Eth 2.0
Before we get started, start the Termux app and then open up the Ubuntu proot as discussed in the previous article.
Like with Nimbus for Eth 1.0, we have a few external dependencies to grab first.
apt install build-essential, git golang-go libpcre3-dev
Now, let's check and make sure we have the right version of Go installed since Nimbus requires Go 1.12+.
go version should produce an output of
go version go1.12 or higher. If not, see the bottom of the article for help straightening this out.
Next, clone the Nimbus Beacon Chain repo.
git clone https://github.com/status-im/nim-beacon-chain cd nim-beacon-chain> 
make and Nimbus will compile and build out all the necessary internal Nim dependencies. You should see the below message once everything is done.
Now, like the instructions say, run
make again to actually compile Nimbus for Eth 2.0. Now, go grab a cup of coffee as this will take a while. It took my OnePlus 6T something like 20-30 minutes to finally finish. You should see this output once it's finished.
Running Nimbus for Eth 2.0
Now that we've got Nimbus built, let's explore what you can do with it.
Running the entire Eth 2.0 universe on your own phone
Let's start small. You can run an entire simulated Eth 2.0 testnet on your phone, beacon nodes, validators, Eth 2, oh my!
make VALIDATORS=192 NODES=6 USER_NODES=1 eth2_network_simulation
This command will fire up a local Eth 2 network with 192 validators and 7 beacon nodes, one of which you can bring up on your own to see the sync process in action.
Open a second terminal in Termux, and open the Ubuntu proot in this terminal as well. The below steps will set appropriate environment variables and start up the user beacon node referenced above.
./env.sh ./tests/simulation/run_node.sh 0 #
Here you can see the user node starts up, joins the network, and starts getting blocks to sync the chain.
Running a Beacon Node on the Public Testnet
Now, let's talk to some other nodes.
make testnet0 to fire up your Nimbus beacon node and join testnet0.
Nimbus will prompt you for your Goerli Eth1 private key to to become a validator.
Enter to skip for now as we're just going to run a beacon node.
We're off, genesis block received, block pool up and running, looking for peers.
Now we're making history, syncing blocks, participating in consensus, helping secure the network, enforcing fork choice rules, building the future, all from the comfort of a phone.
Addendum - Help with Go versioning
If for whatever reason,
apt installs a version of Go that's older than 1.12, do the following:
apt remove golang-goto remove the old version that
- Grab the newest version of go here appropriate for your architecture. Given that we're running this on Android, it will most likely be the ARMv6 or ARMv8.
- Follow these instructions to install the newest version of Go and set your