Como construir seu primeiro aplicativo baseado em blockchain em 15 minutos

Eu preparei um tutorial sobre como criar um dApp na blockchain waves. Leia sobre o processo passo-a-passo do desenvolvimento, com screenshots.

Por que criar aplicativos em uma blockchain?

A blockchain é uma forma de descentralizar o armazenamento de dados. A tecnologia pode, portanto, ser utilizado como um substituto para um banco de dados tradicional. A blockchain fornece a funcionalidade que pode ser útil na construção da arquitetura de um aplicativo, incluindo a transparência das operações e, é claro, o armazenamento de dados descentralizado. Dados em uma blockchain pública não pode ser alterado e pode ser facilmente verificado por qualquer usuário da internet.

Neste tutorial, vamos criar um aplicativo da Web que usa blockchain em vez de um banco de dados centralizado, usando JavaScript nativo e o bem conhecido HTML com CSS. Vamos explorar na prática o que as características da tecnologia são, e como usá-los em seu desenvolvimento.

O que vamos desenvolver?

Vamos considerar o projeto de Certificado como um exemplo de um aplicativo baseado em blockchain. Os objetivos do projeto para resolver um problema do mundo real – falsificação de certificados de educação. Por exemplo, os documentos podem ser facilmente forjados no Adobe Photoshop, e isso faz com que os certificados percam o seu valor. É mais fácil para criar um certificado usando o software e adicionar ao seu portfólio CV do que participar em um curso no Coursera, por exemplo.

A missão do Certificado é agregar valor aos certificados emitidos online, com duas características:

  • Armazenamento transparente de certificados em uma blockchain.
  • Apenas os administradores podem adicionar certificados ao banco de dados

Como vamos construir o aplicativo?

Esta será uma aplicação web clássica construído usando HTML e JavaScript, abordando a blockchain para armazenar dados de diploma. Nós escolhemos a blockchain Waves com uma ferramenta adicional, Waves Keeper. Esta extensão do navegador permite que um administrador de login sem revelar a sua chave privada (a senha, no mundo da blockchain).

O Certificado não é uma aplicação descentralizada (dApp), uma vez que a lógica de negócio não é fixada em um contrato inteligente. O aplicativo simplesmente usa o blockchain para armazenamento de dados e não são necessários contratos inteligentes.

Passo-a-passo visão geral

Interface de criação de certificado

Vamos começar com a parte clássica – criação da interface. Layout de duas páginas: index.html para adicionar certificados e check.html para validar um documento.

Layout do arquivo index.html:
https://gist.github.com/vlzhr/37e8b19d69acdf30078421e97f23b9d0

O próximo passo é implementar o mecanismo para adicionar um diploma. Para isso, vamos descobrir onde adicionar o diploma. Agora, é hora de começar com a blockchain Waves!

Instale o Waves Keeper, extensão do navegador para criar e gerenciar suas contas na blockchain.

Waves Keeper – conectando ao blockchain

Clique no botão ‘Criar uma nova conta’. Verifique se você escolheu TESTNET no canto inferior esquerdo. Esta rede permite o uso de tokens waves de teste para que você possa experimentar as transações.

Esta página estará disponível após a criação da conta. Por favor, note que a conta tem quatro campos: um endereço e uma chave pública usada para identificação na rede, bem como uma chave privada e uma frase semente que funcionam como uma senha. Você não deve revelar a sua chave privada ou frase semente! É por isso que os caracteres sejam escondidos com asteriscos.

A parte superior da janela do Waves Keeper exibe o seu balanço. No início, esta será um deprimente zero. Vamos fornecer um fundo para conta através do faucet da rede testnet Waves, que emite tokens de teste. Clique no botão ‘Transações’ e passe para Waves Explorer:

Esta ferramenta exibe todos os dados da blockchain em uma forma conveniente. Todas as informações sobre a sua conta está na página. Não há nada de interessante até agora, nem transações nem balanço. Mais tarde, você poderá facilmente acompanhar as mudanças aqui. Qualquer um pode fazer isso com o explorador Waves!

No canto inferior esquerdo você pode ir para a página do faucet:

Insira seu endereço de conta e prove que você não é um robô. Então você vai receber 10 Waves TESTNET nno seu saldo:

Agora nós temos alguns tokens para experimentar! Vamos continuar com a parte mais interessante e ensinar nosso aplicativo a se comunicar com a blockchain. Em nossa conta já criada, você pode salvar os dados usando seu Estado de Dados. Agora ele está vazio:

Nós podemos mudar os dados da conta usando as transações. Este não é um problema desde que o Waves Keeper tem uma API para tais tarefas:
https://docs.waves.exchange/en/waves-keeper/waves-keeper-api

Mas, antes de passar a estudar a API, precisamos entender um dos elementos-chave de um blockchain – uma transação.

