From 49f93e9e8078e9f8e0d2f253c862587e7db594fe Mon Sep 17 00:00:00 2001 From: iPLAY888 <133153661+letmehateu@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:12:33 +0300 Subject: [PATCH 1/5] Update lib.rs --- rpc/kate-rpc/src/lib.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/rpc/kate-rpc/src/lib.rs b/rpc/kate-rpc/src/lib.rs index fd349a865..1eafb6141 100644 --- a/rpc/kate-rpc/src/lib.rs +++ b/rpc/kate-rpc/src/lib.rs @@ -193,6 +193,39 @@ where } } + + /// Checks if the block has non-empty commitments. + fn ensure_has_commitments(&self, header: &::Header, at: Block::Hash) -> RpcResult<()> { + match header.extension() { + HeaderExtension::V3(ext) => { + if ext.commitment.commitment.is_empty() { + return Err(internal_err!("Requested block {at} has empty commitments")); + } + }, + }; + Ok(()) + } + + /// Validates that the requested number of cells doesn't exceed the configured limit. + fn validate_cells_limit(&self, cells_count: usize) -> RpcResult<()> { + if cells_count > self.max_cells_size { + return Err(internal_err!( + "Cannot query ({}) more than {} amount of cells per request. Either increase the max cells size (--kate-max-cells-size) or query less amount of cells per request.", + cells_count, + self.max_cells_size + )); + } + Ok(()) + } + + /// Converts cells to position tuples (row, col). + fn cells_to_positions(cells: Cells) -> Vec<(u32, u32)> { + cells + .into_iter() + .map(|cell| (cell.row.0, cell.col.0)) + .collect() + } + #[async_trait] impl KateApiServer for Kate where From 2216804e77e55cf206035336f5911a8f0936ede1 Mon Sep 17 00:00:00 2001 From: iPLAY888 <133153661+letmehateu@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:13:16 +0300 Subject: [PATCH 2/5] Update lib.rs --- rpc/kate-rpc/src/lib.rs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/rpc/kate-rpc/src/lib.rs b/rpc/kate-rpc/src/lib.rs index 1eafb6141..7753a84f9 100644 --- a/rpc/kate-rpc/src/lib.rs +++ b/rpc/kate-rpc/src/lib.rs @@ -239,15 +239,8 @@ where let _metric_observer = MetricObserver::new(ObserveKind::KateQueryRows); let (api, at, number, block_len, extrinsics, header) = self.scope(at)?; - - match header.extension() { - HeaderExtension::V3(ext) => { - if ext.commitment.commitment.is_empty() { - return Err(internal_err!("Requested block {at} has empty commitments")); - } - }, - }; - + self.ensure_has_commitments(&header, at)?; + let grid_rows = api .rows(at, number, extrinsics, block_len, rows.into()) .map_err(|kate_err| internal_err!("Failed Kate rows: {kate_err:?}"))? From f7642cf54517c45940db419a1efd2f5fc9ad564a Mon Sep 17 00:00:00 2001 From: iPLAY888 <133153661+letmehateu@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:14:25 +0300 Subject: [PATCH 3/5] Update lib.rs --- rpc/kate-rpc/src/lib.rs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/rpc/kate-rpc/src/lib.rs b/rpc/kate-rpc/src/lib.rs index 7753a84f9..86eb2bc52 100644 --- a/rpc/kate-rpc/src/lib.rs +++ b/rpc/kate-rpc/src/lib.rs @@ -254,15 +254,7 @@ where cells: Cells, at: Option>, ) -> RpcResult> { - if cells.len() > self.max_cells_size { - return Err( - internal_err!( - "Cannot query ({}) more than {} amount of cells per request. Either increase the max cells size (--kate-max-cells-size) or query less amount of cells per request.", - cells.len(), - self.max_cells_size - ) - ); - } + self.validate_cells_limit(cells.len())?; let _metric_observer = MetricObserver::new(ObserveKind::KateQueryProof); From 8679c1cc2206ceb56c6fe54323140a5792786b58 Mon Sep 17 00:00:00 2001 From: iPLAY888 <133153661+letmehateu@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:15:01 +0300 Subject: [PATCH 4/5] Update lib.rs --- rpc/kate-rpc/src/lib.rs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/rpc/kate-rpc/src/lib.rs b/rpc/kate-rpc/src/lib.rs index 86eb2bc52..4f0e40cbb 100644 --- a/rpc/kate-rpc/src/lib.rs +++ b/rpc/kate-rpc/src/lib.rs @@ -259,18 +259,9 @@ where let _metric_observer = MetricObserver::new(ObserveKind::KateQueryProof); let (api, at, number, block_len, extrinsics, header) = self.scope(at)?; - match header.extension() { - HeaderExtension::V3(ext) => { - if ext.commitment.commitment.is_empty() { - return Err(internal_err!("Requested block {at} has empty commitments")); - } - }, - }; + self.ensure_has_commitments(&header, at)?; - let cells = cells - .into_iter() - .map(|cell| (cell.row.0, cell.col.0)) - .collect::>(); + let cells = Self::cells_to_positions(cells); let proof = api .proof(at, number, extrinsics, block_len, cells) .map_err(|kate_err| internal_err!("KateApi::proof failed: {kate_err:?}"))? From dba22d5382b97f7304ff9e0fc621020cae231477 Mon Sep 17 00:00:00 2001 From: iPLAY888 <133153661+letmehateu@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:15:53 +0300 Subject: [PATCH 5/5] Update lib.rs --- rpc/kate-rpc/src/lib.rs | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/rpc/kate-rpc/src/lib.rs b/rpc/kate-rpc/src/lib.rs index 4f0e40cbb..212e930e1 100644 --- a/rpc/kate-rpc/src/lib.rs +++ b/rpc/kate-rpc/src/lib.rs @@ -275,31 +275,14 @@ where cells: Cells, at: Option>, ) -> RpcResult> { - if cells.len() > self.max_cells_size { - return Err( - internal_err!( - "Cannot query ({}) more than {} amount of cells per request. Either increase the max cells size (--kate-max-cells-size) or query less amount of cells per request.", - cells.len(), - self.max_cells_size - ) - ); - } + self.validate_cells_limit(cells.len())?; let _metric_observer = MetricObserver::new(ObserveKind::KateQueryProof); let (api, at, number, block_len, extrinsics, header) = self.scope(at)?; - match header.extension() { - HeaderExtension::V3(ext) => { - if ext.commitment.commitment.is_empty() { - return Err(internal_err!("Requested block {at} has empty commitments")); - } - }, - }; + self.ensure_has_commitments(&header, at)?; - let cells = cells - .into_iter() - .map(|cell| (cell.row.0, cell.col.0)) - .collect::>(); + let cells = Self::cells_to_positions(cells); let proof = api .multiproof(at, number, extrinsics, block_len, cells) .map_err(|kate_err| internal_err!("KateApi::proof failed: {kate_err:?}"))?