[RPC] createrawtransaction: add option to set the sequence number per input
This commit is contained in:
parent
08b37c5e06
commit
a946bb6b18
2 changed files with 13 additions and 0 deletions
|
@ -137,5 +137,11 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
assert_equal(self.nodes[0].getbalance(), bal+Decimal('50.00000000')+Decimal('2.19000000')) #block reward + tx
|
assert_equal(self.nodes[0].getbalance(), bal+Decimal('50.00000000')+Decimal('2.19000000')) #block reward + tx
|
||||||
|
|
||||||
|
inputs = [ {'txid' : "1d1d4e24ed99057e84c3f80fd8fbec79ed9e1acee37da269356ecea000000000", 'vout' : 1, 'sequence' : 1000}]
|
||||||
|
outputs = { self.nodes[0].getnewaddress() : 1 }
|
||||||
|
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
|
||||||
|
decrawtx= self.nodes[0].decoderawtransaction(rawtx)
|
||||||
|
assert_equal(decrawtx['vin'][0]['sequence'], 1000)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
RawTransactionsTest().main()
|
RawTransactionsTest().main()
|
||||||
|
|
|
@ -334,6 +334,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
|
||||||
" {\n"
|
" {\n"
|
||||||
" \"txid\":\"id\", (string, required) The transaction id\n"
|
" \"txid\":\"id\", (string, required) The transaction id\n"
|
||||||
" \"vout\":n (numeric, required) The output number\n"
|
" \"vout\":n (numeric, required) The output number\n"
|
||||||
|
" \"sequence\":n (numeric, optional) The sequence number\n"
|
||||||
" }\n"
|
" }\n"
|
||||||
" ,...\n"
|
" ,...\n"
|
||||||
" ]\n"
|
" ]\n"
|
||||||
|
@ -384,6 +385,12 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, vout must be positive");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid parameter, vout must be positive");
|
||||||
|
|
||||||
uint32_t nSequence = (rawTx.nLockTime ? std::numeric_limits<uint32_t>::max() - 1 : std::numeric_limits<uint32_t>::max());
|
uint32_t nSequence = (rawTx.nLockTime ? std::numeric_limits<uint32_t>::max() - 1 : std::numeric_limits<uint32_t>::max());
|
||||||
|
|
||||||
|
// set the sequence number if passed in the parameters object
|
||||||
|
const UniValue& sequenceObj = find_value(o, "sequence");
|
||||||
|
if (sequenceObj.isNum())
|
||||||
|
nSequence = sequenceObj.get_int();
|
||||||
|
|
||||||
CTxIn in(COutPoint(txid, nOutput), CScript(), nSequence);
|
CTxIn in(COutPoint(txid, nOutput), CScript(), nSequence);
|
||||||
|
|
||||||
rawTx.vin.push_back(in);
|
rawTx.vin.push_back(in);
|
||||||
|
|
Loading…
Add table
Reference in a new issue