Author

Topic: MacWallet - another bitcoin wallet app (Read 8680 times)

full member
Activity: 462
Merit: 100
“Crypto Depository Receipts”
March 03, 2014, 10:32:57 AM
#37
Love it.

But it would be really nice if I could import my wallet and also it would be awesome if I could delete the BTC-icon from the menubar.

Another nice feature would be to let the user select the data-source for the ticker like here: https://itunes.apple.com/us/app/bitcoin-ticker-to-the-moon!/id731453251?mt=12
member
Activity: 65
Merit: 10
February 21, 2014, 09:17:40 AM
#36
Great job! Smiley looks really amazing! I am getting used to it.
member
Activity: 66
Merit: 10
bitcoin core contributor
December 02, 2013, 10:59:07 PM
#35
Hi Jonas,

I saw another couple of bugs.

As before,  a transaction arrived for the wallet but despite claiming to be connected, the tx didn't show up.

I restarted MacWallet a few times and now the "Last transactions" menu is entirely empty, though it says the money is there.

Hmm… transactions are never stored by MacWallet. It comes more or less directly from bitcoinj's wallet.getTransaction(hash).
If the last transactions menu is not there/empty, maybe a update/timing issue occurred or bitcoinj throwed a exception. Could you start MacWalled by console to get some output? That would really help.
MacWalled needs better error handling! Will be done a.s.a.p.

My balance currently has a 0.0000000000000001 BTC component to it which is incorrect. Are you storing/rendering balances as a float? Never use floating point numbers for currency! Instead use the bitcoinj formatting routines to get strings, or whatever Cocoa's equivalent of the java BigDecimal class is.

Currently i'm storing the balance as satoshis (nanos) in a long long. But when it comes to a display, i render it as a double /100000000.0.
But let my try to use the bitcoinj formatting routings and show/pass strings.

Thanks for your feedback! Really appreciate that!

jonas
legendary
Activity: 1526
Merit: 1129
November 30, 2013, 10:39:30 AM
#34
Hi Jonas,

I saw another couple of bugs.

As before,  a transaction arrived for the wallet but despite claiming to be connected, the tx didn't show up.

I restarted MacWallet a few times and now the "Last transactions" menu is entirely empty, though it says the money is there.

My balance currently has a 0.0000000000000001 BTC component to it which is incorrect. Are you storing/rendering balances as a float? Never use floating point numbers for currency! Instead use the bitcoinj formatting routines to get strings, or whatever Cocoa's equivalent of the java BigDecimal class is.
member
Activity: 66
Merit: 10
bitcoin core contributor
November 25, 2013, 08:59:03 AM
#33
Hi Jonas,

A few comments:

Adresses -> addresses

The "Connected peers" menu item doesn't have the right padding.

The title of the transaction details window is just "Window".

These sorts of visual glitches can easily undermine confidence in a piece of software - I'd suggest going over the UI carefully to make sure there aren't any more.

Also, I noticed that after a while it had dropped P2P connections and I had to restart the app to make it notice a transfer. But there was no visual indication of that.

Finally, you could allow people to see where the wallet file is stored, right now it's too hard to make a backup. And experience from MultiBit suggests you should make multiple backups of peoples wallets for them, in case of some kind of corruption (bitcoinj won't do that for you).

Thanks mike.
Yes. Totally agree with that. Confidence is important when it comes to a bitcoin wallet app.
Will do some changes soon.

j
legendary
Activity: 1526
Merit: 1129
November 24, 2013, 03:50:15 PM
#32
Hi Jonas,

A few comments:

Adresses -> addresses

The "Connected peers" menu item doesn't have the right padding.

The title of the transaction details window is just "Window".

These sorts of visual glitches can easily undermine confidence in a piece of software - I'd suggest going over the UI carefully to make sure there aren't any more.

Also, I noticed that after a while it had dropped P2P connections and I had to restart the app to make it notice a transfer. But there was no visual indication of that.

Finally, you could allow people to see where the wallet file is stored, right now it's too hard to make a backup. And experience from MultiBit suggests you should make multiple backups of peoples wallets for them, in case of some kind of corruption (bitcoinj won't do that for you).
hero member
Activity: 715
Merit: 500
Bitcoin Venezuela
November 15, 2013, 09:53:11 AM
#31
Can you add the new languages requests in transifex?

Done

