WEB3DEV

Cover image for Implantação na Rede - Internet Computer
Paulo Gio
Paulo Gio

Posted on • Atualizado em

Implantação na Rede - Internet Computer

Este cenário de Início Rápido pressupõe que você está instalando o SDK (Software Development Kit, Kit de Desenvolvimento de Software) pela primeira vez e implantando o projeto padrão na rede principal da blockchain da Internet Computer.

Se você estiver implantando projetos apenas em um ambiente de desenvolvimento local, consulte o cenário de desenvolvimento local.

Para começar, vamos construir e implantar um simples dapp de saudação que tem apenas uma função, chamada greet. A função greet aceita um argumento de texto e retorna o resultado com uma saudação semelhante a “Hello, everyone!” (Olá, todos!) em um terminal se você executar o dapp usando a linha de comando, ou em uma página HTML, se você acessar o dapp em um navegador.

Antes de começar

Antes de baixar e instalar esta versão do SDK, verifique o seguinte:

  • Você tem uma conexão com a Internet e acesso a um shell de terminal em seu computador local, seja em macOS ou Linux.

    Atualmente, o SDK é executado apenas em computadores com sistema operacional macOS ou Linux.

  • Você tem o node.js instalado se quiser acessar o frontend padrão do projeto padrão.

  • Você tem tokens ou ciclos ICP disponíveis para uso.

    Você deve ter ciclos disponíveis para concluir este tutorial. Para obter ciclos, você deve converter tokens ICP em ciclos ou recebê-los de outra fonte, por exemplo, de um cânister controlado por outro desenvolvedor ou de um provedor de ciclos terceirizado. Este tutorial pressupõe que você tenha uma conta com tokens ICP disponíveis e ilustra como converter tokens ICP em ciclos e transferir esses ciclos para uma carteira de ciclos que você controla.

    Para obter informações sobre como obter tokens ICP, consulte Como obter tokens ICP. Para obter uma introdução ao uso do aplicativo Network Nervous System para gerenciar tokens ICP, consulte Guia de Início rápido do dapp Network Nervous System. Para obter informações sobre como usar sua carteira de ciclos padrão depois de criá-la, consulte como usar a carteira de ciclos padrão.

Baixar e instalar

Você pode baixar a versão mais recente do SDK diretamente de um shell de terminal em seu computador local. Se você instalou o SDK anteriormente, pode pular esta seção e começar com “Criar um novo projeto”.

Para baixar e instalar:

  1. Abra um shell de terminal em seu computador local.

    Por exemplo, abra Aplicativos, Utilitários e clique duas vezes em Terminal ou pressione ⌘+barra de espaço para abrir a Pesquisa e digite terminal.

  2. Baixe e instale o pacote SDK executando o seguinte comando:

    sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)"
    

    Este comando solicita que você leia e aceite o contrato de licença antes de instalar a interface de linha de comando (CLI) de execução da DFINITY e suas dependências em seu computador local.

  3. Digite y e pressione Return para continuar com a instalação.

    O comando exibe informações sobre os componentes que estão sendo instalados no computador local.

Verifique se o SDK está pronto para uso

Se o script de instalação for executado sem erros, tudo o que você precisa para começar a desenvolver programas executados na IC estará disponível em seu computador local.

Para verificar se o SDK está pronto para uso:

  1. Abra um shell de terminal em seu computador local, se você ainda não tiver um aberto.
  2. Verifique se você tem a interface de linha de comando (CLI) de execução da DFINITY instalada e se o executável dfx está disponível em seu PATH executando o seguinte comando:

    dfx --version
    

    O comando exibe informações de versão para o executável de linha de comando dfx. Você pode ver a versão mais recente nas notas de lançamento.

  3. Visualize as informações de uso dos outros subcomandos da linha de comando dfx executando o seguinte comando:

    dfx --help
    

    O comando exibe informações de uso para o comando-pai dfx e seus subcomandos.

Criar um novo projeto

Dapps para a Internet Computer começam como projetos. Você cria projetos usando o comando-pai dfx e seus subcomandos.

Para este tutorial, começaremos com o dapp de amostra padrão para ilustrar a criação de um dapp usando os arquivos iniciais em um projeto. Quando você cria um novo projeto, a interface de linha de comando dfx adiciona uma estrutura de diretório de projeto padrão ao seu espaço de trabalho. Cobrimos os arquivos de modelo que compõem um diretório de projeto no tutorial “Explorar o projeto padrão”.

