Visão Geral
Programas são os equivalentes na Solana aos contratos inteligentes. Os Programas Solana são mutáveis por padrão, pois podem ser atualizados pela “autoridade de atualização” do Programa, uma chave pública definida pelo implantador do Programa. A imutabilidade em um Programa Solana é uma prática recomendada padrão, pois garante aos usuários que um programa nunca será atualizado ou modificado por um malfeitor. Neste guia, você implantará um Programa Anchor local da Solana e aprenderá como torná-lo imutável para sempre.
TLDR ou Resumo
Torne qualquer Programa Solana imutável removendo a autoridade de atualização com este comando:
solana program set-upgrade-authority <PROGRAM_ID> -u <YOUR_QUICKNODE_ENDPOINT> --final
AVISO: este processo é irreversível. Depois de remover a autoridade de atualização, o programa nunca mais poderá ser alterado.
O Que Você Vai Fazer
- Executar um validador local;
- Implantar um Programa Solana em seu host local usando Anchor;
- Remover a autoridade de atualização de um Programa Solana.
O Que Você Vai Precisar
Ou:
Implantar um Programa Solana em seu Host Local Usando Anchor
Nesta seção, você implantará um Programa Solana em seu host local usando Anchor (você pode usar as mesmas etapas para implantar um Programa Solana na Devnet - rede de desenvolvimento - ou na rede principal).
Criar um Novo Projeto
NOVO NO ANCHOR?
Anchor é um framework de desenvolvimento popular para a construção de Programas em Solana. Para começar, confira nosso Guia de Introdução ao Anchor.
Crie um novo diretório de projeto em seu terminal com o seguinte:
mkdir immutable-demo
cd immutable-demo
Crie um novo projeto Anchor usando o seguinte comando:
anchor init solana-immutable-program
Como estamos apenas testando como atualizar a autoridade de um programa, não alteraremos o programa padrão “Inicialize” (inicializar) dentro de lib.rs
.
Atualizar a Configuração do Programa
Antes de implantar seu programa, precisaremos atualizar a configuração do programa. Abra o arquivo Anchor.toml
e atualize o campo provider.cluster
para localhost
.
[
provider
]
cluster = "Localnet"
wallet = "~/.config/solana/id.json"
Verifique novamente se o caminho para sua carteira está correto. Você pode usar qualquer chave .json (confira nosso Guia sobre como criar endereços Vanity na Solana).
Vá em frente e construa seu programa. No seu terminal, digite:
cd solana-immutable-program
anchor build
A primeira compilação pode levar alguns minutos. Seja paciente.
Você deverá ver a seguinte saída:
Compiling anchor-lang v0.26.0
Compiling solana-immutable-program v0.1.0 (~/immutable-demo/solana-immutable-program/programs/solana-immutable-program)
warning: unused variable: `ctx`
--> programs/solana-immutable-program/src/lib.rs:9:23
|
9 | pub fn initialize(ctx: Context<Initialize>) -> Result<()> {
| ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
|
= note: `#[warn(unused_variables)]` on by default
warning: `solana-immutable-program` (lib) generated 1 warning
Finished release [optimized] target(s) in 1m 22s
Não se preocupe com os avisos, pois eles não terão impacto no que estamos demonstrando aqui.
Bom trabalho. Agora você tem um programa compilado que pode ser implantado no host local.
Iniciar um Validador Local
Antes de implantar seu programa, precisaremos iniciar um validador local. Em um terminal separado, inicie um validador local usando o seguinte comando:
solana-test-validator -r
O sinalizador -r
redefinirá o livro-razão para genesis, se existir (em vez de retomar a partir de uma instância anterior).
Para obter mais informações sobre como executar um validador local, verifique a documentação da CLI Solana ou você pode entrar no menu de ajuda digitando o seguinte comando em seu terminal:
solana-test-validator --help
Você deverá ver seu validador começar a produzir blocos:
Defina a Configuração da Sua CLI Solana
Antes de implantar seu programa, você precisará definir a configuração da CLI Solana como host local e a mesma carteira referenciada em Anchor.toml
. Você pode definir a configuração da CLI Solana usando o seguinte comando:
solana config set --url localhost --keypair ~/.config/solana/id.json
Você deverá ver a seguinte saída:
Config File: ~/.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: ~/.config/solana/id.json
Commitment: confirmed
Finalmente, vamos certificar-nos de que sua carteira possui algum SOL em seu cluster local. Você pode obter algum SOL por airdrop usando o seguinte comando:
solana airdrop 100
Observação: os airdrops de host local não são limitados, como os servidores de rede de desenvolvimento e rede de testes, portanto, você pode lançar mais de 1 ou 2 SOL por vez.
Devemos estar prontos para ir! Vamos implantar nosso programa no host local.
Implantar o Programa
Com seu validador local em execução, é possível implantar seu programa usando o seguinte comando:
anchor deploy
Você deverá ver a seguinte saída:
quicknode solana-immutable-program % anchor deploy
Deploying workspace: http://localhost:8899
Upgrade authority: ~/.config/solana/id.json
Deploying program "solana-immutable-program"...
Program path: <PATH>/solana-immutable-program/target/deploy/solana-immutable-program.so...
Program Id: TESTxAHSs72DNFzhxmWhD9cVJjYqcgH2kHuDsq2NzEz
Deploy success
Bom trabalho! Você implantou seu programa com sucesso no host local. Certifique-se de copiar o ID do Programa, pois precisaremos dele na próxima etapa.
Remover a Autoridade de Atualização de um Programa Solana
Nosso Programa é atualmente mutável. Para alterá-lo para ser imutável indefinidamente, você pode remover a autoridade de atualização usando o seguinte comando (certifique-se de substituir o ID do Programa pelo que você copiou na etapa anterior):
solana program set-upgrade-authority <PROGRAM_ID> -u localhost --final
Algumas notas sobre nosso comando:
-
PROGRAM_ID
é o ID do programa que você deseja tornar imutável. -
-u localhost
define o URL do cluster em que estamos trabalhando para localhost (é o mesmo que o sinalizador--url localhost
). Você não precisa definir o URL se já tiver definido a configuração da CLI Solana como localhost. No entanto, gostamos de fazer isso ao efetuar alterações importantes como essa para garantir que estamos trabalhando no cluster correto. -
--final
é o sinalizador que remove a autoridade de atualização (torna o programa imutável).
Você deverá ver a seguinte saída:
Account Type: Program
Authority: none
Incrível! Bom trabalho. Você removeu com sucesso a autoridade de atualização de um Programa Solana e o tornou imutável. Se quiser verificar se o programa é imutável, você pode tentar atualizá-lo usando o seguinte comando:
anchor upgrade --program-id <PROGRAM_ID> <PATH_TO/solana-immutable-program>
Certifique-se de usar o mesmo ID do Programa usado na etapa anterior e o caminho correto para o seu programa.
Você deverá ver a seguinte saída:
Error: Program <PROGRAM_ID> is no longer upgradeable
There was a problem deploying: Output { status: ExitStatus(unix_wait_status(256)), stdout: "", stderr: "" }.
Você também pode verificar a autoridade do seu programa usando Solana Explorer. Substitua seu Program_ID no seguinte URL e abra-o em seu navegador:
https://explorer.solana.com/address/<PROGRAM_ID>?cluster=custom&customUrl=http://localhost:8899
Você deverá ver que o campo “ Upgradeable” (atualizável) do programa está definido como “No” (não):
Implantando na Rede Principal com QuickNode
Quando estiver pronto, você pode aplicar as mesmas etapas ao seu Programa na rede principal. Tome cuidado! Depois de remover a autoridade de atualização de um programa, ela se torna imutável. Você não poderá atualizar o programa depois que a autoridade de atualização for removida.
A implantação de programas na rede principal é um processo intensivo – se você deseja tempos de resposta 8x mais rápidos, pode deixar o trabalho pesado conosco. Veja por que mais de 50% dos projetos em Solana escolhem o QuickNode e inscreva-se para uma conta gratuita aqui. Para usar seu ponto de extremidade do QuickNode com este guia, basta substituir localhost
pelo seu ponto de extremidade do QuickNode nos sinalizadores -u
and --url
acima, por exemplo:
solana program set-upgrade-authority <PROGRAM_ID> -u <YOUR_QUICKNODE_ENDPOINT> --final
Conclusão
Bom trabalho! Você implantou com sucesso um programa Solana imutável no host local. Você pode desligar seu validador local digitando ctrl (ou cmd) + c
no terminal do validador.
Tem dúvidas? Ou apenas deseja compartilhar aquilo em que está trabalhando? Escreva-nos no Discord do QuickNode ou no Twitter e teremos prazer em ajudá-lo!
Nós <3 Feedbacks!
Se você tiver algum comentário ou dúvida sobre este guia, informe-nos aqui! Adoraríamos ouvir de você!
Este artigo foi escrito por Aaron Milano, e traduzido por Isabela Curado Nehme. Seu original pode ser lido aqui.
Top comments (0)