From b252074c111e689210044f955adf766c4616a4e5 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 11 Nov 2020 15:42:27 +0100 Subject: [PATCH 1/2] stargate: Add IBC packetAcknowledgements query --- packages/stargate/src/queries/ibc.ts | 13 +++++++++++++ packages/stargate/types/queries/ibc.d.ts | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/packages/stargate/src/queries/ibc.ts b/packages/stargate/src/queries/ibc.ts index 6c5b099d..0996fe78 100644 --- a/packages/stargate/src/queries/ibc.ts +++ b/packages/stargate/src/queries/ibc.ts @@ -46,6 +46,11 @@ export interface IbcExtension { channelId: string, sequence: number, ) => Promise; + readonly packetAcknowledgements: ( + portId: string, + channelId: string, + paginationKey?: Uint8Array, + ) => Promise; readonly unreceivedPackets: ( portId: string, channelId: string, @@ -175,6 +180,14 @@ export function setupIbcExtension(base: QueryClient): IbcExtension { }); return toObject(response); }, + packetAcknowledgements: async (portId: string, channelId: string, paginationKey?: Uint8Array) => { + const response = await channelQueryService.packetAcknowledgements({ + portId: portId, + channelId: channelId, + pagination: paginationKey ? { key: paginationKey } : undefined, + }); + return toObject(response); + }, unreceivedPackets: async ( portId: string, channelId: string, diff --git a/packages/stargate/types/queries/ibc.d.ts b/packages/stargate/types/queries/ibc.d.ts index f30acd4e..7d826b11 100644 --- a/packages/stargate/types/queries/ibc.d.ts +++ b/packages/stargate/types/queries/ibc.d.ts @@ -35,6 +35,11 @@ export interface IbcExtension { channelId: string, sequence: number, ) => Promise; + readonly packetAcknowledgements: ( + portId: string, + channelId: string, + paginationKey?: Uint8Array, + ) => Promise; readonly unreceivedPackets: ( portId: string, channelId: string, From a67569d9bd957ea49880bc54149b92a3040a651f Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 11 Nov 2020 15:42:44 +0100 Subject: [PATCH 2/2] stargate: Add tests for IBC packetAcknowledgements --- packages/stargate/src/queries/ibc.spec.ts | 19 +++++++++++++++- .../stargate/src/queries/ibctestdata.spec.ts | 22 ++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/stargate/src/queries/ibc.spec.ts b/packages/stargate/src/queries/ibc.spec.ts index ce1c51fb..82463ef2 100644 --- a/packages/stargate/src/queries/ibc.spec.ts +++ b/packages/stargate/src/queries/ibc.spec.ts @@ -92,13 +92,30 @@ describe("IbcExtension", () => { ibcTest.channelId, 1, ); - expect(response.acknowledgement).toEqual(ibcTest.acknowledgement); + expect(response.acknowledgement).toEqual(ibcTest.packetAcknowledgements[0].data); expect(response.proofHeight).toBeInstanceOf(ibc.core.client.v1.Height); tmClient.disconnect(); }); }); + describe("packetAcknowledgements", () => { + it("works", async () => { + pendingWithoutSimapp(); + const [client, tmClient] = await makeClientWithIbc(simapp.tendermintUrl); + + const response = await client.ibc.unverified.packetAcknowledgements( + ibcTest.portId, + ibcTest.channelId, + ); + expect(response.acknowledgements).toEqual(ibcTest.packetAcknowledgements); + expect(response.pagination).toBeInstanceOf(cosmos.base.query.v1beta1.PageResponse); + expect(response.height).toBeInstanceOf(ibc.core.client.v1.Height); + + tmClient.disconnect(); + }); + }); + describe("unreceivedPackets", () => { it("works", async () => { pendingWithoutSimapp(); diff --git a/packages/stargate/src/queries/ibctestdata.spec.ts b/packages/stargate/src/queries/ibctestdata.spec.ts index c6cd3ba6..d6fe2fac 100644 --- a/packages/stargate/src/queries/ibctestdata.spec.ts +++ b/packages/stargate/src/queries/ibctestdata.spec.ts @@ -42,7 +42,27 @@ export const packetState = ibc.core.channel.v1.PacketState.create({ sequence: Long.fromInt(4, true), data: commitmentData, }); -export const acknowledgement = fromBase64("9RKC5OuTvBsFMtD79dHHvb9qCxw08IKsSJlAwmiw8tI="); + +export const packetAcknowledgements = [ + ibc.core.channel.v1.PacketState.create({ + portId: portId, + channelId: channelId, + sequence: Long.fromInt(1, true), + data: fromBase64("9RKC5OuTvBsFMtD79dHHvb9qCxw08IKsSJlAwmiw8tI="), + }), + ibc.core.channel.v1.PacketState.create({ + portId: portId, + channelId: channelId, + sequence: Long.fromInt(2, true), + data: fromBase64("Nj784gGVOFk2mdt+wAk/LOoPdUOo+5+0JfYs0yAubZU="), + }), + ibc.core.channel.v1.PacketState.create({ + portId: portId, + channelId: channelId, + sequence: Long.fromInt(3, true), + data: fromBase64("+lLTGP1dlSD6MBpJgBIvx98Psd3U2xo500K7JyMkya8="), + }), +]; export const connection = ibc.core.connection.v1.ConnectionEnd.create({ clientId: clientId,