Bitcoin.org: What is missing for Mycelium to be considered deterministically buildable?

Created on 16 Dec 2019  ยท  5Comments  ยท  Source: bitcoin-dot-org/Bitcoin.org

As the release manager at Mycelium I am surprised to see Mycelium to be marked as not deterministically buildable. What is the criteria for that? We rely heavily on build verification internally and wouldn't release an apk without having built it on a second engineer's machine and we also advertise the verifiability on our github.

Some builds had issues. A library was compiling non-deterministically in a way we had to compile up to 10 times to get the same result but that should be resolved.

How strict is this criteria?

Wallets

All 5 comments

As the release manager at Mycelium I am surprised to see Mycelium to be marked as not deterministically buildable.

@Giszmo Thanks for letting us know. There have been no updates submitted for Mycelium in four years.

What is the criteria for that?

The wallet should be able to be accurately described by the checkgoodtransparencydeterministictxt description which is

This wallet is open-source and built deterministically. This means any developer in the world can audit the code and make sure the final software isn't hiding any secrets.

I would recommend opening a PR (or request here that a PR be opened) to change the Mycelium listing to

  transparency: "checkgoodtransparencydeterministic"

It would be great if you could include a third party reference to a successful verification or request in the PR that someone verify it.

If it was last checked 4 years ago, the classification makes sense but it also calls in question the value of even looking at this if the wallets that are marked as verifiable are also only checked every 4 years.

I started a project around the issue and my assessment on Mycelium can be found here but being Mycelium's release manager, I'm hardly an independent source and as stated in the linked article, the verification did not go as smooth as it should.

I will provide a PR soon.

I'll try to verify Mycelium.

I just successfully manually verified the version tagged v3.2.0.11 by following the project's deterministic builds instructions:

--- mbw-prodnet-release.apk
+++ /tmp/mycelium-from-phone.apk
โ”œโ”€โ”€ zipinfo /dev/stdin
โ”‚ @@ -1,11 +1,11 @@
โ”‚ -Zip file size: 15269734 bytes, number of entries: 1785
โ”‚ +Zip file size: 15269940 bytes, number of entries: 1785
โ”‚  -rw----     0.0 fat    36212 b- defN 80-000-00 00:00 AndroidManifest.xml
โ”‚  -rw----     2.4 fat    11376 b- defN 80-000-00 00:00 LICENSE-junit.txt
โ”‚ --rw----     2.4 fat     1214 b- defN 80-000-00 00:00 META-INF/CERT.RSA
โ”‚ +-rw----     2.4 fat     1283 b- defN 80-000-00 00:00 META-INF/CERT.RSA
โ”‚  -rw----     2.4 fat   209991 b- defN 80-000-00 00:00 META-INF/CERT.SF
โ”‚  -rw----     2.4 fat   209929 b- defN 80-000-00 00:00 META-INF/MANIFEST.MF
โ”‚  -rw----     2.4 fat        6 bx stor 80-000-00 00:00 META-INF/androidx.activity_activity.version
โ”‚  -rw----     2.4 fat        6 bx stor 80-000-00 00:00 META-INF/androidx.appcompat_appcompat-resources.version
โ”‚  -rw----     2.4 fat        6 bx stor 80-000-00 00:00 META-INF/androidx.appcompat_appcompat.version
โ”‚  -rw----     2.4 fat        6 b- stor 80-000-00 00:00 META-INF/androidx.arch.core_core-runtime.version
โ”‚  -rw----     2.4 fat        6 bx stor 80-000-00 00:00 META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version
โ”‚ @@ -1780,8 +1780,8 @@
โ”‚  -rw----     0.0 fat     6704 b- defN 80-000-00 00:00 res/xml/preferences.xml
โ”‚  -rw----     0.0 fat      792 b- defN 80-000-00 00:00 res/xml/preferences_backup.xml
โ”‚  -rw----     0.0 fat      412 b- defN 80-000-00 00:00 res/xml/preferences_external_service.xml
โ”‚  -rw----     0.0 fat      784 b- defN 80-000-00 00:00 res/xml/preferences_notifications.xml
โ”‚  -rw----     0.0 fat     1056 b- defN 80-000-00 00:00 res/xml/preferences_pincode.xml
โ”‚  -rw----     0.0 fat      512 b- defN 80-000-00 00:00 res/xml/preferences_versions.xml
โ”‚  -rw----     0.0 fat  2250600 bx stor 80-000-00 00:00 resources.arsc
โ”‚ -1785 files, 32819984 bytes uncompressed, 14961408 bytes compressed:  54.4%
โ”‚ +1785 files, 32820053 bytes uncompressed, 14961432 bytes compressed:  54.4%

For automatic verification (aka "reproducible build") the issue with git authentication of the wallet-android-modularization-tools submodule would need to be fixed. See https://walletscrutiny.com/posts/2019/11/mycelium/ for details.

I should mention that I'm _not_ affiliated with mycelium.com or Mycelium Wallet.

Thanks much Andreas! I've created PR #3225.

Thanks @Giszmo

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jli225 picture jli225  ยท  5Comments

NicolasDorier picture NicolasDorier  ยท  6Comments

0X676f61776179 picture 0X676f61776179  ยท  6Comments

pstratem picture pstratem  ยท  7Comments

wbnns picture wbnns  ยท  8Comments