Skip to content

Commit cf40aa3

Browse files
committed
is oracle divergent sdk fix
1 parent 63ca710 commit cf40aa3

File tree

2 files changed

+8
-18
lines changed

2 files changed

+8
-18
lines changed

sdk/src/driftClient.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9402,8 +9402,7 @@ export class DriftClient {
94029402
confidence: conf,
94039403
hasSufficientNumberOfDataPoints: true,
94049404
},
9405-
stateAccountAndSlot.data.oracleGuardRails,
9406-
perpMarket.amm.mmOracleSlot
9405+
stateAccountAndSlot.data.oracleGuardRails
94079406
) ||
94089407
perpMarket.amm.mmOraclePrice.eq(ZERO) ||
94099408
isExchangeOracleMoreRecent ||

sdk/src/math/oracles.ts

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -97,27 +97,18 @@ export function isOracleValid(
9797
export function isOracleTooDivergent(
9898
amm: AMM,
9999
oraclePriceData: OraclePriceData,
100-
oracleGuardRails: OracleGuardRails,
101-
now: BN
100+
oracleGuardRails: OracleGuardRails
102101
): boolean {
103-
const sinceLastUpdate = now.sub(
104-
amm.historicalOracleData.lastOraclePriceTwapTs
105-
);
106-
const sinceStart = BN.max(ZERO, FIVE_MINUTE.sub(sinceLastUpdate));
107-
const oracleTwap5min = amm.historicalOracleData.lastOraclePriceTwap5Min
108-
.mul(sinceStart)
109-
.add(oraclePriceData.price)
110-
.mul(sinceLastUpdate)
111-
.div(sinceStart.add(sinceLastUpdate));
112-
113-
const oracleSpread = oracleTwap5min.sub(oraclePriceData.price);
114-
const oracleSpreadPct = oracleSpread.mul(PRICE_PRECISION).div(oracleTwap5min);
115-
102+
const oracleSpreadPct = oraclePriceData.price
103+
.sub(amm.historicalOracleData.lastOraclePriceTwap5Min)
104+
.mul(PERCENTAGE_PRECISION)
105+
.div(amm.historicalOracleData.lastOraclePriceTwap5Min);
116106
const maxDivergence = BN.max(
117107
oracleGuardRails.priceDivergence.markOraclePercentDivergence,
118108
PERCENTAGE_PRECISION.div(new BN(10))
119109
);
120-
110+
console.log(`oracle spread pct: ${oracleSpreadPct.toString()}`);
111+
console.log(`max divergence: ${maxDivergence.toString()}`);
121112
const tooDivergent = oracleSpreadPct.abs().gte(maxDivergence);
122113

123114
return tooDivergent;

0 commit comments

Comments
 (0)