diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts index 39608135..488e34ca 100644 --- a/packages/stargate/src/signingstargateclient.ts +++ b/packages/stargate/src/signingstargateclient.ts @@ -276,11 +276,7 @@ export class SigningStargateClient extends StargateClient { if (explicitSignerData) { signerData = explicitSignerData; } else { - const accountFromChain = await this.getAccount(signerAddress); - if (!accountFromChain) { - throw new Error("Account not found"); - } - const { accountNumber, sequence } = accountFromChain; + const { accountNumber, sequence } = await this.getSequence(signerAddress); const chainId = await this.getChainId(); signerData = { accountNumber, sequence, chainId }; } diff --git a/packages/stargate/src/stargateclient.spec.ts b/packages/stargate/src/stargateclient.spec.ts index c28e67b0..e8791532 100644 --- a/packages/stargate/src/stargateclient.spec.ts +++ b/packages/stargate/src/stargateclient.spec.ts @@ -131,12 +131,13 @@ describe("StargateClient", () => { client.disconnect(); }); - it("returns null for non-existent address", async () => { + it("rejects for non-existent address", async () => { pendingWithoutSimapp(); const client = await StargateClient.connect(simapp.tendermintUrl); - const account = await client.getSequence(nonExistentAddress); - expect(account).toBeNull(); + await expectAsync(client.getSequence(nonExistentAddress)).toBeRejectedWithError( + /account does not exist on chain/i, + ); client.disconnect(); }); diff --git a/packages/stargate/src/stargateclient.ts b/packages/stargate/src/stargateclient.ts index bbfb7ff3..7cf1e2b8 100644 --- a/packages/stargate/src/stargateclient.ts +++ b/packages/stargate/src/stargateclient.ts @@ -177,14 +177,17 @@ export class StargateClient { return account ? accountFromAny(account) : null; } - public async getSequence(address: string): Promise { + public async getSequence(address: string): Promise { const account = await this.getAccount(address); - return account - ? { - accountNumber: account.accountNumber, - sequence: account.sequence, - } - : null; + if (!account) { + throw new Error( + "Account does not exist on chain. Send some tokens there before trying to query sequence.", + ); + } + return { + accountNumber: account.accountNumber, + sequence: account.sequence, + }; } public async getBlock(height?: number): Promise {