Closes #3534. Do not use APPROX_RELEASE_HEIGHT to get consensus branch
id when in regtest mode. Co-authored-by: Larry Ruane <larryruane@gmail.com>
This commit is contained in:
@@ -63,6 +63,7 @@ testScripts=(
|
|||||||
'rewind_index.py'
|
'rewind_index.py'
|
||||||
'p2p_txexpiry_dos.py'
|
'p2p_txexpiry_dos.py'
|
||||||
'p2p_node_bloom.py'
|
'p2p_node_bloom.py'
|
||||||
|
'regtest_signrawtransaction.py'
|
||||||
);
|
);
|
||||||
testScriptsExt=(
|
testScriptsExt=(
|
||||||
'getblocktemplate_longpoll.py'
|
'getblocktemplate_longpoll.py'
|
||||||
|
|||||||
34
qa/rpc-tests/regtest_signrawtransaction.py
Executable file
34
qa/rpc-tests/regtest_signrawtransaction.py
Executable file
@@ -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()
|
||||||
@@ -918,8 +918,11 @@ UniValue signrawtransaction(const UniValue& params, bool fHelp)
|
|||||||
bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE);
|
bool fHashSingle = ((nHashType & ~SIGHASH_ANYONECANPAY) == SIGHASH_SINGLE);
|
||||||
// Use the approximate release height if it is greater so offline nodes
|
// 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
|
// have a better estimation of the current height and will be more likely to
|
||||||
// determine the correct consensus branch ID.
|
// determine the correct consensus branch ID. Regtest mode ignores release height.
|
||||||
int chainHeight = std::max(chainActive.Height() + 1, APPROX_RELEASE_HEIGHT);
|
int chainHeight = chainActive.Height() + 1;
|
||||||
|
if (Params().NetworkIDString() != "regtest") {
|
||||||
|
chainHeight = std::max(chainHeight, APPROX_RELEASE_HEIGHT);
|
||||||
|
}
|
||||||
// Grab the current consensus branch ID
|
// Grab the current consensus branch ID
|
||||||
auto consensusBranchId = CurrentEpochBranchId(chainHeight, Params().GetConsensus());
|
auto consensusBranchId = CurrentEpochBranchId(chainHeight, Params().GetConsensus());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user