Skip to content

Commit fa2247a

Browse files
author
MacroFake
committed
refactor: Make CTransaction constructor explicit
It involves calculating two hashes, so the performance impact should be made explicit. Also, add the module to iwyu.
1 parent f27d5f6 commit fa2247a

File tree

4 files changed

+30
-16
lines changed

4 files changed

+30
-16
lines changed

ci/test/06_script_b.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ if [ "${RUN_TIDY}" = "true" ]; then
4747
" src/policy/feerate.cpp"\
4848
" src/policy/packages.cpp"\
4949
" src/policy/settings.cpp"\
50+
" src/primitives/transaction.cpp"\
5051
" src/rpc/fees.cpp"\
5152
" src/rpc/signmessage.cpp"\
5253
" src/test/fuzz/txorphan.cpp"\

src/primitives/transaction.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@
77

88
#include <consensus/amount.h>
99
#include <hash.h>
10+
#include <script/script.h>
11+
#include <serialize.h>
1012
#include <tinyformat.h>
13+
#include <uint256.h>
1114
#include <util/strencodings.h>
15+
#include <version.h>
1216

13-
#include <assert.h>
17+
#include <cassert>
18+
#include <stdexcept>
1419

1520
std::string COutPoint::ToString() const
1621
{

src/primitives/transaction.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,21 @@
66
#ifndef BITCOIN_PRIMITIVES_TRANSACTION_H
77
#define BITCOIN_PRIMITIVES_TRANSACTION_H
88

9-
#include <stdint.h>
109
#include <consensus/amount.h>
10+
#include <prevector.h>
1111
#include <script/script.h>
1212
#include <serialize.h>
1313
#include <uint256.h>
1414

15+
#include <cstddef>
16+
#include <cstdint>
17+
#include <ios>
18+
#include <limits>
19+
#include <memory>
20+
#include <string>
1521
#include <tuple>
22+
#include <utility>
23+
#include <vector>
1624

1725
/**
1826
* A flag that is ORed into the protocol version to designate that a transaction
@@ -303,7 +311,7 @@ class CTransaction
303311
public:
304312
/** Convert a CMutableTransaction into a CTransaction. */
305313
explicit CTransaction(const CMutableTransaction& tx);
306-
CTransaction(CMutableTransaction&& tx);
314+
explicit CTransaction(CMutableTransaction&& tx);
307315

308316
template <typename Stream>
309317
inline void Serialize(Stream& s) const {
@@ -368,7 +376,7 @@ struct CMutableTransaction
368376
int32_t nVersion;
369377
uint32_t nLockTime;
370378

371-
CMutableTransaction();
379+
explicit CMutableTransaction();
372380
explicit CMutableTransaction(const CTransaction& tx);
373381

374382
template <typename Stream>

src/test/script_tests.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1514,8 +1514,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_returns_true)
15141514
CScriptWitness wit;
15151515

15161516
scriptPubKey << OP_1;
1517-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1518-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1517+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1518+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
15191519

15201520
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
15211521
stream << spendTx;
@@ -1537,8 +1537,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_tx_index_err)
15371537
CScriptWitness wit;
15381538

15391539
scriptPubKey << OP_EQUAL;
1540-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1541-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1540+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1541+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
15421542

15431543
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
15441544
stream << spendTx;
@@ -1560,8 +1560,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_tx_size)
15601560
CScriptWitness wit;
15611561

15621562
scriptPubKey << OP_EQUAL;
1563-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1564-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1563+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1564+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
15651565

15661566
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
15671567
stream << spendTx;
@@ -1583,8 +1583,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_tx_serialization)
15831583
CScriptWitness wit;
15841584

15851585
scriptPubKey << OP_EQUAL;
1586-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1587-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1586+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1587+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
15881588

15891589
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
15901590
stream << 0xffffffff;
@@ -1606,8 +1606,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_amount_required_err)
16061606
CScriptWitness wit;
16071607

16081608
scriptPubKey << OP_EQUAL;
1609-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1610-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1609+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1610+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
16111611

16121612
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
16131613
stream << spendTx;
@@ -1629,8 +1629,8 @@ BOOST_AUTO_TEST_CASE(bitcoinconsensus_verify_script_invalid_flags)
16291629
CScriptWitness wit;
16301630

16311631
scriptPubKey << OP_EQUAL;
1632-
CTransaction creditTx = BuildCreditingTransaction(scriptPubKey, 1);
1633-
CTransaction spendTx = BuildSpendingTransaction(scriptSig, wit, creditTx);
1632+
CTransaction creditTx{BuildCreditingTransaction(scriptPubKey, 1)};
1633+
CTransaction spendTx{BuildSpendingTransaction(scriptSig, wit, creditTx)};
16341634

16351635
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
16361636
stream << spendTx;

0 commit comments

Comments
 (0)