Skip to content

Commit

Permalink
Bug fixes to get deployed subgraph to not crash
Browse files Browse the repository at this point in the history
  • Loading branch information
davekaj committed Aug 14, 2020
1 parent ade9306 commit b1d709d
Show file tree
Hide file tree
Showing 14 changed files with 174 additions and 86 deletions.
File renamed without changes.
22 changes: 11 additions & 11 deletions config/generatedAddresses.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
{
"graphToken": "0x45650e899F2b25844d5ad7f0020159729341Cf27",
"epochManager": "0x6CAfB9BFf2a3a2c4CEE43E9D32273254823eE8D1",
"disputeManager": "0xecFaddaA75de349F85a7998E3F3b0C85E24c14a3",
"staking": "0x65c72ab13Ba6805414c1eCBeA34bb95e1e58515F",
"curation": "0xF4061Af18E397B05909098E1895184d7049e115C",
"rewardsManager": "0x023E5A34A4b569Ec655c2dE429945E703Af2aE2a",
"serviceRegistry": "0x0AD791CBC700eAecd34f017A6e40E3516daC61fE",
"gns": "0x8CAB8e3ccf1Dca2d4173272E516D8981a5833238",
"ens": "0xB66B2f307B6e46a6D038a85997B401aE87455772",
"graphToken": "0xa887a968BDb0e42D3Ffc2d6ff253568c6d2CaF34",
"epochManager": "0xFd12A3ee8Bf3C417e0cedbc591BA10156724C069",
"disputeManager": "0x449B394836881CA995d4db4313064a66aF5Ca0b0",
"staking": "0xFC6CCBa00ceA43512cC50f6f8CC029E782c5AC96",
"curation": "0x17F93B680C293308C1bA4C647a2823e175E32818",
"rewardsManager": "0x20AbE3B457e510EEF66D2518212A6f862E1ebfA9",
"serviceRegistry": "0x3f721A12d82A5A8a5132e93d6f0707031E4810E4",
"gns": "0x497609273754d77F354B26f7CCbb30a78468B00c",
"ens": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
"ensPublicResolver": "0xc30F6CCc48F1eA5374aC618dfe5243ddD1e264E7",
"blockNumber": "19750000",
"network": "kovan"
"blockNumber": "6900000",
"network": "rinkeby"
}
File renamed without changes.
48 changes: 48 additions & 0 deletions config/rinkebyAddressScript.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import * as fs from 'fs'

import * as networkAddresses from '@graphprotocol/contracts/addresses.json'
import * as mustache from 'mustache'

// mustache doesn't like numbered object keys
// TODO - get the contracts to not import with number from npm package
let renameAddresses: any = networkAddresses
renameAddresses['ourRinkeby'] = networkAddresses['4']

export interface Addresses {
graphToken: string
epochManager: string
disputeManager: string
staking: string
curation: string
rewardsManager: string
serviceRegistry: string
gns: string
ens: string
ensPublicResolver: string
}

export let addresses: Addresses = {
graphToken: '{{ourRinkeby.GraphToken.address}}',
epochManager: '{{ourRinkeby.EpochManager.address}}',
disputeManager: '{{ourRinkeby.DisputeManager.address}}',
staking: '{{ourRinkeby.Staking.address}}',
curation: '{{ourRinkeby.Curation.address}}',
rewardsManager: '{{ourRinkeby.RewardsManager.address}}',
serviceRegistry: '{{ourRinkeby.ServiceRegistry.address}}',
gns: '{{ourRinkeby.GNS.address}}',
ens: '{{rinkeby.ens}}',
ensPublicResolver: '{{rinkeby.ensPublicResolver}}',
}

const main = (): void => {
try {
let output = JSON.parse(mustache.render(JSON.stringify(addresses), renameAddresses))
output.blockNumber = '6900000'
output.network = 'rinkeby' // Todo - make dynamic
fs.writeFileSync(__dirname + '/generatedAddresses.json', JSON.stringify(output, null, 2))
} catch (e) {
console.log(`Error saving artifacts: ${e.message}`)
}
}

