Smart Contract Development with Ethereum (skills)

Gained skills

In this course you will learn deep technical knowledge about Ethereum. Afterwards you will know

  • all the important terminology and concepts
  • how the Ethereum Protocol processes transactions in depth
  • how to work with geth and how other clients differ from it
  • about the different ways to interact with Ethereum
  • about the Web3 1.0 and 0.20 libraries

We use Solidity 0.5 for contract development. After the course you will know

  • how to write smart contracts with Solidity 0.5
  • the control flow primitives & data types of Solidity
  • how to use solidity-specific features like revert, require or modifiers
  • how to work with events and when to use them
  • how to properly send and receive ether in smart contracts
  • about the common pitfalls people make
  • how to use inheritance for code reuse
  • how to write and use contract libraries
  • how to interact between contracts

We use the Truffle 5 framework for development and testing. After the course you will know

  • how to use Truffle 5 with Ganache for development
  • how to deploy to various networks
  • how to verify complex contracts on Etherscan
  • how to properly tests smart contracts using javascript
  • which useful test helpers are out there
  • about the current state of solidity-based testing
  • how to debug smart contracts

In addition to the language and tools we will also take a look at commonly used patterns in contract development as well as security concerns. After the course you will know

  • about different kinds of oracles
  • common patterns used for safer contracts
  • how to work with off-chain signatures and when this can be useful
  • how you can implement commit and reveal schemes
  • how you can separate ether balance from your contract logic
  • how complex projects like ENS or Raiden structured their contracts
  • what state channels are and how they work
  • the basics of contract upgradability
  • about the major security incidents and how they could have been avoided
  • how to work with the contracts from the OpenZeppelin Library
  • which standards exists (with a focus on ERC-20 and ERC-721)