Author

Topic: Two questions about bitcoin public key (Read 295 times)

legendary
Activity: 2268
Merit: 18711
September 10, 2019, 03:24:11 PM
#6
Bech32: 1 , b , i , o
P2PKH: O , I ( uppercase letter) , l (lowercase letter) , 0
Am I right?
Yes, this is correct.

I wonder why "b" and "i" are excluded in Bech32 addresses. I think uppercase letter "I" and lowercase letter "l" can cause visual ambiguity much more than "b" and "i". Every one will distinguish "b" and "i" from other characters easily.

You can read about the reasoning behind excluding those characters here in the BIP 173 link I posted above:

We did, the character set does not include "1", "b", "i", or "o"; which is the unique selection which minimizes the number of visually confusing pairs, at least given the NIST visual confusion data we had available to us at the time.

By excluding "1" and "i" you remove the confusion with "l". By excluding "o", you remove the confusion with "0". By excluding "b", you remove any confusion with "h" or "6", or in case of using all uppercase, "B" and "8".
member
Activity: 364
Merit: 13
September 10, 2019, 02:53:36 PM
#5
Bech32 addresses use a custom character set of 32 characters - all case insensitive letters (26) and numbers (10), minus "1", "b", "i" and "o" (outside of the first 3 characters "bc1", known as the human readable part and the separator). This has the advantage of being impossible to make mistakes regarding upper or lower case, as well as generating smaller QR codes. You can read more about this in BIP 173.
So, characters that are excluded in generating Bech32 and P2PKH addresses are different.
Bech32: 1 , b , i , o
P2PKH: O , I ( uppercase letter) , l (lowercase letter) , 0
Am I right?
I wonder why "b" and "i" are excluded in Bech32 addresses. I think uppercase letter "I" and lowercase letter "l" can cause visual ambiguity much more than "b" and "i". Every one will distinguish "b" and "i" from other characters easily.
legendary
Activity: 2268
Merit: 18711
September 10, 2019, 10:02:11 AM
#4
As far as I know, the Base58 encoding removes all the characters 0, O, I, l
It also removes the characters "+" and "/" when compared to the more familiar Base64.

A key is just a long number. It can be expressed in any base you like. You could use Base10 if you wanted, or even Base2, in which case there would be loads of zeroes. We use Base58 to make the number shorter, more easily readable, and reduce the chance of mistaken characters as above.

Bech32 addresses use a custom character set of 32 characters - all case insensitive letters (26) and numbers (10), minus "1", "b", "i" and "o" (outside of the first 3 characters "bc1", known as the human readable part and the separator). This has the advantage of being impossible to make mistakes regarding upper or lower case, as well as generating smaller QR codes. You can read more about this in BIP 173.
legendary
Activity: 1232
Merit: 1255
September 10, 2019, 07:05:34 AM
#3
1. Why doesn't any public key contain "zero" ?

As far as I know, the Base58 encoding removes all the characters 0, O, I, l

2. As far as I know there is no difference between uppercase and lowercase letters when we make a transaction. So, why are there both uppercase and lowercase letters in the public key when they are shown on different block explorers?

only bech32 type addresses (starting with bc1) are case-INsensitive, the others are case sensitive.
legendary
Activity: 1876
Merit: 3132
September 10, 2019, 06:11:05 AM
#2
1. Why doesn't any public key contain "zero" ?

Bitcoin addresses are encoded in a way which makes it easier for a human to read them. Zero could be mistaken for 'o'. The public key itself can contain zero.

2. As far as I know there is no difference between uppercase and lowercase letters when we make a transaction.

There is a difference. Only native SegWit addresses (the ones starting with bc1) are not case sensitive. They are encoded in a different way.
member
Activity: 364
Merit: 13
September 10, 2019, 06:03:24 AM
#1
1. Why doesn't any public key contain "zero" ?
2. As far as I know there is no difference between uppercase and lowercase letters when we make a transaction. So, why are there both uppercase and lowercase letters in the public key when they are shown on different block explorers?
Jump to: