func extractSerializedBlockInfo(serializedBlockBytes []byte) (*serializedBlockInfo, error) {
	info := &serializedBlockInfo{}
	var err error
	b := ledgerutil.NewBuffer(serializedBlockBytes)
	info.blockHeader, err = extractHeader(b)
	if err != nil {
		return nil, err
	}
	_, info.txOffsets, err = extractData(b)
	if err != nil {
		return nil, err
	}
	return info, nil
}
func deserializeBlock(serializedBlockBytes []byte) (*common.Block, error) {
	block := &common.Block{}
	var err error
	b := ledgerutil.NewBuffer(serializedBlockBytes)
	if block.Header, err = extractHeader(b); err != nil {
		fmt.Printf("h:%s\n", err)
		return nil, err
	}
	if block.Data, _, err = extractData(b); err != nil {
		fmt.Printf("d:%s\n", err)
		return nil, err
	}
	if block.Metadata, err = extractMetadata(b); err != nil {
		fmt.Printf("m:%s\n", err)
		return nil, err
	}
	return block, nil
}