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 : ...

O Vírus ILOVEYOU: Uma análise técnica e suas implicações na segurança cibernética (particularmente nostálgico)

O Vírus ILOVEYOU: Uma análise técnica e suas implicações na segurança cibernética Resumo O vírus ILOVEYOU, também conhecido como Love Bug, foi um dos mais devastadores ciberataques da história, surgido em maio de 2000. Propagando-se principalmente por e-mails, ele explorava técnicas de engenharia social para induzir usuários a executar um script malicioso em Visual Basic Script (VBS). Este artigo técnico analisa em detalhes os mecanismos de ataque do ILOVEYOU, seu impacto global e as lições aprendidas que moldaram a evolução da segurança cibernética. São discutidas as técnicas de propagação, modificação de arquivos e auto-replicação, bem como as contramedidas desenvolvidas após o ataque. 1. Introdução O vírus ILOVEYOU marcou um ponto crucial na história da segurança cibernética. Ele se destacou não apenas pelo número de máquinas infectadas, mas também pela sua abordagem baseada em engenharia social, usando e-mails aparentemente inofensivos para enganar os usuários. Neste artigo, explor...