From fe3764f88ecb0974d7f30a7dfb57ba57729540ec Mon Sep 17 00:00:00 2001 From: erhant Date: Tue, 14 Jul 2026 17:25:17 +0300 Subject: [PATCH] fix(sequencer): use `ED25519_SECRET_KEY_SIZE` and retain `BoundedError` message --- integration_tests/tests/multi_sequencer.rs | 6 +++--- lez/sequencer/core/src/block_publisher.rs | 8 +++++--- lez/sequencer/service/src/service.rs | 4 ++-- test_fixtures/src/setup.rs | 9 ++++++--- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/integration_tests/tests/multi_sequencer.rs b/integration_tests/tests/multi_sequencer.rs index 0e4055ea..c0c4a265 100644 --- a/integration_tests/tests/multi_sequencer.rs +++ b/integration_tests/tests/multi_sequencer.rs @@ -16,7 +16,7 @@ use integration_tests::{ indexer_client::IndexerClient, setup::{setup_bedrock_node, setup_indexer, setup_sequencer_with_bedrock_key}, }; -use logos_blockchain_key_management_system_service::keys::Ed25519Key; +use logos_blockchain_key_management_system_service::keys::{ED25519_SECRET_KEY_SIZE, Ed25519Key}; use sequencer_service_protocol::ConfigureChannelRequest; use sequencer_service_rpc::{RpcClient as _, SequencerClient, SequencerClientBuilder}; use testnet_initial_state::{initial_pub_accounts_private_keys, initial_public_user_accounts}; @@ -39,8 +39,8 @@ async fn multi_sequencer_committee_converges() -> Result<()> { .context("Failed to set up Bedrock node")?; // Fixed seeds so A can accredit B's public key before B exists. - let key_a = [0xA1_u8; 32]; - let key_b = [0xB2_u8; 32]; + let key_a = [0xA1_u8; ED25519_SECRET_KEY_SIZE]; + let key_b = [0xB2_u8; ED25519_SECRET_KEY_SIZE]; let pub_a = Ed25519Key::from_bytes(&key_a).public_key(); let pub_b = Ed25519Key::from_bytes(&key_b).public_key(); diff --git a/lez/sequencer/core/src/block_publisher.rs b/lez/sequencer/core/src/block_publisher.rs index f429e780..105e0c77 100644 --- a/lez/sequencer/core/src/block_publisher.rs +++ b/lez/sequencer/core/src/block_publisher.rs @@ -8,7 +8,9 @@ use logos_blockchain_core::mantle::{ channel::{SlotTimeframe, SlotTimeout}, ops::channel::{ChannelId, config::Keys, inscribe::Inscription}, }; -pub use logos_blockchain_key_management_system_service::keys::{Ed25519Key, ZkKey}; +pub use logos_blockchain_key_management_system_service::keys::{ + ED25519_SECRET_KEY_SIZE, Ed25519Key, ZkKey, +}; pub use logos_blockchain_zone_sdk::sequencer::SequencerCheckpoint; use logos_blockchain_zone_sdk::{ CommonHttpClient, @@ -351,8 +353,8 @@ impl BlockPublisherTrait for ZoneSdkPublisher { configuration_threshold: u16, withdraw_threshold: u16, ) -> Result<()> { - let keys = Keys::try_from(keys) - .map_err(|_err| anyhow!("Channel key list must be non-empty and within bounds"))?; + let keys = + Keys::try_from(keys).map_err(|err| anyhow!("Invalid channel key list: {err}"))?; let (resp_tx, resp_rx) = oneshot::channel(); self.command_tx .send(Command::ConfigureChannel { diff --git a/lez/sequencer/service/src/service.rs b/lez/sequencer/service/src/service.rs index b8fce3df..53fc3897 100644 --- a/lez/sequencer/service/src/service.rs +++ b/lez/sequencer/service/src/service.rs @@ -248,13 +248,13 @@ fn parse_channel_key(hex_key: &str) -> Result, channel_id: ChannelId, cross_zone: Option, - bedrock_signing_key: [u8; 32], + bedrock_signing_key: [u8; ED25519_SECRET_KEY_SIZE], ) -> Result<(SequencerHandle, TempDir)> { setup_sequencer_inner( partial, @@ -205,7 +208,7 @@ async fn setup_sequencer_inner( init: SequencerInit<'_>, channel_id: ChannelId, cross_zone: Option, - bedrock_signing_key: Option<[u8; 32]>, + bedrock_signing_key: Option<[u8; ED25519_SECRET_KEY_SIZE]>, ) -> Result<(SequencerHandle, TempDir)> { let temp_sequencer_dir = tempfile::tempdir().context("Failed to create temp dir for sequencer home")?;