
In this video, we will talk some basics for rust programming, we will using code to explain some confusing concepts of rust, please type down the code , run it and make sure you get the same result as me.
In this video, we will briefly talk about why we should invest our time to learn rust
This video will touch upon some basics of rust, it aims to make you familiar with rust code, we don't expect to get all things out from this video, you may have confusions after this video and that's totally ok, we will go to every details in further videos, it is very important that you write the same code and get the same result from the video, practices is very very important!
In the video, we learn how to define our own function, and implement a function that receive two numbers and return their greatest common diviser
In this video, we bring in a eternal package or "crat" in rust, it will help us get inputs user typed in the console when running our app
In this video, we will encounter a very important feature that is called "trait" in rust, and use the trait to convert string into number
In this video, we will finalize our command line app, we will bring many new things like vector, process into the app
In this video, we introduce the tokio crat and how to use async and await keywords to utilize concurrency
In this video, we introduce an important concept called closure, we give code to show how can we use closure to pass a piece of code as parameter into another function
In this video, we show how to use actix_web crat to design a simple http server
In this video, we show how to serve http get and post request for our http server
In this video, we give some basic but important info about multi-threading in rust
In this video, we show how to use the ? operator to handle function that will return Request type
In this video, we can know how to use image crat to generate grayscale png image file
In this video, we introduce a math concept that is Mandelbrot set, in later videos, we will put all points together and see how to use multi-thread to draw Mandelbrot set into a png format gray scale image
In this video, we show how to use code to check whether a given point belongs to mandelbrot set or not
In this video, we put all things into one thread, we initialize a image with given dimension, convert pixels into complex number, check the number belongs to mandelbrot set or not, and draw its color and write the image into png file format
In this video, we use multi-thread to create mandelbrot set png image
In this video we begin to develop a funny file tooling, and we show how to make text in color on console
In this video we show how to collect arguments from console
In this video we show how to use fie system api to read and write file
In this video, we show how to use regular expression to search and replace text
In this video, we show how Rust compiler can inference type for grammar construction
In this video, we show how to handle arithmetic overflow for integer operation
In this video, we introduce pointer type in Rust
In this video, we introduce three list types, they are array, vector and slice
In this video, we introduce two string type, one is string literal, the other is String class
In this video, we give code examples to show toe principle of "only one root owner" for Rust memory manegement
In this video, we show how to change root owner by using assignment
In this video, we show how to change the root owner by using move operation
In this video, we show how to use reference count to enable multiple owners for one chunk of memory
In this video, we use lots of code example to show the reference usage in Rust
In this video, we show many trick things that are happening under the scenes of references
In this video, we show how to use reference for function arguments and return, and use code to show the tricky bugs related to this situation
In this video, we show how to use reference in fields of struct and show tricky bugs related to this situation
In this video, we show how mutable and share reference can work together and prevent a class of bug that
often happen on c++ and other languages
In this video, we introduce the basic structure of blockchain
In this video, we show the content of block in blockchain and give code to implement it
In this video, we show how to link blocks together and form the so call blockchain
In this video, we show how to use module system of Rust to separate code into different manageable parts
In this video, we show how to compute the value for previous hash field for block
In this video, we show the enum type of Rust, and show how to use it for multi-purposes block searching
In this video, we introduce the trait mechanism of Rust and show how it can improve our code strucutre
In this video, we give more details about how to using trait to improve our code
In this video, we introduce operator overloading mechanism of Rust and use it to improve the design of our blockchain
In this video, we give detail code for implementing the proof of work process
In this video, we look at two more operators they are equal and indexing, we show how to implement them for Block and BlockChan object
In this video, we show what is mining in blockchain.
In this video, we give simple introduction to elliptic curve used by blockchain for cryptography and wallet address generation
In this video, we show how to use p256 crate to generate private and public key pairs base on elliptic curve
In this video, we introduce closure to enhance code design
In this video, we show how to create a wallet object for blockchain user
In this video, we show how to generate wallet address from public key
In this video, we show how to use private key to sign transaction and use public key for verify transaction
In this video, we show how to verify transaction before adding it to blockchain
In this video, we setup actix_web framework for blockchain api server
In this video, we show how to serve blockchain info for requests coming from frontend
In this video, we will enhance the html code to create several controls for public key, private key, and blockchain address.
In this video, we show how to send wallet info to frontend page when the page is loaded
In this video, we show how to send info from frontend page back to server as json object
In this video, we show how to convert the json object sent by frontend to transaction binary data and insert into transaction pool, part 1
In this video, we continue for the last video, complete all the code for transaction adding and getting
In this video, we fix errors for code we have done from previous two video and test the final result
In this video, we add endpoint to trigger blockchain mining
In this video, we add an endpoint to get the current balance of the wallet
In this video, we add html and js code to enable showing balance on the frontend page
In this video, we show how to run several api server instances in multi-threads
In this video, we show how to construct possible peer ids
In this video, we show how to check given id is peer by sending ping request
In this video, we show how to sync transaction from one blockchain sever with other peers
In this video, we introduce the theory for how blockchain building consensus
In this video, we show how to remove tx in transaction pool when block is mining
In this video, we show how to use code to simulate conflict resolving for blockchain nodes
Learning a new programming language is challenging and tedious, this is especially true for Rust.When you look at teaching materials related to Rust programming, they always has hundreds or thousands pages. Then you need to go to page by page,
try to understand syntax and semantic info of the language. This way of learning is very fragmented and inefficient. Have you feel frustrated when you read to the 101th page and find out you nearly forgotten any everything in the previous 100 pages!
May be by your pains taking effort, you read all 1000 pages, then very likely that you are in a quantum state that you are feeling that you seems to familiar and unfamiliar of the topic. You may have a powerful tool but you have no confident about it
because you never use that tool to build anything, and you are uncertain you can use the tool to build any meaningful thing or not.
In this course we will give up the traditional and inefficient way of learning. We will have one stone with two birds. You will from a rookie of Rust programming and blockchain to become and expert of both. We will learn the Rust programming by building a blockchain from scratch. Learning by doing is the most powerful way.
Through out this course you will gain expert level skills on two domain, for Rust programming, you will have:
Basic rust programming syntax and Common Rust Collectors
Enums, Traits, Structures, Generics, Lifetimes and Closures
Rust Module System, the use of External Crates and Publishing Crates
Smart Pointers and Commonly used Data Structures including linklists, trees, BST and doubly linklist
Advance Techniques including macros, Concurrency and Aysnc Programming
Real Life Problem where we will learn 13 Real Life Applications in rust from Scratch
Efficient programming skills including Design Patterns, Efficient handling of Options, Strings and Structures
Textual Processing and Directory Handling
and for blockchain building, you will have:
a hands-on approach to learning about Blockchain concepts, intuition, and implementation. In this course, we'll be utilizing Blockchain technology and Go to develop a money transfer system.
Easy to understand: Confused by Blockchain? With much of Blockchain technology explained in complicated technical documents, many people may think of Blockchain as something that's confusing. But Blockchain and the technology underpinning the cryptocurrency, has the potential to revolutionize the platform for future network distribution systems.
By taking this course, you will become a fluent in RUST programming and you'll be so good so that you can confidently and professionly code in the language. And Blockchain is the future and by understanding the concept and actually creating it from scratch, you'll be able to apply Blockchain in the real world.