Day 1 is on site and hands-on, and the first hour is worth far more if your machine is ready when you walk in. Everything below takes about an hour if your laptop is in good shape. Do it the week before, not the night before: some of the sign-ups involve an email loop.
What you should already know
- One programming language, comfortably. JavaScript or TypeScript is strongly preferred, because the entire toolchain is TypeScript and the frontend is React. If your “expertise” is Python, C, or Java you will be fine with the contracts and will need to lean on your group for the frontend.
- The web, at a basic level. What an HTTP request is, what JSON is, what a browser does with a script, roughly how a client talks to a server.
- A terminal. Running commands, environment variables, reading an error message before pasting it somewhere.
- Git. Clone, branch, commit, push, pull request. The project lives in a repository from the first day.
- No blockchain, no cryptography, no finance. None is assumed. If you have some, you will go faster on Day 1 and be bored on Day 3: bring questions.
Hardware
A laptop you can install software on, running macOS, Linux, or Windows. On Windows, use WSL 2 for everything in this module; the native toolchain works but every example, error message, and piece of help you get assumes a Unix shell. 8 GB of RAM is enough; 16 GB is comfortable. You will run a local blockchain node, a compiler, a test runner, and a dev server at the same time.
Software to install
| Tool | Version | Why |
|---|---|---|
| Node.js | 22 or later (LTS) | Runs Hardhat, the tests, and the frontend. 22, 24 and 26 all work; the checklist below tells you if yours does not |
| npm | Comes with Node | Package management |
| Git | Any recent | You know why |
| A code editor with Solidity support | Any recent | Any editor is fine. In VS Code, install the Solidity extension by Nomic Foundation: syntax, errors, go-to-definition. Other editors have an equivalent |
| Google Chrome or Firefox | Any recent | The wallet is a browser extension |
| MetaMask | Latest | The wallet. Install the extension from metamask.io, nowhere else |
| Foundry | Latest, optional until Day 4 | forge, cast and anvil. Day 4’s fork test and the project’s fuzzing axis use them. Install with curl -L https://foundry.paradigm.xyz | bash, then foundryup; on Windows, inside WSL 2 |
A suggestion rather than a rule: installing Node through a version manager
(nvm, fnm, or volta) makes it painless to switch versions later, which
tends to come up sooner than expected.
Accounts to create
Getting access to these services is part of a blockchain developer’s job, and the module treats it that way: you create your own. All of them have a free tier that covers this module several times over. Do not pay for anything.
| Service | What it gives you | Needed by |
|---|---|---|
| The school’s GitHub | Your project repository | Day 2 |
| An RPC provider (Alchemy) | A URL your code uses to talk to Base Sepolia. Infura or QuickNode work just as well if you already have an account | Day 2 |
| Etherscan | An API key, to verify your contract source on Basescan, one Etherscan key covers Base and every other chain in the Etherscan family | Day 2 |
| WalletConnect (Reown) Cloud | A project id, if you want your frontend to connect to mobile wallets. Optional for the sessions | Project |
On Alchemy, create an app, enable Base Sepolia on it, and note the HTTPS
URL. Its free tier is generous, it supports Base Sepolia out of the box, and
its dashboard shows you every request your code makes, which is useful when
learning. The public endpoint, https://sepolia.base.org, works too but is
rate-limited. One limit to know from the start: Alchemy’s free tier answers
eth_getLogs over at most a 10-block range, so a page that reads
history from events has to page through it or use the public endpoint,
which allows 10,000 blocks per request. Day 4 shows how; for everything
else the free tier is more than enough.
For Etherscan, the API key is under your account settings once signed in; there is no separate Basescan key any more.
Before Day 1: the checklist
Run these and check the output. If anything fails, do not spend the evening on it: send the output on Teams, or bring it on Day 1 and it will be sorted in the first hour. The setup is not the point of the module, and nobody should lose time on it alone.
node --version # v22 or later
npm --version
git --version
Then make a throwaway Hardhat project somewhere, to prove the toolchain works and to warm the package cache, the on-site Wi-Fi will be shared with the whole room:
mkdir hardhat-check && cd hardhat-check
npx hardhat --init
When asked for the project type, choose node-test-runner-viem: a
TypeScript project whose tests use Node’s built-in test runner and viem.
That is the template every example in the sessions assumes. The prompt is a
search box: it shows No matching choices until you type something, and
node-test-runner-viem is the default, so pressing Enter is enough. Accept
the other defaults, and let it install the dependencies. With npm 11 the
install may end with a warning about install-scripts and esbuild: npm now
declines to run a package’s install scripts until you allow them. That is
expected; if a frontend later fails to build with an esbuild error, run the
npm install-scripts approve esbuild the warning suggests, in that project.
When it finishes:
npx hardhat test
You should see a handful of passing tests from the example project. Three
of them are written in Solidity, in contracts/Counter.t.sol, and run by a
fuzzer: the template ships Foundry-style tests next to the TypeScript ones.
Ignore them until Day 4. You can delete the directory afterwards.
If something fails, the three usual reasons look like this. A Node version
error from npx hardhat --init, or an engine warning about node, means
an old Node: install 22 or later, with nvm if you have it. An install that
hangs at “installing dependencies” means a proxy or a captive portal between
you and npm. A test run that cannot find a compiler means you were offline
the first time it ran, and the compiler download failed: run it again
connected.
Finally, open the MetaMask extension and create a new wallet.
Write the recovery phrase down somewhere sensible. If you lose it, you lose the wallet, and the testnet ETH in it; nobody can recover it for you.
Optional reading
Nothing is required before Day 1, and the module assumes none of it. If you want a head start, these four are where to spend it. Skip anything about buying tokens.