Every Bitcoin builder needs a reliable local environment before touching protocol code. Think of this lesson as preparing a workshop: if your tools are missing or half-configured, every later lesson becomes frustrating noise.
Complete Step 1 // Required reading in the study plan above, then continue here.
Step 2 — Key terms and required tools
Goal: Know what you are installing and why.
| Term | What it means | Where you use it |
|---|---|---|
| Git | Version control for your code and for open source PRs | Every lesson and every contribution |
| Node.js / Rust | Language runtimes for wallets, CLIs, and scripts | App code and ecosystem tooling |
| Docker | Containers so Bitcoin Core installs the same way on every OS | Optional now; strongly recommended for bitcoind |
| Regtest | A private local Bitcoin chain you control | Next lesson and later labs — not mainnet |
| Bitcoin Core | Reference node software (bitcoind / bitcoin-cli) | Mining blocks and RPC in regtest lessons |
Most Pull lessons assume a modern JavaScript or Rust toolchain. Pick one primary language for app code, but keep both runtimes available when you can.
Done when: You can explain each row in the table in one sentence.
Step 3 — Setup and verification
Goal: Install the base toolchain and prove it works.
- Install Git from the docs you opened in Step 1 (or your OS package manager).
- Install Node.js 20+ or Rust stable from those same docs. Ideally both.
- Optionally install Docker Desktop (or Docker Engine) so Bitcoin Core can run in a container later.
- Use a code editor with TypeScript / MDX support.
Prefer a version manager for Node (nvm, fnm, or asdf) so you do not end up with two conflicting installs.
git --version
node --version # or: rustc --version
docker --version # optionalExpected results
| Command | You should see |
|---|---|
git --version | Something like git version 2.x… |
node --version | v20… or newer (if Node is your primary stack) |
rustc --version | rustc 1.… (if Rust is your primary stack) |
docker --version | A Docker version string, or skip and note Polar for later |
type ToolchainCheck = {
name: string;
command: string;
required: boolean;
};
const checks: ToolchainCheck[] = [
{ name: "Git", command: "git --version", required: true },
{ name: "Node", command: "node --version", required: true },
{ name: "Rust", command: "rustc --version", required: false },
{ name: "Docker", command: "docker --version", required: false },
];Organize a disposable lab folder:
my-bitcoin-lab/
docs/
scripts/
src/
tests/
Loading diagram…
Common mistakes
- Installing Node via random package managers and ending up with two conflicting versions — use a version manager.
- Skipping Docker and fighting OS-specific Bitcoin Core builds early — start with a container if native installs fail.
- Mixing mainnet credentials into learning projects — keep regtest configs isolated.
Done when: Required version commands print successfully and you have a lab folder ready.
Step 4 — Hands-on check (lab)
Goal: Capture proof that your workshop is ready.
Complete the Toolchain verify lab in the study plan:
- Paste
git --versionandnode -vorrustc --version. - Confirm Docker /
bitcoindavailability, or write that you will use Polar when you hit node labs. - One sentence: which primary language you will use for Bitcoin tooling.
Done when: Lab evidence is filled in and you would trust this machine for the next lesson.
Next lesson
Once your environment is verified, move on to Regtest Development — stand up a private chain before the protocol lessons that use it.