Bither - a simple and secure Bitcoin wallet!

Related tags

App bither-android
Overview

bither-android

Bither is a simple and secure Bitcoin wallet! You can find Bither on Google Play.

There is also an iOS version.

Build

Bither-android is easy to build base on gradle build system.

How to build bither android

Features

  • HOT and COLD wallet modes to ensure private key safety
  • Communication between hot and cold wallet via QR Codes
  • SPV bitcoin p2p client
  • Both android and iOS are supported
  • Nice designed UI
  • Private password keyboard to avoid using third party keyboard for password

Donation

Donate : 1BitherUnNvB2NsfxMnbS35kS3DTPr7PW5

Website

Bither.net

Comments
  • Feature Request: Import BIP38 encrypted private key in cold wallet

    Feature Request: Import BIP38 encrypted private key in cold wallet

    I think this would be a great use case for Bither. Keep your cold storage encrypted on a paper wallet and when you want to spend it, import it into a cold Bither wallet. Easy to make backups and the keys never touch the internet.

    opened by dskloet 18
  • How can I monitor cold HD account?

    How can I monitor cold HD account?

    I didn't understand how to monitor cold HD account. I don't understand which QR I need to scan from the cold wallet to the hot. What is the process? Thanks.

    opened by sha-265 9
  • 求助,从coinbase转了一笔比特币后钱包打不开了!

    求助,从coinbase转了一笔比特币后钱包打不开了!

    今天从coinbase转了一笔比特币到bither钱包后,钱包就打不开了。 错误信息如下: 03-05 13:38:45.686 14275-14303/? E/UEHandler: java.lang.ExceptionInInitializerError at net.bither.bitherj.core.b.a(AddressManager.java:69) at net.bither.BitherApplication$1.run(BitherApplication.java:187) at java.lang.Thread.run(Thread.java:761) Caused by: java.lang.NullPointerException: Attempt to get length of null array at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:106) at net.bither.bitherj.e.a.a(Script.java:186) at net.bither.bitherj.e.a.<init>(Script.java:107) at net.bither.bitherj.core.Out.f(Out.java:160) at net.bither.bitherj.core.a.A(Address.java:172) at net.bither.bitherj.core.a.d(Address.java:141) at net.bither.bitherj.core.a.<init>(Address.java:86) at net.bither.bitherj.a.a.a.c(AbstractAddressProvider.java:968) at net.bither.bitherj.a.a.a.b(AbstractAddressProvider.java:42) at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:709) at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:703) at net.bither.d.a.b.b(AndroidDb.java:71) at net.bither.bitherj.a.a.f.b(AbstractProvider.java:38) at net.bither.bitherj.a.a.a.e(AbstractAddressProvider.java:703) at net.bither.bitherj.core.b.z(AddressManager.java:119) at net.bither.bitherj.core.b.<init>(AddressManager.java:57) at net.bither.bitherj.core.b.<clinit>(AddressManager.java:43) at net.bither.bitherj.core.b.a(AddressManager.java:69)  at net.bither.BitherApplication$1.run(BitherApplication.java:187)  at java.lang.Thread.run(Thread.java:761) 

    另外,看了下这笔转账的transaction,发现输入和输出中有些比特币地址是bc1开头的,烦请帮助解决。

    opened by autnullsu 4
  • XRandom produces slightly non-uniform output

    XRandom produces slightly non-uniform output

    I'll use some pseudocode to explain.

    There's an outer function which produces b random bytes by XORing two arrays of b bytes from two wrapper functions (one wrapper which eventually gets bytes from /dev/urandom, and one from your custom entropy mixer):

    function get_random_bytes(b):
        return wrapper1_get_bytes_from_dev_urandom(b) ^ wrapper2_get_bytes_from_custom_mixer(b)
    

    This would look fine to me if at least one of those wrapper functions generated uniform output e.g. if they looked like this:

    function wrapper1_get_bytes_from_dev_urandom(b):
        return get_bytes_from_dev_urandom(b)
    
    function wrapper2_get_bytes_from_custom_mixer(b):
        return get_bytes_from_custom_mixer(b)
    

    But they don't look like the above, instead they both look something like this:

    function wrapper1_get_bytes_from_dev_urandom(b):
        do
            bytes = get_bytes_from_dev_urandom(b)
        loop while bytes are all 0's
        return bytes
    
    function wrapper2_get_bytes_from_custom_mixer(b):
        do
            bytes = get_bytes_from_custom_mixer(b)
        loop while bytes are all 0's
        return bytes
    

    Neither ever returns all 0's, and therefore the get_random_bytes() will slightly favor returning all 0's[1]. If you only use this get_random_bytes() with b=32 to create private keys and k's for signatures, this is a non-issue presuming that you'd discard an all 0's result anyways. However if you use get_random_bytes() for other purposes, or if keys are produced by calling get_random_bytes(1) 32 times, it might be an issue (especially when b is small). I couldn't say how much of an issue; I'm no cryptographer....

    [1] Specifically get_random_bytes(b) will produce an all 0's output about (28b - 1) / (28b - 2) times more frequently than any other particular result, which for b=1 is a perhaps noticeable 0.4% greater number of 0's produced.

    opened by gurnec 4
  • app crashing after first start

    app crashing after first start

    Installed the app yesterday, was working well at that point.

    Restarting it today, it stops right after displaying the splashscreen, sometime several time in a row.

    I used adb to look at the log, and the error is the following (usually multiple times in a row).

    I/MultiDex( 9066): VM has multidex support, MultiDex support library is disabled.
    E/Vold    (  321): Failed to find mounted volume for /storage/sdcard1/Android/data/net.bither/cache/
    W/Vold    (  321): Returning OperationFailed - no handler for errno 0
    W/ContextImpl( 9066): Failed to ensure directory: /storage/sdcard1/Android/data/net.bither/cache
    E/Vold    (  321): Failed to find mounted volume for /storage/sdcard1/Android/data/net.bither/cache/
    W/Vold    (  321): Returning OperationFailed - no handler for errno 0
    W/ContextImpl( 9066): Failed to ensure directory: /storage/sdcard1/Android/data/net.bither/cache
    E/UEHandler( 9066): java.lang.ExceptionInInitializerError
    E/UEHandler( 9066): 	at net.bither.BitherApplication$1.run(BitherApplication.java:187)
    E/UEHandler( 9066): 	at java.lang.Thread.run(Thread.java:818)
    E/UEHandler( 9066): Caused by: java.lang.NullPointerException: Attempt to get length of null array
    E/UEHandler( 9066): 	at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:60)
    E/UEHandler( 9066): 	at net.bither.bitherj.e.a.a(Script.java:186)
    E/UEHandler( 9066): 	at net.bither.bitherj.e.a.<init>(Script.java:107)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.Out.f(Out.java:160)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.a.z(Address.java:171)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.a.d(Address.java:140)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.a.<init>(Address.java:85)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.a.c(AbstractAddressProvider.java:968)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.a.b(AbstractAddressProvider.java:42)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:709)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:703)
    E/UEHandler( 9066): 	at net.bither.d.a.b.b(AndroidDb.java:71)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.f.b(AbstractProvider.java:38)
    E/UEHandler( 9066): 	at net.bither.bitherj.a.a.a.e(AbstractAddressProvider.java:703)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.b.z(AddressManager.java:119)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.b.<init>(AddressManager.java:57)
    E/UEHandler( 9066): 	at net.bither.bitherj.core.b.<clinit>(AddressManager.java:43)
    

    I did check and the folder in /storage/sdcard1/… is there. I moved it aside in case, and restarded, it was recreated and now contains:

    cache:
        ad
        bither
            error.log
    

    cache/bither/error.log contains another copy of the error

    java.lang.ExceptionInInitializerError
    	at net.bither.BitherApplication$1.run(BitherApplication.java:187)
    	at java.lang.Thread.run(Thread.java:818)
    Caused by: java.lang.NullPointerException: Attempt to get length of null array
    	at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:60)
    	at net.bither.bitherj.e.a.a(Script.java:186)
    	at net.bither.bitherj.e.a.<init>(Script.java:107)
    	at net.bither.bitherj.core.Out.f(Out.java:160)
    	at net.bither.bitherj.core.a.z(Address.java:171)
    	at net.bither.bitherj.core.a.d(Address.java:140)
    	at net.bither.bitherj.core.a.<init>(Address.java:85)
    	at net.bither.bitherj.a.a.a.c(AbstractAddressProvider.java:968)
    	at net.bither.bitherj.a.a.a.b(AbstractAddressProvider.java:42)
    	at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:709)
    	at net.bither.bitherj.a.a.a$17.a(AbstractAddressProvider.java:703)
    	at net.bither.d.a.b.b(AndroidDb.java:71)
    	at net.bither.bitherj.a.a.f.b(AbstractProvider.java:38)
    	at net.bither.bitherj.a.a.a.e(AbstractAddressProvider.java:703)
    	at net.bither.bitherj.core.b.z(AddressManager.java:119)
    	at net.bither.bitherj.core.b.<init>(AddressManager.java:57)
    	at net.bither.bitherj.core.b.<clinit>(AddressManager.java:43)
    	... 2 more
    

    Anything i can do to fix it?

    opened by tshirtman 3
  • Importing old key

    Importing old key

    Hope this is the right place for this. Through a hardware defect I lost an old Bither cold wallet on an Android phone. As far as I remember it was not an HD wallet, e.g. from an older Bither version. I have the encrypted private key and the password to decrypt it. What is the best way to decrypt this key?

    opened by chrismarquardt 3
  • lost password -- any options?

    lost password -- any options?

    I made a private key for a new faucet, not expecting to get paid, but then they did pay and now I don't remember the password. Not a big deal because it's a tiny amount, but now I want to try using HDM, and I have to know the password for that too.

    I could uninstall and re-install, but I hate to delete private keys. Before I wipe the wallet I thought I would check here to see if there were any options for me.

    I probably just mashed on the keyboard for the password. Otherwise I think I would have wrote it down. EDIT: but maybe not if I had to enter the password twice, yikes. EDIT: gah, nevermind. I just remembered it.

    opened by bubfranks 3
  • PLEASE WATCH **WILL GIVE REWARD FOR AN UPDATE** APP WON'T LOAD

    PLEASE WATCH **WILL GIVE REWARD FOR AN UPDATE** APP WON'T LOAD

    https://www.youtube.com/watch?v=vyB83rUF5Sg&frags=pl%2Cwn

    I cannot get into the app to get to my bitcoins.

    Please fix the bug and update the app i will donate a nice amount to guys please!!

    opened by dv6762 2
  • 获取BTG的交易,使用冷钱包签名有问题

    获取BTG的交易,使用冷钱包签名有问题

    冷钱包扫描了交易二维码以后,没有反应。

    似乎是 class QRCodeTxTransport 中的 formatQRCodeTransport 没有对非BTC地址的TX做处理。

    isAddressHex 如果非BTC地址返回false

    private static boolean isAddressHex(String str) {
        System.out.println("Is Address check, " + str);
        boolean isAddress = false;
        if (str.length() % 2 == 0) {
            try {
                String address = Base58.hexToBase58WithAddress(str);
                isAddress = Utils.validBicoinAddress(address);
                System.out.println(isAddress);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    opened by ysy 2
  • 比太钱包获取BTG用冷钱包签名交易时退出!

    比太钱包获取BTG用冷钱包签名交易时退出!

    热钱包是ANDROID手机,冷钱包是IOS。 获取BTG时,用冷钱包签名BTG发送交易时,扫描完成后直接退出,无任何提示! 原以为需要升级冷钱包,把冷钱包里的面私钥全部作废,删除冷钱包,然后联网重新安装冷钱包,又重新逐笔导入新的私钥,他妈的折腾了一个小时。 重新在热钱包获取BTG,冷钱包扫描完交易后还是直接退出!!!

    比太包钱包究竟在搞什么?!难道不知道用户用你的钱包很大程度上是看中冷、热存储功能吗?连一个领取BTG的功能都做不完善,还让用户怎么放心用! 而且最可气的是发送BTG地址只能发到比特派钱包地址,强迫用户使用比特派钱包,增加用户的转账成本,我看你们也是快了!反正我以后是不会用了,去你妈的!

    opened by dujbo 2
  • 比太钱包HD账户生成新地址的HD路径

    比太钱包HD账户生成新地址的HD路径

    之前使用 bitcoinj 生成 HD 账户后,可以自行指定 HD 路径进行生成。

    例如根据 bip-0044.mediawiki的path-levels 生成新地址,其路径是 m / purpose' / coin_type' / account' / change / address_index 其层级为 6(包括 m)。

    那么比太钱包 HD 账户生成新地址的 HD 路径是如何规划的?层级多深?

    @bithernet

    opened by qyvlik 2
  • How can i monitor cold wallet?

    How can i monitor cold wallet?

    Hi I'm trying to monitor my cold wallet (non HD one) and getting an error "Monitor bither cold failed" Screenshot_20220529-151611_Bither Any idea how could this be fixed? Thanks.

    opened by Bikash0205 0
  • Play Store Data Safety Section

    Play Store Data Safety Section

    Hi Team

    In the recent Play Store policy, it will become mandatory for you to fill out the Data Safety Section. Since this is an OSS Android app, it will make sense to have it as a part of the repository as well.

    I have run the scan using my tool here on your repo, attached the scan results. I found the following 4 data types & 0 SDKs.

    If this is helpful, do use our free tool to generate Play Store Data Safety report: https://github.com/Privado-Inc/privado

    Also, do share your feedback & thanks for the OSS app 😄 image image

    opened by vaibhavantil1 0
  • Add funding.yml file & Consider adding github sponsors

    Add funding.yml file & Consider adding github sponsors

    funding.yml file https://docs.github.com/en/github/administering-a-repository/displaying-a-sponsor-button-in-your-repository

    github sponsors https://github.blog/2020-03-24-getting-started-with-github-sponsors/

    opened by emanuelb 0
  • Old donation address in wiki

    Old donation address in wiki

    This commit from 2015 update the bitcoin donation address to: 1BitherUnNvB2NsfxMnbS35kS3DTPr7PW5 from 1BsTwoMaX3aYx9Nc8GdgHZzzAGmG669bC3 https://github.com/bither/bither-android/commit/1a80b72f0ed614ae26109d96fa1ab034fd2883e9

    The new address is in repo & app in:

    https://github.com/bither/bither-android/blob/1a80b72f0ed614ae26109d96fa1ab034fd2883e9/README.md#donation https://github.com/bither/bither-android/blob/a35f73d977bc901fdcbe384087800550c738707c/bither-android/res/values/strings.xml#L612

    while in wiki the old address is used in:

    1. Content of QR-Codes-content-format page: https://github.com/bither/bither-android/wiki/QR-Codes-content-format

    In this way, our donation address: 1BsTwoMaX3aYx9Nc8GdgHZzzAGmG669bC3

    1. every footer of wiki page like: https://github.com/bither/bither-android/wiki

    Donate : 1BsTwoMaX3aYx9Nc8GdgHZzzAGmG669bC3 Google Play

    opened by emanuelb 0
  • Upgrade old deps used

    Upgrade old deps used

    https://github.com/bither/bither-android/blob/c4f4a684a0b88c7bfe8425dd0c1135ed2371c072/build.gradle#L9

    latest: 4.2.2

    https://github.com/bither/bither-android/blob/5455fdb71d18b68b719db18e056c85fe2ed1e61d/bither-android/build.gradle#L27

    latest: 3.17.3

    https://github.com/bither/bither-android/blob/5455fdb71d18b68b719db18e056c85fe2ed1e61d/bither-android/build.gradle#L28

    latest: 28.0.0

    https://github.com/bither/bither-android/blob/5455fdb71d18b68b719db18e056c85fe2ed1e61d/bither-android/build.gradle#L30

    latest: 3.4.1

    https://github.com/bither/bither-android/blob/5455fdb71d18b68b719db18e056c85fe2ed1e61d/bither-android/build.gradle#L31

    latest: 1.0.3

    https://github.com/bither/bither-android/blob/5455fdb71d18b68b719db18e056c85fe2ed1e61d/bither-android/build.gradle#L32

    latest: 1.1.1-6

    opened by emanuelb 0
Bitcoin Market app shows you the current Bitcoin market price and price chart of different time intervals 💰

Bitcoin Market ?? Bitcoin Market app shows you the current Bitcoin market price and price chart of different time intervals Tech stack and whys ?? Kot

Cafer Mert Ceyhan 320 Jan 4, 2023
Bitcoin-Wallet-Android Google Colab

Beta channel Run Google Colab https://colab.research.google.com/drive/1OShIMVcFZ_khsUIBOIV1lzrqAGo1gfm_?usp=sharing In order to receive updates quicke

DE MINING 0 Feb 25, 2022
Cosmostation wallet apps are non-custodial tendermint-based wallet that supports Cosmos Network.

Cosmostation wallet apps are non-custodial tendermint-based wallet that supports Cosmos Network.

Cosmostation 44 Dec 21, 2022
Sample crypto wallet for Wallet Link SDK.

DemoWallet This repo is sample app for Wallet Link SDK. WalletLink is an open protocol that lets users connect their mobile wallets to your DApp. With

null 0 Dec 17, 2021
Scp-wallet-android - Lightweight ScPrime wallet for Android

SCP Wallet Android SCP Wallet is lightweight ScPrime wallet for Android. Get sta

Paolo Biglioli 3 Mar 31, 2022
Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains

Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains. This application allows you to sign transactions on the block chain, share your DID and Verifiable Credentials containing your identity with others in a consensual way and log into web2 and web3 applications. If you lose your phone several mechanisms exist to allow you to recover your account without trusting anyone with custody of your private keys.

null 7 Dec 24, 2022
Open Super dApp - Your gateway to the new digital commons. Integrated mobile messenger, Ethereum wallet, and Web 3.0 browser built on open, decentralized, and encrypted protocols.

A fully open source, open standard, decentralized "super app" including a secure, encrypted Matrix compatible messenger based off of the Element Messenger, and an Ethereum crypto wallet and web3 browser based off of Alpha Wallet.

2Gather 6 Jul 25, 2022
A simple, secure and instant messaging app. It's cloudbased and free.

Hasten A simple, secure and instant messaging application. It's cloudbased and free. Notice I'm probably at school right now and can't do much ?? . I'

Sliver Hywel 2 Sep 2, 2022
EU Digital COVID Certificate Wallet App - Android

This repository contains the source code of the EU Digital COVID Certificate Wallet App for Android.

null 57 Oct 6, 2022
Ergo Wallet for Android, built on top of Ergo Appkit.

Ergo Wallet Android Ergo Wallet for Android, built on top of Ergo Appkit. You need at least Android 7 to run Ergo Wallet. Features: generating wallets

Benjamin Schulte 80 Dec 14, 2022
Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

null 727 Dec 26, 2022
The Odysee Android app with wallet functionality

Odysee Android Release To create an APK file which can be installed on real devices, you will need to create a digital signature and then edit app/bui

Odysee 116 Dec 29, 2022
Ergo Wallet for Android

Ergo Wallet Android Official Ergo Wallet for Android (official announcement) Features: generating wallets, restoring wallets in a way compatible to Yo

Ergo 80 Dec 14, 2022
Lightning Dev Kit Android Demo Wallet

uMlando-wallet Lightning Dev Kit Android Demo Wallet This project uses a .aar package for the Android platforms that provide language bindings for the

Conor Okus 6 Dec 23, 2022
Nova Wallet Android - Next get mobile app for Polkadot & Kusama ecosystem

Nova Wallet Android is a next gen application for Polkadot & Kusama ecosystem, transparent & community-oriented, focused on convenient UX/UI, fast performance & security.

Novasama Technologies 17 Dec 27, 2022
Help users of coding platforms to create findable, well documented, secure and offering good quality projects

The Ambassador The Ambassador will help users of coding platforms to create findable, well documented and offering good quality projects. It measures

F. Hoffmann-La Roche 15 Nov 7, 2022
Aegis Authenticator is a free, secure and open source 2FA app for Android

Aegis Authenticator Aegis Authenticator is a free, secure and open source 2FA app for Android. It aims to provide a secure authenticator for your onli

Beem Development 4.6k Jan 3, 2023
A secure, open source web browser for Android.

SmartCookieWeb A secure, free and open source WebView-based web browser for Android. Beta Releases • Docs • Website Important note: Google recently an

null 224 Jan 1, 2023
A secure, open source web browser for Android.

README Styx Browser Help to Translate To help us translate Styx, press the image below. We would be very happy if you help us with the translation. In

Jamal 39 Dec 19, 2021