Skip to content

Commit

Permalink
Clear Blockchain Transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
15Dkatz committed Sep 28, 2022
1 parent 7185319 commit d7fbf2a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
16 changes: 16 additions & 0 deletions wallet/transaction-pool.js
Expand Up @@ -5,6 +5,10 @@ class TransactionPool {
this.transactionMap = {};
}

clear() {
this.transactionMap = {};
}

setTransaction(transaction) {
this.transactionMap[transaction.id] = transaction;
}
Expand All @@ -24,6 +28,18 @@ class TransactionPool {
transaction => Transaction.validTransaction(transaction)
);
}

clearBlockchainTransactions({ chain }) {
for (let i=1; i<chain.length; i++) {
const block = chain[i];

for (let transaction of block.data) {
if (this.transactionMap[transaction.id]) {
delete this.transactionMap[transaction.id];
}
}
}
}
}

module.exports = TransactionPool;
34 changes: 34 additions & 0 deletions wallet/transaction-pool.test.js
@@ -1,6 +1,7 @@
const TransactionPool = require('./transaction-pool');
const Transaction = require('./transaction');
const Wallet = require('./index');
const Blockchain = require('../blockchain');

describe('TransactionPool', () => {
let transactionPool, transaction, senderWallet;
Expand Down Expand Up @@ -70,4 +71,37 @@ describe('TransactionPool', () => {
expect(errorMock).toHaveBeenCalled();
});
});

describe('clear()', () => {
it('clears the transactions', () => {
transactionPool.clear();

expect(transactionPool.transactionMap).toEqual({});
});
});

describe('clearBlockchainTransactions()', () => {
it('clears the pool of any existing blockchain transactions', () => {
const blockchain = new Blockchain();
const expectedTransactionMap = {};

for (let i=0; i<6; i++) {
const transaction = new Wallet().createTransaction({
recipient: 'foo', amount: 20
});

transactionPool.setTransaction(transaction);

if (i%2===0) {
blockchain.addBlock({ data: [transaction] });
} else {
expectedTransactionMap[transaction.id] = transaction;
}
}

transactionPool.clearBlockchainTransactions({ chain: blockchain.chain });

expect(transactionPool.transactionMap).toEqual(expectedTransactionMap);
});
});
});

0 comments on commit d7fbf2a

Please sign in to comment.