From ecbdae969203498b454b56986fe2272a15be0cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Diamond?= <32074058+Andre-Diamond@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:17:56 +0200 Subject: [PATCH 1/2] fix(multisig): update fallback logic in multisig import validation - Modified the fallback mechanism to return an empty string when no aligned stake key is available, improving clarity in the validation process. - Ensured consistency in return values for stake key handling, aligning with the expected format. --- src/utils/validateMultisigImport.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/validateMultisigImport.ts b/src/utils/validateMultisigImport.ts index 0643dec..72e7b7e 100644 --- a/src/utils/validateMultisigImport.ts +++ b/src/utils/validateMultisigImport.ts @@ -425,10 +425,10 @@ export async function validateMultisigImportPayload(payload: unknown): Promise { From 3ce4b756b05b57039c797c9aedf7f12d1018f04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Diamond?= <32074058+Andre-Diamond@users.noreply.github.com> Date: Fri, 24 Oct 2025 08:48:00 +0200 Subject: [PATCH 2/2] refactor(multisig): improve fallback logic for deriving reward addresses - Updated the fallback mechanism in the multisig import validation to derive reward addresses directly from script key hashes when no matching stake key is found. - Enhanced error handling to ensure robustness during address resolution attempts, maintaining consistency in return values. --- src/utils/validateMultisigImport.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/utils/validateMultisigImport.ts b/src/utils/validateMultisigImport.ts index 72e7b7e..90ca33c 100644 --- a/src/utils/validateMultisigImport.ts +++ b/src/utils/validateMultisigImport.ts @@ -459,7 +459,7 @@ export async function validateMultisigImportPayload(payload: unknown): Promise { const m = lowerMatches.get(sig.toLowerCase()); const providedStakeHex = m?.signerStakeKey; @@ -481,8 +481,22 @@ export async function validateMultisigImportPayload(payload: unknown): Promise = network === undefined ? [0, 1] : [network as 0 | 1]; + for (const netId of tryNetworks) { + try { + const addr = serializeRewardAddress(hex, false, netId); + const resolved = stakeKeyHash(addr)?.toLowerCase(); + if (resolved === hex) { + return addr; + } + } catch { + // continue to next + } + } + // If unable to derive, fall back to the raw key hash + return hex; }); }