@stake-dao/reader 0.3.20 → 0.4.0

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.
@@ -27,7 +27,7 @@ export const lendingStartIndex = {
27
27
  export const CHUNK_SIZE = 30;
28
28
  export const GAUGES_CHUNK_SIZE = { 1: 60, 42161: 30 };
29
29
  export const TOKENS_CHUNK_SIZE = 100;
30
- export const GAUGES_WEIGHTS_CHUNK_SIZE = 50;
30
+ export const GAUGES_WEIGHTS_CHUNK_SIZE = 80;
31
31
  export const GAUGES_REGISTRY_CHUNK_SIZE = 30;
32
32
  export const BROKEN_VAULTS = {
33
33
  1: ['0xb385321d34f7a53979E253d70b8F79C82609116E'],
@@ -1,38 +1,79 @@
1
- import { contracts } from '@stake-dao/constants';
2
- import { range } from 'lodash-es';
3
- import { decodeAbiParameters, encodeAbiParameters, formatUnits, parseAbiParameters } from 'viem';
4
- import { batchJsonRpc, rpcCall } from '../../../../utils.js';
5
- import { concatBytecode } from '../../../utils/index.js';
6
- import { getCurveDataGaugesWeightsOutputTypeAbi } from './abi.js';
7
- import { gaugesWeightBytecode } from './bytecode.js';
1
+ import { ONE_WEEK, contracts } from '@stake-dao/constants';
2
+ import { chunk, range } from 'lodash-es';
3
+ import { decodeAbiParameters, formatUnits, parseAbi } from 'viem';
4
+ import { multicall, rpcCall } from '../../../../utils.js';
5
+ // import { concatBytecode } from '../../../utils/index.js'
6
+ // import { getCurveDataGaugesWeightsOutputTypeAbi } from './abi.js'
7
+ // import { gaugesWeightBytecode } from './bytecode.js'
8
8
  import { GAUGES_WEIGHTS_CHUNK_SIZE } from './config.js';
9
- export const getGaugesWeights = async (rpc) => {
9
+ export const getGaugesWeights = async (provider, rpc) => {
10
+ const now = Math.floor(Date.now() / 1000);
10
11
  const nGaugesRequest = await rpcCall(rpc, [{ to: contracts.curveGaugeController[1], data: '0xe93841d0' }]);
11
12
  const nGauges = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nGaugesRequest[0].result));
12
- const gaugesWeightsCalls = range(0, nGauges, GAUGES_WEIGHTS_CHUNK_SIZE).map((skip) => {
13
- const inputParams = [
14
- nGauges,
15
- skip,
16
- skip + GAUGES_WEIGHTS_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_WEIGHTS_CHUNK_SIZE,
17
- ];
18
- const inputData = encodeAbiParameters(parseAbiParameters(['uint256 maxLength, uint256 skip, uint256 limit']), inputParams);
19
- return concatBytecode(gaugesWeightBytecode, inputData);
20
- });
21
- const gaugesWeights = await batchJsonRpc({
22
- rpc,
23
- calls: gaugesWeightsCalls,
24
- outputTypeAbi: getCurveDataGaugesWeightsOutputTypeAbi,
25
- parse: false,
26
- callsKey: `strategies/curve/fetch/curveApiData/getGaugesWeights.ts: gaugesWeights - chainId ${1} - rpc ${rpc}`,
27
- });
13
+ // const gaugesWeightsCalls = range(0, nGauges, GAUGES_WEIGHTS_CHUNK_SIZE).map((skip) => {
14
+ // const inputParams = [
15
+ // nGauges,
16
+ // skip,
17
+ // skip + GAUGES_WEIGHTS_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_WEIGHTS_CHUNK_SIZE,
18
+ // ]
19
+ // const inputData = encodeAbiParameters(
20
+ // parseAbiParameters(['uint256 maxLength, uint256 skip, uint256 limit']) as any,
21
+ // inputParams,
22
+ // )
23
+ // return concatBytecode(gaugesWeightBytecode, inputData)
24
+ // })
25
+ // const gaugesWeights = await batchJsonRpc({
26
+ // rpc,
27
+ // calls: gaugesWeightsCalls,
28
+ // outputTypeAbi: getCurveDataGaugesWeightsOutputTypeAbi,
29
+ // parse: false,
30
+ // callsKey: `strategies/curve/fetch/curveApiData/getGaugesWeights.ts: gaugesWeights - chainId ${1} - rpc ${rpc}`,
31
+ // })
32
+ const gaugesCalls = range(0, nGauges).map((i) => ({
33
+ address: contracts.curveGaugeController[1],
34
+ name: 'gauges',
35
+ params: [i],
36
+ }));
37
+ const gauges = (await multicall(provider, gaugesCalls, parseAbi(['function gauges(uint256 index) external view returns (address)']))).map((g) => g.result);
38
+ const gaugesWeightsCalls = range(0, nGauges).flatMap((i) => [
39
+ { address: gauges[i], name: 'inflation_params' },
40
+ { address: gauges[i], name: 'inflation_rate' },
41
+ {
42
+ address: contracts.curveGaugeController[1],
43
+ name: 'gauge_relative_weight_write',
44
+ params: [gauges[i]],
45
+ },
46
+ {
47
+ address: contracts.curveGaugeController[1],
48
+ name: 'gauge_relative_weight_write',
49
+ params: [gauges[i], now + ONE_WEEK],
50
+ },
51
+ ]);
52
+ const chunkedGaugesWeightsCalls = chunk(gaugesWeightsCalls, GAUGES_WEIGHTS_CHUNK_SIZE);
53
+ const rawGaugesWeights = [];
54
+ for (const chunk of chunkedGaugesWeightsCalls) {
55
+ rawGaugesWeights.push(await multicall(provider, chunk, parseAbi([
56
+ 'function inflation_rate() external view returns (uint256)',
57
+ 'function inflation_params() external view returns (uint256,uint256)',
58
+ 'function gauge_relative_weight_write(address gauge) external view returns (uint256)',
59
+ 'function gauge_relative_weight_write(address gauge, uint256 time) external view returns (uint256)',
60
+ ])));
61
+ }
62
+ const gaugesWeights = chunk(rawGaugesWeights.flat(), 4);
28
63
  return {
29
64
  gaugesCount: nGauges,
30
- gauges: gaugesWeights.map((gw) => ({
31
- gauge: gw.gauge,
32
- inflationRate: formatUnits(gw.inflationRate, 0),
33
- relativeWeight: formatUnits(gw.relativeWeight, 0),
34
- futureRelativeWeight: formatUnits(gw.futureRelativeWeight, 0),
35
- })),
65
+ gauges: gauges.map((gauge, index) => {
66
+ const gaugeWeight = gaugesWeights[index];
67
+ const inflationRate = gaugeWeight[0].result ? gaugeWeight[0].result[0] : gaugeWeight[1].result;
68
+ if (typeof inflationRate === 'undefined')
69
+ console.debug('undefined inflationRate for gauge:', gauge);
70
+ return {
71
+ gauge,
72
+ inflationRate: formatUnits(inflationRate || 0, 0),
73
+ relativeWeight: formatUnits(gaugeWeight[2].result, 0),
74
+ futureRelativeWeight: formatUnits(gaugeWeight[3].result, 0),
75
+ };
76
+ }),
36
77
  };
37
78
  };
38
79
  //# sourceMappingURL=getGaugesWeights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getGaugesWeights.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,sCAAsC,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAWvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAA8B,EAAE;IAChF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IAE5G,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9G,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnF,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,IAAI;YACJ,IAAI,GAAG,yBAAyB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,yBAAyB;SACxF,CAAA;QAED,MAAM,SAAS,GAAG,mBAAmB,CACnC,kBAAkB,CAAC,CAAC,gDAAgD,CAAC,CAAQ,EAC7E,WAAW,CACZ,CAAA;QACD,OAAO,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC;QACvC,GAAG;QACH,KAAK,EAAE,kBAAkB;QACzB,aAAa,EAAE,sCAAsC;QACrD,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,oFAAoF,CAAC,UAAU,GAAG,EAAE;KAC/G,CAAC,CAAA;IAEF,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;YAC/C,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;YACjD,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAC9D,CAAC,CAAC;KACJ,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"getGaugesWeights.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,2DAA2D;AAC3D,oEAAoE;AACpE,uDAAuD;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAWvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAa,EAAE,GAAW,EAA8B,EAAE;IAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IAC5G,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9G,0FAA0F;IAC1F,0BAA0B;IAC1B,eAAe;IACf,YAAY;IACZ,+FAA+F;IAC/F,MAAM;IAEN,2CAA2C;IAC3C,qFAAqF;IACrF,mBAAmB;IACnB,MAAM;IACN,2DAA2D;IAC3D,KAAK;IAEL,6CAA6C;IAC7C,SAAS;IACT,+BAA+B;IAC/B,2DAA2D;IAC3D,kBAAkB;IAClB,oHAAoH;IACpH,KAAK;IAEL,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChD,OAAO,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE;QAC5C,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,CAAC,CAAC,CAAC;KACZ,CAAC,CAAC,CAAA;IAEH,MAAM,MAAM,GAAG,CACb,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,CACrH,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAEtB,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1D,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAChD,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;QAC9C;YACE,OAAO,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE;YAC5C,IAAI,EAAE,6BAA6B;YACnC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QACD;YACE,OAAO,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE;YAC5C,IAAI,EAAE,6BAA6B;YACnC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC;SACpC;KACF,CAAC,CAAA;IAEF,MAAM,yBAAyB,GAAG,KAAK,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAA;IACtF,MAAM,gBAAgB,GAAQ,EAAE,CAAA;IAEhC,KAAK,MAAM,KAAK,IAAI,yBAAyB,EAAE,CAAC;QAC9C,gBAAgB,CAAC,IAAI,CACnB,MAAM,SAAS,CACb,QAAQ,EACR,KAAK,EACL,QAAQ,CAAC;YACP,2DAA2D;YAC3D,qEAAqE;YACrE,qFAAqF;YACrF,mGAAmG;SACpG,CAAC,CACH,CACF,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAEvD,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAClC,MAAM,WAAW,GAAiE,aAAa,CAAC,KAAK,CAAQ,CAAA;YAC7G,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,CAAA;YAEjG,IAAI,OAAO,aAAa,KAAK,WAAW;gBAAE,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;YAEpG,OAAO;gBACL,KAAK;gBACL,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjD,cAAc,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtD,oBAAoB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,CAAC,CAAC;aAC7D,CAAA;QACH,CAAC,CAAC;KACH,CAAA;AACH,CAAC,CAAA"}