Skip to content

Commit 11ae275

Browse files
committed
added scalar to subgraph
1 parent 6fe8f35 commit 11ae275

File tree

12 files changed

+41
-30
lines changed

12 files changed

+41
-30
lines changed

sdk/examples/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ async function printAMPLData(chainID: number, client: queries.Client) {
5454
if (cpi && rate) {
5555
console.log(
5656
'Next rebase perc',
57-
policy.nextRebasePerc(rate.toString(), cpi.toString()).toString(),
57+
policy
58+
.nextRebasePerc(rate.toString(), policy.targetRate.toString())
59+
.toString(),
5860
)
5961
}
6062

sdk/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ampleforthorg/sdk",
3-
"version": "1.0.30",
3+
"version": "1.0.32",
44
"description": "Typescript SDK for the Ampleforth Protocol",
55
"license": "GPL-3.0-or-later",
66
"main": "dist/src/index.js",

sdk/src/entities/oracle/Oracle.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface OracleData {
88
reportDelaySec: number
99
reportExpirationTimeSec: number
1010
minimumProviders: number
11+
scalar: number
1112
providers: ProviderData[]
1213
}
1314

@@ -36,6 +37,10 @@ export default class Oracle {
3637
return new BigNumber(this.data.minimumProviders).toNumber()
3738
}
3839

40+
get scalar(): BigNumber {
41+
return new BigNumber(this.data.scalar)
42+
}
43+
3944
get providers(): Provider[] {
4045
return this._providers
4146
}
@@ -52,7 +57,7 @@ export default class Oracle {
5257
getData(): BigNumber {
5358
const now = Math.trunc(Date.now() / 1000)
5459
const r = this.medianReportAt(now)
55-
return r == null ? new BigNumber(0) : (r as BigNumber)
60+
return r == null ? new BigNumber(0) : (r.div(this.scalar) as BigNumber)
5661
}
5762

5863
medianReportAt(timestamp: number): BigNumber | null {

sdk/src/entities/policy/Policy.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import Rebase, { RebaseData } from './Rebase'
44
export interface PolicyData {
55
id: string
66
address: string
7-
baseCPI: string
87
rebaseFunctionLowerPercentage: string
98
rebaseFunctionUpperPercentage: string
109
rebaseFunctionGrowth: string
@@ -42,6 +41,10 @@ export default class Policy {
4241
return this.lastRebase.supply
4342
}
4443

44+
get targetRate(): BigNumber {
45+
return this.lastRebase.targetRate
46+
}
47+
4548
get rebaseFunctionLowerPercentage(): BigNumber {
4649
return new BigNumber(this.data.rebaseFunctionLowerPercentage)
4750
}
@@ -54,11 +57,6 @@ export default class Policy {
5457
return new BigNumber(this.data.rebaseFunctionGrowth)
5558
}
5659

57-
// TODO: remove this
58-
get baseCPI(): BigNumber {
59-
return new BigNumber(this.data.baseCPI)
60-
}
61-
6260
get rebaseLag(): BigNumber {
6361
return new BigNumber(this.data.rebaseLag)
6462
}
@@ -93,14 +91,15 @@ export default class Policy {
9391
return [nextRebaseWindowStart, nextRebaseWindowEnd]
9492
}
9593

96-
nextRebaseSupply(marketRate: string, cpi: string): BigNumber {
97-
const supplyDelta = this.computeSupplyDelta(marketRate, cpi)
94+
nextRebaseSupply(marketRate: string, targetRate: string): BigNumber {
95+
const supplyDelta = this.computeSupplyDelta(marketRate, targetRate)
9896
return this.supply.plus(supplyDelta)
9997
}
10098

101-
nextRebasePerc(marketRate: string, cpi: string): BigNumber {
102-
const targetRate = new BigNumber(cpi).div(this.baseCPI)
103-
const deviation = new BigNumber(marketRate).minus(targetRate)
99+
nextRebasePerc(marketRate: string, targetRate: string): BigNumber {
100+
const deviation = new BigNumber(marketRate).minus(
101+
new BigNumber(targetRate),
102+
)
104103

105104
if (deviation.abs().lte(this.deviationThreshold)) {
106105
return new BigNumber('0')
@@ -112,7 +111,7 @@ export default class Policy {
112111
const scaling = new BigNumber('32')
113112

114113
const delta = new BigNumber(marketRate)
115-
.div(targetRate)
114+
.div(new BigNumber(targetRate))
116115
.minus(new BigNumber('1'))
117116

118117
let exp = growth.multipliedBy(delta)
@@ -136,8 +135,8 @@ export default class Policy {
136135
return lower.plus(numerator.div(denominator))
137136
}
138137

139-
computeSupplyDelta(marketRate: string, cpi: string): BigNumber {
140-
const nextRebasePercentage = this.nextRebasePerc(marketRate, cpi)
138+
computeSupplyDelta(marketRate: string, targetRate: string): BigNumber {
139+
const nextRebasePercentage = this.nextRebasePerc(marketRate, targetRate)
141140
return this.supply.multipliedBy(nextRebasePercentage)
142141
}
143142

sdk/src/entities/policy/Rebase.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export interface RebaseData {
99
precentageChange: string
1010
supplyAdjustment: string
1111
marketRate: string
12-
cpi: string
1312
targetRate: string
1413
}
1514

@@ -48,6 +47,10 @@ export default class Rebase {
4847
return new BigNumber(this.data.targetRate)
4948
}
5049

50+
get targetRate(): BigNumber {
51+
return new BigNumber(this.data.targetRate)
52+
}
53+
5154
get marketCap(): BigNumber {
5255
return this.price.multipliedBy(this.supply)
5356
}

sdk/src/queries/client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type GraphEndpointsMapping = {
1010
}
1111
export const GRAPH_ENDPOINTS: GraphEndpointsMapping = {
1212
// chainID => endpoint
13-
1: `${GRAPH_BASE_URL}/ampleforth/ampleforth-core`,
13+
1: `${GRAPH_BASE_URL}/ampleforth/staging`,
1414
5: `${GRAPH_BASE_URL}/ampleforth/ampleforth-core-goerli`,
1515
43114: `${GRAPH_BASE_URL}/ampleforth/ampleforth-core-avalanche`,
1616
}

sdk/src/queries/oracle.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export const GET_ORACLE_DATA = `
2121
reportDelaySec
2222
reportExpirationTimeSec
2323
minimumProviders
24+
scalar
2425
providers {
2526
id
2627
address

sdk/src/queries/policy.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,13 @@ const REBASE_FRAGMENT = `
1212
supplyAdjustment
1313
targetRate
1414
marketRate
15-
cpi
1615
}
1716
`
1817

1918
export const GET_POLICY_DATA = `
2019
query GetPolicyData ($id: ID!) {
2120
policies(where: { id: $id }) {
2221
id
23-
baseCPI
2422
rebaseFunctionLowerPercentage
2523
rebaseFunctionUpperPercentage
2624
rebaseFunctionGrowth

subgraph/schema.graphql

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ type MedianOracle @entity {
66
minimumProviders: BigInt!
77
providers: [OracleProvider!]! @derivedFrom(field: "oracle")
88
historicalReports: [OracleReport!]! @derivedFrom(field: "oracle")
9+
scalar: BigDecimal!
910
}
1011

1112
type OracleProvider @entity {
@@ -33,7 +34,6 @@ type Policy @entity {
3334
id: ID!
3435
token: Token! @derivedFrom(field: "policy")
3536
address: Bytes!
36-
baseCPI: BigDecimal!
3737
rebaseFunctionLowerPercentage: BigDecimal
3838
rebaseFunctionUpperPercentage: BigDecimal
3939
rebaseFunctionGrowth: BigDecimal
@@ -57,7 +57,6 @@ type Rebase @entity {
5757
supplyAdjustment: BigDecimal!
5858
targetRate: BigDecimal!
5959
marketRate: BigDecimal!
60-
cpi: BigDecimal!
6160
}
6261

6362
type TokenBalance @entity {

subgraph/src/datasources/policy.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { constants } from '@amxx/graphprotocol-utils'
2-
import { ethereum } from '@graphprotocol/graph-ts'
2+
import { ethereum, BigDecimal } from '@graphprotocol/graph-ts'
33
import { LogRebase, LogRebaseV2 } from '../../generated/Policy/PolicyABI'
44
import { fetchPolicy, refreshPolicy, fetchRebaseByEpoch } from '../fetch/policy'
55
import { formatAMPL, formatEther } from '../utils'
66

7+
let BASE_CPI = BigDecimal.fromString('109.195000000000007392')
8+
79
// Triggered when either "setDeviationThreshold"
810
// or "setRebaseTimingParameters" is invoked
911
// refreshes all the hyper parameter values in the store
@@ -37,7 +39,7 @@ export function handleLogRebase(event: LogRebase): void {
3739
rebase.marketRate = formatEther(event.params.exchangeRate)
3840

3941
let cpi = formatEther(event.params.cpi)
40-
rebase.targetRate = cpi.div(policy.baseCPI)
42+
rebase.targetRate = cpi.div(BASE_CPI)
4143
rebase.save()
4244

4345
policy.lastRebase = rebase.id

0 commit comments

Comments
 (0)