Noções Básicas de Solana
9 exemplos para você começar com fundamentos de Solana - 6 básicos e 3 intermediários. Cobre contas, programas, transações, SOL, clusters e o fluxo de trabalho do desenvolvedor no Agave 4.1.1.
Busque em todas as páginas da documentação
9 exemplos para você começar com fundamentos de Solana - 6 básicos e 3 intermediários. Cobre contas, programas, transações, SOL, clusters e o fluxo de trabalho do desenvolvedor no Agave 4.1.1.
Instale o Solana CLI 3.0.10 e crie um keypair padrão na devnet.
sh -c "$(curl -sSfL https://release.anza.xyz/v3.0.10/install)"
solana --version
solana config set --url devnet
solana-keygen new --no-bip39-passphrase -o ~/.config/solana/id.json
solana airdrop 2Para exemplos de clientes TypeScript, use @solana/kit 7.0.0:
npm install @solana/kit@7.0.0Todo endereço na Solana mapeia para uma conta - mesmo que tenha zero lamports.
import { createSolanaRpc, address, lamports } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const pubkey = address("11111111111111111111111111111111");
const { value } = await rpc.getBalance(pubkey).send();
console.log(`Balance: ${Number(lamports(value)) / 1e9} SOL`);getBalance retorna lamports diretamente do campo de lamports da contaRelacionado: SOL, Lamports e Unidades - precisão e conversões
Contas são a abstração única para todo o estado on-chain.
// Layout conceitual - toda conta tem estes campos
pub struct Account {
pub lamports: u64, // saldo SOL em lamports
pub data: Vec<u8>, // buffer de bytes arbitrário
pub owner: Pubkey, // programa autorizado a escrever dados
pub executable: bool, // true para programas implantados
pub rent_epoch: u64, // rastreamento de rent (campo legado)
}executable = true e código em dataRelacionado: O Modelo Mental da Solana vs. EVM - contas vs contratos
Uma transação com uma instrução do System Program move SOL entre contas.
solana transfer <RECIPIENT_PUBKEY> 0.1 --allow-unfunded-recipientTransfer do System Program--allow-unfunded-recipient cria o destino se ainda não houver contaRelacionado: Como uma Transação Flui - do cliente à confirmação
Use a CLI ou RPC para ver instruções, signatários e compute units consumidas.
solana confirm -v <SIGNATURE>-v imprime o program ID, contas e dados de cada instruçãoRelacionado: Keypairs e Endereços - quem assina o quê
A Solana executa vários clusters independentes com propósitos diferentes.
solana config set --url devnet # SOL de teste grátis, RPC público
solana config set --url testnet # testes de validador, menos estável
solana config set --url mainnet-beta # produção - SOL real
solana-test-validator # nó local Agave 4.1.1Relacionado: Clusters e Redes - quando usar cada um
A Solana visa slots de ~400 ms; líderes produzem blocos por slot.
solana slot
solana block-time $(solana slot)Relacionado: Slots, Blocos e Epochs - detalhes do cronograma de epochs
O Kit usa um pipe funcional para montar transações versionadas.
import {
createSolanaRpc,
createTransactionMessage,
setTransactionMessageFeePayer,
setTransactionMessageLifetimeUsingBlockhash,
appendTransactionMessageInstruction,
pipe,
address,
getSignatureFromTransaction,
signTransactionMessageWithSigners,
} from "@solana/kit";
import { getTransferSolInstruction } from "@solana-program/system";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const feePayer = address("YOUR_FEE_PAYER_PUBKEY");
const recipient = address("RECIPIENT_PUBKEY");
const { value: blockhash } = await rpc.getLatestBlockhash().send();
const transferIx = getTransferSolInstruction({
source: feePayer,
destination: recipient,
amount: 100_000_000n, // 0.1 SOL em lamports
});
const txMessage = pipe(
createTransactionMessage({ version: 0 }),
(m) => setTransactionMessageFeePayer(feePayer, m),
(m) => setTransactionMessageLifetimeUsingBlockhash(blockhash, m),
(m) => appendTransactionMessageInstruction(transferIx, m),
);
// Assine com seu keypair signer e envie via sendTransactionbigint em lamports - nunca floats JavaScriptRelacionado: Carteiras e Explorers - fluxo de trabalho na devnet
Keypairs Ed25519 são a raiz da identidade e assinatura na Solana.
solana-keygen new --outfile ./dev-wallet.json --no-bip39-passphrase
solana-keygen pubkey ./dev-wallet.jsonimport { createKeyPairSignerFromBytes } from "@solana/kit";
import { readFileSync } from "node:fs";
const secret = JSON.parse(readFileSync("./dev-wallet.json", "utf8"));
const signer = await createKeyPairSignerFromBytes(Uint8Array.from(secret));
console.log(signer.address);Relacionado: Keypairs e Endereços - modelo de assinatura
Acompanhe uma transferência do envio pelo cliente até a confirmação finalizada.
# 1. Enviar
SIG=$(solana transfer <RECIPIENT> 0.01 --output json | jq -r .signature)
# 2. Verificar confirmação
solana confirm $SIG --commitment confirmed
# 3. Inspecionar no explorer
echo "https://explorer.solana.com/tx/$SIG?cluster=devnet"Relacionado: Como uma Transação Flui - pipeline completo
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026