From 1bf4baf408e55b8bf82a43a3de49c566a8bcb480 Mon Sep 17 00:00:00 2001 From: dimxy Date: Tue, 23 Apr 2019 15:56:54 +0500 Subject: [PATCH] added normal inputs pubkey validation --- src/cc/prices.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cc/prices.cpp b/src/cc/prices.cpp index 99fc34711..6982771cf 100644 --- a/src/cc/prices.cpp +++ b/src/cc/prices.cpp @@ -161,6 +161,15 @@ static bool ValidateBetTx(struct CCcontract_info *cp, Eval *eval, const CTransac if( MakeCC1vout(cp->evalcode, bettx.vout[2].nValue, pricespk) != bettx.vout[2] ) return eval->Invalid("cannot validate vout2 in bet tx with pk from opreturn"); + // validate if normal inputs are really signed by originator pubkey (someone not cheating with originator pubkey) + CAmount ccOutputs = 0; + for (auto vout : bettx.vout) + if (vout.scriptPubKey.IsPayToCryptoCondition()) + ccOutputs += vout.nValue; + CAmount normalInputs = TotalPubkeyNormalInputs(bettx, pk); + if (normalInputs < ccOutputs) + return eval->Invalid("bettx normal input signed with not pubkey in opret"); + return true; }