How to test the latest DigiByte on Windows

Josiah Spackman
10 min readFeb 12, 2019

--

A quick guide for those who want to build from source code, specifically to help test the upcoming 6.17.2

NOTE: As of 20/2/2019 the branch 6.17.2 has been created with all the improvements from Bitcoin Core 0.17.1 merged, and although the information in this guide is predominantly universal, this has now been updated from references of 6.17.1 to 6.17.2 where applicable.

This guide can be followed by anybody who is even semi proficient with the Google-machine to fill in the blanks (IF there are even any at all), because I’m mostly going to focus on the “how to build DigiByte”, though I’ve tried to be as complete as is reasonably possible.

This is written with Windows users in-mind, but if you’re clever enough that you’re already running Linux, just skip the virtualization part. Unfortunately OSX users are out of luck, I don’t have a Mac and can’t write a guide for it without one.

What you’ll need:

Any half-decent computer should suffice. The more RAM the better, 8GB would be preferred. 10GB-ish of HDD space should be more than ample.

First, grab yourself VirtualBox. This is what you’ll run Linux inside of, save you having to do a full install. Download from https://www.virtualbox.org/wiki/Downloads the one that says “For Windows hosts”. Run through the installation and reboot if asked.

Next you’ll want to get Debian 9 (Stretch) “netinst” (Internet install) CD:
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/

Current version is debian-9.7.0-amd64-netinst.iso and it’s approx 270MB

In VirtualBox, you’ll want to make a new VM, call it whatever you want, choose Linux, Ubuntu, and follow the prompts:

Time to make the VM

The next part depends on how much RAM you can spare:

You DONT want to do 1024MB, it’s not really enough

If you can only do 2048, that’s fine. If you can spare 4096, that’s even better.

Click “Next” a bunch of times for the defaults with the HDD etc, 10GB is sufficient for what we’re doing (Just building).

I also find it easiest if you then go and edit the Settings for the VM before you power it up. Do this by clicking on it and going to Settings.

Networking

Under Network, change from NAT to “Bridged Adapter”. This will make it easier for you to get the files off later.

Installing Debian 9 — “Stretch”

Choose your language (disclaimer: This guide expects English coz it’s all I speak). Choose the United States for the location because it doesn’t really matter too much:

Choosing your location in Debian9

Hit Enter for the Keyboard layout, the default one it detects is likely fine. Give it a few seconds to run through a bunch of auto-configure things.

It will ask you for a hostname, ‘debian’ is fine. Leave the Domain Name blank too. Enter a password for the root user, ‘password’ is fine if you’re not creative, as it’s only going to be used privately to build the DigiByte Core software.

It doesn’t really matter what you put in there, just make sure to remember it

Enter the full name for your user as “DigiByte” just for simplicity sake, then the username of “digibyte” should be auto-populated:

Choosing the users name

Again, enter a password for the user, it can be the same as before, it doesn’t really matter.

Choose your timezone, again this doesn’t really matter too much.

When prompted, choose the “Guided — use entire disk” option:

Partitioning, we want it to be automatic

It’s going to tell you that the disk will be erased, this is OK because it’s the “virtual disk” inside of your PC, not your full hard drive. You don’t have to worry about your data being wiped.

Choose “All files in one partition (recommended for new users)”. Hit Enter a couple of times to write the changes to your virtual hard disk, and change it to “Yes” when prompted to do the final confirmation:

Yes we want to write these changes to the disk

It will go through the basic installation and then ask if you want to insert another CD / DVD, just choose “No” and continue.

It will ask where you want to configure the package manager for, choose your local country so you get the fastest downloads possible:

Mirror selection, choose something this time around that’s close to you

Choose any of the available mirrors, leave the proxy information blank, then let it do a little more auto-configuration.

You can choose to participate in the anonymous / automated package usage survey if you want, or not, it doesn’t really matter.

When prompted to choose the software, you want to untick the Desktop environment, the Print Server, and just choose the SSH server + standard system utilities:

Package selection

Let it then go through and do the installation, this should only take 30 seconds on a fast PC.

When prompted, choose “Yes” to install GRUB onto the Master Boot Record. It will ask you to choose your hard disk, push the down key and choose /dev/sda or otherwise you’ll have to type it manually (And we don’t want that):

Installing the boot-loader for your virtual linux

It will then tell you the installation is finished, hit “Continue” and it will restart.

You’ll then be greeted with a login prompt:

Ready for you to log in to the new virtual Linux system

Enter your username from before (likely “digibyte”) and the password. Note that it won’t show you the “***s” when you’re entering your password, this is fine.

You then want to type:

ip addr

This will show you the IP address of the system, which we’re going to use to log in to through SSH. This is a remote ‘terminal’ system, so that you can copy / paste in to it, which is going to be essential as you’ll find out soon enough:

Note down what it says for enp0s3’s “inet” address, in my case it’s 192.168.122.73:

Your IP address is ….

Now, download PuTTY: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

The “putty.exe” works just fine, you don’t need to get the installer. Fire it up and enter the IP address your enp0s3 showed in VirtualBox:

Connecting to the server

Once you’ve typed in the IP address as shown, hit Enter or click “Open”.

It will prompt you with this alert

It’s going to give you an alert to say that it’s never connected to this server before, this is again fine for you to hit “Yes” and carry on.

Again, enter your username (“digibyte”) and password, and you’re now logged in and ready to proceed:

