aboutsummaryrefslogtreecommitdiff
path: root/src/rpcblockchain.cpp
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2013-06-07 05:23:30 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2013-06-07 17:44:39 +0000
commit23319521418691ddfcb228684c900c389f3f114d (patch)
tree3eee9d8dc7e5b0d7f3be7c9106294ae535fd640f /src/rpcblockchain.cpp
parenteb49457ff279721cc3cef10fe68fd75b4aa71833 (diff)
downloadbitcoin-23319521418691ddfcb228684c900c389f3f114d.tar.xz
RPC: getblock(): Accept 2nd "verbose" parameter, similar to getrawtransaction, but defaulting to 1 for backward compatibility
Diffstat (limited to 'src/rpcblockchain.cpp')
-rw-r--r--src/rpcblockchain.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp
index 2dfdf58422..2aa400abe0 100644
--- a/src/rpcblockchain.cpp
+++ b/src/rpcblockchain.cpp
@@ -141,14 +141,20 @@ Value getblockhash(const Array& params, bool fHelp)
Value getblock(const Array& params, bool fHelp)
{
- if (fHelp || params.size() != 1)
+ if (fHelp || params.size() < 1 || params.size() > 2)
throw runtime_error(
- "getblock <hash>\n"
- "Returns details of a block with given block-hash.");
+ "getblock <hash> [verbose=true]\n"
+ "If verbose is false, returns a string that is serialized, hex-encoded data for block <hash>.\n"
+ "If verbose is true, returns an Object with information about block <hash>."
+ );
std::string strHash = params[0].get_str();
uint256 hash(strHash);
+ bool fVerbose = true;
+ if (params.size() > 1)
+ fVerbose = params[1].get_bool();
+
if (mapBlockIndex.count(hash) == 0)
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "Block not found");
@@ -156,6 +162,14 @@ Value getblock(const Array& params, bool fHelp)
CBlockIndex* pblockindex = mapBlockIndex[hash];
block.ReadFromDisk(pblockindex, true);
+ if (!fVerbose)
+ {
+ CDataStream ssBlock(SER_NETWORK, PROTOCOL_VERSION);
+ ssBlock << block;
+ std::string strHex = HexStr(ssBlock.begin(), ssBlock.end());
+ return strHex;
+ }
+
return blockToJSON(block, pblockindex);
}