Para criar um novo projeto para seu primeiro dapp:

  1. Abra um shell de terminal em seu computador local, se você ainda não tiver um aberto.
  2. Crie um novo projeto chamado hello executando o seguinte comando:

    dfx new hello
    

    O comando dfx new hello cria um novo diretório de projeto hello, arquivos de modelo e um novo repositório Git chamado hello para seu projeto.

    Se você usar um nome de projeto diferente em vez de hello, anote o nome usado. Você precisará usar esse nome de projeto no lugar do nome do projeto hello ao longo destas instruções.

  3. Mude para o diretório do seu projeto executando o seguinte comando:

    cd hello
    

Verifique a conexão com a rede principal da IC

Há um pseudônimo de rede reservado que você pode usar para acessar a rede principal da blockchain da Internet Computer. O pseudônimo de rede é uma configuração do sistema definida internamente, portanto, por padrão, não há nada mais para você configurar em seus projetos.

Para verificar sua conexão com a IC:

  1. Verifique se você está no diretório raiz do seu projeto, se necessário.
  2. Verifique o status atual da IC e sua capacidade de se conectar a ela executando o seguinte comando para o pseudônimo de rede ic:

    dfx ping ic
    
  3. Verifique se o comando dfx ping ic retorna informações sobre a IC.

    Por exemplo, você deve ver um output semelhante ao seguinte:

    {
    "ic_api_version": "0.18.0"  "impl_hash": "d639545e0f38e075ad240fd4ec45d4eeeb11e1f67a52cdd449cd664d825e7fec"  "impl_version": "8dc1a28b4fb9605558c03121811c9af9701a6142"  "replica_health_status": "healthy"  "root_key": [48, 129, 130, 48, 29, 6, 13, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 1, 2, 1, 6, 12, 43, 6, 1, 4, 1, 130, 220, 124, 5, 3, 2, 1, 3, 97, 0, 129, 76, 14, 110, 199, 31, 171, 88, 59, 8, 189, 129, 55, 60, 37, 92, 60, 55, 27, 46, 132, 134, 60, 152, 164, 241, 224, 139, 116, 35, 93, 20, 251, 93, 156, 12, 213, 70, 217, 104, 95, 145, 58, 12, 11, 44, 197, 52, 21, 131, 191, 75, 67, 146, 228, 103, 219, 150, 214, 91, 155, 180, 203, 113, 113, 18, 248, 71, 46, 13, 90, 77, 20, 80, 95, 253, 116, 132, 176, 18, 145, 9, 28, 95, 135, 185, 136, 131, 70, 63, 152, 9, 26, 11, 170, 174]
    }
    

Confirme sua identidade de desenvolvedor e conta de livro-razão

Todas as transações de token ICP são registradas em um cânister de livro-razão em execução na blockchain da Internet Computer. O cânister de livro-razão consiste em identificadores de conta e saldos para todos os detentores de tokens ICP.

Antes de poder transferir quaisquer tokens ICP que você possui em sua conta de livro-razão, você precisa enviar uma mensagem segura e devidamente assinada que verifica sua identidade para o livro-razão e autoriza sua identidade de desenvolvedor a concluir a transação.

Dependendo de como você configurou a custódia para manter seus tokens ICP, o hardware, o software e as etapas necessárias para se conectar ao livro-razão e concluir uma transação podem variar. Por exemplo, você pode se conectar ao livro-razão e iniciar uma transação de uma carteira de hardware, usando um dispositivo de módulo de segurança de hardware (Hardware Security Module, HSM), por meio do aplicativo de frontend Network Nervous System (NNS) ou usando a interface de linha de comando dfx do SDK. Cada abordagem apresenta uma interface diferente para assinar e enviar mensagens para o livro-razão e representar sua identidade como titular da conta.

Sobre sua identidade de desenvolvedor

Na primeira vez que você usa o SDK, a ferramenta de linha de comando dfx cria uma identidade de desenvolvedor padrão para você. Essa identidade é representada por um tipo de dados principal e uma representação textual do principal, muitas vezes referida como seu identificador principal. Essa representação de sua identidade é semelhante a um endereço Bitcoin ou Ethereum.

