This document was intended as an agenda for the workshop organized by the AMPnet at the BlockSplit 3 conference. The workshop took place on the 23rd of May 2022 but we at AMPnet decided to collect the resources and open source them to the public with the goal of onboarding developers to web3 and strengthening the #buidlers community.

If you are an existing software developer looking to learn how the process looks like for building, testing, deploying dapps and interacting with the dapps from the frontend side then this might be a good read for you.

The idea was taken from the Solidity by Example section from the Solidity documentation and extended to showcase more aspects of the full stack smart contracts development.

Firstly, we’ll cover the introduction of the basic concepts of web3 here, and then we’ll move on with the specification of the project we’re going to develop: Auction House Service.

🗒 Table of Contents

🦊 GitHub Repos

Two main repositories are a direct result of this workshop:

Solidity Codebase (backend).

The best way to learn from this repository is to explore the series of commits, each one of them covering the next checkpoint in the workshop implementation. The result of this process is the deployment script (explained later in this document). The deployment scripts outputs two addresses to console. These addresses are loaded in the frontend application to enable the interaction and usage of the dapp.

Angular Codebase (frontend).

Loads the addresses deployed from the project above and enables the interaction with the smart contracts. To learn the process in more depth, follow the series of commits leading to the full-blown frontend implementation.

📚 Introduction to Web3

Database is blockchain.

Backend is smart contracts.

Code is law.

Account is a wallet.

On Blockchain

We can look on the blockchain as the block box, a transactional network providing a base layer and infrastructure for connecting to and executing various actions.

At  first there was Bitcoin, with a simple idea - transactional network with one single application: distributed ledger. The distributed ledger contained accounts and their balances. The only action executed on the network was the transfer function, where account holders could execute value transfer to another account, authorizing the action using their private keys.

Then there was Ethereum, with an idea of generalizing actions executed on the network. Why only do the value transfers? Let’s make the blockchain fully programmable. Define actions via code, store the actions on chain, and let others call and execute actions by also authorizing the transaction using their private keys. Ethereum and EVM were born. EVM - Ethereum Virtual Machine.

On Smart Contracts