Add option to return non-segwit serialization via rpc

Github-Pull: #9194
Rebased-From: 835c75acaac004c3315395dcd7d1f193dfb9e5da
This commit is contained in:
Gregory Sanders
2016-11-20 09:54:51 -05:00
committed by Wladimir J. van der Laan
parent a710a43040
commit 21ccb9f253
9 changed files with 40 additions and 9 deletions

View File

@@ -607,7 +607,7 @@ UniValue getblock(const UniValue& params, bool fHelp)
if (!fVerbose)
{
CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION);
CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION | RPCSerializationFlags());
ssBlock << block;
std::string strHex = HexStr(ssBlock.begin(), ssBlock.end());
return strHex;

View File

@@ -209,7 +209,7 @@ UniValue getrawtransaction(const UniValue& params, bool fHelp)
if (!GetTransaction(hash, tx, Params().GetConsensus(), hashBlock, true))
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "No information available about transaction");
string strHex = EncodeHexTx(tx);
string strHex = EncodeHexTx(tx, RPCSerializationFlags());
if (!fVerbose)
return strHex;

View File

@@ -495,4 +495,12 @@ void RPCRunLater(const std::string& name, boost::function<void(void)> func, int6
deadlineTimers.insert(std::make_pair(name, boost::shared_ptr<RPCTimerBase>(timerInterface->NewTimer(func, nSeconds*1000))));
}
int RPCSerializationFlags()
{
int flag = 0;
if (GetArg("-rpcserialversion", DEFAULT_RPC_SERIALIZE_VERSION) == 0)
flag |= SERIALIZE_TRANSACTION_NO_WITNESS;
return flag;
}
CRPCTable tableRPC;

View File

@@ -19,6 +19,8 @@
#include <univalue.h>
static const unsigned int DEFAULT_RPC_SERIALIZE_VERSION = 1;
class CRPCCommand;
namespace RPCServer
@@ -195,4 +197,7 @@ void InterruptRPC();
void StopRPC();
std::string JSONRPCExecBatch(const UniValue& vReq);
// Retrieves any serialization flags requested in command line argument
int RPCSerializationFlags();
#endif // BITCOIN_RPCSERVER_H