From 668b98a515e93358dfa6f04c1b6c9151e694248a Mon Sep 17 00:00:00 2001 From: David Kajpust Date: Wed, 11 Nov 2020 12:25:03 -0500 Subject: [PATCH] Fix total curator acb bug where adding wasn't working --- src/mappings/gns.ts | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/mappings/gns.ts b/src/mappings/gns.ts index 3a2525b5..93d51540 100644 --- a/src/mappings/gns.ts +++ b/src/mappings/gns.ts @@ -252,39 +252,40 @@ export function handleNSignalBurned(event: NSignalBurned): void { subgraph.unsignalledTokens = subgraph.unsignalledTokens.plus(event.params.tokensReceived) subgraph.save() - // update curator - let curator = createOrLoadCurator(event.params.nameCurator.toHexString(), event.block.timestamp) - curator.totalNameUnsignalledTokens = curator.totalNameUnsignalledTokens.plus( - event.params.tokensReceived, - ) - curator.totalNameSignal = curator.totalNameSignal.minus(event.params.nSignalBurnt.toBigDecimal()) - curator.totalNameSignalAverageCostBasis = curator.totalNameSignal.times( - curator.totalAverageCostBasisPerNameSignal, - ) - if (curator.totalNameSignalAverageCostBasis == BigDecimal.fromString('0')){ - curator.totalAverageCostBasisPerNameSignal = BigDecimal.fromString('0') - } - curator.save() - // update name signal let nameSignal = createOrLoadNameSignal( event.params.nameCurator.toHexString(), subgraphID, event.block.timestamp, ) + nameSignal.nameSignal = nameSignal.nameSignal.minus(event.params.nSignalBurnt) nameSignal.unsignalledTokens = nameSignal.unsignalledTokens.plus(event.params.tokensReceived) nameSignal.lastNameSignalChange = event.block.timestamp.toI32() // update acb to reflect new name signal balance + let previousACB = nameSignal.averageCostBasis nameSignal.averageCostBasis = nameSignal.nameSignal .toBigDecimal() .times(nameSignal.averageCostBasisPerSignal) - if (nameSignal.averageCostBasis == BigDecimal.fromString('0')){ - nameSignal.averageCostBasisPerSignal = BigDecimal.fromString('0') - } + let diffACB = previousACB.minus(nameSignal.averageCostBasis) + if (nameSignal.averageCostBasis == BigDecimal.fromString('0')) { + nameSignal.averageCostBasisPerSignal = BigDecimal.fromString('0') + } nameSignal.save() + // update curator + let curator = createOrLoadCurator(event.params.nameCurator.toHexString(), event.block.timestamp) + curator.totalNameUnsignalledTokens = curator.totalNameUnsignalledTokens.plus( + event.params.tokensReceived, + ) + curator.totalNameSignal = curator.totalNameSignal.minus(event.params.nSignalBurnt.toBigDecimal()) + curator.totalNameSignalAverageCostBasis = curator.totalNameSignalAverageCostBasis.minus(diffACB) + curator.totalAverageCostBasisPerNameSignal = curator.totalNameSignalAverageCostBasis.div( + curator.totalNameSignal, + ) + curator.save() + // Create n signal tx let nSignalTransaction = new NameSignalTransaction( event.transaction.hash.toHexString().concat('-').concat(event.logIndex.toString()),