Fix ssz decoding bug
This commit is contained in:
parent
56c9a29593
commit
e702896bee
@ -195,7 +195,7 @@ pub enum BehaviourEvent {
|
||||
}
|
||||
|
||||
/// Messages that are passed to and from the pubsub (Gossipsub) behaviour.
|
||||
#[derive(Debug, Clone)]
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum PubsubMessage {
|
||||
/// Gossipsub message providing notification of a new block.
|
||||
Block(BlockRootSlot),
|
||||
@ -223,11 +223,11 @@ impl Decodable for PubsubMessage {
|
||||
fn ssz_decode(bytes: &[u8], index: usize) -> Result<(Self, usize), DecodeError> {
|
||||
let (id, index) = u32::ssz_decode(bytes, index)?;
|
||||
match id {
|
||||
1 => {
|
||||
0 => {
|
||||
let (block, index) = BlockRootSlot::ssz_decode(bytes, index)?;
|
||||
Ok((PubsubMessage::Block(block), index))
|
||||
}
|
||||
2 => {
|
||||
1 => {
|
||||
let (attestation, index) = Attestation::ssz_decode(bytes, index)?;
|
||||
Ok((PubsubMessage::Attestation(attestation), index))
|
||||
}
|
||||
@ -235,3 +235,25 @@ impl Decodable for PubsubMessage {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use types::*;
|
||||
|
||||
#[test]
|
||||
fn ssz_encoding() {
|
||||
let original = PubsubMessage::Block(BlockRootSlot {
|
||||
block_root: Hash256::from_slice(&[42; 32]),
|
||||
slot: Slot::new(4),
|
||||
});
|
||||
|
||||
let encoded = ssz_encode(&original);
|
||||
|
||||
println!("{:?}", encoded);
|
||||
|
||||
let (decoded, _i) = PubsubMessage::ssz_decode(&encoded, 0).unwrap();
|
||||
|
||||
assert_eq!(original, decoded);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user