Olá! Você está aqui porque deve ter ouvido dizer que Blockchain e Smart Contracts são as mais novas sensações da tecnologia, certo?
Mas o que querem dizer essas palavras e porque você deveria conhecê-las?
A Blockchain(cadeia de blocos de informação) foi criada com o intuito de garantir a confiabilidade dos dados, onde uma vez registrados não poderão mais ser violados.
Antes da Blockchain todos os nossos dados eram dependentes das empresas ou dos governos. Principalmente empresas como as ditas “Big Techs” (ou Gigantes da Tecnologia: Google, Apple, Facebook, Amazon, Microsoft, etc.). Como exemplo de dados armazenados por essas empresas cito todas as nossas informações pessoais, públicas, médicas, financeiras, comerciais, sociais, etc.
Com a Web 3.0 (a nova Internet baseada na Blockchain) os dados podem passar a ser descentralizados e independentes de terceiros. A Blockchain não tem um dono.
Na prática, se você criar ou acessar um dado na Blockchain, você pode ter certeza que esse dado permanecerá exatamente como foi criado, e que nenhuma pessoa ou entidade poderá violar ou desaparecer com seu conteúdo.
Aqui nesse tutorial vamos utilizar um formulário simples de feedback como exemplo da importância das informações permanecerem confiáveis quando cadastradas em uma base de dados.
Por exemplo, quando um usuário envia um comentário na Internet a respeito de um determinado restaurante, ou um determinado político, ou um produto, etc., nós, como consumidores, gostaríamos de ter a garantia que todos os comentários enviados são genuínos e que o dono do produto, ou o político, etc., não excluíram os pontos negativos nem alteraram seu conteúdo.
Para isso, vamos garantir para os leitores que os comentários serão cadastrados na Blockchain e o próprio leitor poderá conferir sua integridade pessoalmente.
Sumário
Vamos aprender várias ferramentas e nomenclaturas diferentes aqui nesse tutorial. A título de curiosidade, vou resumir tudo o que iremos fazer e compreender durante as seções seguintes:
1 — Criar um Smart Contract em Solidity
2 — Criar e carregar uma carteira digital na Ethereum
3 — Fazer um formulário em React para enviar dados à Blockchain
4 — Fazer o deploy do Smart Contract na rede de teste Goerli
5 — Conectar o form React à carteira através das APIs da MetaMask
Muita coisa nova, não é? Não se preocupe que ao final do tutorial tudo fará sentido para você.
React
Nos tutoriais anteriores nós já desenvolvemos um formulário em React, que recolhe feedback dos usuários e cadastra-os no banco de dados do Firestore(da Google).
Nesse caso do Firestore, qualquer administrador desse banco de dados pode realizar alterações em seu conteúdo, inclusive excluí-lo. A ideia agora é enviar esses dados para a Blockchain.
É um formulário bem simples, para que possamos focar no aprendizado do que realmente importa no momento:
Se você não fez o tutorial anterior de React, não se preocupe porque vamos disponibilizar mais na frente um front-end para que você possa baixar e adicionar somente a lógica da Blockchain a ele.
Smart Contract
Para enviar dados para a Blockchain precisamos criar um protocolo, ou um contrato inteligente, um Smart Contract.
Um Smart Contract é um arquivo de código de programação como outro qualquer, com variáveis e funções.
São várias as Blockchains existentes no momento e cada uma tem o seu padrão específico para Smart Contrats. Existe a Ethereum, Solana, Cardano, etc. Aqui nesse tutorial vamos usar a Ethereum.
Ethereum
A Ethereum é a segunda maior Blockchain em valor de mercado. A frente está somente a pioneira Bitcoin.
A grande diferença é que a Bitcoin transaciona somente valores (criptomoedas). Já a Ethereum é uma verdadeira Blockchain, um banco de dados propriamente dito, pois transaciona também informações.
E por isso a Ethereum acaba sendo a líder de mercado em número de desenvolvedores e aplicações.
Você irá compreender tudo isso na prática mais a frente.
Hardhat
O Hardhat é um kit de ferramentas (um SDK) que podemos utilizar para programar na Ethereum.
Para instalar o Hardhat precisamos primeiro instalar o Node.js.
Veja no início desse tutorial anterior de React o passa a passo de como instalar o Node assim como suas ferramentas para gestão de pacotes: npme npx.
Após instalar o Node, vamos começar criando a pasta do nosso projeto. Abra uma janela de comandos no seu computador e digite:
mkdir tutorial_smart_contract
cd tutorial_smart_contract
Nota: Pode dar o nome que quiser para seu projeto :-)
E então vamos iniciar um projeto Node nessa nova pasta com o comando abaixo:
npm init
Digite ‘Enter’ para todas as perguntas e observe o arquivo package.json criado pelo Node.
Utilizamos a ferramenta VSCodepara editar nossos arquivos aqui nesse tutorial.
https://code.visualstudio.com
E finalmente instalamos o Hardhat com os comandos abaixo:
npm install hardhat
npx hardhat
Digite ‘Enter’ para todas as opções:
Esse último comando cria um projeto Hardhat para a gente. Observe a estrutura e os arquivos criados:
Para complementar a instalação do Hardhat, instale os componentes adicionais abaixo:
npx install @nomicfoundation/hardhat-toolbox
Solidity
A linguagem de programação utilizada pelos Smart Contracts da Ethereum se chama Solidity. É baseada no JavaScript.
Vamos criar nosso primeiro Smart Contract em Solidity e então publicá-lo na Ethereum.
Crie um novo arquivo com a extensão ‘.sol’ na pasta ‘contracts’. Como no exemplo abaixo:
Copie e cole o código abaixo no seu novo arquivo Solidity criado:
pragma solidity ^0.8.0;
import "hardhat/console.sol";
contract HelloWorld {
string private message;
constructor(string memory firstMessage) {
console.log("Mensagem de entrada recebida: ", firstMessage);
message = firstMessage;
}
function getMessage() public view returns (string memory) {
return message;
}
function setMessage(string memory newMessage) public {
console.log(
"Nova mensagem recebida de '%s' para '%s'",
message,
newMessage
);
message = newMessage;
}
}
O arquivo acima começa inicializando a versão da linguagem Solidity (linha 1) e importando o componente do SDK HardHat para podermos usar o console no nosso código (linha 2):
pragma solidity ^0.8.0;
import “hardhat/console.sol”;
O contrato (similar à uma classe do JavaScript) se inicializa na linha 4 e já começa declarando a variável message que será manipulada posteriormente (linha 5):
contract HelloWorld {
string private message;
A linha 7 declara o construtor do nosso contrato, que é o código executado sempre que uma nova instância é iniciada. Esse construtor recebe uma string como parâmetro para inicialização do valor da primeira mensagem enviada ao contrato (firstMessage).
constructor (string memory firstMessage) {
Dentro do construtor exibimos no console, a título de teste, o valor recebido como primeira mensagem do contrato (linha 8) e então, alteramos o valor da váriavel message com o valor desse parâmetro recebido (linha 9):
console.log(“Mensagem de entrada recebida: “, firstMessage);
message = firstMessage;
A função getMessage() é utilizada para retornar o valor da variável message de uma forma mais segura que a tradicional (linha 12).
E então a funçao setMessage() permite a alteração da varável message por um novo conteúdo qualquer passado como parâmetro (newMessage, linha 16).
Oldest comments (0)