Use the BlockHeaderHash from zebra-chain in the Inv message parsing

This commit is contained in:
Deirdre Connolly 2019-09-27 21:06:22 -04:00 committed by Henry de Valence
parent 0a85be285d
commit 29591df47e
2 changed files with 7 additions and 9 deletions

View File

@ -21,8 +21,8 @@ use crate::transaction::Transaction;
/// the direct bytes of the transactions as well as the header. So /// the direct bytes of the transactions as well as the header. So
/// for now I want to call it a `BlockHeaderHash` because that's /// for now I want to call it a `BlockHeaderHash` because that's
/// more explicit. /// more explicit.
#[derive(Clone, Debug, Eq, PartialEq)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct BlockHeaderHash([u8; 32]); pub struct BlockHeaderHash(pub [u8; 32]);
impl From<BlockHeader> for BlockHeaderHash { impl From<BlockHeader> for BlockHeaderHash {
fn from(block_header: BlockHeader) -> Self { fn from(block_header: BlockHeader) -> Self {

View File

@ -8,6 +8,7 @@ use std::io::{Read, Write};
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
use zebra_chain::block::BlockHeaderHash;
use zebra_chain::serialization::{ use zebra_chain::serialization::{
ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize, ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize,
}; };
@ -15,9 +16,6 @@ use zebra_chain::serialization::{
/// Stub-- delete later. /// Stub-- delete later.
#[derive(Copy, Clone, Debug, Eq, PartialEq)] #[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct TxHash(pub [u8; 32]); pub struct TxHash(pub [u8; 32]);
/// Stub-- delete later.
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
pub struct BlockHash(pub [u8; 32]);
/// An inventory hash which refers to some advertised or requested data. /// An inventory hash which refers to some advertised or requested data.
/// ///
@ -35,14 +33,14 @@ pub enum InventoryHash {
/// A hash of a transaction. /// A hash of a transaction.
Tx(TxHash), Tx(TxHash),
/// A hash of a block. /// A hash of a block.
Block(BlockHash), Block(BlockHeaderHash),
/// A hash of a filtered block. /// A hash of a filtered block.
/// ///
/// The Bitcoin wiki says: Hash of a block header, but only to be used in /// The Bitcoin wiki says: Hash of a block header, but only to be used in
/// getdata message. Indicates the reply should be a merkleblock message /// getdata message. Indicates the reply should be a merkleblock message
/// rather than a block message; this only works if a bloom filter has been /// rather than a block message; this only works if a bloom filter has been
/// set. /// set.
FilteredBlock(BlockHash), FilteredBlock(BlockHeaderHash),
} }
impl ZcashSerialize for InventoryHash { impl ZcashSerialize for InventoryHash {
@ -66,8 +64,8 @@ impl ZcashDeserialize for InventoryHash {
match code { match code {
0 => Ok(InventoryHash::Error), 0 => Ok(InventoryHash::Error),
1 => Ok(InventoryHash::Tx(TxHash(bytes))), 1 => Ok(InventoryHash::Tx(TxHash(bytes))),
2 => Ok(InventoryHash::Block(BlockHash(bytes))), 2 => Ok(InventoryHash::Block(BlockHeaderHash(bytes))),
3 => Ok(InventoryHash::FilteredBlock(BlockHash(bytes))), 3 => Ok(InventoryHash::FilteredBlock(BlockHeaderHash(bytes))),
_ => Err(SerializationError::ParseError("invalid inventory code")), _ => Err(SerializationError::ParseError("invalid inventory code")),
} }
} }