Skip to content

Commit 6fc84e1

Browse files
Merge pull request #298 from graphprotocol/juanmardefago/horizon-legacy-locked-tokens
feat: added legacy fields for locked tokens and lockedUntil
2 parents e8f5971 + 8f60bb9 commit 6fc84e1

File tree

4 files changed

+22
-0
lines changed

4 files changed

+22
-0
lines changed

schema.graphql

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,10 @@ type Indexer @entity(immutable: false) {
751751
lockedTokens: BigInt!
752752
"The block when the Indexers tokens unlock"
753753
tokensLockedUntil: Int!
754+
"[Legacy only] CURRENT tokens locked"
755+
legacyLockedTokens: BigInt!
756+
"[Legacy only] The block when the Indexers tokens unlock"
757+
legacyTokensLockedUntil: Int!
754758
"Active allocations of stake for this Indexer"
755759
allocations: [Allocation!]! @derivedFrom(field: "activeForIndexer")
756760
"All allocations of stake for this Indexer (i.e. closed and active)"
@@ -1228,6 +1232,10 @@ type DelegatedStake @entity(immutable: false) {
12281232
lockedTokens: BigInt!
12291233
"Epoch the locked tokens get unlocked"
12301234
lockedUntil: Int!
1235+
"[Legacy only] CURRENT tokens locked"
1236+
legacyLockedTokens: BigInt!
1237+
"[Legacy only] Epoch the locked tokens get unlocked"
1238+
legacyLockedUntil: Int!
12311239
"Shares owned in the delegator pool. Used to calculate total amount delegated"
12321240
shareAmount: BigInt!
12331241
"The rate this delegator paid for their shares (calculated using average cost basis). Used for rewards calculations"

src/mappings/helpers/helpers.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,10 @@ export function createOrLoadIndexer(indexerAddress: Bytes, timestamp: BigInt ):
147147
indexer.thawingTokens = BigInt.fromI32(0)
148148
indexer.allocatedTokens = BigInt.fromI32(0)
149149
indexer.lockedTokens = BigInt.fromI32(0)
150+
indexer.legacyLockedTokens = BigInt.fromI32(0)
150151
indexer.unstakedTokens = BigInt.fromI32(0)
151152
indexer.tokensLockedUntil = 0
153+
indexer.legacyTokensLockedUntil = 0
152154
indexer.queryFeesCollected = BigInt.fromI32(0)
153155
indexer.queryFeeRebates = BigInt.fromI32(0)
154156
indexer.rewardsEarned = BigInt.fromI32(0)
@@ -374,6 +376,8 @@ export function createOrLoadDelegatedStake(
374376
delegatedStake.unstakedTokens = BigInt.fromI32(0)
375377
delegatedStake.lockedTokens = BigInt.fromI32(0)
376378
delegatedStake.lockedUntil = 0
379+
delegatedStake.legacyLockedTokens = BigInt.fromI32(0)
380+
delegatedStake.legacyLockedUntil = 0
377381
delegatedStake.shareAmount = BigInt.fromI32(0)
378382
delegatedStake.personalExchangeRate = BigDecimal.fromString('1')
379383
delegatedStake.realizedRewards = BigDecimal.fromString('0')

src/mappings/l1staking.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,5 +110,6 @@ export function handleStakeDelegatedUnlockedDueToL2Transfer(
110110
])
111111
let delegation = DelegatedStake.load(delegationID)!
112112
delegation.lockedUntil = graphNetwork.currentEpoch
113+
delegation.legacyLockedUntil = graphNetwork.currentEpoch
113114
delegation.save()
114115
}

src/mappings/staking.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ export function handleStakeLocked(event: StakeLocked): void {
108108
let indexer = Indexer.load(id)!
109109
indexer.lockedTokens = event.params.tokens
110110
indexer.tokensLockedUntil = event.params.until.toI32()
111+
indexer.legacyLockedTokens = event.params.tokens
112+
indexer.legacyTokensLockedUntil = event.params.until.toI32()
111113
indexer = updateLegacyAdvancedIndexerMetrics(indexer as Indexer)
112114
indexer = calculateCapacities(indexer as Indexer)
113115
indexer.save()
@@ -135,6 +137,8 @@ export function handleStakeWithdrawn(event: StakeWithdrawn): void {
135137
indexer.stakedTokens = indexer.stakedTokens.minus(event.params.tokens)
136138
indexer.lockedTokens = indexer.lockedTokens.minus(event.params.tokens)
137139
indexer.tokensLockedUntil = 0 // always set to 0 when withdrawn
140+
indexer.legacyLockedTokens = indexer.legacyLockedTokens.minus(event.params.tokens)
141+
indexer.legacyTokensLockedUntil = 0 // always set to 0 when withdrawn
138142
indexer = updateLegacyAdvancedIndexerMetrics(indexer as Indexer)
139143
indexer = calculateCapacities(indexer as Indexer)
140144
indexer.save()
@@ -164,6 +168,7 @@ export function handleStakeSlashed(event: StakeSlashed): void {
164168
let staking = Staking.bind(event.address)
165169
let indexerStored = staking.stakes(event.params.indexer)
166170
indexer.lockedTokens = indexerStored.tokensLocked
171+
indexer.legacyLockedTokens = indexerStored.tokensLocked
167172
indexer = updateLegacyAdvancedIndexerMetrics(indexer as Indexer)
168173
indexer = calculateCapacities(indexer as Indexer)
169174
indexer.save()
@@ -268,7 +273,9 @@ export function handleStakeDelegatedLocked(event: StakeDelegatedLocked): void {
268273
delegatedStake.unstakedTokens = delegatedStake.unstakedTokens.plus(event.params.tokens)
269274
delegatedStake.shareAmount = delegatedStake.shareAmount.minus(event.params.shares)
270275
delegatedStake.lockedTokens = delegatedStake.lockedTokens.plus(event.params.tokens)
276+
delegatedStake.legacyLockedTokens = delegatedStake.legacyLockedTokens.plus(event.params.tokens)
271277
delegatedStake.lockedUntil = event.params.until.toI32() // until always updates and overwrites the past lockedUntil time
278+
delegatedStake.legacyLockedUntil = event.params.until.toI32() // until always updates and overwrites the past lockedUntil time
272279
delegatedStake.lastUndelegatedAt = event.block.timestamp.toI32()
273280

274281
let currentBalance = event.params.shares.toBigDecimal().times(beforeUpdateDelegationExchangeRate)
@@ -306,7 +313,9 @@ export function handleStakeDelegatedWithdrawn(event: StakeDelegatedWithdrawn): v
306313
let id = joinID([delegatorID, indexerID])
307314
let delegatedStake = DelegatedStake.load(id)!
308315
delegatedStake.lockedTokens = BigInt.fromI32(0)
316+
delegatedStake.legacyLockedTokens = BigInt.fromI32(0)
309317
delegatedStake.lockedUntil = 0
318+
delegatedStake.legacyLockedUntil = 0
310319
delegatedStake.save()
311320
}
312321

0 commit comments

Comments
 (0)