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:
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:
The next part depends on how much RAM you can spare:
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.
Under Network, change from NAT to “Bridged Adapter”. This will make it easier for you to get the files off later.
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:
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.
Enter the full name for your user as “DigiByte” just for simplicity sake, then the username of “digibyte” should be auto-populated:
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:
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:
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:
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:
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):
It will then tell you the installation is finished, hit “Continue” and it will restart.
You’ll then be greeted with a login prompt:
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:
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:
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:
Once you’ve typed in the IP address as shown, hit Enter or click “Open”.
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:
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:
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:
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.
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”.
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:
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”.
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:
This will take a minute or two to compile:
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:
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:
The faster your PC, the faster this will happen, but expect it to take half an hour to an hour.
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
This puts you into the directory to build the *main* DigiByte Core. Next we run:
Will automatically create a few more settings needed in the final build of DigiByte Core.
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.
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.
This is going to tell it to finally begin to build the actual DigiByte Core software now.
So sit back, again go get another coffee / beer and enjoy watching it scroll past for the next half an hour to an hour.
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:
This should only take a minute to go through and get everything packaged up in to a nice fancy installer for you.
(That’s a lower-case “L” if you’re not copying)
You should see (among other things):
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.
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
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?