@clonegod/ttd-bsc-common 3.1.62 → 3.1.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,45 +11,33 @@ function buildQuoteFromPriceFeed(poolInfo, data) {
11
11
  return null;
12
12
  }
13
13
  const normSymbol = (s) => {
14
- const u = s.toUpperCase();
14
+ const u = (s || '').toUpperCase();
15
15
  return u === 'WBNB' ? 'BNB' : u;
16
16
  };
17
- let askPrice;
18
- let bidPrice;
19
- let baseToken;
20
- let quoteToken;
21
17
  const tokenAIsQuote = normSymbol(tokenA.symbol) === normSymbol(quoteTokenSymbol);
22
18
  const tokenBIsQuote = normSymbol(tokenB.symbol) === normSymbol(quoteTokenSymbol);
23
19
  if (!tokenAIsQuote && !tokenBIsQuote) {
24
- (0, ttd_core_1.log_warn)(`[PriceFeed] quote_token ${quoteTokenSymbol} not found in pool ${poolInfo.pool_name} (tokenA=${tokenA.symbol}, tokenB=${tokenB.symbol})`);
20
+ (0, ttd_core_1.log_warn)(`[PriceFeed] quote_token "${quoteTokenSymbol}" 在池子配置里找不到 (tokenA=${tokenA.symbol}, tokenB=${tokenB.symbol}, pool=${poolInfo.pool_name})`);
25
21
  return null;
26
22
  }
23
+ let askPrice;
24
+ let bidPrice;
25
+ let baseToken;
26
+ let quoteToken;
27
27
  if (tokenAIsQuote) {
28
28
  quoteToken = tokenA;
29
29
  baseToken = tokenB;
30
+ askPrice = data.askToken1InToken0;
31
+ bidPrice = data.bidToken1InToken0;
30
32
  }
31
33
  else {
32
34
  quoteToken = tokenB;
33
35
  baseToken = tokenA;
34
- }
35
- const feedToken0 = normSymbol(data.token0Symbol || '');
36
- const feedToken1 = normSymbol(data.token1Symbol || '');
37
- const baseSymbolNorm = normSymbol(baseToken.symbol);
38
- const quoteSymbolNorm = normSymbol(quoteToken.symbol);
39
- if (normSymbol(feedToken0) === quoteSymbolNorm) {
40
- askPrice = data.askToken1InToken0;
41
- bidPrice = data.bidToken1InToken0;
42
- }
43
- else if (normSymbol(feedToken1) === quoteSymbolNorm) {
44
36
  askPrice = data.askToken0InToken1;
45
37
  bidPrice = data.bidToken0InToken1;
46
38
  }
47
- else {
48
- (0, ttd_core_1.log_warn)(`[PriceFeed] Cannot match quote_token symbol: quote=${quoteSymbolNorm}, feed=[${feedToken0}/${feedToken1}], pool=${poolInfo.pool_name}`);
49
- return null;
50
- }
51
39
  if (!askPrice || !bidPrice) {
52
- (0, ttd_core_1.log_warn)(`[PriceFeed] Missing price data for ${poolInfo.pool_name}`);
40
+ (0, ttd_core_1.log_warn)(`[PriceFeed] Missing price for pool=${poolInfo.pool_name}, direction=${tokenAIsQuote ? 'token1InToken0' : 'token0InToken1'}, feedSymbols=[${data.token0Symbol}/${data.token1Symbol}]`);
53
41
  return null;
54
42
  }
