Dom Steil


Solana a blockchain protocol I am learning about that allows users to develop blockchain applications in the rust programming language.

Solana uses proof-of-history, a function of proving time has elapsed.

When developing on Solana you have to manage accounts that are read / write and map to a schema which is updated through instructions passed in as batches of transactions. These transactions are then relayed via Solana validators and update the global state machine.

Solana has some key differences between Ethereum. It is namely block times are 400ms and fees are extermely low.

Many applications are being created on top of Solana.

-Jet Protocol - Lending Protocol -Metaplex - NFT Auctioning Protocol -Serum - Asset Agnostic Order Book -Saber - Stablecoin Exchange

Anchor is the primary development framework for developing on Solana.

Here are some of the first thoughts regarding Solana's programming model.

  • Keys and Accounts are used to manage state transitions, via instruction sets that are sent to the blockchain.
  • These instructions have args with an instruction number and various kets that have to resolve.
  • There is also the concept of loading a program into an account. Once it is in an account it can be call with instructions being sent to it.
  • Signers of transactions happen in the browser by signing partial signatures. Clients such as Phantom allow users to sign the transactions.
  • Programs in Solana are written in Rust and called via JavaScript / TypeScript
  • Anchor is a framework that is leveraged to create Solana apps. It allows apps to create new accounts, find new program addresses and to build and send transactions.
  • Transactions are a series of instructions in one atomic txn where all have to execute properly or the whole txn fails.
  • Programs can have an authority over other programs and can be used as a proxy to call functions on other programs.
  • SPL Token accounts can be leveraged to create escrow accounts where wrapped SOL can be set.
  • Manage Keys, Helper Functions, Schemas, Input Vars, instructions and signers.