Skip to content

Commit

Permalink
Merge pull request #380 from EYBlockchain/ilyas/fix-withdrawal-client
Browse files Browse the repository at this point in the history
Use Transaction Hash when deciding if client should save blocks
  • Loading branch information
daveroga authored Dec 17, 2021
2 parents 47a5fb6 + 5d8c4c9 commit bd18560
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
3 changes: 2 additions & 1 deletion nightfall-client/src/event-handlers/block-proposed.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
storeCommitment,
countCommitments,
setSiblingInfo,
countTransactionHashes,
} from '../services/commitment-storage.mjs';
import getProposeBlockCalldata from '../services/process-calldata.mjs';
import Secrets from '../classes/secrets.mjs';
Expand All @@ -26,7 +27,7 @@ async function blockProposedEventHandler(data) {
const latestTree = await getLatestTree();
const blockCommitments = transactions.map(t => t.commitments.filter(c => c !== ZERO)).flat();

if ((await countCommitments(blockCommitments)) > 0) {
if ((await countTransactionHashes(block.transactionHashes)) > 0) {
await saveBlock({ blockNumber: currentBlockCount, transactionHashL1, ...block });
await Promise.all(transactions.map(t => saveTransaction({ transactionHashL1, ...t })));
}
Expand Down
9 changes: 9 additions & 0 deletions nightfall-client/src/services/commitment-storage.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,15 @@ export async function countCommitments(commitments) {
return db.collection(COMMITMENTS_COLLECTION).countDocuments(query);
}

// function to get count of transaction hashes. Used to decide if we should store
// incoming blocks or transactions.
export async function countTransactionHashes(transactionHashes) {
const connection = await mongo.connection(MONGO_URL);
const query = { transactionHash: { $in: transactionHashes } };
const db = connection.db(COMMITMENTS_DB);
return db.collection(COMMITMENTS_COLLECTION).countDocuments(query);
}

// function to mark a commitments as on chain for a mongo db
export async function markOnChain(
commitments,
Expand Down

0 comments on commit bd18560

Please sign in to comment.