
Explore Ethereum Solidity development, set up your development environment, and build a complete decentralized application from smart contracts to front-end, including the ChainList project.
Explain why information replication makes value non-unique, unlike money that cannot be spent twice. Show how digital ledgers track transactions to prevent double spending and connect banks across networks.
A very interesting video to watch in order to understand CDOs and how the crisis of credit really worked: http://crisisofcredit.com/
Explains how blockchain extends beyond finance to tokenization and smart contracts on decentralized ledgers. Shows how transactions encode origin, destination, value, and date to model complex value transfers.
Explore the three-layer model of blockchain: layer one properties like distribution and immutability, layer two implementations via protocols, and layer three public and private network instances.
Explore the blockchain design goals of data distribution, decentralization, and immutability, and how consensus algorithms enable trustless, peer-to-peer networks with pseudonymity and transparent ledgers.
Compare Bitcoin, Ethereum, and Hyperledger Fabric to see how blockchain principles are implemented differently. Learn how UTXO, stored state, smart contracts, gas, and proof-of-work shape their networks.
Explore how blockchains build a history from a genesis block through instantiation and instances, and how forks create divergent ledgers like ETH and ETC.
Explore how open blockchain implementations rely on developers, miners, and users to govern and secure networks. Understand proof-of-work mining and the move toward alternative consensus and wallets.
Explore blockchain architecture as a secure fusion of database and network, anchored by a peer-to-peer node network and a verifiable distributed ledger.
Explain how a cryptocurrency incentivizes miners in a network, rewards blocks, and supports gas and smart contracts in Ethereum, while Bitcoin relies on properties: durable, portable, acceptable, limited, divisible, fungible.
Explore why blockchain architecture is not a universal solution by examining data transparency, privacy trade-offs, throughput limits, forks, and governance, and assess when to choose non-blockchain designs.
Explore hashing functions and their cryptographic properties, and learn how they secure blockchain data by chaining blocks and enabling proof-of-work via nonces and difficulty targets.
Explain asymmetric cryptography with private and public keys, digital signatures, and blockchain use, including elliptic curve cryptography, wallet addresses, and hashes of public keys.
Understand Merkle trees, a hash tree data structure that builds a root hash from transaction hashes, enabling efficient block verification for Bitcoin, Ethereum, and Git.
Set up a macOS web3 development environment by installing Homebrew, Xcode command-line tools, Node.js, npm, Geth, Ganache, Truffle, and Atom, then configure a private Ethereum node for smart contract testing.
Set up a Windows development environment for Ethereum smart contract development using Geth, Ganache, Truffle, and Atom, with NodeJS and NPM, powered by PowerShell for the command line.
Set up a Linux development environment for Ethereum smart contracts using Geth, Ganache, Truffle, NodeJS, NPM, and Atom to test on private networks before deploying to main net.
Set up a private Ethereum node on macOS using geth and puppeth, initialize a genesis block, create accounts, and mine with RPC access and IPC for local development.
Install and initialize a private Ethereum node on Windows using geth and puppeth, create a genesis block, set up accounts, start mining, and connect via RPC for dapp development.
Set up a private ethereum node on Linux with geth, generate a genesis via puppeth, and initialize ChainSkills.json with network id 4224; mine, unlock accounts, and transfer ether using eth.sendTransaction.
Install and initialize MetaMask as a Dapp browser, import Ganache accounts via private keys, connect to private networks with custom RPC, and import accounts from a private geth node.
Describe how smart contracts run on the EVM, compile with solidity to bytecode, and interact via web3.js to deploy a greetings contract with set and get functions.
Learn how to deploy a smart contract without truffle using Ganesh, Web3, and the Solidity compiler, including compiling, deploying from accounts zero, and verifying state with get greetings.
Initialize and configure a Truffle project, create deployment scripts and migrations, and deploy the greetings smart contract to a local ganache core ethereum development node for testing.
Deploy and manage contracts with Truffle migrate, using compile all and reset to ensure the latest code, then interact with the greetings contract in the development console.
Learn to deploy smart contracts to Ganache with a custom Truffle network, using migrate, compile, and reset flags, then interact via Truffle console to verify deployments and state.
Explore how blockchain blocks contain transactions with from, to, value, and data fields, including deploying and calling smart contracts, and analyze blocks using ganache and truffle.
Explore how gas sets the cost of Ethereum transactions, linking gas units to ether payments and miner rewards, and distinguish between view reads and state changing calls.
Deploy a greetings contract to the blockchain with Truffle and Ganache, and learn how binary bytecode maps to up codes executed by the EVM, with gas costs and deployment considerations.
Learn how to send ether between accounts using truffle and web3.js, including gas, gas price, and transaction fees on a local blockchain.
Build a decentralized application called Chain List on the Ethereum blockchain, using Metamask to buy and sell articles, track events, and update the article list in real time.
Build chain list, a decentralized marketplace on the ethereum blockchain, with a solidity smart contract that sells one article using sell article and get article, plus deployment scripts.
Deploy and interact with a smart contract using Ganache and Truffle, migrate contracts, and test the sell article function with ether values and gas considerations.
Learn to test blockchain smart contracts using Truffle and Ganache with JavaScript testing to validate contract state and guard against bugs before deployment.
Learn how to test smart contracts using Truffle, Mocha, and Chai in a Ganache environment, simulate selling an article, verify state changes, and log outputs before building a UI.
Prepare the frontend for selling an article by customizing the chain list user interface, wiring it to the smart contract, and displaying account balance and article details via a modal.
Customize package.json with a name and version 001. Update index.html to render an article template showing title, description, price, seller, and enable the sell article button.
Connect the web frontend to the smart contract backend by initializing a default article, deploying with truffle to ganache, and displaying contract data via web3.
Implement frontend functions to display the account information and balance retrieved via coinbase, convert wei to ether, and initialize a Truffle contract to fetch an article.
Display a blockchain article in the frontend by fetching a deployed contract, populating a template with name, description, and price (wei to ether), and handling errors with promises.
Enable the frontend to sell an article by deploying the contract on ganache, retrieving details from a modal, invoking the sell article function, and reloading articles after mining.
Implement the frontend flow to sell an article by invoking the contract's sell article function, validating input, and reloading articles. Inspect the transaction and gas usage in Ganesh.
Learn to sell an article using metamask on a local Ganesh network, switch accounts, deploy with truffle, and handle network id issues while refreshing the frontend to show the article.
Add a sale event to the smart contract and learn to trigger and watch it from a truffle console, so watchers see new articles for sale in real time.
Sell an article via a smart contract function, read the log sell article event from the transaction receipt, and verify seller, article name, and price in ether.
Sell an article with a smart contract event, redeploy to reset state, and watch only the latest events for reliable frontend updates.
Watch on-chain events from the frontend by listening for the sell article event, display the article from the contract, and refresh the interface with a live event list.
Demonstrate selling an article via a frontend with an events panel, bootstrap toggle, and ARIA controls, then observe events update and troubleshoot metamask network issues.
Deploy ChainList to a Geth private node by configuring a private network in Truffle, adjust gas limit to 4700000, and run migrate and tests.
Learn to deploy contracts on a private node by unlocking accounts, selecting the deployment from a specific account, and re-running migrations with Truffle and RPC unlocks.
Redeploys the contract from the first account and tracks deployed addresses in build/contracts JSON across networks. Explains immutability, private networks, and Metamask transaction validation.
Add a payable buy feature to chain list smart contract, ensuring article exists and is available, recording the buyer and transferring ether to the seller, with a purchase event.
Create a get article function in a smart contract to return seller, buyer, name, description, and price; deploy, sell, and buy an article on ganache with event logs.
Explore buying an article via a smart contract, handling payable value, and debugging a failing transaction with the Truffle debugger to understand reverts and gas use.
Develop and test the buy article feature in a web3 contract by updating the test suite, tracking buyer and seller balances, and validating event logs.
Explore test suites for a chain list contract, validating buy article function events and balances, ensuring contract state remains unchanged, and testing no article for sale yet exceptions.
Developers test buying articles in a Web3 contract, including selling, attempting to buy your own article, price mismatches, and buying already sold items, with isolated test suites and gas considerations.
Continue building the web3 frontend to buy an article, deploy contracts, fix the frontend for get article, and add a buy button with buyer address display.
Update the frontend to reload articles, extract price in ether, and display buyer status with a buy button that hides when the seller is connected or sold.
Implement the buy article feature on the frontend by reading the button's data price, calling the contract's buy article function, and handling events to update the UI after a purchase.
Extend the web3 app by using a structured article type and a mapping to manage multiple articles, introducing an article counter and public getters for efficient listing.
Learn to extend the smart contract to support multiple articles by adding an id based buy function, validating article existence, preventing self-purchases, transferring funds, and updating events.
Create a public view Solidity function get articles for sale that collects unsold article IDs into a memory array and returns a correctly sized for-sale list.
Interact with the deployed smart contract to list, sell, and buy multiple articles, using mappings, arrays, and structs, and verify balances and article details through the contract's getters and events.
Improve and adapt tests for managing a multi-article list in a Web3 project, validating initialization, articles for sale, and selling events with ganache and truffle.
Write tests for selling an article in a web3 contract, verify the sell event, article id, and the updated contract state.
Test a web3 contract by selling two articles, verifying events, balances, and state transitions, and updating article IDs, names, descriptions, and prices for sale.
Delves into running web3 tests, debugging happy-path flows for selling and buying articles, and testing exceptions when articles are absent or do not exist, with ether pricing and balances.
Adapt tests to verify buying articles on a blockchain contract, including self-sale rejection, price mismatches, and state restoration via the articles getter, and outline forthcoming front-end changes.
Enhance the dapp frontend to support multiple articles for sale by listing items, removing the buyer field for sold articles, and preventing reload re-entry with a loading flag.
Render articles into the template, populate id, seller, name, description, and price, use the articles row, convert to wei, and toggle the buy button based on seller connection.
Sell and buy multiple articles in a decentralized classifieds front end by wiring article ids and prices to the buy function, with inheritance and contract deactivation modifiers.
Learn why and how to deactivate a smart contract with self-destruct, enforce owner-only access, and manage migration, refunds, and user notifications on main net.
Demonstrate deactivating a contract, enforce owner authorization, and observe that self-destruct clears state and makes funds sent to a deactivated contract unrecoverable.
Explore function modifiers in solidity for reusable pre-execution checks. Apply an only owner modifier to enforce authorization, reuse logic, and simplify contracts by combining modifier and function code.
Refactor a smart contract to use inheritance by creating a base contract with an owner and an only owner modifier. Extend the contract to centralize authorization and reuse logic.
Deploy the chain list dapp frontend to GitHub pages, configure test and production network deployments, and enable user interactions via Metamask on a live front end.
Learn to deploy smart contracts on the Rinkeby test network by configuring a local node, unlocking accounts, funding via faucet, and migrating with Truffle.
Deploy smart contracts to the main net using geth and truffle migrate, then publish the front end on GitHub Pages and monitor ether, gas, and costs.
Upgrade the development environment to the latest versions of Node.js, Truffle, Solidity, Ganache, MetaMask, and Geth, and switch to Visual Studio Code for Solidity development.
Restore a previous smart contract project, install dependencies, and update truffle config for ganesh and solidity 0.5. Learn payable addresses, memory data, address(0), emit, constructors, and require messages, then compile.
Test conversion checklist:
replace all the vars by let or const
transform the it() function into an async fat arrow function
replace all then() blocks with awaits
web3.eth.getBalance() is now asynchronous, so you can precede it with await
Replace all occurrences of web3.toWei() by web3.utils.toWei(), and web3.fromWei() by web3.utils.fromWei()
convert ether amounts into BNs at initialization
remove all calls to web3.toBigNumber()
convert BNs into strings everywhere we compare them with assert.equal()
remove all calls to toNumber() on getBalance() return values
call parseFloat() around calls to web3.eth.getBalance() to convert strings into javascript numbers for calculation
convert article prices back into numbers for calculations, using BN.toNumber()
Test conversion checklist:
replace all the vars by let or const
transform the it() function into an async fat arrow function
replace all then() blocks with awaits
web3.eth.getBalance() is now asynchronous, so you can precede it with await
Replace all occurrences of web3.toWei() by web3.utils.toWei(), and web3.fromWei() by web3.utils.fromWei()
convert ether amounts into BNs at initialization
remove all calls to web3.toBigNumber()
convert BNs into strings everywhere we compare them with assert.equal()
remove all calls to toNumber() on getBalance() return values
call parseFloat() around calls to web3.eth.getBalance() to convert strings into javascript numbers for calculation
convert article prices back into numbers for calculations, using BN.toNumber()
encapsulate all contract function calls expected to throw an exception into try/catch blocks
Adapt the frontend to Web3.js with MetaMask privacy mode, upgrade dependencies, and refactor to use Truffle contract abstraction and async/await for clearer contract interactions.
You've reached the end of this getting started with web3 development course, gaining a clear view of the ecosystem, the development environment, and how to start building decentralized apps.
Explains the Byzantium hard fork on Ethereum, including new EVM opcodes and four native contracts. Highlights implications for mining rewards, difficulty, and parallel transaction processing that improve efficiency.
February 2018 Update
We released the first version of this course in September 2017. Back then, the latest version of Truffle was version 3, and the best Ethereum node emulator was testrpc, on the command line.
Then, in November 2017, the Truffle team released both Truffle 4 and a new user interface for testrpc called Ganache. Those tools had a big impact on the development lifecycle, so we took this opportunity to completely rewrite and re-shoot the practical part of this course.
We also took this opportunity to integrate most of the comments and feedbacks we got in the Q&A section of this course. So all the details you needed to troubleshoot issues are now part of the content.
This results in a consequent update with quite a few improvements:
Note that the old content will remain online for a few weeks, and then we will unpublish them so that students don't need to watch all the old content to complete the course and get the Udemy certificate.
If you notice any issue, bug, outdated content, missing link or resource, please let us know in the Q&A section of this course.
Welcome to "Become a Blockchain Developer with Ethereum and Solidity"!
This course is a complete introduction to decentralized application (Dapp) development on the Ethereum blockchain using the Solidity language and the Truffle build framework.
No need to know anything about the blockchain, you should just have some basic software development experience. Whether you have already written some code for backend, web or mobile applications, it should be enough to become a blockchain developer thanks to this course.
The blockchain is all the rage these days, and there is a lot of theoretical or anticipative talk around it, but this course will help you get your hands dirty with actual code in order to build your first decentralized application. This is the kind of skill that can get you an actual job as a blockchain developer, something that is in skyrocketing demand right now.
Have you ever looked back on the nineties, thinking you would have loved to be a part of the web revolution. Well, stop dreaming: the blockchain is here and it promises to be even bigger than the web or even the mobile revolution.
What we cover
The tools we use
We deliberately don't reinvent the wheel or develop our own build tools because it didn't seem very pragmatic to do that. That's why we demonstrate the use of development tools like Truffle and Ganache that offer a lot of very powerful features, even though they evolve very often.
Most of the videos were shot on a Mac, but we give detailed instructions on how to set up your environment on Linux and Windows, and all the other lessons have been tested and adapted with a few OS-specific instructions.