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:


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_manifest.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_manifest.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 &