# What is Base58 and How Does BSV use it?

<figure><img src="https://hub.bsvblockchain.org/~gitbook/image?url=https%3A%2F%2F2147185133-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FWtK4ab0ntyPZBmGoKq4t%252Fuploads%252Fgit-blob-31a5e350261bb26b2dbf2b58d6f7607e593b020b%252FBSVA-HashFunctions_Ch2L2_DA1%2520%281%29.gif%3Falt%3Dmedia&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=82c0a8f6&#x26;sv=2" alt=""><figcaption></figcaption></figure>

#### What is the “Check”?

The **“check” in Base58Check** refers to a short **checksum** (a hash value) that is **appended** to the end of the Base58-encoded data.

* This checksum acts as a **built-in integrity check**.
* If any character in the data changes, the checksum will no longer match.
* This ensures errors (such as typos or tampering) can be **detected automatically**.

***

#### Real-World Example

Suppose **Alice wants to send BSV to Bob**:

1. Alice scans Bob’s wallet address via QR code.
2. Her wallet saves the **checksum bytes** of Bob’s address.
3. Unknown to Alice, her phone has **malware** that tries to swap Bob’s address with an attacker’s address.
4. Before broadcasting the transaction, Alice’s wallet runs a **checksum integrity check**.
5. The altered address **fails validation**, and the transaction is blocked.
6. Alice removes the malware and successfully resends the funds to Bob.

👉 **Key takeaway:** The checksum helps protect against **errors and malicious tampering** before transactions are sent.

***

#### Features of Base58Check

Base58Check encoding provides several important features:

* **Flexible input size** → Works with arbitrary-length data.
* **58 alphanumeric characters** → No ambiguous symbols (avoids 0/O, I/l).
* **Version byte** → Indicates type of data (e.g., `0x00` for addresses, `0x05` for alternatives).
* **Checksum (4 bytes)** → Based on SHA-256, detects errors automatically.
* **Preserves leading zeros** → Ensures correct handling of padded values.

***

#### How BSV Uses Base58Check

In the **BSV system**, Base58Check is used to:

* **Encode addresses** → Derived from public keys during address creation.
* **Export/import private keys** → Through **Wallet Import Format (WIF)**, making wallet transfers more secure and user-friendly.

**🔗 Learn more on the BSV Wiki:**

* [Encoding a BSV Address in Base58Check](https://wiki.bitcoinsv.io/index.php/Base58Check_encoding) &#x20;
* [Wallet Import Format](https://wiki.bitcoinsv.io/index.php/Wallet_Import_Format_\(WIF\))


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hub.bsvblockchain.org/higher-learning/bsv-academy/bitcoin-primitives-hash-functions/base58-and-base58check/what-is-base58-and-how-does-bsv-use-it.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
