CONTENUTI
Module 1 - 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?
Module 2 - Smart Contract Programming Basics
- Advantages and Drawbacks of Smart Contracts
- High-Level Language vs. Low-Level
- Smart Contracts with Solidity
- Types of Variables in Solidity
- Function/Variable Visibility
- Smart Contract Constructors
- Setter- and Getter-Functions
Module 3 - Understanding Decentralized Information and Web3
- Blockchain Access structures and Architectures
- 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
Module 4 - 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:
- Install and Use Ganache
- Work with Web3.js
- Define Events
- Listen and React to Events
Module 5 - Solidity Advanced: Modifiers, Mappings, Structs and Inheritance
- Understanding Functions, Mappings and Structs
- When to use Modifiers
- Libraries vs. Inheritance
- Understand and use Modifiers
- Add Mappings and Structs
- Use Inheritance to increase auditability
Module 6 - 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
Module 7 - 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:
- 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
Module 8 - Working in Teams, Testing and Versioning
- Understanding what Truffle is
- How Manage Code for Teams
- Understanding Migrations
- Understanding Unit-Testing with Truffle
- LAB:
- Download and Setup Truffle
- Adapt the standard Truffle-Project
- Write A Unit Test