Compiler Dash Core

Dash propose des exécutables compilés stables sur son site web, sur GitHub et à travers les compilations de développement Jenkins, mais beaucoup d’utilisateurs seront également intéressés de compiler eux-mêmes les exécutables Dash. Les guides suivants sont disponibles :

Ces guides expliquent comment compiler la version courante la plus stable. Pour compiler la version la plus récente depuis la branche développeurs, veuillez remplacer la commande normale git clone par la commande suivante, au moment du « pull » depuis GitHub

git clone https://github.com/dashpay/dash.git -b develop

Linux

Ce guide explique comment compiler le portefeuille Dash Core sans interface graphique, depuis le code source, sur Linux Ubuntu. Pour un guide plus détaillé, voir les Notes de compilation Unix. Il s’agit d’un guide simple pour compiler des fichiers binaires non-déterministes depuis le code source stable. Une installation standard d’Ubuntu 18.04 LTS sera utilisée comme environnement de compilation. Il est présupposé que vous êtes un utilisateur avec les droits sudo. Tout d’abord, ajouter le dépôt supplémentaire nécessaire, et mettez à jour tous les paquets

sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt update
sudo apt upgrade

Puis installez les dépendances, tel que décrit dans la documentation d’installation

sudo apt install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils git libdb4.8-dev libdb4.8++-dev curl
sudo apt install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libzmq3-dev

Installez éventuellement les dépendances Qt si vous souhaitez compiler l’interface graphique Dash (GUI)

sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

Téléchargez le dépôt stable Dash

git clone https://github.com/dashpay/dash.git

Puis compilez

cd dash
./autogen.sh
./configure
make
make install

/usr/local/bin contient maintenant les binaires Dash compilés.

macOS

Dash can be built for macOS either using a cross-compiler under Linux or natively under macOS.

Linux cross-compile

This guide describes how to build Dash Core wallet from source under Ubuntu Linux. It is intended to serve as a simple guide for general compilation of non-deterministic binary files from the stable source code. For a more detailed guide, see the macOS Build Notes. A standard installation of Ubuntu Linux 18.04 LTS will be used as an environment for the build. We assume you are running as a user with sudo permissions. First add the necessary extra repository and update all packages:

sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt update
sudo apt upgrade

Puis installez les dépendances, tel que décrit dans la documentation d’installation

sudo apt install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils git libdb4.8-dev libdb4.8++-dev curl
sudo apt install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libzmq3-dev
sudo apt install ca-certificates curl g++ git-core pkg-config autoconf librsvg2-bin libtiff-tools libtool automake faketime bsdmainutils cmake imagemagick libcap-dev libz-dev libbz2-dev python python-dev python-setuptools fonts-tuffy p7zip-full sleuthkit

Installez éventuellement les dépendances Qt si vous souhaitez compiler l’interface graphique Dash (GUI)

sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

Téléchargez le dépôt stable Dash

git clone https://github.com/dashpay/dash.git
cd dash

A copy of the macOS SDK is required during the build process. To download this, use a Google Chrome in a desktop environment to go to https://appleid.apple.com and create or sign in to your Apple account. Then go to https://developer.apple.com and open the Chrome Developer Tools from the Menu -> More tools -> Developer tools. Click on the Network tab, then go back to your main browser window and copy in the following URL:

https://developer.apple.com/services-account/download?path=/Developer_Tools/Xcode_7.3.1/Xcode_7.3.1.dmg

Cancel the download as soon as it begins and go back to your the Network tab in the developer tools. Right click on the network request at the bottom of the list labeled Xcode_7.3.1.dmg and select Copy -> Copy as cURL (bash). Paste this long string of text into your Linux terminal, append -o Xcode_7.3.1.dmg at the end and then press enter to begin the download. Once it is complete, extract the required files from the disc image as follows:

contrib/macdeploy/extract-osx-sdk.sh
rm -rf 5.hfs MacOSX10.11.sdk
mkdir depends/SDKs
mv MacOSX10.11.sdk/ depends/SDKs/

Puis compilez

make -C depends HOST=x86_64-apple-darwin11
./autogen.sh
./configure --prefix=`pwd`/depends/x86_64-apple-darwin11
make

~/dash/src contient désormais les exécutables Dash compilés, et ~/dash/src/qt contient le portefeuille Dash à interface graphique.

