From b6d8841ff71f20847c5ed8b41fab59d96027a516 Mon Sep 17 00:00:00 2001 From: Lachlan McCrae <8554309+lachlan1m@users.noreply.github.com> Date: Thu, 11 May 2023 15:07:14 +1200 Subject: [PATCH 1/5] update handleWithdrawRequested and update project-cid --- .project-cid | 1 + src/mappings/staking.ts | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 .project-cid diff --git a/.project-cid b/.project-cid new file mode 100644 index 0000000..221ca3c --- /dev/null +++ b/.project-cid @@ -0,0 +1 @@ +QmWMGNiQqyud3k3BCo7a5q1WTBBuq4cgbeajHnp21VwvFd \ No newline at end of file diff --git a/src/mappings/staking.ts b/src/mappings/staking.ts index 0484cb0..9af185c 100644 --- a/src/mappings/staking.ts +++ b/src/mappings/staking.ts @@ -4,7 +4,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-call */ -import { EraManager__factory } from '@subql/contract-sdk'; +import { EraManager__factory, Staking__factory } from '@subql/contract-sdk'; import { DelegationAddedEvent, DelegationRemovedEvent, @@ -13,7 +13,12 @@ import { UnbondCancelledEvent, } from '@subql/contract-sdk/typechain/Staking'; import assert from 'assert'; -import { Delegation, Withdrawl, WithdrawalStatus } from '../types'; +import { + Delegation, + Withdrawl, + WithdrawalStatus, + WithdrawalType, +} from '../types'; import { ERA_MANAGER_ADDRESS, updateTotalStake, @@ -26,6 +31,7 @@ import { getDelegationId, updateMaxUnstakeAmount, biToDate, + STAKING_ADDRESS, } from './utils'; import { EthereumLog } from '@subql/types-ethereum'; import { CreateWithdrawlParams } from '../interfaces'; @@ -173,12 +179,28 @@ export async function handleWithdrawRequested( const { source, indexer, amount, index, _type } = event.args; const id = getWithdrawlId(source, index); + let updatedAmount = amount; + + if (getWithdrawalType(_type) === WithdrawalType.MERGE) { + const staking = Staking__factory.connect(STAKING_ADDRESS, api); + const length = (await staking.unbondingLength(indexer)).toNumber(); + + // Iterate through unbonding amounts and sum them up + for (let i = 0; i < length; i++) { + const { amount: unbondingAmount } = await staking.unbondingAmount( + indexer, + i + ); + updatedAmount = updatedAmount.add(unbondingAmount); + } + } + await createWithdrawl({ id, delegator: source, indexer, index, - amount, + amount: updatedAmount, type: getWithdrawalType(_type), status: ONGOING, event, From 5911a3e688fea0d20207828064cecb68fbc50dd9 Mon Sep 17 00:00:00 2001 From: Lachlan McCrae <8554309+lachlan1m@users.noreply.github.com> Date: Thu, 11 May 2023 20:38:56 +1200 Subject: [PATCH 2/5] update contract sdk and update UnbondWithdrawn --- package.json | 2 +- project.yaml | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 58f686a..8b768ab 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "@ethersproject/abi": "^5.7.0", - "@subql/contract-sdk": "^0.12.5-2", + "@subql/contract-sdk": "^0.13.1-0", "@subql/types-ethereum": "dev", "@types/pino": "^7.0.5", "@types/validator": "latest", diff --git a/project.yaml b/project.yaml index 9c39453..3881ec8 100644 --- a/project.yaml +++ b/project.yaml @@ -118,7 +118,7 @@ dataSources: kind: ethereum/LogHandler filter: topics: - - UnbondWithdrawn(address indexed source, uint256 amount, uint256 index) + - UnbondWithdrawn(address indexed source, uint256 amount, uint256 fee, uint256 index) - handler: handleWithdrawCancelled kind: ethereum/LogHandler filter: diff --git a/yarn.lock b/yarn.lock index be4b8a1..9f0d38d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1518,10 +1518,10 @@ reflect-metadata "^0.1.13" semver "^7.3.5" -"@subql/contract-sdk@^0.12.5-2": - version "0.12.5-2" - resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-0.12.5-2.tgz#6dbfe256d785737c435f4ce9246b7bd77dba9d3d" - integrity sha512-opt9HDPdNx5+p8/Gm3IxgWSqKW/6uQSQWYIq/37a0da74Nqn50Cbp4B18NIUb1Z3Xi8Cz//ckB3etaYiNYkbFA== +"@subql/contract-sdk@^0.13.1-0": + version "0.13.1-0" + resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-0.13.1-0.tgz#eb240afa6c3d6365e2fe2c071e75b4ca1ec845fe" + integrity sha512-P5TUGjQi3HpU+EjDA7kkzE6+IN3+8SebZgjgqpCtP3OWDymIzN6JPAkbT0l5Bp6vFp4lNzpHJ50a4y6xHFNdJg== dependencies: "@openzeppelin/contracts-upgradeable" "^4.5.2" From 3d6aba8dbabfc53af19998da4a99683197567e76 Mon Sep 17 00:00:00 2001 From: Lachlan McCrae <8554309+lachlan1m@users.noreply.github.com> Date: Mon, 15 May 2023 11:00:30 +1200 Subject: [PATCH 3/5] update DistributeRewards --- project.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.yaml b/project.yaml index 3881ec8..efa676a 100644 --- a/project.yaml +++ b/project.yaml @@ -231,7 +231,7 @@ dataSources: kind: ethereum/LogHandler filter: topics: - - DistributeRewards(address indexed indexer, uint256 indexed eraIdx, uint256 rewards) + - DistributeRewards(address indexed indexer, uint256 indexed eraIdx, uint256 rewards, uint256 commission) - handler: handleRewardsClaimed kind: ethereum/LogHandler filter: From 0b1964f07b93b922d24ed269b1b066f106db76b7 Mon Sep 17 00:00:00 2001 From: Lachlan McCrae <8554309+lachlan1m@users.noreply.github.com> Date: Mon, 15 May 2023 11:03:37 +1200 Subject: [PATCH 4/5] update contract-sdk --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8b768ab..0aaaf83 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ }, "dependencies": { "@ethersproject/abi": "^5.7.0", - "@subql/contract-sdk": "^0.13.1-0", + "@subql/contract-sdk": "0.13.1-2", "@subql/types-ethereum": "dev", "@types/pino": "^7.0.5", "@types/validator": "latest", diff --git a/yarn.lock b/yarn.lock index 9f0d38d..97a7058 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1518,10 +1518,10 @@ reflect-metadata "^0.1.13" semver "^7.3.5" -"@subql/contract-sdk@^0.13.1-0": - version "0.13.1-0" - resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-0.13.1-0.tgz#eb240afa6c3d6365e2fe2c071e75b4ca1ec845fe" - integrity sha512-P5TUGjQi3HpU+EjDA7kkzE6+IN3+8SebZgjgqpCtP3OWDymIzN6JPAkbT0l5Bp6vFp4lNzpHJ50a4y6xHFNdJg== +"@subql/contract-sdk@0.13.1-2": + version "0.13.1-2" + resolved "https://registry.yarnpkg.com/@subql/contract-sdk/-/contract-sdk-0.13.1-2.tgz#34cfc66dd2b8079c70ec480ed9ba2b37afdc422b" + integrity sha512-FRvAlLUtH9AFoqUESUOwtraKjiDPaZT5FW1FJUUxQcJMy3j231EqOWTZJBtCP33swzTa2Uzb442YbzLPheCw+A== dependencies: "@openzeppelin/contracts-upgradeable" "^4.5.2" From 71fb924de7ed8d6adcada590315f53f0201a2a6f Mon Sep 17 00:00:00 2001 From: Lachlan McCrae <8554309+lachlan1m@users.noreply.github.com> Date: Tue, 16 May 2023 09:21:46 +1200 Subject: [PATCH 5/5] fix amount when withdrawaltype == merge --- src/mappings/staking.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/mappings/staking.ts b/src/mappings/staking.ts index 9af185c..eb6b795 100644 --- a/src/mappings/staking.ts +++ b/src/mappings/staking.ts @@ -183,16 +183,11 @@ export async function handleWithdrawRequested( if (getWithdrawalType(_type) === WithdrawalType.MERGE) { const staking = Staking__factory.connect(STAKING_ADDRESS, api); - const length = (await staking.unbondingLength(indexer)).toNumber(); - - // Iterate through unbonding amounts and sum them up - for (let i = 0; i < length; i++) { - const { amount: unbondingAmount } = await staking.unbondingAmount( - indexer, - i - ); - updatedAmount = updatedAmount.add(unbondingAmount); - } + const { amount: unbondingAmount } = await staking.unbondingAmount( + indexer, + index + ); + updatedAmount = updatedAmount.add(unbondingAmount); } await createWithdrawl({