From 25c13ef7026df9befc768b8eca81dcd685a53b34 Mon Sep 17 00:00:00 2001 From: Eirik Ogilvie-Wigley Date: Fri, 1 Jun 2018 15:47:30 -0600 Subject: [PATCH] Add hashFinalSaplingRoot to getblocktemplate --- qa/rpc-tests/getblocktemplate.py | 11 ++++++++--- src/rpcmining.cpp | 6 ++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/qa/rpc-tests/getblocktemplate.py b/qa/rpc-tests/getblocktemplate.py index 82082afa9..af050110e 100755 --- a/qa/rpc-tests/getblocktemplate.py +++ b/qa/rpc-tests/getblocktemplate.py @@ -4,8 +4,8 @@ # file COPYING or http://www.opensource.org/licenses/mit-license.php. from test_framework.test_framework import BitcoinTestFramework -from test_framework.util import initialize_chain_clean, start_nodes, \ - connect_nodes_bi +from test_framework.util import assert_equal, connect_nodes_bi, \ + initialize_chain_clean, start_nodes class GetBlockTemplateTest(BitcoinTestFramework): @@ -49,11 +49,16 @@ class GetBlockTemplateTest(BitcoinTestFramework): # Test 5: General checks tmpl = node.getblocktemplate() - assert(len(tmpl['noncerange']) == 16) + assert_equal(16, len(tmpl['noncerange'])) # Test 6: coinbasetxn checks assert('foundersreward' in tmpl['coinbasetxn']) assert(tmpl['coinbasetxn']['required']) + # Test 7: hashFinalSaplingRoot checks + assert('finalsaplingroothash' in tmpl) + finalsaplingroothash = '3e49b5f954aa9d3545bc6c37744661eea48d7c34e3000d82b7f0010c30f4c2fb' + assert_equal(finalsaplingroothash, tmpl['finalsaplingroothash']) + if __name__ == '__main__': GetBlockTemplateTest().main() diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index 83ba5715d..4e50fb067 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -447,9 +447,10 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp) "\nResult:\n" "{\n" - " \"version\" : n, (numeric) The block version\n" + " \"version\" : n, (numeric) The block version\n" " \"previousblockhash\" : \"xxxx\", (string) The hash of current highest block\n" - " \"transactions\" : [ (array) contents of non-coinbase transactions that should be included in the next block\n" + " \"finalsaplingroothash\" : \"xxxx\", (string) The hash of the final sapling root\n" + " \"transactions\" : [ (array) contents of non-coinbase transactions that should be included in the next block\n" " {\n" " \"data\" : \"xxxx\", (string) transaction data encoded in hexadecimal (byte-for-byte)\n" " \"hash\" : \"xxxx\", (string) hash/id encoded in little-endian hexadecimal\n" @@ -706,6 +707,7 @@ UniValue getblocktemplate(const UniValue& params, bool fHelp) result.push_back(Pair("capabilities", aCaps)); result.push_back(Pair("version", pblock->nVersion)); result.push_back(Pair("previousblockhash", pblock->hashPrevBlock.GetHex())); + result.push_back(Pair("finalsaplingroothash", pblock->hashFinalSaplingRoot.GetHex())); result.push_back(Pair("transactions", transactions)); if (coinbasetxn) { assert(txCoinbase.isObject());