From abbcaba50d5f53bed5f6c0d49f57bb8b7e1b39be Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Wed, 18 Sep 2024 16:25:46 +0800 Subject: [PATCH 1/6] feat: add sign param --- apps/indexer-coordinator/package.json | 2 +- .../src/payg/payg.resolver.ts | 6 ++- .../src/payg/payg.service.ts | 51 ++++++++++++++++++- apps/indexer-coordinator/yarn.lock | 8 +-- 4 files changed, 58 insertions(+), 9 deletions(-) diff --git a/apps/indexer-coordinator/package.json b/apps/indexer-coordinator/package.json index ad83b48c1..31021cbd6 100644 --- a/apps/indexer-coordinator/package.json +++ b/apps/indexer-coordinator/package.json @@ -45,7 +45,7 @@ "@nestjs/schedule": "^2.2.2", "@nestjs/serve-static": "^2.2.2", "@nestjs/typeorm": "8.1.4", - "@subql/contract-sdk": "1.3.0", + "@subql/contract-sdk": "1.3.1-0", "@subql/network-clients": "1.1.0", "@subql/network-config": "1.1.1", "@subql/network-query": "1.1.1", diff --git a/apps/indexer-coordinator/src/payg/payg.resolver.ts b/apps/indexer-coordinator/src/payg/payg.resolver.ts index d182452fe..216586197 100644 --- a/apps/indexer-coordinator/src/payg/payg.resolver.ts +++ b/apps/indexer-coordinator/src/payg/payg.resolver.ts @@ -43,9 +43,11 @@ export class PaygResolver { channelExtend( @Args('id') id: string, @Args('expiration') expiration: number, - @Args('price', { nullable: true }) price?: string + @Args('price', { nullable: true }) price?: string, + @Args('indexerSign', { nullable: true }) indexerSign?: string, + @Args('consumerSign', { nullable: true }) consumerSign?: string ) { - return this.paygService.extend(id, expiration, price); + return this.paygService.extend(id, expiration, price, indexerSign, consumerSign); } @Mutation(() => ChannelType) diff --git a/apps/indexer-coordinator/src/payg/payg.service.ts b/apps/indexer-coordinator/src/payg/payg.service.ts index 651438558..b04864c61 100644 --- a/apps/indexer-coordinator/src/payg/payg.service.ts +++ b/apps/indexer-coordinator/src/payg/payg.service.ts @@ -388,7 +388,13 @@ export class PaygService implements OnModuleInit { } } - async extend(id: string, expiration: number, price?: string): Promise { + async extend( + id: string, + expiration: number, + price?: string, + indexerSign?: string, + consumerSign?: string + ): Promise { const channel = await this.channel(id); if (!channel) { throw new Error(`channel not exist: ${id}`); @@ -396,6 +402,7 @@ export class PaygService implements OnModuleInit { let modified = false; + const preExpirationAt = channel.expiredAt; if (channel.expiredAt < expiration) { channel.expiredAt = expiration; modified = true; @@ -407,12 +414,52 @@ export class PaygService implements OnModuleInit { modified = true; } + let signed = false; + if (indexerSign && consumerSign) { + channel.lastConsumerSign = consumerSign; + channel.lastIndexerSign = indexerSign; + modified = true; + signed = true; + } + if (!modified) { return channel; } - logger.debug(`Extend state channel ${id}`); + logger.debug( + `Extend state channel ${id}. ${JSON.stringify(channel)} preExpirationAt:${preExpirationAt}` + ); + if (signed) { + await this.contract.sendTransaction({ + action: `state channel extend ${id}`, + type: TxType.check, + txFun: (overrides) => + this.contract + .getSdk() + .stateChannel.extend( + id, + preExpirationAt, + expiration - channel.expiredAt, + channel.lastIndexerSign, + channel.lastConsumerSign, + channel.price, + overrides + ), + gasFun: (overrides) => + this.contract + .getSdk() + .stateChannel.estimateGas.extend( + id, + preExpirationAt, + expiration - channel.expiredAt, + channel.lastIndexerSign, + channel.lastConsumerSign, + channel.price, + overrides + ), + }); + } return this.saveAndPublish(channel, PaygEvent.State); } diff --git a/apps/indexer-coordinator/yarn.lock b/apps/indexer-coordinator/yarn.lock index 9cc7ec074..e81e1d412 100644 --- a/apps/indexer-coordinator/yarn.lock +++ b/apps/indexer-coordinator/yarn.lock @@ -1673,10 +1673,10 @@ resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== -"@subql/contract-sdk@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-1.3.0.tgz#e6474369a2156fd3dfd50a84535d9a2894480198" - integrity sha512-vxd8xwtxDtNjv9WXYKx3pD12tdRDJJZ7Cm5yTtyH4piGcvLtJXehENxSBvCKvGtgpvzba8DiwDmbjIMYdomNzA== +"@subql/contract-sdk@1.3.1-0": + version "1.3.1-0" + resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-1.3.1-0.tgz#a4608fadaf1c7882d66f5764d1710c7e81026ec9" + integrity sha512-sdBA0eALPV3MuAamYTlD80TW/x+NTmDmS+nFocaMEivrmXimh8JsasnOmjs3p1DXqcqNlDCr2d++9ctSOr75dQ== "@subql/network-clients@1.1.0": version "1.1.0" From aa826fd3b155dfd57f49e994575d1770efd1bd6c Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Fri, 20 Sep 2024 15:08:34 +0800 Subject: [PATCH 2/6] fix: sign --- apps/indexer-coordinator/src/payg/payg.service.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/indexer-coordinator/src/payg/payg.service.ts b/apps/indexer-coordinator/src/payg/payg.service.ts index b04864c61..9df02af7f 100644 --- a/apps/indexer-coordinator/src/payg/payg.service.ts +++ b/apps/indexer-coordinator/src/payg/payg.service.ts @@ -400,6 +400,10 @@ export class PaygService implements OnModuleInit { throw new Error(`channel not exist: ${id}`); } + if (channel.status !== ChannelStatus.OPEN) { + throw new Error(`channel not open: ${id}`); + } + let modified = false; const preExpirationAt = channel.expiredAt; @@ -426,8 +430,12 @@ export class PaygService implements OnModuleInit { return channel; } + const expr = expiration - preExpirationAt; + logger.debug( - `Extend state channel ${id}. ${JSON.stringify(channel)} preExpirationAt:${preExpirationAt}` + `Extend state channel ${id}. ${JSON.stringify( + channel + )} preExpirationAt:${preExpirationAt} expr:${expr}` ); if (signed) { @@ -440,7 +448,7 @@ export class PaygService implements OnModuleInit { .stateChannel.extend( id, preExpirationAt, - expiration - channel.expiredAt, + expr, channel.lastIndexerSign, channel.lastConsumerSign, channel.price, @@ -452,7 +460,7 @@ export class PaygService implements OnModuleInit { .stateChannel.estimateGas.extend( id, preExpirationAt, - expiration - channel.expiredAt, + expr, channel.lastIndexerSign, channel.lastConsumerSign, channel.price, From 905251a3e32da37fd807dacd0fdc8c0829d9fb2d Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Mon, 23 Sep 2024 11:23:56 +0800 Subject: [PATCH 3/6] feat: remove lastSign --- .../indexer-coordinator/src/payg/payg.service.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/indexer-coordinator/src/payg/payg.service.ts b/apps/indexer-coordinator/src/payg/payg.service.ts index 9df02af7f..bbc8702ae 100644 --- a/apps/indexer-coordinator/src/payg/payg.service.ts +++ b/apps/indexer-coordinator/src/payg/payg.service.ts @@ -404,6 +404,10 @@ export class PaygService implements OnModuleInit { throw new Error(`channel not open: ${id}`); } + if (!indexerSign || !consumerSign) { + throw new Error(`require indexerSign and consumerSign: ${id}`); + } + let modified = false; const preExpirationAt = channel.expiredAt; @@ -420,8 +424,8 @@ export class PaygService implements OnModuleInit { let signed = false; if (indexerSign && consumerSign) { - channel.lastConsumerSign = consumerSign; - channel.lastIndexerSign = indexerSign; + // channel.lastConsumerSign = consumerSign; + // channel.lastIndexerSign = indexerSign; modified = true; signed = true; } @@ -449,8 +453,8 @@ export class PaygService implements OnModuleInit { id, preExpirationAt, expr, - channel.lastIndexerSign, - channel.lastConsumerSign, + indexerSign, + consumerSign, channel.price, overrides ), @@ -461,8 +465,8 @@ export class PaygService implements OnModuleInit { id, preExpirationAt, expr, - channel.lastIndexerSign, - channel.lastConsumerSign, + indexerSign, + consumerSign, channel.price, overrides ), From f4d4935d1f69e36090cc5d3d1e57022615cce3b1 Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Wed, 23 Oct 2024 09:12:07 +0800 Subject: [PATCH 4/6] feat: compatibility --- apps/indexer-coordinator/src/payg/payg.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/indexer-coordinator/src/payg/payg.service.ts b/apps/indexer-coordinator/src/payg/payg.service.ts index bbc8702ae..7d4605097 100644 --- a/apps/indexer-coordinator/src/payg/payg.service.ts +++ b/apps/indexer-coordinator/src/payg/payg.service.ts @@ -405,7 +405,8 @@ export class PaygService implements OnModuleInit { } if (!indexerSign || !consumerSign) { - throw new Error(`require indexerSign and consumerSign: ${id}`); + logger.debug(`extend channel requires indexerSign and consumerSign: ${id}`); + // throw new Error(`require indexerSign and consumerSign: ${id}`); } let modified = false; From ee8bd7c2d85ae830ee022b2e2315d3153c776a03 Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Thu, 24 Oct 2024 11:42:09 +0800 Subject: [PATCH 5/6] build: v2.6.0 --- apps/indexer-coordinator/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/indexer-coordinator/package.json b/apps/indexer-coordinator/package.json index 31021cbd6..9f2bcceb6 100644 --- a/apps/indexer-coordinator/package.json +++ b/apps/indexer-coordinator/package.json @@ -1,6 +1,6 @@ { "name": "@subql/indexer-coordinator", - "version": "2.4.1", + "version": "2.6.0", "description": "", "author": "SubQuery", "license": "Apache-2.0", From dbd5bc6e58d300ec26edd2a8ed5589afafee13e1 Mon Sep 17 00:00:00 2001 From: luke <123917244@qq.com> Date: Thu, 24 Oct 2024 11:44:58 +0800 Subject: [PATCH 6/6] feat: update docker-compose --- deploy/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index 39a6f853e..980175ba3 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -18,7 +18,7 @@ services: retries: 5 coordinator: - image: subquerynetwork/indexer-coordinator:v2.4.1 + image: subquerynetwork/indexer-coordinator:v2.6.0 container_name: indexer_coordinator restart: always ports: @@ -76,7 +76,7 @@ services: test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] proxy: - image: subquerynetwork/indexer-proxy:v2.5.0 + image: subquerynetwork/indexer-proxy:v2.7.0 container_name: indexer_proxy restart: always ports: