4

I'm hoping that someone can tell me how to get the same binary that we see on bitcoincore.org/bitcoin.org.

I tried using Ubuntu 20.04

git clone https://github.com/bitcoin/bitcoin
git checkout v0.20.1
sudo apt-get update
sudo apt-get install build-essential libtool autotools-dev automake pkg-config bsdmainutils python3 -y
sudo apt-get install libevent-dev libboost-system-dev libboost-filesystem-dev libboost-test-dev libboost-thread-dev -y
./autogen.sh
./configure --disable-wallet
make
make install

Extra details (git commit I'm going off of)

 git log
commit 7ff64311bee570874c4f0dfa18f518552188df08 (HEAD -> 20.1, tag: v0.20.1)
Author: Wladimir J. van der Laan <la[email protected]>
Date:   Fri Jul 31 14:01:56 2020 +0200

produces bitcoind: d46f9ca67562129cb2f0d7ed7e0ae576ab06e616d98d28c2a262d82356f9d87b


bitcoincore.org link I'm going off of: https://bitcoincore.org/bin/bitcoin-core-0.20.1/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz

produces bitcoind: 4ec74161b2a90293926ae8e20a2efbe952bd23b53aeebf051e6a6285ace18271

I was hoping that someone could tell me how to properly configure/setup my environment to produce the same binary that we see packaged nicely in the tarball on these websites. The binary files aren't even close in size…

from tarball bitcoind size: 10312344 (10 MB)

from building from scratch bitcoind size: 192814984 (192 MB)

How do I make the super sleek and sexy 10 MB version?

Thanks!

1
  • 1
    The size is due to the inclusion of debug symbols; you can compile without them (CXXFLAGS="-O2 -g0" for example at configure time), or you can strip them after compilation (strip bitcoind). That will result in a similarly small file, but it won't give you a binary that's identical to the release binary. To do so, follow the gitian-based process like Murch suggests below. Nov 10, 2020 at 17:56

1 Answer 1

2

The challenge with creating reproducible builds is that you need to ensure that the build process matches exactly across different operating systems and different architectures. Bitcoin uses Gitian, a deterministic build process to achieve that.

Bitcoin Core provides the configuration and build instructions for various operating systems in the /contrib/gitian-descriptors directory in the Bitcoin source code.

For Linux you would use this gitian-linux.yml.

2
  • In 2017 I wrote a guide to a small guide (with script) to reproduce the Debian binaries with Gitian. The guide is obsolete and won't work for the current version, but it might still be helpful as a reference. gist.github.com/frz-dev/3e3e906fa06294e61930e81b473e1e5b
    – FedFranz
    Nov 11, 2020 at 11:15
  • Did the gitian process with both debian 10 and ubuntu 20.04, produced the same binaries. However these binaries are not the same ones that were produced 3 months ago for v0.20.1. Doesn't seem to be an easy way to get the same environment that other people use even if using a VM as there is no standard image used prebaked with dependencies. Nearly all the documentation for gitian for all methods.. on bitcoin-core and devrandom is outdated and broken. This has been a very interesting* experience. Currently "Don't trust verify" seems to be more of a nice to have w/ downloaded binaries. When Ginx? Nov 12, 2020 at 0:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.