Twitter Threads

I think it's time to update my pinned tweet with a little more up-to-date links and information for learning @solana so let's do a thread 🧵

Diagramming all the accounts used by a Solana program is a great way to understand how it works.

PDAs, or program derived addresses, are one of the trickier #Solana concepts 🤔. They're also something that every Solana dev should understand. In this thread, I'll go over what they are, and why they're useful 👇

How do Solana CPIs work? That is, how do Solana programs call into other Solana programs? Here's a quick 6 tweet explanation 👇

Solana accounts explained in 5 tweets 🧵

The state of program admin keys in Solana, and why we built @GokiProtocol

Implementing custom hooks in React to use the SPL Token Registry and display metadata.

what's a crank? Why's it useful? Is it hard to run?

Need to decode data for an account owned by a program without a connected wallet? Saber_HQ's SuperCoder is your friend.

A tweet-thread-sized guide to building on Solana from the ground up. Accounts, programs, and instructions to Anchor and Phantom.

Splitting payments between multiple wallets on Solana using Rust.

A brief guide on how Serialization works for Solana programs.

A thread of 10 vulnerabilities to avoid when writing Solana programs.

Learn about Merkle Trees and how you can use them for whitelisting.

The new (alpha) Metaplex SDK has been public for a week now so I wanted to write a thread explaining the pain points of the previous SDK and how we tackled them.

What are they? Basically a collection of schemas for data consumed by Solana programs: instructions, account data, errors, and more. I'll walk through how to fetch them and use them to decode account data.

Most #solana data uses borsh encoding. It's an interesting format because of how simple it is. In JS, decoding borsh data can be done with 0 dependencies in very few lines of code using a recursive algorithm.

We'll go over the Candy Machine creation process from prepping your NFTs, creating Candy Machine, uploading your NFT, validating, and loading it to the frontend.

Discussion on SPL Associated Token Accounts (ATA) and the risks of signing an unknown setAuthority() transaction and maybe a few ways to mitigate the risks

One key Solana innovation is separating executable code from its state. In web2 terminology, you could say a Solana smart contract is a stateless function.

A wallet isn't an actual data struct. It's just a public key. All tokens are stored in "associated" token accounts stored at addresses deterministically found by hashing the wallet and mint addresses

I recently did a deep dive into the Solana helloworld program. Here are some of my notes on what I learned. 🧵