From 35e2af63890002f67bd5953617c34025b80e53e1 Mon Sep 17 00:00:00 2001 From: SergeyG-Solicy Date: Wed, 10 Dec 2025 16:58:27 +0400 Subject: [PATCH 1/2] Added ATOM (Cosmos Hub) chain support for transaction broadcasting --- sdk/localsdk/multichain/configs/chainProviders.ts | 4 ++++ sdk/localsdk/multichain/configs/ibcProviders.ts | 6 +++--- src/features/multichain/routines/executors/pay.ts | 1 + src/libs/blockchain/gcr/gcr_routines/identityManager.ts | 2 ++ src/utilities/validateUint8Array.ts | 6 ++++++ 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/sdk/localsdk/multichain/configs/chainProviders.ts b/sdk/localsdk/multichain/configs/chainProviders.ts index d1022a474..c73088c1b 100644 --- a/sdk/localsdk/multichain/configs/chainProviders.ts +++ b/sdk/localsdk/multichain/configs/chainProviders.ts @@ -33,6 +33,10 @@ export const chainProviders = { mainnet: "https://stargaze-rpc.publicnode.com:443", testnet: "https://rpc.elgafar-1.stargaze-apis.com", }, + atom: { + mainnet: "https://cosmos-rpc.publicnode.com:443", + testnet: "https://rpc.provider-sentry-01.ics-testnet.polypore.xyz", + }, near: { mainnet: "https://rpc.near.org", testnet: "https://rpc.testnet.near.org", diff --git a/sdk/localsdk/multichain/configs/ibcProviders.ts b/sdk/localsdk/multichain/configs/ibcProviders.ts index 8d4a43ad5..dd6897588 100644 --- a/sdk/localsdk/multichain/configs/ibcProviders.ts +++ b/sdk/localsdk/multichain/configs/ibcProviders.ts @@ -1,6 +1,6 @@ export default { cosmos: { - mainnet: "", - testnet: "https://rpc.sentry-01.theta-testnet.polypore.xyz", + mainnet: "https://cosmos-rpc.publicnode.com:443", + testnet: "https://rpc.provider-sentry-01.ics-testnet.polypore.xyz", }, -} \ No newline at end of file +} diff --git a/src/features/multichain/routines/executors/pay.ts b/src/features/multichain/routines/executors/pay.ts index 3ee2616f4..c1ea365c7 100644 --- a/src/features/multichain/routines/executors/pay.ts +++ b/src/features/multichain/routines/executors/pay.ts @@ -69,6 +69,7 @@ export default async function handlePayOperation( break case "ibc": + case "atom": result = await genericJsonRpcPay(multichain.IBC, rpcUrl, operation) break diff --git a/src/libs/blockchain/gcr/gcr_routines/identityManager.ts b/src/libs/blockchain/gcr/gcr_routines/identityManager.ts index 9b398ab4f..0aca5fb19 100644 --- a/src/libs/blockchain/gcr/gcr_routines/identityManager.ts +++ b/src/libs/blockchain/gcr/gcr_routines/identityManager.ts @@ -44,6 +44,7 @@ const chains: { [key: string]: typeof DefaultChain } = { ton: TON, xrpl: XRPL, ibc: IBC, + atom: IBC, near: NEAR, // @ts-expect-error - BTC module contains more fields than the DefaultChain type btc: BTC, @@ -207,6 +208,7 @@ export default class IdentityManager { chainId === "xrpl" || chainId === "ton" || chainId === "ibc" || + chainId === "atom" || chainId === "near" ) { messageVerified = await sdk.verifyMessage( diff --git a/src/utilities/validateUint8Array.ts b/src/utilities/validateUint8Array.ts index 9763a3fa5..5fa78eebf 100644 --- a/src/utilities/validateUint8Array.ts +++ b/src/utilities/validateUint8Array.ts @@ -4,6 +4,12 @@ export default function validateIfUint8Array(input: unknown): Uint8Array | unkno return input } + // Handle hex strings + if (typeof input === "string" && input.startsWith("0x")) { + const hexString = input.slice(2) // Remove "0x" prefix + return Buffer.from(hexString, "hex") + } + // Type guard: check if input is a record-like object with numeric integer keys and number values if (typeof input === "object" && input !== null) { // Safely cast to indexable type after basic validation From 2b77a900dff744d03d5664f06d828b4a1e1a26fa Mon Sep 17 00:00:00 2001 From: SergeyG-Solicy Date: Wed, 10 Dec 2025 17:25:14 +0400 Subject: [PATCH 2/2] Fixed qodo comments --- sdk/localsdk/multichain/configs/ibcProviders.ts | 6 ------ src/utilities/validateUint8Array.ts | 7 ++++++- 2 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 sdk/localsdk/multichain/configs/ibcProviders.ts diff --git a/sdk/localsdk/multichain/configs/ibcProviders.ts b/sdk/localsdk/multichain/configs/ibcProviders.ts deleted file mode 100644 index dd6897588..000000000 --- a/sdk/localsdk/multichain/configs/ibcProviders.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - cosmos: { - mainnet: "https://cosmos-rpc.publicnode.com:443", - testnet: "https://rpc.provider-sentry-01.ics-testnet.polypore.xyz", - }, -} diff --git a/src/utilities/validateUint8Array.ts b/src/utilities/validateUint8Array.ts index 5fa78eebf..60cbce0c1 100644 --- a/src/utilities/validateUint8Array.ts +++ b/src/utilities/validateUint8Array.ts @@ -7,7 +7,12 @@ export default function validateIfUint8Array(input: unknown): Uint8Array | unkno // Handle hex strings if (typeof input === "string" && input.startsWith("0x")) { const hexString = input.slice(2) // Remove "0x" prefix - return Buffer.from(hexString, "hex") + // Validate hex string before conversion + if (hexString.length % 2 === 0 && /^[0-9a-fA-F]*$/.test(hexString)) { + return Buffer.from(hexString, "hex") + } + + return input } // Type guard: check if input is a record-like object with numeric integer keys and number values