2/ Anchor (by @ProjectSerum) is a framework that will make your life much easier.
There are three parts to Anchor:
- A TypeScript library that's similar to web3.js
- Rust crates that make writing Solana programs easier
- A CLI for building/testing, similar to @HardhatHQ
3/ The best way to get a high-level understanding of each of these parts is to read through Anchor's tutorials.
The tutorials show you how to write Solana programs, how to interact with those programs via JavaScript, and how to build/test your code.
5/ @dabit3's guide is a great intro to fullstack Solana dev. It covers:
- The Solana CLI
- The Anchor framework (which makes it much easier to write Solana programs)
- Building a frontend that interacts with a Solana program (e.g. how to connect a wallet)
7/ @bfriel_'s second guide goes over Program Derived Addresses, and uses them to address an unresolved problem in @dabit3's tutorial—how do you persist the state of your program?
It's a tricky topic, and this is the best explanation of it I've read.
8/ @paulxpaulxpaulx's guide shows how to program for Solana without Anchor. It shows what Anchor is abstracting away, and also serves as an introduction to Solana tokens.
I found it easier to grasp after reading the above resources.
9/ @dumbcontract2 has an informative (and entertaining) overview of Solana. I understood it much better after going through the previous resources and writing some code. It's not going to give you a deep understanding, but it's a great summary.
10/ The Solana docs have a lot of info, but are not the easiest read. I recommend starting out by reading the "Terminology" page and the "Programming Model" pages. You can dive into other topics as needed.
11/ Lastly, @ShinobiSystems wrote my favorite resource on Proof of History. You don't need to understand this to develop for Solana, but it's one of Solana's main innovations, and is well worth understanding.
Data accounts store data. Program accounts store executable programs.
Each account has an address (usually a public key) and an owner (address of a program account). There are a few more fields every account stores, see 👇
2/ There are a few important ownership rules:
- Only a data account's owner can modify its data and subtract lamports.
- Anyone is allowed to give lamports to a data account.
- The owner of an account may assign a new owner if the account's data is zeroed out.
My 7 favorite resources for getting started with web3...
1/ @3blue1brown's video "But how does bitcoin actually work?" explains Bitcoin's blockchain, and is the most understandable introduction to blockchain I've come across.
2/ The @ethereum whitepaper explains what Ethereum is and how it works. I recommend skimming it to get the general idea and revisiting it later.