@@ -40,7 +40,7 @@ use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget,
40
40
use lightning:: sign:: { KeyMaterial , InMemorySigner , Recipient , EntropySource , NodeSigner , SignerProvider } ;
41
41
use lightning:: events;
42
42
use lightning:: events:: MessageSendEventsProvider ;
43
- use lightning:: ln:: { PaymentHash , PaymentPreimage , PaymentSecret } ;
43
+ use lightning:: ln:: { ChannelId , PaymentHash , PaymentPreimage , PaymentSecret } ;
44
44
use lightning:: ln:: channelmanager:: { ChainParameters , ChannelDetails , ChannelManager , PaymentSendFailure , ChannelManagerReadArgs , PaymentId , RecipientOnionFields } ;
45
45
use lightning:: ln:: channel:: FEE_SPIKE_BUFFER_FEE_INCREASE_MULTIPLE ;
46
46
use lightning:: ln:: msgs:: { self , CommitmentUpdate , ChannelMessageHandler , DecodeError , UpdateAddHTLC , Init } ;
@@ -167,16 +167,16 @@ impl TestChainMonitor {
167
167
}
168
168
}
169
169
impl chain:: Watch < TestChannelSigner > for TestChainMonitor {
170
- fn watch_channel ( & self , funding_txo : OutPoint , monitor : channelmonitor:: ChannelMonitor < TestChannelSigner > ) -> Result < chain:: ChannelMonitorUpdateStatus , ( ) > {
170
+ fn watch_channel ( & self , funding_txo : OutPoint , channel_id : ChannelId , monitor : channelmonitor:: ChannelMonitor < TestChannelSigner > ) -> Result < chain:: ChannelMonitorUpdateStatus , ( ) > {
171
171
let mut ser = VecWriter ( Vec :: new ( ) ) ;
172
172
monitor. write ( & mut ser) . unwrap ( ) ;
173
173
if let Some ( _) = self . latest_monitors . lock ( ) . unwrap ( ) . insert ( funding_txo, ( monitor. get_latest_update_id ( ) , ser. 0 ) ) {
174
174
panic ! ( "Already had monitor pre-watch_channel" ) ;
175
175
}
176
- self . chain_monitor . watch_channel ( funding_txo, monitor)
176
+ self . chain_monitor . watch_channel ( funding_txo, channel_id , monitor)
177
177
}
178
178
179
- fn update_channel ( & self , funding_txo : OutPoint , update : & channelmonitor:: ChannelMonitorUpdate ) -> chain:: ChannelMonitorUpdateStatus {
179
+ fn update_channel ( & self , funding_txo : OutPoint , channel_id : ChannelId , update : & channelmonitor:: ChannelMonitorUpdate ) -> chain:: ChannelMonitorUpdateStatus {
180
180
let mut map_lock = self . latest_monitors . lock ( ) . unwrap ( ) ;
181
181
let mut map_entry = match map_lock. entry ( funding_txo) {
182
182
hash_map:: Entry :: Occupied ( entry) => entry,
@@ -188,10 +188,10 @@ impl chain::Watch<TestChannelSigner> for TestChainMonitor {
188
188
let mut ser = VecWriter ( Vec :: new ( ) ) ;
189
189
deserialized_monitor. write ( & mut ser) . unwrap ( ) ;
190
190
map_entry. insert ( ( update. update_id , ser. 0 ) ) ;
191
- self . chain_monitor . update_channel ( funding_txo, update)
191
+ self . chain_monitor . update_channel ( funding_txo, channel_id , update)
192
192
}
193
193
194
- fn release_pending_monitor_events ( & self ) -> Vec < ( OutPoint , Vec < MonitorEvent > , Option < PublicKey > ) > {
194
+ fn release_pending_monitor_events ( & self ) -> Vec < ( OutPoint , ChannelId , Vec < MonitorEvent > , Option < PublicKey > ) > {
195
195
return self . chain_monitor . release_pending_monitor_events ( ) ;
196
196
}
197
197
}
@@ -539,7 +539,8 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
539
539
540
540
let res = ( <( BlockHash , ChanMan ) >:: read( & mut Cursor :: new( & $ser. 0 ) , read_args) . expect( "Failed to read manager" ) . 1 , chain_monitor. clone( ) ) ;
541
541
for ( funding_txo, mon) in monitors. drain( ) {
542
- assert_eq!( chain_monitor. chain_monitor. watch_channel( funding_txo, mon) ,
542
+ let channel_id = mon. get_channel_id( ) ;
543
+ assert_eq!( chain_monitor. chain_monitor. watch_channel( funding_txo, channel_id, mon) ,
543
544
Ok ( ChannelMonitorUpdateStatus :: Completed ) ) ;
544
545
}
545
546
res
@@ -704,7 +705,9 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
704
705
lock_fundings ! ( nodes) ;
705
706
706
707
let chan_a = nodes[ 0 ] . list_usable_channels ( ) [ 0 ] . short_channel_id . unwrap ( ) ;
708
+ let chan_1_id = nodes[ 0 ] . list_usable_channels ( ) [ 0 ] . channel_id ;
707
709
let chan_b = nodes[ 2 ] . list_usable_channels ( ) [ 0 ] . short_channel_id . unwrap ( ) ;
710
+ let chan_2_id = nodes[ 2 ] . list_usable_channels ( ) [ 0 ] . channel_id ;
708
711
709
712
let mut payment_id: u8 = 0 ;
710
713
let mut payment_idx: u64 = 0 ;
@@ -1060,25 +1063,25 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
1060
1063
1061
1064
0x08 => {
1062
1065
if let Some ( ( id, _) ) = monitor_a. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
1063
- monitor_a. chain_monitor . force_channel_monitor_updated ( chan_1_funding, * id) ;
1066
+ monitor_a. chain_monitor . force_channel_monitor_updated ( chan_1_funding, chan_1_id , * id) ;
1064
1067
nodes[ 0 ] . process_monitor_events ( ) ;
1065
1068
}
1066
1069
} ,
1067
1070
0x09 => {
1068
1071
if let Some ( ( id, _) ) = monitor_b. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
1069
- monitor_b. chain_monitor . force_channel_monitor_updated ( chan_1_funding, * id) ;
1072
+ monitor_b. chain_monitor . force_channel_monitor_updated ( chan_1_funding, chan_1_id , * id) ;
1070
1073
nodes[ 1 ] . process_monitor_events ( ) ;
1071
1074
}
1072
1075
} ,
1073
1076
0x0a => {
1074
1077
if let Some ( ( id, _) ) = monitor_b. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_2_funding) {
1075
- monitor_b. chain_monitor . force_channel_monitor_updated ( chan_2_funding, * id) ;
1078
+ monitor_b. chain_monitor . force_channel_monitor_updated ( chan_2_funding, chan_2_id , * id) ;
1076
1079
nodes[ 1 ] . process_monitor_events ( ) ;
1077
1080
}
1078
1081
} ,
1079
1082
0x0b => {
1080
1083
if let Some ( ( id, _) ) = monitor_c. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_2_funding) {
1081
- monitor_c. chain_monitor . force_channel_monitor_updated ( chan_2_funding, * id) ;
1084
+ monitor_c. chain_monitor . force_channel_monitor_updated ( chan_2_funding, chan_2_id , * id) ;
1082
1085
nodes[ 2 ] . process_monitor_events ( ) ;
1083
1086
}
1084
1087
} ,
@@ -1292,87 +1295,87 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
1292
1295
0xf0 => {
1293
1296
let pending_updates = monitor_a. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1294
1297
if let Some ( id) = pending_updates. get ( 0 ) {
1295
- monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1298
+ monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1296
1299
}
1297
1300
nodes[ 0 ] . process_monitor_events ( ) ;
1298
1301
}
1299
1302
0xf1 => {
1300
1303
let pending_updates = monitor_a. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1301
1304
if let Some ( id) = pending_updates. get ( 1 ) {
1302
- monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1305
+ monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1303
1306
}
1304
1307
nodes[ 0 ] . process_monitor_events ( ) ;
1305
1308
}
1306
1309
0xf2 => {
1307
1310
let pending_updates = monitor_a. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1308
1311
if let Some ( id) = pending_updates. last ( ) {
1309
- monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1312
+ monitor_a. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1310
1313
}
1311
1314
nodes[ 0 ] . process_monitor_events ( ) ;
1312
1315
}
1313
1316
1314
1317
0xf4 => {
1315
1318
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1316
1319
if let Some ( id) = pending_updates. get ( 0 ) {
1317
- monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1320
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1318
1321
}
1319
1322
nodes[ 1 ] . process_monitor_events ( ) ;
1320
1323
}
1321
1324
0xf5 => {
1322
1325
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1323
1326
if let Some ( id) = pending_updates. get ( 1 ) {
1324
- monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1327
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1325
1328
}
1326
1329
nodes[ 1 ] . process_monitor_events ( ) ;
1327
1330
}
1328
1331
0xf6 => {
1329
1332
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_1_funding) . unwrap ( ) ;
1330
1333
if let Some ( id) = pending_updates. last ( ) {
1331
- monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, * id) . unwrap ( ) ;
1334
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_1_funding, chan_1_id , * id) . unwrap ( ) ;
1332
1335
}
1333
1336
nodes[ 1 ] . process_monitor_events ( ) ;
1334
1337
}
1335
1338
1336
1339
0xf8 => {
1337
1340
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1338
1341
if let Some ( id) = pending_updates. get ( 0 ) {
1339
- monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1342
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1340
1343
}
1341
1344
nodes[ 1 ] . process_monitor_events ( ) ;
1342
1345
}
1343
1346
0xf9 => {
1344
1347
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1345
1348
if let Some ( id) = pending_updates. get ( 1 ) {
1346
- monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1349
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1347
1350
}
1348
1351
nodes[ 1 ] . process_monitor_events ( ) ;
1349
1352
}
1350
1353
0xfa => {
1351
1354
let pending_updates = monitor_b. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1352
1355
if let Some ( id) = pending_updates. last ( ) {
1353
- monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1356
+ monitor_b. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1354
1357
}
1355
1358
nodes[ 1 ] . process_monitor_events ( ) ;
1356
1359
}
1357
1360
1358
1361
0xfc => {
1359
1362
let pending_updates = monitor_c. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1360
1363
if let Some ( id) = pending_updates. get ( 0 ) {
1361
- monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1364
+ monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1362
1365
}
1363
1366
nodes[ 2 ] . process_monitor_events ( ) ;
1364
1367
}
1365
1368
0xfd => {
1366
1369
let pending_updates = monitor_c. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1367
1370
if let Some ( id) = pending_updates. get ( 1 ) {
1368
- monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1371
+ monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1369
1372
}
1370
1373
nodes[ 2 ] . process_monitor_events ( ) ;
1371
1374
}
1372
1375
0xfe => {
1373
1376
let pending_updates = monitor_c. chain_monitor . list_pending_monitor_updates ( ) . remove ( & chan_2_funding) . unwrap ( ) ;
1374
1377
if let Some ( id) = pending_updates. last ( ) {
1375
- monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, * id) . unwrap ( ) ;
1378
+ monitor_c. chain_monitor . channel_monitor_updated ( chan_2_funding, chan_2_id , * id) . unwrap ( ) ;
1376
1379
}
1377
1380
nodes[ 2 ] . process_monitor_events ( ) ;
1378
1381
}
@@ -1387,19 +1390,19 @@ pub fn do_test<Out: Output>(data: &[u8], underlying_out: Out, anchors: bool) {
1387
1390
* monitor_c. persister . update_ret . lock ( ) . unwrap ( ) = ChannelMonitorUpdateStatus :: Completed ;
1388
1391
1389
1392
if let Some ( ( id, _) ) = monitor_a. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
1390
- monitor_a. chain_monitor . force_channel_monitor_updated ( chan_1_funding, * id) ;
1393
+ monitor_a. chain_monitor . force_channel_monitor_updated ( chan_1_funding, chan_1_id , * id) ;
1391
1394
nodes[ 0 ] . process_monitor_events ( ) ;
1392
1395
}
1393
1396
if let Some ( ( id, _) ) = monitor_b. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_1_funding) {
1394
- monitor_b. chain_monitor . force_channel_monitor_updated ( chan_1_funding, * id) ;
1397
+ monitor_b. chain_monitor . force_channel_monitor_updated ( chan_1_funding, chan_1_id , * id) ;
1395
1398
nodes[ 1 ] . process_monitor_events ( ) ;
1396
1399
}
1397
1400
if let Some ( ( id, _) ) = monitor_b. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_2_funding) {
1398
- monitor_b. chain_monitor . force_channel_monitor_updated ( chan_2_funding, * id) ;
1401
+ monitor_b. chain_monitor . force_channel_monitor_updated ( chan_2_funding, chan_1_id , * id) ;
1399
1402
nodes[ 1 ] . process_monitor_events ( ) ;
1400
1403
}
1401
1404
if let Some ( ( id, _) ) = monitor_c. latest_monitors . lock ( ) . unwrap ( ) . get ( & chan_2_funding) {
1402
- monitor_c. chain_monitor . force_channel_monitor_updated ( chan_2_funding, * id) ;
1405
+ monitor_c. chain_monitor . force_channel_monitor_updated ( chan_2_funding, chan_1_id , * id) ;
1403
1406
nodes[ 2 ] . process_monitor_events ( ) ;
1404
1407
}
1405
1408
0 commit comments