}
public static interface SignerProviderInterface {
/**
- * Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through
+ * Generates a unique `channel_keys_id` that can be used to obtain a [`Self::EcdsaSigner`] through
* [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
* implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
* `channel_keys_id`.
* This method is slowly being phased out -- it will only be called when reading objects
* written by LDK versions prior to 0.0.113.
*
- * [`Signer`]: Self::Signer
+ * [`Signer`]: Self::EcdsaSigner
* [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
* [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
*/
/**
* Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
*
+ * If this function returns an error, this will result in a channel failing to open.
+ *
* This method should return a different value each time it is called, to avoid linking
- * on-chain funds across channels as controlled to the same user.
+ * on-chain funds across channels as controlled to the same user. `channel_keys_id` may be
+ * used to derive a unique value for each channel.
*/
- byte[] get_destination_script();
+ Result_CVec_u8ZNoneZ get_destination_script(byte[] channel_keys_id);
/**
* Get a script pubkey which we will send funds to when closing a channel.
*
+ * If this function returns an error, this will result in a channel failing to open or close.
+ * In the event of a failure when the counterparty is initiating a close, this can result in a
+ * channel force close.
+ *
* This method should return a different value each time it is called, to avoid linking
* on-chain funds across channels as controlled to the same user.
*/
- ShutdownScript get_shutdown_scriptpubkey();
+ Result_ShutdownScriptNoneZ get_shutdown_scriptpubkey();
}
private static class LDKSignerProviderHolder { SignerProvider held; }
public static SignerProvider new_impl(SignerProviderInterface arg) {
@Override public long derive_channel_signer(long channel_value_satoshis, byte[] channel_keys_id) {
WriteableEcdsaChannelSigner ret = arg.derive_channel_signer(channel_value_satoshis, channel_keys_id);
Reference.reachabilityFence(arg);
- long result = ret == null ? 0 : ret.clone_ptr();
+ long result = ret.clone_ptr();
if (impl_holder.held != null) { impl_holder.held.ptrs_to.add(ret); };
return result;
}
@Override public long read_chan_signer(byte[] reader) {
Result_WriteableEcdsaChannelSignerDecodeErrorZ ret = arg.read_chan_signer(reader);
Reference.reachabilityFence(arg);
- long result = ret == null ? 0 : ret.clone_ptr();
+ long result = ret.clone_ptr();
return result;
}
- @Override public byte[] get_destination_script() {
- byte[] ret = arg.get_destination_script();
+ @Override public long get_destination_script(byte[] channel_keys_id) {
+ Result_CVec_u8ZNoneZ ret = arg.get_destination_script(channel_keys_id);
Reference.reachabilityFence(arg);
- return ret;
+ long result = ret.clone_ptr();
+ return result;
}
@Override public long get_shutdown_scriptpubkey() {
- ShutdownScript ret = arg.get_shutdown_scriptpubkey();
+ Result_ShutdownScriptNoneZ ret = arg.get_shutdown_scriptpubkey();
Reference.reachabilityFence(arg);
- long result = ret == null ? 0 : ret.clone_ptr();
+ long result = ret.clone_ptr();
return result;
}
});
return impl_holder.held;
}
/**
- * Generates a unique `channel_keys_id` that can be used to obtain a [`Self::Signer`] through
+ * Generates a unique `channel_keys_id` that can be used to obtain a [`Self::EcdsaSigner`] through
* [`SignerProvider::derive_channel_signer`]. The `user_channel_id` is provided to allow
* implementations of [`SignerProvider`] to maintain a mapping between itself and the generated
* `channel_keys_id`.
* This method is slowly being phased out -- it will only be called when reading objects
* written by LDK versions prior to 0.0.113.
*
- * [`Signer`]: Self::Signer
+ * [`Signer`]: Self::EcdsaSigner
* [`ChannelMonitor`]: crate::chain::channelmonitor::ChannelMonitor
* [`ChannelManager`]: crate::ln::channelmanager::ChannelManager
*/
/**
* Get a script pubkey which we send funds to when claiming on-chain contestable outputs.
*
+ * If this function returns an error, this will result in a channel failing to open.
+ *
* This method should return a different value each time it is called, to avoid linking
- * on-chain funds across channels as controlled to the same user.
+ * on-chain funds across channels as controlled to the same user. `channel_keys_id` may be
+ * used to derive a unique value for each channel.
*/
- public byte[] get_destination_script() {
- byte[] ret = bindings.SignerProvider_get_destination_script(this.ptr);
+ public Result_CVec_u8ZNoneZ get_destination_script(byte[] channel_keys_id) {
+ long ret = bindings.SignerProvider_get_destination_script(this.ptr, InternalUtils.check_arr_len(channel_keys_id, 32));
Reference.reachabilityFence(this);
- return ret;
+ Reference.reachabilityFence(channel_keys_id);
+ if (ret >= 0 && ret <= 4096) { return null; }
+ Result_CVec_u8ZNoneZ ret_hu_conv = Result_CVec_u8ZNoneZ.constr_from_ptr(ret);
+ return ret_hu_conv;
}
/**
* Get a script pubkey which we will send funds to when closing a channel.
*
+ * If this function returns an error, this will result in a channel failing to open or close.
+ * In the event of a failure when the counterparty is initiating a close, this can result in a
+ * channel force close.
+ *
* This method should return a different value each time it is called, to avoid linking
* on-chain funds across channels as controlled to the same user.
*/
- public ShutdownScript get_shutdown_scriptpubkey() {
+ public Result_ShutdownScriptNoneZ get_shutdown_scriptpubkey() {
long ret = bindings.SignerProvider_get_shutdown_scriptpubkey(this.ptr);
Reference.reachabilityFence(this);
if (ret >= 0 && ret <= 4096) { return null; }
- org.ldk.structs.ShutdownScript ret_hu_conv = null; if (ret < 0 || ret > 4096) { ret_hu_conv = new org.ldk.structs.ShutdownScript(null, ret); }
- if (ret_hu_conv != null) { ret_hu_conv.ptrs_to.add(this); };
+ Result_ShutdownScriptNoneZ ret_hu_conv = Result_ShutdownScriptNoneZ.constr_from_ptr(ret);
return ret_hu_conv;
}