WEB3DEV

Cover image for Consultas Utilizando um Ator - Internet Computer
Paulo Gio
Paulo Gio

Posted on • Atualizado em

Consultas Utilizando um Ator - Internet Computer

No guia de início rápido, você viu pela primeira vez um cânister simples da Internet Computer envolvendo um objeto de ator e mensagens assíncronas. Como uma próxima etapa sobre aprender a escrever cânisteres que aproveitam as mensagens baseadas em atores, este tutorial ilustra como modificar um tradicional cânister Hello, World! para definir um ator e, em seguida, implantar e testar seu cânister em um ambiente de execução de cânister local.

Antes de começar

Antes de iniciar o tutorial, verifique o seguinte:

  • Você baixou e instalou o pacote SDK conforme descrito em Baixar e instalar.
  • Você parou todos os processos do ambiente de execução do cânister local

Este tutorial leva aproximadamente 20 minutos para ser concluído.

Criando um novo projeto

Para criar um novo projeto para este tutorial:

  1. Abra um shell de terminal em seu computador local, se você ainda não tiver um aberto.
  2. Mude para a pasta que você está usando para seus projetos da Internet Computer, se estiver usando uma.
  3. Crie um novo projeto executando o seguinte comando:
dfx new actor_hello
Enter fullscreen mode Exit fullscreen mode
  1. Mude para o diretório do seu projeto executando o seguinte comando:
cd actor_hello
Enter fullscreen mode Exit fullscreen mode

Modificando a configuração padrão

No tutorial Explorando o projeto padrão, você viu que a criação de um novo projeto adiciona um arquivo de configuração dfx.json padrão ao diretório do projeto. Neste tutorial, você precisa modificar algumas das configurações padrão para refletir em seu projeto.

Para modificar o arquivo de configuração dfx.json:

  1. Abra o arquivo de configuração dfx.json em um editor de texto.
  2. Verifique as configurações padrão para o projeto actor_hello.
  3. Observe que todos os nomes e caminhos para os arquivos de origem e saída usam o nome do projeto actor_hello.

    Por exemplo, o nome do cânister padrão é actor_hello e o caminho padrão para o arquivo de código principal é src/actor_hello/main.mo.

    Você pode renomear qualquer um desses arquivos ou diretórios. No entanto, se você fizer alguma alteração, certifique-se de que os nomes usados ​​para seus arquivos e diretórios no sistema de arquivos correspondam aos nomes especificados no arquivo de configuração dfx.json. Se você planeja usar o diretório padrão e os nomes de arquivo, nenhuma alteração é necessária.

  4. Remova todas as definições de configuração actor_hello_assets do arquivo.

    O cânister de amostra para este tutorial não usa nenhum recurso de front-end, então você pode remover essas configurações do arquivo de configuração.

    Por exemplo, o arquivo de configuração fica assim depois que você remove a seção actor_hello_assets.

  5. Salve suas alterações e feche o arquivo para continuar.

Modificando o cânister padrão

No tutorial Explorando o projeto padrão, você viu que a criação de um novo projeto cria um diretório src padrão com um arquivo main.mo de modelo. Neste tutorial, você modifica o código do modelo para criar um simples cânister "Hello, World!" definindo um ator em Motoko. Em Motoko, um cânister da Internet Computer é representado como um ator do Motoko.

Para modificar o código-fonte do modelo padrão:

  1. Mude para o diretório do código-fonte do seu projeto executando o seguinte comando:
cd src/actor_hello
Enter fullscreen mode Exit fullscreen mode
  1. Abra o arquivo modelo main.mo em um editor de texto e exclua o conteúdo existente.

    O próximo passo é escrever um cânister que imprima uma declaração como o tradicional cânister de amostra "Hello, World!". Para compilar o cânister para a Internet Computer, entretanto, seu código Motoko deve definir um ator.

  2. Copie e cole este código no arquivo main.mo.

    Vamos dar uma olhada neste ator Motoko definindo nosso cânister:

  • O código importa um módulo Debug para fornecer a funcionalidade print.
  • O ator usa a declaração public query func para definir um método de consulta da Internet Computer. Nosso método não precisa fazer alterações permanentes no estado do ator. Declará-lo como uma consulta significa que quaisquer alterações feitas são transitórias e descartadas após a conclusão da consulta.

    Para obter mais informações sobre como usar uma chamada de consulta, consulte as “chamadas de consulta” em “Cânisteres incluem programa e estado”.

  1. Salve suas alterações e feche o arquivo main.mo.

Verificando se o cânister é compilado

Normalmente, para compilar um cânister, é necessário primeiro reservar um identificador de cânister exclusivo na rede principal da blockchain da Internet Computer.

No entanto, também é possível compilar seu programa sem se conectar à rede principal da blockchain da Internet Computer. O comando dfx build --check usa um identificador de cânister temporário e codificado rigidamente para fazer isso.

Para verificar se o cânister é compilado:

  1. Navegue de volta para a raiz do diretório do seu projeto.
  2. Crie o executável do cânister com um identificador temporário codificado rigidamente executando o seguinte comando:
dfx build --check
Enter fullscreen mode Exit fullscreen mode

A opção --check permite que você implante um projeto localmente para verificar se ele é compilado com sucesso e para inspecionar os arquivos produzidos. Como o comando dfx build --check usa apenas um identificador temporário, você deve ver uma saída semelhante à seguinte:

Building canisters to check they build ok. Canister IDs might be hard coded.
Building canisters...
Enter fullscreen mode Exit fullscreen mode

