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:
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. 🚀
0 Comentários