A Bitcoin address looks like a system code: a meaningless sequence that the app spits out and you copy, afraid of making a mistake. It's the opposite of that. The address is the end of a short, public, and verifiable recipe, and each step of it exists for a reason that fits into a sentence.
The starting point is the public key from the previous lesson. It goes entirely into the SHA-256, and the result of this first pass goes into a second hash function, the RIPEMD-160 — published in 1996 by Hans Dobbertin and two colleagues from the COSIC lab in Leuven, Belgium. It returns 160 bits, or twenty bytes. The result of this duo has a name: hash160.
Two functions from different families, in sequence, solve two things at once. They shorten the address because twenty bytes take up much less space than the public key. And they keep the public key hidden: what you publish when you request a payment is not the key itself, but its summary. The key only appears on the day you spend those coins.

A byte is added in front of the hash160, the version byte. Zero for common addresses, five for those starting with 3. This byte makes every address of a type always start with the same character — it's not decoration, it's the prefix telling the wallet which recipe to apply on the other side.
Then comes the checksum. You take the version plus hash160, apply SHA-256 twice, and the first four bytes of the result are appended at the end. There are twenty-five bytes in total: one for the version, twenty for the hash, and four for verification.
The final step is writing. The twenty-five-byte number is converted to base 58, an alphabet Satoshi created by removing four letters from the set of sixty-two: zero, uppercase O, uppercase I, and lowercase L. The reason is written in the original source code, as a comment: they are exactly the characters that get confused when someone reads from the screen or copies by hand.
And that's where the checksum works. By changing one character of an address, the four bytes at the end no longer match what the calculation produces, and the wallet refuses before assembling any transaction. The chance of a mistyped address passing anyway is about one in four billion.

Addresses starting with bc1 follow another writing, bech32, proposed in 2017 by Belgian developer Pieter Wuille. They are all lowercase, which makes them fit into much smaller QR codes, and their checksum is from a stronger family: besides detecting the error, it can point out where the error is. A modern wallet not only says the address is wrong — it underlines the character.

It's important to be exact about what all this protection does not do. The checksum checks the integrity of the address, never the intention of the person who wrote it. An address belonging to someone else is a perfectly valid address, and the money sent to it arrives, with all calculations matching. There is malware that waits for an address to appear in the clipboard to replace it with another the moment you paste. Against this, the checksum can do nothing: only check the first and last characters with your eyes, as the beginner's trail recommended.
Notice what this recipe does not have. It doesn't have registration, it doesn't have a server, it doesn't have a step where someone needs to give permission. There are three hash functions, a version byte, and a base conversion — and anyone with the public key in hand arrives at the same address your wallet did, in the same way, without asking anyone anything.
The address tells where the money goes. The other half is missing: the proof that the person sending has the right to send, given without showing the key to anyone. In the next lesson, digital signatures.