Skip to content

Commit 786ddea

Browse files
committed
fix: improve capacity calculation
Signed-off-by: Tomás Migone <[email protected]>
1 parent cf79828 commit 786ddea

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/mappings/helpers/helpers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1154,7 +1154,8 @@ export function updateDelegationExchangeRateForProvision(provision: Provision):
11541154
// TODO - this is broken if we change the delegatio ratio
11551155
// Need to remove, or find a fix
11561156
export function calculateCapacities(indexer: Indexer): Indexer {
1157-
if (indexer.provisionedTokens.gt(BigInt.fromI32(0))) {
1157+
let graphNetwork = GraphNetwork.load('1')!
1158+
if (graphNetwork.maxThawingPeriod.gt(BigInt.fromI32(0))) {
11581159
return calculateCapacitiesHorizon(indexer)
11591160
} else {
11601161
return calculateCapacitiesLegacy(indexer)

src/mappings/horizonStaking.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export function handleProvisionCreated(event: ProvisionCreated): void {
8484
let provision = createOrLoadProvision(event.params.serviceProvider, event.params.verifier, event.block.timestamp)
8585

8686
indexer.provisionedTokens = indexer.provisionedTokens.plus(event.params.tokens)
87+
indexer = calculateCapacities(indexer as Indexer)
8788
indexer.save()
8889

8990
dataService.totalTokensProvisioned = dataService.totalTokensProvisioned.plus(event.params.tokens)
@@ -107,6 +108,7 @@ export function handleProvisionIncreased(event: ProvisionIncreased): void {
107108
let provision = createOrLoadProvision(event.params.serviceProvider, event.params.verifier, event.block.timestamp)
108109

109110
indexer.provisionedTokens = indexer.provisionedTokens.plus(event.params.tokens)
111+
indexer = calculateCapacities(indexer as Indexer)
110112
indexer.save()
111113

112114
dataService.totalTokensProvisioned = dataService.totalTokensProvisioned.plus(event.params.tokens)
@@ -247,6 +249,7 @@ export function handleProvisionSlashed(event: ProvisionSlashed): void {
247249
// Due to thawing tokens potentially getting cancelled, we will need to figure the thawing situation
248250
indexer.provisionedTokens = indexer.provisionedTokens.minus(event.params.tokens)
249251
indexer.stakedTokens = indexer.stakedTokens.minus(event.params.tokens)
252+
indexer = calculateCapacities(indexer as Indexer)
250253
indexer.save()
251254

252255
dataService.totalTokensProvisioned = dataService.totalTokensProvisioned.minus(event.params.tokens)
@@ -302,6 +305,7 @@ export function handleThawRequestCreated(event: ThawRequestCreated): void {
302305
event.params.thawingUntil > indexer.thawingUntil
303306
? event.params.thawingUntil
304307
: indexer.thawingUntil
308+
indexer = calculateCapacities(indexer as Indexer)
305309
indexer.save()
306310
} else {
307311
// update delegated stake for delegation thaw request
@@ -347,6 +351,7 @@ export function handleTokensToDelegationPoolAdded(event: TokensToDelegationPoolA
347351
indexer = updateDelegationExchangeRate(indexer as Indexer)
348352
}
349353
indexer = updateAdvancedIndexerMetrics(indexer as Indexer)
354+
indexer = calculateCapacities(indexer as Indexer)
350355
indexer.save()
351356

352357
let dataService = createOrLoadDataService(event.params.verifier)
@@ -380,6 +385,7 @@ export function handleTokensDelegated(event: TokensDelegated): void {
380385
indexer = updateDelegationExchangeRate(indexer as Indexer)
381386
}
382387
indexer = updateAdvancedIndexerMetrics(indexer as Indexer)
388+
indexer = calculateCapacities(indexer as Indexer)
383389
indexer.save()
384390

385391
// update delegator
@@ -454,6 +460,7 @@ export function handleDelegationSlashed(event: DelegationSlashed): void {
454460
let indexerID = event.params.serviceProvider.toHexString()
455461
let indexer = Indexer.load(indexerID)!
456462
indexer.delegatedTokens = indexer.delegatedTokens.minus(event.params.tokens)
463+
indexer = calculateCapacities(indexer as Indexer)
457464
indexer.save()
458465

459466
// upgrade graph network
@@ -483,6 +490,7 @@ export function handleTokensUndelegated(event: TokensUndelegated): void {
483490
indexer = updateDelegationExchangeRate(indexer as Indexer)
484491
}
485492
indexer = updateAdvancedIndexerMetrics(indexer as Indexer)
493+
indexer = calculateCapacities(indexer as Indexer)
486494
indexer.save()
487495

488496
// update delegated stake
@@ -541,6 +549,7 @@ export function handleDelegatedTokensWithdrawn(event: DelegatedTokensWithdrawn):
541549
let indexer = Indexer.load(indexerID)!
542550

543551
indexer.delegatedTokens = indexer.delegatedTokens.minus(event.params.tokens)
552+
indexer = calculateCapacities(indexer as Indexer)
544553
indexer.save()
545554

546555
// update delegated stake

0 commit comments

Comments
 (0)