Produced binaries are deterministic, so you should be able to generate binaries that match the official releases.
This assumes an Ubuntu host, but it should not be too hard to adapt to another similar system. The docker commands should be executed in the project's root folder.
Install Docker
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
Build image
$ sudo docker build -t vialectrum-wine-builder-img contrib/build-wine/docker
Note: see thisā if having dns problems
Build Windows binaries
It's recommended to build from a fresh clone (but you can skip this if reproducibility is not necessary).
$ FRESH_CLONE=contrib/build-wine/fresh_clone && \
rm -rf $FRESH_CLONE && \
mkdir -p $FRESH_CLONE && \
cd $FRESH_CLONE && \
git clone https://github.com/viacoin/vialectrum.git && \
cd vialectrum
And then build from this directory:
$ git checkout $REV
$ sudo docker run -it \
--name vialectrum-wine-builder-cont \
-v $PWD:/opt/wine64/drive_c/vialectrum \
--rm \
--workdir /opt/wine64/drive_c/vialectrum/contrib/build-wine \
vialectrum-wine-builder-img \
./build.sh
The generated binaries are in ./contrib/build-wine/dist.
Note: the setup binary (NSIS installer) is not deterministic yet.
Vialectrum Windows builds are signed with a Microsoft Authenticode⢠code signing certificate in addition to the GPG-based signatures.
The advantage of using Authenticode is that Vialectrum users won't receive a Windows SmartScreen warning when starting it.
The release signing procedure involves a signer (the holder of the certificate/key) and one or multiple trusted verifiers:
| Signer | Verifier |
|---|---|
Build .exe files using build.sh | |
Sign .exe with ./sign.sh | |
| Upload signed files to download server | |
Build .exe files using build.sh | |
Compare files using unsign.sh | |
Sign .exe file using gpg -b |
| Signer and verifiers: |
|---|
Upload signatures to 'vialectrum-signatures' repo, as $version/$filename.$builder.asc |
Every user can verify that the official binary was created from the source code in this repository. To do so, the Authenticode signature needs to be stripped since the signature is not reproducible.
This procedure removes the differences between the signed and unsigned binary:
The script unsign.sh performs these steps.
Content type
Image
Digest
Size
628.9 MB
Last updated
over 7 years ago
docker pull romanornr/vialectrum