Hacker News new | ask | show | jobs
by Sreyanth 2857 days ago
No expertise to comment about the tech/crypto design, but Satoshi definitely seemed to care about the users.

I once skimmed through Satoshi's code while I was in college and found this: https://github.com/bitcoin/bitcoin/blob/v0.8.2rc3/src/base58...

I've neither seen any such decision in any other project, nor have I come across any strong advocacy for such things online. FAIW, Satoshi might be a kick-ass UX designer too.

In a different tangent, do any of you remember or still see/make such decisions (mostly to build a better UX)?

6 comments

I used to host counter strike games and voice servers, every one else just gives you a random port number like 39281, ugly, difficult to remember, awkward to tell people. I wrote a script that would generate ports that where easy to remember stuff with doubles and triples like 4040 or 44455. I found it super helpful, no customers ever mentioned it, but if you are doing UX right I guess they should never notice it.
These are very similar to the considerations that were discussed in RFC 3548, which documented Base32 and Base64. I assume they were pretty well known at the time the code you linked to was written.

https://tools.ietf.org/html/rfc3548

A downside of base58 as implemented by Bitcoin: leading zeros are optional, so there are multiple possible valid encodings of a single address, and addresses don't have a fixed length.
That's a lot better than the typical 'pay this invoice with the exact description' you get from municipalities here where the 'exact description' is a string without spaces and a ridiculous number of leading zeros.
Seems e.g. Flickr did roughly the same thing for its short URLs at around the same time.

https://www.flickr.com/groups/api/discuss/72157616713786392/

Douglas Crockford documented his BASE32 encoding in 2002. It's a very friendly format with many nice characteristics, including those in Satoshi's base58 and more (listed in his "requirements" section here: https://www.crockford.com/wrmg/base32.html)
I like it, but I think the exclusion of U is unnecessary -- excluding Z2 or 5S similarities seems like it would be preferable.
Similar features are often found in encryption products, for example openssh which gives you a visually distinct ASCII randomart to easily spot the difference between the keys.