Hey Guys,

I’d like to propose a feature to bitcoin to solve the following problems:

- When people read or write private keys it is very easy to mistake a letter or 
number.
- When entering a private key a mistake isn’t identified until the entire key 
is entered.
- When an error is made in providing a private key the location of the error 
isn’t indicated within the private key.
- Private keys stored on paper can be lost if a single character is damaged or 
poorly transcribed.

The solution I’m proposing has two parts.

First provide an option to use to the NATO phonetic alphabet when displaying or 
entertaining private keys. To indicate lower case the word should not be 
capitalized. Capital letters and numbers should be capitalized.

The nato phonetic alphabet is a long-standing international standard (as 
international as the use of letters and numbers already used in base58) and has 
been designed to make each letter easily distinguishable when spoken and 
written.

By using whole words, that are easily distinguishable and from a very short 
word database (58 well known words that are either the English numbers or words 
that begin with the letter indicated) the likelihood of errors in recovery are 
reduced.

The second part of the solution is to insert checksum letters. If every 5th 
word is actually a checksum for the previous 4 words, you end up with 13 
sentences such as:

ALFA tango THREE SIX bravo

In this case bravo is actually a checksum for the previous 4 words and can be 
calculated and verified as the private key is entered. If the user accidentally 
trumped BRAVO instead of bravo the checksum would immediately indicate an error 
within these 5 words (in most cases) making for a greatly improved user 
experience.

An additional side effect of this is that even if an entire word is lost on 
multiple lines, the  checksum would probably make guessing the correct words 
relatively easy.

I realize some of these issues have been discussed in relation to bip39, but I 
hope this is more likely to be adopted by bitcoin core as it uses existing 
private keys, has no impact on keygen, does not require a standardized and well 
known word list for every language, and is essential just a display format that 
hopefully wouldn’t require invasive code changes.

Thanks in advance for your feedback.

-JW
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to