macOS Native

Ce guide explique comment compiler le portefeuille logiciel Dash Core depuis le code source, sous macOS. Il s’agit d’un guide simple de compilation générale de fichiers binaires non-déterministes depuis le code source stable. Pour un guide plus détaillé, voir les Notes de compilation macOS. Une installation standard de macOS 10.13 High Sierra sera utilisée comme environnement pour la compilation. Il est considéré que vous êtes un utilisateur avec les droits « sudo ». Tout d’abord, lancez l’application Terminal et saisissez les commandes suivantes pour installer les outils en ligne de commande de macOS

xcode-select --install

Quand la fenêtre pop-up s’affiche, cliquez sur Installer. Puis installez Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Installez les dépendances

brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf qt libevent librsvg

Copiez le code source Dash Core et allez dans le répertoire dash

git clone https://github.com/dashpay/dash
cd dash

Compilez Dash Core. Configurez et compilez les binaires Dash sans interface mais aussi ceux avec interface (si Qt est trouvé). Vous pouvez désactiver la compilation avec interface avec l’argument --without-gui

./autogen.sh
./configure
make

Il est recommandé de compiler et de lancer les tests d’unité

make check

Vous pouvez aussi (facultativement) créer une image-disque .dmg qui contient le paquet .app

make deploy

Dash Core est désormais disponible dans ./src/dashd.

Windows

Ce guide explique comment compiler le portefeuille logiciel Dash Core depuis le code source, sous Windows 64 bits. La plupart des développeurs utilisent une compilation croisée depuis Linux pour compiler des exécutables Windows. Il s’agit d’un guide simple de compilation générale de fichiers binaires non-déterministes depuis le code source stable. Pour un guide plus détaillé, voir les Notes de compilation Windows. Une installation standard d’Ubuntu Linux 18.04 LTS sera utilisée comme environnement pour la compilation. Il est considéré que vous êtes un utilisateur avec les droits « sudo ». Tout d’abord, ajouter le dépôt supplémentaire nécessaire, et mettez à jour tous les paquets

sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt update
sudo apt upgrade

Puis installez les dépendances, tel que décrit dans la documentation d’installation

sudo apt install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils git libdb4.8-dev libdb4.8++-dev curl
sudo apt install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libzmq3-dev
sudo apt-get install g++-mingw-w64-x86-64 mingw-w64-x86-64-dev

Installez éventuellement les dépendances Qt si vous souhaitez compiler l’interface graphique Dash (GUI)

sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler

Téléchargez le dépôt stable Dash

git clone https://github.com/dashpay/dash.git

Compilez et liez les dépendances

cd dash/depends
make HOST=x86_64-w64-mingw32
cd ..
sudo update-alternatives --set x86_64-w64-mingw32-gcc  /usr/bin/x86_64-w64-mingw32-gcc-posix
sudo update-alternatives --set x86_64-w64-mingw32-g++  /usr/bin/x86_64-w64-mingw32-g++-posix

Puis compilez

./autogen.sh
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
make

~/dash/src contient désormais les exécutables Dash compilés, et ~/dash/src/qt contient le portefeuille Dash à interface graphique.

Gitian

Gitian est le processus de compilation déterministe qui est utilisé pour compiler les exécutables Dash Core. Il constitue un moyen de s’assurer raisonnablement que les exécutables sont vraiment compilés depuis la source sur GitHub. Il s’assure également que les mêmes dépendances éprouvées sont utilisées et intégrées statiquement à l’exécutable. De nombreux développeurs compilent le source code selon un descripteur spécifique (« recette »), signent cryptographiquement le résultat et téléversent la signature qui en résulte. Ces résultats sont comparés et, s’ils correspondent, la compilation est acceptée et téléversée sur dash.org.

Un plus grand nombre de compilateurs Gitian est souhaité ; c’est la raison d’être de ce guide. Il est préférable que vous suiviez ces étapes plutôt que d’utiliser l’image VM de quelqu’un d’autre, afin d’éviter de « contaminer » la compilation.

Mise en place de l’environnement hôte

