diff --git a/src/cc/CCassetstx.cpp b/src/cc/CCassetstx.cpp index ae0a3d593..49e668526 100644 --- a/src/cc/CCassetstx.cpp +++ b/src/cc/CCassetstx.cpp @@ -327,7 +327,7 @@ std::string FillSell(uint64_t txfee,uint256 assetid,uint256 assetid2,uint256 ask CCchange = (inputs - paid_nValue); mtx.vout.push_back(MakeCC1vout(EVAL_ASSETS,orig_assetoshis - received_assetoshis,GetUnspendable(cp,0))); mtx.vout.push_back(MakeCC1vout(EVAL_ASSETS,received_assetoshis,mypk)); - mtx.vout.push_back(CTxOut(paid_nValue,CScript() << ParseHex(HexStr(mypk)) << OP_CHECKSIG)); + mtx.vout.push_back(CTxOut(paid_nValue,CScript() << origpubkey << OP_CHECKSIG)); if ( CCchange != 0 ) mtx.vout.push_back(MakeCC1vout(EVAL_ASSETS,CCchange,mypk)); return(FinalizeCCTx(cp,mtx,mypk,txfee,EncodeAssetOpRet(assetid2!=zeroid?'E':'S',assetid,assetid2,remaining_nValue,origpubkey))); diff --git a/src/cc/assets.cpp b/src/cc/assets.cpp index 54e95c95b..c13264c1e 100644 --- a/src/cc/assets.cpp +++ b/src/cc/assets.cpp @@ -229,6 +229,8 @@ bool AssetsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx { if ( ConstrainVout(tx.vout[1],0,0,0) == 0 ) return eval->Invalid("vout1 is CC for fillbuy"); + else if ( ConstrainVout(tx.vout[2],1,CCaddr,0) == 0 ) + return eval->Invalid("vout1 is normal for fillbuy"); else if ( ValidateBidRemainder(remaining_price,tx.vout[0].nValue,nValue,tx.vout[1].nValue,tx.vout[2].nValue,totalunits) == false ) return eval->Invalid("mismatched remainder for fillbuy"); else if ( remaining_price != 0 ) @@ -291,6 +293,8 @@ bool AssetsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx return eval->Invalid("mismatched remainder for fill"); else if ( ConstrainVout(tx.vout[1],1,0,0) == 0 ) return eval->Invalid("normal vout1 for fillask"); + else if ( ConstrainVout(tx.vout[2],0,origaddr,0) == 0 ) + return eval->Invalid("normal vout1 for fillask"); else if ( remaining_price != 0 ) { if ( ConstrainVout(tx.vout[0],1,(char *)cp->unspendableCCaddr,0) == 0 )