diff --git a/src/xbridge/xbridgewalletconnectorpart.cpp b/src/xbridge/xbridgewalletconnectorpart.cpp index 8bee8de05..8d5129b34 100644 --- a/src/xbridge/xbridgewalletconnectorpart.cpp +++ b/src/xbridge/xbridgewalletconnectorpart.cpp @@ -458,4 +458,38 @@ bool PartWalletConnector::createPaymentTransaction(const std::vector & in return true; } +//****************************************************************************** +//****************************************************************************** +bool PartWalletConnector::createPartialTransaction(const std::vector inputs, + const std::vector > outputs, + std::string & txId, + std::string & rawTx) +{ + XParticlTransaction tx = createTransaction(*this, inputs, outputs, COIN, txVersion, 0, txWithTimeField); + rawTx = tx.toString(); + + // sign + bool complete = false; + if (!rpc::signRawTransaction(m_user, m_passwd, m_ip, m_port, rawTx, complete)) { + LOG() << "sign transaction error " << __FUNCTION__; + return false; + } + + if (!complete) { + LOG() << "transaction not fully signed " << __FUNCTION__; + return false; + } + + std::string partialTxid; + std::string json; + if (!rpc::decodeRawTransaction(m_user, m_passwd, m_ip, m_port, rawTx, partialTxid, json)) { + LOG() << "decode signed transaction error " << __FUNCTION__; + return false; + } + + txId = partialTxid; + + return true; +} + } // namespace xbridge diff --git a/src/xbridge/xbridgewalletconnectorpart.h b/src/xbridge/xbridgewalletconnectorpart.h index be77f34f1..587052d50 100644 --- a/src/xbridge/xbridgewalletconnectorpart.h +++ b/src/xbridge/xbridgewalletconnectorpart.h @@ -42,6 +42,11 @@ class PartWalletConnector : public BtcWalletConnector const std::vector & innerScript, std::string & txId, std::string & rawTx) override; + + bool createPartialTransaction(const std::vector inputs, + const std::vector > outputs, + std::string & txId, + std::string & rawTx) override; }; } // namespace xbridge