Local Program Development

Summary #

  • To develop onchain programs on your machine, you need Solana CLI, Rust and (optional, but recommended) Anchor.
  • You can use anchor init to create a new blank Anchor project
  • anchor test runs your tests, and also builds your code.

Lesson #

There's no lesson here! Let's install Solana CLI tools, the Rust SDK, and Anchor, and create a test program to ensure that our setup works.

Lab #

Extra steps for Windows users #

Firstly install Windows Terminal from the Microsoft store.

Then install Windows Subsystem for Linux (WSL). WSL provides a Linux environment that launches instantly whenever you need it and doesn't slow your computer down.

Start Windows Terminal, launch an 'Ubuntu' session inside the terminal, and proceed with the rest of these steps.

Download Rust #

First, download Rust by following the instructions:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Download the Solana CLI tools #

Next download the Solana CLI tools.

sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"

Afterwards, solana -V should show solana-cli 1.18.x (any number for x is fine).

Download Anchor #

Finally download Anchor:

cargo install --git https://github.com/coral-xyz/anchor avm --locked --force
avm install latest
avm use latest

Afterwards, anchor -V should show anchor-cli 0.30.0.

Check your Anchor installation #

Create a temporary project, with the default contents, using Anchor and make sure it compiles and runs our tests:

anchor init temp-project
cd temp-project
anchor test

The anchor test command should complete with no errors or warnings. However you may encounter issues, and we'll fix them below:

package solana-program v1.18.12 cannot be built because it requires rustc 1.75.0 or newer error

Run cargo add solana-program@"=1.18.x", where x matches your version of solana-cli. Then re-run anchor test.

Error: Unable to read keypair file

Add a keypair to .config/solana/id.json. You can either copy a keypair from an .env file (just the array of numbers) into a file or use the command solana-keygen new --no-bip39-passphrase to create a new keypair file. Then re-run anchor test.

unused variable: 'ctx' warning

This simply means the initialize instruction handler isn't doing anything yet. You can open programs/favorites/src/lib.rs and change ctx to _ctx or just go onto the next step.

No license field in package.json warning

Open package.json, add "license": "MIT" or "license": "UNLICENSED" depending on preferences

All done? #

Ensure anchor test completes successfully - with no warnings and no errors - before continuing.

Success

Completed the lab? #

Push your code to GitHub and tell us what you thought of this lesson!