diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index 8b2d51cf23..c4eeab81db 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -717,7 +717,7 @@ void LedgerConsensus::Saccept(boost::shared_ptr This, SHAMap::p void LedgerConsensus::applyTransaction(TransactionEngine& engine, SerializedTransaction::pointer txn, Ledger::pointer ledger, CanonicalTXSet& failedTransactions, bool final) { - TransactionEngineParams parms = final ? (tepNO_CHECK_FEE | tepUPDATE_TOTAL) : tepNONE; + TransactionEngineParams parms = final ? (tepNO_CHECK_FEE | tepUPDATE_TOTAL | tepMETADATA) : tepNONE; #ifndef TRUST_NETWORK try { diff --git a/src/TransactionEngine.cpp b/src/TransactionEngine.cpp index ba0ec204b5..e387d0fd3c 100644 --- a/src/TransactionEngine.cpp +++ b/src/TransactionEngine.cpp @@ -864,7 +864,7 @@ TransactionEngineResult TransactionEngine::applyTransaction(const SerializedTran naSigningPubKey = NewcoinAddress::createAccountPublic(txn.peekSigningPubKey()); // Consistency: really signed. - if (terSUCCESS == terResult && !txn.checkSign(naSigningPubKey)) + if ((terSUCCESS == terResult) && ((params & tepNO_CHECK_SIGN) == 0) && !txn.checkSign(naSigningPubKey)) { Log(lsWARNING) << "applyTransaction: Invalid transaction: bad signature"; diff --git a/src/TransactionEngine.h b/src/TransactionEngine.h index b84c4a0102..f75e509625 100644 --- a/src/TransactionEngine.h +++ b/src/TransactionEngine.h @@ -88,6 +88,7 @@ enum TransactionEngineParams tepNO_CHECK_SIGN = 1, // Signature already checked tepNO_CHECK_FEE = 2, // It was voted into a ledger anyway tepUPDATE_TOTAL = 4, // Update the total coins + tepMETADATA = 5, // put metadata in tree, not transaction }; enum TransactionAccountAction