# Deterministic Build

Reproducible [or deterministic] builds are a set of software development practices that create an independently-verifiable path from source to binary code. ~ ReproducibleBuilds.org

This guide describes how to reproduce Wasabi's builds.

# 1. Assert Correct Environment

In order to reproduce Wasabi's builds you need Git, Windows 10 and .NET Core 3.1 SDK.

# 2. Reproduce Builds

git clone https://github.com/zkSNACKs/WalletWasabi.git
git checkout {hash of the release} // This works from 1.1.3 release, https://github.com/zkSNACKs/WalletWasabi/releases
cd WalletWasabi/WalletWasabi.Packager/
dotnet restore
dotnet build
dotnet run -- --onlybinaries

This will build our binaries for Windows, macOS and Linux from source code and open them in a file explorer for you.

# 3. Verify Builds

You can compare our binaries with the downloads we have on the website: https://wasabiwallet.io/ In order to end-to-end verify all the downloaded packages you need a Windows, a Linux, and a macOS machine.

# Windows

After you installed Wasabi from the .msi, it will be in C:\Program Files\WasabiWallet folder. You can compare it with your build:

git diff --no-index win7-x64 "C:\Program Files\WasabiWallet"

# Linux & macOS

You can use the Windows Subsystem for Linux to verify all the packages in one go. At the time of writing this guide we provide a .tar.gz and a .deb package for Linux and .dmg for macOS. Install the .deb package and extract the tar.gz and .dmg packages, then compare them with your build.

After installing WSL, just type wsl in explorer where your downloaded and built packages are located.

# .deb

sudo dpkg -i Wasabi-
git diff --no-index linux-x64/ /usr/local/bin/wasabiwallet/

# .tar.gz

tar -pxzf WasabiLinux-
git diff --no-index linux-x64/ WasabiLinux-

# .dmg

You will need to install 7z (or something else) to extract the .dmg: sudo apt install p7zip-full

7z x Wasabi- -oWasabiOsx
git diff --no-index osx-x64/ WasabiOsx/Wasabi\ Wallet.App/Contents/MacOS/