**We owe a lot to Satoshi Nakamoto, the creator of Bitcoin. He boasts many achievements, apart from the blockchain. Base-58 is another one of them. What is it actually about? In today’s lesson we will explore the topic.**

**Base-58 – Definition**

**Base-58** is a group of **binary-to-text encoding** schemes. It is used to represent large integers as alphanumeric text. The coding systems that existed in **Satoshi’s** time were not suitable for his work. Therefore, to make it easier for himself, **Nakamoto** came up with such an innovation.

**Satoshi Nakamoto** wanted the option to convert frequent **Bitcoin** elements, such as **private keys** and **addresses**, into a format that is easy to share and use. His example, in fact—**Bitcoin’s** example—has been followed by many **cryptocurrencies**, which also utilize **Base-58** encoding in their operations, particularly to simplify transactions. The use of this technology has found its place in everything from master key passwords to **Ripple** addresses and short URLs.

**How Does Base-58 Work?**

The term ‘Base’ refers to the number of characters used to represent a number. Therefore:

**Base-2**: The binary system we are familiar with, using two characters: 0 and 1.**Base-10**: It represents numbers using 10 characters from 0 to 9.**Base-16**: Better known as hexadecimal, it uses 16 characters: 0123456789abcdef.**Base-58**, similarly, uses 58 characters. In its operation, it uses all alphanumeric characters (0-9, a-z, A-Z) except for the easily confused characters.**Base-58**does not include zeros, uppercase i (I) and o (O), lowercase l, and + and / symbols. The purpose of**Base-58**is to represent large numbers in a short format, while avoiding easily misinterpreted characters.

Numbers encoded in **Base-58** are approximately 56.7% the size of their decimal counterparts. Eliminating visually similar characters reduces the chance of human error—whether in transcribing or reading.

As mentioned earlier, **Base-58** has found its way into numerous contexts. Apart from its use in **blockchain** **technology** and **cryptocurrencies**, it is also employed as a compact method for encoding path or file name data in various applications.

**Base-58 and Cryptocurrencies**

There are many variations of **Base-58** that are in use. The simplest ones simply alter the alphabet (this usually involves changing the order of the letters). A notable example is **Ripple**; in its code it uses characters that appear almost random. In fact, they were chosen so that the first characters of important sequences always share a common, significant letter.

**Monero** encodes long sequences into short, 8-byte blocks. The data has a deterministic size. The **Monero** address itself is 69 bytes long. Thanks to the use of block coding and padding scheme, 69-byte **Monero** addresses will consistently be represented as 95 characters when encoded.

**Checksums**

Checksums play a crucial role in **Base-58** encoding. There are three distinct schemes used for checksums. **Bitcoin** introduced **Base58Check**, which enables the addition of a prefix to the data. In practice, this prefix is a single byte, although it is not a technical requirement. The combined prefix and data are then hashed using **SHA256**. The resulting hash is processed through **SHA256** again. Finally, the first four characters are utilized as a checksum.

**Avalanche** has introduced a simpler version of **Base58Check**. It eliminates the second pass through SHA256.

Another example would be the **Substrate SDK for Polkadot**, which introduces **SS58**. This is an address format with an implied checksum algorithm based on Base58Check, but with a few important differences. Instead of using SHA2, it uses Blake2 for the cryptographic hash function.

You must remember that the size of the **checksum** can vary from one to eight bytes. All depending on the address format used. The main challenge in implementing the **Base-58 library** lies in the fact that a significant portion of the coding process revolves around performing basic mathematical operations on very large numbers.

**Disadvantages of Base-58 **

Power bases are entered very quickly. The input text is a power of two numbers. When encoding text, it involves changing the base between base 256 and the new base. For base 64, we can do this using bit shifting and masking. With base 58, however, we have to use division, which makes the process very slow. The **Base-58** encoding scheme relies on long division to change the base. Therefore, this makes it useful only for small chunks of text, such as **Bitcoin wallet addresses**. For other, larger amounts of data, it is practically useless. Here’s why:

- Encoding is very slow.
- The encoding alone requires the implementation of a complex, base-changing converter.
- The code itself must include a library of high-precision integers.
- We may implement complex code manually, which further increases encoding time.

**So Why Does Base-58 Make It Easier for Us to Use Bitcoin?**

It converts the address source data into a readable format. For example, the **ECDSA** key is transformed into an easy-to-read **Bitcoin address**, which consists of 20 characters. **Base-58** is also used in **private keys** in the WIF (Wallet Import Format) standard. Other cryptocurrencies also use this feature.

**Summary**

Despite its drawbacks, the **Base-58** feature proves to be highly valuable and practical. Its applications extend beyond the **cryptocurrency industry**, encompassing various sectors dedicated to **decentralized technology**.