Blockchain and Smart Contract Basics
What is Blockchain and how does it work?
Centralized vs. Decentralized vs. Distributed
Blockchain vs. Databases
Bitcoin vs Ethereum
What are Smart Contracts?
How are Smart Contracts used?
Smart Contract Programming Basics
Advantages and Drawbacks of Smart Contracts
Layer 1 vs. Layer 2
High-Level Language vs. Low-Level
Languages in Comparison Solidity, Vyper, others
Smart Contracts with Solidity
The Layout of a Solidity File
LAB TASKS (Lab 1)
Types of Variables in Solidity
Function/Variable Visibility
Smart Contract Constructors
Setter- and Getter-Functions
Understanding Decentralized Information and Web3
Blockchain Access structures and Architectures
Remote Blockchain Nodes vs. Local Blockchain Nodes
Blockchain Access vs. centralized RESTful API
Understanding Web3.js API
Understanding Transactions and Consensus
Private Keys, Public Keys and Signatures
Understanding privacy on pubic Blockchains
Understanding the architecture of KeyStoreâ??s such as MetaMask or MIST
LAB TASKS (Lab 2 â?? Ropsten Test-Ether and MetaMask)
Installing and Configuring MetaMask
Obtaining Ropsten (or Testnet) Ether
Tracing Ether through Block-Explorers
Understanding Infura
Basics of Ethereum and the EVM
Ethereum Denominations
Understanding EVM and the ABI Interface
Calls vs. Transactions
Concurrency and Events
Use cases of Events
LAB TASKS (Lab 3 Web3JS Operations + Lab 4 Events)
Install and Use Ganache
Work with Web3.js
Work with Infura
Define Events
Listen and React to Events
Solidity Advanced: Modifiers, Mappings, Structs and Inheritance
Understanding Functions, Mappings and Structs
When to use Modifiers
Libraries vs. Inheritance
LAB TASKS (Lab 5 Modifiers, 6 Mappings and Structs, Lab 7 Inheritance)
Understand and use Modifiers
Add Mappings and Structs
Use Inheritance to increase auditability
Understanding Deployment and Costs
Understand Development and Deployment Cycles
Understanding Solidity Compilation and Deployment
Gas and Gas-Costs
Upgradeability and Data Migration Techniques
Understand the moving Parts: Compiler, Blockchain, API, KeyStore
LAB TASKS (Lab 8 Deployment, Lab 9 Tie it together)
Changing from strings to bytes (save gas)
Deploy using Ropsten Test-Ether
Understand the difference when using a real Blockchain
Use a fully functioning distributed Application
Mining, Proof of Work vs. Proof of Authority
What is Mining in PoW?
How blocks are generated
PoW vs. PoA (vs. PoS)
Understanding Go-Ethereum or Ganache/TestRPC for local development
Understanding Private Blockchains vs. Public Blockchains
LAB TASKS
Installing and using Ganache
Installing and using Go-Ethereum
Connecting to Ganache/Go-Ethereum from Remix and Web3.js
Interact with the Blockchain from HTML/JS
Current Problems, Solutions, Outlook, Serenity
Ethereum Now and Ethereum Future
Where we are at with Ethereum
Homestead
PoW
Where Ethereum is heading to
Serenity
PoS + PoW to PoS
Sharding
Recommended Newsletters/Groups
Working in Teams, Testing and Versioning
Understanding what Truffle is
Comparison to Embark
How Manage Code for Teams
Understanding Migrations
Understanding Unit-Testing with Truffle
LAB TASKS (Lab 11 Truffle setup, Lab 12 Truffle Unit Testing)
Download and Setup Truffle
Adapt the standard Truffle-Project
Write A Unit Test
IPFS and distributed File-Storage
What is IPFS
Comparison between IPFS, FileCoin, Swarm, Sia, Storj
LAB TASK (Lab 13 â?? IPFS)
Install and work with IPFS
Upload and retrieve a fully decentralized file
Real Projects with Ethereum
Â