One of Satoshi Nakamoto's creations in order to make Bitcoin a reality is Base58 encoding, a type of cryptographic function specially designed to Bitcoin whose main function is to transform the bytes resulting from the synthesis of data represented by a series of bytes, (to which a specific cryptographic process is applied to transform the output to a standardized format within the network) into something that was easily readable and verifiable.
The function can not only encode the information, but also decode it and do the checksum Of the same. In fact, all these functions are easily identifiable in the Bitcoin source code. First of all, the definitions of all these functions are available in the header (function and macro definition header in C/C++), base58.h, available in the following link

While the code of the functions can be reviewed and verified by reviewing the base58.cpp file, available in this other link. It is these two parts that make it possible for Base58 to work within Bitcoin.
A function to facilitate the use of Bitcoin
So Base58 basically does something that makes Bitcoin easier for us: transform the source data of an address into the readable format we know of them. For example, something as simple as this function is what allows us to reduce a large amount of data, such as a key ECDSA, into something much more manageable and readable, such as a Bitcoin address with its 20 characters long (in the standard or legacy version of these addresses and that start with 1 or 3).
Now, how does this whole process happen? Well, the process is quite simple and can be divided into the following steps:
- First, the version/application data is taken, together with the data corresponding to the public key of our cryptocurrencies. These data are treated in bytes.
- Next, the SHA-256 hash of all the concatenated data begins to be calculated. Here we have our first SHA-256.
- The previous result is taken as the value for a new round of SHA-256, and with it we have the SHA-256 hash of the previous hash.
- With the second hash calculated, we will take the first four bytes resulting from it.
- Now we concatenate the data from the second SHA-256 hash (step 3) and join it to the data set from step 1.
- The above concatenation will be treated as a set of bytes in big-endian format (a computational data storage and processing format). At this point, the conversion of data to Base58 begins, using a special alphabet (defined in the following image). Throughout this process, care is taken to normalize the result so that it does not have Base58 zeros at the beginning of the string (in which case they are represented with the value "1").
- In the end, the process ends with a concatenation of all the "1"s resulting from the previous step to obtain the final Base58 value.
Used in addresses and other cryptographic data within Bitcoin and beyond
The use of Base58 can be seen in different parts of Bitcoin. For example, it can be seen in the encoding of Bitcoin addresses, since they are processed by the Base58 function to transform them into the Bitcoin addresses that we know. It is also used in private keys in WIF format. But it is not only used in Bitcoin, other cryptocurrencies also use this function. For example, Bitcoin derivatives like Litecoin o Dogecoin they use Base58 in their software, other cryptocurrencies and digital currencies like Ripple, Dash, Elixir, and even Interplanetary File System (IPFS) it also uses Base58 in its software.
This makes very clear the enormous utility of this function that has gained space not only in the world of cryptocurrencies but also in different spaces dedicated to offering decentralized technology, and where the creation of Satoshi Nakamoto is included not only for its extreme functionality, but also as a tribute and reminder of everything that has been achieved since he made his creation known to the world.