X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FChannelMonitor.java;h=1e4fa35b6621692281a50e9e2cd5ba4865175380;hb=300b54d26fe5ed89f472ef821ebf67d56c917e49;hp=da280c215be87591dd0709bb482e29dd040c05f9;hpb=13cdf8bde340072288b39a5e29f0946d3e095ad4;p=ldk-java diff --git a/src/main/java/org/ldk/structs/ChannelMonitor.java b/src/main/java/org/ldk/structs/ChannelMonitor.java index da280c21..1e4fa35b 100644 --- a/src/main/java/org/ldk/structs/ChannelMonitor.java +++ b/src/main/java/org/ldk/structs/ChannelMonitor.java @@ -49,7 +49,7 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(this); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.ChannelMonitor ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.ChannelMonitor(null, ret); } - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; return ret_hu_conv; } @@ -77,10 +77,10 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(logger); if (ret >= 0 && ret <= 4096) { return null; } Result_NoneNoneZ ret_hu_conv = Result_NoneNoneZ.constr_from_ptr(ret); - this.ptrs_to.add(updates); - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(updates); }; + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; return ret_hu_conv; } @@ -102,7 +102,7 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(this); if (ret >= 0 && ret <= 4096) { return null; } TwoTuple_OutPointScriptZ ret_hu_conv = new TwoTuple_OutPointScriptZ(null, ret); - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; return ret_hu_conv; } @@ -118,7 +118,7 @@ public class ChannelMonitor extends CommonBase { for (int o = 0; o < ret_conv_40_len; o++) { long ret_conv_40 = ret[o]; TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ ret_conv_40_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32ScriptZZZ(null, ret_conv_40); - ret_conv_40_hu_conv.ptrs_to.add(this); + if (ret_conv_40_hu_conv != null) { ret_conv_40_hu_conv.ptrs_to.add(this); }; ret_conv_40_arr[o] = ret_conv_40_hu_conv; } return ret_conv_40_arr; @@ -133,7 +133,7 @@ public class ChannelMonitor extends CommonBase { bindings.ChannelMonitor_load_outputs_to_watch(this.ptr, filter == null ? 0 : filter.ptr); Reference.reachabilityFence(this); Reference.reachabilityFence(filter); - this.ptrs_to.add(filter); + if (this != null) { this.ptrs_to.add(filter); }; } /** @@ -148,7 +148,7 @@ public class ChannelMonitor extends CommonBase { for (int o = 0; o < ret_conv_14_len; o++) { long ret_conv_14 = ret[o]; org.ldk.structs.MonitorEvent ret_conv_14_hu_conv = org.ldk.structs.MonitorEvent.constr_from_ptr(ret_conv_14); - ret_conv_14_hu_conv.ptrs_to.add(this); + if (ret_conv_14_hu_conv != null) { ret_conv_14_hu_conv.ptrs_to.add(this); }; ret_conv_14_arr[o] = ret_conv_14_hu_conv; } return ret_conv_14_arr; @@ -170,7 +170,7 @@ public class ChannelMonitor extends CommonBase { for (int h = 0; h < ret_conv_7_len; h++) { long ret_conv_7 = ret[h]; org.ldk.structs.Event ret_conv_7_hu_conv = org.ldk.structs.Event.constr_from_ptr(ret_conv_7); - ret_conv_7_hu_conv.ptrs_to.add(this); + if (ret_conv_7_hu_conv != null) { ret_conv_7_hu_conv.ptrs_to.add(this); }; ret_conv_7_arr[h] = ret_conv_7_hu_conv; } return ret_conv_7_arr; @@ -193,20 +193,26 @@ public class ChannelMonitor extends CommonBase { /** * Used by ChannelManager deserialization to broadcast the latest holder state if its copy of - * the Channel was out-of-date. You may use it to get a broadcastable holder toxic tx in case of - * fallen-behind, i.e when receiving a channel_reestablish with a proof that our counterparty side knows - * a higher revocation secret than the holder commitment number we are aware of. Broadcasting these - * transactions are UNSAFE, as they allow counterparty side to punish you. Nevertheless you may want to - * broadcast them if counterparty don't close channel with his higher commitment transaction after a - * substantial amount of time (a month or even a year) to get back funds. Best may be to contact - * out-of-band the other node operator to coordinate with him if option is available to you. - * In any-case, choice is up to the user. + * the Channel was out-of-date. + * + * You may also use this to broadcast the latest local commitment transaction, either because + * a monitor update failed with [`ChannelMonitorUpdateStatus::PermanentFailure`] or because we've + * fallen behind (i.e. we've received proof that our counterparty side knows a revocation + * secret we gave them that they shouldn't know). + * + * Broadcasting these transactions in the second case is UNSAFE, as they allow counterparty + * side to punish you. Nevertheless you may want to broadcast them if counterparty doesn't + * close channel with their commitment transaction after a substantial amount of time. Best + * may be to contact the other node operator out-of-band to coordinate other options available + * to you. In any-case, the choice is up to you. + * + * [`ChannelMonitorUpdateStatus::PermanentFailure`]: super::ChannelMonitorUpdateStatus::PermanentFailure */ public byte[][] get_latest_holder_commitment_txn(Logger logger) { byte[][] ret = bindings.ChannelMonitor_get_latest_holder_commitment_txn(this.ptr, logger == null ? 0 : logger.ptr); Reference.reachabilityFence(this); Reference.reachabilityFence(logger); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(logger); }; return ret; } @@ -237,12 +243,12 @@ public class ChannelMonitor extends CommonBase { for (int n = 0; n < ret_conv_39_len; n++) { long ret_conv_39 = ret[n]; TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39); - ret_conv_39_hu_conv.ptrs_to.add(this); + if (ret_conv_39_hu_conv != null) { ret_conv_39_hu_conv.ptrs_to.add(this); }; ret_conv_39_arr[n] = ret_conv_39_hu_conv; } - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; return ret_conv_39_arr; } @@ -258,9 +264,9 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(broadcaster); Reference.reachabilityFence(fee_estimator); Reference.reachabilityFence(logger); - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; } /** @@ -286,12 +292,12 @@ public class ChannelMonitor extends CommonBase { for (int n = 0; n < ret_conv_39_len; n++) { long ret_conv_39 = ret[n]; TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39); - ret_conv_39_hu_conv.ptrs_to.add(this); + if (ret_conv_39_hu_conv != null) { ret_conv_39_hu_conv.ptrs_to.add(this); }; ret_conv_39_arr[n] = ret_conv_39_hu_conv; } - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; return ret_conv_39_arr; } @@ -310,9 +316,9 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(broadcaster); Reference.reachabilityFence(fee_estimator); Reference.reachabilityFence(logger); - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; } /** @@ -337,12 +343,12 @@ public class ChannelMonitor extends CommonBase { for (int n = 0; n < ret_conv_39_len; n++) { long ret_conv_39 = ret[n]; TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ ret_conv_39_hu_conv = new TwoTuple_TxidCVec_C2Tuple_u32TxOutZZZ(null, ret_conv_39); - ret_conv_39_hu_conv.ptrs_to.add(this); + if (ret_conv_39_hu_conv != null) { ret_conv_39_hu_conv.ptrs_to.add(this); }; ret_conv_39_arr[n] = ret_conv_39_hu_conv; } - this.ptrs_to.add(broadcaster); - this.ptrs_to.add(fee_estimator); - this.ptrs_to.add(logger); + if (this != null) { this.ptrs_to.add(broadcaster); }; + if (this != null) { this.ptrs_to.add(fee_estimator); }; + if (this != null) { this.ptrs_to.add(logger); }; return ret_conv_39_arr; } @@ -364,7 +370,7 @@ public class ChannelMonitor extends CommonBase { Reference.reachabilityFence(this); if (ret >= 0 && ret <= 4096) { return null; } org.ldk.structs.BestBlock ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.BestBlock(null, ret); } - ret_hu_conv.ptrs_to.add(this); + if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); }; return ret_hu_conv; } @@ -378,8 +384,9 @@ public class ChannelMonitor extends CommonBase { * balance, or until our counterparty has claimed the balance and accrued several * confirmations on the claim transaction. * - * Note that the balances available when you or your counterparty have broadcasted revoked - * state(s) may not be fully captured here. + * Note that for `ChannelMonitors` which track a channel which went on-chain with versions of + * LDK prior to 0.0.111, balances may not be fully captured if our counterparty broadcasted + * a revoked state. * * See [`Balance`] for additional details on the types of claimable balances which * may be returned here and their meanings. @@ -392,7 +399,7 @@ public class ChannelMonitor extends CommonBase { for (int j = 0; j < ret_conv_9_len; j++) { long ret_conv_9 = ret[j]; org.ldk.structs.Balance ret_conv_9_hu_conv = org.ldk.structs.Balance.constr_from_ptr(ret_conv_9); - ret_conv_9_hu_conv.ptrs_to.add(this); + if (ret_conv_9_hu_conv != null) { ret_conv_9_hu_conv.ptrs_to.add(this); }; ret_conv_9_arr[j] = ret_conv_9_hu_conv; } return ret_conv_9_arr;