HashReject
data class HashReject(val piecesRoot: ByteArray, val baseLayer: Int, val index: Int, val length: Int, val proofLayers: Int) : PeerMessage
hash_reject (id 23, BEP-52): refuse a HashRequest. The payload is the identical 48-byte header as HashRequest, with no trailing hashes. On the wire: [len=49][23][header]. Mirrors write_hash_reject / on_hash_reject.