diff --git a/src/rpc/crosschain.cpp b/src/rpc/crosschain.cpp index a2e74477a..4f7603507 100644 --- a/src/rpc/crosschain.cpp +++ b/src/rpc/crosschain.cpp @@ -270,7 +270,7 @@ UniValue migrate_completeimporttransaction(const UniValue& params, bool fHelp) UniValue selfimport(const UniValue& params, bool fHelp) { CMutableTransaction mtx = CreateNewContextualCMutableTransaction(Params().GetConsensus(), komodo_nextheight()); - TxProof proof; CTransaction burnTx; CTxOut burnOut,savevout; uint64_t burnAmount; uint256 txid,blockHash; std::vector vouts; + TxProof proof; CTransaction burnTx,tx; CTxOut burnOut,savevout; uint64_t burnAmount; uint256 txid,blockHash; std::vector vouts; if ( ASSETCHAINS_SELFIMPORT.size() == 0 ) throw runtime_error("selfimport only works on -ac_import chains"); if (fHelp || params.size() != 2) @@ -280,21 +280,21 @@ UniValue selfimport(const UniValue& params, bool fHelp) burnAmount = atof(params[1].get_str().c_str()) * COIN + 0.00000000499999; // txid is just used to specify the import recv address // in reality it would be rawtx from the other chain - if ( GetTransaction(txid,burnTx,blockHash,false) == 0 ) + if ( GetTransaction(txid,tx,blockHash,false) == 0 ) throw runtime_error("selfimport couldnt find txid"); - savevout = burnTx.vout[0]; - mtx = burnTx; + savevout = tx.vout[0]; + mtx = tx; mtx.vout.clear(); mtx.vout.resize(1); mtx.vout[0] = savevout; mtx.vout[0].nValue = burnAmount; vouts = mtx.vout; burnOut = MakeBurnOutput(burnAmount,0xffffffff,ASSETCHAINS_SELFIMPORT,vouts); - mtx = burnTx; + mtx = tx; mtx.vout.clear(); mtx.vout.push_back(burnOut); burnTx = mtx; - if ( GetSelfimportProof(proof,burnTx,burnTx.GetHash()) < 0 ) + if ( GetSelfimportProof(proof,tx,txid) < 0 ) throw std::runtime_error("Failed validating selfimport"); return HexStr(E_MARSHAL(ss << MakeImportCoinTransaction(proof,burnTx,vouts))); }