By Satoshi Nakamoto for Bitcoin
Base58 is a numbering system that uses 58 different characters to represent data.
It includes numbers and most uppercase and lowercase letters,
but excludes similar-looking characters such as
0
(zero),
O
(uppercase o),
I
(uppercase i),
and l
(lowercase L) to avoid confusion.
Base58 is beneficial for encoding large integers into shorter, more readable strings:
Base58 was originally created by Satoshi Nakamoto for Bitcoin.
This is a snippet from the original Bitcoin source code:
// Copyright (c) 2009 Satoshi Nakamoto
// Distributed under the MIT/X11 software license, see the accompanying
// file license.txt or http://www.opensource.org/licenses/mit-license.php.
//
// Why base-58 instead of standard base-64 encoding?
// - Don't want 0OIl characters that look the same in some fonts and
// could be used to create visually identical looking account numbers.
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
This feature makes it popular in applications that require manual data entry or visual verification.
Below is a table showing the most common base systems used in computing:
Base | Name | Characters |
---|---|---|
2 | Binary | 01 |
8 | Octal | 01234567 |
10 | Decimal | 0123456789 |
16 | Hexadecimal | 0123456789ABCDEF |
58 | Base58 | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |