Program File Structure
This is a beta version of the Solana Toolkit, and is still a WIP. Please post all feedback as a GitHub issue here.
Typically Solana smart contracts (aka programs) workspaces will be have the following file structure:
.├── app├── migrations├── node_modules├── programs├── target└── tests
The main program is the lib.rs
file, which lives insides the programs
directory, as shown below:
.├── app├── migrations├── node_modules├── programs├── src├── lib.rs├── target└── tests
As the program gets more cumbersome, you'll typically want to separate the logic into multiple files, as shown below:
├── programs├── src├── state.rs├── instructions├── instruction_1.rs├── instruction_2.rs├── instruction_3.rs├── lib.rs├── constants.rs├── error.rs├── mod.rs
For native rust program development, you need to explicitly write out the entrypoint and processor for the program, so you'll need a few more files:
├── 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