Les compilations Gitian sont réputées fonctionner sur Debian 8.x. Si votre machine tourne déjà sur ce système, vous pouvez exécuter les compilations Gitian directement sur votre matériel. Alternativement, vous pouvez l’installer dans une machine virtuelle. Veuillez suivre le guide de mise en place d’un VPS pour les masternodes, sélectionnez une image Debian 8.x pendant le processus d’installation et nommez votre utilisateur non-root « gitianuser ». Choisir un VPS avec deux processeurs augmentera grandement la vitesse de compilation. Si vous ne pouvez pas vous connecter via SSH à votre VPS en tant que root, connectez-vous au terminal et saisissez la commande suivante

sed -i 's/^PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
/etc/init.d/ssh restart

Connectez-vous à votre nouvel environnement via SSH en tant que root. Mettez d’abord en place les dépendances en copiant-collant ce qui suit dans le terminal

apt-get install git ruby sudo apt-cacher-ng qemu-utils debootstrap lxc python-cheetah parted kpartx bridge-utils make ubuntu-archive-keyring curl
adduser gitianuser sudo

Puis mettez en place LXC et le reste avec ce qui suit (un mélange complexe de réglages et de contournements)

# the version of lxc-start in Debian needs to run as root, so make sure
# that the build script can execute it without providing a password
echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-start" > /etc/sudoers.d/gitian-lxc
echo "%sudo ALL=NOPASSWD: /usr/bin/lxc-execute" >> /etc/sudoers.d/gitian-lxc
# make /etc/rc.local script that sets up bridge between guest and host
echo '#!/bin/sh -e' > /etc/rc.local
echo 'brctl addbr br0' >> /etc/rc.local
echo 'ifconfig br0 10.0.3.2/24 up' >> /etc/rc.local
echo 'iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE' >> /etc/rc.local
echo 'echo 1 > /proc/sys/net/ipv4/ip_forward' >> /etc/rc.local
echo 'exit 0' >> /etc/rc.local
# make sure that USE_LXC is always set when logging in as gitianuser,
# and configure LXC IP addresses
echo 'export USE_LXC=1' >> /home/gitianuser/.profile
echo 'export GITIAN_HOST_IP=10.0.3.2' >> /home/gitianuser/.profile
echo 'export LXC_GUEST_IP=10.0.3.5' >> /home/gitianuser/.profile
reboot

À la fin, Debian redémarre pour être certain que les modifications prennent effet. Re-connectez-vous en tant qu’utilisateur « gitianuser », celui créé durant l’installation. Le reste des étapes de ce guide seront exécutées en tant que cet utilisateur.

Il n’y a pas de paquet python-vm-builder dans Debian, nous devons donc l’installer nous-mêmes depuis la source

wget http://archive.ubuntu.com/ubuntu/pool/universe/v/vm-builder/vm-builder_0.12.4+bzr494.orig.tar.gz
echo "76cbf8c52c391160b2641e7120dbade5afded713afaa6032f733a261f13e6a8e  vm-builder_0.12.4+bzr494.orig.tar.gz" | sha256sum -c
# (verification -- must return OK)
tar -zxvf vm-builder_0.12.4+bzr494.orig.tar.gz
cd vm-builder-0.12.4+bzr494
sudo python setup.py install
cd ..

Mise en place de l’environnement et compilation

Clonez le dépôt Dash Core dans votre répertoire home

git clone https://github.com/dashpay/dash.git

Puis créer le fichier script

nano dash/contrib/gitian-build.sh

Collez le script suivant au bon endroit (ce sera automatique si/quand le script est placé dans Dash Core)

https://github.com/strophy/dash/blob/master/contrib/gitian-build.sh

Enregistrez le fichier et rendez-le exécutable

sudo chmod +x dash/contrib/gitian-build.sh

Mettez en place l’environnement, en remplaçant le nom et la version par vos nom et version-cible

dash/contrib/gitian-build.sh --setup strophy 0.12.1.5

Lancez le script de compilation

dash/contrib/gitian-build.sh --build strophy 0.12.1.5

Votre système compilera toutes les dépendances et Dash Core depuis zéro, pour les plateformes Windows et Linux (et macOS si les dépendances ont été installées selon ces instructions). Cela peut prendre un certain temps. À la fin, vous verrez les sommes de contrôle SHA256, que vous pouvez comparer aux empreintes publiées sur le site web Dash. De cette manière, vous êtes sûr que vous faites tourner des compilations originales et non altérées, issues du code tel qu’existant sur GitHub.