No entanto, o principal associado à sua identidade de desenvolvedor geralmente não é o mesmo que o identificador de sua conta no livro-razão. O identificador principal e o identificador da conta estão relacionados – ambos fornecem uma representação textual de sua identidade – mas usam formatos diferentes.

Conecte-se ao livro-razão para obter informações da conta

Para os propósitos deste tutorial, onde não há carteira de hardware ou aplicativo externo para se conectar ao livro-razão, usaremos sua identidade de desenvolvedor para recuperar o identificador de conta de livro-razão e, em seguida, transferir tokens ICP do identificador de conta de livro-razão para um cânister de carteira de ciclos controlado por sua identidade de desenvolvedor.

Para procurar sua conta no livro-razão:

  1. Confirme a identidade do desenvolvedor que você está usando no momento executando o seguinte comando:

    dfx identity whoami
    

    Na maioria dos casos, você deve ver que está usando a identidade de desenvolvedor padrão. Por exemplo:

    default
    
  2. Visualize a representação textual do principal para sua identidade atual executando o seguinte comando:

    dfx identity get-principal
    

    Este comando exibe um output semelhante ao seguinte:

    tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe
    
  3. Obtenha o identificador de conta para sua identidade de desenvolvedor executando o seguinte comando:

    dfx ledger account-id
    

    Este comando exibe o identificador da conta de livro-razão associado à sua identidade de desenvolvedor. Por exemplo, você deve ver uma saída semelhante à seguinte:

    03e3d86f29a069c6f2c5c48e01bc084e4ea18ad02b0eec8fccadf4487183c223
    
  4. Verifique o saldo da sua conta executando o seguinte comando:

    dfx ledger --network ic balance
    

    Este comando exibe o saldo de tokens ICP da conta de livro-razão. Por exemplo, você deve ver uma saída semelhante à seguinte:

    10.00000000 ICP
    

Criando uma Carteira de Ciclos

Agora que você confirmou as informações da sua conta e o saldo atual de tokens ICP, você pode converter alguns desses tokens ICP em ciclos e movê-los para uma carteira de ciclos.

Para transferir tokens ICP para criar uma carteira de ciclos:

  1. ​​Crie um novo cânister com ciclos transferindo tokens ICP de sua conta de livro-razão executando um comando semelhante ao seguinte:

    dfx ledger --network ic create-canister <principal-identifier> --amount <icp-tokens>
    

    Este comando converte o número de tokens ICP especificados para o argumento --amount em ciclos e associa os ciclos a um novo identificador de cânister controlado pelo principal especificado.

    Por exemplo, o comando a seguir converte .25 tokens ICP em ciclos e especifica o identificador principal para a identidade padrão como o controlador do novo cânister:

    dfx ledger --network ic create-canister tsqwz-udeik-5migd-ehrev-pvoqv-szx2g-akh5s-fkyqc-zy6q7-snav6-uqe --amount .25
    

    Se a transação for bem-sucedida, o livro-razão registrará o evento e você deverá ver um output semelhante ao seguinte:

    Transfer sent at BlockHeight: 20
    Canister created with id: "gastn-uqaaa-aaaae-aaafq-cai"
    
  2. Instale o código da carteira de ciclos no espaço reservado do cânister recém-criado, executando um comando semelhante ao seguinte:

    dfx identity --network ic deploy-wallet <canister-id>
    

    Por exemplo:

    dfx identity --network ic deploy-wallet gastn-uqaaa-aaaae-aaafq-cai
    

    Este comando exibe uma saída semelhante à seguinte:

    Creating a wallet canister on the IC network.
    The wallet canister on the "ic" network for user "default" is "gastn-uqaaa-aaaae-aaafq-cai"
    

Valide sua carteira de ciclos

Depois de converter tokens ICP em ciclos, você pode validar o cânister da carteira de ciclos e verificar seu saldo de ciclos atual.