55
43
  const makeQuoteResult = (price, input, output) => ({
@@ -1,2 +1,2 @@
1
1
  export { QuotePriceVerify } from './quote_price_verify';
2
- export type { CheckSwapParams, CheckSyncParams } from './quote_price_verify';
2
+ export type { CheckSwapParams } from './quote_price_verify';
@@ -16,29 +16,10 @@ export interface CheckSwapParams {
16
16
  };
17
17
  swapperDeltaConvention?: boolean;
18
18
  }
19
- export interface CheckSyncParams {
20
- poolAddress: string;
21
- poolName: string;
22
- blockNumber: number;
23
- reserve0: string;
24
- reserve1: string;
25
- token0Address: string;
26
- token1Address: string;
27
- token0Decimals: number;
28
- token1Decimals: number;
29
- poolInfo: {
30
- tokenA: any;
31
- tokenB: any;
32
- quote_token: string;
33
- };
34
- }
35
19
  export declare class QuotePriceVerify {
36
20
  private quoteCache;
37
- private reserveCache;
38
21
  private get enabled();
39
- seedReserves(poolAddress: string, reserve0: string, reserve1: string): void;
40
22
  cacheQuote(poolAddress: string, priceId: string, source: string, askPrice: number, bidPrice: number, blockNumber: number, quoteAmountUsd: number, token0PriceUsd?: number, token1PriceUsd?: number): void;
41
23
  checkSwap(params: CheckSwapParams): void;
42
- checkSync(params: CheckSyncParams): void;
43
24
  private compareAndLog;
44
25
  }
@@ -6,22 +6,10 @@ const ttd_core_1 = require("@clonegod/ttd-core");
6
6
  class QuotePriceVerify {
7
7
  constructor() {
8
8
  this.quoteCache = new Map();
9
- this.reserveCache = new Map();
10
9
  }
11
10
  get enabled() {
12
11
  return process.env.VERIFY_QUOTE_PRICE === 'true';
13
12
  }
14
- seedReserves(poolAddress, reserve0, reserve1) {
15
- if (!this.enabled)
16
- return;
17
- try {
18
- this.reserveCache.set(poolAddress, {
19
- reserve0: BigInt(reserve0),
20
- reserve1: BigInt(reserve1),
21
- });
22
- }
23
- catch { }
24
- }
25
13
  cacheQuote(poolAddress, priceId, source, askPrice, bidPrice, blockNumber, quoteAmountUsd, token0PriceUsd = 0, token1PriceUsd = 0) {
26
14
  if (!this.enabled)
27
15
  return;
@@ -41,7 +29,7 @@ class QuotePriceVerify {
41
29
  const cached = this.quoteCache.get(poolAddress);
42
30
  if (!cached)
43
31
  return;
44
- if (blockNumber !== cached.referenceBlock + 1)
32
+ if (blockNumber <= cached.referenceBlock)
45
33
  return;
46
34
  if (cached.verifiedReferenceBlock === cached.referenceBlock)
47
35
  return;
@@ -72,48 +60,6 @@ class QuotePriceVerify {
72
60
  }
73
61
  this.compareAndLog(poolAddress, poolName, poolInfo, cached, inputTokenAddress, outputTokenAddress, inputAmountUi, outputAmountUi, cached.token0PriceUsd, cached.token1PriceUsd, token0Address, blockNumber, txHash);
74
62
  }
75
- checkSync(params) {
76
- if (!this.enabled)
77
- return;
78
- const { poolAddress, poolName, blockNumber, reserve0, reserve1, poolInfo } = params;
79
- const { token0Address, token1Address, token0Decimals, token1Decimals } = params;
80
- const cached = this.quoteCache.get(poolAddress);
81
- if (!cached)
82
- return;
83
- if (blockNumber !== cached.referenceBlock + 1)
84
- return;
85
- if (cached.verifiedReferenceBlock === cached.referenceBlock)
86
- return;
87
- const newR0 = BigInt(reserve0);
88
- const newR1 = BigInt(reserve1);
89
- const oldReserves = this.reserveCache.get(poolAddress);
90
- this.reserveCache.set(poolAddress, { reserve0: newR0, reserve1: newR1 });
91
- if (!oldReserves)
92
- return;
93
- const delta0 = newR0 - oldReserves.reserve0;
94
- const delta1 = newR1 - oldReserves.reserve1;
95
- if ((delta0 > 0n && delta1 > 0n) || (delta0 < 0n && delta1 < 0n) || (delta0 === 0n && delta1 === 0n)) {
96
- return;
97
- }
98
- cached.verifiedReferenceBlock = cached.referenceBlock;
99
- let inputTokenAddress;
100
- let outputTokenAddress;
101
- let inputAmountUi;
102
- let outputAmountUi;
103
- if (delta0 > 0n && delta1 < 0n) {
104
- inputTokenAddress = token0Address;
105
- outputTokenAddress = token1Address;
106
- inputAmountUi = Number(delta0) / Math.pow(10, token0Decimals);
107
- outputAmountUi = Number(-delta1) / Math.pow(10, token1Decimals);
108
- }
109
- else {
110
- inputTokenAddress = token1Address;
111
- outputTokenAddress = token0Address;
112
- inputAmountUi = Number(delta1) / Math.pow(10, token1Decimals);
113
- outputAmountUi = Number(-delta0) / Math.pow(10, token0Decimals);
114
- }
115
- this.compareAndLog(poolAddress, poolName, poolInfo, cached, inputTokenAddress, outputTokenAddress, inputAmountUi, outputAmountUi, cached.token0PriceUsd, cached.token1PriceUsd, token0Address, blockNumber);
116
- }
117
63
  compareAndLog(poolAddress, poolName, poolInfo, cached, inputTokenAddress, outputTokenAddress, inputAmountUi, outputAmountUi, token0PriceUsd, token1PriceUsd, token0Address, swapBlockNumber, txHash) {
118
64
  if (inputAmountUi <= 0 || outputAmountUi <= 0)
119
65
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clonegod/ttd-bsc-common",
3
- "version": "3.1.62",
3
+ "version": "3.1.64",
4
4
  "description": "BSC common library",
5
5
  "license": "UNLICENSED",
6
6
  "main": "dist/index.js",