

Build it with me: Bitcoin wallet for Mac - niico
http://nico.im/blog/bitcoin-wallet-for-mac/

======
msarnoff
If you do decide to build this app, I would highly recommend making it open-
source. Properly building a custom-skinned OS X app is not easy. Compared to
UIKit on iOS, which was built from the ground up to support animation and
appearance customization, AppKit is a dinosaur.

When subclassing controls, you'll encounter AppKit bugs, things that can't be
skinned without overriding private methods, and inconsistencies between OS
versions. The animation APIs are woefully inadequate, especially if you need
to support 10.7 or 10.6. (over two-thirds of the install base as of January,
according to [1])

If done well, the source code would be a valuable resource to the Mac
developer community. Custom-styled desktop experiences are becoming the new
norm, yet building them remains somewhat of a black art.

[1] [http://www.cultofmac.com/208455/os-x-mountain-lion-now-
accou...](http://www.cultofmac.com/208455/os-x-mountain-lion-now-accounts-
for-32-of-mac-web-traffic/)

~~~
nwh
There's also no way that anyone from the Bitcoin community would want to use a
closed-source wallet.

~~~
ianlevesque
Yeah it has to be open source. Accept donations in bitcoins.

~~~
rhoua
Or sell it. People COULD just compile it themselves, but they won't. Free
software != $0 price tag :)

------
jethroalias97
I expect people would be reluctant to use a client not sanctioned by
bitcoin.org officially, although I'm not sure how difficult that is. It may be
as simple as sending an email to get them to add it to the list.

I would think that any new bitcoin wallet could be introducing a substantial
security risk before it has been extensively field tested. If someone where to
sneak some code in, or even just screw up a security protocol, all the stored
bitcoins would be at risk.

1) <http://bitcoin.org/en/choose-your-wallet>

2) <https://en.bitcoin.it/wiki/Wallet>

~~~
nwh
If this were a real client, it would be an interface to bitcoind rather than a
replacement.

~~~
achalkley
Right. I've been working on an RPC client for iPhone.

~~~
ianlevesque
That's awesome, I've been working on a native Cocoa one for OS X.

------
nwh
I'm struggling to feel enthusiastic about this one, it seems to be designed
more to just do _something_ with Bitcoin, rather than provide any actual
innovation.

~~~
pazimzadeh
Really? I don't know of any bitcoin wallets that are really great to use.

