This tutorial covers the following concepts:
- some basic rust programming
- how to use different networks (localnet, devnet, etc.)
- program development using Anchor
- program testing using Anchor
- how to structure a program
- the solana account model
- how to handle errors
- PDAs (program derived accounts)
- some basic defensive programming
- interacting with programs using rust based clients
The "finished" code (very much WIP) can be found here:
- install nodejs for testing our programs
- install rust for building our programs
- install solana cli for running a local node during testing
- have an account created to use with solana-cli (details below)
- install anchor cli for deployment and testing of our programs
To create an account for the solana-cli simply run the following (solana-keygen is installed after installing solana cli):
solana-keygen newThis will NOT overwrite any old keys unless you use --force DO NOT use --force unless you
know what you are doing and are sure that you have NO FUNDS on the account.
The tutorial is broken up into step-0 - step-6. Each of the steps are their own git branch. You clone it and use it as any other repo, or you can manually view the branches online.
After going through the above tutorials, I more or less felt comfortable branching out and trying something on my own.
- great super fast blunt explanation on how things generally work in solana
- great super fast blunt explanation on how things work in anchor
- Metaplex docs. These are the best explanations on how both fungible and non-fungible tokens work that I have found!
Check out the solana stackexchange. There are some very knowledgeable people there. If you post a unique question there it will likely eventually get answered. You just need to be patient and wait :)
Go build your own project! At this point you probably know enough to build something and/or figure out how to do the new thing that you may need in your future projects.
have some sort of an office hour to help setup environment... though attendees should try to setup everything beforehand