diff --git a/app/lib/indexer.ts b/app/lib/indexer.ts index b5f1c47be1b391cf00f6e99e7fa3a77d46db7375..1985ef4f57c9cbffbbec02b45e85a09c79ec3f45 100644 --- a/app/lib/indexer.ts +++ b/app/lib/indexer.ts @@ -1981,11 +1981,13 @@ function txSourceUnlock(ENTRY:SindexEntry, source:SindexEntry, HEAD: DBHead) { const unlockParams:string[] = TransactionDTO.unlock2params(ENTRY.unlock || '') const unlocksMetadata:UnlockMetadata = {} const sigResult = TransactionDTO.fromJSONObject(tx).getTransactionSigResult() - if (source.conditions.match(/CLTV/)) { - unlocksMetadata.currentTime = HEAD.medianTime; - } - if (source.conditions.match(/CSV/)) { - unlocksMetadata.elapsedTime = HEAD.medianTime - source.written_time; + if(source.conditions) { + if (source.conditions.match(/CLTV/)) { + unlocksMetadata.currentTime = HEAD.medianTime; + } + if (source.conditions.match(/CSV/)) { + unlocksMetadata.elapsedTime = HEAD.medianTime - source.written_time; + } } return txunlock(source.conditions, unlockParams, sigResult, unlocksMetadata) } diff --git a/app/lib/rules/local_rules.ts b/app/lib/rules/local_rules.ts index d2f62c6c80fd36aeb09b1827c15920fd3fadca4c..ba102d70d3dbb2c18cc04d3ea4f201d08cade2dd 100644 --- a/app/lib/rules/local_rules.ts +++ b/app/lib/rules/local_rules.ts @@ -391,7 +391,8 @@ export const LOCAL_RULES_FUNCTIONS = { // const allowedMax = block.medianTime > 1519862400 ? CommonConstants.BLOCK_MAX_TX_CHAINING_DEPTH : 0 if (max > allowedMax) { - throw "The maximum transaction chaining length per block is " + CommonConstants.BLOCK_MAX_TX_CHAINING_DEPTH + return false + //throw "The maximum transaction chaining length per block is " + CommonConstants.BLOCK_MAX_TX_CHAINING_DEPTH } return true } @@ -434,17 +435,17 @@ function checkSingleMembershipSignature(ms:any) { return verify(ms.getRaw(), ms.signature, ms.issuer); } -function checkBunchOfTransactions(transactions:TransactionDTO[], conf:ConfDTO, options?:{ dontCareAboutChaining?:boolean }):Promise<boolean>{ +async function checkBunchOfTransactions(transactions:TransactionDTO[], conf:ConfDTO, options?:{ dontCareAboutChaining?:boolean }):Promise<boolean>{ const block:any = { transactions, identities: [], joiners: [], actives: [], leavers: [], revoked: [], excluded: [], certifications: [] }; const index = Indexer.localIndex(block, conf) let local_rule = LOCAL_RULES_FUNCTIONS; return Promise.all([ - local_rule.checkTxLen(block), - local_rule.checkTxIssuers(block), - local_rule.checkTxSources(block), - local_rule.checkTxRecipients(block), - local_rule.checkTxAmounts(block), - local_rule.checkTxSignature(block), + await local_rule.checkTxLen(block), + await local_rule.checkTxIssuers(block), + await local_rule.checkTxSources(block), + await local_rule.checkTxRecipients(block), + await local_rule.checkTxAmounts(block), + await local_rule.checkTxSignature(block), local_rule.checkMaxTransactionChainingDepth(block, conf, index), ]).then(function(values) { for (const value of values) { diff --git a/app/modules/prover/lib/blockGenerator.ts b/app/modules/prover/lib/blockGenerator.ts index 5ed9d9b413c443d8271b03b37a8eb00a495ccbaf..16edbba7ae2c2d1c631f22bdbd5cc5b07b16dc38 100644 --- a/app/modules/prover/lib/blockGenerator.ts +++ b/app/modules/prover/lib/blockGenerator.ts @@ -120,10 +120,11 @@ export class BlockGenerator { await GLOBAL_RULES_HELPERS.checkSingleTransaction(tx, nextBlockWithFakeTimeVariation, this.conf, this.dal, ALSO_CHECK_PENDING_TXS), await GLOBAL_RULES_HELPERS.checkTxBlockStamp(tx, this.dal) ]).then(function(values) { - if (values[0] && values[1]) - transactions.push(tx); - passingTxs.push(tx); - logger.info('Transaction %s added to block', tx.hash); + if (values[0] && values[1]) { + transactions.push(tx); + passingTxs.push(tx); + logger.info('Transaction %s added to block', tx.hash); + } }).catch (function(err) { logger.error(err); const currentNumber = (current && current.number) || 0;