diff --git a/src/cashaddrenc.cpp b/src/cashaddrenc.cpp --- a/src/cashaddrenc.cpp +++ b/src/cashaddrenc.cpp @@ -26,7 +26,13 @@ template std::vector PackAddrData(const T &id, uint8_t type, size_t expectedSize) { - std::vector data = {uint8_t(type << 3)}; + uint8_t version_byte = uint8_t(type << 3); + uint8_t encoded_size = (id.size() - 20) / 4; + assert((id.size() - 20) % 4 == 0); + assert(encoded_size >= 0 && encoded_size < 8); + + version_byte |= encoded_size; + std::vector data = {version_byte}; data.insert(data.end(), id.begin(), id.end()); std::vector converted;