Block 468,977 (algo CRYPTONIGHT, auxpow=yes) fails codec.decode('Block') after unwrap.js — "unexpected end of data". unwrap produced an 80-byte standard block with no transactions (it consumed the whole 463-byte raw block as header+auxpow, leaving no tx bytes), so decode runs off the end.
Likely cause: the auxpow parent header for cryptonight is a variable-length vector (vector_format / keccak_hash per the CBlockHeader serialization), and unwrap's skipAuxpow / readPureHeader offset math for that case is wrong. More generally, some headers are longer than 80 bytes (equihash = 1487; cryptonight parent = variable), so the fixed assumptions break on this combination.
Workaround (in place): proof/sync.mjs now falls back to bitmarkd's parsed transactions for any block the codec can't decode (counts a unwrap-decode (→ bitmarkd fallback) warning), so the sync no longer halts. But those blocks' scripts aren't verified.
Proper fix: handle the cryptonight+auxpow serialization in unwrap.js (and audit the >80-byte / vector_format header cases) so these blocks decode natively.
Block 468,977 (algo CRYPTONIGHT, auxpow=yes) fails
codec.decode('Block')afterunwrap.js— "unexpected end of data". unwrap produced an 80-byte standard block with no transactions (it consumed the whole 463-byte raw block as header+auxpow, leaving no tx bytes), so decode runs off the end.Likely cause: the auxpow parent header for cryptonight is a variable-length vector (
vector_format/keccak_hashper the CBlockHeader serialization), and unwrap'sskipAuxpow/readPureHeaderoffset math for that case is wrong. More generally, some headers are longer than 80 bytes (equihash = 1487; cryptonight parent = variable), so the fixed assumptions break on this combination.Workaround (in place):
proof/sync.mjsnow falls back to bitmarkd's parsed transactions for any block the codec can't decode (counts aunwrap-decode (→ bitmarkd fallback)warning), so the sync no longer halts. But those blocks' scripts aren't verified.Proper fix: handle the cryptonight+auxpow serialization in
unwrap.js(and audit the >80-byte / vector_format header cases) so these blocks decode natively.