/
githubmirror
/
bitcoin
Обзор
Документация
Войти
/
githubmirror
/
bitcoin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/bench/block_assemble.cpp
74 строки
2 KB
Hennadii Stepanov
iwyu: Fix warnings in `src/bench` and treat them as error
10 июн 2026, 12:32
Не верифицирован
10 июн 2026, 12:32
6751a32
Код
Авторство
О чём код?
// Copyright (c) 2011-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include <bench/bench.h> #include <consensus/consensus.h> #include <node/mining_types.h> #include <primitives/transaction.h> #include <random.h> #include <script/script.h> #include <sync.h> #include <test/util/mining.h> #include <test/util/script.h> #include <test/util/setup_common.h> #include <util/check.h> #include <validation.h> #include <array> #include <cstddef> #include <memory> #include <vector> using node::BlockCreateOptions; static void AssembleBlock(benchmark::Bench& bench) { const auto test_setup = MakeNoLogFileContext<const TestingSetup>(); CScriptWitness witness; witness.stack.push_back(WITNESS_STACK_ELEM_OP_TRUE); BlockCreateOptions options{ .coinbase_output_script = P2WSH_OP_TRUE, }; // Collect some loose transactions that spend the coinbases of our mined blocks constexpr size_t NUM_BLOCKS{200}; std::array<CTransactionRef, NUM_BLOCKS - COINBASE_MATURITY + 1> txs; for (size_t b{0}; b < NUM_BLOCKS; ++b) { CMutableTransaction tx; tx.vin.emplace_back(MineBlock(test_setup->m_node, options)); tx.vin.back().scriptWitness = witness; tx.vout.emplace_back(1337, P2WSH_OP_TRUE); if (NUM_BLOCKS - b >= COINBASE_MATURITY) txs.at(b) = MakeTransactionRef(tx); } { LOCK(::cs_main); for (const auto& txr : txs) { const MempoolAcceptResult res = test_setup->m_node.chainman->ProcessTransaction(txr); assert(res.m_result_type == MempoolAcceptResult::ResultType::VALID); } } bench.run([&] { PrepareBlock(test_setup->m_node, options); }); } static void BlockAssemblerAddPackageTxns(benchmark::Bench& bench) { FastRandomContext det_rand{true}; auto testing_setup{MakeNoLogFileContext<TestChain100Setup>()}; testing_setup->PopulateMempool(det_rand, /*num_transactions=*/1000, /*submit=*/true); bench.run([&] { PrepareBlock(testing_setup->m_node, { .coinbase_output_script = P2WSH_OP_TRUE, .test_block_validity = false }); }); } BENCHMARK(AssembleBlock); BENCHMARK(BlockAssemblerAddPackageTxns);