From 1f8b886a1951a7a1682a5ae88d39909722f0715c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 17 Feb 2025 16:14:25 +0400 Subject: [PATCH] chore: fix signing for amino signers toolbox --- .changeset/odd-feet-fly.md | 5 ++++ .../toolboxes/cosmos/src/toolbox/thorchain.ts | 30 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 .changeset/odd-feet-fly.md diff --git a/.changeset/odd-feet-fly.md b/.changeset/odd-feet-fly.md new file mode 100644 index 000000000..abc0b5d52 --- /dev/null +++ b/.changeset/odd-feet-fly.md @@ -0,0 +1,5 @@ +--- +"@swapkit/toolbox-cosmos": patch +--- + +Fixes deposit signing for THORChain in keplr diff --git a/packages/toolboxes/cosmos/src/toolbox/thorchain.ts b/packages/toolboxes/cosmos/src/toolbox/thorchain.ts index cf9fb2fed..f5ed78434 100644 --- a/packages/toolboxes/cosmos/src/toolbox/thorchain.ts +++ b/packages/toolboxes/cosmos/src/toolbox/thorchain.ts @@ -47,6 +47,7 @@ import { getRPC, } from "../util"; +import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx"; import { BaseCosmosToolbox } from "./BaseCosmosToolbox"; const secp256k1HdWalletFromMnemonic = @@ -290,9 +291,32 @@ export const BaseThorchainToolbox = ({ const aminoMessage = buildAminoMsg({ assetValue, from, recipient, memo, chain }); - const preparedMessage = isAminoSigner - ? aminoMessage - : parseAminoMessageForDirectSigning(aminoMessage); + if (isAminoSigner) { + const msgSign = [convertToSignable(aminoMessage, chain)]; + + const { signatures, authInfoBytes } = await signingClient.sign( + from, + msgSign, + defaultFee, + memo, + ); + + const tx = TxRaw.encode({ + signatures, + authInfoBytes, + bodyBytes: await buildEncodedTxBody({ + chain, + msgs: [aminoMessage].map(parseAminoMessageForDirectSigning), + memo, + }), + }).finish(); + + const txResponse = await signingClient.broadcastTx(tx); + + return txResponse.transactionHash; + } + + const preparedMessage = parseAminoMessageForDirectSigning(aminoMessage); const msgSign = convertToSignable(preparedMessage, chain);