refactor: VectorWriter without nVersion

The field is unused, so remove it.

This is also required for future commits.
This commit is contained in:
MarcoFalke 2023-11-16 12:59:43 +01:00
parent 98b0acda0f
commit fa0ed07941
No known key found for this signature in database
9 changed files with 33 additions and 43 deletions

View File

@ -81,7 +81,7 @@ GCSFilter::GCSFilter(const Params& params, const ElementSet& elements)
} }
m_F = static_cast<uint64_t>(m_N) * static_cast<uint64_t>(m_params.m_M); m_F = static_cast<uint64_t>(m_N) * static_cast<uint64_t>(m_params.m_M);
CVectorWriter stream(GCS_SER_VERSION, m_encoded, 0); VectorWriter stream{m_encoded, 0};
WriteCompactSize(stream, m_N); WriteCompactSize(stream, m_N);
@ -89,7 +89,7 @@ GCSFilter::GCSFilter(const Params& params, const ElementSet& elements)
return; return;
} }
BitStreamWriter<CVectorWriter> bitwriter(stream); BitStreamWriter bitwriter{stream};
uint64_t last_value = 0; uint64_t last_value = 0;
for (uint64_t value : BuildHashedSet(elements)) { for (uint64_t value : BuildHashedSet(elements)) {

View File

@ -818,7 +818,7 @@ bool V1Transport::SetMessageToSend(CSerializedNetMsg& msg) noexcept
// serialize header // serialize header
m_header_to_send.clear(); m_header_to_send.clear();
CVectorWriter{INIT_PROTO_VERSION, m_header_to_send, 0, hdr}; VectorWriter{m_header_to_send, 0, hdr};
// update state // update state
m_message_to_send = std::move(msg); m_message_to_send = std::move(msg);

View File

@ -12,14 +12,14 @@
class CNetMsgMaker class CNetMsgMaker
{ {
public: public:
explicit CNetMsgMaker(int nVersionIn) : nVersion(nVersionIn){} explicit CNetMsgMaker(int /*unused*/) {}
template <typename... Args> template <typename... Args>
CSerializedNetMsg Make(int nFlags, std::string msg_type, Args&&... args) const CSerializedNetMsg Make(int /*unused*/, std::string msg_type, Args&&... args) const
{ {
CSerializedNetMsg msg; CSerializedNetMsg msg;
msg.m_type = std::move(msg_type); msg.m_type = std::move(msg_type);
CVectorWriter{nFlags | nVersion, msg.data, 0, std::forward<Args>(args)...}; VectorWriter{msg.data, 0, std::forward<Args>(args)...};
return msg; return msg;
} }
@ -28,9 +28,6 @@ public:
{ {
return Make(0, std::move(msg_type), std::forward<Args>(args)...); return Make(0, std::move(msg_type), std::forward<Args>(args)...);
} }
private:
const int nVersion;
}; };
#endif // BITCOIN_NETMESSAGEMAKER_H #endif // BITCOIN_NETMESSAGEMAKER_H

View File

@ -316,7 +316,7 @@ struct PSBTInput
const auto& [leaf_hashes, origin] = leaf_origin; const auto& [leaf_hashes, origin] = leaf_origin;
SerializeToVector(s, PSBT_IN_TAP_BIP32_DERIVATION, xonly); SerializeToVector(s, PSBT_IN_TAP_BIP32_DERIVATION, xonly);
std::vector<unsigned char> value; std::vector<unsigned char> value;
CVectorWriter s_value{s.GetVersion(), value, 0}; VectorWriter s_value{value, 0};
s_value << leaf_hashes; s_value << leaf_hashes;
SerializeKeyOrigin(s_value, origin); SerializeKeyOrigin(s_value, origin);
s << value; s << value;
@ -757,7 +757,7 @@ struct PSBTOutput
if (!m_tap_tree.empty()) { if (!m_tap_tree.empty()) {
SerializeToVector(s, PSBT_OUT_TAP_TREE); SerializeToVector(s, PSBT_OUT_TAP_TREE);
std::vector<unsigned char> value; std::vector<unsigned char> value;
CVectorWriter s_value{s.GetVersion(), value, 0}; VectorWriter s_value{value, 0};
for (const auto& [depth, leaf_ver, script] : m_tap_tree) { for (const auto& [depth, leaf_ver, script] : m_tap_tree) {
s_value << depth; s_value << depth;
s_value << leaf_ver; s_value << leaf_ver;
@ -771,7 +771,7 @@ struct PSBTOutput
const auto& [leaf_hashes, origin] = leaf; const auto& [leaf_hashes, origin] = leaf;
SerializeToVector(s, PSBT_OUT_TAP_BIP32_DERIVATION, xonly); SerializeToVector(s, PSBT_OUT_TAP_BIP32_DERIVATION, xonly);
std::vector<unsigned char> value; std::vector<unsigned char> value;
CVectorWriter s_value{s.GetVersion(), value, 0}; VectorWriter s_value{value, 0};
s_value << leaf_hashes; s_value << leaf_hashes;
SerializeKeyOrigin(s_value, origin); SerializeKeyOrigin(s_value, origin);
s << value; s << value;

View File

@ -110,7 +110,7 @@ std::optional<SignetTxs> SignetTxs::Create(const CBlock& block, const CScript& c
uint256 signet_merkle = ComputeModifiedMerkleRoot(modified_cb, block); uint256 signet_merkle = ComputeModifiedMerkleRoot(modified_cb, block);
std::vector<uint8_t> block_data; std::vector<uint8_t> block_data;
CVectorWriter writer{INIT_PROTO_VERSION, block_data, 0}; VectorWriter writer{block_data, 0};
writer << block.nVersion; writer << block.nVersion;
writer << block.hashPrevBlock; writer << block.hashPrevBlock;
writer << signet_merkle; writer << signet_merkle;

View File

@ -49,17 +49,15 @@ inline void Xor(Span<std::byte> write, Span<const std::byte> key, size_t key_off
* *
* The referenced vector will grow as necessary * The referenced vector will grow as necessary
*/ */
class CVectorWriter class VectorWriter
{ {
public: public:
/* /*
* @param[in] nVersionIn Serialization Version (including any flags)
* @param[in] vchDataIn Referenced byte vector to overwrite/append * @param[in] vchDataIn Referenced byte vector to overwrite/append
* @param[in] nPosIn Starting position. Vector index where writes should start. The vector will initially * @param[in] nPosIn Starting position. Vector index where writes should start. The vector will initially
* grow as necessary to max(nPosIn, vec.size()). So to append, use vec.size(). * grow as necessary to max(nPosIn, vec.size()). So to append, use vec.size().
*/ */
CVectorWriter(int nVersionIn, std::vector<unsigned char>& vchDataIn, size_t nPosIn) : nVersion{nVersionIn}, vchData{vchDataIn}, nPos{nPosIn} VectorWriter(std::vector<unsigned char>& vchDataIn, size_t nPosIn) : vchData{vchDataIn}, nPos{nPosIn}
{ {
if(nPos > vchData.size()) if(nPos > vchData.size())
vchData.resize(nPos); vchData.resize(nPos);
@ -69,7 +67,7 @@ class CVectorWriter
* @param[in] args A list of items to serialize starting at nPosIn. * @param[in] args A list of items to serialize starting at nPosIn.
*/ */
template <typename... Args> template <typename... Args>
CVectorWriter(int nVersionIn, std::vector<unsigned char>& vchDataIn, size_t nPosIn, Args&&... args) : CVectorWriter{nVersionIn, vchDataIn, nPosIn} VectorWriter(std::vector<unsigned char>& vchDataIn, size_t nPosIn, Args&&... args) : VectorWriter{vchDataIn, nPosIn}
{ {
::SerializeMany(*this, std::forward<Args>(args)...); ::SerializeMany(*this, std::forward<Args>(args)...);
} }
@ -85,19 +83,14 @@ class CVectorWriter
} }
nPos += src.size(); nPos += src.size();
} }
template<typename T> template <typename T>
CVectorWriter& operator<<(const T& obj) VectorWriter& operator<<(const T& obj)
{ {
::Serialize(*this, obj); ::Serialize(*this, obj);
return (*this); return (*this);
} }
int GetVersion() const
{
return nVersion;
}
private: private:
const int nVersion;
std::vector<unsigned char>& vchData; std::vector<unsigned char>& vchData;
size_t nPos; size_t nPos;
}; };

View File

@ -51,9 +51,9 @@ FUZZ_TARGET(golomb_rice)
for (int i = 0; i < n; ++i) { for (int i = 0; i < n; ++i) {
elements.insert(ConsumeRandomLengthByteVector(fuzzed_data_provider, 16)); elements.insert(ConsumeRandomLengthByteVector(fuzzed_data_provider, 16));
} }
CVectorWriter stream{0, golomb_rice_data, 0}; VectorWriter stream{golomb_rice_data, 0};
WriteCompactSize(stream, static_cast<uint32_t>(elements.size())); WriteCompactSize(stream, static_cast<uint32_t>(elements.size()));
BitStreamWriter<CVectorWriter> bitwriter(stream); BitStreamWriter bitwriter{stream};
if (!elements.empty()) { if (!elements.empty()) {
uint64_t last_value = 0; uint64_t last_value = 0;
for (const uint64_t value : BuildHashedSet(elements, static_cast<uint64_t>(elements.size()) * static_cast<uint64_t>(BASIC_FILTER_M))) { for (const uint64_t value : BuildHashedSet(elements, static_cast<uint64_t>(elements.size()) * static_cast<uint64_t>(BASIC_FILTER_M))) {

View File

@ -74,49 +74,49 @@ BOOST_AUTO_TEST_CASE(streams_vector_writer)
// point should yield the same results, even if the first test grew the // point should yield the same results, even if the first test grew the
// vector. // vector.
CVectorWriter{INIT_PROTO_VERSION, vch, 0, a, b}; VectorWriter{vch, 0, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{1, 2}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 0, a, b}; VectorWriter{vch, 0, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{1, 2}}));
vch.clear(); vch.clear();
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, b}; VectorWriter{vch, 2, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, b}; VectorWriter{vch, 2, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2}}));
vch.clear(); vch.clear();
vch.resize(5, 0); vch.resize(5, 0);
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, b}; VectorWriter{vch, 2, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2, 0}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2, 0}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, b}; VectorWriter{vch, 2, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2, 0}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 1, 2, 0}}));
vch.clear(); vch.clear();
vch.resize(4, 0); vch.resize(4, 0);
CVectorWriter{INIT_PROTO_VERSION, vch, 3, a, b}; VectorWriter{vch, 3, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 1, 2}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 3, a, b}; VectorWriter{vch, 3, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 1, 2}}));
vch.clear(); vch.clear();
vch.resize(4, 0); vch.resize(4, 0);
CVectorWriter{INIT_PROTO_VERSION, vch, 4, a, b}; VectorWriter{vch, 4, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 0, 1, 2}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 4, a, b}; VectorWriter{vch, 4, a, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 0, 1, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{0, 0, 0, 0, 1, 2}}));
vch.clear(); vch.clear();
CVectorWriter{INIT_PROTO_VERSION, vch, 0, bytes}; VectorWriter{vch, 0, bytes};
BOOST_CHECK((vch == std::vector<unsigned char>{{3, 4, 5, 6}})); BOOST_CHECK((vch == std::vector<unsigned char>{{3, 4, 5, 6}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 0, bytes}; VectorWriter{vch, 0, bytes};
BOOST_CHECK((vch == std::vector<unsigned char>{{3, 4, 5, 6}})); BOOST_CHECK((vch == std::vector<unsigned char>{{3, 4, 5, 6}}));
vch.clear(); vch.clear();
vch.resize(4, 8); vch.resize(4, 8);
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, bytes, b}; VectorWriter{vch, 2, a, bytes, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{8, 8, 1, 3, 4, 5, 6, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{8, 8, 1, 3, 4, 5, 6, 2}}));
CVectorWriter{INIT_PROTO_VERSION, vch, 2, a, bytes, b}; VectorWriter{vch, 2, a, bytes, b};
BOOST_CHECK((vch == std::vector<unsigned char>{{8, 8, 1, 3, 4, 5, 6, 2}})); BOOST_CHECK((vch == std::vector<unsigned char>{{8, 8, 1, 3, 4, 5, 6, 2}}));
vch.clear(); vch.clear();
} }

View File

@ -752,7 +752,7 @@ bool malformed_descriptor(std::ios_base::failure e)
BOOST_FIXTURE_TEST_CASE(wallet_descriptor_test, BasicTestingSetup) BOOST_FIXTURE_TEST_CASE(wallet_descriptor_test, BasicTestingSetup)
{ {
std::vector<unsigned char> malformed_record; std::vector<unsigned char> malformed_record;
CVectorWriter vw{0, malformed_record, 0}; VectorWriter vw{malformed_record, 0};
vw << std::string("notadescriptor"); vw << std::string("notadescriptor");
vw << uint64_t{0}; vw << uint64_t{0};
vw << int32_t{0}; vw << int32_t{0};