Solana Program Scaffold

Info

This is a beta version of the Solana Toolkit, and is still a WIP. Please post all feedback as a GitHub issue here.

npx create-solana-program

create-solana-program initializes an in-depth workspace with everything you need for general Solana smart contract development. This scaffold allows you to write either native rust smart contracts or Anchor smart contracts.

Program Frameworks #

After running this command, you'll have the option to choose between Shank and Anchor for the program framework:

  • Shank creates a vanilla Solana smart contract with Shank macros to generate IDLs. For more information on Shank, read its README.

  • Anchor creates a smart contract using the Anchor framework, which abstracts away many complexities enabling fast program development. For more information on the Anchor framework, read the Anchor book.

Anchor framework #

For Anchor rust development, chose Anchor when asked which program framework to use. This will create a basic Anchor counter program with the following project structure for your program:

├── program.rs
   ├── src.rs
   ├── lib.rs
   ├── Cargo.toml
   ├── keypair.json
   ├── README.md

Native rust #

For native rust development, make sure you chose Shank when asked which program framework to use. This will create a basic counter program with the following project structure for your program:

├── program.rs
   ├── src.rs
   ├── assertions.rs
   ├──entrypoint.rs
   ├──error.rs
   ├──instruction.rs
   ├──lib.rs
   ├──processor.rs
   ├──state.rs
   ├──utils.rs
   ├── Cargo.toml
   ├── keypair.json
   ├── README.md

Generated Clients #

Next, you'll have the option to choose between a JavaScript client, a Rust Client, or both.

  • JavaScript Client creates a typescript library compatible with web3.js.

  • Rust Client creates a rust crate allowing consumers to interact with the smart contract.

For further workspace customization and additional information, check out the create-solana-program README.

Build #

After answering the above prompts, the workspace will be generated. To get started, build your program and clients by running:

cd <my-program-name>
npm install
npm run generate

To update an existing Anchor project to have this scaffold, read this guide.

Additional Resources #