Bitcoin Wallet for COINiDGoogle Play
Our wallet review process
We examine wallets starting at the code level and continue all the way up to the finished app that lives on your device. Provided below is an outline of each of these steps along with security tips for you and general test results.
Application build test result
This app does not reveal much information on Google Play but
- Complete Control
- Hierarchical Deterministic
sounds like the standard non-custodial wallet.
The FAQ on their website is more explicit:
Do my private key ever leave my device? No, your private key never leaves your device. You are in full control of your private key.
And in the FAQ we find this gem:
Do you provide deterministic builds? Since we need to distribute the app via the App Store that is not possible. The source is however available on our Github so that anyone can review and compile it.
So let’s give it a try anyway …
The current version is
1.7.5. The build instructions in their entirety are:
We are currently not including the secrets.js in the repo. If you want to compile the wallet to test it you need to add the following to src/config/secrets.js.
export const p2pCommonSecret = ''; export const encryptPrivateSalt = ''; export const pinSecret = '';
That is not good but let’s see:
$ git clone email@example.com:COINiD/COINiDWallet.git $ cd COINiDWallet/ $ git tag v1.6.0 v1.7.0 v1.7.2 v1.7.3 v1.7.4 v1.7.5 $ git checkout v1.7.5 $ docker run --volume=$PWD:/mnt --workdir=/mnt --rm -it beevelop/cordova bash root@c0a4b6139564:/mnt# echo "export const p2pCommonSecret = '';export const encryptPrivateSalt = '';export const pinSecret = '';" > src/config/secrets.js root@c0a4b6139564:/mnt# apt update ; apt install python -y root@c0a4b6139564:/mnt# npm install root@c0a4b6139564:/mnt# yes | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-28" root@c0a4b6139564:/mnt# cd android/ root@c0a4b6139564:/mnt/android# ./gradlew clean :app:assembleRelease ... > Task :app:bundleReleaseJsAndAssets warning: the transform cache was reset. Loading dependency graph, done. error While trying to resolve module `lottie-react-native` from file `/mnt/src/components/CheckBoxSelect.js`, the package `/mnt/node_modules/lottie-react-native/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/mnt/node_modules/lottie-react-native/lib/index.js`. Indeed, none of these files exist: * `/mnt/node_modules/lottie-react-native/lib/index.js(.native||.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)` * `/mnt/node_modules/lottie-react-native/lib/index.js/index(.native||.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`. Run CLI with --verbose flag for more details. > Task :app:bundleReleaseJsAndAssets FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:bundleReleaseJsAndAssets'. > Process 'command 'node'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.1.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 25s 190 actionable tasks: 174 executed, 16 up-to-date
And that’s where we give it up and conclude with the verdict: not verifiable
Tests performed by Leo Wandersleb
Do your own research
In addition to reading our analysis, it is important to do your own checks. Before transferring any bitcoin to your wallet, look up reviews for the wallet you want to use. They should be easy to find. If they aren't, that itself is a reason to be extra careful.