Breez: Lightning Network Client & Point-of-Salelatest release: Varies with device ( 30th September 2021 ) last analysed 28th December 2019 Not reproducible from source provided
Help spread awareness for build reproducibility
Please help us spread the word, asking Breez: Lightning Network Client & Point-of-Sale to support reproducible builds via their Twitter!
Do your own research!
Try out searching for "lost bitcoins", "stole my money" or "scammers" together with the wallet's name, even if you think the wallet is generally trustworthy. For all the bigger wallets you will find accusations. Make sure you understand why they were made and if you are comfortable with the provider's reaction.
The Analysis ¶
A description to our liking. Here it is in full:
Breez is a Lightning Network client which makes paying in bitcoin a seamless experience. With Breez, anyone can send or receive small payments in bitcoin. It’s simple, fast and safe.
Ok, seamless, lightning, … nice.
Breez is a non-custodial service that uses lnd and Neutrino under the hood.
We want to hear that! Be your own bank!
For more technical information, please go to: https://github.com/breez/breezmobile.
So they are non-custodial and provide source code. More work for us :)
Warning: the app is still in beta and there is a chance your money will be lost. Use this app only if you are willing to take this risk.
That’s certainly inspiring more confidence than other apps with 2 months of track record claiming to be the best in the world. :)
Well, in terms of Build Instructions the app is lacking.
$ git clone firstname.lastname@example.org:breez/breezmobile.git $ cd breezmobile/ $ git tag 0.5-openbeta 0.5.8-openbeta 0.5.9-openbeta 0.7-openbeta 0.8.improvements
As on the playstore it says “Current Version: Varies with device”, we go with
what google gives us when we install it on a phone:
0.8-beta. The best match above would thus be the tag
$ git checkout 0.8.improvements $ cat android/app/build.gradle | grep version versionCode 1 versionName "0.8-beta" versionNameSuffix "-pos"
looks good so far. For now. We will not guess like this in the future.
Build breez.aar and bindings.framework as decribed in breez/breez
$ git submodule status $
… so … the build instructions give no clue which version of breez/breez to build and there is no submodule?
$ git clone email@example.com:breez/breez.git $ cd breez $ git tag 0.5-openbeta 0.5.8-openbeta
Had there been a
0.8… in the breez project, we would have had a clue
where to go next but absent that, there is no hope of reproducing the app. For
now our verdict is: not verifiable.
We could not verify that the provided code matches the binary!
As part of our Methodology, we ask:Is the published binary matching the published source code? If not, we tag it Unreproducible!
Published code doesn’t help much if it is not what the published binary was built from. That is why we try to reproduce the binary. We
- obtain the binary from the provider
- compile the published source code using the published build instructions into a binary
- compare the two binaries
- we might spend some time working around issues that are easy to work around
If this fails, we might search if other revisions match or if we can deduct the source of the mismatch but generally consider it on the provider to provide the correct source code and build instructions to reproduce the build, so we usually open a ticket in their code repository.
In any case, the result is a discrepancy between the binary we can create and the binary we can find for download and any discrepancy might leak your backup to the server on purpose or by accident.
As we cannot verify that the source provided is the source the binary was compiled from, this category is only slightly better than closed source but for now we have hope projects come around and fix verifiability issues.
Share onTwitter Facebook LinkedIn
Or embed a widget in your website
<iframe src="https://walletscrutiny.com/widget/#appId=android/com.breez.client&theme=auto&style=short" name="_ts" style="min-width:180px;border:0;border-radius:10px;max-width:280px;min-height:30px;"> </iframe>
<iframe src="https://walletscrutiny.com/widget/#appId=android/com.breez.client&theme=auto&style=long" style="max-width:100%;width:342px;border:0;border-radius:10px;min-height:290px;"> </iframe>