Do not allow users to get keys from keypool without reserving them
commitcf82a9e704f56d245cf512d76ba9d0e6b178f3b0
authorMatt Corallo <git@bluematt.me>
Mon, 10 Jul 2017 18:29:06 +0000 (10 14:29 -0400)
committerMatt Corallo <git@bluematt.me>
Tue, 18 Jul 2017 15:20:47 +0000 (18 11:20 -0400)
treefa413cbf28fae3f278a28a6ef72582930b9d50c6
parent7b6e8bc4424006119dc537699c8b3b3121e0b3c3
Do not allow users to get keys from keypool without reserving them

fundrawtransaction allows users to add a change output and then
not have it removed from keypool. While it would be nice to have
users follow the normal CreateTransaction/CommitTransaction process
we use internally, there isnt much benefit in exposing this option,
especially with HD wallets, while there is ample room for users to
misunderstand or misuse this option.

This could be particularly nasty in some use-cases (especially
pre-HD-split) - eg a user might fundrawtransaction, then call
getnewaddress, hand out the address for someone to pay them, then
sendrawtransaction. This may result in the user thinking they have
received payment, even though it was really just their own change!

This could obviously result in needless key-reuse.
src/wallet/rpcwallet.cpp
src/wallet/wallet.cpp
src/wallet/wallet.h
test/functional/fundrawtransaction.py