NOTICE OF UPDATE
On 2020.01.24 this HOWTO document was updated to guide the end-user through setting up The Real Bitcoin Reference Implementation
with the newly created keccak vtree. The original SHA512 vpatches will available here for historical
purposes; however going forward, only keccak vpatches will be utilized.
PREFACE
What's contained with in this document is a HOWTO guide on building TRB [OFFLINE or ONLINE],
The Bitcoin Reference Implementation maintained by The Bitcoin Foundation.
You will need an x86-64 Linux System.
You will also need a functioning Ada Compiler:
GNAT [2015, 2016] version has been tested and will work well to build
diana_coman's keccak V.
[Please write in if others are known to work well with diana_coman's V.]
Gentoo, Ubuntu, CentOS, and Debian have been tested with this HOWTO document. Keep
in mind that you will need to have your system locale / language set to
US-English. You also will need a minimum of 20Gb of disk space in the file
system where you are going to do the TRB build.
To build V Keccak and TRB, you are going to need some basic requirements on
your system environment.
You also will need the following packages / binaries / tools on your system before you begin building:
- bc
- gcc [version 4.x]
- g++ [version 4.x]
- gpg [GnuPG version 1.4.x, 1.4.10 preferred]
- Ada GNAT [version 2015 or 2016]
- wget
- curl
- perl
- diff
- patch
- rsync
- sha512sum
- unzip
- bzip2 tools [including bzcat]
- cpio [gentoo/cuntoo: emerge -av app-arch/cpio]
- bison [not in default tools on CentOS 6]
- flex [not in default tools on CentOS 6]
About This Document
In this HOWTO document you will find that various notations are given to describe various
items or commands. The author places actual system commands to be executed inside of back-tick
marks like this: `command to be executed`. This helps to denote where the actual command to
be executed begins and ends; when you execute the command in your system, do not include the
back-ticks!
The author also utilizes single quotes around important directories, or file names.
Bitcoin Reference Implementation: OFFLINE BUILD
0x01) Make a new trb directory: `mkdir trb`
0x02) `cd trb`
0x03) `mkdir .wot`
0x04) Get the following keys from deedbot [freenode.net], and place them in '.wot':
[ /msg deedbot !!key mod6 ]
[ /msg deedbot !!key diana_coman ]
Save the PGP public keys and name them as follows:
mod6.asc
diana_coman.asc
`gpg --import mod6.asc`
`gpg --import diana_coman.asc`
`mv mod6.asc diana_coman.asc .wot`
0x05) Get http://ossasepia.com/vpatches/starter_v_2.tar.gz
0x06) Get http://ossasepia.com/vpatches/starter_v_2.tar.gz.diana_coman.sig
0x07) Verify the signature of the starter_v.zip with:
`gpg --verify starter_v_2.tar.gz.diana_coman.sig starter_v_2.tar.gz`
0x08) `tar -xf starter_v_2.tar.gz`
0x09) `cd starter_v_2`
*** YOU WILL NEED A WORKING GNAT TO COMPLETE THE NEXT STEP ***
0x0A) `/bin/sh build.sh`
Execution of this step should have resulted in the creation of 'ksum', 'vdiff',
and 'vpatch' binaries and the newly modified perl script 'vk.pl'. If any of
these did not get created as a result of executing the build.sh, STOP NOW and
remedy the error.
0x0B) Place the created binaries from the previous step (0x0A) into /usr/bin so they
are accessible on the $PATH ; to do this, you will need to be root or use sudo:
`su root`
-- OR --
`sudo su`
`cp ksum vdiff vpatch /usr/bin`
Exit the root shell:
`exit`
0x0C) Next, copy up the 'vk.pl' into our 'trb' directory:
`cp vk.pl ..`
0x0D) Move back into our 'trb' directory:
`cd ..`
0x0E) `mkdir patches`
Gather trb vpatches from http://thebitcoin.foundation/v/patches
in which ever manner suits you best.
Place all vpatches into the 'patches' directory.
0x0F) `mkdir .seals`
Gather trb seals from http://thebitcoin.foundation/v/seals
in which ever manner suits you best.
Place seals into the '.seals' directory.
0x10) `./vk.pl p v trb054 mod6_whogaveblox.vpatch`
0x11) `cd trb054/bitcoin`
0x12) Get http://deedbot.org/deed-430460-2.txt : name it 'rotor.tar.gz.asc'
0x13) Get http://deedbot.org/deed-430460-1.txt : name it 'rotor-db-configure-fix.patch.asc'
0x14) Get http://deedbot.org/deed-422651-1.txt : name it 'boost_1_52_0.tar.bz2.asc'
0x15) Get http://deedbot.org/deed-422651-2.txt : name it 'buildroot-2015.05.tar.gz.asc'
0x16) Get http://deedbot.org/deed-422651-3.txt : name it 'db-4.8.30.tar.gz.asc'
0x17) Get http://deedbot.org/deed-422651-4.txt : name it 'openssl-1.0.1g.tar.gz.asc'
0x18) Get http://deedbot.org/deed-427443-1.txt : name it 'binutils-2.24.tar.bz2.asc'
0x19) Get http://deedbot.org/deed-427443-2.txt : name it 'busybox-1.23.2.tar.bz2.asc'
0x1A) Get http://deedbot.org/deed-427443-3.txt : name it 'expat-2.1.0.tar.gz.asc'
0x1B) Get http://deedbot.org/deed-427443-4.txt : name it 'fakeroot_1.18.4.orig.tar.bz2.asc'
0x1C) Get http://deedbot.org/deed-427443-5.txt : name it 'gcc-4.9.2.tar.bz2.asc'
0x1D) Get http://deedbot.org/deed-427443-6.txt : name it 'gdb-7.8.2.tar.xz.asc'
0x1E) Get http://deedbot.org/deed-427443-7.txt : name it 'gmp-6.0.0a.tar.xz.asc'
0x1F) Get http://deedbot.org/deed-427443-8.txt : name it 'linux-3.18.14.tar.xz.asc'
0x20) Get http://deedbot.org/deed-427443-9.txt : name it 'm4-1.4.17.tar.xz.asc'
0x21) Get http://deedbot.org/deed-427443-10.txt : name it 'mpc-1.0.3.tar.gz.asc'
0x22) Get http://deedbot.org/deed-427443-11.txt : name it 'mpfr-3.1.2.tar.xz.asc'
0x23) Get http://deedbot.org/deed-427443-12.txt : name it 'musl-1.1.8.tar.gz.asc'
0x24) Get http://deedbot.org/deed-427443-13.txt : name it 'ncurses-5.9.tar.gz.asc'
0x25) Get http://deedbot.org/deed-427443-14.txt : name it 'pkgconf-0.8.9.tar.bz2.asc'
0x26) Place the signed deed files (0x12-0x25) into the 'deps' directory:
`
mv \
rotor.tar.gz.asc \
rotor-db-configure-fix.patch.asc \
boost_1_52_0.tar.bz2.asc \
buildroot-2015.05.tar.gz.asc \
db-4.8.30.tar.gz.asc \
openssl-1.0.1g.tar.gz.asc \
binutils-2.24.tar.bz2.asc \
busybox-1.23.2.tar.bz2.asc \
expat-2.1.0.tar.gz.asc \
fakeroot_1.18.4.orig.tar.bz2.asc \
gcc-4.9.2.tar.bz2.asc \
gdb-7.8.2.tar.xz.asc \
gmp-6.0.0a.tar.xz.asc \
linux-3.18.14.tar.xz.asc \
m4-1.4.17.tar.xz.asc \
mpc-1.0.3.tar.gz.asc \
mpfr-3.1.2.tar.xz.asc \
musl-1.1.8.tar.gz.asc \
ncurses-5.9.tar.gz.asc \
pkgconf-0.8.9.tar.bz2.asc \
deps
`
0x22) `make`
0x23) Upon successful build, `bitcoind' will be placed in 'trb054/bitcoin/bin'
Be sure to visit the Advertised Republican Nodes page to connect to other TRB nodes.
Start up example:
LC_ALL=C nohup ./bitcoind -myip=<yourip> -addnode=trusted_node_1 -addnode=trusted_node_2 -verifyall 2>&1 &
Bitcoin Reference Implementation: ONLINE BUILD
0x01) Make a new trb directory: `mkdir trb`
0x02) `cd trb`
0x03) `mkdir .wot`
0x04) Get the following keys from deedbot [freenode.net], and place them in '.wot':
[ /msg deedbot !!key mod6 ]
[ /msg deedbot !!key diana_coman ]
Save the PGP public keys and name them as follows:
mod6.asc
diana_coman.asc
`gpg --import mod6.asc`
`gpg --import diana_coman.asc`
`mv mod6.asc diana_coman.asc .wot`
0x05) Get http://ossasepia.com/vpatches/starter_v_2.tar.gz
0x06) Get http://ossasepia.com/vpatches/starter_v_2.tar.gz.diana_coman.sig
0x07) Verify the signature of the starter_v.zip with:
`gpg --verify starter_v_2.tar.gz.diana_coman.sig starter_v_2.tar.gz`
0x08) `tar -xf starter_v_2.tar.gz`
0x09) `cd starter_v_2`
*** YOU WILL NEED A WORKING GNAT TO COMPLETE THE NEXT STEP ***
0x0A) `/bin/sh build.sh`
Step 0x0A should have created 'ksum', 'vdiff', and 'vpatch' binaries and the
newly modified perl script 'vk.pl'. If any of these did not get created as a
result of executing the build.sh, STOP NOW and remedy the error.
0x0B) Place the created binaries from the previous step (0x0A) into /usr/bin so they
are accessable on the $PATH ; to do this, you will need to be root or use sudo:
`su root`
-- OR --
`sudo su`
`cp ksum vdiff vpatch /usr/bin`
Exit the root shell:
`exit`
0x0C) Next, copy up the 'vk.pl' into our 'trb' directory:
`cp vk.pl ..`
0x0D) Move back into our 'trb' directory:
`cd ..`
0x0E) `./vk.pl i http://thebitcoin.foundation`
0x0F) `./vk.pl p v trb054 mod6_whogaveblox.vpatch`
0x10) `cd trb054/bitcoin`
0x11) `make ONLINE=1`
0x12) Upon successful build, `bitcoind' will be placed in 'trb054/bitcoin/bin'
Be sure to visit the Advertised Republican Nodes page to connect to other TRB nodes.
Start up example:
LC_ALL=C nohup ./bitcoind -myip=<yourip> -addnode=trusted_node_1 -addnode=trusted_node_2 -verifyall 2>&1 &