From 4c8c27cc372995ce0c944a34d5ca3d443ee4ee4a Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Thu, 6 Apr 2023 18:19:35 +0200 Subject: [PATCH] Implement Tendermint auto-detection in StargateClient --- packages/stargate/src/stargateclient.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/stargate/src/stargateclient.ts b/packages/stargate/src/stargateclient.ts index d4969afa..c412f262 100644 --- a/packages/stargate/src/stargateclient.ts +++ b/packages/stargate/src/stargateclient.ts @@ -5,6 +5,7 @@ import { Uint53 } from "@cosmjs/math"; import { HttpEndpoint, Tendermint34Client, + Tendermint37Client, TendermintClient, toRfc3339WithNanoseconds, } from "@cosmjs/tendermint-rpc"; @@ -205,7 +206,18 @@ export class StargateClient { endpoint: string | HttpEndpoint, options: StargateClientOptions = {}, ): Promise { - const tmClient = await Tendermint34Client.connect(endpoint); + // Tendermint/CometBFT 0.34/0.37 auto-detection. Starting with 0.37 we seem to get reliable versions again 🎉 + // Using 0.34 as the fallback. + let tmClient: TendermintClient; + const tm37Client = await Tendermint37Client.connect(endpoint); + const version = (await tm37Client.status()).nodeInfo.version; + if (version.startsWith("0.37.")) { + tmClient = tm37Client; + } else { + tm37Client.disconnect(); + tmClient = await Tendermint34Client.connect(endpoint); + } + return StargateClient.create(tmClient, options); }