// deserializeAddrIndexEntry decodes the passed serialized byte slice into the // provided region struct according to the format described in detail above and // uses the passed block hash fetching function in order to conver the block ID // to the associated block hash. func deserializeAddrIndexEntry(serialized []byte, region *database.BlockRegion, fetchBlockHash fetchBlockHashFunc) error { // Ensure there are enough bytes to decode. if len(serialized) < txEntrySize { return errDeserialize("unexpected end of data") } hash, err := fetchBlockHash(serialized[0:4]) if err != nil { return err } region.Hash = hash region.Offset = byteOrder.Uint32(serialized[4:8]) region.Len = byteOrder.Uint32(serialized[8:12]) return nil }