Implantação de programas

Resumo

Programas implantados via loader-v3 podem ser atualizados quando uma autoridade de atualização é definida. Revogar a autoridade torna o programa imutável. Abrange o mecanismo de atualização, instruções de implantação e atualização do loader-v3, verificação de build e os programas de carregamento disponíveis.

Implantação de programas

Atualização de programas

Para atualizar um programa, uma conta deve possuir a autoridade de atualização (normalmente a conta que originalmente implantou o programa). Durante a implantação ou atualização, o novo bytecode é carregado para uma conta de buffer temporária, e depois escrito na conta de dados do programa. Definir a autoridade de atualização como None torna o programa imutável e impede permanentemente futuras atualizações.

Mecanismo de atualização

Quando UpgradeableLoaderInstruction::Upgrade é processado, o runtime:

  1. Verifica se a conta do programa é gravável e pertence ao loader-v3.
  2. Verifica se a conta de buffer contém um estado Buffer com a autoridade correta.
  3. Verifica se o upgrade_authority_address da conta ProgramData corresponde e não é None.
  4. Verifica se o programa ainda não foi implantado no slot atual (clock.slot != slot).
  5. Carrega e verifica os novos bytes ELF do buffer.
  6. Copia o novo bytecode do buffer para a conta ProgramData e zera os bytes restantes.
  7. Financia a conta ProgramData para isenção de aluguel.
  8. Drena a conta de buffer (define lamports como 0) e trunca seus dados.
  9. A nova versão entra em vigor no próximo slot (deployment_slot + 1).

A própria conta Program (seu estado e o ponteiro programdata_address) não muda durante uma atualização. Apenas o bytecode da conta ProgramData e os metadados de slot são atualizados.

Referência de instruções do Loader-v3

O Loader-v3 (BPF Loader Upgradeable) é o carregador padrão atual para implementar programas na Solana.

InstruçãoDescrição
InitializeBufferDefine o estado de uma conta de buffer como Buffer com a autoridade especificada. Falha se já estiver inicializada.
WriteGrava bytes no deslocamento especificado em uma conta de buffer. A autoridade deve assinar.
DeployWithMaxDataLenCria um novo programa: deriva o endereço ProgramData, cria a conta ProgramData via CPI para o System Program, verifica e implanta o ELF a partir do buffer, define o estado da conta do programa e marca-a como executável.
UpgradeSubstitui o bytecode na conta ProgramData de um programa existente a partir de um buffer.
SetAuthorityAltera a autoridade de uma conta Buffer ou ProgramData. Definir como None em ProgramData torna o programa imutável. A autoridade do Buffer não pode ser definida como None.
SetAuthorityCheckedSemelhante a SetAuthority, mas exige que a nova autoridade também assine a transação.
CloseFecha uma conta de buffer, não inicializada ou ProgramData transferindo seus lamports para um destinatário. Fechar ProgramData também grava uma marca Closed no cache do programa. Não é possível fechar um programa que foi implantado no slot atual.
ExtendProgramCheckedEstende a alocação da conta ProgramData em bytes adicionais, financiando o aluguel extra a partir do pagador.

Verificação de programas

A Solana suporta builds verificáveis, que permitem aos usuários confirmar que o bytecode onchain de um programa corresponde ao seu código-fonte público. O framework Anchor fornece suporte integrado para builds verificáveis.

Para verificar o status de verificação de um programa implantado, pesquise seu ID de programa no Solana Explorer, ou use o Solana Verifiable Build CLI da Ellipsis Labs para verificar programas onchain de forma independente.

Programas de carregamento

LoaderEndereçoAtualizávelDescrição
Native LoaderNativeLoader1111111111111111111111111111111Apenas via atualização de software do validadorPossui builtins (Sistema, Voto, Stake) e outros loaders
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Não (gerenciamento do loader desativado)Programas legados
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Não (gerenciamento do loader desativado)Programas legados
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Sim, se a autoridade de atualização estiver definidaPossui todos os programas recém-implantados

Is this page helpful?

Índice

Editar Página

Gerenciado por

© 2026 Fundação Solana.
Todos os direitos reservados.
Conecte-se
  • Blog