plugins: lsps: move lsps0 model into proto module
What changed, and why it matters
This commit is a straightforward code reorganization: it moves the data structures that define the LSPS0 protocol messages from one internal module to another. No behavior changes, no bug fixes, and no security-sensitive logic is introduced or altered.
No security action required; treat as normal refactoring review.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch refactors the lsps-plugin crate by relocating the Lsps0listProtocolsRequest and Lsps0listProtocolsResponse types (plus the Msat primitive import path) from lsps0::model to proto::lsps0. It updates import statements in client.rs, handler.rs, and service.rs accordingly, deletes plugins/lsps-plugin/src/lsps0/model.rs, and creates plugins/lsps-plugin/src/proto/lsps0.rs with identical content. The commit message explicitly frames this as part of a modularization series to separate plugin runtime from library code for third-party plugin implementations.
Changed components
plugins/lsps-plugin/src/client.rsplugins/lsps-plugin/src/lsps0/handler.rsplugins/lsps-plugin/src/lsps0/mod.rsplugins/lsps-plugin/src/proto/lsps0.rsplugins/lsps-plugin/src/proto/mod.rsplugins/lsps-plugin/src/service.rsInspect captured patch +23 / −24
diff --git a/plugins/lsps-plugin/src/client.rs b/plugins/lsps-plugin/src/client.rs
index 88189c64..6f949a51 100644
--- a/plugins/lsps-plugin/src/client.rs
+++ b/plugins/lsps-plugin/src/client.rs
@@ -2,10 +2,8 @@ use anyhow::{anyhow, bail, Context};
use bitcoin::hashes::{hex::FromHex, sha256, Hash};
use chrono::{Duration, Utc};
use cln_lsps::jsonrpc::client::JsonRpcClient;
-use cln_lsps::lsps0::primitives::Msat;
-use cln_lsps::lsps0::{
- self,
- transport::{Bolt8Transport, CustomMessageHookManager, WithCustomMessageHookManager},
+use cln_lsps::lsps0::transport::{
+ Bolt8Transport, CustomMessageHookManager, WithCustomMessageHookManager,
};
use cln_lsps::lsps2::cln::tlv::encode_tu64;
use cln_lsps::lsps2::cln::{
@@ -16,6 +14,7 @@ use cln_lsps::lsps2::model::{
compute_opening_fee, Lsps2BuyRequest, Lsps2BuyResponse, Lsps2GetInfoRequest,
Lsps2GetInfoResponse, OpeningFeeParams,
};
+use cln_lsps::proto::lsps0::{Lsps0listProtocolsRequest, Lsps0listProtocolsResponse};
use cln_lsps::proto::primitives::Msat;
use cln_lsps::util;
use cln_lsps::LSP_FEATURE_BIT;
@@ -730,8 +729,8 @@ async fn on_lsps_listprotocols(
// Now create the client using the transport
let client = JsonRpcClient::new(transport);
- let request = lsps0::model::Lsps0listProtocolsRequest {};
- let res: lsps0::model::Lsps0listProtocolsResponse = client
+ let request = Lsps0listProtocolsRequest {};
+ let res: Lsps0listProtocolsResponse = client
.call_typed(request)
.await
.map_err(|e| anyhow!("lsps0.list_protocols call failed: {}", e))?;
diff --git a/plugins/lsps-plugin/src/lsps0/handler.rs b/plugins/lsps-plugin/src/lsps0/handler.rs
index 6b552f47..8e31f317 100644
--- a/plugins/lsps-plugin/src/lsps0/handler.rs
+++ b/plugins/lsps-plugin/src/lsps0/handler.rs
@@ -1,6 +1,6 @@
use crate::{
jsonrpc::{server::RequestHandler, JsonRpcResponse, RequestObject, RpcError},
- lsps0::model::{Lsps0listProtocolsRequest, Lsps0listProtocolsResponse},
+ proto::lsps0::{Lsps0listProtocolsRequest, Lsps0listProtocolsResponse},
util::unwrap_payload_with_peer_id,
};
use async_trait::async_trait;
diff --git a/plugins/lsps-plugin/src/lsps0/mod.rs b/plugins/lsps-plugin/src/lsps0/mod.rs
index d4959a32..91bf9cfe 100644
--- a/plugins/lsps-plugin/src/lsps0/mod.rs
+++ b/plugins/lsps-plugin/src/lsps0/mod.rs
@@ -1,3 +1,2 @@
pub mod handler;
-pub mod model;
pub mod transport;
diff --git a/plugins/lsps-plugin/src/lsps0/model.rs b/plugins/lsps-plugin/src/lsps0/model.rs
deleted file mode 100644
index 0327120e..00000000
--- a/plugins/lsps-plugin/src/lsps0/model.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use serde::{Deserialize, Serialize};
-
-use crate::jsonrpc::JsonRpcRequest;
-
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
-pub struct Lsps0listProtocolsRequest {}
-
-impl JsonRpcRequest for Lsps0listProtocolsRequest {
- const METHOD: &'static str = "lsps0.list_protocols";
-}
-
-#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
-pub struct Lsps0listProtocolsResponse {
- pub protocols: Vec<u8>,
-}
diff --git a/plugins/lsps-plugin/src/proto/lsps0.rs b/plugins/lsps-plugin/src/proto/lsps0.rs
new file mode 100644
index 00000000..0327120e
--- /dev/null
+++ b/plugins/lsps-plugin/src/proto/lsps0.rs
@@ -0,0 +1,15 @@
+use serde::{Deserialize, Serialize};
+
+use crate::jsonrpc::JsonRpcRequest;
+
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Lsps0listProtocolsRequest {}
+
+impl JsonRpcRequest for Lsps0listProtocolsRequest {
+ const METHOD: &'static str = "lsps0.list_protocols";
+}
+
+#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
+pub struct Lsps0listProtocolsResponse {
+ pub protocols: Vec<u8>,
+}
diff --git a/plugins/lsps-plugin/src/proto/mod.rs b/plugins/lsps-plugin/src/proto/mod.rs
index 23cd13c5..a47d8b07 100644
--- a/plugins/lsps-plugin/src/proto/mod.rs
+++ b/plugins/lsps-plugin/src/proto/mod.rs
@@ -1 +1,2 @@
+pub mod lsps0;
pub mod primitives;
diff --git a/plugins/lsps-plugin/src/service.rs b/plugins/lsps-plugin/src/service.rs
index 03f3f7e6..12567f30 100644
--- a/plugins/lsps-plugin/src/service.rs
+++ b/plugins/lsps-plugin/src/service.rs
@@ -4,11 +4,11 @@ use cln_lsps::jsonrpc::server::JsonRpcResponseWriter;
use cln_lsps::jsonrpc::TransportError;
use cln_lsps::jsonrpc::{server::JsonRpcServer, JsonRpcRequest};
use cln_lsps::lsps0::handler::Lsps0ListProtocolsHandler;
-use cln_lsps::lsps0::model::Lsps0listProtocolsRequest;
use cln_lsps::lsps0::transport::{self, CustomMsg};
use cln_lsps::lsps2::cln::{HtlcAcceptedRequest, HtlcAcceptedResponse};
use cln_lsps::lsps2::handler::{ClnApiRpc, HtlcAcceptedHookHandler};
use cln_lsps::lsps2::model::{Lsps2BuyRequest, Lsps2GetInfoRequest};
+use cln_lsps::proto::lsps0::Lsps0listProtocolsRequest;
use cln_lsps::util::wrap_payload_with_peer_id;
use cln_lsps::{lsps0, lsps2};
use cln_plugin::Plugin;
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.