From 4d1f2e1a0ee17348448c2e2ec2918de817999839 Mon Sep 17 00:00:00 2001 From: AlexanderFSP Date: Mon, 29 Apr 2024 17:28:59 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20inconsistent=20gas=20multi?= =?UTF-8?q?plier=20value=20between=20`signAndBroadcast`=20and=20`signAndBr?= =?UTF-8?q?oadcastSync`=20methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/cosmwasm-stargate/src/signingcosmwasmclient.ts | 9 +++++---- packages/stargate/src/signingstargateclient.ts | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts index 6d1b9fd2..545eb01d 100644 --- a/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts +++ b/packages/cosmwasm-stargate/src/signingcosmwasmclient.ts @@ -202,6 +202,9 @@ export class SigningCosmWasmClient extends CosmWasmClient { private readonly signer: OfflineSigner; private readonly aminoTypes: AminoTypes; private readonly gasPrice: GasPrice | undefined; + // Starting with Cosmos SDK 0.47, we see many cases in which 1.3 is not enough anymore + // E.g. https://github.com/cosmos/cosmos-sdk/issues/16020 + private readonly gasMultiplier = 1.4; /** * Creates an instance by connecting to the given CometBFT RPC endpoint. @@ -614,9 +617,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { if (fee == "auto" || typeof fee === "number") { assertDefined(this.gasPrice, "Gas price must be set in the client options when auto gas is used."); const gasEstimation = await this.simulate(signerAddress, messages, memo); - // Starting with Cosmos SDK 0.47, we see many cases in which 1.3 is not enough anymore - // E.g. https://github.com/cosmos/cosmos-sdk/issues/16020 - const multiplier = typeof fee === "number" ? fee : 1.4; + const multiplier = typeof fee === "number" ? fee : this.gasMultiplier; usedFee = calculateFee(Math.round(gasEstimation * multiplier), this.gasPrice); } else { usedFee = fee; @@ -652,7 +653,7 @@ export class SigningCosmWasmClient extends CosmWasmClient { if (fee == "auto" || typeof fee === "number") { assertDefined(this.gasPrice, "Gas price must be set in the client options when auto gas is used."); const gasEstimation = await this.simulate(signerAddress, messages, memo); - const multiplier = typeof fee === "number" ? fee : 1.3; + const multiplier = typeof fee === "number" ? fee : this.gasMultiplier; usedFee = calculateFee(Math.round(gasEstimation * multiplier), this.gasPrice); } else { usedFee = fee; diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts index 13e4461f..840d3148 100644 --- a/packages/stargate/src/signingstargateclient.ts +++ b/packages/stargate/src/signingstargateclient.ts @@ -110,6 +110,9 @@ export class SigningStargateClient extends StargateClient { private readonly signer: OfflineSigner; private readonly aminoTypes: AminoTypes; private readonly gasPrice: GasPrice | undefined; + // Starting with Cosmos SDK 0.47, we see many cases in which 1.3 is not enough anymore + // E.g. https://github.com/cosmos/cosmos-sdk/issues/16020 + private readonly gasMultiplier = 1.4; /** * Creates an instance by connecting to the given CometBFT RPC endpoint. @@ -308,9 +311,7 @@ export class SigningStargateClient extends StargateClient { if (fee == "auto" || typeof fee === "number") { assertDefined(this.gasPrice, "Gas price must be set in the client options when auto gas is used."); const gasEstimation = await this.simulate(signerAddress, messages, memo); - // Starting with Cosmos SDK 0.47, we see many cases in which 1.3 is not enough anymore - // E.g. https://github.com/cosmos/cosmos-sdk/issues/16020 - const multiplier = typeof fee === "number" ? fee : 1.4; + const multiplier = typeof fee === "number" ? fee : this.gasMultiplier; usedFee = calculateFee(Math.round(gasEstimation * multiplier), this.gasPrice); } else { usedFee = fee; @@ -337,7 +338,7 @@ export class SigningStargateClient extends StargateClient { if (fee == "auto" || typeof fee === "number") { assertDefined(this.gasPrice, "Gas price must be set in the client options when auto gas is used."); const gasEstimation = await this.simulate(signerAddress, messages, memo); - const multiplier = typeof fee === "number" ? fee : 1.3; + const multiplier = typeof fee === "number" ? fee : this.gasMultiplier; usedFee = calculateFee(Math.round(gasEstimation * multiplier), this.gasPrice); } else { usedFee = fee;