blockfilter: Additional helper methods to compute hash and header.

This commit is contained in:
Jim Posen 2018-01-23 17:32:46 -08:00 committed by Jim Posen
parent cd09c7925b
commit a4afb9cadb
2 changed files with 27 additions and 0 deletions

View file

@ -233,3 +233,24 @@ BlockFilter::BlockFilter(BlockFilterType filter_type, const CBlock& block, const
throw std::invalid_argument("unknown filter_type");
}
}
uint256 BlockFilter::GetHash() const
{
const std::vector<unsigned char>& data = GetEncodedFilter();
uint256 result;
CHash256().Write(data.data(), data.size()).Finalize(result.begin());
return result;
}
uint256 BlockFilter::ComputeHeader(const uint256& prev_header) const
{
const uint256& filter_hash = GetHash();
uint256 result;
CHash256()
.Write(filter_hash.begin(), filter_hash.size())
.Write(prev_header.begin(), prev_header.size())
.Finalize(result.begin());
return result;
}

View file

@ -106,6 +106,12 @@ public:
return m_filter.GetEncoded();
}
// Compute the filter hash.
uint256 GetHash() const;
// Compute the filter header given the previous one.
uint256 ComputeHeader(const uint256& prev_header) const;
template <typename Stream>
void Serialize(Stream& s) const {
s << m_block_hash