Skip to content

Commit b6654cf

Browse files
Use GroupRunner in stader-balance (#3793)
Co-authored-by: app-token-issuer-data-feeds[bot] <134377064+app-token-issuer-data-feeds[bot]@users.noreply.github.com>
1 parent 95b26c9 commit b6654cf

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

.changeset/eight-ligers-share.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@chainlink/stader-balance-adapter': patch
3+
---
4+
5+
Refactor how RPCs are grouped

packages/sources/stader-balance/src/transport/balance.ts

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { GroupRunner } from '@chainlink/external-adapter-framework/util/group-runner'
12
import BigNumber from 'bignumber.js'
23
import { ethers } from 'ethers'
34
import {
@@ -20,7 +21,7 @@ import { StaderConfig } from './utils/stader-config'
2021
import { PermissionedPool } from './utils/permissioned-pool'
2122
import { StakeManager } from './utils/stake-manager'
2223
import { Pool } from './utils/pool'
23-
import { ValidatorFactory } from './utils/validator'
24+
import { ValidatorFactory, type ActiveValidator, type WithdrawnValidator } from './utils/validator'
2425
import { DepositEvent_ABI, StaderPenaltyContract_ABI } from '../config/StaderContractAbis'
2526
import { SubscriptionTransport } from '@chainlink/external-adapter-framework/transports/abstract/subscription'
2627
import { TransportDependencies } from '@chainlink/external-adapter-framework/transports'
@@ -170,30 +171,27 @@ export class BalanceTransport extends SubscriptionTransport<BaseEndpointTypes> {
170171

171172
const validatorBalances = []
172173

174+
const calculateWithdrawnBalanceInGroups = new GroupRunner(
175+
context.adapterSettings.GROUP_SIZE,
176+
).wrapFunction((v: WithdrawnValidator) => v.calculateBalance(validatorDeposit))
177+
173178
// Perform active validator calculations
174179
// These will need a call to get the penalty rate for each of them, so we have to batch these
175-
const withdrawnBatches = splitArrayIntoChunks(
176-
withdrawnValidators,
180+
validatorBalances.push(
181+
...(await Promise.all(withdrawnValidators.map((v) => calculateWithdrawnBalanceInGroups(v)))),
182+
)
183+
184+
const calculateActiveBalanceInGroups = new GroupRunner(
177185
context.adapterSettings.GROUP_SIZE,
186+
).wrapFunction((v: ActiveValidator) =>
187+
v.calculateBalance(validatorDeposit, depositedBalanceMap[v.addressData.address]),
178188
)
179-
for (const batch of withdrawnBatches) {
180-
validatorBalances.push(
181-
...(await Promise.all(batch.map((v) => v.calculateBalance(validatorDeposit)))),
182-
)
183-
}
184189

185190
// Perform active validator calculations
186191
// These will need a call to get the penalty rate for each of them, so we have to batch these
187-
const activeBatches = splitArrayIntoChunks(activeValidators, context.adapterSettings.GROUP_SIZE)
188-
for (const batch of activeBatches) {
189-
validatorBalances.push(
190-
...(await Promise.all(
191-
batch.map((v) =>
192-
v.calculateBalance(validatorDeposit, depositedBalanceMap[v.addressData.address]),
193-
),
194-
)),
195-
)
196-
}
192+
validatorBalances.push(
193+
...(await Promise.all(activeValidators.map((v) => calculateActiveBalanceInGroups(v)))),
194+
)
197195

198196
// Flatten all the balances out, they'll be aggregated in the proof-of-reserves EA
199197
const balances = [

packages/sources/stader-balance/src/transport/utils/validator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ abstract class Validator {
255255
}
256256
}
257257

258-
class ActiveValidator extends Validator {
258+
export class ActiveValidator extends Validator {
259259
async calculateBalance(
260260
validatorDeposit: BigNumber,
261261
depositedEth: BigNumber = BigNumber(0),
@@ -314,7 +314,7 @@ class ActiveValidator extends Validator {
314314
}
315315
}
316316

317-
class WithdrawnValidator extends Validator {
317+
export class WithdrawnValidator extends Validator {
318318
async calculateBalance(validatorDeposit: BigNumber): Promise<BalanceResponse> {
319319
const { userDeposit, poolCommission, withdrawalAddressBalance } =
320320
await this.fetchDataForBalanceCalculation(validatorDeposit)

0 commit comments

Comments
 (0)