Bitcoin Forum
May 06, 2024, 01:39:46 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: 1 2 [All]
  Print  
Author Topic: MacWallet - another bitcoin wallet app  (Read 8671 times)
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 07, 2013, 03:54:30 PM
Last edit: November 06, 2013, 11:57:26 AM by jonas.schnelli
 #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:







1714959586
Hero Member
*
Offline Offline

Posts: 1714959586

View Profile Personal Message (Offline)

Ignore
1714959586
Reply with quote  #2

1714959586
Report to moderator
1714959586
Hero Member
*
Offline Offline

Posts: 1714959586

View Profile Personal Message (Offline)

Ignore
1714959586
Reply with quote  #2

1714959586
Report to moderator
Unlike traditional banking where clients have only a few account numbers, with Bitcoin people can create an unlimited number of accounts (addresses). This can be used to easily track payments, and it improves anonymity.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
hivewallet
Sr. Member
****
Offline Offline

Activity: 378
Merit: 325


hivewallet.com


View Profile WWW
October 07, 2013, 05: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.

Hive, a beautiful, secure wallet with an app platform for Mac OS X, Android and Mobile Web. Translators wanted! iOS and OS X devs see BitcoinKit.
Tweets @hivewallet. Skype us here. Donations appreciated at 1HLRg9C1GsfEVH555hgcjzDeas14jen2Cn
maxmint
Hero Member
*****
Offline Offline

Activity: 700
Merit: 500



View Profile
October 07, 2013, 06:54:41 PM
 #3

Wow, very nice little app!
Small feature request: would it be possible to get a sound signal when receiving coins?

My PGP-Key: 462D02D8
Verify my messages using keybase: https://keybase.io/maxmint
Moebius327
Hero Member
*****
Offline Offline

Activity: 770
Merit: 500



View Profile
October 07, 2013, 06:59:39 PM
 #4

Looking good.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 07, 2013, 07: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.
kangasbros
Hero Member
*****
Offline Offline

Activity: 812
Merit: 1006



View Profile
October 07, 2013, 07:54:22 PM
 #6

I love it!

pa
Hero Member
*****
Offline Offline

Activity: 528
Merit: 501


View Profile
October 08, 2013, 01:51:48 AM
 #7

Is the wallet encrypted? Where in the filesystem is it stored?
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 06: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
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 06: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.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 09: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?
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 09: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.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 10: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

Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 10: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.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 10: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
hivewallet
Sr. Member
****
Offline Offline

Activity: 378
Merit: 325


hivewallet.com


View Profile WWW
October 08, 2013, 10: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!

Hive, a beautiful, secure wallet with an app platform for Mac OS X, Android and Mobile Web. Translators wanted! iOS and OS X devs see BitcoinKit.
Tweets @hivewallet. Skype us here. Donations appreciated at 1HLRg9C1GsfEVH555hgcjzDeas14jen2Cn
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 12:53:54 PM
 #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.

</jonas>
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 02:17:28 PM
 #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.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 08, 2013, 02:53:05 PM
 #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)?

</jonas>
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 04: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.
TheButterZone
Legendary
*
Offline Offline

Activity: 3052
Merit: 1031


RIP Mommy


View Profile WWW
October 08, 2013, 07: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.

Saying that you don't trust someone because of their behavior is completely valid.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
October 08, 2013, 08:00:17 PM
 #21

Did you change the defaults? Pretty sure the keychain is unlocked when the screen is unlocked by default.
TheButterZone
Legendary
*
Offline Offline

Activity: 3052
Merit: 1031


RIP Mommy


View Profile WWW
October 08, 2013, 08: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"

Saying that you don't trust someone because of their behavior is completely valid.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 23, 2013, 11: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
tk1337
Sr. Member
****
Offline Offline

Activity: 266
Merit: 250



View Profile
October 23, 2013, 12:20:45 PM
 #24

It looks pretty slick, however I wish the import wallet feature was working.

Good job though thus far.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
October 23, 2013, 12:31:30 PM
 #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
--
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
November 06, 2013, 12:01:50 PM
 #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
hivewallet
Sr. Member
****
Offline Offline

Activity: 378
Merit: 325


hivewallet.com


View Profile WWW
November 06, 2013, 11:54:15 PM
 #27

New icon is awesome!

Hive, a beautiful, secure wallet with an app platform for Mac OS X, Android and Mobile Web. Translators wanted! iOS and OS X devs see BitcoinKit.
Tweets @hivewallet. Skype us here. Donations appreciated at 1HLRg9C1GsfEVH555hgcjzDeas14jen2Cn
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 08, 2013, 09:42:28 AM
 #28

Very nice!
btcven
Hero Member
*****
Offline Offline

Activity: 715
Merit: 500


Bitcoin Venezuela


View Profile WWW
November 13, 2013, 10:36:49 PM
 #29

Can you add the new languages requests in transifex?

Admin: rdymac (PGP) | contacto@bitcoinvenezuela.com | @cafebitcoin | Electrum, lightweight bitcoin client
If I've been helpful tip me a coffee! Cheesy1rdymachKZpA9pTYHYHMYZjfjnoBW6B3k Bitrated user: rdymac.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
November 15, 2013, 02:10:43 AM
 #30

Can you add the new languages requests in transifex?

Done
btcven
Hero Member
*****
Offline Offline

Activity: 715
Merit: 500


Bitcoin Venezuela


View Profile WWW
November 15, 2013, 01:53:11 PM
 #31

Can you add the new languages requests in transifex?

Done

Spanish translation for MacWallet done

Admin: rdymac (PGP) | contacto@bitcoinvenezuela.com | @cafebitcoin | Electrum, lightweight bitcoin client
If I've been helpful tip me a coffee! Cheesy1rdymachKZpA9pTYHYHMYZjfjnoBW6B3k Bitrated user: rdymac.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 24, 2013, 07: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).
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
November 25, 2013, 12:59:03 PM
 #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
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 30, 2013, 02:39:30 PM
 #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.
jonas.schnelli (OP)
Member
**
Offline Offline

Activity: 66
Merit: 10

bitcoin core contributor


View Profile WWW
December 03, 2013, 02:59:07 AM
 #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
shaobao88
Member
**
Offline Offline

Activity: 65
Merit: 10


View Profile
February 21, 2014, 01:17:40 PM
 #36

Great job! Smiley looks really amazing! I am getting used to it.

Donations please: 1EFZWvKYenToSYtCd98qYwmBnkpRT1Dddr
sleepless
Full Member
***
Offline Offline

Activity: 462
Merit: 100


“Crypto Depository Receipts”


View Profile WWW
March 03, 2014, 02:32:57 PM
 #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

Pages: 1 2 [All]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!