Implantar um Contrato
Depois de compilar um contrato inteligente, você pode implantá-lo em um ambiente Besu do Oracle Blockchain Platform.
O processo de implantação cria as bibliotecas auxiliares e os proxies UUPS necessários, vincula os contextos de token e conta e define o contexto de governança. O token e a conta são implantados em um estado inativo. Eles se tornam ativos somente por meio do processo de intenção de implantação.
Para implantar um contrato compilado, obtenha o endereço do contrato de governança pré-implantado e seu UUID de política do administrador de token de ativos digitais. Obtenha uma conta com permissão para implantar e, quando aplicável, para enviar a intenção de implantação. O formulário de implantação requer um contrato, ambiente, ID de implantação e metadados de registro: ID de contrato inteligente, versão, descrição e autor. O ID da implantação identifica um estado de implantação que pode ser retomado; use um valor estável e exclusivo ao tentar novamente a mesma implantação.
Ciclo de Vida da Implantação
- Compile o projeto.
- Implante a pilha de ativos digitais do Oracle Blockchain Platform.
- Defina contextos de conta/token e governança. (Os representantes estão inativos.)
- Revise e envie a intenção de implantação para ambos os componentes de proxy.
- Governança No-Op: A proposta é bem-sucedida e os componentes são ativados.
- Governado: As aprovações de política necessárias foram concluídas e, em seguida, os componentes foram ativados.
Observação:
Os proxies ficam inativos imediatamente após a implantação. A implantação bem-sucedida do contrato não significa que o token esteja ativo. A ativação é controlada pelo contrato de governança configurado para a implantação, não por uma atualização UUPS.Criar um Ambiente Besu do Oracle Blockchain Platform
Um ambiente do Oracle Blockchain Platform Besu armazena o host RPC do Oracle Blockchain Platform, não um ponto final JSON-RPC completo. A extensão deriva as rotas necessárias de Besu e governança deste host.
- Abra a exibição Ambientes e selecione Adicionar Ambiente.
- Informe um nome de ambiente descritivo. Por exemplo, digite obp-test.
- Selecione Oracle Blockchain Platform Besu para Tipo de Ambiente.
- Informe o Host URL do RPC. Por exemplo, digite https://rpcproxy.example.com:443.
O host de URL de RPC deve ser somente uma origem
httpouhttps, não um caminho de ponto final, string de consulta, fragmento, nome de usuário ou senha. Por exemplo, digitehttps://rpcproxy.example.com:443, nãohttps://rpcproxy.example.com:443/v1/besu/proxy. - Informe o ID da Cadeia da rede.
- Insira o token de autorização exigido pelo proxy RPC.
- Opcionalmente, defina Gas Price Wei, Permitir Assinatura Automática e um Caminho de Certificado de CA para uma autoridade de certificação privada. Deixe Contas BESU vazias, a menos que seu modelo de implantação exija especificamente assinatura sem custódia. As implantações do serviço da wallet do Oracle Blockchain Platform coletam detalhes de assinatura por implantação.
- Selecione Criar.
Para o host armazenado do Oracle Blockchain Platform, a extensão deriva o ponto final do proxy Besu e usa o ponto final da intenção de governança do Oracle Blockchain Platform. Isso mantém o ambiente portátil entre as operações de implantação, execução e governança.
O ambiente Nó Local Hardhat incorporado está disponível para desenvolvimento local e não precisa ser salvo. Não é um ambiente do Oracle Blockchain Platform.
Implantar em um Ambiente Besu do Oracle Blockchain Platform
- No painel Contratos, abra o formulário Implantar/Executar do projeto e selecione a guia Implantar.
- Selecione o pacote de contratos e o ambiente Besu.
- Informe um ID de implantação ou mantenha o ID de implantação exibido.
- Preencha os metadados de registro necessários. O nome, o símbolo, a descrição, o URI e os IDs de administrador do token de tempo de implantação são opcionais. Os valores vazios usam os padrões do script de implantação.
- Digite as informações de assinatura do serviço da wallet mostradas para o ambiente do Oracle Blockchain Platform.
- URL de Assinatura do Serviço da Wallet
- Contas de Serviço de Wallet, um array JSON de objetos address/wallet-ID
- Token de Autenticação do Serviço de Wallet
- Selecione Próximo.
- Em Opções de Implantação, informe o Endereço do Contrato do Governo e o UUID da Política e selecione Implantar.
O Blockchain App Builder executa o script de implantação do Hardhat gerado por meio da rede Besu do Oracle Blockchain Platform, usando os valores de serviço da wallet somente para essa implantação. Ele implanta ou reutiliza os componentes necessários, define seus contextos e retorna os endereços proxy de token e conta. Ambos os proxies estão inativos.
Enviar a Intenção de Implantação
Após a conclusão da implantação inativa, a seção de governança é preenchida com os valores Alvo de Token e Alvo da Conta implantados. Mantenha os dois alvos na intenção. Cada um é um proxy EIP-1967; a governança ativa o proxy contra seu endereço de implementação resolvido e hash de código de tempo de execução.
- Confirme os alvos do token e da conta. Substitua-os apenas se você estiver propondo intencionalmente um par de proxy existente.
- Informe um Prazo de Proposta futuro.
- Para o Oracle Blockchain Platform Besu, informe o Endereço do Remetente autorizado pela política selecionada. O ambiente selecionado deve ter um host de URL RPC e um token de autorização.
- Para outros ambientes EVM, selecione uma Conta do Chamador ou informe a chave privada do chamador. O aplicativo deriva o endereço do remetente dessa chave.
- Selecione Revisar. A extensão resolve o hash de código de implementação e implementação de cada proxy e, em seguida, exibe a intenção proposta.
- Verifique o UUID, o prazo, os alvos de proxy, os endereços de implementação e os hashes de código.
- Selecione Enviar.
Para um ambiente do Oracle Blockchain Platform, a extensão envia a intenção revisada por meio do ponto final de governança do serviço da wallet do Oracle Blockchain Platform. Para outros ambientes EVM, ele envia uma transação proposeDeployIntent assinada diretamente para o contrato de governança por meio de JSON-RPC.
Se você alterar o endereço de governança, o UUID, os alvos de proxy ou o prazo após a revisão, a visualização será invalidada. Revise a proposta novamente antes de enviá-la.
Ativação de Governança
O mesmo workflow de intenção é usado para os dois tipos de governança. A diferença é o que acontece depois que o contrato de governança aceita a proposta:
- Sem Operação: Uma chamada
proposeDeployIntentbem-sucedida ativa os componentes incluídos imediatamente. Confirme a transação ou a resposta do Oracle Blockchain Platform e, em seguida, verifique o estado ativo do token. - Governada: A intenção submetida permanece sujeita à política configurada. O token e a conta se tornam ativos somente após as aprovações necessárias terem sido recebidas antes do prazo.
A extensão envia a intenção; ela não representa nem ignora os aprovadores de governança. Para uma política governada, use o processo de aprovação da organização e aguarde a ativação do contrato de governança. Se a política rejeitar ou expirar a intenção, corrija a causa e, em seguida, envie uma nova intenção válida. A implantação sozinha não ativará os proxies.
Observação:
Depois que você implanta um contrato, os arquivos de manifesto são gerados na pasta.openzeppelin na raiz do projeto. Para redes de produção (não redes de desenvolvimento), confirme esses arquivos no controle de origem. Para obter mais informações, consulte Network Files na documentação do OpenZeppelin.
Diagnosticando e Solucionando Problemas de Erros de Implantação
| Condição | Resolução |
|---|---|
| Não é possível salvar o ambiente do Oracle Blockchain Platform | Informe uma origem HTTP ou HTTPS sem um caminho de ponto final. O campo Oracle Blockchain Platform espera apenas o host. |
| A revisão da governança diz que o ambiente do Oracle Blockchain Platform precisa de um host de URL RPC e um token de autorização | Atualize o ambiente salvo do Oracle Blockchain Platform com os dois valores e abra-o ou selecione-o novamente. |
| Relatórios de revisão de governança sem código de bytes de runtime | Verifique os endereços de rede e proxy/implementação selecionados. Não envie uma intenção para um destino que não esteja implantado. |
| Implantação bem-sucedida, mas o token está inativo | Envie a intenção de implantação. Para governança governada, aguarde todas as aprovações de políticas; para governança no-op, confirme se a transação da proposta foi bem-sucedida. |
| A proposta não pode ser enviada após a alteração dos campos | Selecione Revisar novamente. O aplicativo invalida deliberadamente uma visualização desatualizada. |