diff --git a/src/cc/marmara.cpp b/src/cc/marmara.cpp index db794c33b..3ddbac581 100644 --- a/src/cc/marmara.cpp +++ b/src/cc/marmara.cpp @@ -255,10 +255,13 @@ int32_t MarmaraValidateCoinbase(int32_t height,CTransaction tx) return(-1); } -bool MarmaraPoScheck(char *destaddr,CScript opret,CScript scriptPubKey) +bool MarmaraPoScheck(char *destaddr,CScript opret,CTransaction staketx) { CPubKey Marmarapk,pk; int32_t height,unlockht; uint8_t funcid; char coinaddr[64]; struct CCcontract_info *cp,C; - if ( opret == scriptPubKey ) + UniValue result(UniValue::VOBJ); + TxToJSON(tx, uint256(), result); + fprintf(stderr,"%s\n",result.ToString()); + if ( staketx.vout.size() == 2 && opret == staketx.vout[1].scriptPubKey ) { cp = CCinit(&C,EVAL_MARMARA); funcid = DecodeMaramaraCoinbaseOpRet(opret,pk,height,unlockht); diff --git a/src/komodo_bitcoind.h b/src/komodo_bitcoind.h index c2d2716c1..bdcad8d7b 100644 --- a/src/komodo_bitcoind.h +++ b/src/komodo_bitcoind.h @@ -636,7 +636,7 @@ int32_t komodo_WhoStaked(CBlock *pblock, CTxDestination &addressout) return(0); } -bool MarmaraPoScheck(char *destaddr,CScript opret,CScript scriptPubKey); +bool MarmaraPoScheck(char *destaddr,CScript opret,CTransaction staketx); int32_t komodo_isPoS(CBlock *pblock,int32_t height) { @@ -653,17 +653,17 @@ int32_t komodo_isPoS(CBlock *pblock,int32_t height) if ( ExtractDestination(pblock->vtx[n-1].vout[0].scriptPubKey,voutaddress) ) { strcpy(voutaddr,CBitcoinAddress(voutaddress).ToString().c_str()); - fprintf(stderr,"voutaddr.%s vs destaddr.%s\n",voutaddr,destaddr); + //fprintf(stderr,"voutaddr.%s vs destaddr.%s\n",voutaddr,destaddr); if ( pblock->vtx[n-1].vout[0].nValue == value && strcmp(destaddr,voutaddr) == 0 ) { if ( ASSETCHAINS_MARMARA == 0 ) return(1); else { - if ( pblock->vtx[n-1].vout[0].scriptPubKey.IsPayToCryptoCondition() != 0 && (numvouts= pblock->vtx[n-1].vout.size()) > 1 ) + if ( pblock->vtx[n-1].vout[0].scriptPubKey.IsPayToCryptoCondition() != 0 && (numvouts= pblock->vtx[n-1].vout.size()) == 2 ) { //fprintf(stderr,"validate proper %s %s signature and unlockht preservation\n",voutaddr,destaddr); - return(MarmaraPoScheck(destaddr,opret,pblock->vtx[n-1].vout[numvouts-1].scriptPubKey)); + return(MarmaraPoScheck(destaddr,opret,pblock->vtx[n-1])); } else { diff --git a/src/miner.cpp b/src/miner.cpp index 78eb84e7b..01ff9da0c 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -512,7 +512,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 pblocktemplate->vTxSigOps.push_back(GetLegacySigOpCount(txStaked)); nFees += txfees; pblock->nTime = blocktime; - //printf("staking PoS ht.%d t%u lag.%u\n",(int32_t)chainActive.LastTip()->GetHeight()+1,blocktime,(uint32_t)(GetAdjustedTime() - (blocktime-13))); +printf("staking PoS ht.%d t%u lag.%u\n",(int32_t)chainActive.LastTip()->GetHeight()+1,blocktime,(uint32_t)(GetAdjustedTime() - (blocktime-13))); } else return(0); //fprintf(stderr,"no utxos eligible for staking\n"); } // Create coinbase tx