Skip to content

Commit 8cc3be9

Browse files
authored
Merge pull request #223 from TheBlueMatt/2018-10-chanmanager-serialize
Implement and document Channel/ChannelManager (de)serialization
2 parents 19a1a59 + 7f91572 commit 8cc3be9

File tree

9 files changed

+1496
-248
lines changed

9 files changed

+1496
-248
lines changed

fuzz/fuzz_targets/chanmon_deser_target.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
// This file is auto-generated by gen_target.sh based on msg_target_template.txt
22
// To modify it, modify msg_target_template.txt and run gen_target.sh instead.
33

4+
extern crate bitcoin;
45
extern crate lightning;
56

7+
use bitcoin::util::hash::Sha256dHash;
8+
69
use lightning::ln::channelmonitor;
710
use lightning::util::reset_rng_state;
8-
use lightning::util::ser::{Readable, Writer};
11+
use lightning::util::ser::{ReadableArgs, Writer};
12+
13+
mod utils;
14+
use utils::test_logger;
915

1016
use std::io::Cursor;
17+
use std::sync::Arc;
1118

1219
struct VecWriter(Vec<u8>);
1320
impl Writer for VecWriter {
@@ -23,10 +30,13 @@ impl Writer for VecWriter {
2330
#[inline]
2431
pub fn do_test(data: &[u8]) {
2532
reset_rng_state();
26-
if let Ok(monitor) = channelmonitor::ChannelMonitor::read(&mut Cursor::new(data)) {
33+
let logger = Arc::new(test_logger::TestLogger{});
34+
if let Ok((latest_block_hash, monitor)) = <(Sha256dHash, channelmonitor::ChannelMonitor)>::read(&mut Cursor::new(data), logger.clone()) {
2735
let mut w = VecWriter(Vec::new());
2836
monitor.write_for_disk(&mut w).unwrap();
29-
assert!(channelmonitor::ChannelMonitor::read(&mut Cursor::new(&w.0)).unwrap() == monitor);
37+
let deserialized_copy = <(Sha256dHash, channelmonitor::ChannelMonitor)>::read(&mut Cursor::new(&w.0), logger.clone()).unwrap();
38+
assert!(latest_block_hash == deserialized_copy.0);
39+
assert!(monitor == deserialized_copy.1);
3040
w.0.clear();
3141
monitor.write_for_watchtower(&mut w).unwrap();
3242
}

src/chain/keysinterface.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,15 @@ pub struct ChannelKeys {
7878
pub commitment_seed: [u8; 32],
7979
}
8080

81+
impl_writeable!(ChannelKeys, 0, {
82+
funding_key,
83+
revocation_base_key,
84+
payment_base_key,
85+
delayed_payment_base_key,
86+
htlc_base_key,
87+
commitment_seed
88+
});
89+
8190
impl ChannelKeys {
8291
/// Generate a set of lightning keys needed to operate a channel by HKDF-expanding a given
8392
/// random 32-byte seed

0 commit comments

Comments
 (0)