diff --git a/src/state/crosslink_record.rs b/src/state/crosslink_record.rs index 6b19081caf..85913a67be 100644 --- a/src/state/crosslink_record.rs +++ b/src/state/crosslink_record.rs @@ -1,4 +1,5 @@ use super::utils::types::Sha256Digest; +use super::rlp::{ RlpStream, Encodable }; pub struct CrosslinkRecord { pub epoch: u64, @@ -14,8 +15,19 @@ impl CrosslinkRecord { } } +/* + * RLP Encoding + */ +impl Encodable for CrosslinkRecord { + fn rlp_append(&self, s: &mut RlpStream) { + s.append(&self.epoch); + s.append(&self.hash); + } +} + #[cfg(test)] mod tests { + use super::super::rlp; use super::*; #[test] @@ -26,4 +38,17 @@ mod tests { assert_eq!(c.epoch, epoch); assert_eq!(c.hash, hash); } + + #[test] + fn test_serialization() { + let c = CrosslinkRecord { + epoch: 100, + hash: Sha256Digest::zero() + }; + let e = rlp::encode(&c); + assert_eq!(e.len(), 34); + assert_eq!(e[0], 100); + assert_eq!(e[1], 160); + assert_eq!(e[2..34], [0; 32]); + } }