Merge #13160: wallet: Unlock spent outputs
fd9b3a7182
test: Output should be unlocked when spent (João Barbosa)54c3bb4cf8
wallet: Unlock spent outputs (João Barbosa) Pull request description: Fixes #12738. Tree-SHA512: 2c1694727aea0c658d07566c7d11d7afe91218053f84d568fac97413348fa5a977243d6cdeebd1c6550816489e35cb3a31667c8354d9b350de99f979d641d605
This commit is contained in:
commit
868cf431be
2 changed files with 11 additions and 0 deletions
|
@ -609,6 +609,8 @@ void CWallet::AddToSpends(const COutPoint& outpoint, const uint256& wtxid)
|
|||
{
|
||||
mapTxSpends.insert(std::make_pair(outpoint, wtxid));
|
||||
|
||||
setLockedCoins.erase(outpoint);
|
||||
|
||||
std::pair<TxSpends::iterator, TxSpends::iterator> range;
|
||||
range = mapTxSpends.equal_range(outpoint);
|
||||
SyncMetaData(range);
|
||||
|
|
|
@ -129,6 +129,15 @@ class WalletTest(BitcoinTestFramework):
|
|||
self.nodes[2].lockunspent, False,
|
||||
[{"txid": unspent_0["txid"], "vout": 999}])
|
||||
|
||||
# An output should be unlocked when spent
|
||||
unspent_0 = self.nodes[1].listunspent()[0]
|
||||
self.nodes[1].lockunspent(False, [unspent_0])
|
||||
tx = self.nodes[1].createrawtransaction([unspent_0], { self.nodes[1].getnewaddress() : 1 })
|
||||
tx = self.nodes[1].fundrawtransaction(tx)['hex']
|
||||
tx = self.nodes[1].signrawtransactionwithwallet(tx)["hex"]
|
||||
self.nodes[1].sendrawtransaction(tx)
|
||||
assert_equal(len(self.nodes[1].listlockunspent()), 0)
|
||||
|
||||
# Have node1 generate 100 blocks (so node0 can recover the fee)
|
||||
self.nodes[1].generate(100)
|
||||
self.sync_all([self.nodes[0:3]])
|
||||
|
|
Loading…
Reference in a new issue