Skip to content

Latest commit

 

History

History
35 lines (26 loc) · 2.22 KB

RustForBitcoinersCoutseOutline.md

File metadata and controls

35 lines (26 loc) · 2.22 KB

Rust for Bitcoiners: Project-Oriented Course Outline

Module 1: Rust Basics through Cryptography

Project 1: Implementing a Caesar Cipher in Rust

  • Objective: Learn the basics of Rust by creating a Caesar cipher, focusing on Rust syntax, strings, and basic control flow.
  • Topics Covered: Rust setup, mutable vs. immutable variables, functions, user input, and command-line arguments.

Module 2: Structs, Enums, and Error Handling with a Cryptocurrency Ledger

Project 2: Simple Cryptocurrency Ledger System

  • Objective: Dive into Rust's structs, enums, and error handling by developing a ledger system to record transactions of a simple cryptocurrency.
  • Topics Covered: Structs, enums, match statements, vectors, file I/O, and comprehensive error handling, difference between Option and Result.

Module 3: Data Handling and Serialization in Rust

Project 3: Serializing and Deserializing Bitcoin Transactions

  • Objective: Understand Rust's capabilities for data serialization and deserialization using Bitcoin transactions as a case study.
  • Topics Covered: Use of external crates, JSON and binary serialization, working with Bitcoin transaction data structures, intro to Box and Trait objects.

Module 4: Multithreading and Networking

Project 4: Multithreaded Bitcoin Node Connector

  • Objective: Build a tool to connect to a Bitcoin node using multithreading, focusing on networking and concurrency in Rust.
  • Topics Covered: Thorough discussion on allocators and basic Networking, threads, TCP connections,shared state using Arc and Mutex.

Module 5: Advanced Rust Features for Cryptographic Applications

Project 5: Building a Basic Cryptographic Library

  • Objective: Demonstrate the power of Rust Generics by building a library using Generics to simplify the code, this would help the students to read the Rust documentation better.
  • Topics Covered: Generics, traits, lifetime specifiers.

Then the current chaincode projects can be done. Later we conjure up some ideas using async and other advanced libraries in Rust.

I have made these projects in a simplistic manner so that students can focus on learning Rust properly at the same time being enthusiastic about bitcoin and cryptography.