Se o cânister for compilado com sucesso, você poderá inspecionar a saída no diretório padrão .dfx/local/canisters e no subdiretório .dfx/local/canisters/actor_hello/.

Por exemplo, você pode usar o comando tree para revisar os arquivos criados:

tree .dfx/local/canisters
Enter fullscreen mode Exit fullscreen mode

O comando exibe uma saída semelhante à seguinte

.dfx/local/canisters
├── actor_hello
│   ├── actor_hello.d.ts
│   ├── actor_hello.did
│   ├── actor_hello.did.js
│   ├── actor_hello.js
│   └── actor_hello.wasm
└── idl

2 directories, 5 files
Enter fullscreen mode Exit fullscreen mode

Implantando o projeto

Você não pode implantar a saída do comando dfx build --check em um ambiente de execução do cânister local ou na rede principal da Internet Computer. Se você quisesse implantar este projeto, precisaria fazer o seguinte:

  • Conecte-se ao ambiente de execução do cânister local ou à rede principal da Internet Computer.
  • Registre um identificador do cânister específico de conexão.
  • Implante o cânister.

Vamos considerar essas etapas com um pouco mais de detalhes. Antes de implantar este projeto, você deve se conectar ao ambiente de execução do cânister local, fornecido pelo dfx, ou à rede principal da blockchain da Internet Computer. Depois de se conectar a um ambiente de execução do cânister local ou rede principal da Internet Computer, você também deve gerar um identificador de cânister exclusivo e específico de conexão para substituir seu identificador definido localmente. Para ver as etapas envolvidas, vamos implantar o projeto localmente.

Para implantar este projeto localmente:

  1. Abra um terminal e navegue até o diretório do seu projeto, se necessário.
  2. Inicie o ambiente de execução do cânister local em seu computador local executando o seguinte comando:
dfx start --background
Enter fullscreen mode Exit fullscreen mode

Para este tutorial, você pode usar a opção --background para iniciar o ambiente de execução do cânister local como um processo em segundo plano. Com esta opção, você pode continuar para a próxima etapa sem abrir outro shell de terminal em seu computador local.

  1. Gere um novo identificador de cânister para seu projeto no ambiente de execução do cânister local executando o seguinte comando:
dfx canister create actor_hello
Enter fullscreen mode Exit fullscreen mode

Você deve ver uma saída semelhante à seguinte:

Creating a wallet canister on the local network.
The wallet canister on the "local" network for user "pubs-id" is "rwlgt-iiaaa-aaaaa-aaaaa-cai"
Creating canister "actor_hello"...
"actor_hello" canister created with canister id: "rrkah-fqaaa-aaaaa-aaaaq-cai"
Enter fullscreen mode Exit fullscreen mode

O comando dfx canister create também armazena o identificador do cânister específico da conexão em um arquivo canister_ids.json no diretório .dfx/local.

Por exemplo:

{
 "actor_hello": {
   "local": "rrkah-fqaaa-aaaaa-aaaaq-cai"
 }
}
Enter fullscreen mode Exit fullscreen mode
  1. Compile o cânister executando o seguinte comando:
dfx build
Enter fullscreen mode Exit fullscreen mode

O comando exibe uma saída semelhante à seguinte:

Building canisters...
Enter fullscreen mode Exit fullscreen mode
  1. Implante seu projeto actor_hello no ambiente de execução do cânister local executando o seguinte comando:
dfx canister install actor_hello
Enter fullscreen mode Exit fullscreen mode

O comando exibe uma saída semelhante à seguinte:

Installing code for canister actor_hello, with canister_id rrkah-fqaaa-aaaaa-aaaaq-cai
Enter fullscreen mode Exit fullscreen mode

Consultando o cânister

Agora você tem um cânister implantado em seu ambiente de execução do cânister local e pode testar seu cânister usando o comando dfx canister call.

Para testar o cânister que você implantou no ambiente de execução do cânister local:

  1. Use dfx canister call para chamar a função hello executando o seguinte comando:
dfx canister call actor_hello hello
Enter fullscreen mode Exit fullscreen mode
  1. Verifique se o comando retorna o texto especificado para a função hello junto com uma mensagem de ponto de verificação no terminal que executa o ambiente de execução do cânister local.

    Por exemplo, o cânister exibe "Hello, World from DFINITY" na saída semelhante à seguinte:

[Canister rrkah-fqaaa-aaaaa-aaaaq-cai] Hello, World from DFINITY
Enter fullscreen mode Exit fullscreen mode

Observe que se você estiver executando a rede principal da Internet Computer em um terminal separado em vez de em segundo plano, a mensagem "Hello, World from DFINITY" será exibida no terminal que exibe a atividade da rede principal.

Parando o ambiente de execução do cânister local

Após terminar de experimentar com seu cânister, você pode parar o ambiente de execução do cânister local para que ele não continue a execução em segundo plano.

Para parar o ambiente de execução do cânister local, você pode:

  1. No terminal usado para interagir com o cânister, execute o comando dfx stop; ou
  2. No terminal que exibe as operações do ambiente de execução do cânister local, pressione Control-C para interromper esse processo; ou
  3. Finalize o processo replica usando comandos ou ferramentas do seu sistema operacional.
  4. Pare o ambiente de execução do cânister local executando o seguinte comando:
dfx stop
Enter fullscreen mode Exit fullscreen mode

Este guia foi publicado nos Docs do Desenvolvedor da Internet Computer. Traduzido por Paulinho Giovannini.

Latest comments (0)