Professional training course on blockchain technologies, aimed at companies that want to learn their theoretical foundations and practical applications in order to evaluate introducing them into their projects. The course is mainly aimed at developers, since the content is extremely technical, but a tailored version with more theoretical content can be put together for a less hands-on audience.
The course can be delivered in either Italian or English, and can be held either in person or remotely.
Taking part in the course requires excellent programming skills; access to a computer running Linux, Mac, or Windows with WSL2 is also required.
The planned modules, each lasting half a day (4 hours), are as follows:
- Introduction to blockchain technologies
- Components of a blockchain;
- Asymmetric cryptography and digital signatures;
- Wallets, transactions, and mining;
- Types of consensus algorithms;
- Introduction to Bitcoin
- Inputs and outputs;
- Keys and addresses;
- Wallets and transactions;
- Proof of Work and consensus;
- Introduction to Ethereum
- EVM, Turing completeness, smart contracts;
- Wallets, EOAs, and contract addresses;
- Ether and gas;
- Transactions and blocks;
- Networks;
- Solidity: development environment and testing
- Setting up the development environment with Hardhat;
- Creating a smart contract;
- Visibility specifiers;
- Access modifiers;
- Interacting with the smart contract manually;
- Testing with Hardhat;
- Solidity: language features (part one)
- Data types (value types and reference types);
- Data location (memory, storage, and calldata);
- Structs;
- Accessing the transaction and the block;
- Solidity: language features (part two)
- Error handling;
- Events;
- Modifiers;
- Inheritance;
fallbackandreceivefunctions;
- Tokens and OpenZeppelin
- OpenZeppelin (overview and installation);
- Utility functions;
- Fungible tokens (ERC20);
- Non-fungible tokens (ERC721);
- Multi-token standard (ERC1155);
- Deploying and interacting with the smart contract
- Deploying to a testnet or mainnet;
- Introduction to dApps with
viem; - Introduction to MetaMask;
- Building a dApp;
During the modules, preparatory exercises will be provided for learning the topics covered.