A stack of annotated pages in a numbered order beside an open laptop showing a block explorer

Step 1 · before code

Keypairs, seeds, and what a derivation path fixes

A reader who treats a keypair as magic will treat a program the same way. This entry defines a keypair from the seed up, shows what a derivation path pins down, and ends with the reader deriving the same address in two languages. Without this, the rest of the path feels like incantation.

Step 2 · the shape of a request

Transaction structure: instructions, accounts, and order

Before reading a program, the reader needs to see the container it lives in. This entry opens a real transaction in a block explorer, names each field, and shows why the order of instructions is part of the semantics, not a stylistic choice.

Step 3 · the cost model

Compute budget and the price of a byte of storage

A reader who skips this step writes programs that fail on cost, not on logic. The entry pairs the compute budget with the rent model and shows the math for an account that survives a transaction versus one that does not.

Step 4 · reading before writing

Reading a program on-chain: account layout

The reader learns to read the stake program before writing one. This entry walks the account layout of a real stake account, byte by byte, and shows how the program's instructions move between fields. It is the bridge between reading and writing.

Step 5 · a first non-trivial program

Stake accounts read end to end

A full read of the stake program, from activation through deactivation, with the on-chain signatures to verify each state transition. By the end, the reader has read a real program in full, which is a different skill from reading a tutorial.

Step 6 · writing a small program

A minimal program that moves an account field

The reader writes the smallest program that does something checkable: it reads a field from an account, adds to it, and writes it back. The entry includes the source, the deploy command, and the signature to verify on devnet.

Step 7 · the deploy

Deploying to devnet and verifying the signature

The path ends with a real deploy against devnet, the signature the reader can open in a block explorer, and the changelog line the reader would write if this were a library entry. The point is not the program; it is that the reader can now tell when a program is wrong.

How to use this path

Read the steps in order. Each one assumes the entry before it. If a step feels obvious, skip it and come back if a later step stops making sense. The path is free; there is no certificate at the end and no paid tier that unlocks the harder entries. If a step is wrong, write to the editors and we will fix it in the changelog.

Suggest a change to this path