Para validar sua carteira de ciclos:

  1. Verifique o identificador do cânister para a carteira de ciclos que você implementou executando o seguinte comando:

    dfx identity --network ic get-wallet
    

    O comando exibe o identificador do cânister para sua carteira de ciclos com output semelhante ao seguinte:

    gastn-uqaaa-aaaae-aaafq-cai
    
  2. Verifique se o cânister da sua carteira de ciclos está configurado corretamente e mantém um saldo de ciclos executando um comando semelhante ao seguinte:

    dfx wallet --network ic balance
    

    O comando retorna o saldo da sua carteira de ciclos. Por exemplo:

    15430,122 TC (trillion cycles).
    

    Você também pode acessar sua carteira de ciclos padrão em um navegador da Web usando um URL semelhante ao seguinte:

    https://<ID_DO_CÂNISTER_DA_CARTEIRA>.raw.ic0.app
    

    Na primeira vez que você acessar o aplicativo, verá um aviso de que está usando um Dispositivo Anônimo e será solicitado a autenticar sua identidade, autorizar o acesso à carteira e registrar seu dispositivo.

  3. Clique em Autenticar para continuar para o serviço de Identidade da Internet Computer.

  4. Digite seu Número de Usuário se você já registrou uma identidade ou se registre no serviço como um novo usuário.

    Para obter mais informações sobre o serviço de identidade da Internet Computer e como registrar vários dispositivos e métodos de autenticação, consulte como usar o serviço de identidade da Internet Computer.

  5. Autentique usando seu número de usuário e o método de autenticação—por exemplo, uma chave de segurança ou impressão digital—que você registrou.

  6. Clique em Continuar para acessar o aplicativo padrão da carteira de ciclos.

  7. Registre o dispositivo que você está usando para esta sessão copiando o comando exibido na página Register Device e executando-o em um terminal.

    Por exemplo, chame o método authorize para o cânister da carteira de ciclos com um comando semelhante ao seguinte:

    dfx canister --network ic call "gastn-uqaaa-aaaae-aaafq-cai" authorize '(principal "ejta3-neil3-qek6c-i7rdw-sxreh-lypfe-v6hjg-6so7x-5ugze-3iohr-2qe")'
    

    Certifique-se de que o comando copiado tenha o pseudônimo de rede (ic) correto. Você deve reconhecer o identificador do cânister — neste exemplo, gastn-uqaaa-aaaae-aaafq-cai — como a carteira de ciclos associada à sua identidade. No entanto, se esta for sua primeira carteira na IC, você pode não reconhecer o principal que está sendo autorizado. O uso de um principal diferente é o comportamento esperado neste caso.

    Quando o navegador é atualizado após a execução do comando authorize, a carteira de ciclos da sua conta principal é exibida.

  8. Veja o saldo e a atividade dos seus ciclos no navegador.

    Por exemplo:

    https://internetcomputer.org/assets/images/cycles-wallet-e106910722e37d98994552e9992b6074.png

    Para obter mais informações sobre os comandos e métodos disponíveis para trabalhar com a carteira de ciclos padrão, consulte como usar a carteira de ciclos padrão.

Registrar, compilar e implantar o aplicativo

Depois de validar o saldo da carteira de ciclos, você pode registrar, compilar e implantar seu aplicativo de amostra.

