Table of contents

A quick recap of Byzantium’s first Ethereum workshop.
On 11 March 2024 at ÉTS, beginners and more advanced folks created and deployed their own token on-chain and transferred tokens to each other. Thanks to everyone who showed up — and to Khalil Anis Zabat for leading and organizing the session.
We plan a follow-up with other token types and more advanced techniques. If you’d want a rerun — or you have ideas for the next workshops — say so in the comments on the LinkedIn thread (link below).
1. What we actually did
The arc was deliberate and beginner-friendly:
- Remix in the browser — compile and deploy without installing a full toolchain first, so you could redo the steps at home.
- A local dev setup (editor + node tooling) — the “how professionals repeat this” half, with the same ERC-20 idea carried over.
- Sepolia — test ETH from a faucet, MetaMask as the wallet, Infura (or similar) as the RPC bridge.
- OpenZeppelin — don’t reinvent
transfer; inherit battle-tested ERC-20 and focus on name, symbol, decimals, and an initial mint. - Peer transfers — deploy, copy contract addresses, and send tokens to each other until the room felt like a tiny economy.
Until you push a transaction and see it on a block explorer, Solidity is just syntax. Afterward it is a public ledger with your address on one line.
2. The token we started from
Khalil walked through a minimal mintable ERC-20 — roughly:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1000000 * 10 ** decimals());
}
}
You pick name and symbol, set decimals (often 18), and mint an initial supply to msg.sender (the deployer). OpenZeppelin is the community’s shared library for standards — the same idea as ERC-721 for NFTs, but here we stayed on fungible tokens.

3. Concepts that came up in Q&A
Block explorers (Etherscan, Sepolia variants). Every transaction is a row: who sent what, to whom, gas paid, block number.
Gas and limits. Contracts are not unconstrained Turing machines in practice — infinite loops can burn gas and stall. Sepolia kept the lesson affordable.
ABI = the skeleton. After deploy, the ABI is how apps (or bots) know which functions exist.
On-chain vs off-chain data. Storage on-chain is expensive. Patterns point to hashes or URIs for bulky data; the chain holds the reference.
4. Room and energy
Tables, power strips, and laptops open — good for pairing when Remix threw a curveball or MetaMask asked for another confirmation.


Byzantium framed follow-up workshops around other token types and deeper Solidity patterns. This one was the on-ramp.
5. Links
- LinkedIn thread / Byzantium recap[1]
- Deployed contract (short link)[2]
- OpenZeppelin Contracts[3]
- Remix IDE[4]
- Sepolia testnet explorer[5]
Thanks to Khalil for teaching through the messy middle (wallets, faucets, failed txs), and to everyone who showed up for Byzantium’s first chain night.
6. Related posts
- Diagram prompts with ChatGPT and AIPRM — explaining systems in prose
- QcES lean discovery pitch — another ÉTS-adjacent learning format
