Add Block msg reader and writers, and Tx msg writer
This commit is contained in:
parent
8dc9181610
commit
483d6584f9
|
|
@ -9,7 +9,7 @@ use failure::Error;
|
||||||
use tokio::codec::{Decoder, Encoder};
|
use tokio::codec::{Decoder, Encoder};
|
||||||
|
|
||||||
use zebra_chain::{
|
use zebra_chain::{
|
||||||
block::{BlockHeader, BlockHeaderHash},
|
block::{Block, BlockHeader, BlockHeaderHash},
|
||||||
serialization::{ReadZcashExt, WriteZcashExt, ZcashDeserialize, ZcashSerialize},
|
serialization::{ReadZcashExt, WriteZcashExt, ZcashDeserialize, ZcashSerialize},
|
||||||
transaction::Transaction,
|
transaction::Transaction,
|
||||||
types::{BlockHeight, Sha256dChecksum},
|
types::{BlockHeight, Sha256dChecksum},
|
||||||
|
|
@ -211,7 +211,11 @@ impl Codec {
|
||||||
hash.zcash_serialize(&mut writer)?;
|
hash.zcash_serialize(&mut writer)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Block { ref block } => {
|
Block {
|
||||||
|
ref version,
|
||||||
|
ref block,
|
||||||
|
} => {
|
||||||
|
writer.write_u32::<LittleEndian>(version.0)?;
|
||||||
block
|
block
|
||||||
.zcash_serialize(&mut writer)
|
.zcash_serialize(&mut writer)
|
||||||
.expect("Blocks must serialize.");
|
.expect("Blocks must serialize.");
|
||||||
|
|
@ -246,7 +250,15 @@ impl Codec {
|
||||||
header.zcash_serialize(&mut writer)?;
|
header.zcash_serialize(&mut writer)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Tx {
|
||||||
|
ref version,
|
||||||
|
ref transaction,
|
||||||
|
} => {
|
||||||
|
writer.write_u32::<LittleEndian>(version.0)?;
|
||||||
|
transaction
|
||||||
|
.zcash_serialize(&mut writer)
|
||||||
|
.expect("Transactions must serialize.");
|
||||||
|
}
|
||||||
_ => bail!("unimplemented message type"),
|
_ => bail!("unimplemented message type"),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -427,9 +439,12 @@ impl Codec {
|
||||||
Ok(Message::Verack)
|
Ok(Message::Verack)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_block<R: Read>(&self, mut _reader: R) -> Result<Message, Error> {
|
fn read_block<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
|
||||||
trace!("block");
|
Ok(Message::Block {
|
||||||
bail!("unimplemented message type")
|
version: Version(reader.read_u32::<LittleEndian>()?),
|
||||||
|
|
||||||
|
block: Block::zcash_deserialize(&mut reader)?,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_getblocks<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
|
fn read_getblocks<R: Read>(&self, mut reader: R) -> Result<Message, Error> {
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,9 @@ pub enum Message {
|
||||||
///
|
///
|
||||||
/// [Bitcoin reference](https://en.bitcoin.it/wiki/Protocol_documentation#block)
|
/// [Bitcoin reference](https://en.bitcoin.it/wiki/Protocol_documentation#block)
|
||||||
Block {
|
Block {
|
||||||
|
/// Transaction data format version (note, this is signed).
|
||||||
|
version: Version,
|
||||||
|
|
||||||
/// The block itself.
|
/// The block itself.
|
||||||
block: Block,
|
block: Block,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue