Acknowledgements
Said
- Introduction
- Why the Blockchain?
How do you represent value?
The Internet of Value
Blockchain Use Cases
- What is the Blockchain (and What It’s Not)?
The 3-layer Model
Blockchain Design Goals
Blockchain Implementations
Blockchain Instances
Open Blockchains as tricameral systems
Key Components of a Blockchain
What a blockchain is not (hint: it’s NOT a solution to every problem)
- Cryptography 101
Hashing functions
Asymmetric Cryptography
Merkle Trees
- Setting Up Your Development Environment
Installing the development environment on MacOS
- Homebrew
- Geth
- Ganache
- Node.js and NPM
- Truffle 5
- Visual Studio Code
- Summary
Installing the development environment on Windows
- Geth
- Ganache
- Node.js and NPM
- Truffle 5
- Visual Studio Code
- Git
- Summary
Installing the development environment on Linux
- Geth
- Ganache
- Git
- Node.js and NPM
- Truffle 5
- Visual Studio Code
- Summary
Create a private Ethereum node on MacOS
- Genesis block
- Private node
- Create 3 accounts
- Startup script
- Geth console
- Send ether between accounts
- Stop the private node
- Summary
Create a private Ethereum node on Windows
- Genesis block
- Private node
- Create 3 accounts
- Startup script
- Geth console
- Send ether between accounts
- Stop the private node
- Summary
Create a private Ethereum node on Linux
- Genesis block
- Private node
- Create 3 accounts
- Startup script
- Geth console
- Send ether between accounts
- Stop the private node
- Summary
Install MetaMask
- Protecting your accounts
- Installation
- Finalize the setup
- Welcome page
- Initialize the vault
- Import accounts
- Networks
- Change networks and logs
- Account Management
- Backup potential existing keys (optional)
- Help
- Summary
Introduction to Solidity: write, compile and deploy a smart contract
- DApp, Smart Contract ?
- Our case study: Greetings
- Start the Ethereum node
- Prepare the environment
- Create the Smart Contract
- Create compilation and deployment scripts
- Deploy the contract
- Prepare the contract instance
- Get current message
- Change the message
- Summary
Introduction to Truffle: compile and deploy a smart contract
- Prepare the environment
- Create the project
- Analyse the project structure
- The Greetings smart contract
- Deploy the Greetings smart contract
- Deploy the contract
- Interact with the contract
- Exit the console
- Deploy to Ganache
- Summary
Transactions and Blocks
- Prepare the environment
- Inspect the transaction
- Inspect the block
- Inspect contract calling transactions
- Summary
Understanding Gas
- Start Ganache
- Open the console log
- Analyzing transaction cost
- Checking account balances
- Gas vs Gas Usage
- Read the state of a smart contract
- Change the smart contract state
- Gas and Metamask
- Summary
Bytecode, Opcode and EVM
- Prepare the environment
- Inspect transactions in Ganache
- Bytecode and EVM
- Bytecode to OpCode
- OpCodes and Gas
Sending Ether between accounts
- How do you design and develop a DApp?
- The ChainList Project
Sell an article - create the smart contract
- Prepare the environment
- Create the project
- Create the contract
- Deploy the ChainList contract
- Interact with the smart contract
- Summary
Sell an article - Tests
- Prepare the environment
- Testing with JavaScript
Summary
Sell an article - Frontend
- Prepare the environment
- Analyse the project structure
- Run the sample application
- Adapt the sample application
- Summary
Show the article from the contract in the frontend
- Prepare the environment
- Connect to the backend
- Checkpoint #1 - test your frontend
- Summary
Sell an article from the frontend
- Prepare the environment
- Implement the call to sellArticle
- Inspect the transaction
- Summary
Sell an article through Metamask
- Prepare the environment
- Prepare Metamask
- Configure the Dapp
- Run the Dapp
- Sell an article
- Summary
Be notified when an article goes for sale (contract)
- Prepare the environment
- Add the event
- Interact with the smart contract
- Update our test
- Summary
Be notified when an article goes for sale (frontend)
- Prepare the environment
- Listen to events
- Display the event
- Test your frontend
- Summary
Deployment to a private network
- Prepare the environment
- Deploy contracts to your private network
- Test your frontend
- Summary
Buy an article (contract)
- Prepare the environment
- Add the buy feature
- Interact with the smart contract
- Exceptions
- Summary
Testing the article buying functionality
- Prepare the environment
- Update the Happy Path Test Suite
- Add the Exceptions Test Suite
- Summary
Buy an article (frontend)
- Prepare the environment
- Update the frontend
- Step 2-3: Update the display of an article (JS function)
Step 3: Test the implementation
- Summary
- Bonus: Subscribe to events by default
Managing several sellers and buyers (contract)
- Prepare the environment
- Implement the Article structured type
- Declare the mapping
- Make it possible to sell multiple articles
- Make it possible to buy a specific article
- Getters
- Interact with the smart contract
- Summary
Testing your contract’s multiple article management
- Prepare the environment
- Update the Happy Path Test Suite
- Update the Exceptions Test Suite
- Summary
Managing several sellers and buyers (frontend)
- Prepare the environment
- Update the frontend
- Test the implementation
- Summary
Smart contract deactivation
- Prepare the environment
- Adapt the contract
- Test the contract
- Summary
Function modifiers
- Prepare the environment
- Create a function modifier
- Test the contract
- Summary
Contract inheritance
- Prepare the environment
- Create the base contract
- Extend the
Ownablecontract - Test the contract
- Bonus
- Summary
Deployment of ChainList to our private network
- Prepare the environment
- Deploy the Dapp frontend
- Test the Dapp on Geth
- Summary
Dapp deployment to public networks
- Why Infura?
- Why Ropsten?
- Create your Infura account
- Create a project
- Create a HD Wallet
- Deposit some ether
- Configure the project
- Deploy to Infura
- Use ChainList on Ropsten
- Deploy to the Main Net
- Summary