I hope that this app or another one can do to Bitcoin what Transmit did to FTP
(<http://panic.com/transmit/>) or the Github native app did to Git
(<http://mac.github.com/>).

~~~
garretruh
Do people really prefer graphical git over the command line? I'm honestly
curious. FTP with a GUI I get, but it doesn't seem like git lends itself as
well to such a UI.

~~~
quantumpotato_
I love gitx for Mac [0]. Shows list of all files changed. Click the file and
each consecutive line of change is shown above. You can stage individual
blocks.

Plus it's much easier (for me) to shift-click a few files than git add
path_to/file_changed N times.

[0]<http://gitx.frim.nl/>

------
ianpurton
Hi niico,

This looks a lot like <https://www.strongcoin.com> but with a dashboard. I
will probably add this kind of functionality too. (I own strongcoin)

But to build your app, I recommend you take the code for
<http://carbonwallet.com> which is already available on github and submit a
pull request for a dashboard like you have in your post.

CarbonWallet is already available as a chrome application, and the logic is
tried and tested.

~~~
niico
Thanks, I will definitely take a look at both. Great job btw with Strongcoin

------
jbaudanza
Maybe throw the code up on github?

------
gesman
I agree with you that most bitcoin wallets are either look ugly or are
hackable online wallets maintained by third party.

Among all I tried I like Electrum the most for it's speed and it's
deterministic nature, i.e. the whole wallet can be fully recovered from
passphrase, instead of regular backups.

~~~
niico
Im glad we are on the same page. Ideally I would love to build a full suite
where you can see and control everything from one app. Iterations from the
basic wallet are pretty much unlimited.

------
question-all
Are there no existing mac bitcoin wallets?

~~~
ianlevesque
Most of the major ones work just fine on OS X: bitcoin-qt, armory, electrum,
multibit. They just don't provide a great user experience.

~~~
samweinberg
I wouldn't say Armory works fine on OS X. In fact, it's a bit of a hassle to
set up. From their website:

>WARNING: This does not work on all OSX systems. We are working hard to expand
the compatibility set. If it does not work for you, most users have success
from the directions on the Building Armory from Source page. It takes a little
bit of effort, but it works!

~~~
nwh
I didn't have any issue with it. Unpacked the DMG, copied it to the
applications folder, started bitcoind and off I went. Hated the program of
course, but that's a different kettle of fish,

------
brvs
This will be useful to all the people who buy useful items and do practical
things with bitcoins. Thank you!

------
kmasters
There are a lot of issues around bitcoin and seeking to build a pretty
interface to it addresses none of them.

One of my objections to bitcoin is the suggestion that I use Tor to mask my IP
to keep my actual IP from occurring in the blockchain.

I think if you are telling users to use Tor to "stay safe" thats a problem
already.

Second, "balance" information from your wallet is also stored in the
blockchain.

Thats comforting, an IP address combined with how much bitcoin I possess. We
have seen where that ended up more than once. Why not just paint a target on
my forehead?

Cold storage is one solution to backing up your bitcoin and keeping it offline
until needed.

Needing to "create a new bitcoin address" for every transaction, also fishy.

I would rather someone build a solution to bitcoins defiencies than see a
pretty screen.

~~~
vhf
> mask my IP to keep my actual IP from occurring in the blockchain.

The blockchain does not store any IP address.

> Needing to "create a new bitcoin address" for every transaction, also fishy.

Creating a new bitcoin address for every transaction is not recommended and
not needed. So no, it's not fishy. On the contrary, having the possibility to
generate different address and using one address for one addressee is quite
smart and useful.

~~~
kmasters
From bitcoin.org

Bitcoin is not anonymous

Some effort is required in order to protect your privacy with Bitcoin. All
Bitcoin transactions are stored publicly and permanently on the network, which
means anyone can see the balance and transactions of any Bitcoin address.
However, the identity of the owner cannot be associated with their Bitcoin
address until personal information is revealed by the owner during an
exchange. This is why it is recommended for Bitcoin owners to use many
different Bitcoin addresses; in fact, you should create a new one each time
you receive money. This is especially important for public uses such as
websites. You might also want to consider hiding your computer's IP address
with a tool like Tor so that it cannot be logged.

~~~
vhf
Well, thank you, I know how bitcoin works. :)

The blockchain does _not_ store any IP address. Read about the protocol or
read the specs or read the code, or easier : ask anybody.

Bitcoin is absolutely not anonymous, and not intended to be anonymous. Which
does not mean that the IP address of the sender and/or receiver is stored into
the blockchain. The blockchain contains txid, amount, addresses and
timestamps, but no IP address.

To examplify what bitcoin.org says in your quote : If you open an account on
anybitcoinstoreorwalletorexchange.com, which assigns you a deposit address or
which allows you to withdraw bitcoin to one of your bitcoin address, then this
website will obviously be able to match your bitcoin address to the IP you
used to visit the website, which might not be in your best interest depending
on the website intention. Therefore, you could use Tor. That is all.

To the point of "a new one each time you receive money", it would be better
phrased as "each time you receive money from a new untrusted peer". Let's say
I got an account on example.com, and want to withdraw bitcoin from this
website for the first time. It is considered best practice to create a new
address to receive these bitcoin. Then whenever I want to withdraw from this
website again, I could use the same address. This is the reason why bitcoin
addresses can be labeled in the bitcoin software. Think of the tuple
(sender_address, receiver_address) as a private key for a specific transaction
funnel.

