Skip to content

Data model on Solana

Solana stores all the data of the same app / same program in various accounts.

Screenshot 2024-08-23 at 4.38.03 PM.png

Transaction vs Instruction

Transactions

A transaction in Solana is a bundle that includes one or more instructions. Transactions are used to submit operations or changes to the network. They can be simple, such as transferring SOL between accounts, or complex

Instructions

The core operations that the transaction will execute.

How to create an account with some data

const solanaWeb3 = require('@solana/web3.js');
const fs = require("fs")
const { Keypair, Connection, SystemProgram, Transaction, sendAndConfirmTransaction } = solanaWeb3;
// Connect to Solana devnet
const connection = new Connection(solanaWeb3.clusterApiUrl('devnet'), 'confirmed');
// Generate a new keypair for the data account
const dataAccount = Keypair.generate();
const payer = Keypair.fromSecretKey(new Uint8Array(JSON.parse(fs.readFileSync(`/Users/harkiratsingh/.config/solana/id.json`, "utf-8")))); // This will be the account paying for the transaction
async function createAccount() {
// Create a transaction to create and fund the account
const tx = new Transaction().add(
SystemProgram.createAccount({
fromPubkey: payer.publicKey,
newAccountPubkey: dataAccount.publicKey,
lamports: await connection.getMinimumBalanceForRentExemption(1000), // Amount to fund the account
space: 1000, // Space in bytes to allocate for data
programId: SystemProgram.programId,
})
);
// Send the transaction to the network
const txId = await sendAndConfirmTransaction(connection, tx, [payer, dataAccount]);
console.log(`Created account with transaction ID: ${txId}`);
}
createAccount();