I recently had an opportunity to try Algorand’s BetaNet. Similar to the TestNet, the BetaNet is a place for developers to experiment. Unlike the TestNet where nodes run stable code, the BetaNet runs with features not yet on the live network.

For good instructions from the The Algorand team see official BetaNet docs and get help when needed at the BetaNet forum.

My notes (this post) may help, if you’re setting up a short-lived node for local development or testing.

BetaNet Build

Ensure the Algorand tools are built for compatibility with BetaNet. If building source, use the rel/beta branch. Use algod -v to check:

$ algod -v
4295032836
1.1.4.beta [rel/beta] (commit #e8ef805d)
go-algorand is licensed with AGPLv3.0
source code available at https://github.com/algorand/go-algorand

BetaNet Configuration

I built the tools from souce, so my paths to the betanet config files differ from the instructions on algorand.org. In my case, code is in $HOME/gopath/algorand/src/.

I made a directory $HOME/betanet.data/ to store configuration. Here’s how I first set it up:

cp $HOME/gopath/algorand/src/github.com/algorand/go-algorand/installer/genesis/betanet/genesis.json $HOME/betanet.data/
cp $HOME/gopath/algorand/src/github.com/algorand/go-algorand/installer/config.json.example $HOME/betanet.data/config.json

Important: Specifically for BetaNet, manually edit config.json, changing “<network>.algorand.network” to “<network>.algodev.network”.

Data Directory

As our node syncs with the network, it’s going to save a lot of data to disk. Algorand is fast, so our writes must be fast to stay in sync. Also, we want to avoid a lot of churn on the disk of our development environment. Both of these concerns can be addressed by storing data on a RAM disk rather than physical disk.

Examples in the official docs put data in $HOME/node/data, so let’s do the same.

First, setup a RAM disk:

sudo mount -t tmpfs -o size=2g tmpfs ~/node/data/

(Two gig is a pretty arbitrary choice. It appears that algod will consume about as much space as you allow it.)

Next put the config files into the RAM disk:

cp $HOME/betanet.data/* $HOME/node/data/

That’s it. $HOME/node/data is set up.

Start Algorand Node

From here we follow the official instructions.

cd $HOME/node
goal node start -d data

It can take a little while to sync. Hopefully the RAM disk makes this faster than it would be otherwise.

I used watch with goal node status to keep an eye on it.

watch -d goal node status -d data

Dont’ be fooled by Has Synced Since Startup: false. Apparently, it never shows true.

Stop Algorand Node, Cleanup

To shutdown cleanly, stop algod:

goal node stop -d data`

Save data to more permanent disk, before unmounting RAM disk:

rsync -rv data/* $HOME/betanet.data
sudo umount data