Implantando Programas
Implantar um programa Solana carrega o bytecode BPF para uma conta de dados do programa através do upgradeable loader. Use Solana CLI 3.0.10 ou anchor deploy após anchor build em clusters Agave 4.1.1.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
anchor build
solana program deploy target/deploy/my_program.so \
--program-id target/deploy/my_program-keypair.json \
--url devnetQuando usar isso:
- Primeira implantação em devnet/mainnet.
- Envio de bytecode com correções de auditoria.
- Redimensionamento de dados do programa após grandes alterações de código.
- Lançamentos automatizados de CI/CD.
Exemplo de Trabalho
#!/usr/bin/env bash
set -euo pipefail
CLUSTER=devnet
PROGRAM_SO=target/deploy/my_program.so
PROGRAM_KEYPAIR=target/deploy/my_program-keypair.json
solana config set --url "$CLUSTER"
solana balance
# Construir artefato reproduzível
anchor build
# Estimar custo
solana program deploy "$PROGRAM_SO" --program-id "$PROGRAM_KEYPAIR" --dry-run
# Implantar
DEPLOY_OUT=$(solana program deploy "$PROGRAM_SO" --program-id "$PROGRAM_KEYPAIR")
echo "$DEPLOY_OUT"
PROGRAM_ID=$(solana-keygen pubkey "$PROGRAM_KEYPAIR")
solana program show "$PROGRAM_ID"O que isso demonstra:
--dry-runvisualiza a taxa de aluguel (rent) e CU (compute units) sem efetivar.- O ID do programa vem da chave pública do keypair, correspondendo a
declare_id!. program showconfirma a autoridade e o comprimento dos dados após a implantação.
Mergulho Profundo
Como Funciona
- A CLI divide o ELF em blocos que são gravados na conta buffer.
- A instrução de implantação copia o buffer para a conta de dados do programa.
- A conta do programa é um proxy executável que aponta para a conta de dados.
- O pagador financia o mínimo isento de aluguel para o tamanho da conta de dados.
Drivers de Custo de Implantação
| Fator | Impacto |
|---|---|
Tamanho do arquivo .so | Aluguel proporcional aos bytes |
| Cluster | devnet com SOL mais barato; mainnet com custo real |
| Falha na implantação | Aluguel do buffer até o fechamento |
| Taxas de prioridade | Velocidade de pouso durante congestionamento |
Notas do bash
# Fechar buffer com falha para recuperar o aluguel
solana program close <BUFFER_ADDRESS>Armadilhas
- Discrepância no ID do Programa -
declare_id!!= chave pública do keypair. Correção:anchor keys syncapós a geração da chave. - SOL Insuficiente - Aluguel + taxas excedem o saldo. Correção: Use
solana program deploy --dry-runprimeiro. - Cluster Errado - Implantação em devnet, clientes em mainnet. Correção:
solana config getantes da implantação. - Autoridade de Upgrade em Hot Wallet - A chave do implantador possui os upgrades. Correção: Transfira para multisig imediatamente.
- Build não reproduzível - Hash difere do CI. Correção: Pipeline
solana-verify build. - Programa muito grande - Excede o tamanho máximo de implantação. Correção: Remova debug, otimize, divida a lógica em vários programas.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
anchor deploy | Espaço de trabalho Anchor | Apenas programa nativo bruto |
| Retomar Buffer | SO grande / rede instável | Programas pequenos |
| Proposta de implantação Squads | Governança de produção | Iteração solo em devnet |
FAQs
Quanto SOL custa a implantação?
Principalmente o aluguel para os dados do programa (~tamanho do .so); use --dry-run para estimar em seu cluster.
Posso mudar o ID do programa depois?
Não - o ID é a chave pública do keypair; mudar o ID é uma nova implantação e migração de estado.
anchor build vs cargo build-sbf?
anchor build envolve cargo build-sbf e gera o IDL - prefira para projetos Anchor 0.32.1.
O que é a conta buffer?
Conta temporária de espera para blocos ELF durante a implantação em várias etapas.
Implantação falha no meio?
O buffer parcial permanece - feche o buffer ou retome a implantação a partir do endereço do buffer.
Mesmo .so para múltiplos clusters?
Sim - implante separadamente por cluster com keypairs de programa específicos do cluster, se necessário.
Padrão de implantação CI?
Construa em CI, implante com chave segura do gerenciador de segredos, verifique o hash pós-implantação.
Imutável na primeira implantação?
Possível revogando a autoridade imediatamente - raro; geralmente mantenha a autoridade durante o período de auditoria.
Endereço dos dados do programa?
Conta separada do ID do programa - program show lista o endereço ProgramData que contém o ELF.
Requisito Agave 4.1.1?
Construa com ferramentas de plataforma correspondentes para que o ELF implantado corresponda às expectativas do loader BPF do validador.
Relacionado
- Noções Básicas de Implantação - visão geral do loader
- Upgrades de Programa - atualizando bytecode
- Builds Verificáveis - verificação de hash
- Melhores Práticas de Implantação - política de lançamento
Versões da Pilha: 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.