Uma transação é um registro de conclusão de alguma ação. Por exemplo, a transferência de dinheiro é uma transação. A emissão de uma nova moeda é uma transação. E apenas a gravação de dados também é uma transação! Há um tipo de transação específico para cada tipo de ação.

Estamos interessados ​​no tipo 12 – Transação de Dados – na foto acima, pois nosso objetivo é para armazenar dados.

Envio de certificados para o blockchain

Usamos o Waves Keeper para enviar a transação.

Amostra transação no Waves Keeper:
https://gist.github.com/vlzhr/4c2015f1c614b656826a3622d786c084

Nós criaremos um manipulador de botão ‘Add diploma’ para armazenar dados sobre o documento na transação.

função sendData:
https://gist.github.com/vlzhr/448a0a26072960a80ef60ce4d4151ac6

Agora, quando o usuário clica no botão ‘Enviar‘, ele adiciona um certificado à blockchain usando o Waves Keeper:

Depois de inserir uma senha para a extensão, você verá informações sobre a transação e um pedido para assiná-lo:

Quais informações sobre a transação que vemos? Em primeiro lugar, o tipo de transação de dados, o que significa que o objetivo da operação é enviar dados para o blockchain. Vemos os dados em si: na chave ‘1’ o usuário salva o nome do titular de um diploma com este número, ‘Sasha Ivanov’. Além disso, podemos ver um ID único de transação e a tarifa para o envio da tal operação à blockchain.

Transação enviada! Isso significa que pelo menos três coisas:

  1. O saldo da conta diminuiu, desde que 0.001 Waves foi gasto com a tarifa.
  1. A Transação de Dados foi adicionado à lista de transações no Explorador Waves página da conta
  1. O certificado é exibido na guia Dados. A posse do certificado de número 1 por Sasha Ivanov foi fixado na blockchain. Ninguém pode ocultar ou alterar essas informações.

Verificação da validade dos certificados

Nós criamos um aplicativo que permite que um administrador emita certificados. O Waves Explorer exibe os certificados gravados na blockchain.

No entanto, é mais conveniente para verificar a validade de um diploma através de um formulário separado, sem a necessidade de usar o Waves Explorer. Vamos criar uma página adicional para este formulário!

Layout check.html:
https://gist.github.com/vlzhr/e7e7c849980f19e49fae84a20b1ddb0c

O layout simples, permite criar uma interface amigável, ajudando alguém em verificar a validade do certificado e para verificar definitivamente no Waves Explorer:

Tudo o que temos a fazer é o botao ‘checar cerificado!’ executar o trabalho. Vamos adicionar o manipulador checkData():

função checkData:
https://gist.github.com/vlzhr/b2b455a4de8e19d44ccff03b90478dfe

O ponto principal é enviar um pedido GET para o API da blockchain:
https://testnodes.wavesnodes.com/addresses/data/3N6EmqqQ1pZderX8sNMrfVuEo85ocPoqs2M.

Solicitando este método API nos permite receber um conjunto de dados que reside no estado da conta a partir da guia Dados do Waves Explorer. Você pode ver um conjunto de métodos de API disponíveis para o blockchain Waves aqui. Com a funcionalidade disponível, você pode, por exemplo, adicionar transações, ler os dados e receber informações de tokens.

Ao adicionar a capacidade de receber dados da blockchain em nosso aplicativo, criamos um formulário disponível para qualquer usuário do site. Todos podem verificar a validade do diploma gratuitamente, pois não há tarifa para a leitura dos dados.

Tarefa extra para a experiência do usuário

Finalmente, nosso aplicativo tem duas páginas para adicionar e verificar os  certificados! O último ponto a implementar é a capacidade de compartilhar o link para verificar o seu certificado.

Funcionalidade de compartilhamento do certificado:
https://gist.github.com/vlzhr/8fc5394215b14e5b599c65edf1bf4dfc

O link de validação do certificado pode ser enviado para que o verificador não precise preencher o formulário. Um link como ‘URL / check.html? 2 Vladimir Zhuravlev’ é suficiente para o formulário ser preenchido automaticamente com os dados relevantes, 2 Vladimir Zhuravlev.

Conclusão

Em termos bastante breves, nós implementamos o Certificado, nosso aplicativo web de pleno direito. A blockchain pode ser uma maneira conveniente e confiável para armazenar dados, e o Waves Keeper e o Waves Explorer são ótimas ferramentas para trabalhar com ele, que devem ser integrados em sua aplicação.

Usando uma blockchain em vez de um banco de dados centralizado regular, você pode adicionar funcionalidade única de um aplicativo e melhorar o seu valor para os usuários. Existem muitas ferramentas para simplificar o processo de desenvolvimento no ecossistema Waves. Além do Waves Keeper e Waves Explorer, temos o Waves Signer, bibliotecas de cliente para diferentes linguagens de programação e a linguagem RIDE para programação de contratos inteligentes.

Desenvolva aplicativos nas blockchain Waves, junte-se à nossa comunidade de desenvolvedores e faça todas as perguntas que você tem no Telegram!