Add comment about size calculations for converted serialized keys
This commit is contained in:
parent
bec3e62bc1
commit
dd7417c8d0
|
@ -92,6 +92,7 @@ public:
|
|||
// ConvertBits requires unsigned char, but CDataStream uses char
|
||||
std::vector<unsigned char> seraddr(ss.begin(), ss.end());
|
||||
std::vector<unsigned char> data;
|
||||
// See calculation comment below
|
||||
data.reserve((seraddr.size() * 8 + 4) / 5);
|
||||
ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, seraddr.begin(), seraddr.end());
|
||||
return bech32::Encode(m_params.Bech32HRP(CChainParams::SAPLING_PAYMENT_ADDRESS), data);
|
||||
|
@ -148,6 +149,7 @@ public:
|
|||
// ConvertBits requires unsigned char, but CDataStream uses char
|
||||
std::vector<unsigned char> serkey(ss.begin(), ss.end());
|
||||
std::vector<unsigned char> data;
|
||||
// See calculation comment below
|
||||
data.reserve((serkey.size() * 8 + 4) / 5);
|
||||
ConvertBits<8, 5, true>([&](unsigned char c) { data.push_back(c); }, serkey.begin(), serkey.end());
|
||||
std::string ret = bech32::Encode(m_params.Bech32HRP(CChainParams::SAPLING_SPENDING_KEY), data);
|
||||
|
@ -159,6 +161,10 @@ public:
|
|||
std::string operator()(const libzcash::InvalidEncoding& no) const { return {}; }
|
||||
};
|
||||
|
||||
// Sizes of SaplingPaymentAddress and SaplingSpendingKey after
|
||||
// ConvertBits<8, 5, true>(). The calculations below take the
|
||||
// regular serialized size in bytes, convert to bits, and then
|
||||
// perform ceiling division to get the number of 5-bit clusters.
|
||||
const size_t ConvertedSaplingPaymentAddressSize = ((32 + 11) * 8 + 4) / 5;
|
||||
const size_t ConvertedSaplingSpendingKeySize = (32 * 8 + 4) / 5;
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in New Issue