# Hello Solana This is it: our first Solana program. Naturally, we're going to start with "hello, world", but we'll take a look at some of the key things going on here. ## Transactions First thing's first, we have to understand what's in a Solana transaction. > For a closer look at transactions, check out the [Solana Core Docs](https://docs.solana.com/developing/programming-model/transactions) or the [Solana Cookbook](https://solanacookbook.com/core-concepts/transactions.html#facts). The anatomy of a transaction is as follows, but here's the keys: :key: **Transactions** are for **the Solana runtime**. They contain information that Solana uses to allow or deny a transaction (signers, blockhash, etc.) and choose whether to process instructions in parallel. :key: **Instructions** are for **Solana programs**. They tell the program what to do. :key: Our program receives one instruction at a time (`program_id`, `accounts`, `instruction_data`). #### Transaction ```shell signatures: [ s, s ] message: header: 000 addresses: [ aaa, aaa ] recent_blockhash: int instructions: [ ix, ix ] ``` #### Instruction ```shell program_id: xxx accounts: [ aaa, aaa ] instruction_data: b[] ```