From 14caec1083223de4fe1d0af238f6f0442cd13d2c Mon Sep 17 00:00:00 2001 From: Mihailo Milenkovic Date: Thu, 4 Jul 2019 11:39:13 +0200 Subject: [PATCH 1/3] Fix --- src/cc/CCtokens.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cc/CCtokens.cpp b/src/cc/CCtokens.cpp index cc073879b..0319af622 100644 --- a/src/cc/CCtokens.cpp +++ b/src/cc/CCtokens.cpp @@ -397,19 +397,19 @@ int64_t IsTokensvout(bool goDeeper, bool checkPubkeys /*<--not used, always true } } - //special check for 3 pubkey tx when spending from 1of2 CC address with on of pubkeys is global CC pubkey + //special check for tx when spending from 1of2 CC address and one of pubkeys is global CC pubkey struct CCcontract_info *cpEvalCode1,CEvalCode1; cpEvalCode1 = CCinit(&CEvalCode1,evalCode1); CPubKey pk=GetUnspendable(cpEvalCode1,0); testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode1, tx.vout[v].nValue, voutPubkeys[0], pk), std::string("dual-eval1 pegscc cc1of2 pk[0] globalccpk")) ); - testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode1, tx.vout[v].nValue, voutPubkeys[1], pk), std::string("dual-eval1 pegscc cc1of2 pk[1] globalccpk")) ); + if (voutPubkeys.size() == 2) testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode1, tx.vout[v].nValue, voutPubkeys[1], pk), std::string("dual-eval1 pegscc cc1of2 pk[1] globalccpk")) ); if (evalCode2!=0) { struct CCcontract_info *cpEvalCode2,CEvalCode2; cpEvalCode2 = CCinit(&CEvalCode2,evalCode2); CPubKey pk=GetUnspendable(cpEvalCode2,0); testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode2, tx.vout[v].nValue, voutPubkeys[0], pk), std::string("dual-eval2 pegscc cc1of2 pk[0] globalccpk")) ); - testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode2, tx.vout[v].nValue, voutPubkeys[1], pk), std::string("dual-eval2 pegscc cc1of2 pk[1] globalccpk")) ); + if (voutPubkeys.size() == 2) testVouts.push_back( std::make_pair(MakeTokensCC1of2vout(evalCode2, tx.vout[v].nValue, voutPubkeys[1], pk), std::string("dual-eval2 pegscc cc1of2 pk[1] globalccpk")) ); } // maybe it is single-eval or dual/three-eval token change? From 40eae4e3822d2a7007e7f50b1c4c856a0f1be09f Mon Sep 17 00:00:00 2001 From: Mihailo Milenkovic Date: Thu, 4 Jul 2019 15:40:10 +0200 Subject: [PATCH 2/3] Fix pegscreate number of vouts --- src/cc/pegs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/pegs.cpp b/src/cc/pegs.cpp index d76a9c6a9..2e658fd0a 100644 --- a/src/cc/pegs.cpp +++ b/src/cc/pegs.cpp @@ -675,7 +675,7 @@ std::string PegsCreate(uint64_t txfee,int64_t amount, std::vector bindt } if ( AddNormalinputs(mtx,mypk,amount,64) >= amount ) { - for (int i=0; i<(amount-txfee)/CC_MARKER_VALUE; i++) mtx.vout.push_back(MakeCC1vout(EVAL_PEGS,CC_MARKER_VALUE,pegspk)); + for (int i=0; i<100; i++) mtx.vout.push_back(MakeCC1vout(EVAL_PEGS,(amount-txfee)/100,pegspk)); return(FinalizeCCTx(0,cp,mtx,mypk,txfee,EncodePegsCreateOpRet(bindtxids))); } CCerror = strprintf("error adding normal inputs"); From a20de3fa836f3f06e9dd6f5fa935840686cfc044 Mon Sep 17 00:00:00 2001 From: Mihailo Milenkovic Date: Fri, 5 Jul 2019 10:41:42 +0200 Subject: [PATCH 3/3] Fix KOMODO_EARLYTXID --- src/komodo_utils.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/komodo_utils.h b/src/komodo_utils.h index 02bdb07ad..a4af4da6f 100644 --- a/src/komodo_utils.h +++ b/src/komodo_utils.h @@ -1787,9 +1787,10 @@ void komodo_args(char *argv0) printf("KOMODO_REWIND %d\n",KOMODO_REWIND); } KOMODO_EARLYTXID = Parseuint256(GetArg("-earlytxid","0").c_str()); - if (KOMODO_EARLYTXID!=zeroid && (tx_height(KOMODO_EARLYTXID)==0 || tx_height(KOMODO_EARLYTXID)>100)) + CTransaction tx; uint256 blockhash; + if (KOMODO_EARLYTXID!=zeroid && myGetTransaction(KOMODO_EARLYTXID,tx,blockhash) && (mapBlockIndex[blockhash]->GetHeight() == 0 || mapBlockIndex[blockhash]->GetHeight() > 100)) { - fprintf(stderr,"earlytx can be only in first 100 blocks or does not exist\n"); + fprintf(stderr,"error: earlytx can be only in first 100 blocks or tx does not exist\n"); StartShutdown(); } ASSETCHAINS_EARLYTXIDCONTRACT = GetArg("-ac_earlytxidcontract",0);