# Bitcoin Primitives: Hash Functions

<figure><img src="/files/2VMnsqFKvcl9mgJyvo9n" alt=""><figcaption></figcaption></figure>

Mastering **hash functions** is essential to understanding how the BSV blockchain achieves security and data integrity. This beginner-friendly path breaks down complex concepts into clear, practical knowledge—no prior blockchain experience required.

Through seven focused courses and a quiz, you'll explore the fundamental role hash functions play in Bitcoin's architecture, from address generation to security models.

#### What You'll Learn

* **Core Concept:** What hash functions are and why they're fundamental to blockchain security
* **Specific Functions:** The hash functions used in BSV (SHA-256, RIPEMD-160) and their applications
* **Practical Application:** How hash functions are used in BSV for addresses, transaction IDs, and block headers
* **Security Model:** Why double hashing is used in BSV and the role hash functions play in BSV's security architecture
* **Encoding Systems:** Base58 and Base58Check for human-readable representations

#### Practical Components

While coding knowledge isn't required, this path includes working examples in **Go (Golang)** to deepen your understanding. You'll see firsthand how hash functions enable efficient network scaling.

**Note:** Example code is provided in Go programming language. These examples aid understanding but are not required to complete the course. Some familiarity with command line environments and programming is helpful for the code examples, but not necessary for course completion.&#x20;

#### Technical Prerequisites

* No blockchain knowledge required
* Basic familiarity with command line helpful but not essential
* Optional: Go installation for running code examples

### Installation of Supporting Libraries Quick-Start: GoLang

You can install Go for your operating system from the official Go website: <https://go.dev/doc/install>

Once you have Go installed, create a new directory and initialize a new Go module using the following command:

```
go mod init github.com/[your username]/bsv-examples
```

&#x20;

The examples are built from first principles, but if you'd like to use the SDK you can install it by running:

```
go get github.com/bsv-blockchain/go-sdk
```

#### Learning Journey

**Course 1: What are Hash functions?** – Examine what hash functions are and the hash functions used in BSV

**Course 2: Base58 and Base58Check** – While not hash functions, these encoding systems are important for understanding how hash outputs are represented

**Course 3: SHA256** – Examine Secure Hashing Algorithm (SHA) and how it relates to the BSV Blockchain

**Course 4: Walkthrough Implementation of SHA-256 in Golang** – Step through a working implementation of SHA-256

**Course 5: RIPEMD-160** – Cover RIPEMD-160 and its implication for BSV Addresses & WIFs

**Course 6: Walkthrough Implementation of RIPEMD-160 in Golang** – Step through a working implementation of RIPEMD-160

**Course 7: Double Hashing and BSV's Security** – Understand why BSV uses double hashing and its security implications

#### Who This Path Is For

This course is designed for **developers, technical professionals, researchers, and anyone curious** about the engineering principles that make BSV scalable and secure. Whether you're building on BSV or simply want to understand what sets it apart, you'll gain the foundational knowledge to engage confidently with the technology.

*Once you complete the path with a score of 80% or more, you'll earn a **Certificate of Completion** to recognize your achievement and demonstrate your technical understanding of hash functions.*


---

# 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.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.
