Pular para o conteúdo principal

Construindo aplicações com web3: Um guia para desenvolvedores Full Stack.

Introdução

Nos últimos anos, a Web3 tem revolucionado a forma como interagimos com a internet. Como desenvolvedores Full Stack, integrar blockchain em nossas aplicações é um diferencial que pode nos destacar no mercado. Neste artigo, vamos explorar como construir uma aplicação descentralizada (dApp) conectando um frontend a um contrato inteligente.

O que é Web3?

Web3 representa uma nova fase da internet baseada em blockchain, onde as aplicações são descentralizadas e os usuários têm controle sobre seus dados. Diferente da Web2, onde plataformas centralizadas controlam serviços, a Web3 utiliza contratos inteligentes para automatizar transações de forma segura e transparente.

Tecnologias Essenciais

Antes de iniciar o desenvolvimento, é importante conhecer algumas ferramentas fundamentais:

  • Ethereum: Uma das principais blockchains para contratos inteligentes.

  • Solidity: Linguagem de programação para contratos inteligentes.

  • Hardhat: Ambiente de desenvolvimento para testes e implantação de contratos.

  • Ethers.js/Web3.js: Bibliotecas para conectar aplicações ao blockchain.

  • Metamask: Carteira digital para interação com contratos.

Criando um Contrato Inteligente

Vamos criar um contrato simples em Solidity para armazenar e recuperar mensagens.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract MessageStore {
    string private message;
    
    function setMessage(string memory _message) public {
        message = _message;
    }
    
    function getMessage() public view returns (string memory) {
        return message;
    }
}

Esse contrato permite que os usuários armazenem e recuperem mensagens na blockchain.

Implantando o Contrato com Hardhat

Instale o Hardhat e configure um projeto:

npm install --save-dev hardhat
npx hardhat

Crie um script para implantar o contrato:

const hre = require("hardhat");

async function main() {
  const MessageStore = await hre.ethers.getContractFactory("MessageStore");
  const messageStore = await MessageStore.deploy();
  await messageStore.deployed();
  console.log("Contrato implantado em:", messageStore.address);
}

main().catch((error) => {
  console.error(error);
  process.exit(1);
});

Rode o script:

npx hardhat run scripts/deploy.js --network localhost

Criando o Frontend

No frontend, usamos React + Ethers.js para interagir com o contrato. Instale as dependências:

npm install ethers

Conectando ao contrato:

import { ethers } from "ethers";

const contractAddress = "ENDERECO_DO_CONTRATO";
const abi = [
  "function setMessage(string _message) public",
  "function getMessage() public view returns (string)"
];

async function getMessage() {
  if (typeof window.ethereum !== "undefined") {
    const provider = new ethers.providers.Web3Provider(window.ethereum);
    const contract = new ethers.Contract(contractAddress, abi, provider);
    return await contract.getMessage();
  }
}

O usuário poderá interagir com o contrato via Metamask.

Criando o Backend

Podemos criar um backend em Node.js + Express para armazenar logs das interações.

const express = require("express");
const app = express();
app.use(express.json());

app.post("/log", (req, res) => {
    console.log("Nova interação:", req.body);
    res.status(200).send("Log registrado");
});

app.listen(3001, () => console.log("Servidor rodando na porta 3001"));

Conclusão

Integrar blockchain em aplicações Full Stack é uma habilidade valiosa para desenvolvedores. Neste guia, abordamos desde a criação de um contrato inteligente até sua interação com frontend e backend. Com o crescimento da Web3, dominar essas tecnologias pode abrir novas oportunidades no mercado.

Comentários

Postagens mais visitadas deste blog

Tipos de juntas em construção civil: Importância e aplicações.

Tipos de juntas em construção civil: Importância e aplicações Por: Marcelo Fontinele, MF Engenharia e Consultoria. Introdução As juntas desempenham um papel fundamental na construção civil, proporcionando flexibilidade estrutural e prevenindo danos causados pela movimentação natural dos materiais. Vamos explorar os principais tipos de juntas e sua relevância na engenharia civil. Junta de Dessolidarização A junta de dessolidarização é projetada para separar componentes estruturais, como pisos e paredes, minimizando a transmissão de tensões entre eles. Essa técnica ajuda a evitar fissuras e garantir a durabilidade das estruturas. Junta de Movimentação Essencial em grandes estruturas, como pontes e edifícios altos, a junta de movimentação permite a expansão e contração dos materiais devido às variações térmicas e movimentações estruturais, reduzindo o risco de rachaduras e deformações. Junta Estrutural Integrada no projeto para dividir grandes áreas de concreto ou alvenaria em se...

Fórmulas de Hazen-Williams e Fair – Whipple – Hsiao: Diferenças e aplicações no dimensionamento hidráulico

Fórmulas de Hazen-Williams e Fair – Whipple – Hsiao: Diferenças e aplicações no dimensionamento hidráulico. Introdução O dimensionamento de tubulações é um dos pilares de projetos hidráulicos eficientes. Entre as várias equações disponíveis, destacam-se duas de uso comum: a fórmula de Hazen-Williams e a equação empírica de Fair – Whipple – Hsiao . Ambas visam determinar a perda de carga ou a vazão em sistemas de condução de água, mas possuem abordagens diferentes e são aplicadas em situações específicas . Fórmula de Hazen-Williams A equação de Hazen-Williams é bastante popular no Brasil e em muitos países por sua simplicidade e boa aproximação para escoamento de água fria em tubulações sob pressão , com regime permanente e fluxo turbulento . Fórmula: V = K ⋅ C ⋅ R 0,63 ⋅ S 0,54 V = K \cdot C \cdot R^{0{,}63} \cdot S^{0{,}54} Ou, mais comumente, na forma para vazão (Q) : Q = 0,278 ⋅ C ⋅ D 2,63 ⋅ S 0,54 Q = 0{,}278 \cdot C \cdot D^{2{,}63} \cdot S^{0{,}54} Onde: Q Q : ...

Antigravidade: Explorando os conceitos Matemáticos e Físicos (tese hipotética).

  Antigravidade: Explorando os conceitos Matemáticos e Físicos Resumo Este artigo aborda a noção teórica de antigravidade, um fenômeno hipotético que descreveria uma força repulsiva oposta à gravidade tradicional. Embora a ciência atual não tenha evidências experimentais da existência de antigravidade, os fundamentos teóricos para essa ideia emergem de várias áreas da física moderna, incluindo a Relatividade Geral de Einstein, a constante cosmológica, teorias quânticas de campo e modelos de dimensões extras. Aqui, são apresentados conceitos matemáticos e físicos iniciais que sustentam a especulação sobre antigravidade, abrindo caminho para futuras investigações teóricas. Introdução A gravidade é uma das forças fundamentais do universo, sendo responsável por fenômenos desde a queda de um objeto ao solo até a órbita dos planetas em torno do Sol. Contudo, a ideia de antigravidade — uma força que se oporia diretamente à gravidade — tem fascinado cientistas e escritores de ficção cientí...