
Provides information on access to the course resources.
In this lecture students will get a overview of how the Blockchain revolution started.
This lecture introduces the general concepts of Blockchain that applie to most Blockchain platforms/applications.
There are two objectives for this lecture:
At the end of this lecture student should be able describe the key aspects that differentiate Ethereum from other Blockchain platforms/appiications
Lecture provides an overview of the Ethereum Decentralized applications. At the end of this lecture student should be able to:
Students will learn about the:
There are multiple types of Ethereum networks. In this lecture student will learn about the different types of Ethereum networks. When working on DAPPs the developer will need access to the block and transaction information. This lecture will cover the webapps for exploring the Blockchain networks.
Consensus refers to a process that secures the Blockchain network and validates the transaction. There are multiple consensus models but the two common ones are
Students will learn about these two common consensus model in this lecture.
In this lecture students will learn about a recently added consensus model....Proof of Authority | Ethereum Clique Protocol.
Students will learn:
Many students are interested in knowing "What they need to do in order to mine for ethers?". This lecture will provide the answer to the question.
In this lecture students will learn about faucets.
In this lecture students will learn:
Provides a walkthrough for the installation of the Ethereum Wallet on Mac
There are different types of accounts. This lectures describes these account types along with demo of how these accounts are used from the wallet.
Students will learn how an ethereum wallet can be used for:
This is an exercise that student must try out on their own.
Meta Mask is a chrome plugin that turns a browser into a Decentralized App container. Students will learn about its capabilities and see it in action.
There are many wallets available online. This lecture covers the official online wallet.
This lecture demonstrates the use of an online tool that can be used for developing smart contract code.
Exercise to reinforce the concepts covered
Ethereum client software is used for participating in the Ethereum network. In this leacture students will learn about how the client works.
Geth is the "Go Ethereum" client.
Students will learn:
Geth uses TOML formatted files to manage configurations. In this lecture students will learn how to use TOML files for managing client configurations.
Lecture covers the
Lecture shows how the console/attach commands can be used for connecting to a running geth client. Geth allows execution of Javascripts, in this lecture student will learn about this feature as well.
Lecture covers the commands/options for
In this lecture students will learn how to create a Private Dev Network
> geth --dev
Students will learn about the following options:
--maxpeers
--port
--nodiscover
--bootnodes
Ethereum client exposes API for invoking actions & for inquiring the network. This lecture provides an overview of:
The Ethereum clients expose an admin object on which API can be invoked for controlling the behavior of the node or client.
Lecture shows how the personal object exposed by the Ethereum client is used.
The miner API provide control over the mining operations. Students will learn these commands and see the mining operation in action.
This lecture covers the :
The debug object is available for getting visibility into the Ethereum client implementation. This lecture discusses the information that can be accessed using the debug object.
Talks about the sample application developed in this section.
There are multiple libraries available for connecting front end applications to the Ethereum network. In this lecture students will get an overview of the web3 API
In this section a full blown single page application will be developed to connect with the Geth node.
This lecture will show the students how to setup a sample application development environment.
Describes the decentrallzed application that will be incrementally developed through the lectures in this section.
This lecture describes the sample application components. It also shows how the front end connects to the Geth node using the web3 JS
Talks about the web3 API that can be used for getting the version information for the node and the runtime status of the node to which the app is connected.
Student is advised to code the suggested API in the application. This would help them get up to speed on web3 API coding.
In this lecture students will learn how to use the web3 Account APIs. The sample app will be expanded to show the accounts setup on the Geth.
The sample app will be expanded to:
Two objectives for this lecture:
Lectures covers
The front end of the decentralized application invokes the function on the deployed contracts. You can invoke the functions using call of send API. This lectures describes the difference.
Ethereum has a built in logging and event functionality. Decentralized applications can use the logging and events for creating rich UI applications. This lecture provides an overview of the patterns that are implemented by applications around events/logs.
Lecture covers the API for:
In this lecture students will learn how end-to-end events work i.e., when an event is emitted by contract instance how it is received by the front end.
Coding exercise for creating a DAPP
This lectures talks about how developers can become productive by leveraging Ethereum simulators. Students will learn about Ganache the Ethereum simulator which is part of the Truffle framework v4.x
Lecture walks through the steps for the installation of:
Truffle framework uses Mocha & Chai to support the Test Driven Development (TDD) practices. This is a crash course on Mocha and Chai.
PS: Students who are new to Mocha/Chai MUST use additional resources to understand these NPM packages as the lecture is just scratching the surface.
Truffle v4.x has introduced the concept of Boxes. Boxes are sample applications | Boiler-plate-code that developers can use as a starting point for creating their own custom application(s). This lecture will show students how to leverage the Truffle boxes for building their own applications.
This lecture will provide the student an overview of the contract development using the Truffle framework. Primarily at the end of this lecture student should be able to create a project using the Truffle CLI commands.
In this lecture student will learn about the practices for developing smart contracts & use of Truffle for creating contracts/test cases etc.
This lecture talks about the
Exercise - Students are encouraged to code the contract and test cases on their own. This will require them to review the code in Calculator.js
At the end of these exercises students are expected to have the *minimal* knowledge that is needed before the student proceeds with the lectures on Solidity in the next section.
Describes the structure and layout of the contract at a high level.
Student will learn about the:
EVM manages the data in memory divided into multiple regions. This lecture explain the regions and the keywords used for managing the storage location of the data elements
This lectures covers the Solidity arrays
Coding exercise
Students will learn about 3 new data types:
Although both bytes & string type are byte arrays there are some difference between the two. Those differences are also covered in this lecture.
In this lecture students will learn about how to declare and use Solidity functions.
Coding exercise
Lecturer discusses
Lecturers discusses the:
Errors are handled by throwing exceptions using the global functions
Solidity exposes multiple hashing functions. Students will learn about:
Students will learn how to create and use complex types:
Coding exercise
In this lecture students will learn how Solidity supports Object Orientation concepts:
In this lecture students will learn how to use the following keywords to control the visibility of the functions and storage variables:
Students will also learn about the keyword this and function type variables.
Student will learn how to declare and generate events from the contract.
Behavior of the functions may be changed using the function modifiers. In this lecture students will learn how to use function modifiers.
Function modifiers
This lecture will show the student how to declare the events and generate events in the contract code.
Coding exercise
This is where rubber hits the road :-)
Contracts can self destroy. This self-destruction need is sometime driven by business. This lecture will cover:
This lecture describes how Decentralized applications can use the factory contract instance to create other contracts.
Complex Decentralized apps may have dependency on multiple contracts. The Name Registry pattern simplifies the dependency management. In this lecture student will learn about the benefits of using this pattern and see an implementation of this pattern in action.
This pattern can be seen in action here:
http://thedapps.com/DAPP-Registry/
Solidity mapping does not allow the access to all keys contained in the mapping as a result there is no out of the box feature to iterate over the values contained in the mapping. This lecture discusses how to implement iterator functionality for mapping.
The UserAddressRegistry is not optimized. Student will help the instructor to optimize the code :-)
Withdrawal pattern is used for safely sending ethers from the contract code.
This article describes the project that students will be developing as part of the project.
Open Blockchain project - Intent is to let the student decide on the scope, design & implementation
In this lecture students will learn how to setup a 2 node private blockchain on their local machine.
In this lecture students will learn about the Bootnode tool. At the end of this lectures students should be able to design a private Blockchain network with Bootnode based peer discovery mechanism.
In this lectures students will learn:
This lecture will show the testing of the Clieque network that was setup in the previous lecture
Recently ERC20 specifications has been adopted as a standard way for implementing tokens. This lectures will teach students on how they can implement an ERC20 compliant token.
Students will see the design/code for implementing a simple token. The code demonstrated in the lecture is available in the GitHub, so students after going through the lecture will be able to make changes to the code to create their own ERC20 token that they can then deploy on the Ethereum network.
Students will see the design/code for implementing a simple token. The code demonstrated in the lecture is available in the GitHub, so students after going through the lecture will be able to make changes to the code to create their own ERC20 token that they can then deploy on the Ethereum network.
PS:
What students should know (Pre-requisites) ?
To build Ethereum Decentralized applications you will need to learn a couple of skills. This course can help you learn all of those skills but there are some prerequisites for the course:
Experience with either Javascript or Java. Course will NOT teach Javascript
Basic understanding of the Javascript/HTML DOM model
Access to a PC or MAC with access to the Internet (Minimum 4GB needed 6 GB preferred)
Comfortable with new software installation & hands on coding
Course Approach?
This course takes the approach of “Learn by doing”. Students are encouraged to try out all aspects of the technologies on their own after each lecture. Almost all of the concepts discussed in the lectures are shown in action by way code samples etc. The demo code used in the lectures is available for download from GitHub so that students can change the code to try out new things.
Front end of the Decentralized applications are typically created as single page or desktop applications using Javascript/HTML/CSS. Since there are multiple Javascript frameworks, it was decided to keep the lectures independent of any specific JS framework. Students are free to use any one or more JS frameworks of their choice.
Multiple quizzes in each section will validate student’s knowledge. Coding exercises will help them understand the concepts better & gain confidence.
Students will download the source code for a fully built DAPP - this DAPP shows/teaches all of the web3 API that students need to learn. Code walk through is covered in the lectures.
Course is divided into 10 sections:
Section#1
Introduces the Blockchain & Ethereum technology
Section#2
Drills deeper into the Ethereum Blockchain technology
Concepts, Wallet
Hands-on: Install Wallet, Mining for Ethers, Transactions
Section#3
Ethereum Client
Hands-on: Install Geth, Try out the geth commands & options
Section#4 Geth Javascript Management API
Hands-on: Try out the various API i console and by writing scripts
Section#5
Web3 API
Hands-on: Develop Javascript/HTML front end for executing contracts on TestNet
Section#6
Getting ready for Smart Contract development
Learn about the various tools & frameworks used for developing smart contract
Hands-on: Installation : Visual Studio, Truffle framework version 4.0, Ganache, Meta-Mask
Section#7
Solidity for smart contracts development
Learn the concepts of Solidity language
Hands-on: Code simple contracts in Solidity + write test cases for testing
Section#8
Solidity &Infrastructure patterns
Hands-on: Code smart contracts
End to end application walkthrough
Hands-on: DIY Project & Solution
Section#9
Covers the setting up of private networks
Tools for managing private networks
Section#10
All about Initial Coin Offering & ERC20 Standard for creating and launching a coin
Students will learn how to create a coin and manage it in common tools
Background
Demand for Blockchain technologists is going up as multiple enterprises (& startups) are looking to achieve efficiencies or/and create new business models enabled by the Blockchain technologies. Ethereum is the leading Blockchain platform and is accepted as the most mature platform for Blockchain applications. Ethereum technology is quite complex but the approach taken in this course "Learn by doing" will accelerate the learning process and make it easy for the students to understand the concepts. Please refer to "Introduction to Ethereum" below for a high level overview of Ethereum.
Why learn Blockchain/Ethereum?
If we are to believe the pundits, Blockchain will change the way software is built for business transactions. Almost all industries are looking to leverage this new technology to gain efficiencies and/or to create new business models & opportunities. Organizations are looking for talent in this new technology and facing difficulty in finding developers/architects who can design and develop Blockchain applications.
Taking this course will prepare you to innovate using this cutting edge technology that promises to change the world around us. It will prepare you for the future.
Introduction to Ethereum
The digital cryptocurrency Bitcoin was the first Blockchain application. Success of Bitcoin led to the creation of the Ethereum platform. Whereas Bitcoin is a “Blockchain Application”, Ethereum is a “Blockchain Platform”. Ethereum not only supports a distributed ledger but it also supports Smart Contracts.
Smart Contracts are computer programs that has the code that implements contractual agreements (rules) between two or more parties. The rules coded in the smart contract are triggered by events in the physical world and automatically carry out some predefined action(s). All of this happens without any intermediary, web servers or back end databases.
Let me give you an example - Ebay is the intermediary between the buyer and seller. EBay makes $ every time a buyer buys an item from the seller. In a decentralized bidding application a smart contract can replace EBay the intermediary. The rule coded in the contract will be that when buyer will pay, the seller will ship the item to the buyer. The funds will be held in the smart contract till buyer confirms the receiving of the goods. Once the buyer confirms the receipt of goods the funds will be released to the seller. Smart Contracts are executed on the Ethereum network nodes as opposed to a centralized server infrastructure owned by an intermediary (e.g., Ebay). Nodes are Ethereum client processes running on the network participant’s computer.
Anyone can write Ethereum decentralized application, so in other words you can create your own Bitcoin like Cryptocurrency or Ebay like application on a public Ethereum network. Please note that all applications are not a good candidate for Blockchain technology for example building a static website on Blockchain technology is not the right use of the technology.