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.
|
/// Messages that are passed to and from the pubsub (Gossipsub) behaviour.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub enum PubsubMessage {
|
pub enum PubsubMessage {
|
||||||
/// Gossipsub message providing notification of a new block.
|
/// Gossipsub message providing notification of a new block.
|
||||||
Block(BlockRootSlot),
|
Block(BlockRootSlot),
|
||||||
@ -223,11 +223,11 @@ impl Decodable for PubsubMessage {
|
|||||||
fn ssz_decode(bytes: &[u8], index: usize) -> Result<(Self, usize), DecodeError> {
|
fn ssz_decode(bytes: &[u8], index: usize) -> Result<(Self, usize), DecodeError> {
|
||||||
let (id, index) = u32::ssz_decode(bytes, index)?;
|
let (id, index) = u32::ssz_decode(bytes, index)?;
|
||||||
match id {
|
match id {
|
||||||
1 => {
|
0 => {
|
||||||
let (block, index) = BlockRootSlot::ssz_decode(bytes, index)?;
|
let (block, index) = BlockRootSlot::ssz_decode(bytes, index)?;
|
||||||
Ok((PubsubMessage::Block(block), index))
|
Ok((PubsubMessage::Block(block), index))
|
||||||
}
|
}
|
||||||
2 => {
|
1 => {
|
||||||
let (attestation, index) = Attestation::ssz_decode(bytes, index)?;
|
let (attestation, index) = Attestation::ssz_decode(bytes, index)?;
|
||||||
Ok((PubsubMessage::Attestation(attestation), 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