All logged in remotely and ready to go

So, you can now ignore VirtualBox, we’re going to do the rest straight from PuTTY so that we can copy / paste in to it.

You can paste, by right-clicking on the black terminal space. This will paste in whatever you have in your clipboard.

Start by copy / pasting the following, just so you’re aware of how it works:

su -

This is basically telling the system “I want to start doing things with Admin privileges”.

Enter your the root user password that you first set during installation.

Now we’re going to first of all update the list of software available for Debian to install on the system:

apt-get update

Then you need to run this to install a bunch of needed programs in order to make the DigiByte Core software:

apt-get install git build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-thread-dev libqt5gui5 libqt5core5a libqt5dbus5 libprotobuf-dev libboost-program-options-dev curl nsis mingw-w64

This will take a couple of minutes to go through and download the additional tools to compile the DigiByte Core software. Go make a coffee or get a beer while it does this.

Now type:

exit

To leave being the root “admin” user, and go back to being “digibyte”

We’re also going to want to change some settings before we proceed:

update-alternatives --config x86_64-w64-mingw32-g++

Choose the “posix” option, which will likely require you to push “1”.

Please don’t skip this part. I did and it was a mistake…

We have to do this, as we’re building for Windows, and if we don’t then basically things don’t compile. I won’t go into the details of why.

Now that we’ve got everything we need from a “tool” perspective, it’s time to get the DigiByte Core source-code. You can go to https://github.com/digibyte/digibyte to see it, and to see a list of available versions from the drop-down list:

All the available versions

In this particular instance we’re going to test out the 6.17.2 build

So, back to PuTTY and type in:

git clone -b 6.17.2 https://github.com/digibyte/digibyte.git

This is telling it “Only get version 6.17.2 of the DigiByte Core source-code”.

Now type:

cd digibyte

So that you’re in the directory with the source code. We then want to compile a specific version of Berkeley DB so that it’s compatible with your current wallet.dat files:

./contrib/install_db4.sh `pwd`

This will take a minute or two to compile:

Building BerkeleyDB-4.8

We have to do this manually because the current version that’s supported by Debian linux is a newer version which breaks compatibility with older wallet files, and we don’t want that, so we specifically use the older version.

We then run the following to strip out some variables that don’t work correctly with cross-compiling:

PATH=$(echo “$PATH” | sed -e ‘s/:\/mnt.*//g’)

Then start the initial build process of some more of the specific things that DigiByte Core depends on:

cd depends

time make HOST=x86_64-w64-mingw32

We’re telling it here specifically to make it for a 64-bit Windows computer.

This is going to take a little while so go get yourself a coffee, or a beer, and sit and watch it the compiler output scrolling past on your screen:

Building DigiByte

The faster your PC, the faster this will happen, but expect it to take half an hour to an hour.

Completed!

Once done, you’ll see this confirming it’s made a few things like: native_protobuf boost openssl libevent zeromq qrencode protobuf zlib qt bdb miniupnpc

Now type:

cd ..

This puts you into the directory to build the *main* DigiByte Core. Next we run:

./autogen.sh

Will automatically create a few more settings needed in the final build of DigiByte Core.

export CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site

./configure --prefix=/

This is telling it where the dependencies we built earlier are, and then telling it to “configure” the build so that when we type “make”, it knows what it’s making and what to be building / not building.

The final step…

This is it, we’re finally ready to roll! Everything is all in-place, and it’s showing “Target OS = Windows”, so you know it’s going to compile it for Windows.

Type:

time make

This is going to tell it to finally begin to build the actual DigiByte Core software now.

Exciting!!

So sit back, again go get another coffee / beer and enjoy watching it scroll past for the next half an hour to an hour.

All done!

Great, it’s all compiled! What now?

Well, now we want to make a nice fancy “installer” for it for you to run on your Windows PC. You can do this with:

make deploy

This should only take a minute to go through and get everything packaged up in to a nice fancy installer for you.

Type:

ls

(That’s a lower-case “L” if you’re not copying)

You should see (among other things):

digibyte-6.17.2-win64-setup.exe

Brilliant! Now we just need to get this out, and on to your PC.

So we’re going to grab WinSCP, to use the “Secure Copy Protocol” to get the file out of your virtual machine

Head over to https://winscp.net/eng/downloads.php and choose the “portable” release. Run WinSCP.exe to get started.

Connecting to your VM to copy the files off

Go in to the “digibyte” folder, and find the digibyte setup file you’ve made. Drag this from the right-hand side, to the left-hand side, to copy it to your PC. Make note of where it’s putting it, it might default to your “My Documents” folder

Copying it across

Once you’ve dragged it across, we’ve got one more thing to do before you’re ready to install and test out your DigiByte: Backups!

Make sure you backup your wallet.dat file before you go any further. In the DigiByte Core Wallet you can go to File → Backup Wallet. We do this as a precaution even though we don’t expect any issues, you never know …

You’re now ready to go through the installation process with your newly compiled DigiByte 6.17.2 wallet and test it out!

What do we need?

Any feedback you might have, really.

What you’ve tested (eg a clean sync, an upgrade from X version).

What your experience was like compared with previous builds.

Have you tested sending / receiving? What address types?

Sing out in the Telegram Dev channel, or open an issue on GitHub.

--

--

Josiah Spackman
Josiah Spackman

Written by Josiah Spackman

I write interesting things about cryptocurrency, especially DigiByte

No responses yet