Page MenuHomePhabricator

policy / validation: CPFP fee bumping within packages
ClosedPublic

Authored by Fabien on Jun 26 2024, 17:20.

Details

Reviewers
roqqit
Group Reviewers
Restricted Project
Commits
rABC49dae317c8eb: policy / validation: CPFP fee bumping within packages
Summary
This enables CPFP fee bumping in child-with-unconfirmed-parents packages by introducing package feerate (total modified fees divided by total virtual size) and using it in place of individual feerate. We also always validate individual transactions first to avoid incentive-incompatible policies like "parents pay for children" or "siblings pay for siblings" behavior.

Backport of core#24152.

Test Plan
ninja all check-all

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Fabien requested review of this revision.Jun 26 2024, 17:20

Tail of the build log:

[383/567] Creating library symlink src/libbitcoinconsensus.so.0 src/libbitcoinconsensus.so
[384/567] Linking C executable src/secp256k1/recover-bench
[385/567] Linking C executable src/secp256k1/ecmult-bench
[386/567] Linking C executable src/secp256k1/verify-bench
[387/567] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[388/567] Linking C executable src/secp256k1/sign-bench
[389/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[390/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[391/567] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[392/567] Linking C executable src/secp256k1/internal-bench
[393/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[394/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[395/567] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[396/567] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[397/567] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[398/567] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[399/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[400/567] Linking CXX executable src/bitcoin-cli
[401/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[402/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[403/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[404/567] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[405/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[406/567] Linking CXX executable src/bitcoin-tx
[407/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[408/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[409/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[410/567] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[411/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[412/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[413/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[414/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[415/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[416/567] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[417/567] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[418/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[419/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[420/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[421/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[422/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[423/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[424/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[425/567] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[426/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[427/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[428/567] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[429/567] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[430/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[431/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[432/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[433/567] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[434/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[435/567] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[436/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[437/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[438/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[439/567] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[440/567] Linking CXX static library src/wallet/libwallet.a
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1
roqqit requested changes to this revision.Jun 26 2024, 17:53
roqqit added a subscriber: roqqit.

Back to you for clang-tidy. Looks good otherwise.

This revision now requires changes to proceed.Jun 26 2024, 17:53
This revision is now accepted and ready to land.Jun 26 2024, 19:47