Para implantar seu primeiro aplicativo na rede principal da blockchain da Internet Computer:

  1. No shell do terminal, verifique se você ainda está no diretório raiz do seu projeto.
  2. Certifique-se de que os módulos do node estejam disponíveis no diretório do projeto, se necessário, executando o seguinte comando:

    npm install
    

    Para obter mais informações sobre esta etapa, veja como garantir que o node esteja disponível em um projeto.

  3. Registre, compile e faça a implantação do seu primeiro aplicativo executando o seguinte comando:

    dfx deploy --network ic
    

    A opção --network especifica o pseudônimo de rede ou URL para implantar o dapp. Esta opção é necessária para instalar na rede principal da blockchain da Internet Computer.

    O output do comando dfx deploy exibe informações sobre as operações que ele executa.

    Por exemplo, esta etapa registra dois identificadores — um para o programa principal hello e outro para a interface de usuário do frontend hello_assets — e informações de instalação semelhantes às seguintes:

    Deploying all canisters.
    Creating canisters...
    Creating canister "hello"...
    "hello" canister created on network "ic" with canister id: "5o6tz-saaaa-aaaaa-qaacq-cai"
    Creating canister "hello_assets"...
    "hello_assets" canister created on network "ic" with canister id: "5h5yf-eiaaa-aaaaa-qaada-cai"
    Building canisters...
    Building frontend...
    Installing canisters...
    Installing code for canister hello, with canister_id 5o6tz-saaaa-aaaaa-qaacq-cai
    Installing code for canister hello_assets, with canister_id 5h5yf-eiaaa-aaaaa-qaada-cai
    Authorizing our identity (default) to the asset canister...
    Uploading assets to asset canister...
    /index.html 1/1 (472 bytes)
    /index.html (gzip) 1/1 (314 bytes)
    /index.js 1/1 (260215 bytes)
    /index.js (gzip) 1/1 (87776 bytes)
    /main.css 1/1 (484 bytes)
    /main.css (gzip) 1/1 (263 bytes)
    /sample-asset.txt 1/1 (24 bytes)
    /logo.png 1/1 (25397 bytes)
    /index.js.map 1/1 (842511 bytes)
    /index.js.map (gzip) 1/1 (228404 bytes)
    /index.js.LICENSE.txt 1/1 (499 bytes)
    /index.js.LICENSE.txt (gzip) 1/1 (285 bytes)
    Deployed canisters.
    

    Se você não converteu tokens ICP suficientes em ciclos para concluir a operação, pode adicionar ciclos à sua carteira de ciclos executando um comando semelhante ao seguinte:

    dfx ledger --network ic top-up gastn-uqaaa-aaaae-aaafq-cai --amount 1.005
    

    Este comando converte 1.005 tokens ICP adicionais em ciclos para o identificador de carteira de ciclos gastn-uqaaa-aaaae-aaafq-cai. O comando retorna um output semelhante ao seguinte:

    Transfer sent at BlockHeight: 81520
    Canister was topped up!
    
  4. Chame o cânister hello e a função greet predefinida executando o seguinte comando:

    dfx canister --network ic call hello greet '("everyone": text)'
    

    Vejamos mais de perto este exemplo:

  • Usar a opção --network ic indica que o cânister que você deseja chamar está implantado no ic. O pseudônimo de rede ic é um pseudônimo reservado internamente para acessar a rede principal da blockchain da Internet Computer.

  • Observe que a opção --network ic deve preceder o subcomando de operação, que, neste caso, é o comando dfx canister call.

  • O argumento hello especifica o nome do cânister que você deseja

  • O argumento greet especifica o nome da função que você deseja chamar no cânister hello.

  • A string de texto everyone é o argumento que você deseja passar para a função greet.

  1. Verifique se o comando exibe o valor de retorno da função greet.

    Por exemplo:

    ("Hello, everyone!")
    
  2. Execute novamente o comando dfx wallet balance ou atualize o navegador para ver o novo saldo e atividade recente da sua carteira de ciclos.

Teste o frontend do dapp

Agora que você verificou que seu dapp foi implantado e testou sua operação usando a linha de comando, vamos verificar se você pode acessar o frontend usando seu navegador da web.

Para acessar o frontend do dapp:

  1. Abra um navegador.
  2. Navegue até o frontend do dapp usando um URL que consiste no identificador hello_assets e no sufixo boundary.ic0.app.

    Se você não anotou o identificador do cânister, pode procurá-lo executando o seguinte comando:

    dfx canister --network ic id hello_assets
    

    Por exemplo, o URL completo deve ser semelhante ao seguinte:

    https://gsueu-yaaaa-aaaae-aaagq-cai.raw.ic0.app
    

    Navegar para este URL exibe a página de entrada HTML para o aplicativo de modelo. Por exemplo:

    https://internetcomputer.org/assets/images/net-frontend-prompt-b72ec96d6f4dfc36b7eed1994cbb8b0d.png

  3. Digite uma saudação e clique em Click Me para retornar a saudação.

Próximos passos

Agora que você viu como implantar um dapp na blockchain da Internet Computer, você está pronto para desenvolver e implantar seus próprios programas.

Você pode encontrar exemplos e tutoriais mais detalhados para ajudá-lo a aprender sobre como usar o Motoko e como desenvolver dapps para a blockchain do Internet Computer em toda a documentação.

Aqui estão algumas sugestões para onde ir a seguir:

  • Construindo na IC, para explorar a construção de dapps de frontend e backend em um ambiente de desenvolvimento local.
  • O que é Candid?, para aprender como a linguagem de descrição da interface Candid permite a interoperabilidade e a composição de serviços.
  • Visão geral do Motoko, para aprender sobre os recursos e a sintaxe para usar o Motoko.

Tutorial publicado na Documentação Oficial da Internet Computer. Traduzido por Paulinho Giovannini.

Top comments (0)