]> Git Repo - VerusCoin.git/commitdiff
Closes #3534. Do not use APPROX_RELEASE_HEIGHT to get consensus branch
authorSimon <[email protected]>
Fri, 21 Sep 2018 18:10:15 +0000 (11:10 -0700)
committerSimon <[email protected]>
Fri, 21 Sep 2018 18:10:15 +0000 (11:10 -0700)
id when in regtest mode.

Co-authored-by: Larry Ruane <[email protected]>
qa/pull-tester/rpc-tests.sh
qa/rpc-tests/regtest_signrawtransaction.py [new file with mode: 0755]
src/rpc/rawtransaction.cpp

index 301b822b82956e1f69b1edcd99712a83602b47d7..1f25465fa9963a898b446bf533de129d211a3663 100755 (executable)
@@ -63,6 +63,7 @@ testScripts=(
     'rewind_index.py'
     'p2p_txexpiry_dos.py'
     'p2p_node_bloom.py'
+    'regtest_signrawtransaction.py'
 );
 testScriptsExt=(
     'getblocktemplate_longpoll.py'
diff --git a/qa/rpc-tests/regtest_signrawtransaction.py b/qa/rpc-tests/regtest_signrawtransaction.py
new file mode 100755 (executable)
index 0000000..2e02736
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/env python2
+# Copyright (c) 2018 The Zcash developers
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+from test_framework.test_framework import BitcoinTestFramework
+from test_framework.util import start_nodes, wait_and_assert_operationid_status
+
+class RegtestSignrawtransactionTest (BitcoinTestFramework):
+
+    def setup_nodes(self):
+        return start_nodes(4, self.options.tmpdir, [[
+            "-nuparams=5ba81b19:200", # Overwinter
+            "-nuparams=76b809bb:204", # Sapling
+        ]] * 4)
+
+    def run_test(self):
+        self.nodes[0].generate(1)
+        self.sync_all()
+        taddr = self.nodes[1].getnewaddress()
+        zaddr1 = self.nodes[1].z_getnewaddress('sprout')
+
+        self.nodes[0].sendtoaddress(taddr, 2.0)
+        self.nodes[0].generate(1)
+        self.sync_all()
+
+        # Create and sign Overwinter transaction.
+        # If the incorrect consensus branch id is selected, there will be a signing error. 
+        opid = self.nodes[1].z_sendmany(taddr,
+            [{'address': zaddr1, 'amount': 1}])
+        wait_and_assert_operationid_status(self.nodes[1], opid)
+
+if __name__ == '__main__':
+    RegtestSignrawtransactionTest().main()
index 242403b19a623d47d4a214e644975cfac76f2a19..7d3dcc705d6583075020eb0340dfbcd98a7e04b3 100644 (file)
@@ -918,8 +918,11 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp)
     bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE);
     // Use the approximate release height if it is greater so offline nodes 
     // have a better estimation of the current height and will be more likely to
-    // determine the correct consensus branch ID.
-    int chainHeight = std::max(chainActive.Height() + 1, APPROX_RELEASE_HEIGHT);
+    // determine the correct consensus branch ID.  Regtest mode ignores release height.
+    int chainHeight = chainActive.Height() + 1;
+    if (Params().NetworkIDString() != "regtest") {
+        chainHeight = std::max(chainHeight, APPROX_RELEASE_HEIGHT);
+    }
     // Grab the current consensus branch ID
     auto consensusBranchId = CurrentEpochBranchId(chainHeight, Params().GetConsensus());
 
This page took 0.032623 seconds and 4 git commands to generate.