Page MenuHomePhabricator

[avalanche] Also finalize the ancestors of a transaction
AcceptedPublic

Authored by Fabien on Thu, Feb 27, 22:07.

Details

Reviewers
PiRK
Group Reviewers
Restricted Project
Summary

When avalanche finalizes a transaction, we want to make sure all the ancestors are final as well. This is a step toward using the radix tree of finalized transactions as a source for the block template.

Note that this diff does not add the ancestors to the list of the recently finalized items, this will be done in a later diff. This implies that the node could poll for the ancestors despite the child being final already.

Test Plan
ninja check-all

Diff Detail

Repository
rABC Bitcoin ABC
Branch
avalanche_tx_finalize_parents
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 32529
Build 64546: Build Difflint-circular-dependencies · build-without-wallet · build-diff · build-debug · build-clang-tidy · build-clang
Build 64545: arc lint + arc unit

Event Timeline

Tail of the build log:

-- Installing: /results/artifacts/include/secp256k1_preallocated.h
-- Installing: /results/artifacts/include/secp256k1_recovery.h
-- Installing: /results/artifacts/include/secp256k1_schnorr.h
[396/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[397/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[398/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[399/579] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[400/579] Linking C executable src/secp256k1/internal-bench
[401/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[402/579] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[403/579] Linking CXX executable src/bitcoin-cli
[404/579] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[405/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[406/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[407/579] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[408/579] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[409/579] Linking CXX executable src/bitcoin-tx
[410/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[411/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[412/579] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[413/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[414/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[415/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[416/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[417/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[418/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[419/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[420/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[421/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[422/579] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[423/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[424/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[425/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[426/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[427/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[428/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[429/579] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[430/579] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[431/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[432/579] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[433/579] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[434/579] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[435/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[436/579] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[437/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[438/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[439/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[440/579] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[441/579] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[442/579] Linking CXX executable src/iguana/iguana
[443/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[444/579] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[445/579] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[446/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[447/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[448/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[449/579] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[450/579] Linking CXX static library src/wallet/libwallet.a
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang failed with exit code 1

Tail of the build log:

[392/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[393/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[394/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[395/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[396/577] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[397/577] Linking CXX executable src/bitcoin-cli
[398/577] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[399/577] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[400/577] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[401/577] Linking C executable src/secp256k1/ecmult-bench
[402/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[403/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[404/577] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[405/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[406/577] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[407/577] Linking CXX executable src/bitcoin-tx
[408/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[409/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[410/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[411/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[412/577] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[413/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[414/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[415/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[416/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[417/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[418/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[419/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[420/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[421/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[422/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[423/577] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[424/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[425/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[426/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[427/577] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[428/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[429/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[430/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[431/577] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[432/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[433/577] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[434/577] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[435/577] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[436/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[437/577] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[438/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[439/577] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[440/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[441/577] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[442/577] Linking CXX executable src/iguana/iguana
[443/577] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[444/577] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[445/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[446/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[447/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[448/577] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[449/577] 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
Fabien published this revision for review.Fri, Feb 28, 11:28
PiRK added a subscriber: PiRK.
PiRK added inline comments.
test/functional/abc_p2p_avalanche_transaction_finalization.py
108–114 ↗(On Diff #52828)

I got confused because i initially thought the DAG direction was top to bottom. But the tx numbering should be enough to clarify the flow.

This revision is now accepted and ready to land.Fri, Feb 28, 13:44