diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts index 5d5ca436742f1c2746e980bf6438781af8086a73..2cbd5d10251ee0aa6d505b3e3cb196951ed9f88f 100644 --- a/app/lib/dal/fileDAL.ts +++ b/app/lib/dal/fileDAL.ts @@ -519,9 +519,19 @@ export class FileDAL { .value() } - async findLeavers() { - const mss = await this.msDAL.getPendingOUT(); - return _.chain(mss).sortBy((ms:any) => -ms.sigDate).value(); + async findLeavers(blockMedianTime = 0) { + const pending = await this.msDAL.getPendingOUT(); + const mss = await Promise.all(pending.map(async (p:any) => { + const reduced = await this.mindexDAL.getReducedMS(p.issuer) + if (!reduced || !reduced.chainable_on || blockMedianTime >= reduced.chainable_on || blockMedianTime < constants.TIME_TO_TURN_ON_BRG_107) { + return p + } + return null + })) + return _.chain(mss) + .filter((ms:any) => ms) + .sortBy((ms:any) => -ms.sigDate) + .value(); } existsNonReplayableLink(from:string, to:string) { diff --git a/app/modules/prover/lib/blockGenerator.ts b/app/modules/prover/lib/blockGenerator.ts index 48ab6db8e663bab72e59959b29c55b3aa045387e..0608a1b0291cf4a55bfdd239770aa9d9e374e265 100644 --- a/app/modules/prover/lib/blockGenerator.ts +++ b/app/modules/prover/lib/blockGenerator.ts @@ -151,7 +151,7 @@ export class BlockGenerator { private async findLeavers(current:DBBlock) { const leaveData: { [pub:string]: any } = {}; - const memberships = await this.dal.findLeavers(); + const memberships = await this.dal.findLeavers(current && current.medianTime); const leavers:string[] = []; memberships.forEach((ms:any) => leavers.push(ms.issuer)); for (const ms of memberships) {