|
|
@ -4,7 +4,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <core_io.h>
|
|
|
|
#include <core_io.h>
|
|
|
|
|
|
|
|
|
|
|
|
#include <psbt.h>
|
|
|
|
|
|
|
|
#include <primitives/block.h>
|
|
|
|
#include <primitives/block.h>
|
|
|
|
#include <primitives/transaction.h>
|
|
|
|
#include <primitives/transaction.h>
|
|
|
|
#include <script/script.h>
|
|
|
|
#include <script/script.h>
|
|
|
@ -177,33 +176,6 @@ bool DecodeHexBlk(CBlock& block, const std::string& strHexBlk)
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool DecodeBase64PSBT(PartiallySignedTransaction& psbt, const std::string& base64_tx, std::string& error)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
bool invalid;
|
|
|
|
|
|
|
|
std::string tx_data = DecodeBase64(base64_tx, &invalid);
|
|
|
|
|
|
|
|
if (invalid) {
|
|
|
|
|
|
|
|
error = "invalid base64";
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return DecodeRawPSBT(psbt, tx_data, error);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool DecodeRawPSBT(PartiallySignedTransaction& psbt, const std::string& tx_data, std::string& error)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
CDataStream ss_data(tx_data.data(), tx_data.data() + tx_data.size(), SER_NETWORK, PROTOCOL_VERSION);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
ss_data >> psbt;
|
|
|
|
|
|
|
|
if (!ss_data.empty()) {
|
|
|
|
|
|
|
|
error = "extra data after PSBT";
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (const std::exception& e) {
|
|
|
|
|
|
|
|
error = e.what();
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool ParseHashStr(const std::string& strHex, uint256& result)
|
|
|
|
bool ParseHashStr(const std::string& strHex, uint256& result)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ((strHex.size() != 64) || !IsHex(strHex))
|
|
|
|
if ((strHex.size() != 64) || !IsHex(strHex))
|
|
|
|