📖
Read Me
All information here is source from the official DFX Finance GitHub.
Any USD base pair created by the DFX factory is tracked by this subgraph. The subgraph tracks DFX for daily and hourly historical data on TVLs and volumes.
Currently there are 6 USD based stablecoin pairs on Ethereum (Mainnet) and 5 on Polygon.
- 1.Go to
https://thegraph.com/studio/
- 2.Connect your MetaMask wallet and sign (This will not cost you any ETH)
- 3.Create a subgraph called 'dfx-test'
- 4.Install The Graph's CLI on your terminal
npm install -g @graphprotocol/graph-cli
- 5.Clone this repo
git clone https://github.com/dfx-finance/subgraph.git
- 6.Install dependencies
yarn install
- 7.Go into the directory
cd subgraph
- 1.Generate the code from the schema
yarn codegen
(This should be done every time the schema is changed) - 2.Copy the Deploy Key from
https://thegraph.com/studio/
under 'dfx-test' - 3.In your command line,
graph auth --studio
- 4.Paste your Deploy Key when prompted
- 5.Deploy to your instance
yarn deploy-test:mainnet
- 6.Set version to 'v0.0.1' and increment as you update the schema and source code.
- 7.Go back to
https://thegraph.com/studio/dfx-test
and you can start querying in thePlayground
even before the subgraph has synced to 100% - 8.Run this query to get the latest trades ordered from newest to oldest
The legacy explorer is the free public subgraph service provided by the graph. It can be seen as the centralized production environment.
- 1.
yarn prepare:mainnet
- 2.
yarn codegen
- 3.
yarn deploy-prod:mainnet
One of the most common issues when changing the schema is all specified fields except for the id must be initialized or the subgraph will fail to index.
type DFXFactory @entity {
# factory address
id: ID!
# pair info
pairCount: Int!
# total volume
totalVolumeUSD: BigDecimal!
# total liquidity
totalLiquidityUSD: BigDecimal!
# transactions
# txCount: BigInt!
}
factory = new DFXFactory(FACTORY_ADDRESS)
factory.pairCount = 0
factory.totalVolumeUSD = ZERO_BD
factory.totalLiquidityUSD = ZERO_BD
0x84Bf8151394dcF32146965753B28760550f3D7A8
0x84bf8151394dcf32146965753b28760550f3d7a8
Switching from Ethereum to Polygon and vice versa requires a small change in
subgraph\src\helpers.ts
.In
fetchRewardsForDuration()
there is a function that makes calls to the staking contracts contract.getRewardForDuration()
in Ethereum it is just 1 BigDecimal but Polygon the number is inside an array so upon switching between the two there needs to be a small change of contract.getRewardForDuration()[0]
.To help with debugging the The Graph has provided a logging object within the
graph-ts
module.import { log } from "@graphprotocol/graph-ts";
This can be used almost anywhere in your mapping code the provide insight on values that are being defined on your schema. There are four different types of logs that can be defined
error, warn, info, debug
They all follow the format of string
message followed by and string
array filled with your variables. They will show up after the subgraph is deployed.
For examplelog.debug("The amount of pairs currently in dfx is {}", [factory.pairCount.toString()])
Note:
Addresses and transaction hashes must be converted to Hexstrings in order to show up properly in the logging.Last modified 2mo ago