WEB3DEV

romulorod
romulorod

Posted on

NEAR - Status Message

Tradução feita por Rômulo Rodrigues, artigo original disponível aqui.

Este contrato-inteligente(smart contract) grava e armazena os status das mensagens das contas NEAR que o chamam.

Usuários Windows: Visite-nos através deste README específico para WIndows:Exemplo usando Windows

Pré-Requisitos

Verifique se a CLI(Command Line Interface / Linha de Comando) do NEAR está instalada com o seguinte comando:

near --version
Enter fullscreen mode Exit fullscreen mode

Se necessário, instale a NEAR-CLI através do seguinte comando:

npm install near-cli -g
Enter fullscreen mode Exit fullscreen mode

Verifique se o Rust está instalado com o seguinte comando:

rustc --version
Enter fullscreen mode Exit fullscreen mode

Se necessário, instale Rust com o seguinte comando:

curl <https://sh.rustup.rs> -sSf | sh
Enter fullscreen mode Exit fullscreen mode

Em seguida, instale as dependências:

npm install
Enter fullscreen mode Exit fullscreen mode

Guia de Início Rápido

Para executar este projeto localmente:

1 - Pré-Requisitos: Verifique se você possui o Node.js na versão 12 ou superior (https://nodejs.org), e em seguida use-o para instalar o yarn:

npm install --global yarn
Enter fullscreen mode Exit fullscreen mode

Fica aqui uma versão resumida para o seu conhecimento:

npm i -g yarn
Enter fullscreen mode Exit fullscreen mode

2 - Rode (execute) o servidor de desenvolvimento local:

yarn && yarn dev
Enter fullscreen mode Exit fullscreen mode

Pronto! Você já tem seu ambiente de desenvolvimento apoiado pela TestNet (Rede de Testes) da NEAR. Ao executar o comando yarn dev no seu console irá aparecer a URL para você visitá-la e ver o Web App!

Obs: Verifique o arquivo package.json para observar uma lista inteira de comandos que você pode rodar com o yarn

Construindo este contrato

Para que o processo de build (construção) seja compatível com diferentes Sistemas Operacionais, o processo de build está definido como um comando naquele arquivo package.json. Existem algumas flags (opções) usadas para compilar este smart contract para um arquivo do tipo wasm.

Execute este comando para construir e alocar o arquivo do tipo wasm na pasta res:

npm run build
Enter fullscreen mode Exit fullscreen mode

Nota: Caso você esteja usando yarn, execute:

yarn build
Enter fullscreen mode Exit fullscreen mode

Importante

Caso você encontre um erro similar a este:

note: the wasm32-unknown-unknown target may not be installed
Enter fullscreen mode Exit fullscreen mode

Execute o seguinte comando:

rustup target add wasm32-unknown-unknown
Enter fullscreen mode Exit fullscreen mode

Usando este contrato

Web App

Faça o deploy deste smart contract para uma conta específica criada com a carteira da NEAR. Então, interaja com este contrato usando a biblioteca near-api-js no frontend.

Caso você não tenha uma conta NEAR, crie uma com NEAR Wallet.

Verifique se você tem as credenciais salvas localmente para a conta que você deseja fazer o deploy do contrato.

Para realizar isto, use o seguinte comando com a NEAR cli:

near login
Enter fullscreen mode Exit fullscreen mode

Em seguida, faça o deploy do contrato para sua conta NEAR:

near deploy --wasmFile res/status_message.wasm --accountId NOME_DA_SUA_CONTA
Enter fullscreen mode Exit fullscreen mode

E então, execute o comando para construir o frontend:

npm start
Enter fullscreen mode Exit fullscreen mode

Caso tudo dê certo, o Web App deve estar disponível em:localhost:1234 !

Deploy mais rápido

Execute o build e o deploy deste smart contract para uma conta de desenvolvimento com o comando abaixo. Esta conta de desenvolvimento será criada automaticamente e não deve ser usada como uma conta permanente.

Por favor, verifique nossa seção “Deploy Padrão” mais abaixo para entender como criar uma conta mais personalizada para realizar o deploy

near dev-deploy --wasmFile res/status_message.wasm --helperUrl [https://near-contract-helper.onrender.com](https://near-contract-helper.onrender.com)
Enter fullscreen mode Exit fullscreen mode

Por baixo dos panos este comando cria uma conta e realiza o deploy deste smart contract nela. Verifique se no console foi exibida uma mensagem parecida com essa:

Done deploying to dev-1234567890123
Enter fullscreen mode Exit fullscreen mode

Nesta ocasião a conta é dev-1234567890123. Um arquivo que contém a chave da conta foi criado em _neardev/dev-account _.

Para facilitar os próximos passos vamos criar variáveis de ambiente contendo a identificação desta conta de desenvolvimento e usar essas variáveis nos próximos comandos.

Execute este comando para criar as variáveis de ambiente:

source neardev/dev-account.env
Enter fullscreen mode Exit fullscreen mode

Você pode verificar se a variável de ambiente está criada corretamente, caso o nome da conta seja exibido na tela após rodar este comando:

echo $CONTRACT_NAME
Enter fullscreen mode Exit fullscreen mode

O próximo comando vai chamar o método set_status do contrato:

near call $CONTRACT_NAME set_status '{"message": "aloha!"}' --accountId $CONTRACT_NAME
Enter fullscreen mode Exit fullscreen mode

Para verificar a mensagem do contrato, use o método get_status com o seguinte comando:

near view $CONTRACT_NAME get_status '{"account_id": "'$CONTRACT_NAME'"}'
Enter fullscreen mode Exit fullscreen mode

Deploy Padrão

Realizando o deploy padrão, o contrato-inteligente será implantado em uma conta específica criada com a NEAR Wallet.

Caso você não tenha uma conta NEAR, crie uma aqui:NEAR Wallet.

Verifique se você tem as credenciais salvas localmente para a conta que você deseja fazer o deploy do contrato.

Para realizar isto, use o seguinte comando com a NEAR cli:

near login
Enter fullscreen mode Exit fullscreen mode

Faça o deploy do contrato:

near deploy --wasmFile res/status_message.wasm --accountId NOME_DA_SUA_CONTA
Enter fullscreen mode Exit fullscreen mode

Crie um status para a sua conta:

near call NOME_DA_SUA_CONTA set_status '{"message": "aloha friend"}' --accountId NOME_DA_SUA_CONTA
Enter fullscreen mode Exit fullscreen mode

Veja o status da sua conta:

near view NOME_DA_SUA_CONTA get_status '{"account_id": "NOME_DA_SUA_CONTA"}'
Enter fullscreen mode Exit fullscreen mode

Observe que estas mensagens de status ficam armazenadas em cada conta em um HashMap. Caso queira ver o código, verifique o arquivo em src/lib.rs.

Nós iremos fazer uma nova conta para verificar como a mensagem é armazenada por conta em um HashMap.

**Obs:** Usaremos NOME_DA_SUA_NOVA_CONTA para o nome da segunda conta.
Enter fullscreen mode Exit fullscreen mode

Existem duas maneiras de criar uma nova conta:

  • NEAR Wallet (como fizemos há pouco)
  • near create_account NOME_DA_SUANOVACONTA —masterAccount NOME_DA_SUA_CONTA

Agora basta chamar o contrato na primeira conta (onde fizemos o deploy):

near call NOME_DA_SUA_CONTA set_status '{"message": "bonjour"}' --accountId *NOME_DA_SUA_**NOVA**_CONTA*

near view NOME_DA_SUA_CONTA get_status '{"account_id": "*NOME_DA_SUA_**NOVA**_CONTA*"}'
Enter fullscreen mode Exit fullscreen mode

O retorno deve ser bonjour.

Verifique se o status original ainda existe com o seguinte comando:

near view NOME_DA_SUA_CONTA get_status '{"account_id": "NOME_DA_SUA_CONTA"}'
Enter fullscreen mode Exit fullscreen mode

Testes

Para rodar os testes execute o seguinte comando:

cargo test --package status-message -- --nocapture
Enter fullscreen mode Exit fullscreen mode

Top comments (0)