Use fee/priority estimates in wallet CreateTransaction
The wallet now uses the mempool fee estimator with a new
command-line option: -txconfirmtarget (default: 1) instead
of using hard-coded fees or priorities.
A new bitcoind that hasn't seen enough transactions to estimate
will fall back to the old hard-coded minimum priority or
transaction fee.
-paytxfee option overrides -txconfirmtarget.
Relaying and mining code isn't changed.
For Qt, the coin control dialog now uses priority estimates to
label transaction priority (instead of hard-coded constants);
unspent outputs were consistently labeled with a much higher
priority than is justified by the free transactions actually
being accepted into blocks.
I did not implement any GUI for setting -txconfirmtarget; I would
suggest getting rid of the "Pay transaction fee" GUI and replace
it with either "target number of confirmations" or maybe
a "faster confirmation <--> lower fee" slider or select box.
strUsage+=" -disablewallet "+_("Do not load the wallet and disable wallet RPC calls")+"\n";
strUsage+=" -disablewallet "+_("Do not load the wallet and disable wallet RPC calls")+"\n";
strUsage+=" -paytxfee=<amt> "+strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"),FormatMoney(payTxFee.GetFeePerK()))+"\n";
strUsage+=" -paytxfee=<amt> "+strprintf(_("Fee (in BTC/kB) to add to transactions you send (default: %s)"),FormatMoney(payTxFee.GetFeePerK()))+"\n";
strUsage+=" -txconfirmtarget=<n> "+_("If paytxfee is not set, include enough fee so transactions are confirmed on average within n blocks (default: 1)")+"\n";
strUsage+=" -rescan "+_("Rescan the block chain for missing wallet transactions")+""+_("on startup")+"\n";
strUsage+=" -rescan "+_("Rescan the block chain for missing wallet transactions")+""+_("on startup")+"\n";
strUsage+=" -salvagewallet "+_("Attempt to recover private keys from a corrupt wallet.dat")+""+_("on startup")+"\n";
strUsage+=" -salvagewallet "+_("Attempt to recover private keys from a corrupt wallet.dat")+""+_("on startup")+"\n";
strUsage+=" -spendzeroconfchange "+_("Spend unconfirmed change when sending transactions (default: 1)")+"\n";
strUsage+=" -spendzeroconfchange "+_("Spend unconfirmed change when sending transactions (default: 1)")+"\n";
dPriority=dPriorityInputs/(nBytes-nBytesInputs+(nQuantityUncompressed*29));// 29 = 180 - 151 (uncompressed public keys are over the limit. max 151 bytes of the input are ignored for priority)
dPriority=dPriorityInputs/(nBytes-nBytesInputs+(nQuantityUncompressed*29));// 29 = 180 - 151 (uncompressed public keys are over the limit. max 151 bytes of the input are ignored for priority)