Spanish translation for MacWallet done
member
Activity: 66
Merit: 10
bitcoin core contributor
November 14, 2013, 10:10:43 PM
#30
Can you add the new languages requests in transifex?

Done
hero member
Activity: 715
Merit: 500
Bitcoin Venezuela
November 13, 2013, 06:36:49 PM
#29
Can you add the new languages requests in transifex?
legendary
Activity: 1526
Merit: 1129
November 08, 2013, 05:42:28 AM
#28
Very nice!
sr. member
Activity: 378
Merit: 325
hivewallet.com
November 06, 2013, 07:54:15 PM
#27
New icon is awesome!
member
Activity: 66
Merit: 10
bitcoin core contributor
November 06, 2013, 08:01:50 AM
#26
New release is here:
https://github.com/MacWallet/MacWallet/releases/tag/V0.12.1

* bitcoin amount can now also be entered with "," as dec. separator
* wallet balance is now more accurate after sending coins
* new icon thanks to Kevin Eichhorn
* added french translation
* switched update appcast url to macwallet.org domain
member
Activity: 66
Merit: 10
bitcoin core contributor
October 23, 2013, 08:31:30 AM
#25
It looks pretty slick, however I wish the import wallet feature was working.

Yes. Needs to get implemented soon.
Why not creating a issue and write a bit of a specification?

https://github.com/MacWallet/MacWallet/issues

thanks
--
sr. member
Activity: 266
Merit: 250
October 23, 2013, 08:20:45 AM
#24
It looks pretty slick, however I wish the import wallet feature was working.

Good job though thus far.
member
Activity: 66
Merit: 10
bitcoin core contributor
October 23, 2013, 07:42:48 AM
#23
I just release V0.12

Changes:
+ wallet encryption is now possible
+ QRCode for incoming addresses
+ German and Portuguese translations
+ improved UI
+ show Bitcoin icon in status bar
+ incoming payment notifications
+ fixed BTC formating error
+ 10.9 Maverick compatible
- removed keychain store option (currently to dangerous)

Screenshots:
https://github.com/MacWallet/MacWallet/blob/master/SCREENSHOTS.md

Binary Release:
https://github.com/MacWallet/MacWallet/releases/download/V.0.12/MacWallet_v0.12.23_oct_2013.zip
legendary
Activity: 3010
Merit: 1031
RIP Mommy
October 08, 2013, 04:13:29 PM
#22
Did you change the defaults? Pretty sure the keychain is unlocked when the screen is unlocked by default.

Maybe. Can't remember.

Check "Lock after n minutes of inactivity" under Keychain Access>Change Settings for Keychain "Login"
legendary
Activity: 1526
Merit: 1129
October 08, 2013, 04:00:17 PM
#21
Did you change the defaults? Pretty sure the keychain is unlocked when the screen is unlocked by default.
legendary
Activity: 3010
Merit: 1031
RIP Mommy
October 08, 2013, 03:56:17 PM
#20
Bear in mind, when you are logged in and the screen is unlocked, so is the login keychain.

As I type this, my login keychain is locked. I can't access stored passwords or notes without first entering my keychain password.
legendary
Activity: 1526
Merit: 1129
October 08, 2013, 12:17:30 PM
#19
How would that work? The password is a constant. Google Authenticator implements OTP protocols.

I think the Trezor is the best way forward for purely local security. Third parties that risk analyze your transactions can work too, although then we run into the need for multisig transactions and (until the payment protocol becomes widespread) p2sh addresses. But Trezor exists and is real, Gary is implementing support for it in "trezorj" and I guess other wallets will follow suit.

At some point I hope we can combine trezorj and bitcoinj so all SPV wallets can benefit from Trezor support easily. But it's gonna be a lot of work to get there.
member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 10:53:05 AM
#18
It's a neat experiment. However I think it may be less secure than the default Bitcoin encryption. Bear in mind, when you are logged in and the screen is unlocked, so is the login keychain. That means any malware on the system that can obtain root can go ahead and take the keys without any user interaction. It's not totally insecure because you still need a local root exploit, but, kernels are huge and there are surely lots of exploits remaining undiscovered.

right!

By storing the wallet in the keychain (whole wallet file), the user could make sure, nobody can grab his harddisk and steal his bitcoins.
By adding a AES encryption to the wallet (bitcoinj layer), and than store the wallet as written above to the keychain, the user could make sure, no malware can easily access his bitcoin wallet.

I think storing the passphrase into the keychain will decrease security.
The user should pick a password and not store it in the environment where the app "lives" (should keep the pass in his mind).