main()
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@
"codegen": "graph codegen --output-dir src/types/",
"build": "graph build",
"deploy-beta": "yarn prepare:kovan && graph deploy graphprotocol/graph-network-beta --ipfs https://api.thegraph.com/ipfs/ --node https://api.thegraph.com/deploy/",
"deploy-phase1": "yarn prepare:rinkeby && graph deploy graphprotocol/graph-network-rinkeby --ipfs https://api.thegraph.com/ipfs/ --node https://api.thegraph.com/deploy/",
"deploy-testing": "yarn prepare:kovan && graph deploy davekaj/graph-network-phase-one-kovan --ipfs https://api.thegraph.com/ipfs/ --node https://api.thegraph.com/deploy/",
"prepare:addresses:kovan": "ts-node config/addressScript.ts && mustache ./config/generatedAddresses.json ./config/kovanAddresses.template.ts > ./config/addresses.ts",
"prepare:addresses:kovan": "ts-node config/kovanAddressScript.ts && mustache ./config/generatedAddresses.json ./config/addresses.template.ts > ./config/addresses.ts",
"prepare:kovan": "yarn prepare:addresses:kovan && mustache ./config/generatedAddresses.json subgraph.template.yaml > subgraph.yaml && yarn codegen",
"prepare:addresses:rinkeby": "ts-node config/rinkebyAddressScript.ts && mustache ./config/generatedAddresses.json ./config/addresses.template.ts > ./config/addresses.ts",
"prepare:rinkeby": "yarn prepare:addresses:rinkeby && mustache ./config/generatedAddresses.json subgraph.template.yaml > subgraph.yaml && yarn codegen",
"lint": "yarn eslint .",
"lint-fix": "eslint . --fix",
"prettier": "prettier '**/*.ts'",
"prettier-write": "prettier --write '**/*.ts'"
},
"devDependencies": {
"@graphprotocol/contracts": "^0.4.5-testnet-phase1",
"@graphprotocol/contracts": "^0.4.7-testnet-phase1",
"@graphprotocol/graph-cli": "^0.18.0",
"@graphprotocol/graph-ts": "^0.18.1",
"@types/node": "^14.0.13",
Expand Down
6 changes: 3 additions & 3 deletions schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -547,14 +547,14 @@ type Curator @entity {
"Graph account of this curator"
account: GraphAccount!
"Total tokens signalled on all the subgraphs"
totalsignalledTokens: BigInt!
totalSignalledTokens: BigInt!
"Total tokens unsignalled on all the subgraphs"
totalUnsignalledTokens: BigInt!
"Subgraphs the curator is curating"
signals: [Signal!]! @derivedFrom(field: "curator")

"Total tokens signalled on all names"
totalNamesignalledTokens: BigInt!
totalNameSignalledTokens: BigInt!
"Total tokens unsignalled on all names"
totalNameUnsignalledTokens: BigInt!
"Subgraphs the curator is curating"
Expand Down Expand Up @@ -708,7 +708,7 @@ type Epoch @entity {
totalRewards: BigInt!
"Status of the Epoch"
status: EpochStatus!
# todo - DO I NEED totalQueryFees and Protocol rebates earned?
# todo - DO I NEED totalQueryFees / Protocol rebates earned?
}

enum EpochStatus {
Expand Down
6 changes: 3 additions & 3 deletions src/mappings/curation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function handleSignalled(event: Signalled): void {
// Update curator
let id = event.params.curator.toHexString()
let curator = createOrLoadCurator(id, event.block.timestamp)
curator.totalsignalledTokens = curator.totalsignalledTokens.plus(event.params.tokens)
curator.totalSignalledTokens = curator.totalSignalledTokens.plus(event.params.tokens)
curator.save()

// Update signal
Expand Down Expand Up @@ -65,7 +65,7 @@ export function handleBurned(event: Burned): void {
// Update curator
let id = event.params.curator.toHexString()
let curator = Curator.load(id)
curator.totalsignalledTokens = curator.totalsignalledTokens.minus(event.params.signal)
curator.totalSignalledTokens = curator.totalSignalledTokens.minus(event.params.signal)
curator.totalUnsignalledTokens = curator.totalUnsignalledTokens.plus(event.params.tokens)

// Update signal
Expand Down Expand Up @@ -131,7 +131,7 @@ export function handleParameterUpdated(event: ParameterUpdated): void {
} else if (parameter == 'minimumCurationStake') {
// TODO - it appears Curation contract still is using Stake as a term instead of signal
// will have to update soon
graphNetwork.minimumCurationSignal = curation.minimumCurationStake()
graphNetwork.minimumCurationSignal = curation.minimumCurationDeposit()
}
graphNetwork.save()
}
11 changes: 5 additions & 6 deletions src/mappings/epochManager.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { BigInt, ByteArray, Address, Bytes, crypto, log, BigDecimal } from '@graphprotocol/graph-ts'
import { Epoch, GraphNetwork } from '../types/schema'
import { addresses } from '../../config/addresses'
import { GraphNetwork } from '../types/schema'
import { EpochRun, EpochLengthUpdate } from '../types/EpochManager/EpochManager'
import { createOrLoadGraphNetwork, createOrLoadEpoch } from './helpers'

/**
* @dev handleEpochRun
Expand All @@ -18,13 +17,13 @@ export function handleEpochRun(event: EpochRun): void {
* - updates the length and the last block and epoch it happened
*/
export function handleEpochLengthUpdate(event: EpochLengthUpdate): void {
let graphNetwork = GraphNetwork.load('1')
let graphNetwork = createOrLoadGraphNetwork()
graphNetwork.epochLength = event.params.epochLength.toI32()
graphNetwork.lastLengthUpdateEpoch = graphNetwork.lastRunEpoch
graphNetwork.lastLengthUpdateEpoch = graphNetwork.currentEpoch
graphNetwork.lastLengthUpdateBlock = event.block.number.toI32()
graphNetwork.save()

let epoch = Epoch.load(BigInt.fromI32(graphNetwork.currentEpoch).toString())
let epoch = createOrLoadEpoch(event.block.number)
epoch.endBlock = epoch.startBlock + graphNetwork.epochLength
epoch.save()
}
10 changes: 4 additions & 6 deletions src/mappings/gns.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,14 +154,12 @@ export function handleNSignalMinted(event: NSignalMinted): void {
let subgraph = Subgraph.load(subgraphID)

subgraph.nameSignalAmount = subgraph.nameSignalAmount.plus(event.params.nSignalCreated)
// TODO - add tokensDeposited here, when I re-deploy the contracts
// subgraph.signalledTokens = subgraph.signalledTokens.plus(event.params.tokensDeposited)
subgraph.signalledTokens = subgraph.signalledTokens.plus(event.params.tokensDeposited)
subgraph.save()

let nameSignal = createOrLoadNameSignal(event.params.nameCurator.toHexString(), subgraphID)
nameSignal.nameSignal = nameSignal.nameSignal.plus(event.params.nSignalCreated)
// TODO - add tokensDeposited here, when I re-deploy the contracts
// nameSignal.signalledTokens = nameSignal.signalledTokens.plus(event.params.tokensDeposited)
nameSignal.signalledTokens = nameSignal.signalledTokens.plus(event.params.tokensDeposited)
nameSignal.lastNameSignalChange = event.block.timestamp.toI32()
nameSignal.save()
}
Expand Down Expand Up @@ -192,8 +190,8 @@ export function handleNameSignalUpgrade(event: NameSignalUpgrade): void {
// Weirdly here, we add the token amount to both, but also the name curator owner must
// stake the withdrawal fees, so both balance fairly
// TODO - will have to come back here and make sure my thinking is correct
subgraph.unsignalledTokens = subgraph.unsignalledTokens.plus(event.params.tokensExchanged)
subgraph.signalledTokens = subgraph.signalledTokens.plus(event.params.tokensExchanged)
subgraph.unsignalledTokens = subgraph.unsignalledTokens.plus(event.params.tokensSignalled)
subgraph.signalledTokens = subgraph.signalledTokens.plus(event.params.tokensSignalled)
subgraph.save()
}

Expand Down
6 changes: 5 additions & 1 deletion src/mappings/graphtoken.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,11 @@ export function handleApproval(event: Approval): void {
let curation = graphNetwork.curation
let gns = graphNetwork.gns
let spender = event.params.spender
let graphAccount = GraphAccount.load(event.params.owner.toHexString())
let graphAccount = createOrLoadGraphAccount(
event.params.owner.toHexString(),
event.params.owner,
event.block.timestamp,
)

if (spender == staking) {
graphAccount.stakingApproval = event.params.value
Expand Down
42 changes: 34 additions & 8 deletions src/mappings/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,19 @@ export function createOrLoadSubgraph(
subgraph.unsignalledTokens = BigInt.fromI32(0)
subgraph.nameSignalAmount = BigInt.fromI32(0)
subgraph.reserveRatio = 0
subgraph.withdrawableTokens = BigInt.fromI32(0)
subgraph.withdrawnTokens = BigInt.fromI32(0)

subgraph.metadataHash = Bytes.fromI32(0) as Bytes
subgraph.description = ''
subgraph.image = ''
subgraph.codeRepository = ''
subgraph.website = ''
subgraph.displayName = ''

subgraph.totalIndexingRewards = BigInt.fromI32(0)
subgraph.totalQueryFeesCollected = BigInt.fromI32(0)

subgraph.save()

let graphNetwork = GraphNetwork.load('1')
Expand All @@ -64,9 +68,11 @@ export function createOrLoadSubgraphDeployment(
deployment.stakedTokens = BigInt.fromI32(0)
deployment.indexingRewardAmount = BigInt.fromI32(0)
deployment.queryFeesAmount = BigInt.fromI32(0)
deployment.curatorFeeRewards = BigInt.fromI32(0)

deployment.signalledTokens = BigInt.fromI32(0)
deployment.unsignalledTokens = BigInt.fromI32(0)
deployment.signalAmount = BigInt.fromI32(0)
deployment.curatorFeeRewards = BigInt.fromI32(0)
deployment.reserveRatio = 0
deployment.save()

Expand All @@ -83,6 +89,7 @@ export function createOrLoadIndexer(id: string, timestamp: BigInt): Indexer {
indexer = new Indexer(id)
indexer.createdAt = timestamp.toI32()
indexer.account = id

indexer.stakedTokens = BigInt.fromI32(0)
indexer.allocatedTokens = BigInt.fromI32(0)
indexer.lockedTokens = BigInt.fromI32(0)
Expand Down Expand Up @@ -149,8 +156,12 @@ export function createOrLoadCurator(id: string, timestamp: BigInt): Curator {
curator = new Curator(id)
curator.createdAt = timestamp.toI32()
curator.account = id
curator.totalsignalledTokens = BigInt.fromI32(0)
curator.totalSignalledTokens = BigInt.fromI32(0)
curator.totalUnsignalledTokens = BigInt.fromI32(0)

curator.totalNameSignalledTokens = BigInt.fromI32(0)
curator.totalNameUnsignalledTokens = BigInt.fromI32(0)

curator.realizedRewards = BigInt.fromI32(0)
curator.annualizedReturn = BigDecimal.fromString('0')
curator.totalReturn = BigDecimal.fromString('0')
Expand Down Expand Up @@ -242,18 +253,28 @@ export function createOrLoadEpoch(blockNumber: BigInt): Epoch {
.minus(BigInt.fromI32(graphNetwork.lastLengthUpdateBlock))
.div(BigInt.fromI32(graphNetwork.epochLength))
let epoch: Epoch
if (epochsSinceLastUpdate.toI32() > graphNetwork.currentEpoch) {
epoch = new Epoch(epochsSinceLastUpdate.toString())
if (
epochsSinceLastUpdate.toI32() > graphNetwork.currentEpoch ||
(graphNetwork.currentEpoch == 0 && epochsSinceLastUpdate.toI32() == 0) // edge case where no epochs exist
) {
let newEpoch = graphNetwork.currentEpoch + epochsSinceLastUpdate.toI32()
if (newEpoch == 0){ // there is no 0 epoch. we start at 1
newEpoch = 1
}
epoch = new Epoch(BigInt.fromI32(newEpoch).toString())
let startBlock =
graphNetwork.lastLengthUpdateBlock + epochsSinceLastUpdate.toI32() * graphNetwork.epochLength
epoch.startBlock = startBlock
epoch.endBlock = startBlock + graphNetwork.epochLength
epoch.signalledTokens = BigInt.fromI32(0)
epoch.signalledTokens = BigInt.fromI32(0)
epoch.signalledTokens = BigInt.fromI32(0)
epoch.signalledTokens = BigInt.fromI32(0)
epoch.stakeDeposited = BigInt.fromI32(0)
epoch.queryFeeRebates = BigInt.fromI32(0)
epoch.totalRewards = BigInt.fromI32(0)
epoch.status = 'Rewarding'
epoch.save()

graphNetwork.currentEpoch = newEpoch
graphNetwork.save()
} else {
epoch = Epoch.load(BigInt.fromI32(graphNetwork.currentEpoch).toString()) as Epoch
}
Expand Down Expand Up @@ -284,18 +305,21 @@ export function createOrLoadGraphNetwork(): GraphNetwork {
graphNetwork.delegationParametersCooldown = 0
graphNetwork.indexingRewardsPerEpoch = 0
graphNetwork.networkGRTIssuance = 0
graphNetwork.delegationUnbondingPeriod = 0

graphNetwork.totalTokensStaked = BigInt.fromI32(0)
graphNetwork.totalTokensClaimable = BigInt.fromI32(0)
graphNetwork.totalUnstakedTokensLocked = BigInt.fromI32(0)
graphNetwork.totalTokensAllocated = BigInt.fromI32(0)
graphNetwork.totalQueryFees = BigInt.fromI32(0)
graphNetwork.totalDelegatedTokens = BigInt.fromI32(0)

graphNetwork.defaultReserveRatio = 0
graphNetwork.minimumCurationSignal = BigInt.fromI32(0)
graphNetwork.totalTokensSignalled = BigInt.fromI32(0)
graphNetwork.withdrawalFeePercentage = 0

graphNetwork.totalTokensSignalled = BigInt.fromI32(0)

graphNetwork.totalSupply = BigInt.fromI32(0) // gets set by mint
graphNetwork.GRTinUSD = BigDecimal.fromString('0')
graphNetwork.GRTinETH = BigDecimal.fromString('0')
Expand All @@ -307,8 +331,10 @@ export function createOrLoadGraphNetwork(): GraphNetwork {
graphNetwork.currentEpoch = 0

graphNetwork.indexerCount = 0
graphNetwork.delegatorCount = 0
graphNetwork.curatorCount = 0
graphNetwork.subgraphCount = 0
graphNetwork.subgraphDeploymentCount = 0

graphNetwork.slashingPercentage = 0

Expand Down
Loading

0 comments on commit b1d709d

Please sign in to comment.