Like On Facebook

header ads

3. Implementando Transações

 

 https://inovacaoindustrial.com.br/wp-content/uploads/2022/05/pet-postblog-interno.jpg 

Adicionando funcionalidade de transações na Blockchain.


O que são Transações?

Transações representam o fluxo de informações ou valores entre dois participantes da blockchain. Elas podem ser transferências de tokens, troca de informações ou registros. 

Para começar, vamos criar um sistema básico de transações que permite transferir tokens entre endereços.

1. Criando a Classe Transaction

No arquivo transaction.js, adicione a nova classe Transaction para representar as transações:


 class Transaction {
     constructor(fromAddress, toAddress, amount) {
         this.fromAddress = fromAddress; // Endereço de quem envia
         this.toAddress = toAddress;    // Endereço de quem recebe
         this.amount = amount;          // Quantia transferida
     }
 }

 module.exports = Transaction;

2. Ajustando a Classe Blockchain para Gerenciar Transações

Agora, vamos modificar a classe Blockchain para incluir:
  • Transações pendentes: Uma lista de transações ainda não processadas.
  • Adicionar transações pendentes: Função para registrar novas transações.

Adicione as seguintes propriedades e métodos à classe Blockchain:

Adicionar transações pendentes
 const Block = require('./block');
 const Transaction = require('./transaction');

 class Blockchain {
     constructor() {
         this.chain = [this.createGenesisBlock()]; // Inicia com o Bloco Gênesis
         this.difficulty = 2;                     // Dificuldade da mineração
         this.pendingTransactions = [];           // Transações pendentes
     }

     // Adiciona uma nova transação à lista de pendentes
     addTransaction(transaction) {
         if (!transaction.fromAddress || !transaction.toAddress) {
             throw new Error("Transação deve ter endereços de origem e destino!");
         }
         if (transaction.amount <= 0) {
             throw new Error("A quantia deve ser maior que 0!");
         }

         this.pendingTransactions.push(transaction);
     }
 }

3. Testando Transações


No arquivo app.js, teste o sistema de transações. Modifique o código para incluir transações pendentes:
 const Blockchain = require('./blockchain');
 const Transaction = require('./blockchain').Transaction;

 // Inicializa a blockchain
 const myBlockchain = new Blockchain();

 // Cria algumas transações
 console.log("Adicionando transações...");
 const transaction1 = new Transaction("Alice", "Bob", 50);
 const transaction2 = new Transaction("Bob", "Charlie", 30);

 myBlockchain.addTransaction(transaction1);
 myBlockchain.addTransaction(transaction2);

 // Exibe as transações pendentes
 console.log("\nTransações pendentes:");
 console.log(myBlockchain.pendingTransactions);
 

4. Executando os Testes

Execute o programa:
 node app.js

O resultado deve mostrar as transações sendo mineradas e os saldos atualizados:
 Adicionando transações...

 Transações pendentes:
 [
     {
         "fromAddress": "Alice",
         "toAddress": "Bob",
         "amount": 50
     },
     {
         "fromAddress": "Bob",
         "toAddress": "Charlie",
         "amount": 30
     }
 ]

O que Aprendemos?

Como criar e gerenciar transações. Como adicionar transações pendentes à blockchain. Próximos Passos No próximo tutorial, vamos integrar essas transações ao processo de mineração e validar as transações em novos blocos. 🚀

Postar um comentário

0 Comentários