Mike. What do you think about integrating tools like "Google Authenticator" to the AES leayer (instead or and a passphrase)?

legendary
Activity: 1526
Merit: 1129
October 08, 2013, 10:17:28 AM
#17
My concerns are, that the keystore is default tied to the login credentials. What if someone want's to have "another level" of security and use another password for his bitcoin wallet.

They can create another keychain, although that's probably not very intuitive.

Using keychains has another advantage - that's usually how things like smartcards and other hardware tokens are integrated into the OS. In some cases the keychain might even be stored in hardware.

It's a neat experiment. However I think it may be less secure than the default Bitcoin encryption. Bear in mind, when you are logged in and the screen is unlocked, so is the login keychain. That means any malware on the system that can obtain root can go ahead and take the keys without any user interaction. It's not totally insecure because you still need a local root exploit, but, kernels are huge and there are surely lots of exploits remaining undiscovered.
member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 08:53:54 AM
#16
We'd like to keep BitcoinKit fairly open, supporting as many Bitcoin implementations as we can. That said, if you have made improvements to BitcoinKit that we can use, please do send us a pull request!

Keep it open to a maximum of Bitcoin implementations is a good idea!

The problems i face with pull requests are:
- Hives BitcoinKit.Framework share the same interface for multiple Bitcoin implementations (currently bitcoind and bitcoinj). I did add some features like managing multiple addresses to the bitcoinj side. I was not able to also write the implementation for the bitcoind side. A pull request would end up in having a half/half implementation (unless somebody writes the bitcoind counterpart).
- I removed the bitcoind side and renamed the framework from BitcoinKit to BitcoinjKit. Merging Pull-Requets might give some work.

As mentioned before: as long as bitcoind seams not to be end-user capable, i would recommend to not support both implementations. In my eyes, bitcoind is something for root servers (or VPS). Running bitcoind on a normal machine will end up in having around 20%-30% of your resources consumed by bitcoind. During the catch-up even much more.

I'd like to invest (work) in a wallet that can be run all the time in background without loosing your computers resources.

What if the Hive version of the framework would also drop bitcoind support as long as it makes no sense? Drop means not deleting the implementation. I think it's more about moving it to another non-master branch and take back the work as soon as SIPA has done his thin client mode in bitcoind.

sr. member
Activity: 378
Merit: 325
hivewallet.com
October 08, 2013, 06:55:32 AM
#15
We'd like to keep BitcoinKit fairly open, supporting as many Bitcoin implementations as we can. That said, if you have made improvements to BitcoinKit that we can use, please do send us a pull request!
member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 06:46:29 AM
#14
BTW for the keychain - are you sure there are no size limits on what can be stuffed into there? MultiBit uses rolling backups because there were cases where data got partially written to disk and other weirdness, so you might want to consider using the regular wallet encryption feature and then putting the encryption key into the keystore, rather than putting the entire wallet in there.

The size limit should be 2^32 - 1. Should be enough for giant wallets.
I also read that it should be written somehow atomically (as you do with bitcoinj wallet files) to ensure keychain integrity.

It's marked as "experimental" because of a lack of testing.
But it might be also a good idea to store just the AES encryption key. Then it's quasi a key in a keystore (osx) for a keystore (wallet file), which should be fine.
My concerns are, that the keystore is default tied to the login credentials. What if someone want's to have "another level" of security and use another password for his bitcoin wallet.

I need to rethink the whole keychain store when i have some free minutes in my mind. Smiley
legendary
Activity: 1526
Merit: 1129
October 08, 2013, 06:08:18 AM
#13
BTW for the keychain - are you sure there are no size limits on what can be stuffed into there? MultiBit uses rolling backups because there were cases where data got partially written to disk and other weirdness, so you might want to consider using the regular wallet encryption feature and then putting the encryption key into the keystore, rather than putting the entire wallet in there.
legendary
Activity: 1526
Merit: 1129
October 08, 2013, 06:04:39 AM
#12
OK. Good to know you found something that works for you. If you want to try switching to the cppjvm generated bindings let me know. I was able to make it spit out wrappers that looked fairly natural C++:

https://github.com/mikehearn/cppjvm/blob/master/mytest/bcj-hello-world.cpp

member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 05:54:12 AM
#11
How are you doing all this stuff? Are you hacking on a local copy of BitcoinJKit, or submitting patches to the Hive guys, or ... ? Also did you check out the cppjvm bindings or are you doing manual JNI?

