Blockchain

Teoria e prática
Voltar

RESUMO EM CONSTRUÇÃO

Material complementar:


Conceito:

Rede P2P (descentralizada) pública e imutável para transações e armazenamento de dados em pilha de blocos de dados criptografados, via registro digital distribuído (distributed ledger - BD compartilhado/sincronizado entre vários dispositivos/nodes/Besus) em comunicação JSON-RPC. Rede independente de autoridade central terceira para gestão (banco, governo). Dedicada a membros participantes. Após aprovação dos participantes (consensus/proof), cada transação (atualização na rede) é empilhada sob os demais blocos, com rastreabilidade e auditabilidade instantâneas. Exemplos de redes Blockchain:

  • Bitcoin: rede de transações de criptomoedas, focada em segurança e descentralização;
  • Ethereum: plataforma de desenvolvimento de smart contracts e aplicativos descentralizados;
  • Hyperledger Fabric: framework open-source para desenvolvimento de soluções blockchain empresariais.

Blockchain como serviço (BaaS) é serviço de blockchain oferecido em cloud. Usado no cotidiano em criptomoedas, smart contracts, rastreamento de produtos, votação digital e certificados digitais (diplomas, identidades, NFTs).


Fluxo de funcionamento:

  1. Usuário A solicita envio de R$ 200,00 para Usuário B via aplicação (chama função 'tedSaldo(B, 200)' do Smart Contract);
  2. Aplicação cria transação assinada por Usuário A, solicitando executar 'tedSaldo(B, 200)' do Smart Contract;
  3. Nodes da rede P2P recebem e validam transação, colocando-a na mempool (fila de transações pendentes para inclusão em block);
  4. Participante responsável seleciona transação da mempool, executando 'tedSaldo(B, 200)', onde Smart Contract é executado, reduzindo saldo de A e aumentando de B em R$ 200,00;
  5. Transação é incluída em novo block contendo dados dessa e outras transações do momento, vinculado criptograficamente ao block anterior;
  6. Via consensus (Proof of Work (PoW) - Bitcoin, Proof of Stake (PoS) - Ethereum ou Proof of Authority (PoA) - Hyperledger Fabric), nodes da rede validam novo block, suas transações e resultados da execução do Smart Contract, registrando aprovação ou rejeição;
  7. Após aprovação do block, blockchain é sincronizada/atualizada nos nodes da rede, registrando nova transação e seus efeitos (saldo de A diminui 200, e de B aumenta 200);
  8. Se block for rejeitado, transação não será incluída no ledger e seus efeitos não serão aplicados ao estado da blockchain.

Tecnologia BD vs Blockchain:

  • Blockchains descentralizam controle sem comprometer confiança nos dados, enquanto BD é gerenciado por única autoridade central, não transparente;
  • BD tradicional geralmente não é compartilhado em transações. Em redes blockchain, cada empresa tem sua cópia do ledger completa e atualizada (redes Hyperledger Fabric);
  • Blockchain somente insere dados na pilha de blocks, não editáveis nem manipuláveis após inserção.

Block:

Unidade básica da blockchain, contendo estrutura de dados de transação(ões), hash (identificador único) e hash do bloco anterior para cadeia contínua (Block+Chain). Se hash do bloco anterior for alterado, toda cadeia torna-se inválida. O 1º block da cadeia é denominado bloco genesis. Conceitualmente, um block possui os dados:


BLOCK #125

Número: 125
Data/Hora: 16/09/2026 14:30:00
Previous Hash: 8F2A91C...

Transações:
1. A → Smart Contract
   tedSaldo(B, 200)

2. C → D
   tedSaldo(D, 50)

Resultado:
A: -200
B: +200

Merkle Root: A7B29D...
Block Hash: C91F82...

Smart Contract:

Programa/classe em rede blockchain, executado quando transação solicita uma de suas funções. Geralmente escrito em Solidity (Ethereum), como por exemplo:


contract Conta {
    mapping(address => uint256) public saldo;

    function tedSaldo(address destinatario, uint256 valor) public {
        require(saldo[msg.sender] >= valor);
        saldo[msg.sender] -= valor;
        saldo[destinatario] += valor;
    }
}


Exemplo prático:

Criar rede Blockchain Ethereum/EVM Besu, multi-node local, via Docker no Ubuntu, criando smart contract via Solidity, consensus QBFT PoA e deploy Foundry. Arquitetura da rede:


                    UB BLOCKCHAIN
                         │
             ┌───────────┼───────────┐
             │           │           │
          Node 1      Node 2      Node 3
          Besu        Besu        Besu
          QBFT        QBFT        QBFT
             │           │           │
             └───────────┼───────────┘
                         │
                    P2P / QBFT
                         │
                   Blockchain
                         │
                    EVM / RPC

Node 1 → http://localhost:8545
Node 2 → http://localhost:8546
Node 3 → http://localhost:8547
  1. Preparar ambiente base da rede Blockchain:
    1. Baixar arquivo SH para preparar ambiente: LINK AQUI
    2. Dar permissão de execução ao arquivo: sudo chmod +x preparar-ambiente.sh
    3. Executar arquivo: sudo ./preparar-ambiente.sh
  2. Criar rede blockchain com wallet e smart contract:
    1. Baixar arquivo SH para criar rede: LINK AQUI
    2. Dar permissão de execução ao arquivo: sudo chmod +x criar-rede.sh
    3. Executar arquivo: sudo ./criar-rede.sh
  3. Verificar se Node 1 responde ao JSON-RPC: cast chain-id --rpc-url http://localhost:8545
  4. Verificar se Nodes estão sincronizados para receber blocks:
    
    cast block-number --rpc-url http://localhost:8545
    cast block-number --rpc-url http://localhost:8546
    cast block-number --rpc-url http://localhost:8547
    
  5. Consultar saldo da wallet:
    
    cast balance 0x64796893d86E251872660E599Ba20E47Cd126c8E \
      --rpc-url http://localhost:8545 \
      --ether
    
  6. EM BREVE - Fazer transação...

Elaborado por Mateus Schwede
ubsocial.github.io