From 26bf01e90eb03b5b39133c3ca9e4ee2fd234a21d Mon Sep 17 00:00:00 2001 From: miketout Date: Sat, 13 Oct 2018 18:21:44 -0700 Subject: [PATCH] Correct script serialization --- src/cc/CCutils.cpp | 6 ++++-- src/cc/StakeGuard.cpp | 9 +++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/cc/CCutils.cpp b/src/cc/CCutils.cpp index c5746f328..288f431be 100644 --- a/src/cc/CCutils.cpp +++ b/src/cc/CCutils.cpp @@ -221,8 +221,10 @@ bool GetCCParams(Eval* eval, const CTransaction &tx, uint32_t nIn, { if (tx.vout[tx.vout.size() - 1].scriptPubKey.GetOpretData(params) && params.size() == 1) { - CScript scr = CScript(params[0]); - // printf("Stake cheat parameter opret:\n%s\n", scr.ToString().c_str()); + CScript scr = CScript(params[0].begin(), params[0].end()); + + printf("Script decoding inner:\n%s\nouter:\n%s\n", scr.ToString().c_str(), tx.vout[tx.vout.size() - 1].scriptPubKey.ToString().c_str()); + if (!scr.GetPushedData(scr.begin(), params)) { return false; diff --git a/src/cc/StakeGuard.cpp b/src/cc/StakeGuard.cpp index f91c1c0b9..e5898e700 100644 --- a/src/cc/StakeGuard.cpp +++ b/src/cc/StakeGuard.cpp @@ -293,12 +293,17 @@ bool MakeCheatEvidence(CMutableTransaction &mtx, const CTransaction &ccTx, uint3 if (ValidateMatchingStake(ccTx, voutNum, cheatTx, isCheater) && isCheater) { CTxOut vOut = CTxOut(); + int64_t opretype_stakecheat = OPRETTYPE_STAKECHEAT; CScript vData = CScript(); cheatTx.Serialize(s); vch = std::vector(s.begin(), s.end()); - vData << ((int64_t)OPRETTYPE_STAKECHEAT) << vch; - vOut.scriptPubKey << OP_RETURN << std::vector(vData.begin(), vData.end()); + vData << opretype_stakecheat << vch; + vch = std::vector(vData.begin(), vData.end()); + vOut.scriptPubKey << OP_RETURN << vch; + + printf("Script encoding inner:\n%s\nouter:\n%s\n", vData.ToString().c_str(), vOut.scriptPubKey.ToString().c_str()); + vOut.nValue = 0; mtx.vout.push_back(vOut); }