Coder Social home page Coder Social logo

bither-android's Introduction

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

bither-android's People

Contributors

bithernet avatar bitwolaiye avatar emptyzone avatar hanzhenzhen avatar jjz avatar litianqi0101 avatar lujunzhang avatar songchenwen avatar wenhaobtn avatar yiwenlong avatar zbk1nger avatar zhenhh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bither-android's Issues

bip38...great idea...reversing the technolgy...another story.

hello i will be brief.. i created a paper wallet in bitaddress.org. Bip38 is a great invention..even if someone finds your private key they cant sweep it to take the funds without the paraphrase. Now how do we change it back to a private key so we can spend the funds?..and please nobody mention bit2factor.org...they are selling the domain name...im proper depressed i have a lot of bitcoin on a bip38 private key. I have the private key. and the paraphrase .So where do i put this information please?...and do remember all bip38 private keys start with 6p....i wrote this early through the week here goes.....hello my name is mohammed ayyub. I unfortunately have some bitcoin on a private key encrypted with bip38. My Private key is starting with 6P. IF YOU CAN HELP ME I WILL DONATE some bitcoin towards the cause. I also have a website (Bitgangstar.com) promoting bonafide bitcoin info etc. For your help i will give you 1NEEHJLFSdH3hggF77iaMXPAfuoVMuYA4g....(.£41.23) Please check public key in Block chain explorer or any bitcoin website you can check public key status. Status of the key is unspent. You can spend the funds providing you have the private key and Paraphrase. Thank you hope to hear from you soon. I have tried the Bit2factor.org website they are no longer live. They are selling the domain name. ($499.00 usd )...The minute you direct me to the right place i will give you some bitcoin for your time and help

p.s(I'm too embarrassed to tell you how much bitcoin i have on a previous bip38 encrypted private key address ) boohoo.. :(

Compatibility between Bither Android 0.0.8 and Bither iOS 1.2.1

I run Bither Hot (v. 1.2.1) on iOS and Bither Cold (0.0.8) on an always offline Android phone. I just tried to send some BTC from my cold wallet, but Bither on the Android phone will not scan the QR code from the iOS side.

Is there an incompatibility between the two versions? I don't like to update Bither Android because for safety reasons I want to make sure the device has no contact with the outside world.

Restoring a backup copy

Cold wallet. When restoring a backup copy from a SD-card, if there are ordinary private keys (not HD) in the file, then the copy can not be restored - it always displays the message "wrong password" (although the password is 100% correct). If there is only an HD private key in the backup, then everything is restored normally.

BTP send error

When getting forked coin BTP. Always get an send fail error when trying to send to bitpie.
So so everything else seems to be able to transfer to bitpie except for BTP. It just gives an error and stops there.

Derivation path

How can i set a derivation path for import a wallet seed?

Thank you

获取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();
        }
    }

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

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

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

trusted peer config support

It would be great if Bither supported allowing an advanced user to tell it to only connect to peers at specific IP addresses / domains. Bitcoin Wallet on Android supports this, for example.

求助,从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开头的,烦请帮助解决。

crash in GenerateUnsignedTxActivity

Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to com.google.bitcoin.core.Transaction
at net.bither.activity.hot.GenerateUnsignedTxActivity.onCreate(GenerateUnsignedTxActivity.java:130)
crash by savedInstanceState

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.

Stand-alone verification app

Bither's cold wallet is super safe. There is just one problem. The user has to trust the developers to display the actual transaction and not sign a different transaction to steal the user's coins.

I thought it would be good to have a separate app with only 1 function: scan a QR code of a signed transaction, displayed by Bither cold, and display the transaction. This app should be so simple that anyone can read the source code and understand what it does. People could build this app on their own computer and use it to verify transactions that are signed with Bither cold.

What do you think about this idea? I might be interested in giving this a shot but the Bither code is already quite big so I'm not sure where to start. I have some experience with Android development but not much.

MarketFragment List

Markets should use another array list object, but referenced to the same market objects

Bither uses 10% of my battery

Since I have installed Bither on my hot wallet phone, it has used 10% of my battery while I have used it only once. This is a lot.

cant select address to sign with

I created a fresh HD wallet to create a message signing how to, found the corresponding menu point, but the "select address to sign message" box stays empty. Let me know if you need more info, screenshot, seed (its an empty test wallet), etc.

v. 1.6.1 on Android 6.0.1

Cold HD account change address

Hi,
I wondered if when I create new unsigned transaction in hot HD account monitoring wallet, the change address is the same as the input address? Or the hot wallet creates new address for change?
As you know you need to "spend" all the bitcoin in an input address you use for transaction, even if you want to use only part of the amount in the input address. The change is send to address as part of the transaction output. Also it's not safe to use the same bitcoin address more then one time, for privacy concerns, so change should send to newly created address of you wallet.
Thanks.

编译bither-android无法通过

内部引用Bitherj,我将bitherj加入工程后发现缺少许多类,咱们的bitherj是不是很久没有上传代码了?

无法导出密语提示密码错误但是发送比特币时候密码是正确的

Hi 你好
我在使用安卓版比太钱包1.6.8版本时遇到问题
当我想导出HD账户密语时提示需要输入密码,我输入了密码后一直提示密码错误,其他需要输入密码的操作如HD账户二维码,修改密码,重载交易数据等均提示密码错误,但是使用钱包发送比特币时密码正确,但是发送的交易长时间得不到确认

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?

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?

Wrong account balance

Bither shows the wrong account balance.

I tried to "Reload Transactions Data" but it still shows an other balance than i see at blockchain.info

Btd support

When will your wallet or the bitpie wallet support btd (bitcoin Diamond).

Trezor Segwit BTC bip49

I have a bip49 seed with a passphrase, didn't work importing it to bither/bitpie I also have the raw private keys for the (segwit) addresses holding my sbtc in question, but when I import them it gives me legacy addresses with no sbtc balance. Does anyone have any ideas on how I can extract it?

https://blog.trezor.io/using-trezor-with-electrum-v3-a0b9bcffe26e

Here is a list of example derivation paths for BIP49, to use new accounts.
m/49'/0'/0' (first account)
m/49'/0'/1' (second account)
m/49'/0'/2' (third account)
...

If you would rather use legacy accounts, use BIP44 paths.
m/44'/0'/0' (first account)
m/44'/0'/1' (second account)
m/44'/0'/2' (third account)
...

Foreign Addresses Listed with TXs in HD Account Can Be Counter-Intuitive

Michael brings this to us.

I'm planning to make a new dialog other than DialogAddressFull to show this kind of information in an HD Account.

A sample graph goes below.

☀️ ☁️
Own
my address in path 0, this tx delta > 0 receiving
my address in path 1, this tx delta > 0 changing
my address this tx delta < 0 sending
Foreign
a foreign address the amount it sends or receives

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.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.