I did fork the BitcoinKit.Framework (https://github.com/jonasschnelli/BitcoinJKit). There are some improvements over the Hive version. Because i dropped the bitcoind support (only bitcoinj support) i decided not to create Pull-Requests. In my eyes, bitcoind is currently not end-user ready ("normal" end users).
I would recommend the hive guys to partial migrate some of my BitcoinJKit commits. If they also drop bitcoind support, they might pull all my commits.

For storing it into the Keychain, i use bitcoinj wallet-save-to-steam functions. The wallet will never be written to a file (when activating the keychain-wallet flag).

BitcoinJKit currently uses JNI (JNI_CreateJavaVM). Complex objects are transferred between Java/Obj-C as a JSON representation. Easy and simple.
legendary
Activity: 1526
Merit: 1129
October 08, 2013, 05:03:10 AM
#10
How are you doing all this stuff? Are you hacking on a local copy of BitcoinJKit, or submitting patches to the Hive guys, or ... ? Also did you check out the cppjvm bindings or are you doing manual JNI?
member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 02:56:02 AM
#9
Is the wallet encrypted? Where in the filesystem is it stored?

Currently the wallet-file is not encrypted.
It's stored in your ~/Library/Application Support/MacWallet

Theres a cool option which get extended soon:
You can store your wallet in the mac osx keychain.
So it's by default encrypted and protected with your login credentials.


AES encryption will be added soon.
member
Activity: 66
Merit: 10
bitcoin core contributor
October 08, 2013, 02:45:37 AM
#8

You should check out this article:

  https://code.google.com/p/bitcoinj/wiki/SpeedingUpChainSync

That way you can make it sync more or less immediately for new users. If that's hard for some reason, let me know.

Yes. I was focusing (to) much on UI. Will implement this soon.

Maybe "addAddress" should be "Add Address"?

There are some typos... and unfilled i18n fields Smiley
Thanks for that
pa
hero member
Activity: 528
Merit: 501
October 07, 2013, 09:51:48 PM
#7
Is the wallet encrypted? Where in the filesystem is it stored?
hero member
Activity: 812
Merit: 1006
October 07, 2013, 03:54:22 PM
#6
I love it!
legendary
Activity: 1526
Merit: 1129
October 07, 2013, 03:21:06 PM
#5
Very cool! I'm so happy to see this abundance of wallets. It's what I always hoped for.

You should check out this article:

  https://code.google.com/p/bitcoinj/wiki/SpeedingUpChainSync

That way you can make it sync more or less immediately for new users. If that's hard for some reason, let me know.

Maybe "addAddress" should be "Add Address"?

I guess you should make checking for updates on by default as well.
hero member
Activity: 770
Merit: 500
October 07, 2013, 02:59:39 PM
#4
Looking good.
hero member
Activity: 700
Merit: 500
October 07, 2013, 02:54:41 PM
#3
Wow, very nice little app!
Small feature request: would it be possible to get a sound signal when receiving coins?
sr. member
Activity: 378
Merit: 325
hivewallet.com
October 07, 2013, 01:01:42 PM
#2
Looking really good, Jonas! Love that fee calculator too, awesome idea!

Would be great if you could get this running on 10.6 or earlier; we felt so terrible leaving those systems out in the cold.
member
Activity: 66
Merit: 10
bitcoin core contributor
October 07, 2013, 11:54:30 AM
#1
I'd like to introduce another bitcoin wallet app.
MacWallet is a easy-to-use mac bitcoin wallet based on bitcoinj.
It's a thin client (SPV). It's in early development stage. Use it whise and at your own risk.



Thanks to the Hive developers (and bitcoinj!), i was able to write the wallet i always dreamed of:
- Mac global menu app
- Can easy run in background (low memory and cpu footprint)
- Always show my balance and/or a fiat/btc-ticker
- Nativ interface

It's under MIT license and the source code is available at www.github.com/MacWallet/MacWallet.

Download and Requirements
- MacWallet needs OSX 10.7 or higher as well as a 64bit CPU.
- Java Runtime Enviroment is also required and will be installed automaticly by your mac during the first start of MacWallet.
You can download a signed binary from http://macwallet.github.io.

Every feedback and every testing effort will help MacWallet to get more stable.
Report issues here: https://github.com/MacWallet/MacWallet/issues

Some screenhots:







Jump to: