I wish to reply further (also to cellards last post above); for now, simply to address one issue:
Regarding address formats. I'm seeing a lot of engineering-level discussion but better would be to simply toss samples at test groups and have them type them in, gather comments and so forth.
They
did. Did you read what gmaxwell said upthread? Red highlights are here added.
Bech32 is designed for human use and basically nothing else [...]
In actual testing transfering bech32 addresses to another person is on the order of 5x faster with bech32 due to errors being made even in careful usage of base58-- more than the time itself transferring a base58 address is often insanely frustrating-- you read it, and ... nope, no idea where it's wrong, only that it's wrong -then you try reading the whole thing again and again and again.
[...]
Mature software will tell you _exactly_ where such errors are located, especially if they involve a charset mistake, but even errors beyond that. There should be very little hunt and peck with BECH32, and in my experience there isn't any at all.
that I hate it, I cant handle itI find it absurdly frustrating and error-prone.
This is
what many people report, and even people that said they didn't mind it handled it much more slowly. My
general experience from when we stared on this was that people who said mixed case wasn't an issue changed their mind after actually trying to convey an address view spoken word or writing it down by hand with pencil and paper. ... Either they had never done it before or had done it infrequently enough that they'd already repressed the traumatic memories. I don't doubt that there are some odd people out there which never have any trouble with it, but I haven't encountered anyone yet who doesn't when actually tested on it.
[...]
1. My regards to Pieter Wuille and Greg Maxwell: I can tell that an excruciatingly detailed thought process about Bitcoin address formats went into that bit of engineering. Somebody stayed up in the dark wee hours, pondering the philosophy of Bitcoin address formats. Somebody aspired to consummate perfection in the art of Bitcoin address formats. Well, you are probably also odd. Coming from me, take that as a compliment.
Thanks, including a lot of
testing with both people and machines, several CPU decades went into the design of the error correcting code... and in fact the
techniques even required to be able to measure their performance are themselves novel and probably publishable innovations. Not to mention
extensive review and redesign with many other similarly crazy people. We understood that introducing a new address format is a big step that can't be done often, and thought it would be appropriate and acceptable to really work hard on it.
IIUC, the CPU decades must have crunched alphabets with the
NIST visual similarity data referenced in
BIP 173 and the error-correcting code to find
the alphabet which, per available data, would have the lowest statistical likelihood of undetected or unrecoverable bit errors.
(gmaxwell, am I correct in this inference?) Those data were originally gathered from humans; and the resulting address format was tested with humans.
It is a rule in UI/UX design that you never ask people what they subjectively prefer, because they dont actually know what works better for them. Instead, you test performance. How long does an average user take to transcribe an address in a particular format? How many errors are made on average? These are objective measures. According to the foregoing,
all discussed upthread, this was done with Bech32.
P.S., try
playing around with Bech32. Its really an awesome format for pseudorandom bitstrings. Im currently trying to
apply it elsewhere, too.