Add new fee structure with all sub-fields denominated in BTC
This commit is contained in:
parent
3a8a4dc4a1
commit
7de1de7da4
3 changed files with 28 additions and 4 deletions
|
@ -70,6 +70,10 @@ RPC changes
|
||||||
/rest/block/ endpoints when in json mode. This is also included in `getblock`
|
/rest/block/ endpoints when in json mode. This is also included in `getblock`
|
||||||
(with verbosity=2), `listsinceblock`, `listtransactions`, and
|
(with verbosity=2), `listsinceblock`, `listtransactions`, and
|
||||||
`getrawtransaction` RPC commands.
|
`getrawtransaction` RPC commands.
|
||||||
|
- New `fees` field introduced in `getrawmempool`, `getmempoolancestors`, `getmempooldescendants` and
|
||||||
|
`getmempoolentry` when verbosity is set to `true` with sub-fields `ancestor`, `base`, `modified`
|
||||||
|
and `descendent` denominated in BTC. This new field deprecates previous fee fields, such as
|
||||||
|
`fee`, `modifiedfee`, `ancestorfee` and `descendentfee`.
|
||||||
|
|
||||||
External wallet files
|
External wallet files
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -360,17 +360,23 @@ UniValue getdifficulty(const JSONRPCRequest& request)
|
||||||
std::string EntryDescriptionString()
|
std::string EntryDescriptionString()
|
||||||
{
|
{
|
||||||
return " \"size\" : n, (numeric) virtual transaction size as defined in BIP 141. This is different from actual serialized size for witness transactions as witness data is discounted.\n"
|
return " \"size\" : n, (numeric) virtual transaction size as defined in BIP 141. This is different from actual serialized size for witness transactions as witness data is discounted.\n"
|
||||||
" \"fee\" : n, (numeric) transaction fee in " + CURRENCY_UNIT + "\n"
|
" \"fee\" : n, (numeric) transaction fee in " + CURRENCY_UNIT + " (DEPRECATED)\n"
|
||||||
" \"modifiedfee\" : n, (numeric) transaction fee with fee deltas used for mining priority\n"
|
" \"modifiedfee\" : n, (numeric) transaction fee with fee deltas used for mining priority (DEPRECATED)\n"
|
||||||
" \"time\" : n, (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT\n"
|
" \"time\" : n, (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT\n"
|
||||||
" \"height\" : n, (numeric) block height when transaction entered pool\n"
|
" \"height\" : n, (numeric) block height when transaction entered pool\n"
|
||||||
" \"descendantcount\" : n, (numeric) number of in-mempool descendant transactions (including this one)\n"
|
" \"descendantcount\" : n, (numeric) number of in-mempool descendant transactions (including this one)\n"
|
||||||
" \"descendantsize\" : n, (numeric) virtual transaction size of in-mempool descendants (including this one)\n"
|
" \"descendantsize\" : n, (numeric) virtual transaction size of in-mempool descendants (including this one)\n"
|
||||||
" \"descendantfees\" : n, (numeric) modified fees (see above) of in-mempool descendants (including this one)\n"
|
" \"descendantfees\" : n, (numeric) modified fees (see above) of in-mempool descendants (including this one) (DEPRECATED)\n"
|
||||||
" \"ancestorcount\" : n, (numeric) number of in-mempool ancestor transactions (including this one)\n"
|
" \"ancestorcount\" : n, (numeric) number of in-mempool ancestor transactions (including this one)\n"
|
||||||
" \"ancestorsize\" : n, (numeric) virtual transaction size of in-mempool ancestors (including this one)\n"
|
" \"ancestorsize\" : n, (numeric) virtual transaction size of in-mempool ancestors (including this one)\n"
|
||||||
" \"ancestorfees\" : n, (numeric) modified fees (see above) of in-mempool ancestors (including this one)\n"
|
" \"ancestorfees\" : n, (numeric) modified fees (see above) of in-mempool ancestors (including this one) (DEPRECATED)\n"
|
||||||
" \"wtxid\" : hash, (string) hash of serialized transaction, including witness data\n"
|
" \"wtxid\" : hash, (string) hash of serialized transaction, including witness data\n"
|
||||||
|
" \"fees\" : {\n"
|
||||||
|
" \"base\" : n, (numeric) transaction fee in " + CURRENCY_UNIT + "\n"
|
||||||
|
" \"modified\" : n, (numeric) transaction fee with fee deltas used for mining priority in " + CURRENCY_UNIT + "\n"
|
||||||
|
" \"ancestor\" : n, (numeric) modified fees (see above) of in-mempool ancestors (including this one) in " + CURRENCY_UNIT + "\n"
|
||||||
|
" \"descendent\" : n, (numeric) number of in-mempool ancestor transactions (including this one) in " + CURRENCY_UNIT + "\n"
|
||||||
|
" }\n"
|
||||||
" \"depends\" : [ (array) unconfirmed transactions used as inputs for this transaction\n"
|
" \"depends\" : [ (array) unconfirmed transactions used as inputs for this transaction\n"
|
||||||
" \"transactionid\", (string) parent transaction id\n"
|
" \"transactionid\", (string) parent transaction id\n"
|
||||||
" ... ]\n"
|
" ... ]\n"
|
||||||
|
@ -383,6 +389,13 @@ void entryToJSON(UniValue &info, const CTxMemPoolEntry &e)
|
||||||
{
|
{
|
||||||
AssertLockHeld(mempool.cs);
|
AssertLockHeld(mempool.cs);
|
||||||
|
|
||||||
|
UniValue fees(UniValue::VOBJ);
|
||||||
|
fees.pushKV("base", ValueFromAmount(e.GetFee()));
|
||||||
|
fees.pushKV("modified", ValueFromAmount(e.GetModifiedFee()));
|
||||||
|
fees.pushKV("ancestor", ValueFromAmount(e.GetModFeesWithAncestors()));
|
||||||
|
fees.pushKV("descendant", ValueFromAmount(e.GetModFeesWithDescendants()));
|
||||||
|
info.pushKV("fees", fees);
|
||||||
|
|
||||||
info.pushKV("size", (int)e.GetTxSize());
|
info.pushKV("size", (int)e.GetTxSize());
|
||||||
info.pushKV("fee", ValueFromAmount(e.GetFee()));
|
info.pushKV("fee", ValueFromAmount(e.GetFee()));
|
||||||
info.pushKV("modifiedfee", ValueFromAmount(e.GetModifiedFee()));
|
info.pushKV("modifiedfee", ValueFromAmount(e.GetModifiedFee()));
|
||||||
|
|
|
@ -70,7 +70,10 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
assert_equal(mempool[x]['descendantcount'], descendant_count)
|
assert_equal(mempool[x]['descendantcount'], descendant_count)
|
||||||
descendant_fees += mempool[x]['fee']
|
descendant_fees += mempool[x]['fee']
|
||||||
assert_equal(mempool[x]['modifiedfee'], mempool[x]['fee'])
|
assert_equal(mempool[x]['modifiedfee'], mempool[x]['fee'])
|
||||||
|
assert_equal(mempool[x]['fees']['base'], mempool[x]['fee'])
|
||||||
|
assert_equal(mempool[x]['fees']['modified'], mempool[x]['modifiedfee'])
|
||||||
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN)
|
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN)
|
||||||
|
assert_equal(mempool[x]['fees']['descendant'], descendant_fees)
|
||||||
descendant_size += mempool[x]['size']
|
descendant_size += mempool[x]['size']
|
||||||
assert_equal(mempool[x]['descendantsize'], descendant_size)
|
assert_equal(mempool[x]['descendantsize'], descendant_size)
|
||||||
descendant_count += 1
|
descendant_count += 1
|
||||||
|
@ -132,6 +135,7 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
ancestor_fees = 0
|
ancestor_fees = 0
|
||||||
for x in chain:
|
for x in chain:
|
||||||
ancestor_fees += mempool[x]['fee']
|
ancestor_fees += mempool[x]['fee']
|
||||||
|
assert_equal(mempool[x]['fees']['ancestor'], ancestor_fees + Decimal('0.00001'))
|
||||||
assert_equal(mempool[x]['ancestorfees'], ancestor_fees * COIN + 1000)
|
assert_equal(mempool[x]['ancestorfees'], ancestor_fees * COIN + 1000)
|
||||||
|
|
||||||
# Undo the prioritisetransaction for later tests
|
# Undo the prioritisetransaction for later tests
|
||||||
|
@ -145,6 +149,7 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
descendant_fees = 0
|
descendant_fees = 0
|
||||||
for x in reversed(chain):
|
for x in reversed(chain):
|
||||||
descendant_fees += mempool[x]['fee']
|
descendant_fees += mempool[x]['fee']
|
||||||
|
assert_equal(mempool[x]['fees']['descendant'], descendant_fees + Decimal('0.00001'))
|
||||||
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN + 1000)
|
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN + 1000)
|
||||||
|
|
||||||
# Adding one more transaction on to the chain should fail.
|
# Adding one more transaction on to the chain should fail.
|
||||||
|
@ -170,7 +175,9 @@ class MempoolPackagesTest(BitcoinTestFramework):
|
||||||
descendant_fees += mempool[x]['fee']
|
descendant_fees += mempool[x]['fee']
|
||||||
if (x == chain[-1]):
|
if (x == chain[-1]):
|
||||||
assert_equal(mempool[x]['modifiedfee'], mempool[x]['fee']+satoshi_round(0.00002))
|
assert_equal(mempool[x]['modifiedfee'], mempool[x]['fee']+satoshi_round(0.00002))
|
||||||
|
assert_equal(mempool[x]['fees']['modified'], mempool[x]['fee']+satoshi_round(0.00002))
|
||||||
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN + 2000)
|
assert_equal(mempool[x]['descendantfees'], descendant_fees * COIN + 2000)
|
||||||
|
assert_equal(mempool[x]['fees']['descendant'], descendant_fees+satoshi_round(0.00002))
|
||||||
|
|
||||||
# TODO: check that node1's mempool is as expected
|
# TODO: check that node1's mempool is as expected
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue